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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

学生成绩管理系统.docx

1、学生成绩管理系统实训报告题 目: 宿舍信息管理系统院 系: 信息科技学院专 业: 通信工程姓 名: 周士杰学 号: 1051100214指导教师: 刘欣日 期: 2011年9月09日桂林电子科技大学信息科技学院目录1. 问题定义.32. 程序设计.32.1总体设计32.2详细设计32.2.1主界面.32.2.2主程序.42.2.3结构体.52.2.4前定义函数.52.2.5输入记录模块.62.2.6修改记录模块.72.2.7删除记录模块.92.2.8查询记录模块.132.2.9排序模块.142.2.10退出模块.163. 主要函数分析.163.1主要函数.163.2 swich()函数163.

2、3 strut()函数.163.4 while()函数174. 函数调试.174.1输入调试.174.2修改调试.184.3查询调试.194.4排序调试.194.5删除调试204.6退出调试215. 总结.21学生成绩管理系统1.问题定义以数组结构为主体设计一个学生成绩管理系统。假设系统只包括学生学号、姓名、数学成绩、英语成绩、计算机成绩、平均成绩。程序主界面如图2.1所示,编译过程将这些假设依依实行。下面将详细介绍程序编译过程以及程序源代码等。2.程序设计2.1总体设计本成绩管理系统采用数组结构,由于不涉及链表和文件系统,程序存在相应弊端性,暂不支持文件录入与保存功能。本程序写入6个模块,分

3、别是增加学生记录、修改学生记录、删除学生记录、查询学生记录、按平均成绩排序和退出系统。 增加学生记录:此模块将写入学生学号、姓名、数学成绩、英语成绩、C语言成绩,同 时系统内部计算出该学生平均成绩。 修改学生记录:此模块可以按学号修改该生写入的信息。由于时间与技术问题,暂时只支持以学号方式修改学生信息。 删除学生记录:此模块根据使用者要求删除某学生信息。 查询学生记录:此模块将列出输入学生的信息,包括学号、姓名、3科成绩和平均分。由于时间与技术问题,暂时只支持以姓名方式查询具体学生信息。 按平均分排序:此模块将输入的学生信息按照平均分高低重新排序学生位置。 退出系统:此模块将以正常方式关闭程序

4、。2.2详细设计2.2.1主界面主界面的设计可谓一个完整程序中最简单的地方,我们所有做的就是尽量美化界面,给使用者一目了然的感觉。主界面如下图2.1所示,界面设计源程序如下:printf(n学生成绩管理系统n);printf(n);printf(菜单n);printf( 1.增加学生记录 2.修改学生记录 n);printf( n);printf( 3.删除学生记录 4.查询学生记录 n);printf( n);printf( 5.按平均分排序 6.退出系统 n);printf(n);printf(n 选择菜单内数字(1-6)进入系统 n);图2.1 学生成绩系统成绩系统主界面当然有以上还远远

5、不够,因为他还只支持“看”的功能,这时候我们输入1-6数字是不会有任何效果的,于是开始了主程序的编译。2.2.2主程序主程序代码如下:#include /*输入输出函数库*/#include /*字符串函数库*/ #include /*标准函数库*/#include /*屏幕操作函数库*/main() int choice; while(1) /*主菜单(前文以列出主菜单界面,此处省略)*/ scanf(%d,&choice); getchar(); switch(choice) case 1:Student_Insert();break; case 2:Student_Modify();br

6、eak; case 3:Student_Delete();break; case 4:Student_Select();break; /*自定义函数*/ case 5:Student_SortByAverage(); Student_Display();break; case 6:printf(您即将退出系统,欢迎下次访问!n按任意键退出n);exit(0); 2.2.3结构体由于本程序采用数组结构定义学生成绩等信息,所以开头以struct Student定义学生信息,本段程序包括对学号(ID)、姓名(Name)、成绩(Mark1、2、3分别代表数学、英语、C语言成绩)、平均分(Average

7、):struct Student char ID20; char Name20; float Mark1; float Mark2; float Mark3; float Average;/*声明学生数组及学生数量*/struct Student students100;int num=0;2.2.4 前定义函数考虑到以下代码会在模块结构中频繁使用,为增加各个模块的简洁性,于是在前文首先定义以下4各函数:/*求平均值*/float Avg(struct Student stu) return (stu.Mark1+stu.Mark2+stu.Mark3)/3;/*通过学号返回数组下标*/int

8、 Student_SearchByIndex(char id) int i; for (i=0;inum;i+) if (strcmp(studentsi.ID,id)=0) return i; return -1; /*通过姓名返回数组下标*/int Student_SearchByName(char name) int i; for (i=0;inum;i+) if (strcmp(studentsi.Name,name)=0) return i; return -1;/*显示单条学生记录*/void Student_DisplaySingle(int index) printf(-n);

9、 printf(%8s%8s%8s%8s%8s%10sn, 学号,姓名, 数学成绩 , 英语成绩 , C语言成绩 , 平均成绩); printf(-n); printf(%6s%9s %8.2f %8.2f %8.2f %10.2fn,studentsindex.ID,studentsindex.Name, studentsindex.Mark1,studentsindex.Mark2,studentsindex.Mark3,studentsindex.Average); printf(-n);4个函数将在后文各模块中使用。2.2.5 输入记录模块此模块由使用者写入学生信息,源代码如下:/*输

10、入学生信息*/void Student_Insert() while(1) printf(请输入学号:); scanf(%s,&studentsnum.ID); getchar(); printf(请输入姓名:); scanf(%s,&studentsnum.Name); getchar(); printf(请输入数学成绩:); scanf(%f,&studentsnum.Mark1); getchar(); printf(请输入英语成绩:); scanf(%f,&studentsnum.Mark2); getchar(); printf(请输入C语言成绩:); scanf(%f,&stude

11、ntsnum.Mark3); getchar(); studentsnum.Average=Avg(studentsnum); num+; printf(是否继续?(y/n); if (getchar()=n) break; 以上输入模块将由使用者输入学生学号、姓名、3科成绩,当输入完成后,“printf(是否继续?(y/n);”代码将询问使用者是否继续输入,输入学生上限由定义的学生数量100决定。2.2.6修改记录模块此模块可以修改学生写入的信息,以便更改输入错误:/*修改学生信息*/void Student_Modify() float mark1,mark2,mark3; while(1

12、) char id20; int index; printf(请输入要修改的学生的学号:); scanf(%s,&id); getchar(); index=Student_SearchByIndex(id); /*2.2.4前定义函数在此运用*/ if (index=-1) printf(学生不存在!n); else printf(你要修改的学生信息为:n); Student_DisplaySingle(index); /*2.2.4前定义函数在此引用*/ printf(- 请输入新值-n); printf(请输入学号:); scanf(%s,&studentsindex.ID); getc

13、har(); printf(请输入姓名:); scanf(%s,&studentsindex.Name); getchar(); printf(请输入数学成绩:); scanf(%f,&studentsindex.Mark1); getchar(); printf(请输入英语成绩:); scanf(%f,&studentsindex.Mark2); getchar(); printf(请输入C语言成绩:); scanf(%f,&studentsindex.Mark3); getchar(); studentsindex.Average=Avg(studentsindex); printf(是否

14、继续?(y/n); if (getchar()=n) break; 可以看出,此模块已经运用到2.2.4设计的前定义函数,本模块是根据使用者按照提示输入学生学号来一步步修改学生信息的。2.2.7删除记录模块此模块根据使用者要求按照学号来删除学生信息,代码如下:/*删除学生信息*/void Student_Delete() int i; while(1) char id20; int index; printf(请输入要删除的学生的学号:); scanf(%s,&id); getchar(); index=Student_SearchByIndex(id); /*在此运用前定义函数*/ if (

15、index=-1) printf(输入错误,该学生不存在!n); else printf(你要删除的学生信息为:n); Student_DisplaySingle(index); /*在此引用前定义函数*/ printf(是否真的要删除?(y/n); if (getchar()=y) for (i=index;inum-1;i+) studentsi=studentsi+1; num-; getchar(); printf(是否继续?(y/n); if (getchar()=n) break; 可以看出前定义函数的重要性,在自定义函数之前写入前定义函数大大减轻了后文繁复使用代码和调试的弊端。2

16、.2.8查询记录模块此模块主要是查询功能的实现,由于时间与经验不足,暂时只支持输入姓名查询成绩功能,代码如下:/*按姓名查询*/void Student_Select() while(1) char name20; int index; printf(请输入要查询的学生的姓名:); scanf(%s,&name); getchar(); index=Student_SearchByName(name); /*运用前定义的名字返回下标函数*/ if (index=-1) printf(输入错误,该学生不存在!n); else printf(你要查询的学生信息为:n); Student_Displ

17、aySingle(index); /*在此引用前定义函数*/ printf(是否继续?(y/n); if (getchar()=n) break; 2.2.9排序模块由于查询模块只实行单人信息查询,于是加入排序模块查看所有输入学生信息功能。当然本排序模块暂时只支持按平均成绩的高低排序,代码如下:/*按平均值排序*/void Student_SortByAverage() int i,j; struct Student tmp; for (i=0;inum;i+) for (j=1;jnum-i;j+) if (studentsj-1.Averagestudentsj.Average) tmp=

18、studentsj-1; studentsj-1=studentsj; studentsj=tmp; /*显示学生信息*/void Student_Display() int i; printf(-n); printf(%8s%8s%8s%8s%8s%10sn, 学号,姓名, 数学成绩 , 英语成绩 , C语言成绩 , 平均成绩); printf(-n); for (i=0;inum;i+) printf(%6s%9s %8.2f %8.2f %8.2f %10.2fn,studentsi.ID,studentsi.Name,studentsi.Mark1,studentsi.Mark2,st

19、udentsi.Mark3,studentsi.Average); printf(-n);可以很明显的看出,本排序模块由两个独立程序段组成,一个是按平均成绩排序,另一个是显示信息。二者结合,使用者将可以清晰的查看学生平均成绩和高低排名。2.2.10退出模块为保证系统的正常,使用者可以有此模块安全正常的退出系统,而“printf(您即将退出系统,欢迎下次访问!n按任意键退出n);”即实现退出温馨提示功能。3.主要函数分析3.1 主要函数函数是程序的灵魂,本程序在主程序段运用到main()函数以及模块函数Student_Insert()、Student_Modify()、Student_Delet

20、e()、Student_Select()、Student_Display()和前定义函数Student_SearchByName、Student_SearchByIndex、Student_DisplaySingle。3.2 swich()函数switch(choice) case 1:Student_Insert();break; case 2:Student_Modify();break; case 3:Student_Delete();break; case 4:Student_Select();break; case 5:Student_SortByAverage(); Student

21、_Display();break; case 6:printf(您即将退出系统,欢迎下次访问!n按任意键退出n);exit(0); swich()函数的运用,以便在主界面菜单当使用者输入相应数字后进入下一步操作。3.3 strut()函数struct Student char ID20; char Name20; float Mark1; float Mark2; float Mark3; float Average;struct Student students100;int num=0;数组编译结构中的strut()函数用于定义学生的信息,包括各种信息的定义。为了方便简化程序,只定于学生的学号、姓名和3科成绩。3.4 while()函数while()函数在本程序中于各段代码中都有运用,主要实现死循环的操作,直到使用者停止录入或达到定义上限为止。

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

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