c++成绩管理 最终版

上传人:第*** 文档编号:34198989 上传时间:2018-02-21 格式:DOC 页数:28 大小:239KB
返回 下载 相关 举报
c++成绩管理   最终版_第1页
第1页 / 共28页
c++成绩管理   最终版_第2页
第2页 / 共28页
c++成绩管理   最终版_第3页
第3页 / 共28页
c++成绩管理   最终版_第4页
第4页 / 共28页
c++成绩管理   最终版_第5页
第5页 / 共28页
点击查看更多>>
资源描述

《c++成绩管理 最终版》由会员分享,可在线阅读,更多相关《c++成绩管理 最终版(28页珍藏版)》请在金锄头文库上搜索。

1、课程设计( 论文)任务书软 件 学 院 机械电子工程 专 业20101班 一、课程设计(论文)题目学生成绩管理系统 二、课程设计(论文)工作自 2011 年 6 月 27 日起至 2011 年 6 月 29 日止。三、课程设计(论文) 地点: 软件学院实训中心 四、课程设计(论文)内容要求:1本课程设计的目的(1) 使学生掌握系统各功能模块的基本工作原理; (2) 掌握 C的基本编程原理和及基本的编程方法; (3) 使学生学会系统调试;(4) 培养学生分析、解决问题的能力;(5) 提高学生的软件文档写作能力。 2课程设计的任务及要求1)基本要求:(1) 分析系统各功能模块的工作原理;(2) 至

2、少有查找,排序、插入、删除等功能;(3) 提出系统的设计方案; (4) 对所进行编程、调试、修改。 2)创新要求: 在基本要求达到后,可进行创新设计,如: 文件流 等; 3)课程设计论文编写要求(1) 要按照书稿的规格打印誊写毕业论文(2) 论文包括目录、绪论、正文、小结、参考文献、附录等(3) 毕业论文装订按学校的统一要求完成4)答辩与评分标准: (1) 完成原理分析: 20 分; (2) 完成设计过程: 40 分; (3) 完成调试运行结果正确: 25 分;(4) 答辩: 15 分。5)参考文献:(1) 谭浩强 . C+程序设计实践指导 清华大学出版社 (2) 谭浩强 . C+程序设计 清

3、华大学出版社(3)http:/ /6)课程设计进度安排内容 天数 地点总体需求与分析构思及收集资料 1 图书馆各模块的编程实现,调试与修改 3 机房撰写论文与答辩 1 图书馆,学生签名: 2010 年 6 月 28 日课程设计(论文)评审意见(1) 完成原理分析( 20 分):优( ) 、良( ) 、中( ) 、一般( ) 、差( ) ; (2) 设计分析 ( 25 分):优( ) 、良( ) 、中( ) 、一般( ) 、差( ) ; (3) 完成调试 ( 20 分):优( ) 、良( ) 、中( ) 、一般( ) 、差( ) ;(4) 运行结果 ( 20 分):优( ) 、良( ) 、中(

4、) 、一般( ) 、差( ) ;(5) 答辩 ( 15 分):优( ) 、良( ) 、中( ) 、一般( ) 、差( ) ;(6) 格式规范性及考勤是否降等级:是( ) 、否( )评阅人签名: 职称: 讲师 2010 年 6 月 20 日学生成绩管理系统设计报告一、需求分析:用数组或链表数据结构完成一个学生成绩管理系统,此系统的具体功能要求如下:(1)学生信息录入功能1)用户从键盘输入每个学生的信息:学号、姓名、性别、数学、英语、C+、程序设计、物理五门课成绩。2)可插入一个或多个学生信息到当前编辑的班级数据中。3) 可删除一个或多个学生信息。(2)文件保存功能1)学生信息每一班存为一个数据文

5、件,数据文件可在程序中打开、编辑和重新保存。2)用户输入学生信息可随时保存数据文件。(3)文件打开功能1)程序只能对当前打开的数据文件进行编辑。(4)查询功能1)浏览所有学生信息;2)按学号查询学生信息;3)按姓名查询学生信息;4) 查询一个班总成绩和平均成绩;5) 查询一个班某一门课总成绩和平均成绩;(5)报表输出功能1) 按学号输出一个班学生信息:学号、姓名、性别、数学、英语、C+、程序设计、物理成绩和总成绩,到屏幕和文件。2) 按总成绩输出从高到低输出学号、姓名信息。注:以上功能以菜单形式供用户使用,并有一定的容错功能。二、概要设计整体框架:整个学生成绩管理系统采用链表作为基本数据结构,

6、创建一个类 student 用于保存学生的数据且是链表中的一个节点。类 list 作为保存整个链表之用。主函数通过 switch 语句来根据用户的需要连接各个模块,以实现用户的需要。模块基本介绍:1. 用户输入模块在此模块中,用户将根据菜单提示结合自己的需求输入一个 011 的值,来实现一定的功能。2. 学生信息录入模块此模块可以让用户从键盘输入每个学生的信息:学号、姓名、性别、数学、英语、C+、程序设计、物理五门课成绩。用户可插入一个或多个学生信息到当前编辑的班级数据中。 用户可删除一个或多个学生信息。3. 文件保存功能模块用户在确定以录入的成绩无误之后,可以将学生信息以每一班为单位存为一个

7、数据文件。用户输入的学生信息可随时保存数据文件。4. 文件打开功能模块用户可以用此模块将数据文件在程序中打开、编辑,程序只能对当前打开的数据文件进行编辑。5. 查询功能模块在此模块里,用户可实现以下操作:1.浏览所有学生信息;2.按学号查询学生信息;3.按姓名查询学生信息;4.查询一个班每个人的总成绩和平均成绩; 5.查询一个班某一门课每个人的总成绩和平均成绩;6)进行成绩的统计分析:包括总人数,每门课的最高成绩、最低成绩、平均成绩、及格人数。6. 报表输出功能模块在此模块中,用户可以浏览所有学生的信息,或者可以按学号输出一个班学生信息:学号、姓名、性别、数学、英语、C+、程序设计、物理成绩和

8、总成绩,到屏幕和文件。也可以按总成绩输出从高到低输出学号、姓名信息。模块图:三、详细设计主要功能模块的算法设计思路:1. 用户输入模块设计开始m值 1,3,4 值 8 值 7,2,6,5 值 10,学生信息录入模块文件打开功能模块查询功能模块 报表输出功能模块用户输入,并将值保存至m 中m结束提示用户输入一个 011 的值,并存储在一个整型变量 m 中。2. 学生信息录入模块设计通过应用 list 中的 instu()函数,来新建一个链表中的节点,即一个新的学生信息,来进行成绩的录入功能。成绩修改功能,可以根据姓名或学号进行查询并修改相应的课程的成绩,使用了 void search(char

9、s10,int)和 void search1(char s20,int)函数进行操作。search 函数根据姓名查找, search1 函数根据学号进行查找。因为学号和姓名,都是存储在字符数组中的,所以都是通过字符串的比较进行查找的。然后根据整形参数进行对应的课程成绩的修改。成绩删除功能,也是可以根据姓名或学号进行删除,查询的算法和成绩修改功能的查询方法是一样的,当找到要删除的节点时,因为节点都是在堆内存中保存的,所以可以直接 delete 掉,并将前一个节点的 next 指针指向被删掉的节点的 next 指针所指向的节点。3. 查询功能模块可以根据姓名或学号进行查找,搜索方法和前几个模块相同

10、。通过outstu1(char *n)和 outstu(char *n)来进行输出。总成绩和平均成绩的查询通过函数 void outsum(char *)和 void outsum1(char *)来完成。通过函数 scanall()来浏览所有学生的信息。通过函数 think()来进行成绩的统计分析。4. 报表输出功能模块通过建立一个新的类 class stucopy 用于拷贝 student 的数据,并实现排序功能。创建一个 stucopy stuM数组,将原链表的数据拷贝与数组中,然后用选择排序方法将数组排序,然后用 output 按照标准的格式输出数据文件。实践结果图 四、程序结构源代码

11、:#include#include#include#includeconst int M = 20;class stucopy/此类用于拷贝 student 的数据,用于排序功能的实现public:char id20;char sex10;char name10;double grade5;double sumsum;/总成绩double average;/平均成绩;class student/用于保存学生信息的类friend class list;public:char id20;/保存学号char sex10;/保存性别char name10;/保存名字double grade5;/保存成

12、绩student()next=0;for (int i=0;ioutgrade(i);return sum;double outav()return this-outsum()/5;double outgrade(int i)return gradei;void intgrade(int);void student:intgrade(int j)/用于修改学生的成绩 switch (j)case 1:coutgrade0;break;case 2:coutgrade1;break;case 3:coutgrade2;break;case 4:coutgrade3;break;case 5:co

13、utgrade4;break;void student:s()/用于录入学生的信息coutid;coutname;coutsex;coutgrade0;coutgrade1;coutgrade2;coutgrade3;coutgrade4;class list/此类为链表private:double high5,low5;public:student *last,*first;/链表的开头和结尾double totoal;list()last=0;first=0;list();void instu();/新建一个学生的数据void outstu(char *);/根据姓名输出一个学生的信息in

14、t delstu(char *n);/根据姓名删除一个学生的信息void outstu1(char *);/根据学号输出一个学生的信息int delstu1(char *n);/根据学号删除一个学生的信息void outsum(char *);/根据姓名输出一个学生的总成绩和平均成绩void outsum1(char *);/根据学号输出一个学生的总成绩和平均成绩void think();/用于输出班级成绩的统计分析void search(char s10,int);/根据姓名修改一个学生的成绩void search1(char s20,int);/根据学号修改一个学生的成绩double hi

15、(int i);/求某门课的最高分double lo(int i);/求某门课的最低分void av(int i);/求某门课的平均分void ev(int i);/用于班级成绩统计分析的人数分布输出void scanall();/输出所有学生的信息;list:list()/析构函数,将所有创建的学生对象删掉if(first!=0)student *p=first,*temp;while(p!=NULL)temp=p;p=p-next;delete temp;couts();if(first=0)first=last=p;elselast-next=p;last=p;void list:outstu(char *n)if(first=0) coutnext)if(st

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

当前位置:首页 > 办公文档 > 解决方案

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