学生成绩统计-课程设计报告书C++

上传人:jun****875 文档编号:17752266 上传时间:2020-12-05 格式:DOC 页数:28 大小:567.91KB
收藏 版权申诉 举报 下载
学生成绩统计-课程设计报告书C++_第1页
第1页 / 共28页
学生成绩统计-课程设计报告书C++_第2页
第2页 / 共28页
学生成绩统计-课程设计报告书C++_第3页
第3页 / 共28页
资源描述:

《学生成绩统计-课程设计报告书C++》由会员分享,可在线阅读,更多相关《学生成绩统计-课程设计报告书C++(28页珍藏版)》请在装配图网上搜索。

1、 淮 海 工 学 院 计算机工程学院课程设计报告设计名称: C+语言课程设计 姓 名: 学 号: 专业班级: 系 (院): 软件工程系 设计时间: 设计地点: 计算机工程学院机房 1课程设计目的C+课程设计是计算机科学与技术专业重要的实践性教学环节之一,本次设计结合实际应用的要求,使课程设计既覆盖C+的知识点,又接近工程实际需要。目的是通过课程设计的综合训练,培养学生实际分析问题、解决问题的能力,以及编程和动手能力,最终目标是通过课程设计这种形式,帮助学生系统掌握C+这门课程的主要内容,养成良好的编程习惯,更好的完成教学任务。2课程设计任务与要求:要求:本次课程设计利用C+程序设计课程中所学到

2、的编程知识和编程技巧,完成具有一定难度和工作量的程序设计题目,帮助学生掌握编程、调试的基本技能,独立完成所布置的任务。要求:1、对系统进行功能需求分析2、设计合理的数据结构和系统框架3、编程简练,程序功能齐全,能正确运行4、说明书、流程图要清楚5、课题完成后必须按要求提交课程设计报告任务:2、设计一个学生成绩排名系统,该系统的主要功能如下:1) 具备对成绩的管理功能(添加、删除、排序)2) 具备对成绩的统计功能(最高分,最低分,平均分,及格率等)3) 具备按学号、姓名、或课程名查询成绩的功能。备注:成绩记录以下信息:班级,学号,姓名,课程名,成绩(百分制)。可以用能表示学生成绩的结构体数组存储

3、数据。1绪论 1.1 项目开发背景 一直以来学生的成绩管理是学校工作中的一项重要内容,我国的大中专院校的学生成绩管理水平普遍不高。随着办学规模的扩大和招生人数的增加,建立一个成绩维护系统是非常必要的。普通的成绩管理已不能适应时代的发展,因为它浪费了许多的人力和物力。在当今信息时代这种传统的管理方法必然被以计算机为基础的信息管理系统所代替。为了提高成绩管理的效率,我选择了学生成绩管理系统作为毕业设计的课题。 本系统在大多数成绩管理系统的基础上,主要增加了教师对成绩的操作,教师改完试卷后不用在往学院的教务处办公室报送成绩,可以直接的把成绩上传到网络上,学生也可以方便快速的查询到自己的成绩,考试后教

4、务管理人员也不必总呆在学院的办公室,他们都不受时间,位置,空间的限制,只要有上网的条件,在家里就可以完成有关成绩的录入,更新,管理,查询和删除。本系统将会改变以前靠手工管理学生成绩的状况,提高工作效率。希望能为老师和学校的工作带来便利。1.2 项目开发的目标 建立学生成绩管理系统,采用计算机对学生成绩进行管理,进一步提高办学效益和现代化水平。帮助广大教师提高工作效率,实现学生成绩维护工作流程的系统化、规范化和自动化。为了使系统在学院的管理中发挥更大的作用,实现工作过程的计算机化,提高工作效率和工作质量,现提出如下的系统开发目标: (1)系统应具有实用性、可靠性和适用性,同时注意到先进性。 (2

5、)对各个数据库进行动态管理,防止混乱。 (3)不同用户有不同的查询和修改权限,防止非法查询,非法修改。 (4)能够对查询结果进行分类汇总,实现报表打印和下载。 (5)方便用户的操作,尽量减少用户的操作。 1.3 项目提出的意义 随着高校办学规模的扩大和招生人数的增加,学生成绩管理维护是学校管理中异常重要的一个环节,作为学校,除了育人,就是育知,学生成绩管理的计算机化是整个学校教务管理中的重要一部分,介于它的重要性,学生成绩管理系统的开发与应用就逐渐提入议程,并占着越来越重要的份量。 运用学生成绩管理维护系统可以减轻学院教学人员的工作量,缩小开支,提高工作效率与准确率,能够节省时间,学生也能够尽

6、快的知道自己的考试成绩,投入新的课程的学习或复习这次没有考过的课程。而学生成绩管理系统的应用也为今天的民办教育在未来市场的竞争力有所提高。 在现代高科技的飞跃发展,人们工作习惯的改变,特别是电脑的大量普及,人们生活节奏越来越快,怎样提高工作效率是人们首先考虑的问题。学生成绩管理是一个非常繁琐与复杂的一项工作,一个原因就是工作量大,不好管。对于一个学校而言,管理好学生的成绩,是非常重要的。因此开发出一套学生成绩管理系统是非常必要的。1.4 系统开发所用的技术准备 1.4.1 数据库技术的现状与发展 数据库是60年代末出现的一门计算机软件技术,到现在虽然只有三十多年的历史,但在理论和时间上都已经趋

7、于成熟,使我们能够方便的使用。数据库技术是信息系统的核心和基础,它的出现极大地促进了计算机应用向各行各业的渗透数据库的建设规模、数据库信息量的大小和使用频度已成为衡量一个国家信息化程度的重要标志。MySQL作为一种开放源码数据库,以其简单易用的特点广泛被广大用户采用,MySQL虽然是免费的,但同Oracle, Sybase, Informix, Db2等商业数据库一样,具有数据库系统的通用性:(1)数据库管理系统。我们知道,所谓的数据库就是一些结构化的数据的联合体,要提供对这些数据的存取、增加、修改、删除或更加复杂的数据抽取等操作,需要有一个支撑系统,这就是数据库管理系统(DBMS),MySQ

8、L完全具有这方面的功能。(2)关系型数据库管理系统。在数据库的发展历程中,曾出现过多种不同形式的数据库系统,但关系型数据库管理系统(RDBMS)以其优越性而被广为采用,象现在几种广泛使用的数据库全为关系型数据库。同样,MySQL也是关系型的数据库系统,支持标准的结构化查询语言(Structured Query Language)。(3)开放源码数据库。同商业性的数据库相比,这是MySQL最大的特点。MySQL的源码是公开的,这就意味着任何人,只要遵守GPL的规则都可以对MySQL的源码使用、修改以符合自己特殊的需求。(4)技术特点。MySQL服务器端是多线程的,为客户端提供了不同的程序接口和链

9、接库,如C、C+、Java、Perl、PHP、Tcl等,也提供了简单的管理工具,如mysqladmin,mysql等。 正因为MySQL的源码是公开的,使得我们有机会从源码级,更深入的了解MySQL。从这一层面上可以探求、了解MySQL数据库的特性:良好的内存管理机制,尤其是内存泄漏的管理,通过了Purify的严格测试;支持多种平台; 提供多种形式的API,为我们开发工具的选择提供了便利; 使用多线程的技术,可充分发挥系统的特点,避免在SMP系统中出现仅使用单CPU的现象;对磁盘表的管理采用B树加密及索引的技术,为我们快速访问数据提供了可能; 高性能的内存申请技术;临时表采用在内存中以哈希表实

10、现;提供多种数据类型;支持定长的和变长的纪录;所有的列都有缺省值,为我们的某些“粗心”提供了方便;灵活、安全的权限和密码系统,密码在传输中加密传送,允许主机端验证密码;13)客户端可以通过TCP/IP、Unix套接字、命名管道(NT)连接到MySQL数据库服务器;对多种字符集的完全支持等等许多优点。MySQL有如此多的特点,又由于其免费的特点,这就给许多的中小应用提供了不错的选择。尤其是对一些中小企业,无论是从降低成本,还是从性能方面,采用MySQL作为其数据支撑系统,都是一种可行的方案。但也应当注意,采用MySQL作为应用数据库,就意味着所有的问题都需要自己解决,要承担一定的风险。1.4.2

11、 JAVA语言的概述Java是一种简单的,面象对象的,分布式的,解释的,键壮的,安全的,结构的,中立的,可移植的,性能很优异的多线程的,动态的语言。当1995年SUN推出Java语言之后,全世界的目光都被这个神奇的语言所吸引。Java语言其实最早诞生于1991年,起初被称为OAK语言,是SUN公司为一些消费性电子产品而设计的一个通用环境。他们最初的目的只是为了开发一种独立于平台的软件技术,而且在网络出现之前,OAK可以说是默默无闻,甚至差点夭折。但是,网络的出现改变了OAK的命运。在Java出现以前。Internet上的信息内容都是一些乏味死板的HTML文档。这对于那些迷恋于WEB浏览的人们来

12、说简直不可容忍。他们迫切希望能在WEN中看到一些交互式的内容,开发人员也极希望能够在WEB上创建一类无需考虑软硬件平台就可以执行的应用程序,当然这些程序还要有极大的安全保障。对于用户的这种要求,传统的编程语言显得无能为力,而SUN的工程师敏锐地察觉到了这一点,从1994年起,他们开始将OAK技术应用于WEB上,并且开发出了HotJava的第一个版本。当SUN公司1995年正式以Java这个名字推出的时候,几乎所有的WEB开发人员都想到:噢,这正是我想要的。于是Java成了一颗耀眼的明星,丑小鸭一下了变成了白天鹅。1.4.3 编码程序设计语言是人和计算机通信的最基本的工具,它的特点必然会影响人的

13、思维和解决问题的方式,会影响人和计算机通信的方式和质量,也会影响其他人阅读和理解程序的难易程度。因此在编码时所选择的编码语言是很重要的。本系统主要使用了基于JAVA语言的JSP技术Servlet技术,Hibernate开源框架技术,Struts开源框架技术,以及HTML、CSS、XML等等语言和技术。因此该系统据有JAVA的所有优点,移植性能比较好,数据库移植也比较容易。本系统使用了许多的框架技术扩展也比较容易。在编码实现过程中,使用了基本的控制结构,每行只写一行代码,在必要的地方加了许多的注释,结构清晰,代码容易阅读。对所有的输入数据都进行了检验,并且对组合输入也进行了级联验证,输入的格式也

14、比较简单。对于验证出错的,给出详细的错误信息,使用户可以很清楚的知道自己在哪里出错了,方便用户的使用。3课程设计说明书概要设计主要写模块说明,模块结构图,系统流程图(例N-S流程图)(五号,宋体)模块说明: 在我设计的程序中一共包括了六个模块,分别是:添加模块、删除模块、排序模块、统计模块、查找模块、界面模块。这六个模块都是独立分开作为子函数的,其它五个则是作为switch语句中的一部分,通过switch语句,从界面模块中调用,把六大模块联系了起来,同时,为了实现多次使用这六大模块,在其它模块中也加入了界面模块的调用。 模块机构图: Main 函数界面模块添加信息删除信息信息排序统计信息查找信

15、息详细设计 总体流程图:各功能模块流程图:添加信息添加信息输入学号姓名成绩替换到已定义的数组中删除信息删除信息输入要删除的学号将目标数组各项都替换为0信息排序信息排序按数学按英语按C+按总分选择法冒泡法冒泡法冒泡法统计信息统计信息学号不是0人数+1 计入总分并判断是否及格YN及格人数+1Y统计总分及格率等N查找信息查找信息按学号按姓名按总分按数学按英语按C+按科目输入后与有成绩的数组中的目标项对比,相同即输出界面模块界面成绩统计成绩查找添加成绩删除成绩成绩排序成绩管理4课程设计成果程序源代码,运行结果(可用屏幕抓图的方法说明)(五号,宋体)(多页)#include #include #incl

16、ude #include using namespace std;class chengjipublic:int num;string name;int m_num;int e_num;int c_num;int t_num;int a_num;public:chengji()num=0;name=0;m_num=0;e_num=0;c_num=0;t_num=m_num+e_num+c_num;a_num=t_num/3;void tianjia(int);void shanchu(int);friend void paixu();friend void tongji();friend vo

17、id chazhao();friend void jiemian();student50;void chengji:tianjia(int tnum)string tname;int tm_num;int te_num;int tc_num;couttname;couttm_num;coutte_num;couttc_num;num=tnum;name=tname;m_num=tm_num;e_num=te_num;c_num=tc_num;t_num=m_num+e_num+c_num;a_num=t_num/3;cout添加成功!endl;jiemian();void chengji:sh

18、anchu(int n)studentn-1.num=0;studentn-1.name=0;studentn-1.m_num=0;studentn-1.e_num=0;studentn-1.c_num=0;studentn-1.t_num=0;studentn-1.a_num=0;cout删除成功!endl;jiemian();void paixu()int n1;cout请输入排序的方式:1、按数学 2、按英语 3、按C+ 4、按总分n1;switch(n1)case 1:chengji fangshi50,change;int n2,n3=-1,n4,k;for(n2=0;n250;n2

19、+)if(studentn2.num!=0)n3+;fangshin3.num=n2+1;fangshin3.name=studentn2.name;fangshin3.m_num=studentn2.m_num;if(fangshi0.num=0) cout没有数据,请重新选择!endl;jiemian();elsen4=n3+1;for(n2=0;n2n4-1;n2+)k=n2;for(n3=n2+1;n3n4;n3+)if(fangshik.m_numfangshin3.m_num)k=n3;change.num=fangshik.num;change.name=fangshik.nam

20、e;change.m_num=fangshik.m_num;fangshik.num=fangshin2.num;fangshik.name=fangshin2.name;fangshik.m_num=fangshin2.m_num;fangshin2.num=change.num;fangshin2.name=change.name;fangshin2.m_num=change.m_num;for(n2=0;n2n4;n2+)coutfangshin2.numsetw(20)fangshin2.namesetw(5)fangshin2.m_numendl;jiemian();break;ca

21、se 2:chengji fangshi50,change;int n2,n3=-1,n4;for(n2=0;n250;n2+)if(studentn2.num!=0)n3+;fangshin3.num=n2+1;fangshin3.name=studentn2.name;fangshin3.e_num=studentn2.e_num;if(fangshi0.num=0) cout没有数据,请重新选择!endl;jiemian();elsen4=n3+1;for(n2=0;n2n2;n3-)if(fangshin3.e_numfangshin3-1.e_num)change.num=fangs

22、hin3.num;change.name=fangshin3.name;change.e_num=fangshin3.e_num;fangshin3.num=fangshin3-1.num;fangshin3.name=fangshin3-1.name;fangshin3.e_num=fangshin3-1.e_num;fangshin3-1.num=change.num;fangshin3-1.name=change.name;fangshin3-1.e_num=change.e_num;for(n2=0;n2n4;n2+)coutfangshin2.numsetw(20)fangshin2

23、.namesetw(5)fangshin2.e_numendl;jiemian();break;case 3:chengji fangshi50,change;int n2,n3=-1,n4;for(n2=0;n250;n2+)if(studentn2.num!=0)n3+;fangshin3.num=n2+1;fangshin3.name=studentn2.name;fangshin3.c_num=studentn2.c_num;if(fangshi0.num=0) cout没有数据,请重新选择!endl;jiemian();elsen4=n3+1;for(n2=0;n2n2;n3-)if

24、(fangshin3.c_numfangshin3-1.c_num)change.num=fangshin3.num;change.name=fangshin3.name;change.c_num=fangshin3.c_num;fangshin3.num=fangshin3-1.num;fangshin3.name=fangshin3-1.name;fangshin3.c_num=fangshin3-1.c_num;fangshin3-1.num=change.num;fangshin3-1.name=change.name;fangshin3-1.c_num=change.c_num;fo

25、r(n2=0;n2n4;n2+)coutfangshin2.numsetw(20)fangshin2.namesetw(5)fangshin2.c_numendl;jiemian();break;case 4:chengji fangshi50,change;int n2,n3=-1,n4;for(n2=0;n250;n2+)if(studentn2.num!=0)n3+;fangshin3.num=n2+1;fangshin3.name=studentn2.name;fangshin3.t_num=studentn2.t_num;if(fangshi0.num=0) cout没有数据,请重新

26、选择!endl;jiemian();elsen4=n3+1;for(n2=0;n2n2;n3-)if(fangshin3.t_numfangshin3-1.t_num)change.num=fangshin3.num;change.name=fangshin3.name;change.t_num=fangshin3.t_num;fangshin3.num=fangshin3-1.num;fangshin3.name=fangshin3-1.name;fangshin3.t_num=fangshin3-1.t_num;fangshin3-1.num=change.num;fangshin3-1.

27、name=change.name;fangshin3-1.t_num=change.t_num;for(n2=0;n2n4;n2+)coutfangshin2.numsetw(20)fangshin2.namesetw(5)fangshin2.t_numendl;jiemian();break;default :cout输入错误,已返回主菜单endl;jiemian();break;void tongji()int n1,n2=0,n_m=0,n_e=0,n_c=0,t_m=0,t_e=0,t_c=0,t_t=0;for(n1=0;n1=60)n_m+;if(studentn1.e_num=6

28、0)n_e+;if(studentn1.c_num=60)n_c+;if(n2=0) cout对不起,无记录endl;jiemian();else cout总人数为:setw(5)n2endl数学平均分为:setw(5)t_m/n2 及格率为:setw(5)n_m*100/n2%endl英语平均分为:setw(5)t_e/n2 及格率为:setw(5)n_e*100/n2%endlC+平均分为:setw(5)t_c/n2 及格率为:setw(5)n_c*100/n2%endl总分平均分为:setw(5)t_t/n2endl;void chaozhao()int n0,n1;cout1.按学号e

29、ndl2.按姓名endl3.按课程n0;switch(n0)case 1:cout请输入要查找的学号:cznum;if(studentcznum-1.num!=0) cout 学号是 :studentcznum-1.numendl 姓名是 :studentcznum-1.nameendl数学成绩是:studentcznum-1.m_numendl英语成绩是:studentcznum-1.e_numendlC+成绩是:studentcznum-1.c_numendl;else cout对不起,您所查找的学号没有记录。endl;jiemian();break;case 2:cout请输入要查找的姓

30、名:czname;int n2=0;for(n1=0;n150;n1+)if(studentn1.name=czname) n2=1;cout=我是华丽的分割线=endl;cout 学号是 :studentn1.numendl 姓名是 :studentn1.nameendl数学成绩是:studentn1.m_numendl英语成绩是:studentn1.e_numendlC+成绩是:studentn1.c_numendl;cout=我是华丽的分割线=endl;if(n2=0) cout对不起,您所查找的姓名没有记录。endl;jiemian();break;case 3:cout请输入要查找的

31、科目编号:1.数学 2.英语 3.C+ 4.总分n3;switch(n3)case 1:for(n1=0;n150;n1+)if(studentn1.num!=0) cout学号是:setw(5)studentn1.num 姓名是:setw(20)studentn1.name 数学成绩是:setw(5)studentn1.m_numendl;n2=1;if (n2=0) cout对不起,您所查找的学号没有记录。endl;jiemian();break;case 2:for(n1=0;n150;n1+)if(studentn1.num!=0) cout学号是:setw(5)studentn1.n

32、um 姓名是:setw(20)studentn1.name 英语成绩是:setw(5)studentn1.e_numendl;n2=1;if (n2=0) cout对不起,您所查找的学号没有记录。endl;jiemian();break;case 3:for(n1=0;n150;n1+)if(studentn1.num!=0) cout学号是:setw(5)studentn1.num 姓名是:setw(20)studentn1.name c+成绩是:setw(5)studentn1.c_numendl;n2=1;if (n2=0) cout对不起,您所查找的学号没有记录。endl;jiemia

33、n();break;case 4:for(n1=0;n150;n1+)if(studentn1.num!=0) cout学号是:setw(5)studentn1.num 姓名是:setw(20)studentn1.name 总分是:setw(5)studentn1.t_numendl;n2=1;if (n2=0) cout对不起,您所查找的学号没有记录。endl;jiemian();break;default :cout输入错误,已返回主菜单endl;jiemian();break;break;void jiemian()cout欢迎使用郑撼开发的成绩排名系统,请按提示使用本软件的功能(输入数

34、字即可):endl;cout=我是华丽的分割线=endl;cout1.成绩的管理功能(添加、删除、排序)endl;cout2.成绩的统计功能(平均分,及格率等)endl;cout3.按学号、姓名、或课程名查询成绩的功能endl;cout=我是华丽的分割线=n1;switch(n1)case 1:cout1.添加endl2.删除endl3.排序n2;switch(n2)case 1:coutn3;studentn3-1.tianjia(n3);break;case 2:coutn4;studentn4-1.shanchu(n4);break;case 3:paixu();break;defaul

35、t :cout输入错误,已返回主菜单endl;jiemian();break;break;case 2:tongji();jiemian();break;case 3:chaozhao();break;default :cout输入错误,已返回主菜单endl;jiemian();break;void main()jiemian();程序运行结果1.初始界面 2.添加信息 3.删除信息4.信息排序5. 查找信息6.信息排序 5.课程设计心得本次题目设计思想较为简单,对于刚入门的人来说主要是多个模块的整合有一定的难度,通过这次课程设计我也提高了自己的程序设计、编辑、测试的水平,也认识到了自己对于文件流等方面的不足,我会继续努力改进自己的。

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!