C语言学生信息管理系统实验报告_第1页
C语言学生信息管理系统实验报告_第2页
C语言学生信息管理系统实验报告_第3页
C语言学生信息管理系统实验报告_第4页
C语言学生信息管理系统实验报告_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

2、的程序设计基础的掌握,对学生成绩管理系统进行编写程序。首先,通过链表 这一数据结构来对学生的信息进行录入以及操作,在其过程中,通过各个功能语句以及选择结构,循环结构等式的结合来达到所要实现的程序功能。最后通过对C语言中对文件的操作,对已有学生成绩的读取和新建学生成绩的录入保存。2、主要实现法2.1整体流程图学生信息管理系统进入退出学 生 信 息 录 入学 生 信 息 浏 览学 生 信 息 查 找2.2、函数功能和函数之间的调用关系2.2.1、函数功能:void Men u_1();/ 主菜单void Men u_2();/ 二级菜单/ 链表节点void swap(struct stude nt

3、 * phead,struct stude nt * pback);互换void Save(struct stude nt * head);void Search(struct student * head);息丿 111、void Read(struct student * head);息丿 111、void Sort(struct student * head);序struct stude nt * Create();struct stude nt * Readpo in t();struct stude nt * Modify(struct stude nt * head);修改stru

4、ct stude nt * Add(struct stude nt * head);struct stude nt * Delete(struct stude nt * head);2.2.2、函数之间的调用关系:通过switch语句进行指令选择:case 1:学生信息录入/ 写入磁盘/查找学生信/显示学生信/链表节点排/学生信息手动录入/磁盘文件写入存/链表结构体成员/链表节点插入/链表节点删除调用函数 Create( )、Save( )、Menu_1( )、Menu_2() case 2:学生信息浏览case 3:学生信息查找调用函数 Search(卜 Readpoint( )、Menu_

5、1( )、Menu_2()case 4:学生信息修改调用函数 Modify( )、Readpoint( )、Save(卜 Menu_1( )、Menu_2()case 5:学生信息增加调用函数 Add( )、 Readpoint( )、Save( )、Menu_1( )、Menu_2()case 6:学生信息删除调用函数 Delete( )、Readpoint( )Save( )、Menu_1( )、Menu_2()case 0:返回主菜单调用函数 Menu_1()第三章、代码(源代码)/*学生信息管理系统*/#i nclude #i nclude#i ncludestruct stude n

6、tint num;char n ame24;char sex5;int Chin ese;int Math;int En glish;struct stude nt * n ext;void Men u_1();/ 主菜单void Men u_2();/ 二级菜单void swap(struct stude nt * phead,struct stude nt * pback);void Save(struct stude nt * head);/定义结构体/ 链表节点互换/ 写入磁盘/查找学生信void Search(struct stude nt * head);Word资料void Re

7、ad(struct stude nt * head);/显示学生信息丿 111、void Sort(struct stude nt * head);序struct stude nt * Readpo in t();入存struct stude nt * Create();struct stude nt * Modify(struct stude nt * head);员修改struct stude nt * Add(struct stude nt * head);struct stude nt * Delete(struct stude nt * head);/ 链表节点排/磁盘文件写/学生信

8、息手动录入/链表结构体成/链表节点插入/链表节点删除int main(v oid)Men u_1(); return 0;void Me nu_1()Word资料int num;printf(tttt学生信息管理系统 ttttn);printf(ttt 1:进入学生信息管理n);/主菜单printf(ttt 0:退出学生信息管理n);printf(请您输入指令:);sea nf(%d,&nu m);switch( num) case 1:Me nu_2();break;default:printf(您已退出学生信息管理系统n);break;/*/void Men u_2()struct stu

9、de nt * head;int num;printf(ttt欢迎进入 n);printf(n);prin tf(ttt 1:学生信息录入n);prin tf(ttt 2:学生信息浏览n);prin tf(ttt 3:学生信息查找n);prin tf(ttt 4:学生信息修改n);/二级菜单prin tf(ttt 5:学生信息增加n);prin tf(ttt 6:学生信息删除n);prin tf(ttt 0:返回主菜单n);printf(n);printf(请您输入指令:); sea nf(%d,&nu m);switch( num)case 1:head = Create();Save(he

10、ad);prin tf(n);printf(ttt 1: 返回主菜单 n);/手动录入学生数据printf(ttt 2:返回二级菜单 n);prin tf(n);printf(请您输入指令:);sea nf(%d,&nu m);switch( num)case 1:Me nu_1();break;case 2:Me nu_2();break;default :printf(输入无效,返回二级菜单!n);Me nu_2();break;break;case 2:head = Readpo in t();/写入链表,返回头指针Sort(head);printf(ttt以学号升序排列n);Read(

11、head);/链表数据写入文件Save(head);prin tf(n);printf(ttt 1:返回主菜单 n);printf(ttt 2:返回二级菜单 n);prin tf(n);printf(请您输入指令:);sea nf(%d,&nu m);switch( num)case 1:Me nu_1();break;case 2:Me nu_2();break;default :printf(输入无效,返回二级菜单!n);Men u_2();break;break;case 3:head = Readpo in t();Search(head);/查找学生信息prin tf(n);prin

12、tf(ttt 1:返回主菜单 n);printf(ttt 2:返回二级菜单 n);prin tf(n);printf(请您输入指令:);sca nf(%d,&nu m);switch( num)case 1:Me nu_1();break;case 2:Me nu_2();break;default :printf(输入无效,返回二级菜单!n);Me nu_2();break;break;case 4:head = Readpo in t();/Modify(head);修改结构体成员并保存到文件Save(head);prin tf(n);printf(ttt 1: 返回主菜单 n);prin

13、tf(ttt 2:返回二级菜单 n);prin tf(n);printf(请您输入指令:);sca nf(%d,&nu m);switch( num)case 1:Me nu_1();break;case 2:Me nu_2();break;default :printf(输入无效,返回二级菜单!n);Me nu_2();break;break;case 5:head = Readpo in t();/增加学生信Add(head);息并保存到文件Save(head);prin tf(n);printf(ttt 1:返回主菜单 n);printf(ttt 2:返回二级菜单 n);prin tf(

14、n);printf(请您输入指令:);sea nf(%d,&nu m);switch( num)case 1:Me nu_1();break;case 2:Me nu_2();break;default :printf(输入无效,返回二级菜单!n);Me nu_2();break;break;case 6:head = Readpo in t();head = Delete(head);/删除学生信息并保存到文件Save(head);prin tf(n);printf(ttt 1:返回主菜单 n);printf(ttt 2:返回二级菜单 n);prin tf(n);printf(请您输入指令:

15、);sea nf(%d,&nu m);switch( num)case 1:Me nu_1();break;case 2:Me nu_2();break;default :printf(输入无效,返回二级菜单!n);Me nu_2();break;break;case 0: Men u_1();break;default :printf(请重新输入n);Me nu_2();break;/*/ struct stude nt * Create()/学生信息手动录入struct stude nt *head,* p,* q;int n;p = q = (struct stude nt *)mall

16、oc(sizeof(struct stude nt);printf(请输入学生的、学号、性别、语文成绩、高等数学成绩、英语成绩:n);sca nf(%s,q-n ame);sca nf(%d %s %d %d %d,&q-n um,&q-sex,&q-Chi nese,&q-Math, &q-E nglish);n = 0;head =NULL;while (q- num != 0)n = n+1;if (n = 1)head = q;elsep-n ext = q;p = q;q = (struct stude nt *)malloc(sizeof(struct stude nt);scan

17、 f(%s,q-n ame);sca nf(%d %s %d %d %d,&q-n um,q-sex,&q-Chi nese,&q-Math,&q-En glish);p-next = NULL;printf(学生信息录入成功!n);retur n head;/*/struct stude nt * Readpo in t()/学生信息写入存,便于操作FILE * fp1;struct stude nt *head,* p,* q;int n;if(fp1 = fope n(E:test.txt,rb) = NULL)prin tf(ope n file error!n);exit(0);p

18、= q = (struct stude nt *)malloc(sizeof(struct stude nt);fsca nf(fp1,%s %d %s %d %d %d,q- name,&q- nu m,q-sex,&q-Chin ese,&q-Math,&q-E nglish);n = 0;head =NULL;while( !feof(fp1)n = n+1;if (n = 1)head = q;elsep-n ext = q;p = q;q = (struct stude nt *)malloc(sizeof(struct stude nt);fsca nf(fp1,%s %d %s

19、%d %d %d,&q- name,&q-n um,&q-sex,&q-C hin ese,&q-Math,&q-En glish);p-next = NULL;fclose(fp1);retur n head;/*/void Swap(struct stude nt * phead, struct stude nt * pback) /链表元素数据交换struct stude nt * temp = (struct stude nt *)malloc(sizeof(struct stude nt);strcpy(temp-n ame,phead-n ame);temp-num = phead

20、-num;strcpy(temp-sex,phead-sex);temp-Ch in ese = phead-Ch in ese;temp-Math = phead-Math;temp-E nglish = phead-E nglish;strcpy(phead-n ame,pback- n ame);phead-num= pback- num;strcpy(phead-sex,pback-sex);phead-Chi nese = pback-Ch in ese;phead-Math = pback-Math;phead-E nglish = pback-E nglish;strcpy(pb

21、ack- n ame,temp-n ame);pback- num = temp-num;strcpy(pback-sex,temp-sex);pback-Ch in ese = temp-Ch in ese;pback-Math = temp-Math;pback-E nglish = temp-E nglish;free(temp);/*/void Sort(struct student * head)/ 学号排序struct stude nt * phead = (struct stude nt *)malloc(sizeof(struct stude nt);struct stude

22、nt * pback = (struct stude nt *)malloc(sizeof(struct stude nt); phead = head;while (phead)int Num = phead-num;pback = phead-n ext;while(pback)if( Num pback- num)Swap(phead,pback);Num = phead-num;pback = pback- n ext;phead = phead-n ext;/*/void Read(struct stude nt * head)/ 学生信息读取struct stude nt * p;

23、p = head;printf(n);printf(学生的、学号、性别、语文成绩、高等数学成绩、英语成绩:n);while(p != NULL)prin tf(%s t%dt%s t %d t %dtt%dn,p-n ame,p-nu m,p-sex,p-Chi nese,p-Math,p-E nglish);p = p-n ext;printf(n);/*/学生信void Save(struct stude nt * head)息保存到文件struct stude nt * p;FILE * fp;if(fp = fope n( E:test.txt,wb) = NULL)prin tf(o

24、pe n file error!n);exit(0);p = head;while(p !=NULL)fpri ntf(fp,%s %d %s %d %d %d,p-n ame,p-nu m,p-sex,p-Ch in ese, p-Math,p-E nglish);fprin tf(fp,%s,rn);p = p-n ext;fclose(fp);/*/void Search(struct stude nt * head)/ 学生信息查找int n;struct stude nt * p;char n ame24;int num;char sex5;int Chin ese;int Math

25、;int En glish;printf(您想以种式进行查找:n);prin tf(1;n);printf(2:学号 n);prin tf(3 :性别 n);printf(4:语文成绩 n);printf(5:数学成绩 n);printf(6:英语成绩 n);printf(0:返回二级菜单 n);sca nf(%d,&n);switch( n)case 1:/按查找printf(请输入:);scan f(%s, name);p = head;while(strcmp( name,p-n ame)!=O & p-n ext != NULL) p = p-n ext;if(strcmp( name

26、,p-n ame)=0)Word资料prin tf(%s %d %s %d %d %dn,p- name,p-n um,p-sex,p-Chin ese,p-Math,p-E nglish);elseprintf(查无此人!n);break;/按学case 2:printf(请输入学号:);号查找scan f(%d,&nu m);p = head;while( num != p-num & p-n ext != NULL) p = p-n ext;if(num = p-num)prin tf(%s%d %s %d %d %dn,p- name,p- num,p-sex,p-Chin ese,p

27、-Math,p-E nglish);elseprintf(查无此人!n);break;Word资料case 3:/按性别查找printf(请输入性别:);scan f(%s,sex);p = head;while(p!= NULL)if(strcmp(sex,p-sex)=O)prin tf(%s %d %s %d %d %dn,p- name,p- num,p-sex,p-C hin ese,p-Math,p-E nglish);p = p-n ext;break;case 4:printf(请输入语文成绩:);scan f(%d,&Chi nese);p = head;while(p!=

28、NULL)if(Ch in ese = p-Ch in ese)hin ese,p-Math,p-E nglish);p = p-n ext;break;case 5:II按高等数学成printf(请输入高等数学成绩:);绩查找scan f(%d,&Math);p = head;while(p!= NULL)if(Math = p-Math)prin tf(%s %d %s %d %d %dn,p- name,p- num,p-sex,p-C hin ese,p-Math,p-E nglish);p = p-n ext;break;case 6:/按英语成绩查找printf(请输入英语成绩:)

29、; scan f(%d,&En glish);p = head;while(p!= NULL)if(En glish = p-E nglish)prin tf(%s%d %s %d %d%dn,p- name,p- num,p-sex,p-Chin ese,p-Math,p-E nglish);p = p-n ext;break;default:printf(指令错误返回二级菜单!n);Men u_2();break;/*/struct stude nt * Modify(struct stude nt * head) int n;struct stude nt * p;char n ame2

30、4;int num;printf(”您想以种式进行修改:n);prin tf(1;n);printf(2:学号 n);printf(0:返回二级菜单 n);sca nf(%d,&n);switch( n)case 1:printf(请输入:);/按查找后修改信息sca nf(%s, name);p = head;while(strcmp( name,p-n ame)!=0 & p-n ext != NULL)p = p-n ext;Word资料sea nf(%s %d %s %d %d%d,p- name,&p-nu m,p-sex,&p-if(strcmp( name,p-n ame)=O)

31、Chi nese,&p-Math,&p-E nglish);printf(修改后:n);prin tf(%s %d %s %d %d%dn,p- name,p- num,p-sex,p-Chin ese,p-Math,p-E nglish);elseprintf(查无此人!n);break;case 2:printf(请输入学号:);/按学号查找后修改信息sca nf(%d,&nu m);p = head;while( num != p-num & p-n ext != NULL)p = p-n ext;if(num = p-num)sca nf(%s %d %s %d %d %d,p- na

32、me,&p-nu m,p-sex,&p-Chi nese,&p-Math,&p-E nglish);printf(修改后:n);Word资料sea nf(%s %d %s %d %d %d,add- name,&add- num,add-sex,&add-hin ese,p-Math,p-E nglish);elseprintf(查无此人!n);break;default:printf(指令错误,返回二级菜单!n);Me nu_2();break;return head;/增加struct stude nt * Add(struct stude nt * head)学生信息struct stu

33、de nt * p,* q;/为增加的学生分配存struct stude nt * add = (struct stude nt *)malloc(sizeof(struct stude nt );Chi nese,&add-Math,&add-E nglish);q = head;if(head = NULL)head = add;/空表插入add- next = NULL;elsewhile(add- num q- num) & (q- next != NULL)/ 指向下个节点p = q;q = q-n ext;if(add-num num)/ 插至 U首节点if (head = q)h

34、ead =add;elsep- next = add;插到中间节点add-n ext = q;Word资料elseq-n ext = add;add- next = NULL;retur n head;struct stude nt * Delete(struct stude nt * head) int n;struct stude nt * p,* q;char n ame24;int num;/插到尾节点/删除学生信息printf(”您想以种式进行删除:n);prin tf(1;n);printf(2:学号 n);printf(0:返回二级菜单 n);sca nf(%d,&n);switch( n)case 1:printf(请输入:);/按查找并删除sca nf(%s, name);p = head;while(s

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论