ImageVerifierCode 换一换
格式:DOC , 页数:26 ,大小:144.50KB ,
资源ID:3107033      下载积分:8 金币
验证码下载
登录下载
邮箱/手机:
验证码: 获取验证码
温馨提示:
支付成功后,系统会自动生成账号(用户名为邮箱或者手机号,密码是验证码),方便下次登录下载和查询订单;
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

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

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  
声明  |  会员权益     获赠5币     写作写作

1、填表:    下载求助     留言反馈    退款申请
2、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
3、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
4、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
5、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【人****来】。
6、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
7、本文档遇到问题,请及时私信或留言给本站上传会员【人****来】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。

注意事项

本文(C语言程序设计学生成绩管理系统2.doc)为本站上传会员【人****来】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4008-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

C语言程序设计学生成绩管理系统2.doc

1、题目学生成绩管理系统一、 功能1. 每一条记录包括一个学生的学号、姓名、语数外3门成绩、平均成绩2. 输入功能:可以一次完成有限(不大于2000)条记录的输入3. 显示功能:完成全部学生记录的显示4. 查找功能:完成按学号或姓名查找学生记录,并显示5. 排序功能:按学生学号或平均成绩进行排序6. 保存功能:将学生记录保存在Information.txt文件中7. 读取功能:将保存在文件中的学生记录读取出来8. 有一个清晰美观界面来调用各个功能二、 要求1. 整个系统均用C语言实现2. 利用指针、结构体数组或链表来实现学生成绩的数据结构设计3. 系统具有输入、显示、查询、修改、删除、排序、保存、

2、读取等基本功能4. 系统的各个功能模块都用函数的形式来实现5. 可以将学生成绩信息保存在文件中6. 可以将学生信息从文件中读取出来三、 设计内容整个学生成绩管理系统由主函数及12个子函数构成,实现学生成绩录入、显示、查询、排序、修改、保存、读取和删除共8项功能,各函数功能相信说明如下:1.主函数 int main()利用无限次循环while和switch实现对各个函数的调用,使用时根据输入的数字来调用相应的函数2. 显示主菜单函数void DispMainMenu()这是一个无参函数,用来显示程序主菜单,用户通过输入对应功能前的数字来实现相应的功能3. 学生成绩录入函数int Informat

3、ionInput(STUDENT stu,int cn)这是一个有返回值的有参函数,形参STUDENT stu为结构体数组指针,表示存有学生信息的结构体数组的头指针,形参int cn为当前学生人数,返回值为当前学生人数。其作用是输入有限个学生的成绩信息。算法:定义3个变量,num用来存放本次录入学生人数,i、j为循环变量。由键盘输入学生人数赋值给num,判断num是否大于MAX_NUM(2000),若大于,则提示输入人数太多,函数返回值0;若不大于,则依次输入num个学生信息。4. 显示所有学生信息函数void DispInformation(STUDENT stu,int MAX)这是一个无

4、返回值的有参函数,形参STUDENT stu为结构体数组指针,表示存有学生信息的结构体数组的头指针,形参int MAX为为当前学生人数。其作用是现实当前所有学生成绩信息。5. 查找指定学号的学生的信息函数int FindStudentnumber(STUDENT stu,int findnumber,int MAX)这是一个有返回值的有参函数,形参STUDENT stu为结构体数组指针,表示存有学生信息的结构体数组的头指针,形参int MAX为当前学生人数。其作用是根据指定学号查询学生成绩信息,若查找到指定学号学生信息,则返回该学生学号,否则返回-1。算法:6. 查找指定姓名的学生的信息函数i

5、nt FindStudentname(STUDENT stu,char findname,int MAX)这是一个有返回值的有参函数,形参STUDENT stu为结构体数组指针,表示存有学生信息的结构体数组的头指针,形参int MAX为当前学生人数。其作用是根据指定姓名查询学生成绩信息,若查找到指定姓名学生信息,则返回该学生学号,否则返回-1。算法:7. 学生信息查询函数void QueryInformation(STUDENT stu,int MAX)这是一个无返回值的有参函数,形参STUDENT stu为结构体数组指针,表示存有学生信息的结构体数组的头指针,形参int MAX为当前学生人数

6、。其作用是可以根据学号或姓名查找到指定学生的成绩信息。算法:定义查询方式字符变量select,指定学号整型变量findnumber,指定姓名字符串数组findname10,整型变量i,循环变量j。调用函数时,屏幕提示选择查询方式,若选择按学号查询,则输入学号后调用查找指定学号的学生的信息函数int FindStudentnumber(STUDENT stu,int findnumber,int MAX)将返回值赋给变量i,若变量i不为-1,则查找成功,输出学生信息,否则在屏幕显示“输入学号不存在”;若选择按姓名查询则输入姓名后调用查找指定姓名的学生的信息函数int FindStudentnam

7、e(STUDENT stu,char findname,int MAX)将返回值赋给i,若变量i不为-1,则查找成功,输出学生信息,否则在屏幕显示“输入学号不存在”。若在选择查询方式时输入除“1”、“2”外的其他字符,则提示“选择错误”。N-S图8. 修改学生信息函数 void EditInformation(STUDENT stu,int MAX)这是一个无返回值的有参函数,形参STUDENT stu为结构体数组指针,表示存有学生信息的结构体数组的头指针,形参int MAX为当前学生人数。其作用是修改或删除指定学生的成绩信息。算法:定义整型变量i、j,j为循环变量;浮点型变量sum,用来寻访

8、总成绩;整形变量findnum用来存放需要修改信息的学生学号;字符变量select用来存放修改方式代号。输入学号后调用查找指定学号的学生的信息函数int FindStudentnumber(STUDENT stu,int findnumber,int MAX)将返回值赋给变量i,若变量i不为-1,则存在该学号学生。在屏幕提示选择修改方式,若选择修改信息,则先在屏幕输出原信息,后按提示依次修改信息;若选择删除信息,则调用删除信息函数void Delete(STUDENT stu,int n,int MAX)删除该学号学生信息。若未查找到指定学号,则在屏幕输出“您输入的学号不存在”。N-S图9.

9、按学号排序函数void SortNum(STUDENT stu,int MAX)这是一个无返回值的有参函数,形参STUDENT stu为结构体数组指针,表示存有学生信息的结构体数组的头指针,形参int MAX为当前学生人数。其作用是用冒泡法将学生成绩信息按学号由小到大排列。算法:定义循环变量i、j,结构体变量p作为中间变量。冒泡法完成排序后,调用显示所有学生信息函数void DispInformation(STUDENT stu,int MAX)在屏幕打印出排序后的学生成绩信息。N-S图10. 按平均成绩排序函数void SortScore(STUDENT stu,int MAX)这是一个无返

10、回值的有参函数,形参STUDENT stu为结构体数组指针,表示存有学生信息的结构体数组的头指针,形参int MAX为当前学生人数。其作用是用冒泡法将学生成绩信息按平均成绩由大到小排列。算法:定义循环变量i、j,结构体变量p作为中间变量。冒泡法完成排序后,调用显示所有学生信息函数void DispInformation(STUDENT stu,int MAX)在屏幕打印出排序后的学生成绩信息。N-S图11. 保存数据到文件函数void Save(STUDENT stu,int MAX)这是一个无返回值的有参函数,形参STUDENT stu为结构体数组指针,表示存有学生信息的结构体数组的头指针,

11、形参int MAX为当前学生人数。其作用是将存放在结构体数组中的学生成绩信息保存到文件Information.txt中。算法:定义整型变量i,文件指针*fp。若成功打开文件Information.txt,则用fwrite()将存放在结构体数组中的学生成绩信息保存到文件Information.txt中;若打开失败,则在屏幕输出“can not open file”。N-S图12. 打开数据文件函数int Read(STUDENT stu)这是一个有返回值的有参函数,形参STUDENT stu为结构体数组指针,表示存有学生信息的结构体数组的头指针,返回值为读取到的学生信息个数,即学生人数。其作用是

12、将存放在文件Information.txt中的学生成绩信息存放到结构体数组中。算法:定义整型变量i,文件指针*fp。若成功打开文件Information.txt,则计数变量赋值为0,每完成一次读取,i自加1。若打开失败,则在屏幕输出“can not open file”。N-S图13.删除信息函数void Delete(STUDENT stu,int n,int MAX)这是一个无返回值的有参函数,形参STUDENT stu为结构体数组指针,表示存有学生信息的结构体数组的头指针,形参int n表示血药删除的学生序号,形参int MAX为当前学生人数。其作用是删除第n个学生的信息。算法:定义循环

13、变量i、j,文件指针*fp。打开存有学生成绩信息的文件Information.txt,在屏幕显示源信息。然后将存放在结构体数组中的信息,从第n个开始,之后每一组数据覆盖前一组数据,以达到删除信息的同时又保证结构体数组中信息连续的目的。之后当前学生人数自减1,重新保存数据到文件Information.txt,在屏幕输出当前所有学生信息。N-S图五、调试分析1.运行时输入信息没有按照scanf()函数格式输入,导致程序无法正常继续运行。2.按照正确格式输入完信息后按回车键后出现“烫烫烫烫”字样的乱码,后经检查发现在学生成绩输入函数int InformationInput(STUDENT stu,i

14、nt cn)中调用了显示所有学生信息函数void DispInformation(STUDENT stu,int MAX),而显示所有学生信息函数void DispInformation(STUDENT stu,int MAX)中,语句for (i=0;iMAX;i+)后误按了一个“;”导致不能正常执行循环体,后经考虑,决定删除输入完后显示学生信息和排序的语句。3.经2修改后再次运行,出现了运行结果一闪而过的情况,所以上网查找解决方法。先开始查到的方法是需要添加头文件#include并且在需要停留的地方输入语句“getch();”,再次运行发现运行结果还是一闪而过。再次查询后,将getch()

15、改为“system(pause);”。再次运行能正常显示。4.经3修改后再次运行,在排序部分,发现按照平均成绩排序时是由小到大排序的,不符合实际应用中最常用的由大到小排序,遂进行修改。5.经4修改后,在修改信息时,结果不能正常输入学号,检查代码后发现语句“scanf(%d,&stui.number);”中“stui.number”前漏掉了取地址符号“&”。6.经5修改后,程序能完整运行,但是在查看文件内容是发现信息均为乱码,后有查阅教科书,其解释为fread()和fwrite()一般用于二进制文件的处理。7.程序运行后,界面内容太多,容易混乱,查询后添加清屏函数“system(cls);”六、

16、总结经过这次C语言实践活动,我觉得我的C语言水平相对上学期期末又提高了不少。过去只是对单个知识点较为清楚,如今已经能够形成体系,并且写出有使用价值的程序。虽然程序很小,但是万事都要有个循序渐进、由易到难的过程。另外,这次实践对我通过江苏省计算机等级考试(二级C)也有很大的帮助。过去我们都是软件的使用者,看到的都是软件给我们处理日常事务的便捷之处,如今我们已经能深入后台,自己设计、编写程序了,今后还要躲在易用性和美观上面多下功夫。我相信,这次实践会成为我今后进行编程、开发的良好开端和基础。附程序源代码:/*头文件*/#include#include#include#include#include

17、#define MAX_NUM 2000 /*人数上限2000*/*定义数据结构*/typedef struct studentint number; /*学号*/char name10; /*姓名*/float score3; /*三门课成绩*/float aver; /*平均成绩*/STUDENT;/*函数原型*/void DispMainMenu(); /*显示主菜单*/int InformationInput(STUDENT stu,int cn); /*学生成绩录入*/void DispInformation(STUDENT stu,int MAX); /*显示所有学生信息*/int

18、 FindStudentnumber(STUDENT stu,int findnumber,int MAX); /*查找指定学号的学生的信息*/int FindStudentname(STUDENT stu,char findname,int MAX); /*查找指定姓名的学生的信息*/void QueryInformation(STUDENT stu,int MAX); /*学生信息查询*/void EditInformation(STUDENT stu,int MAX); /*修改学生信息*/void SortNum(STUDENT stu,int MAX); /*按学号排序*/void

19、SortScore(STUDENT stu,int MAX); /*按平均成绩排序*/void Save(STUDENT stu,int MAX); /*保存数据到文件*/int Read(STUDENT stu); /*打开数据文件*/void Delete(STUDENT stu,int n,int MAX); /*删除信息*/*显示主菜单*/void DispMainMenu()printf(*学生成绩管理系统*n);printf( t1.信息录入 t2.按学号排序n);printf( t3.按平均成绩排序 t4.信息修改n);printf( t5.信息查询 t6.保存到数据文件n);p

20、rintf( t7.打开数据文件 t8.显示所有学生信息n);printf( t0.退出);printf(n*n);printf(请选择0-8:); /*显示菜单信息*/*学生成绩录入*/int InformationInput(STUDENT stu,int cn)int num,i,j;float sum=0;printf(n请输入本次录入的学生人数:);scanf(%d,&num);if(numMAX_NUM)printf(您输入的人数太多,大于%d人!n,MAX_NUM);system(pause);return 0;for(i=cn;inum+cn;i+) /*输入num个学生的信息

21、*/printf(请输入第%d个学生的学号:,i+1);scanf(%d,&stui.number);printf( 姓名:);scanf(%s,stui.name);printf( 语数外成绩:);for(j=0;j3;j+)scanf(%f,&stui.scorej);sum=sum+stui.scorej;stui.aver=sum/3;sum=0;system(pause); return (num+cn);/*显示所有学生信息*/void DispInformation(STUDENT stu,int MAX)int i,j;printf(n序号t学号t姓名t语数外成绩tt平均成绩n

22、);for(i=0;iMAX;i+)printf(%dt%dt%st,i+1,stui.number,stui.name);for(j=0;j3;j+)printf(%.2ft,stui.scorej);printf(%.2f,stui.aver);printf(n);printf(n);system(pause);/*查找指定学号的学生的信息*/int FindStudentnumber(STUDENT stu,int findnumber,int MAX)int i;for(i=0;iMAX;i+)if(stui.number=findnumber)break;if(iMAX) /*判断找

23、到的i是否小于MAX,若小于,则执行了break跳出循环,即找到该指定学号的学生*/return i;elsereturn -1;/*查找指定姓名的学生的信息*/int FindStudentname(STUDENT stu,char findname,int MAX)int i;for(i=0;iMAX;i+)if(strcmp(stui.name,findname)=0)break;if(iMAX) /*判断找到的i是否小于MAX,若小于,则执行了break跳出循环,即找到该指定姓名的学生*/return i;elsereturn -1;/*学生信息查询*/void QueryInform

24、ation(STUDENT stu,int MAX)char select;int i,j;int findnumber;char findname10;printf(*请选择查询方式*n);printf( t1.按学号查询;t2.按姓名查询n);printf(*n);printf(请选择1或2:); select=getche();switch(select)case 1:printf(n您选择的是按学号查询n请输入学生的学号:); /*按学号查询*/scanf(%d,&findnumber);if(i=FindStudentnumber(stu,findnumber,MAX)!=-1)pr

25、intf(n查找结果如下:n);printf(n学号t姓名t语数外成绩tt平均成绩n);printf(%dt%st,stui.number,stui.name);for(j=0;j3;j+)printf(%.2ft,stui.scorej); printf(%.2fn,stui.aver);elseprintf(您输入的学号不存在!n);break;case 2:printf(n您选择的是按姓名查询n请输入学生的姓名:); /*按学号查询*/scanf(%s,&findname);if(i=FindStudentname(stu,findname,MAX)!=-1)printf(n查找结果如下

26、:n);printf(n学号t姓名t语数外成绩tt平均成绩n);printf(%dt%st,stui.number,stui.name);for(j=0;j3;j+)printf(%.2ft,stui.scorej); printf(%.2fn,stui.aver);elseprintf(您输入的学号不存在!n);system(pause);break;default:printf(选择错误!n);/*修改学生信息*/void EditInformation(STUDENT stu,int MAX)int i,j;float sum=0;int findnum;char select;prin

27、tf(n请输入学生学号:);scanf(%d,&findnum);if(i=FindStudentnumber(stu,findnum,MAX)!=-1)printf(*请选择修改方式*n);printf(t1.修改信息;t2.删除信息n);printf(*n);printf(请选择1或2:);select=getche();switch(select)case 1:printf(您选择的是修改信息!n);printf(姓 名:%sn,stui.name);printf(原信息:n 学号:%dt语数外成绩:,stui.number);for(j=0;j3;j+) printf(%.2ft,st

28、ui.scorej); printf(t平均成绩:%.2fn,stui.aver);printf(请输入新信息n);printf(学号:t);scanf(%d,&stui.number);printf(姓名:t);scanf(%s,stui.name);printf(语数外成绩:t);for(j=0;j3;j+) scanf(%f,&stui.scorej); sum=sum+stui.scorej; stui.aver=sum/3;break;case 2: printf(您选择的是删除信息!n);Delete(stu,i,MAX);break;elseprintf(您输入的学号不存在!n)

29、; system(pause);/*按学号排序*/void SortNum(STUDENT stu,int MAX) /*冒泡法由小到大排序*/int i,j;STUDENT p;for(i=0;iMAX-1;i+)for(j=0;j=stuj+1.number)p=stuj;stuj=stuj+1;stuj+1=p;printf(按学号排序后:n);DispInformation(stu,MAX);/*按平均成绩排序*/void SortScore(STUDENT stu,int MAX) /*冒泡法由大到小排序*/ int i,j;STUDENT p;for(i=0;iMAX-1;i+)f

30、or(j=0;j=stuj+1.aver)p=stuj;stuj=stuj+1;stuj+1=p;printf(按平均成绩排序后:n);DispInformation(stu,MAX);/*保存数据到文件*/void Save(STUDENT stu,int MAX)int i;FILE *fp;if(fp=fopen(Information.txt,w+)!=NULL)for(i=0;iMAX;i+)fwrite(&stui,sizeof(STUDENT),1,fp);fclose(fp);elseprintf(cannot open file!n);/*打开数据文件*/int Read(S

31、TUDENT stu)int i;int result=-1;FILE *fp;if(fp=fopen(Information.txt,r)!=NULL)i=0;while(fread(&stui,sizeof(STUDENT),1,fp)!=0)i+; /*读取到一个信息时,i作为学生人数自加1*/result=i;fclose(fp);elseprintf(cannot open the file!n);return result;/*删除信息*/void Delete(STUDENT stu,int n,int MAX)FILE *fp;int i,j;if(fp=fopen(Infor

32、mation.txt,rb)=NULL)printf(cannot open the file!n);exit(0);printf(n源信息:n);DispInformation(stu,MAX);for(i=n;iMAX-1;i+)stui.number=stui+1.number;strcpy(stui.name,stui+1.name);for(j=0;j3;j+)stui.scorej=stui+1.scorej;stui.aver=stui+1.aver;MAX-; /*删除一个学生信息后人数MAX自减1*/printf(当前文件内容:n);Save(stu,MAX);DispInf

33、ormation(stu,MAX);/*主函数*/int main()char select;STUDENT stuMAX_NUM;int current_number=0;select=0;while(select!=0)system(cls); /*清屏*/DispMainMenu();select=getche();switch(select)case 0:printf(n您选择的是退出n);system(pause);continue;case 1:printf(n您选择的是信息录入n); current_number=InformationInput(stu,current_numb

34、er);break;case 2:printf(n您选择的是按学号排序n); SortNum(stu,current_number);break;case 3:printf(n您选择的是按平均成绩排序n);SortScore(stu,current_number);break;case 4:printf(n您选择的是信息修改n); EditInformation(stu,current_number);break;case 5:printf(n您选择的是信息查询n); QueryInformation(stu,current_number);system(pause);break; case

35、6:printf(n您选择的是保存到数据文件n); Save(stu,current_number);system(pause);break;case 7:printf(n您选择的是打开数据文件n);if(current_number=Read(stu)=-1)current_number=0;elseDispInformation(stu,current_number);break;case 8:printf(n您选择的是显示所有学生信息n);DispInformation(stu,current_number);break;default:printf(n选择错误,请重新选择!n);system(pause);return 0;

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服