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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

学生成绩管理系统课程设计报告.docx

1、学生成绩管理系统课程设计报告C语言课程设计报告题 目:学生成绩管理系统设 计 者:张亚鹏 专业班级:通信工程0901学 号:310909020127指导教师:张黎娜 2010年09月15日河南理工大学计算机学院成绩管理系统1 题目与要求1.1 问题提出本人计划编写一个学生成绩管理系统,主要用来管理学生成绩信息。1.2 本系统涉及的知识点结构、数组、循环、函数、分支、指针。1.3 功能要求主要功能:(1)能完成对学生成绩的录入、修改;(2)能统计学生的成绩,求学生的总分及平均分,并能根据学生的平均成绩进行排序;(3)能查询学生成绩,不及格科目及学生名单;(4)能输出学生的成绩单。 2 功能设计2

2、.1 算法设计利用switch语句设计如图1所示的主菜单:请输入选项编号(09)0退出系统1 输入学生资料2 查询学生成绩3删除学生资料4 追加学生资料5 显示学生成绩6统计学生成绩7 对成绩进行排序图1 学生信息管理系统主菜单(所有的图统一编号,宋体5号,置于图下的中间,)排序菜单请输入选项编号(05)1按学号排序2按姓名排序3按语文成绩排序4按英语成绩排序5按数学成绩排序选择9后,调用排序函数,进入函数后利用switch语句实现一个如图2所示的菜单,该菜单中每个选项调用一个函数。 图2 排序子菜单3 主要技术指标及特点图3程序模块3.1 登录界面显示图4口令输入正确后,主菜单将显示及可以进

3、行操作。图5此登录界面是预先设定好作为菜单来显示的,在主函数中以menu2311()来实现的,在函数中,是通过switchcase来实现选择功能的,用户可以通过需要进行选择,方便了用户的使用,非常人性化。请输入选项编号(09)0退出系统1 输入学生资料2 从文件调入资料3 查询学生成绩4删除学生资料5 追加学生资料6 显示学生成绩排序菜单请输入选项编号(05)1按学号排序2按姓名排序3按语文成绩排序4按英语成绩排序5按数学成绩排序7统计学生成绩8 保存输入的资料9 对成绩进行排序图 6 图7选择9后,调用排序函数,进入函数后利用switch语句实现一个如图7所示的菜单,该菜单中每个选项调用一个

4、函数3.2输入学生资料图83.3 删除学生资料图9这里又是通过switchcase函数的调用,让用户进行选择,共有两种方法:1.按照学号 2.按照姓名,操作完成后,系统会自动提示,该学生已经成功删除,当再次显示的时候,函数中的链表就不再指向该学号,从而起到删除的作用。删除完成后,再次保存一下学生资料,不然系统仍然默认为原始人数。3.4追加学生资料图10通过选择到达修改界面:此时将呈现出现有的学生资料,按照要求将新的信息输入其中,再保存资料,如果输入的学号系统中未显示,那么系统则提示没有资料可以修改。3.5 查询学生资料图11按照选择,则会呈现出用户需要查找的所有信息,每次呈现出来的时候都要用之

5、前定义的print2311 ()函数,这个很好地将数据按照格式化的形式显现出来。此为按照学号查找的例子,按照姓名查找是同样道理。3.6统计学生资料(自加功能)图12图13统计学生资料主要还是用的statistics2311()函数。3.7对学生成绩进行排序图14图15该图显示的是按照语文成绩排序完的结果,用链表将数据进行一个接一个的比较,按照降序将学生信息排列下来,最后提示排序已经完成,并将所有结果按照用户要求显示出来。3.8程序主要代码 #include #include #define LEN sizeof(struct scorenode)#define DEBUG#include st

6、ruct scorenode int number;/*学号*/ char name10;/*姓名*/ float yuwen;/*语文成绩*/ float yingyu;/*英语成绩*/ float shuxue;/*数学成绩 */ struct scorenode *next;typedef struct scorenode score;int m,n,k,jj;/*n,k为全局变量,本程序中的函数均可以使用它*/score *creat2311(void)/*函数creat2311,功能:创建链表,此函数带回一个指向链表头的指针*/ score*head; score *p1,*p2,*

7、p3,*max; int i,j; float fen; char t10; n=0; p1=p2=p3=(score *)malloc(LEN);head=p3; /*开辟一个新单元*/ printf(请输入学生资料,输0退出!n); repeat1: printf(请输入学生学号(学号应大于0):);/*输入学号,学号应大于0*/ scanf(%d,&p1-number); while(p1-numbernumber); /*输入学号为字符或小于0时,程序报错,提示重新输入学号*/ if(p1-number=0) goto end;/*当输入的学号为0时,转到末尾,结束创建链表*/ els

8、e p3=head; if(n0) for(i=0;inumber!=p3-number) p3=p3-next; else printf(学号重复,请重输!n); goto repeat1;/*当输入的学号已经存在,程序报错,返回前面重新输入*/ printf(请输入学生姓名:); scanf(%s,&p1-name);/*输入学生姓名*/ printf(请输入语文成绩(0100):);/*输入语文成绩,成绩应在0-100*/ scanf(%f,&p1-yuwen); while(p1-yuwenyuwen100) getchar(); printf(输入错误,请重新输入语文成绩);/*输入

9、错误,重新输入语文成绩直到正确为止*/ scanf(%f,&p1-yuwen); printf(请输入英语成绩(0100):);/*输入英语成绩,绩应在0-100*/ scanf(%f,&p1-yingyu); while(p1-yingyuyingyu100) getchar(); printf(输入错误,请重新输入英语成绩);/*输入错误,重新输入英语成绩直到正确为止*/ scanf(%f,&p1-yingyu); printf(请输入数学成绩(0100):);/*输入数学成绩,成绩应在0-100*/ scanf(%f,&p1-shuxue); while(p1-shuxueshuxue1

10、00) getchar(); printf(输入错误,请重新输入数学成绩); scanf(%f,&p1-shuxue); /*输入错误,重新输入数学成绩直到正确为止*/ head=NULL; while(p1-number!=0) n=n+1; if(n=1) head=p1; else p2-next=p1; p2=p1; p1=(score *)malloc(LEN); printf(请输入学生资料,输0退出!n); repeat2:printf(请输入学生学号(学号应大于0):); scanf(%d,&p1-number);/*输入学号,学号应大于0*/ while(p1-numbern

11、umber); /*输入学号为字符或小于0时,程序报错,提示重新输入学号*/ if(p1-number=0) goto end;/*当输入的学号为0时,转到末尾,结束创建链表*/ else p3=head; if(n0) for(i=0;inumber!=p3-number) p3=p3-next; else printf(学号重复,请重输!n); goto repeat2;/*当输入的学号已经存在,程序报错,返回前面重新输入*/ printf(请输入学生姓名:); scanf(%s,&p1-name);/*输入学生姓名*/ printf(请输入语文成绩(0100):); scanf(%f,&

12、p1-yuwen);/*输入语文成绩,成绩应在0-100*/ while(p1-yuwenyuwen100) getchar(); printf(输入错误,请重新输入语文成绩); scanf(%f,&p1-yuwen); /*输入错误,重新输入语文成绩直到正确为止*/ printf(请输入英语成绩(0100):); scanf(%f,&p1-yingyu);/*输入英语成绩,成绩应在0-100*/ while(p1-yingyuyingyu100) getchar(); printf(输入错误,请重新输入英语成绩); scanf(%f,&p1-yingyu); /*输入错误,重新输入英语成绩直

13、到正确为止*/ printf(请输入数学成绩(0100):); scanf(%f,&p1-shuxue);/*输入数学成绩,成绩应在0-100*/ while(p1-shuxueshuxue100) getchar(); printf(输入错误,请重新输入数学成绩); scanf(%f,&p1-shuxue); /*输入错误,重新输入数学成绩直到正确为止*/ end: p1=head; p3=p1; for(i=1;in;i+) for(j=i+1;jnext; if(max-numberp1-number) k=max-number; max-number=p1-number; p1-num

14、ber=k; /*交换前后结点中的学号值,使得学号大者移到后面的结点中*/ strcpy(t,max-name); strcpy(max-name,p1-name); strcpy(p1-name,t); /*交换前后结点中的姓名,使之与学号相匹配*/ fen=max-yuwen; max-yuwen=p1-yuwen; p1-yuwen=fen;/*交换前后结点中的语文成绩,使之与学号相匹配*/ fen=max-yingyu; max-yingyu=p1-yingyu; p1-yingyu=fen;/*交换前后结点中的英语成绩,使之与学号相匹配*/ fen=max-shuxue; max-s

15、huxue=p1-shuxue; p1-shuxue=fen;/*交换前后结点中的数学成绩,使之与学号相匹配*/ max=head;p1=head;/*重新使max,p指向链表头*/ p2-next=NULL;/*链表结尾*/ printf(输入的学生数为:%d个!n,n); return(head); /*=*/*=*/score *add2311(score *head,score *stu)/*函数add2311,功能:追加学生资料,并且将所有学生资料按学号排序*/ score *p0,*p1,*p2,*p3,*max; int i,j; float fen; char t10; p3=

16、stu=(score *)malloc(LEN);/*开辟一个新单元*/ printf(n输入要增加的学生的资料!); repeat4: printf(请输入学生学号(学号应大于0):); scanf(%d,&stu-number); /*输入学号,学号应大于0*/ while(stu-numbernumber);/*输入错误,重新输入学号*/ /*/ if(stu-number=0) goto end2;/*当输入的学号为0时,转到末尾,结束追加*/ else p3=head; if(n0) for(i=0;inumber!=p3-number) p3=p3-next; else print

17、f(学号重复,请重输!n); goto repeat4;/*当输入的学号已经存在,程序报错,返回前面重新输入*/ /*/ printf(输入学生姓名:); scanf(%s,stu-name); /*输入学生姓名*/ printf(请输入语文成绩(0100):); scanf(%f,&stu-yuwen); /*输入语文成绩,成绩应在0-100*/ while(stu-yuwenyuwen100) getchar(); printf(输入错误,请重新输入语文成绩); scanf(%f,&stu-yuwen); /*输入错误,重新输入语文成绩直到正确为止*/ printf(请输入英语成绩(010

18、0):); scanf(%f,&stu-yingyu);/*输入英语成绩,成绩应在0-100*/ while(stu-yingyuyingyu100) getchar(); printf(输入错误,请重新输入英语成绩); scanf(%f,&stu-yingyu);/*输入错误,重新输入英语成绩直到正确为止*/ printf(请输入数学成绩(0100):); scanf(%f,&stu-shuxue);/*输入数学成绩,成绩应在0-100*/ while(stu-shuxueshuxue100) getchar(); printf(输入错误,请重新输入数学成绩); scanf(%f,&stu-

19、shuxue);/*输入错误,重新输入数学成绩直到正确为止*/ p1=head; p0=stu; if(head=NULL) head=p0;p0-next=NULL; /*当原来链表为空时,从首结点开始存放资料*/ else/*原来链表不为空*/ if(p1-next=NULL)/*找到原来链表的末尾*/ p1-next=p0; p0-next=NULL;/*将它与新开单元相连接*/ else while(p1-next!=NULL)/*还没找到末尾,继续找*/ p2=p1; p1=p1-next; p1-next=p0; p0-next=NULL; n=n+1; p1=head; p0=s

20、tu; for(i=1;in;i+) for(j=i+1;jnext; if(max-numberp1-number) k=max-number; max-number=p1-number; p1-number=k; /*交换前后结点中的学号值,使得学号大者移到后面的结点中*/ strcpy(t,max-name); strcpy(max-name,p1-name); strcpy(p1-name,t);/*交换前后结点中的姓名,使之与学号相匹配*/ fen=max-yuwen; max-yuwen=p1-yuwen; p1-yuwen=fen;/*交换前后结点中的语文成绩,使之与学号相匹配*

21、/ fen=max-yingyu; max-yingyu=p1-yingyu; p1-yingyu=fen;/*交换前后结点中的英语成绩,使之与学号相匹配*/ fen=max-shuxue; max-shuxue=p1-shuxue; p1-shuxue=fen;/*交换前后结点中的数学成绩,使之与学号相匹配*/ max=head;p1=head;/*重新使max,p指向链表头*/ end2: printf(现在的学生数为:%d个!n,n); return(head);/*=*/*=*/score *search2311(score *head)/*函数search2311,功能:查询学生成绩

22、*/ int number; score *p1,*p2; printf(输入要查询的学生的学号,); scanf(%d,&number); while(number!=0) if(head=NULL) printf(n没有任何学生资料!n);return(head); printf(-n); printf(|学号t|姓名t|语文t|英语t|数学t|n); printf(-n);/*打印表格域*/ p1=head; while(number!=p1-number&p1-next!=NULL) p2=p1; p1=p1-next; if(number=p1-number) printf(|%dt|%st|%.1ft|%.1ft|%.1ft|n,p1-number,p1-name,p1-yuwen,p1-yingyu,p1-shuxue); printf(-n); /*打印表格域*/ else printf(%d不存在此学生!n,number); printf(输入要查询的学生的学号,); scanf(%d,&number); printf(已经退出了!n);return(head);/*=

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2