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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

学生成绩管理系统.docx

1、学生成绩管理系统学 生 管 理 系 统 学生成绩管理系统学 院 计算机科学与技术 专 业 计算机科学与技术 学 号 110341202 学 生 姓 名 陈格 指导教师姓名 沈中林 提 目 难 度 综合题 2013 年 6月 1 日一、题目1) 实现对学生信息的查找、添加、删除、修改、浏览、保存、从文件读取功能。2) 使用结构体对学生信息的存储。3) 使用哈希表实现对学生信息的查找、添加、删除、修改、浏览等操作。4) 熟悉使用哈希法,建立哈希表,实现对姓名进行散列法查找。5) 使用文件完成数据的存储与读取,要求每次运行某个模块时将数据读入结构体中,并提供保存选项,将结构体中的数据保存在文件中。二

2、、问题分析及求解思路(1)数据结构 学生成绩信息:typedef struct studentscore char name10; /定义姓名的字符数组 char num20; /定义学号的字符数组 struct subject char subname20;/定义学科名的字符数组float score; /保存学生各科成绩sub5; /共五门课 double sum; /总分 struct studentscore *next;STUCORE;(2)本系统涉及的知识点结构体、数组、循环、函数、指针、链表、文件操作。(3)原理除留余数法: 关键字被某个不大于哈希表长m的数P除后所得余数为哈希地

3、址。 H(key)=key MOD P (P=m)随机探测再散列法:选择一个随机函数,取关键字的随机函数值为它的哈希地址,即 Hi=random(key) MOD P (Pnum,no);printf(请输入学生姓名:);scanf(%s,stu-name); printf(请输入第一门课学科名:);scanf(%s,stu-sub0.subname); printf(请输入该课成绩:);scanf(%f,&stu-sub0.score);printf(请输入第二门课学科名:);scanf(%s,stu-sub1.subname);printf(请输入该课成绩:);scanf(%f,&stu-

4、sub1.score);printf(请输入第三门课学科名:);scanf(%s,stu-sub2.subname);printf(请输入该课成绩:);scanf(%f,&stu-sub2.score);printf(请输入第四门课学科名:);scanf(%s,stu-sub3.subname);printf(请输入该课成绩:);scanf(%f,&stu-sub3.score);printf(请输入第五门课学科名:);scanf(%s,stu-sub4.subname);printf(请输入该课成绩:);scanf(%f,&stu-sub4.score);stu-sum=stu-sub1.s

5、core+stu-sub2.score+stu-sub3.score+stu-sub4.score+stu-sub0.score;getchar();printf(tt输入学生信息完成。n);while(p-next!=NULL)p=p-next;p-next=stu;p=stu;p-next=NULL;printf(n添加完成后请去往文件管理保存!nn是否继续添加学生信息?(y/n):n); while(k=getchar()=y);getchar(); system(cls);三:删除学生成绩信息函数(void del_score())1)函数原形:void del_score()2)功

6、能:利用strcmp函数、do while、while循环结构通过学号找到要删除的学生并利用链表执行删除操作。将信息保存在内存中建立的链表里。3)变量及类型: STUCORE *p,*q; 定义结构体指针 char no10; 定义输入的待比较变量 char k,ch; 用来接收输入的(y/n)以便通过do while判断是否删除信息p=head_2; 将结构体下定义的头指针head_2赋给p4)说明:执行完删除函数后,会在键盘缓冲区中保存回车键,后面再对字符型变量赋值时,会将缓冲区中的回车键当成数据存入变量中,所以要在某些输入语句后面加getchar()函数。并在函数调用结束时利用syste

7、m(cls)执行清屏操作。删除完成后需要去往文件操作保存。void del_score()/删除学生成绩信息 STUCORE *p,*q;char no10;char k,ch; Do p=head_2;printf(tt删除学生的详细资料 nnn); printf(请输入要删除学生的学号:);scanf(%s,no); while(strcmp(p-num,no)!=0&p-next!=NULL) q=p; p=p-next; if(strcmp(p-num),no)=0)printf(要删除的学生成绩信息:);printf(学号:%sn,p-num);printf(姓名:%sn,p-nam

8、e);printf(%s 成绩: %fn,p-sub0.subname,p-sub0.score);printf(%s 成绩: %fn,p-sub1.subname,p-sub1.score);printf(%s 成绩: %fn,p-sub2.subname,p-sub2.score);printf(%s 成绩: %fn,p-sub3.subname,p-sub3.score);printf(%s 成绩: %fn,p-sub4.subname,p-sub4.score);printf(总分:%lfn,p-sum);getchar();printf(n确定删除吗?y/n?nn);ch=getch

9、ar();if(ch=y)q-next=p-next;printf(nttt已删除该学生nn);else printf(nttt没有该学生nn);getchar(); printf(n删除完成后请去往文件管理保存!nn是否继续删除其它学生信息?(y/n?):n);k=getchar();while(k=y);getchar();system(cls);四:修改学生成绩信息函数(void modify_score())1)函数原形:void modify_score()2)功 能:利用strcmp函数、do while、while循环结构通过学号找到要修改的学生并利用链表执行修改操作。并将修改后

10、的信息保存在内存中建立的链表里。3)变量及类型: STUCORE *p; 定义结构体指针 char no10; 定义输入的待比较变量 char k; 用来接收输入的(y/n)以便通过do while判断是否继续修改信息p=head_2; 将结构体下定义的头指针head_2赋给p4)说明:执行完修改函数后,会在键盘缓冲区中保存回车键,后面再对字符型变量赋值时,会将缓冲区中的回车键当成数据存入变量中,所以要在某些输入语句后面加getchar()函数。并在函数调用结束时利用system(cls)执行清屏操作。修改完成后需要去往文件操作保存。void modify_score()/修改学生成绩信息sy

11、stem(cls);STUCORE *p;char no30;char k;dop=head_2;printf(tt修改学生的详细资料n);printf(输入学生学号:);scanf(%s,no);while(strcmp(p-num,no)!=0&p-next!=NULL) p=p-next;if(strcmp(p-num),no)=0)printf(要修改的学生的详细资料:n);printf(学号:%sn,p-num);printf(姓名:%sn,p-name);printf(%s 成绩: %fn,p-sub0.subname,p-sub0.score);printf(%s 成绩: %fn

12、,p-sub1.subname,p-sub1.score);printf(%s 成绩: %fn,p-sub2.subname,p-sub2.score);printf(%s 成绩: %fn,p-sub3.subname,p-sub3.score);printf(%s 成绩: %fn,p-sub4.subname,p-sub4.score);printf(总分:%lfn,p-sum);printf(ntt*根据提示输入修改后的信息*nn); printf(输入新的学生的成绩信息:n);printf(请输入新的学生学号:);scanf(%s,p-num);printf(请输入新的学生姓名:);sc

13、anf(%s,p-name);printf(请输入第一门课学科名:);scanf(%s,stu-sub0.subname); printf(请输入该课成绩:);scanf(%f,&stu-sub0.score);printf(请输入第二门课学科名:);scanf(%s,stu-sub1.subname);printf(请输入该课成绩:);scanf(%f,&stu-sub1.score);printf(请输入第三门课学科名:);scanf(%s,stu-sub2.subname);printf(请输入该课成绩:);scanf(%f,&stu-sub2.score);printf(请输入第四门课

14、学科名:);scanf(%s,stu-sub3.subname);printf(请输入该课成绩:);scanf(%f,&stu-sub3.score);printf(请输入第五门课学科名:); scanf(%s,stu-sub4.subname);printf(请输入该课成绩:);scanf(%f,&stu-sub4.score);stu-sum=stu-sub1.score+stu-sub2.score+stu-sub3.score+stu-sub4.score+stu-sub0.score;else printf(tt没有此学生信息!nn);getchar();printf(n修改完成后请

15、去往文件管理保存!nn是否继修改学生信息?(y/n):n);k=getchar();while(k=y);getchar();system(cls);五:按学号查找学生成绩信息函数(void search_num())1)函数原形:void search_num()2)功 能:利用strcmp函数、do while、while循环结构通过学号找到要查找的学生并将该学生成绩信息显示出来。3)变量及类型: STUCORE *p; 定义结构体指针 char no10; 定义输入的待比较变量 char k;用来接收输入的(y/n)以便通过do while判断是否继续利用学号查询信息int flag;

16、定义一个整型变量来判断所查找的学生是否存在文件中p=head_2; 将结构体下定义的头指针head_2赋给p4)说明:执行完查询函数后,会在键盘缓冲区中保存回车键,后面再对字符型变量赋值时,会将缓冲区中的回车键当成数据存入变量中,所以要在某些输入语句后面加getchar()函数。并在函数调用结束时利用system(cls)执行清屏操作。void search_num()/按学号查找学生成绩信息STUCORE *p;char no10;char k;int flag;dop=head_2;flag=0;printf(请输入要查找学生的学号:);scanf(%s,no);while(p!=NULL

17、)if (strcmp(p-num,no)=0)printf(要查询的学生详细资料:n);printf(学号:%sn,p-num);printf(姓名:%sn,p-name);printf(%s 成绩: %fn,p-sub0.subname,p-sub0.score);printf(%s 成绩: %fn,p-sub1.subname,p-sub1.score);printf(%s 成绩: %fn,p-sub2.subname,p-sub2.score);printf(%s 成绩: %fn,p-sub3.subname,p-sub3.score);printf(%s 成绩: %fn,p-sub4

18、.subname,p-sub4.score);printf(总分:%lfn,p-sum);p=p-next;flag=1;else p=p-next;if(flag=0) printf(nttt没有该学生nn);getchar();printf(n是否继续查找其它学生信息?y/n?n);k=getchar();while(k=y);getchar();printf(ntt查看完毕!按任意键返回);getchar();system(cls);六:按姓名查找学生成绩函数(void search_name ())1)函数原形:void search_name()2)功 能:利用strcmp函数、do

19、 while、while循环结构通过姓名找到要查找的学生并将该学生成绩信息显示出来。(包括同名的学生)3)变量及类型: STUCORE *p; 定义结构体指针 char no10; 定义输入的待比较变量 char k;用来接收输入的(y/n)以便通过do while判断是否继续利用姓名查询信息int flag; 定义一个整型变量来判断所查找的学生是否存在文件中p=head_2; 将结构体下定义的头指针head_2赋给p4)说明:执行完查询函数后,会在键盘缓冲区中保存回车键,后面再对字符型变量赋值时,会将缓冲区中的回车键当成数据存入变量中,所以要在某些输入语句后面加getchar()函数。并在函

20、数调用结束时利用system(cls)执行清屏操作。void search_name()/按姓名查找学生成绩STUCORE *p;char no10;char k;int flag;dop=head_2;flag=0;printf(请输入要查找学生的姓名:);scanf(%s,no);while(p!=NULL)if (strcmp(p-name,no)=0)printf(要查询的学生详细资料:n);printf(学号:%sn,p-num);printf(姓名:%sn,p-name);printf(%s 成绩: %fn,p-sub0.subname,p-sub0.score);printf(%

21、s 成绩: %fn,p-sub1.subname,p-sub1.score);printf(%s 成绩: %fn,p-sub2.subname,p-sub2.score);printf(%s 成绩: %fn,p-sub3.subname,p-sub3.score);printf(%s 成绩: %fn,p-sub4.subname,p-sub4.score);printf(总分:%lfn,p-sum);p=p-next;flag=1;else p=p-next;if(flag=0) printf(nttt没有该学生nn);getchar();printf(n是否继续查找其它学生信息?y/n?n)

22、;k=getchar();while(k=y);getchar();printf(ntt查看完毕!按任意键返回);getchar();system(cls);七:查找学生成绩信息函数void search_score()/查找学生成绩信息system(cls);int a;printf(tt*n);printf(tt*n);printf(ttt1:按学号查找。n);printf(ttt2:按姓名查找。n);printf(ttt3:退出。n);printf(tt*n);printf(tt*n);printf(ntt输入一个有效的数字,选择你要做的操作:n);scanf(%d,&a);switch

23、(a)case 1:search_num();break;case 2:search_name();break;case 3:score();break;default:printf(ttt错误的菜单选项nn);break;八:学生成绩管理函数void score()/学生成绩管理system(cls);int a;printf(tt*学生管理系统*n);printf(tt*n);printf(ttt1:查找成绩信息。n);printf(ttt2:添加成绩信息。n);printf(ttt3:删除成绩信息。n);printf(ttt4:修改成绩信息。n);printf(ttt5:返回。n);printf(tt*n);printf(tt*n);printf(ntt输入一个有效的数字,选择你要做的操作:n);scanf(%d

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

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