



版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、专业资料学生成绩管理系统一、实验目的1. 通过此次课程设计中学生成绩管理系统的题目 ,掌握链表等数据结构的基本操作方面的知识 ,并能灵活的解决一些基本的问题 ,加深对其性质及各项操作的理解;2. 将所学数据结构方面的知识与一门具体的语言 C 语言来进行实现,感受数据结构的强大作用,加深理解。二、试验要求管理系统中有五个要求:输入查找修改插入删除存储( 1) 输入要求:能够通过键盘输入和文件输入两种( 2) 查找要求:能够根据学生号查找单个学生的信息,也可以遍历所有学生信息( 3) 修改要求:能够根据学生号修改单个学生所有信息( 4) 插入要求:能够实现头插和尾插( 5) 删除要求:能够根据学生
2、号删除单个学生信息( 6) 存储要求:通过链表存储所有信息三、算法的思想与算法实现步骤1. 基本思想通过链表数据类型进行基本操作,主要有三个模块:分别是主函数模块、主要操作函数及基本操作函数。其中,主函数负责其他子函数的调用实现以及基本界面的操作主要函数包括:void StuInput(Student *);/ 学生成绩管理系统的输入函数,由主函数调用void StuSelect(Student *);/ 学生成绩管理系统的查找函数,由主函数调用WORD 完美格式下载可编辑专业资料void StuAlter(Student *);/ 学生成绩管理系统的修改函数,由主函数调用void StuIn
3、sert(Student *);/ 学生成绩管理系统的插入函数,由主函数调用void StuDelect(Student *);/ 学生成绩管理系统的删除函数,由主函数调用void StuSave(Student *);/ 学生成绩管理系统的存储函数,由主函数调用基本操作函数:void StuOutput(Student *p);/ 输出函数int StuImport(Student *head,Student *p);/ 输入函数void StuInputHand(Student *head);/ 学生成绩管理系统的手动输入函数,由输入函数调用void StuInputFile(Studen
4、t *head);/ 学生成绩管理系统的文件输入函数,由输入函数调用void StuSelectErg(Student *head);/ 学生成绩管理系统的遍历函数,由查找函数调用void StuSelectNumFind(Student *head);/ 学生成绩管理系统的按学号查找函数,由查找函数调用void StuSelectSubFind(Student *head);/ 学生成绩管理系统的按科目查找函数,由查找函数调用2. 实现步骤WORD 完美格式下载可编辑专业资料首先,分析题目要求划分实现模块,定义基本数据类型,诸如结构体、链表等;其次,针对上述的基本操作实现具体需要进行的操作,
5、具体实现每个环节需要进行的基本操作,即具体编写每个小函数实现功能;最后,编写主函数对每个实现进行按需调用,实现操作。3.流程图mainStuMainStuInputStuSelectStuAlterStuInsertStuDelectStuSaveStuInputStuInputStuSelectEStuSelectNStuSelectSubHandFilergumFindFind四代码:#include<stdio.h>#include<malloc.h>#include<string.h>struct Studentchar name10;char su
6、bject10;int num;int grade;Student *next;void StuMain();/ 学生成绩管理系统的主函数,由main函数调用WORD 完美格式下载可编辑专业资料void StuInput(Student *);/ 学生成绩管理系统的输入函数,由主函数调用void StuSelect(Student *);/ 学生成绩管理系统的查找函数,由主函数调用void StuAlter(Student *);/ 学生成绩管理系统的修改函数,由主函数调用void StuInsert(Student *);/ 学生成绩管理系统的插入函数,由主函数调用void StuDelec
7、t(Student *);/ 学生成绩管理系统的删除函数,由主函数调用void StuSave(Student *);/ 学生成绩管理系统的存储函数,由主函数调用void StuOutput(Student *p);/ 输出函数int StuImport(Student *head,Student *p);/ 输入函数void StuOutput(Student *p)/ 打印函数,将链表的该节点信息输出printf(" 学生姓名: ");printf("%s",p->name);printf(" 学生号: ");printf(
8、"%d",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(" 学生姓名:
9、 n");scanf("%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
10、");return 1;Opinion=Opinion->next;printf(" 学生成绩: n");WORD 完美格式下载可编辑专业资料scanf("%d",&p->grade);return 0;void main()StuMain();void StuMain()char decide='y'/ 定义 while变量, 函数是否继续进行int num=1;/ 定义 switch变量,函数跳转到哪个子函数Student *head;/ 定义链表的头指针head=(Student *)malloc(si
11、zeof(Student);/ 给头指针开辟空间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:
12、StuAlter(head);break;case 4:StuInsert(head);break;case 5:StuDelect(head);break;case 6:StuSave(head);break;default:WORD 完美格式下载可编辑专业资料decide='n'break;void StuInputHand(Student *head);/ 学生成绩管理系统的手动输入函数,由输入函数调用void StuInputFile(Student *head);/ 学生成绩管理系统的文件输入函数,由输入函数调用void StuInput(Student *head)
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:StuInputF
14、ile(head);default:decide='n'break;voidStuInputHand(Student*head)/ 学生成绩管理系统的手动输入函数,由输入函数调用if(head->next=NULL)Student*point=(Student*)malloc(sizeof(Student);/ 链表中WORD 完美格式下载可编辑专业资料最后一个节点,只在该函数中存在point->next=NULL;int decide=1;while(decide!=0)Student *p=(Student *)malloc(sizeof(Student);p-
15、>next=NULL;StuImport(head,p);if(head->next=NULL)head->next=p;point=p;elsepoint->next=p;point=p;printf(" 是否继续: 1/0n");scanf("%d",&decide);elseprintf(" 管理系统中已存在信息,若想输入学生信息,请转插入子系统");void StuInputFile(Student *head)/ 学生成绩管理系统的文件输入函数,由输入函数调用if(head->next!
16、=NULL)printf(" 学生管理系统中已有信息,请跳转到插入选项 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*Opin
17、ion=(Student*)malloc(sizeof(Student);/ 用来WORD 完美格式下载可编辑专业资料判断输入节点中学生号是否有重复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)
18、printf(" 该文件中有重复学生信息,请验明再传输n");head->next=NULL;return ;Opinion=Opinion->next;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;
19、fclose(fp);printf(" 传输成功 n");voidStuSelectErg(Student*head);/ 学生成绩管理系统的遍历函数,由查找函数调用void StuSelectNumFind(Student *head);/ 学生成绩管理系统的按学号查找函数,由查找函数调用void StuSelectSubFind(Student *head);/ 学生成绩管理系统的按科目查找函数,由查WORD 完美格式下载可编辑专业资料找函数调用void StuSelect(Student *head)/ 学生成绩管理系统的查找函数,由主函数调用char decide=
20、'y'/ 定义 while变量, 函数是否继续进行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;case 2:StuSelectNumFind(head);break;case 3:Stu
21、SelectSubFind(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+;voidStuSelectNumFind(Student*head)/ 学生
22、成绩管理系统的查找子系统,有查找WORD 完美格式下载可编辑专业资料函数调用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(" 没有该学生信息");void StuSelectSubFind(
23、Student *head)/ 学生成绩管理系统的按科目查找函数,由查找函数调用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(
24、Student *head)/ 学生成绩管理系统的修改函数,由主函数调用int num;WORD 完美格式下载可编辑专业资料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&am
25、p;&!strcmp(Sub,p->subject)printf(" 输入修改成绩:n");scanf("%d",&p->grade);printf(" 修改成功 n");i+;p=p->next;if(i=1)printf(" 没有该学生信息");void StuInsert(Student *head)/ 学生成绩管理系统的插入函数,由主函数调用Student *point=(Student *)malloc(sizeof(Student);point=head->nex
26、t;while(point->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(
27、sizeof(Student);switch(num)case 1:StuImport(head,p);p->next=head->next;WORD 完美格式下载可编辑专业资料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;printf(" 输入想要删除学生的学生号:n");scanf("%d",&num);char Sub10;printf(" 输入想要删除科目:n");scanf("%s",Sub);Student
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030中国滤水器行业市场发展趋势与前景展望战略研究报告
- 2025-2030中国淬火油添加剂行业市场现状分析及竞争格局与投资发展研究报告
- 2025-2030中国液压盘式制动器行业市场发展趋势与前景展望战略研究报告
- 2025-2030中国润唇膏行业供需形势及企业创新战略研究报告
- 2025-2030中国消毒凝胶行业市场发展趋势与前景展望战略分析研究报告
- 兼职聘任合同范例
- 卖楼房定金合同范例
- 劳务混凝土清包合同标准文本
- 原料辅料采购合同范例
- 水轮机紧急停机操作流程考核试卷
- 外语学习焦虑与对策
- 2023年10月自考00054管理学原理真题及答案含评分标准
- 新员工入职信息表模板
- 山东省实验科创班试题2022
- 标准化班组建设演示幻灯片
- 文创产品设计开发(new)
- 环境及理化因素损伤课件
- 10kV配电安装工程施工方案
- 《逻辑学(第四版)》课后答案 姜全吉 秦存钢
- 电机与变压器(第6版)PPT完整全套教学课件
- 某医学院医学生肾病科疾病教案-肾小球疾病
评论
0/150
提交评论