ImageVerifierCode 换一换
格式:DOCX , 页数:17 ,大小:18.03KB ,
资源ID:11543246      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/11543246.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数据结构之学生成绩管理系统.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数据结构之学生成绩管理系统.docx

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

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

3、 StuInsert(Student *); /学生成绩管理系统的插入函数,由主函数调用 学生成绩管理系统的删除函数,由主函数调用void StuDelect(Student *); / void StuSave(Student *); /学生成绩管理系统的存储函数,由主函数调用 基本操作函数: void StuOutput(Student *p); /输出函数 int StuImport(Student *head,Student *p); /输入函数 void StuInputHand(Student *head); /学生成绩管理系统的手动输入函数,由输入函数调用 void StuInp

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

5、,具体实现每个环节需要进行的基本操作,即具体编写每个小函数实现功能; 最后,编写主函数对每个实现进行按需调用,实现操作。 流程图3. main StuMain StuSave StuInsert StuDelect StuInput StuSelect StuAlter StuSelectSubStuSelectEStuSelectNStuInputStuInpuFindrgHandumFindFile 四代码:#include #include #include struct Student char name10; char subject10; int num; int grade; S

6、tudent *next; ; main函数调用 /学生成绩管理系统的主函数,由 void StuMain(); /学生成绩管理系统的输入函数,由主函数调用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); / void StuOutput(Student *p) /打印函数,将链表的该节点信息输出 牰湩晴尨学生姓名:); printf(%s ,p-name); 牰湩晴尨学生号:); printf(%d ,p-num); 牰湩晴尨科目: ); printf(%s ,p-subject); 牰湩晴尨学生成绩:); printf(%d n,p-gra

8、de); int StuImport(Student *head,Student *p) Student *Opinion=(Student *)malloc(sizeof(Student); /用来判断输入节点中学生号是否有重复 Opinion=head-next; 牰湩晴尨学生姓名:n); scanf(%s,p-name); 牰湩晴尨学生号:n); scanf(%d,&p-num); 牰湩晴尨科目:n); scanf(%s,p-subject); if(Opinion!=NULL) if(Opinion-num=p-num&!strcmp(Opinion-subject,p-subject

9、) 牰湩晴尨该学生这门科目已有成绩,请重新输入n); return 1; Opinion=Opinion-next; 牰湩晴尨学生成绩:n); scanf(%d,&p-grade); return 0; void main() StuMain(); void StuMain() char decide=y; /定义while变量,函数是否继续进行 变量,函数跳转到哪个switch定义/ num=1; int 子函数 Student *head; /定义链表的头指针 head=(Student *)malloc(sizeof(Student); /给头指针开辟空间 head-next=NULL;

10、 /初始化头指针 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); break; case 4: StuInsert(head); break; case 5: StuDelect(head); brea

11、k; case 6: StuSave(head); break; default: decide=n; break; ; void StuInputHand(Student *head); /学生成绩管理系统的手动输入函数,由输入函数调用 void StuInputFile(Student *head); /学生成绩管理系统的文件输入函数,由输入函数调用 学生成绩管理系统的输入函数,由主函数调用/ void StuInput(Student *head) char decide=y; /定义while变量,函数是否继续进行 int num; /定义switch变量,函数跳转到哪个子函数 whi

12、le(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); default: decide=n; break; void StuInputHand(Student *head) /学生成绩管理系统的手动输入函数,由输入函数调用 if(head-next=NULL) Student *point=(Student *)malloc

13、(sizeof(Student); /链表中最后一个节点,只在该函数中存在 point-next=NULL; int decide=1; while(decide!=0) Student *p=(Student *)malloc(sizeof(Student); p-next=NULL; StuImport(head,p); if(head-next=NULL) head-next=p; point=p; else point-next=p; point=p; 牰湩晴尨是否继续:1/0n); scanf(%d,&decide); else 牰湩晴尨管理系统中已存在信息,若想输入学生信息,请转插

14、入子系统); void StuInputFile(Student *head) /学生成绩管理系统的文件输入函数,由输入函数调用 if(head-next!=NULL) 牰湩晴尨学生管理系统中已有信息,请跳转到插入选项n); return ; FILE *fp; 牰湩晴尨请输入文件名(包括物理地址)n); char filename10; scanf(%s,filename); if(fp=fopen(filename,)=NULL) printf(can not open filen); return; Student *point=(Student *)malloc(sizeof(Stud

15、ent); Student *Opinion=(Student *)malloc(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) 牰湩晴尨该文件中有重复学生信息,请验明再传输n)

16、; head-next=NULL; return ; Opinion=Opinion-next; if(head-next=NULL) head-next=p; point=p; else point-next=p; point=p; ; Opinion=head-next; while(Opinion-next!=NULL) Opinion=Opinion-next; if(Opinion-next-next=NULL) Opinion-next=NULL; ; fclose(fp); 牰湩晴尨传输成功n); void StuSelectErg(Student *head); /学生成绩管理

17、系统的遍历函数,由查找函数调用 void StuSelectNumFind(Student *head); /学生成绩管理系统的按学号查找函数,由查找函数调用 void StuSelectSubFind(Student *head); /学生成绩管理系统的按科目查找函数,由查找函数调用 void StuSelect(Student *head) /学生成绩管理系统的查找函数,由主函数调用 char decide=y; /定义while变量,函数是否继续进行 int num; /定义switch变量,函数跳转到哪个子函数 while(decide!=n) printf( *n); printf(

18、 * 1 遍历 2 学号查找 3 科目查找 4 退出 *n); printf( *n); scanf(%d,&num); switch(num) case 1: StuSelectErg(head); break; case 2: StuSelectNumFind(head); break; case 3: StuSelectSubFind(head); break; default: decide=n; break; void StuSelectErg(Student *head) /学生成绩管理系统的遍历函数,由查找函数调用 Student *p=(Student *)malloc(siz

19、eof(Student); p=head-next; int i=1; while(p!=NULL) 牰湩晴尨第%d位学生信息:n,i); StuOutput(p); p=p-next; i+; void StuSelectNumFind(Student *head) /学生成绩管理系统的查找子系统,有查找函数调用 int num; 牰湩晴尨输入想要查找学生的学生号:n); scanf(%d,&num); Student *p=(Student *)malloc(sizeof(Student); p=head-next; int i=1; while(p!=NULL) if(num=p-num

20、) StuOutput(p); i+; p=p-next; if(i=1) ); 没有该学生信息牰湩晴尨 void StuSelectSubFind(Student *head) /学生成绩管理系统的按科目查找函数,由查找函数调用 char Sub10; 牰湩晴尨输入想要查找科目: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(

21、i=1) 牰湩晴尨没有该学生信息); void StuAlter(Student *head) /学生成绩管理系统的修改函数,由主函数调用 int num; 牰湩晴尨输入想要查找学生的学生号:n); scanf(%d,&num); char Sub10; 牰湩晴尨输入想要查找科目: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-subject) 牰湩晴尨输入修改成绩:n); scanf(

22、%d,&p-grade); 牰湩晴尨修改成功n); i+; p=p-next; if(i=1) 牰湩晴尨没有该学生信息); void StuInsert(Student *head) /学生成绩管理系统的插入函数,由主函数调用 Student *point=(Student *)malloc(sizeof(Student); point=head-next; while(point-next!=NULL) point=point-next; /找到尾结点 char decide=y; /定义while变量,函数是否继续进行 int num; /定义switch变量,函数跳转到哪个子函数 whi

23、le(decide!=n) printf( *n); printf( * 1 头插 2 尾插 3 退出 *n); printf( *n); scanf(%d,&num); Student *p=(Student *)malloc(sizeof(Student); switch(num) case 1: StuImport(head,p); p-next=head-next; head-next=p; 牰湩晴尨插入成功n); break; case 2: StuImport(head,p); point-next=p; p-next=NULL; 牰湩晴尨插入成功n); break; defaul

24、t: decide=n; break; void StuDelect(Student *head) /学生成绩管理系统的删除函数,由主函数调用 int num; 牰湩晴尨输入想要删除学生的学生号:n); scanf(%d,&num); char Sub10; 牰湩晴尨输入想要删除科目: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,p-next-subject)

25、 StuOutput(p-next); 牰湩晴尨是否删除:1/0n); scanf(%d,&i); if(num=head-next-num&!strcmp(Sub,head-next-subject) head-next=head-next-next; else p-next=p-next-next; i=2; 牰湩晴尨删除成功n); break; p=p-next; if(i=1) 牰湩晴尨没有该学生信息n); void StuSave(Student *head) /学生成绩管理系统的存储函数,由主函数调用 FILE *fp; char filename10; 牰湩晴尨请输入存储文件名(包括物理地址)n); scanf(%s,filename); Student *p=(Student *)malloc(sizeof(Student); p=head-next; if(fp=fopen(filename,w)=NULL) printf(cannot open file); return; printf(input data:/n); while(p!=NULL) fwrite(p,sizeof(St

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1