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

下载本文档

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

文档简介

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

2、生号删除单个学生信息( 6) 存储要求:通过链表存储所有信息三、算法的思想与算法实现步骤1. 基本思想通过链表数据类型进行基本操作,主要有三个模块:分别是主函数模块、主要操作函数及基本操作函数。其中,主函数负责其他子函数的调用实现以及基本界面的操作主要函数包括:void StuInput(Student *);/学生成绩管理系统的输入函数,由主函数调用void StuSelect(Student *); /学生成绩管理系统的查找函数,由主函数调用void StuAlter(Student *);/学生成绩管理系统的修改函数,由主函数调用void StuInsert(Student *); /学

3、生成绩管理系统的插入函数,由主函数调用void StuDelect(Student *); /学生成绩管理系统的删除函数,由主函数调用WORD 完美格式下载可编辑专业资料void StuSave(Student *);/学生成绩管理系统的存储函数,由主函数调用基本操作函数:void StuOutput(Student *p);/输出函数int StuImport(Student *head,Student *p); /输入函数void StuInputHand(Student *head);/学生成绩管理系统的手动输入函数,由输入函数调用void StuInputFile(Student *h

4、ead);/学生成绩管理系统的文件输入函数,由输入函数调用void StuSelectErg(Student *head);/学生成绩管理系统的遍历函数,由查找函数调用voidStuSelectNumFind(Student*head);/学生成绩管理系统的按学号查找函数,由查找函数调用voidStuSelectSubFind(Student*head);/学生成绩管理系统的按科目查找函数,由查找函数调用2. 实现步骤首先,分析题目要求划分实现模块,定义基本数据类型,诸如结构体、链表等;其次,针对上述的基本操作实现具体需要进行的操作,具体实现每个环节需要进行的基本操作,即具体编写每个小函数实现

5、功能;最后,编写主函数对每个实现进行按需调用,实现操作。3. 流程图WORD 完美格式下载可编辑专业资料mainStuMainStuInputStuSelectStuAlterStuInsertStuDelectStuSaveStuInputStuInputStuSelectEStuSelectNStuSelectSubHandFilergumFindFind四代码:#include<stdio.h>#include<malloc.h>#include<string.h>struct Studentchar name10;char subject10;int

6、 num;int grade;Student *next;void StuMain();/学生成绩管理系统的主函数,由main 函数调用void StuInput(Student *);/学生成绩管理系统的输入函数,由主函数调用void StuSelect(Student *);/学生成绩管理系统的查找函数,由主函数调用void StuAlter(Student *);/学生成绩管理系统的修改函数,由主函数调用void StuInsert(Student *);/ 学生成绩管理系统的插入函数,由主函数调用void StuDelect(Student *);/学生成绩管理系统的删除函数,由主函数

7、调用void StuSave(Student *);/ 学生成绩管理系统的存储函数,由主函数调用void StuOutput(Student *p);/ 输出函数int StuImport(Student *head,Student *p);/ 输入函数WORD 完美格式下载可编辑专业资料void StuOutput(Student *p)/ 打印函数,将链表的该节点信息输出printf(" 学生姓名: ");printf("%s",p->name);printf(" 学生号: ");printf("%d",

8、p->num);printf(" 科目:");printf("%s",p->subject);printf(" 学生成绩: ");printf("%dn",p->grade);int StuImport(Student *head,Student *p)Student *Opinion=(Student*)malloc(sizeof(Student);/用来判断输入节点中学生号是否有重复Opinion=head->next;printf(" 学生姓名: n");scanf

9、("%s",p->name);printf(" 学生号: n");scanf("%d",&p->num);printf(" 科目: n");scanf("%s",p->subject);if(Opinion!=NULL)if(Opinion->num=p->num&&!strcmp(Opinion->subject,p->subject)printf(" 该学生这门科目已有成绩,请重新输入n");return

10、1;Opinion=Opinion->next;printf(" 学生成绩: n");scanf("%d",&p->grade);return 0;void main()StuMain();void StuMain()char decide='y'/定义 while 变量,函数是否继续进行int num=1;/ 定义 switch 变量,函数跳转到哪个WORD 完美格式下载可编辑专业资料子函数Student *head;/ 定义链表的头指针head=(Student *)malloc(sizeof(Student);/

11、给头指针开辟空间head->next=NULL;/ 初始化头指针while(decide!='n')printf("*n");printf("*1输入2查找3修改4 插入 *n");printf("*5删除6存储7退出*n");printf("*n");scanf("%d",&num);switch(num)case 1:StuInput(head);break;case 2:StuSelect(head);break;case 3:StuAlter(head);b

12、reak;case 4:StuInsert(head);break;case 5:StuDelect(head);break;case 6:StuSave(head);break;default:decide='n'break;void StuInputHand(Student *head);/ 学生成绩管理系统的手动输入函数,由输入函数调用void StuInputFile(Student *head);/ 学生成绩管理系统的文件输入函数,由输入函数调用void StuInput(Student *head)/学生成绩管理系统的输入函数,由主函数调用WORD 完美格式下载可编

13、辑专业资料char decide='y'/ 定义 while 变量,函数是否继续进行int num;/ 定义 switch 变量,函数跳转到哪个子函数while(decide!='n')printf("*n");printf("*1手动输入2 文件输入3 退出*n");printf("*n");scanf("%d",&num);switch(num)case 1:StuInputHand(head);break;case 2:StuInputFile(head);defaul

14、t:decide='n'break;void StuInputHand(Student *head)/ 学生成绩管理系统的手动输入函数,由输入函数调用if(head->next=NULL)Student *point=(Student*)malloc(sizeof(Student);/链表中最后一个节点,只在该函数中存在point->next=NULL;int decide=1;while(decide!=0)Student *p=(Student *)malloc(sizeof(Student);p->next=NULL;StuImport(head,p);

15、if(head->next=NULL)head->next=p;point=p;elseWORD 完美格式下载可编辑专业资料point->next=p;point=p;printf(" 是否继续: 1/0n");scanf("%d",&decide);elseprintf(" 管理系统中已存在信息,若想输入学生信息,请转插入子系统");void StuInputFile(Student *head)/ 学生成绩管理系统的文件输入函数,由输入函数调用if(head->next!=NULL)printf(&

16、quot; 学生管理系统中已有信息,请跳转到插入选项n");return ;FILE *fp;printf(" 请输入文件名(包括物理地址)n");char filename10;scanf("%s",filename);if(fp=fopen(filename,"r")=NULL)printf("can not open filen");return;Student *point=(Student *)malloc(sizeof(Student);Student *Opinion=(Student*)m

17、alloc(sizeof(Student);/用来判断输入节点中学生号是否有重复while(!feof(fp) Opinion=head->next;Student *p=(Student *)malloc(sizeof(Student);p->next=NULL;fread(p,sizeof(Student),1,fp);if(Opinion!=NULL)if(Opinion->num=p->num&&!strcmp(Opinion->subject,p->subject)printf(" 该文件中有重复学生信息,请验明再传输n&

18、quot;);head->next=NULL;return ;Opinion=Opinion->next;WORD 完美格式下载可编辑专业资料if(head->next=NULL)head->next=p;point=p;elsepoint->next=p;point=p;Opinion=head->next;while(Opinion->next!=NULL)Opinion=Opinion->next;if(Opinion->next->next=NULL)Opinion->next=NULL;fclose(fp);print

19、f(" 传输成功 n");void StuSelectErg(Student *head);/ 学生成绩管理系统的遍历函数,由查找函数调用void StuSelectNumFind(Student *head); / 学生成绩管理系统的按学号查找函数,由查找函数调用void StuSelectSubFind(Student *head);/ 学生成绩管理系统的按科目查找函数,由查找函数调用void StuSelect(Student *head)/ 学生成绩管理系统的查找函数,由主函数调用char decide='y'/ 定义 while 变量,函数是否继续

20、进行int num;/ 定义 switch 变量,函数跳转到哪个子函数while(decide!='n')printf("*n");printf("*1遍历2 学号查找3 科目查找4 退出*n");printf("*n");scanf("%d",&num);switch(num)case 1:StuSelectErg(head);break;WORD 完美格式下载可编辑专业资料case 2:StuSelectNumFind(head);break;case 3:StuSelectSubFin

21、d(head);break;default:decide='n'break;void StuSelectErg(Student *head)/学生成绩管理系统的遍历函数,由查找函数调用Student *p=(Student *)malloc(sizeof(Student);p=head->next;int i=1;while(p!=NULL)printf(" 第 %d 位学生信息:n",i);StuOutput(p);p=p->next;i+;void StuSelectNumFind(Student *head)/学生成绩管理系统的查找子系统,

22、有查找函数调用int num;printf(" 输入想要查找学生的学生号:n");scanf("%d",&num);Student *p=(Student *)malloc(sizeof(Student);p=head->next;int i=1;while(p!=NULL)if(num=p->num)StuOutput(p);i+;p=p->next;if(i=1)printf(" 没有该学生信息");WORD 完美格式下载可编辑专业资料void StuSelectSubFind(Student *head

23、) /学生成绩管理系统的按科目查找函数,由查找函数调用char Sub10;printf(" 输入想要查找科目:n");scanf("%s",Sub);Student *p=(Student *)malloc(sizeof(Student);p=head->next;int i=1;while(p!=NULL)if(!strcmp(Sub,p->subject)StuOutput(p);i+;p=p->next;if(i=1)printf(" 没有该学生信息");void StuAlter(Student *head

24、)/ 学生成绩管理系统的修改函数,由主函数调用int num;printf(" 输入想要查找学生的学生号:n");scanf("%d",&num);char Sub10;printf(" 输入想要查找科目:n");scanf("%s",Sub);Student *p=(Student *)malloc(sizeof(Student);p=head->next;int i=1;while(p!=NULL)if(num=p->num&&!strcmp(Sub,p->subjec

25、t)printf(" 输入修改成绩:n");scanf("%d",&p->grade);printf(" 修改成功 n");i+;p=p->next;if(i=1)WORD 完美格式下载可编辑专业资料printf(" 没有该学生信息");void StuInsert(Student *head)/ 学生成绩管理系统的插入函数,由主函数调用Student *point=(Student *)malloc(sizeof(Student);point=head->next;while(point

26、->next!=NULL)point=point->next;/ 找到尾结点char decide='y'/定义 while 变量,函数是否继续进行int num;/ 定义 switch 变量,函数跳转到哪个子函数while(decide!='n')printf("*n");printf("*1头插2 尾插3 退出*n");printf("*n");scanf("%d",&num);Student *p=(Student *)malloc(sizeof(Stude

27、nt);switch(num)case 1:StuImport(head,p);p->next=head->next;head->next=p;printf(" 插入成功 n");break;case 2:StuImport(head,p);point->next=p;p->next=NULL;printf(" 插入成功 n");break;default:decide='n'break;void StuDelect(Student *head)/学生成绩管理系统的删除函数,由主函数调用int num;WORD 完美格式下载可编辑专业资料printf(" 输入想要删除学生的学生号:n");scanf("%d",&num);char Sub10;printf(" 输入想要删除科目:n");scanf("%s",Sub);Student *p=(Student *)malloc(sizeof(Student);p->next=head->next;int i=1;while(p->next!=NULL)if(num=p->next->num&&!strcmp(Sub

温馨提示

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

评论

0/150

提交评论