C语言学生信息管理系统实验报告.docx
- 文档编号:3456057
- 上传时间:2023-05-05
- 格式:DOCX
- 页数:31
- 大小:29.15KB
C语言学生信息管理系统实验报告.docx
《C语言学生信息管理系统实验报告.docx》由会员分享,可在线阅读,更多相关《C语言学生信息管理系统实验报告.docx(31页珍藏版)》请在冰点文库上搜索。
C语言学生信息管理系统实验报告
C语言课程设计
学生信息管理系统
姓名
洪伟生
院系
计算机学院
日期
2015年7月5日
第一章设计要求
第二章算法分析
1.理论依据
2.主要实现方法
2.1整体流程图
2.2函数功能和函数之间的调用关系
第三章代码(源代码)
第四章分析说明
第五章总结
第一章、设计要求
1、禾U用所学的知识、理论和实际结合,禾U用资源,采用模块化的结构,使用模仿修改自主设计相结合的方法,锻炼学生综合分析解决实际问题的编程能力;
2、通过C语言各个函数功能来实现对学生信息的管理,学生信息包括学生,学号,各科成绩;管理方式包括对学生信息的录入,保存,排序,查找、修改、删除等功能。
第二章、算法分析
1、程序理论依据
通过C语言的程序设计基础的掌握,对学生成绩管理系统进行编写程序。
首先,通过链表这一数据结构来对学生的信息进行录入以及操作,在其过程中,通过各个功能语句以及选
择结构,循环结构等方式的结合来达到所要实现的程序功能。
最后通过对C语言中对文件
的操作,对已有学生成绩的读取和新建学生成绩的录入保存。
2、主要实现方法
2.1整体流程图
学生信息管
理系统
进入
退出
返回主菜单
学
生
信
息
录
入
学生信息浏览
学生信息查找
学生信息修改
学生信息增加
学
生
信
息
删
除
2.2、函数功能和函数之间的调用关系
2.2.1、函数功能:
voidMenu_1();voidMenu_2();
//
//
主菜单二级菜单
voidswap(structstudent*phead,struct
表节点互换
voidSave(structstudent*head);
盘
voidSearch(structstudent*head);
生信息
voidRead(structstudent*head);
生信息
voidSort(structstudent*head);
点排序
student*pback);//
//
//
//
//
写入磁
查找学
显示学
链表节
structstudent*Create();
录入
structstudent*Readpoint();
存
structstudent*Modify(structstudent*head);
体成员修改
structstudent*Add(structstudent*head);点插入
structstudent*Delete(structstudent*head);点删除
//
//
//
//
//
学生信息手动
磁盘文件写入
链表结构
链表节
链表节
2.2.2、函数之间的调用关系:
通过switch语句进行指令选择:
case1:
学生信息录入调用函数Create()、Save()、Menu_1()、Menu_2()
case2:
学生信息浏览
调用函数Readpoint()、Sort()、Read()、Save()、Menu_1()、Menu_2()
case3:
学生信息查找
调用函数Search()、Readpoint()、Menu_1()、Menu_2()
case4:
学生信息修改
调用函数Modify()、Readpoint()、Save()、Menu_1()、Menu_2()
case5:
学生信息增加
调用函数Add()、Readpoint()、Save()、Menu_1()、Menu_2()
case6:
学生信息删除
调用函数Delete()、Readpoint()Save()、Menu_1()、Menu_2()
case0:
返回主菜单
第三章、代码(源代码)
学生信息管理系统
//定义结构体
调用函数Menu_1()
/*
*/
#include
{
intnum;
charname[24];charsex[5];intChinese;
intMath;intEnglish;
structstudent*next;
voidswap(structstudent*phead,structstudent*pback);
//
链表
节点互换
voidSave(structstudent*head);//
写入
磁盘
voidSearch(structstudent*head);//
查找
学生信息
voidRead(structstudent*head);//
显示
学生信息
voidSort(structstudent*head);//
链表
节点排序
structstudent*Readpoint();//
磁盘
文件写入存
structstudent*Create();//
学生信息手动录入
structstudent*Modify(structstudent*head);//
链表
结构体成员修改
structstudent*Add(structstudent*head);//
链表
节点插入
structstudent*Delete(structstudent*head);//
链表
节点删除
主菜单二级菜单
};
voidMenu_1();//
voidMenu_2();//
intmain(void)
{
Menu_1();return0;
}
voidMenu_1()
{
intnum;
printf("\t\t\t\t学生信息管理系统\t\t\t\t\n");
printf("\t\t\t1:
进入学生信息管理\n");//
主菜单
printf("\t\t\t0:
退出学生信息管理\n");
printf("请您输入指令:
");
scanf("%d",&num);
switch(num)
{case1:
Menu_2();
break;
您已退出
default:
printf("
学生信息管理系统\n");
break;
}
}
/*
*/
voidMenu_2()
1
structstudent*head;intnum;
printf("\t\t\t
欢迎进入\n");
printf("
--\n");
printf("\t\t\t1:
学生信息录入\n");
printf("\t\t\t2:
学生信息浏览\n");
printf("\t\t\t3:
学生信息查找\n");
printf("\t\t\t4:
//二级菜单
学生信息修改\n");
printf("\t\t\t5:
学生信息增加\n");
printf("\t\t\t6:
学生信息删除\n");
printf("\t\t\t0:
返回主菜单\n");
printf("
---\n");
printf("请您输入指令:
");scanf("%d",&num);switch(num)
{
case1:
{
head=Create();
Save(head);
printf("\n");
printf("\t\t\t1:
返回主菜单\n");
//手动录入学生数据
printf("\t\t\t2:
返回二级菜单\n");
printf("\n");
printf("请您输入指令:
");
scanf("%d",&num);
switch(num)
{
case1:
Menu_1();
break;
case2:
Menu_2();
break;default:
{
printf("输入无效,返回二级菜单!
\n");Menu_2();
}break;
}
}break;
case2:
{head=Readpoint();
//写入链表,返回头指针
Sort(head);
printf("\t\t\t以学号升序排列\n");Read(head);
//链表数据写入文件
Save(head);
printf("\n");
printf("\t\t\t1:
返回主菜单\n");
printf("\t\t\t2:
返回二级菜单\n");
printf("\n");
printf("请您输入指令:
");scanf("%d",&num);switch(num)
{
case1:
Menu_1();break;
case2:
Menu_2();break;
default:
{
printf("输入无效,返回二级菜单!
\n");Menu_2();
}break;
}
}break;
case3:
{head=Readpoint();
Search(head);//查找学生信息
printf("\n");
printf("\t\t\t1:
返回主菜单\n");
printf("\t\t\t2:
返回二级菜单\n");
printf("\n");
printf("请您输入指令:
");
scanf("%d",&num);
switch(num)
{
case1:
Menu_1();break;
case2:
Menu_2();
break;
default:
{
printf("输入无效,返回二级菜单!
\n");
Menu_2();
}
break;
}
}
break;
case4:
{
head=Readpoint();
Modify(head);//修改结构体成员并保存到文件
Save(head);
printf("\n");
printf("\t\t\t1:
返回主菜单\n");
printf("\t\t\t2:
返回二级菜单\n");
printf("\n");
printf("请您输入指令:
");
scanf("%d",&num);
switch(num)
{
case1:
Menu_1();break;
case2:
Menu_2();
break;
default:
{
printf("输入无效,返回二级菜单!
\n");
Menu_2();
}
break;
}
}
break;
case5:
{
//增加学生信
head=Readpoint();
Add(head);
息并保存到文件
Save(head);
printf("\n");
printf("\t\t\t1:
返回主菜单\n");
printf("\t\t\t2:
返回二级菜单\n");
printf("\n");
printf("请您输入指令:
");scanf("%d",&num);switch(num){case1:
Menu_1();break;
case2:
Menu_2();
break;
default:
{
printf("输入无效,返回二级菜单!
\n");Menu_2();
}
break;
}
}
break;
case6:
{
head=Readpoint();
head=Delete(head);
//删除学生信息并保存到文件
Save(head);
printf("\n");
printf("\t\t\t1:
返回主菜单\n");
printf("\t\t\t2:
返回二级菜单\n");
printf("\n");
printf("请您输入指令:
");scanf("%d",&num);switch(num){case1:
Menu_1();break;
case2:
Menu_2();break;
default:
{
printf("输入无效,返回二级菜单!
\n");Menu_2();
}break;
}
}
break;
case0:
Menu_1();
break;
default:
{
printf("请重新输入\n");
Menu_2();
}
break;
}
}
/*
-*/structstudent*Create()//学生信息手动录入{
structstudent*head,*p,*q;
intn;
p=q=(structstudent*)malloc(sizeof(structstudent));
printf("请输入学生的、学号、性别、语文成绩、高等数学成绩、英语成绩:
\n");
scanf("%s",q->name);
scanf("%d%s%d%d%d",&q->num,&q->sex,&q->Chinese,&q->Math,&q->English);
n=0;
head=NULL;
while(q->num!
=0)
{
n=n+1;
if(n==1)head=q;
else
p->next=q;p=q;
q=(structstudent*)malloc(sizeof(structstudent));
scanf("%s",q->name);
scanf("%d%s%d%d%d",&q->num,q->sex,&q->Chinese,&q->Math,&q->English);
}
p->next=NULL;
printf("学生信息录入成功!
\n");returnhead;
}
/*
--*/
structstudent*Readpoint()
//学生信息写入存,便于操作
{FILE*fp1;
structstudent*head,*p,*q;
intn;
if((fp1=fopen("E:
test.txt","rb"))==NULL)
{
printf("openfileerror!
\n");exit(0);
}
p=q=(structstudent*)malloc(sizeof(structstudent));
fscanf(fp1,"%s%d%s%d%d%d",q->name,&q->num,q->sex,&q->Chinese,&q->Math,&q->English);
n=0;head=NULL;
while(!
feof(fp1))
{
n=n+1;
if(n==1)
head=q;
else
p->next=q;p=q;
q=(structstudent*)malloc(sizeof(structstudent));
fscanf(fp1,"%s%d%s%d%d%d",&q->name,&q->num,&q->sex,&q->Chinese,&q->Math,&q->English);
}
p->next=NULL;
fclose(fp1);
returnhead;}
/*
--*/
voidSwap(structstudent*phead,structstudent*pback)//链表元素数据交换
{
structstudent*temp=(structstudent*)malloc(sizeof(structstudent));
strcpy(temp->name,phead->name);temp->num=phead->num;strcpy(temp->sex,phead->sex);temp->Chinese=phead->Chinese;temp->Math=phead->Math;temp->English=phead->English;
strcpy(phead->name,pback->name);phead->num=pback->num;strcpy(phead->sex,pback->sex);phead->Chinese=pback->Chinese;phead->Math=pback->Math;phead->English=pback->English;
strcpy(pback->name,temp->name);pback->num=temp->num;strcpy(pback->sex,temp->sex);pback->Chinese=temp->Chinese;pback->Math=temp->Math;pback->English=temp->English;
free(temp);
}
/*
--*/
voidSort(structstudent*head)//
{
structstudent*phead=(structstudent*)malloc(sizeof(structstudent));
structstudent*pback=(structstudent*)malloc(sizeof(structstudent));
phead=head;
while(phead)
{
intNum=phead->num;pback=phead->next;while(pback)
{
if(Num>pback->num)
{
Swap(phead,pback);Num=phead->num;
}pback=pback->next;
}
phead=phead->next;
}
}
/*
-*/
voidRead(structstudent*head)//生信息读取
{
structstudent*p;p=head;
printf("
\n");
printf("学生的、学号、性别、语文成绩、高等数学成绩成绩:
\n");
while(p!
=NULL)
{
printf("%s\t%d\t%s\t%d\t%d
学号排序
英语
\t\t%d\n",p->name,p->num,p->sex,p->Chinese,p->Math,p->English);p=p->next;
}
printf("
\n");
}
/*
--*/
voidSave(structstudent*head)//学生信息保存到文件
{
structstudent*p;
FILE*fp;
if((fp=fopen("E:
test.txt","wb"))==NULL)
{
printf("openfileerror!
\n");exit(0);
}
p=head;
while(p!
=NULL)
{
fprintf(fp,"%s%d%s%d%d%d",p->name,p->num,p->sex,p->Chinese,p->Math,p->English);
fprintf(fp,"%s","\r\n");
p=p->next;
}
fclose(fp);
}
/*
--*/
voidSearch(structstudent*head)//学生信息查找
{
intn;structstudent*p;
charname[24];
intnum;
charsex[5];
intChinese;
intMath;intEnglish;
printf("您想以何种方式进行查找:
\n");printf("1;\n");
printf("2:
学号\n");
printf("3:
性别\n");
printf("4:
语文成绩\n");
printf("5:
数学成绩\n");
printf("6:
英语成绩\n");printf("0:
返回二级菜单\n");
scanf("%d",&n);switch(n){case1:
{
按查
printf("请输入:
");//找
scanf("%s",name);
p=head;while(strcmp(name,p->name)!
=0&&p->next!
=NULL)p=p->next;
if(strcmp(name,p->name)==0)
printf("%s%d%s%d%d%d\n",p->name,p->num,p->sex,p->Chinese,p->Math,p->English);
elseprintf("查无此人!
\n");
}
break;
case2:
{
printf("请输入学号:
");//按学号查找
scanf("%d",&num);
p=head;
while(num!
=p->num&&p->next!
=NULL)p=p->next;
if(num==p->num)
printf("%s%d%s%d%d%d\n",p->name,p->num,p->sex,p->Chinese,p->Math,p->English);
elseprintf("查无此人!
\n");
}
break;
case3:
{
printf("请输入性别:
");
找scanf("%s",sex);p=head;
while(p!
=NULL)
{
if(strcmp(sex,p->sex)==0)
printf("%s%d%s%d%d%d\n",p->name,p->num,p->sex,p->Chinese,p->Math,p->English);
p=p->next;
}
}break;
case4:
{
printf("请输入语文成绩:
");//按语文成绩查找
scanf("%d",&Chinese);
p=head;while(p!
=N
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 学生 信息管理 系统 实验 报告