学生成绩管理系统论文

上传人:ji****72 文档编号:26927807 上传时间:2018-01-03 格式:DOC 页数:19 大小:309KB
返回 下载 相关 举报
学生成绩管理系统论文_第1页
第1页 / 共19页
学生成绩管理系统论文_第2页
第2页 / 共19页
学生成绩管理系统论文_第3页
第3页 / 共19页
学生成绩管理系统论文_第4页
第4页 / 共19页
学生成绩管理系统论文_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《学生成绩管理系统论文》由会员分享,可在线阅读,更多相关《学生成绩管理系统论文(19页珍藏版)》请在金锄头文库上搜索。

1、青 岛 农 业 大 学本 科 生 课 程 论 文论 文 题 目 学生成绩管理系统 学生专业班级 通信工程 2012级 02班 学生姓名(学号) 王玉颖(20123211) 指 导 教 师 李吉忠 完 成 时 间 2013-09-06 2013 年 09 月 06 日目录一、问题的描述 1二、设计目的 2三、课程设计的内容 3四、课程设计的要求 4五、课程设计应完成的工作 5六、总体设计(包含几大功能模块) 6七、 详细设计(各功能模块的具体实现算法流程图)7八、 测试情况 (包含各模块的测试用例,及测试结果) 8九、设计总结 9十、 参考资料 10 正文部分一、问题的描述题目:学生成绩管理系统

2、设计学生成绩信息包括:学号、姓名、四门课成绩(高数、英语、物理、计算机)平均分等主要功能:(1):按学号、姓名完成对学生成绩的录入及查询(2):统计学生成绩,平均分及成绩排名(3):插入及按学号或姓名查询学生成绩要求:使用二进制文件方式存储数据,系统以菜单方式工作,实现对学生成绩的录入、修改、统计、排序、查询、输出等功能。二、设计目的本程序旨在训练学生的基本编程能力,了解管理信息系统的开发流程,熟悉 C语言的文件和单链表的各种基本操作。本程序中涉及结构体、单链表、文件等方面的知识。通过本程序的训练,使学生能对 C语言的文件操作有一个更深入的了解,掌握利用单链表存储结构实现对学生成绩管理的原理,

3、为进一步开发出高质量的信息管理系统打下坚实的基础。三、课程设计的内容对学生信息(包括学号,姓名,高数、英语、物理、计算机成绩,平均分)进行管理,包括学生成绩的信息录入、统计、查询、插入、排序、退出.将学生的成绩信息进行记录,信息内容包含:(1)学生的学号(2)学生的姓名(3)学生的成绩(4)成绩排序。假设,现收集到了一个班学生的所有成绩信息,要求用 C语言编写一个简单的成绩管理系统,可实现录入、统计、查询、插入和浏览等功能。学习相关开发工具和应用软件,熟悉系统建设过程。四、 课程设计的要求1、用C语言实现系统;2、对学生信息(包括学号、姓名、高数、英语、物理、计算机、平均分)进行管理,包括学生

4、成绩的信息录入、统计、查询、插入、排序、退出.3、学生信息包括:其内容较多,为了简化讨论,要求设计的管理系统能够完成以下功能:(1) 每一条记录包括一个学生的学号、姓名、4门课成绩(2)、输入记录功能:在成绩管理系统中,记录可以从以二进制形式存储的数据文件中读入,也可从键盘逐个输入学生记录。学生记录由学生的基本信息和成绩信息字段构成。当从数据文件中读入记录时,就会保存在数据文件中。(3)、查询记录功能:在此成绩管理系统中,用户可以按照学生的学号或姓名查找符合的信息。若找打该学生的记录,则返回指向该学生的指针。否则,返回一个值为 NULL的空指针,并打印出未找到该学生记录的提示信息。(4)、更新

5、记录功能:更新记录模块主要完成对学生记录的维护。在此成绩管理系统中,它实现了对学生记录的修改、删除、插入和排序操作。(5) 统计排序功能:主要完成对各门功课最高分和不及格人数的统计。(6)、输出记录功能:主要完成两个任务。第一,它实现对学生记录的存盘操作,即将单链表中的各节点中存储的学生记录信息写入数据文件中。第二,它实现将单链表中存储的学生记录信息以表格的形式在屏幕上打印出来。五、课程设计应完成的工作(1)编写算法;(2)算法测试,并有具体的测试结果和结果分析;(3)撰写课程设计报告。内容包括:1) 封面扉页2) 目录3) 设计任务书4) 总体设计方案(包括流程图)5) 使用说明及运行实例(

6、包括界面)6) 成员设计内容简介7) 项目源程序代码(注意注释的使用)8) 指导教师评语六、 总体设计(包含几大功能模块)1)输入记录模块。2)查询记录模块。3)更新记录模块。4)统计记录模块。5)输出记录模块。源程序:#include #include /malloc 函数的头文件/#include /动态存储分配的函数/#include #define LEN sizeof(Student)/以字节的形式进行存储 /typedef struct student/ typedef 使 Student 代替 struct stuudent/int num;char name20;int sco

7、re4; int sum;struct student *next;/函数中指向 student 的一个指针变量/Student;int n;Student *cin(void);/成绩录入函数的返回值是指针变量/ Student *sort_1(Student *head,int); /选择安排函数/void sort_2(Student *head);/求当前最高分及平均分/void print(Student *head);/打印当前成绩 /Student *sort_all(Student *head);/学生成绩统计排序入口函数/void find(Student *head);/查

8、询成绩的函数/Student *add_new(Student *head);/增加学生信息的函数/Student *cin()int flag; Student *head,*p1,*p2;n=0;head=(Student *)malloc(LEN);p2=head;printf(n 请输入第%d 名学生的学号,学号为 0 表示结束输入:,n+1); scanf(%d,while (getchar()!=n);for(;flag;)n+;p1=(Student *)malloc(LEN);p1-num=flag;printf(请输入第%d 名学生的姓名:,n);scanf(%s,p1-na

9、me); printf(请输入第%d 名学生的高数成绩:,n);scanf(%d,printf(请输入第%d 名学生的英语成绩:,n);scanf(%d,printf(请输入第%d 名学生的物理成绩:,n);scanf(%d,printf(请输入第%d 名学生的计算机成绩:,n);scanf(%d,p1-sum=p1-score0+p1-score1+p1-score2+p1-score3;p2-next=p1;p2=p1;printf(n 请输入第%d 名学生的学号,没有此学生则输入 0 表示结束:,n+1); scanf(%d,p2-next=NULL;printf(nn);return

10、head;Student *sort_all(Student *head)int choose;for(;) printf(ntt# # # # # 学生成绩统计排序 # # # #n);printf(tt#t1.按学生学号排序t #n);printf(tt#t2.按学生总分排序t #n);printf(tt#t3.按学生高数成绩排序t #n);printf(tt#t4.按学生英语成绩排序t #n);printf(tt#t5.按学生物理成绩排序t #n);printf(tt#t6.按学生计算机成绩排序t #n);printf(tt#t7.单科高分及均分t #n);printf(tt#t8.显示

11、当前学生成绩t #n);printf(tt#t0.返回上一级菜单t #n);printf(tt# # # # # - # # # # #nn); printf(请输入您要执行的操作:);scanf(%d,while(getchar()!=n);switch(choose)case 1:case 2:case 3:case 4:case 5:case 6:head=sort_1(head,choose);break;/调用排序函数 /case 7:print(head);sort_2(head);break;case 8:print(head);break;case 0:return head;

12、default: printf(nn 您的输入有误!请重新输入:nn);break;Student *sort_1(Student *head,int choose)/选择排序函数/Student *p1,*p2=head-next,*pm,*px;/P2 从第一个学生结点开始/Student mid;if (!p2) return head;/判断链表是否为空,链表是结构体中最后一个指向下一个相同结构的结构体/for(p1=p2;p1-next!=NULL;p1=p1-next)pm=p1;for(p2=p1-next;p2!=NULL;p2=p2-next)switch(choose)ca

13、se 1:if (pm-nump2-num) pm=p2;break;/按学号从小到大排列/case 2:if (pm-sumsum) pm=p2;break;/按总分从大到小排列/ case 3:if (pm-score0score0) pm=p2;break;/按单科从大到小/case 4:if (pm-score1score1) pm=p2;break;case 5:if (pm-score2score2) pm=p2;break;case 6:if (pm-score3score3) pm=p2;break;if (pm!=p1)mid=*pm;/交换两个节点的内容/ 打印出当前学生报

14、表 return head/*pm=*p1;*p1=mid;/p1,mid 为指针变量,*p1 为指针变量中指向的内容 /px=pm-next;/交换两个结点的顺序/pm-next=p1-next;p1-next=px;printf(n 排序后的成绩表为:n);print(head);/打印出当当前学生成绩报表return head;void sort_2(Student *head)/求出当前最高分及平均分函数/Student *p=head-next;/从当前第一个学生开始/int max_1,max_2,max_3,max_4,min_1,min_2,min_3,min_4;int max_sum,min_sum;int sum_1=0,sum_2=0,sum_3=0,sum_4=0;/总分定义/float aver_1,aver_2,aver_3,aver_4,aver_sum;/平均分/if (!p) return;max_1=min_1=p-score0;max_2=min_2=p-score1;/赋初值 /max_3

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号