收藏 分享(赏)

C语言学生信息管理系统实验报告.doc

上传人:精品资料 文档编号:10871373 上传时间:2020-01-16 格式:DOC 页数:24 大小:163.68KB
下载 相关 举报
C语言学生信息管理系统实验报告.doc_第1页
第1页 / 共24页
C语言学生信息管理系统实验报告.doc_第2页
第2页 / 共24页
C语言学生信息管理系统实验报告.doc_第3页
第3页 / 共24页
C语言学生信息管理系统实验报告.doc_第4页
第4页 / 共24页
C语言学生信息管理系统实验报告.doc_第5页
第5页 / 共24页
点击查看更多>>
资源描述

1、 .教育资料C语言课程设计学生信息管理系统姓 名 洪伟生 院 系 计 算 机 学 院 日 期 2015 年 7 月 5 日 .教育资料目 录第一章 设计要求 第二章 算法分析1.理论依据2.主要实现方法2.1 整体流程图2.2 函数功能和函数之间的调用关系第三章 代码(源代码)第四章 分析说明第五章 总结第一章、 设计要求1、利用所学的知识、理论和实际结合,利用资源,采用模块化的结构,使用模仿修改自主设计相结合的方法,锻炼学生综合分析解决实际问题的编程能力;2、通过 C语言各个函数功能来实现对学生信息的管理,学生信息包括学生姓名,学号,各科成绩;管理方式包括对学生信息的录入,保存,排序,查找、

2、修改、删除等功能。第二章、 算法分析1、程序理论依据通过 C语言的程序设计基础的掌握,对学生成绩管理系统进行编写程序。首先,通过链表这一数据结构来对学生的信息进行录入以及操作,在其过程中,通过各个功能语句以及选择结构,循环结构等方式的结合来达到所要实现的程序功能。最后通过对 C语言中对文件的操作,对已有学生成绩的读取和新建学生成绩的录入保存。.教育资料2、主要实现方法2.1整体流程图2.2、函数功能和函数之间的调用关系2.2.1、函数功能:void Menu_1(); /主菜单void Menu_2(); /二级菜单void swap(struct student * phead,struct

3、 student * pback); / 链表节点互换void Save(struct student * head); / 写入磁盘void Search(struct student * head); / 查找学生信息void Read(struct student * head); / 显示学生信息void Sort(struct student * head); / 链表节点排序struct student * Create(); / 学生信息手动录入struct student * Readpoint(); / 磁盘文件写入内存struct student * Modify(stru

4、ct student * head); / 链表结构体成员修改struct student * Add(struct student * head); / 链表节点插入struct student * Delete(struct student * head); / 链表节点删除学生信息管理系统进入 退出学生信息录入学生信息查找学生信息浏览学生信息删除学生信息修改学生信息增加返回主菜单.教育资料2.2.2、函数之间的调用关系:通过 switch语句进行指令选择:case 1: 学生信息录入 调用函数 Create( )、Save( )、Menu_1( )、Menu_2( ) case 2: 学

5、生信息浏览调用函数 Readpoint( )、Sort( )、Read( )、Save( )、Menu_1( )、Menu_2( ) case 3: 学生信息查找 调用函数 Search( )、Readpoint( )、Menu_1( )、Menu_2( )case 4: 学生信息修改 调用函数 Modify( )、Readpoint( )、Save( )、Menu_1( )、Menu_2( )case 5: 学生信息增加调用函数 Add( )、 Readpoint( )、Save( )、Menu_1( )、Menu_2( )case 6: 学生信息删除调用函数 Delete( ) 、Read

6、point( )Save( )、Menu_1( )、Menu_2( )case 0: 返回主菜单调用函数 Menu_1( )第三章、 代码(源代码)/*学生信息管理系统*/#include#include#includestruct student /定义结构体int num;char name24;char sex5;int Chinese;int Math;int English;.教育资料struct student * next;void Menu_1(); /主菜单void Menu_2(); /二级菜单void swap(struct student * phead,struct

7、student * pback); / 链表节点互换void Save(struct student * head); / 写入磁盘void Search(struct student * head); / 查找学生信息void Read(struct student * head); / 显示学生信息void Sort(struct student * head); / 链表节点排序struct student * Readpoint(); / 磁盘文件写入内存struct student * Create(); /学生信息手动录入struct student * Modify(struct

8、 student * head); / 链表结构体成员修改struct student * Add(struct student * head); / 链表节点插入struct student * Delete(struct student * head); / 链表节点删除int main(void)Menu_1();return 0;void Menu_1()int num;printf(“tttt 学生信息管理系统ttttn“);printf(“ttt 1: 进入学生信息管理n“); /主菜单printf(“ttt 0: 退出学生信息管理n“);printf(“请您输入指令:“);sca

9、nf(“%d“,switch(num) case 1:Menu_2();.教育资料break;default:printf(“-您已退出学生信息管理系统-n“);break;/*-*/void Menu_2() struct student * head;int num;printf(“ttt 欢迎进入n“);printf(“-n“);printf(“ttt 1: 学生信息录入n“);printf(“ttt 2: 学生信息浏览n“);printf(“ttt 3: 学生信息查找n“);printf(“ttt 4: 学生信息修改n“); /二级菜单printf(“ttt 5: 学生信息增加n“);

10、printf(“ttt 6: 学生信息删除n“);printf(“ttt 0: 返回主菜单n“);printf(“-n“);printf(“请您输入指令:“);scanf(“%d“,switch(num)case 1:head = Create();Save(head);printf(“n“);printf(“ttt 1: 返回主菜单n“); /手动录入学生数据printf(“ttt 2: 返回二级菜单n“);printf(“n“);printf(“请您输入指令:“);scanf(“%d“,switch(num)case 1:Menu_1();break;.教育资料case 2:Menu_2(

11、);break;default :printf(“输入无效,返回二级菜单!n“);Menu_2();break;break;case 2:head = Readpoint(); /写入链表,返回头指针Sort(head);printf(“ttt 以学号升序排列n“);Read(head); / 链表数据写入文件Save(head);printf(“n“);printf(“ttt 1: 返回主菜单n“);printf(“ttt 2: 返回二级菜单n“);printf(“n“);printf(“请您输入指令:“);scanf(“%d“,switch(num)case 1:Menu_1();brea

12、k;case 2:Menu_2();break;default :printf(“输入无效,返回二级菜单!n“);Menu_2();break;break;case 3:head = Readpoint();.教育资料Search(head);/查找学生信息printf(“n“);printf(“ttt 1:返回主菜单n“);printf(“ttt 2:返回二级菜单n“);printf(“n“);printf(“请您输入指令:“);scanf(“%d“,switch(num)case 1:Menu_1();break;case 2:Menu_2();break;default :printf(

13、“输入无效,返回二级菜单!n“);Menu_2();break;break;case 4:head = Readpoint();Modify(head); /修改结构体成员并保存到文件Save(head);printf(“n“);printf(“ttt 1: 返回主菜单n“);printf(“ttt 2: 返回二级菜单n“);printf(“n“);printf(“请您输入指令:“);scanf(“%d“,switch(num)case 1:Menu_1();break;case 2:Menu_2();break;default :printf(“输入无效,返回二级菜单!n“);Menu_2(

14、);.教育资料break;break;case 5:head = Readpoint();Add(head); /增加学生信息并保存到文件Save(head);printf(“n“);printf(“ttt 1:返回主菜单n“);printf(“ttt 2:返回二级菜单n“);printf(“n“);printf(“请您输入指令:“);scanf(“%d“,switch(num)case 1:Menu_1();break;case 2:Menu_2();break;default :printf(“输入无效,返回二级菜单!n“);Menu_2();break;break;case 6:head

15、 = Readpoint(); head = Delete(head);/删除学生信息并保存到文件Save(head);printf(“n“);printf(“ttt 1:返回主菜单n“);printf(“ttt 2:返回二级菜单n“);printf(“n“);printf(“请您输入指令:“);scanf(“%d“,switch(num).教育资料case 1:Menu_1();break;case 2:Menu_2();break;default :printf(“输入无效,返回二级菜单!n“);Menu_2();break;break;case 0: Menu_1();break;def

16、ault :printf(“请重新输入n“);Menu_2();break;/*-*/struct student * Create() /学生信息手动录入struct student *head,* p,* q;int n;p = q = (struct student *)malloc(sizeof(struct student);printf(“请输入学生的姓名、学号、性别、语文成绩、高等数学成绩、英语成绩:n“);scanf(“%s“,q-name);scanf(“%d %s %d %d %d“, n = 0;head =NULL;while (q-num != 0)n = n+1;i

17、f (n = 1).教育资料head = q;elsep-next = q;p = q;q = (struct student *)malloc(sizeof(struct student);scanf(“%s“,q-name);scanf(“%d %s %d %d %d“,p-next = NULL;printf(“学生信息录入成功!n“);return head;/*-*/struct student * Readpoint() /学生信息写入内存,便于操作FILE * fp1;struct student *head,* p,* q;int n;if(fp1 = fopen(“E:tes

18、t.txt“,“rb“) = NULL) printf(“open file error!n“);exit(0);p = q = (struct student *)malloc(sizeof(struct student);fscanf(fp1,“%s %d %s %d %d %d“,q-name,n = 0;head =NULL;while( !feof(fp1)n = n+1;if (n = 1)head = q;elsep-next = q;.教育资料p = q;q = (struct student *)malloc(sizeof(struct student);fscanf(fp1

19、,“%s %d %s %d %d %d“,p-next = NULL;fclose(fp1);return head;/*-*/void Swap(struct student * phead, struct student * pback) /链表元素数据交换struct student * temp = (struct student *)malloc(sizeof(struct student);strcpy(temp-name,phead-name);temp-num = phead-num;strcpy(temp-sex,phead-sex);temp-Chinese = phead

20、-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)

21、;pback-Chinese = temp-Chinese;pback-Math = temp-Math;pback-English = temp-English;free(temp);.教育资料/*-*/void Sort(struct student * head) / 学号排序 struct student * phead = (struct student *)malloc(sizeof(struct student);struct student * pback = (struct student *)malloc(sizeof(struct student);phead = hea

22、d;while (phead)int Num = phead-num;pback = phead-next;while(pback) if( Num pback-num)Swap(phead,pback);Num = phead-num;pback = pback-next; phead = phead-next;/*-*/void Read(struct student * head) /学生信息读取 struct student * p;p = head;printf(“-n“);printf(“学生的姓名 、 学号 、 性别 、语文成绩 、 高等数学成绩 、 英语成绩:n“);while

23、(p != NULL)printf(“ %s t%dt%s t %d t %d tt %dn“,p-name,p-num,p-sex,p-Chinese,p-Math,p-English);p = p-next;.教育资料printf(“-n“);/*-*/void Save(struct student * head) /学生信息保存到文件struct student * p;FILE * fp;if(fp = fopen(“E:test.txt“,“wb“) = NULL) printf(“open file error!n“);exit(0);p = head;while(p !=NUL

24、L)fprintf(fp,“%s %d %s %d %d %d“,p-name,p-num,p-sex,p-Chinese,p-Math,p-English);fprintf(fp,“%s“,“rn“);p = p-next;fclose(fp);/*-*/void Search(struct student * head) /学生信息查找int n;struct student * p;char name24;int num;char sex5;int Chinese;int Math;.教育资料int English;printf(“您想以何种方式进行查找:n“);printf(“1;姓名

25、n“);printf(“2:学号n“);printf(“3:性别n“);printf(“4:语文成绩n“);printf(“5:数学成绩n“);printf(“6:英语成绩n“);printf(“0:返回二级菜单n“);scanf(“%d“,switch(n)case 1:printf(“请输入姓名:“); /按姓名查找scanf(“%s“,name);p = head;while(strcmp(name,p-name)!=0 if(strcmp(name,p-name)=0)printf(“%s %d %s %d %d %dn“,p-name,p-num,p-sex,p-Chinese,p-

26、Math,p-English);elseprintf(“查无此人!n“);break;case 2:printf(“请输入学号:“); /按学号查找scanf(“%d“,p = head;while(num != p-num if(num = p-num)printf(“%s %d %s %d %d %dn“,p-name,p-num,p-sex,p-Chinese,p-Math,p-English);elseprintf(“查无此人!n“);break; case 3:printf(“请输入性别:“); /按性别查找scanf(“%s“,sex);.教育资料p = head;while(p!

27、= NULL)if(strcmp(sex,p-sex)=0)printf(“%s %d %s %d %d %dn“,p-name,p-num,p-sex,p-Chinese,p-Math,p-English);p = p-next;break;case 4:printf(“请输入语文成绩:“); /按语文成绩查找scanf(“%d“,p = head;while(p!= NULL)if(Chinese = p-Chinese)printf(“%s %d %s %d %d %dn“,p-name,p-num,p-sex,p-Chinese,p-Math,p-English);p = p-next

28、;break; case 5:printf(“请输入高等数学成绩:“); /按高等数学成绩查找scanf(“%d“,p = head;while(p!= NULL)if(Math = p-Math)printf(“%s %d %s %d %d %dn“,p-name,p-num,p-sex,p-Chinese,p-Math,p-English);p = p-next;break;case 6:printf(“请输入英语成绩:“); /按英语成绩查找scanf(“%d“,p = head;while(p!= NULL).教育资料if(English = p-English)printf(“%s

29、%d %s %d %d %dn“,p-name,p-num,p-sex,p-Chinese,p-Math,p-English);p = p-next;break; default:printf(“指令错误返回二级菜单!n“);Menu_2();break;/*-*/struct student * Modify(struct student * head) int n;struct student * p;char name24;int num;printf(“ 您想以何种方式进行修改:n“);printf(“1;姓名n“);printf(“2:学号n“);printf(“0:返回二级菜单n“

30、);scanf(“%d“,switch(n)case 1:printf(“请输入姓名:“); /按姓名查找后修改信息scanf(“%s“,name);p = head;while(strcmp(name,p-name)!=0 if(strcmp(name,p-name)=0)scanf(“%s %d %s %d %d %d“,p-name,printf(“修改后:n“);.教育资料printf(“%s %d %s %d %d %dn“,p-name,p-num,p-sex,p-Chinese,p-Math,p-English);elseprintf(“查无此人!n“);break;case 2

31、:printf(“请输入学号:“); /按学号查找后修改信息scanf(“%d“,p = head;while(num != p-num if(num = p-num)scanf(“%s %d %s %d %d %d“,p-name,printf(“修改后:n“);printf(“%s %d %s %d %d %dn“,p-name,p-num,p-sex,p-Chinese,p-Math,p-English);elseprintf(“查无此人!n“);break; default:printf(“指令错误,返回二级菜单!n“);Menu_2();break;return head;struc

32、t student * Add(struct student * head)/增加学生信息struct student * p,* q; /为增加的学生分配内存struct student * add = (struct student *)malloc(sizeof(struct student );scanf(“%s %d %s %d %d %d“,add-name,q = head;if(head = NULL).教育资料head = add; /空表插入add-next = NULL;else while(add-num q-num) q = q-next;if(add-num num

33、) /插到首节点if (head = q)head =add;elsep-next = add; /插到中间节点add-next = q;elseq-next = add; /插到尾节点add-next = NULL;return head;struct student * Delete(struct student * head) /删除学生信息 int n;struct student * p,* q;char name24;int num;printf(“ 您想以何种方式进行删除:n“);printf(“1;姓名n“);printf(“2:学号n“);printf(“0:返回二级菜单n“

34、);scanf(“%d“,switch(n)case 1:printf(“请输入姓名:“); /按姓名查找并删除.教育资料scanf(“%s“,name);p = head;while(strcmp(name,p-name)!=0 p = p-next;if ( p = head) /删除首节点 head = p-next;p-next = NULL;else if(strcmp(name,p-name)=0)q-next = p-next; /删除中间节点p-next = NULL;elseprintf(“查无此人!n“);break;case 2:printf(“请输入学号:“); /按学

35、号查找并删除scanf(“%d“,p = head;while(num != p-num p = p-next;if(p = head)head = p-next;p-next = NULL;else if(num = p-num)q-next = p-next;p-next = NULL;elseprintf(“查无此人!n“);.教育资料break; default:printf(“指令错误,返回二级菜单!n“);Menu_2();break;return head;程运行结果:.教育资料.教育资料第四章、 分析说明学生管理系统主要利用 链表 这一数据结构,通过文件的写入(fprintf 函数) 、写出(fscanf 函数) 来对数据进行读取进而进行操作以及储存学生信息,以及利用 switch语句的特点完成用户与机器间的交互操作,符合实际需要。.教育资料第五章、 总结学生信息管理系统虽然是个小程序,但其中也体现了一定的结构化思想,对于编程也是用一定用处的。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报