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

下载本文档

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

文档简介

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

2、言得程序设计基础得掌握,对学生成绩管理系统进行编写程序。首先,通过链表这一 数据结构来对学生得信息进行录入以及操作,在其过程中,通过各个功能语句以及选择结构, 循环结构等方式得结合来达到所要实现得程序功能。最后通过对C语言中对文件得操作,对 已有学生成绩得读取与新建学生成绩得录入保存。2、主要实现方法2、1整体流程图2、2能:2、2、函数功能上用关系学生信息管理系统void/链表节点互换void s student * phead,struct student * pback);voidSave(struct student * head);/写入磁盘void Search(struct st

3、udent * head);息void Read(struct student * head);息/查找学生信/显示学生信void Sort(struct student * head);序/链表节点排struct student * Readpoint();struct student * Modify(struct student * head);修改struct student * Add(struct student * head);struct student * Delete (struct stude nt * head);/磁盘文件写入内存/链表结构体成员/链表节点插入/链表节

4、点删除2、2、2、函数之间得调用关系:通过switch语句进行指令选择:case 1:学生信息录入调用函数 Create。、Save()、Menu_l( )x Menu_2()case 2:学生信息浏览调用函数 Readpoint()、Sort()、Read() Save()、Menu_l( )x Menu_2()case 3:学生信息查找调用函数 Search() Readpoint()、Menu_l() Menu_2()case 4:学生信息修改调用函数 Modify( )x Readpoint()、Save()、Menu_l( )x Menu_2()case 5:学生信息増加调用函数 A

5、dd()、 Readpoint()、Save()、Menu_l()x Menu_2()case 6:学生信息删除调用函数 Delete()、Readpoint()Save()、Menu_l() Menu_2()case 0:返回主菜单调用函数Menu_l()第三章、代码(源代码)/*学生信息管理系统*/#include#include#includestruct student定义结构体int num;char name24;char sex5;int Chinese;int Math;int English;struct student * next;void Menu.10;void Me

6、nu_2Q;主菜单二级菜单void s student * phead,struct student * pback);链表节点互换/查找学生void Search(struct student * head);信息void Read(struct student * head);/显示学生信息void Sort(struct student * head);/链表节点排序struct student * Readpoint();/磁盘文件写入内存struct student * CreateQ;学生信息手动录入struct student * Modify(struct student *

7、head);/链表结构体成员修改struct student * Add(struct student * head);/链表节点插入struct student * Delete(struct student * head);/链表节点删除int main (void)Menu_10;return 0; void Menu。int num;printf(tttt 学生信息管理系统ttttnn);printf(“ttt 1:进入学生信息管理n“);主菜单printf(ttt 0:退出学生信息管理n“);printff请您输入指令:“);scanf(%d,&num);switch (num) c

8、ase l:Menu_20;break;default:printf(您已退出学生信息管理系统n );break;/*/void Menu_2Q int num; printfC*ttt 欢迎进入n“);printf(n ); printf(ttt 1:学生信息录An);printf(ttt 2:学生信息浏览n“);printf(ttt 3:学生信息查找n“);printfC*ttt 4:学生信息修改n“);二级菜单printf(nttt 5:学生信息增加n“);printf(“ttt 6:学生信息删除n“);printfCttt 0:返回主菜单n“);printn ); printtf请您输

9、入指令:“); scanf(”d,&num);switch(num)case 1:head = Create();Save(head);printfCttt 1:返回主菜单nj;手动录入学生数据printfCttt 2:返回二级菜单n“);printfCXn);printf(“请您输入指令:“);scanf(%d,&num);switch(num)case l:Menu_l();break;case 2:Menu_2();break;default:printf(“输入无效,返回二级菜单!n“); Menu_20;break;break;case 2:head = Readpoi nt();写

10、入链表,返回头指针Sort(head);printfC*ttt以学号升序排列n“);Read(head);/链表数据写入文件Save(head);printf(“n“);printf(ttt 1:返回主菜单n”);printf(ttt 2:返回二级菜单n“); printfCXn);printf(“请您输入指令:“); scanf(%d,&num);switch(num)case l:Menu_l();break;case 2:Menu_2();break;default:printfC输入无效,返回二级菜单!nj;Menu_2Q;break;break;case 3:head = Readp

11、oi nt();Search(head);查找学生信息printfCXn);printf(ttt 1:返回主菜单n“);printf(ttt 2:返回二级菜单n”);printfCXn);printf(“请您输入指令:“); scanf(%d,&num);switch(num)case l:Menu_l();break;case 2:Menu_2();break;default:printf(“输入无效,返回二级菜单!n“); Menu_20;break;break;case 4:head = Readpoi nt();/Modify(head);修改结构体成员并保存到文件Save(head)

12、;printfCXn);printfCttt 1:返回主菜单n“);printf(ttt 2:返回二级菜单n”);printfCXn);printfCiS您输入指令:“);scanffd1,&num);switch(num)case l:Menu_l();break;case 2:Menu_2();break;default:printf(“输入无效,返回二级菜单!n“);Menu_20;break;break;case 5:增加学生信head = Readpoi nt();Add(head);息并保存到文件Save(head);printfCXn);printf(Mttt 1:返回主菜单nj

13、;printf(flttt 2:返回二级菜单n J;printfCXn);printf(“请您输入指令:“);scanf(%d,&num);switch(num)case l:Menu_l();break;case 2:Menu_2();break;default:printf(“输入无效,返回二级菜单!n“);Menu_20;break;break;case 6:head = Readpoi nt();head = Delete(head);删除学生信息并保存到文件Save(head);printfCXn);printf(ttt 1:返回主菜单n”);printf(Mttt 2:返回二级菜单

14、n“);printfCXn);printff请您输入指令:“);scanf(%d,&num);switch(num)case l:Menu_l();break;case 2:Menu_2();break;default:printf(“输入无效,返回二级菜单!n“);Menu_20;break;break;case 0: Menu_l();break;default:printf(“请重新输入n“);Menu_20;break;/* struct student * CreateO学生信息手动录入struct student *head * p * q;int n;p = q = (struc

15、t student *)malloc(sizeof(struct student);printff请输入学生得姓名、学号、性别、语文成绩、高等数学成绩、英语成绩:n“);scan f(%s,q- n ame);scanf(%d %s %d %d %cf:&q-num,&q-sex,&q-Chinese,&qIVIath,&q -English);n = 0;head =NULL;while (q-num != 0)n = n+1;if (n =1)head = q;elsep-next = q;P = q; q = (struct student *)malloc(sizeof(struct

16、student);scanf%s:q n ame);scanf(%d %s %d %d %cf;&q-num,q-sex,&q-Chinese,&qMath,&q En glish);p-next = NULL;printff学生信息录入成珈rT);return head;/*/struct student * Readpoint()学生信息写入内存,便于操作FILE pl;struct student *head * p * q;int n;if(fpl 二 fopen(“E:test、txt“,”rb“)= NULL)printfCopen !n);exit(O);p = q = (str

17、uct student *)malloc(sizeof(struct student);fscanf(fpl,%s %d %s %d %d %dM,q-name,&qnum,qsex,&qChinese,&q - Math,&q English);n 二 0;head =NULL;while( !feof(fpl)n = n+1; if (n =1) head = q;elsep- next = q;P = q; q = (struct student *)malloc(sizeof(struct student);fscanf(fpl,%s %d %s %d %d %d,1&q-name,&

18、qnum,&qsex,&qChin ese,&q Math,&q - English);p-next = NULL;fclose(fpl);return head;/*/ void S 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); te

19、mp-Chinese = phead-Chi nese; temp-Math = phead Math; temp-English = phead-English; strcpy(phead name,pback ame); phead-num= pback-num; strcpy(phead-sex,pback sex); phead-Chi nese = pback-Chinese; phead-Math = pback-Math; phead-E nglish = pback-E nglish; strcpy(pback-n ame,temp-name); pback- num = te

20、mp num; strcpy(pback-sex,temp sex); pback-Chinese = temp Chinese; pback-Math = temp-Math; pback-English = temp En glish;free(temp);/*/学号排序*/void Sort(struct student * head)struct student * phead = (struct student *)malloc(sizeof(struct student);struct student * pback = (struct student *)malloc(sizeo

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

22、p != NULL)printtf %s t%dt%s t %d t %dtt %dn,p-name,p-num,psex,p-Chinese,pMath,pEnglish);p = p-next;printf(n );/*学生*/ void Save(struct student * head)信息保存到文件struct student * p;FILE*fp;if(fp = fopenCEztests txtwb) = NULL)printfCopen !n“);exit(O);p = head;while(p !=NULL)fprintf(fp%s %d %s %d %d %d,1pna

23、me,p-num,p-sex,p-Chinese,pMath,p- English);fprintf(fpsT、rrT);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;printtf您想以何种方式进行查找:n“);printf(壮;姓名n“);printf(u2:学号n“);printf(H3:1 别n“);printfC4:语文成绩n

24、“);printfC*5 澈学成绩n“);printf(6:英语成绩n);printffO:返回二级菜单n“);scanf(“d“,&n);switch(n)case 1:printf (“请输入姓名:“);按姓名查找scanf(%s,name);p = head;while(strcmp(name,p-name)!=0 & pnext != NULL)p = pn ext;if(strcmp(name,p n ame)=0)printf(%s %d %s %d %d %dn,p-name,p-num,p-sex,p-Chine se,p- Math,p En glish);break;cas

25、e 2:按学printfC*请输入学号:“);号查找scanf(,%d,&num);p = head;while(num != p-num & p-next != NULL) p = p-next;if(num = num)prin tf(%s %d %s %d %d %dn,p n ame,p-num,p-sex,p :Chine se,pnglish);elseprintf(“查无此人!n“);break;case 3:按性别查找prints请输入性别门;scanfs:sex);while(p!= NULL)if(strcmp(sex,p-sex)=0)printf(%s %d %s %d

26、 %d %dn,p- name,p num,p-sex,p-Chinese,p-Math,p-E nglish);p = p-next;break;case 4:按语文成绩查printff请输入语文成绩:“);找scanf(“cf,&Chinese);p = head;while(p!= NULL)if (Chi nese = pChin ese)prin tf(%s %d %s %d %d %dn,p ame,p-num,p-sex,p-Chi nese,pnglish);break;case 5:按高等数学成printf(“请输入高等数学成绩:“);绩查找scanfCd,&M ath);p

27、 = head;while(p!= NULL)if(Math = p-Math)prin tf(%s %d %s %d %d %dn,p n ame,p-num,p-sex,p :Chine se,pnglish);p = p-next;break;case 6:scanf(%d;&English);while(p!= NULL)if(English = p- English)prin tf(%s %d %s %d %d %dn,p-name,p-num,p-sex,p-Chinese,p-Math,p-E nglish);p = p- next;break;default:!printfC指

28、令错误返回二级菜单!n“);Menu_2();break;/*/struct student * Modify(struct student * head) int n;struct student * p;char name24;int num;printff您想以何种方式进行修改:n“);printfCl;姓名n“);printfC2:学号n“);printfCO:返回二级菜单n“);scanf(“d“,&n);switch(n)case 1:printf(请输入姓名:“);按姓名查找后修改信息scanfCsname);p = head;while(strcmp(name,p-name)!

29、二0 & p-next != NULL)p = p-next;if(strcmp(name,p- name)=0)scanf(%s %d %s %d %d %d,p-name,&pnum,p-sex,&p-Chinese,&p-Math,&p English);prin tf(M%s %d %s %d %d %dn,p ame,p-num,p-sex,p-Chi ne se,pnglish);elseprintf(“查无此人!n“);break;case 2:printfC1请输入学号:“);按学号查找后修改信息scanf(%d,&num);p = head;while(num != p-nu

30、m & p-next != NULL)p = p- next;if(num = p- num)scanf(%s %d %s %d %d %d,p-name,&pnum,psex,&pChi nese,&p- Math,&p English);printff 修改后:n“);prin tf(%s %d %s %d %d %dn,p- name,pnum,p-sex,p-Chi ne se,p-Math,p-E nglish);elsebreak;default:!printff指令错误,返回二级菜单!n“);Menu_20;break;return head;struct student * A

31、dd(struct student * head)/增加学生信息struct student * p,* q;为增加得学生分配内存struct student * add = (struct student *)malloc(sizeof(structstudent);scanf(%s %d %s %d %d %d,add-name,&addnum,addsex,&addChinese,&addMath,&add English);q = head;if(head = NULL)空表插入P = q;q = qn ext;if(addnum next = add;add-next = q;els

32、eq- next = add;插到首节点插到中间节点插到尾节点head = add;add-next = NULL;else while(add-num q-num) & (q-next != NULL) 指向下个节点add- next = NULL;return head;struct student * Delete(struct student删除学生信息 int n;struct student * p,* q;char name24;int num;printff您想以何种方式进行删除:n“);printfCl;姓名 n”);printf(2:学号n“);printffO:返回二级菜

33、单n“);scanf(“d“,&n);switch(n)case 1:按姓名查找并删除printf(“请输入姓名:“);scanf(%s,name);p = head;while(strcmp(name,p-name)!二0 & p-next != NULL)q = P;p = p-next;if ( p = head) head = p- next; p-next = NULL;else删除首节点if(strcmp(name,p-name)=O) qn ext = p-next; p-next = NULL;elseprintf(“查无此人!n“);break;case 2:printtfiS输入学号门;删除中间节点按学号查找并删scanfCd,&num);p = head;while(num != p-num & p-next != NULL)q = P;p = p- next;if(p = head)head = p-next;p-next = NULL;elseif(num = p-num)qn ext = p next; p-next = NULL;elseprintf(“查无此人!n“);break;defaedt:printff指令错误,返回二

温馨提示

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

评论

0/150

提交评论