数据结构之学生成绩管理系统_第1页
数据结构之学生成绩管理系统_第2页
数据结构之学生成绩管理系统_第3页
数据结构之学生成绩管理系统_第4页
数据结构之学生成绩管理系统_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

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

文档简介

1、学生成绩管理系统一、实验目的通过此次课程设计中学生成绩管理系统的题目,掌握链表等数据结构的基本操作方面的知识,并能灵活的解决一些基本的问题,加深对其性质及各项操作的理解;将所学数据结构方面的知识与一门具体的语言一一C语言來进行实现,感受数据结构的强大作用,加深理解。二、试验要求管理系统中有五个要求:输入查找修改插入删除存储(1)输入要求:能够通过键盘输入和文件输入两种(2)查找要求:能够根据学生号查找单个学生的信息,也可以遍历所有学生信息(3)修改要求:能够根据学生号修改单个学生所有信息(4)插入要求:能够实现头插和尾插(5)删除要求:能够根据学生号删除单个学生信息(6)存储要求:通过链表存储

2、所有信息三、算法的思想与算法实现步骤基本思想通过链表数据类型进行基本操作,主要有三个模块:分别是主函数模块、主要操作函数及基本操作函数。其中,主函数负责其他子函数的调用实现以及基本界面的操作主要函数包括:voidStulnput(Student*);学生成绩管理系统的输入函数,由主函数调用voidStuSelect(Student*);学生成绩管理系统的查找函数,由主函数调用voidStuAlter(Student*);学生成绩管理系统的修改函数,由主函数调用voidStulnsert(Student*);学生成绩管理系统的插入函数,由主函数调用voidStuDelect(Student*);

3、/学生成绩管理系统的删除函数,由主函数调用voidStuSave(Student*);学生成绩管理系统的存储函数,由主函数调用基本操作函数:/输出函数voidStuOutput(Student*p);输入函数intStulmport(Student*head,Student*p);voidStuInputHand(Student*head);/学生成绩管理系统的手动输入函数,由输入函数调用voidStuInputFile(Student*head);/学生成绩管理系统的文件输入函数,由输入函数调用voidStuSelectErg(Student*head);/学生成绩管理系统的遍历函数,由查找

4、函数调用voidStuSelectNumFind(Student*head);/学生成绩管理系统的按学号查找函数,由查找函数调用voidStuSelectSubFind(Student*head);/学生成绩管理系统的按科目查找函数,由查找函数调用实现步骤首先,分析题目要求划分实现模块,定义基本数据类型,诸如结构体、链表等;其次,针对上述的基本操作实现具体需要进行的操作,具体实现每个环节需要进行的基本操作,即具体编写每个小函数实现功能;最后,编写主函数对每个实现进行按需调用,实现操作。3.流程图四.代码:mcludemclude#mcludestmctStudentchainame10;cha

5、isubject10;iiitnum;mtgrade;Student*next;voidStuMainQ;学生成绩管理系统的主函数,由mam函数调用voidStuIiiput(Student*);学生成绩管理系统的输入函数,由主函数调用voidsmselect(student*);学生成绩管理系统的查找函数,由主函数调用voidStuAlter(Student*);学生成绩管理系统的修改函数,由主函数调用voidSniIiisert(Snident*);学生成绩管理系统的插入函数,由主函数调用voidStuDelectCStudent*);学生成绩管理系统的删除函数,由主函数调用voidStu

6、Save(Smdent*);学生成绩管理系统的存储函数,由主函数调用voidStuOutput(Student*p);输出函数mtStuInipoil(Student*head,Student*p);输入函数voidStuOutput(Student*p)打印函数,将链表的该节点信息输出pnntff学生姓名:n);prmtf(M%sH,p-name);pnntf(”学生号:”);priiitf(n%d.pnum);pnntf(”科目:”);pimtf(n%sn5p-subject);pnntf(”学生成绩:”);pnntff%dnH,p-grade);mtStuInipoil(Student*

7、head,Student*p)Student*Opuuon=(Student*)nialloc(sizeof(Snident);用来判断输入节点中学生号是否有重复Opmion=head-next;pnntf(”学生姓名:scanf(M%s,p-naiiie);prmtf(H学生号:n”);scanf(”d=&pnum);pnntf(”科目:n”);scanf(%s”,psubject);if(Opuuon!=NULL)if(OpHUOii-iium=p-nuiii&!strcmp(Opinion-subject,p-subject)pmitfC该学生这门科目已有成绩,请重新输入n”);retu

8、rn1;Opinion=Opinion-next;printf(”学生成绩:n”);scanf(%d=&pgiade);return0;voidmain()StuMainQ;voidStuMainQchai-decide=V;/定义while变量,函数是否继续进行intnum=l;定义switch变量,函数跳转到哪个voidStuIiiput(Student*head)学生成绩管理系统的输入函数,由主函数调用子函数Student*head;定义链表的头指针head=(Student*)malloc(sizeof(Student);给头指针开辟空间head-next=NULL;初始化头指针whi

9、le(decide?=,n,)pnntf(M*打).*i输入2查找3修改4插入*5”);*5删除6存储7追出*nH);*打).scanf(”d”、&ni】ni);switch(num)case1:Stulnput(head);break:case2:StuSelect(head);break:case3:StuAlter(head);break:case4:Stulnsert(head);break:case5:StuDelect(head);break:case6:StuSave(head);break:default:decide:break;;voidStuIiiputHand(Stud

10、ent*head);学生成纟贵管理系统的手动输入函数,由输入函数调用voidStuIiiputFile(Student*head);学生成绩管理系统的文件输入函数,由输入函数调用chaidecide=V;intnum;数定义while变量,函数是否继续进行定义switch变量,函数跳转到哪个子函while(decide!=,n,)*y).pnntf(-*1手动输入2文件输入3退出林E);*y).scanfC%cT;&iii】m);switch(num)case1:StuIiiputHaiid(head);break;case2:StuIiiputFile(head);default:decid

11、e=,n,;break;voidStuIiiputHand(Student*head)学生成绩管理系统的手动输入函数,由输入函数调用if(head-next=NULL)Student*pomt=(Student*)nialloc(sizeof(Student);链表中最后一个节点,只在该函数中存在point-next=NULL;intdecide=l;wliile(decide!=O)Student*p=(Student*)malloc(sizeof(Student);p-next=NULL;Stulinport(head,p);if(head-next=NULL)head-next=p;po

12、int=p;elsepoint-next=p:pomt=p;printf(”是否继续:l/OnH);scanfC%d,&decide);elsepnntf(“管理系统中已存在信息,若想输入学生信息,请转插入子系统”);voidStuIiiputFile(Snideiit*head)学生成绩管理系统的文件输入函数,由输入函数调用if(head-next!=NULL)pmitf(”学生管理系统中已有信息,请跳转到插入选项n”);return;FILE*fp;prmtf(请输入文件名(包括物理地址)n”);charfilename10;scanfHs.filename);if(fp=fopen(fi

13、lename/*iH)=NULL)printHcannotopenfileiT);return;Student*point=(Snident*)malloc(sizeof(Student);Student*OpHiion=(Student*)nialloc(sizeof(Sndent);用来判断输入节点中学生号是否有重复wliile(?feof(fp)Opnuon=head-next;Student*p=(Student*)malloc(sizeof(Student);p-next=NULL;fiead(p.sizeof(Student),1.fp);if(Opuuon!=NULL)if(Op

14、Huon-num=p-num&!sticmp(OpHuon-subject.p-subject)pnnrff该文件中有重复学生信息,请验明再传输5”);head-next=NULL;return;Opinion=Opinion-next;voidStuIiiput(Student*head)学生成绩管理系统的输入函数,由主函数调用if(head-next=NULL)head-next=p;pomt=p;elsepoint-next=p:pomt=p;Opinion=head-next;wliile(Opinion-next?=NULL)Opinion=Opinion-next;if(Opuuo

15、n-next-next=NULL)Opmion-next=NULL:;fclose(fp);pnntf(”传输成功n”);voidStuSelectErg(Student*head);学生成绩管理系统的遍历函数,由查找函数调用voidSniSelectNumFind(Student*head);学生成绩管理系统的按学兮查找函数,由查找函数调用voidStuSelectSubFmd(Stiident*head);学生成绩管理系统的按科目查找函数,由查找函数调用voidStuSelect(Student*head)/学生成绩管理系统的查找函数,由主函数调用chaidecide=y;定义while变

16、量,函数是否继续进行intnum;定义switch变量,函数跳转到哪个子函while(decide!=n)printfC*W).printf(M*1遍历2学号查找3科目查找4退出*nn);pnntf(M*打).scanf(H%cl,&num);switch(num)case1:StuSelectErg(head);break;voidStuIiiput(Student*head)学生成绩管理系统的输入函数,由主函数调用case2:StuSelectNuniFmd(head);break;case3:StuSelectSubFind(head);break;default:decide=,n,;

17、break;voidStuSelectEig(Student*head)学生成绩管理系统的遍历函数,由查找函数调用Student*p=(Student*)inalloc(sizeof(Student);p=head-next;iiiti=l;while(p!=NULL)pnntf(M%d位学生信息:iri);StuOxitput(p);p=p-next;1+;voidStuSelectNuniFind(Student*head)学生成绩管理系统的查找子系统,有查找函数调用intnum;pnntf(”输入想要查找学生的学生号:5”);scanf(H%d,&num);Student*p=(Stud

18、ent*)inalloc(sizeof(Student);p=head-next;iiiti=l;while(p!=NULL)if(num=p-num)StuOxitput(p);1+;p=p-next;lf(l=l)pnntf(“没有该学生信息”);voidStuIiiput(Student*head)学生成绩管理系统的输入函数,由主函数调用voidStuSelectSubFmd(Student*head)学生成绩管理系统的按科目查找函数,由查找函数调用cliarSub10;phntf(”输入想要查找科目:scanff%sSSub);Student*p=(Student*)inalloc(s

19、izeof(Student);p=head-next;mti=l;while(p!=NULL)if(!strcmp(Sub,p-subject)StuOxitput(p);1+;p=p-next;lf(l=l)pnmf(”没有该学生信息”);voidStuAlter(Student*head)学生成绩管理系统的修改函数,由主函数调用intnum;pnntf(”输入想要查找学生的学生号:5”);scanf(H%d,&num);chaiSub10;phntf(”输入想要查找科目:scanff%sSSub);Student*p=(Student*)inalloc(sizeof(Student);p=

20、head-next;mti=l;while(p!=NULL)if(num=p-num&!sticmp(Sub.p-subject)输入修改成绩:n”);scanfC%d”,&pgnide);pmitf(”修改成功5”);i+;p=p-next;if(i=l)voidStuIiiput(Student*head)学生成绩管理系统的输入函数,由主函数调用voidStuIiiput(Student*head)学生成绩管理系统的输入函数,由主函数调用prmtfC-没有该学生信息”);voidStiiIiisert(Student*head)学生成绩管理系统的插入函数,由主函数调用Student*pom

21、t=(Student*)malloc(sizeof(Student);pomt=head-next;while(pomt-next=NULL)pomt=pouit-next;找到尾结点chardecide=V;定义wlule变量,函数是否继续进行mtnum;定义switch变量,函数跳转到哪个子函数wliile(decide!=n,)pnntffprmtf(nprmtf(nscanf(”d役&num);*-*i头插2尾插3退出*ir);*恤”)Student*p=(Student*)malloc(sizeof(Student);switch(num)case1:Stulinpoit(head,p);p-next=head-next;headnext=p;pmitf(”插入成功5”);break;case2:Stulinpoit(head,p);pomt-next=p;p-next=NULL;pmitf(”插入成功5”);break;default:decide=,n,;break;voidStuDelect(Smdent*head)学生成绩管理系统的删除函数,由主函数调用intnum;pnntff输

温馨提示

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

最新文档

评论

0/150

提交评论