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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

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

1、学生成绩管理系统课程设计报告C+实现C+课程设计报告课程设计题目: 学生成绩管理系统 学 生 姓 名 : 吴 深 深 学 号: 201420181013 专 业: 软 件 工 程 班 级: 1421810 指 导 教 师 : 邓 微 2015年 6 月 27 日目 录1功能需求分析 32总体设计 33数据结构的设计 54算法设计 84.1 总体的算法设计 84.2较难部分的算法设计 94.2.1 密码验证模块 94.2.2 降序排序部分 94.2.3 打开已有文件部分 115.程序代码 126. 运行环境 247.运行结果 248.课程设计总结 28学生成绩管理系统课程设计报告1功能需求分析学

2、生成绩管理是一个学校必不可少的部分,随着计算机和计算机知识的普及,学生成绩管理系统得到了更大的发展空间,通过对学生成绩管理系统的开发,可以提高校务人员的工作效率。本系统具有以下基本功能:1、功能菜单实现功能选择; 2、输入功能:输入学生信息,并保存到文件中;3、计算每个学生的总分与平均分并排序4、能根据学号修改学生信息5、能根据学号删除学生信息6、查询功能:1)能够根据学号查询学生信息;2)能够根据姓名、班级查询学生信息3)统计学生成绩,按照班级和科目计算平均分。2总体设计根据以上功能需求,本系统定义了一下函数,来逐步实现。(1)void input_student( );该函数实现从键盘中录

3、入学生成绩,并且保存给学生类数组。(2)void rank_down( );该函数以总分对学生降序排序,该函数会从每个学生的成员函数中调用int get_sum( )函数,在调用函数时,被调函数根据输入数据计算出总分并且返回给主调函数。排序以冒泡法实现,排序完成后,再依次给每个学生的数据成员rank(名次)赋值。(3)void save_student( );在有数据后,该函数可以实现数据以十进制的方式保存,保存时,可以自己输入文件名以及保存地址。(4)void rwrite_student();该函数实现对学生成绩等信息进行修改,修改前,以学号先查找到该学生,并且输出其详细信息,方便操作者进

4、行修改。(5)void delete_student();该函数能够以学号为依据,实现对象的删除,并且删除后该位置会被写一个数据填充。(6)void serch_menu();该函数被调用后系统会进入查看菜单,可选择以不同的方式查看学生的成绩信息。按照不同的选择,该函数会调用一下函数。 void surch_number();该函数以学号为依据实现精确查找。 void surch_CLASS();能够根据姓名、班级查询学生信息void detial_class();该函数能够汇总您要查询的班级详细情况,功能包括人数,每个人都详细情况,班级平均分,和该班级的各个科目的平均分。void subje

5、ct_ave();该函数能够计算出所有科目的平均分。(7)void open_file();该函数可以打开已经保存的学生信息,并且显示到屏幕上,打开后可以进行上述的各种操作。除此之外,还写了void main_menu();主菜单,实现对上述各个功能的选择。3数据结构的设计UML类图数据结构的代码设计如下:const int N = 5000; /student sNstatic int count=N; /控制学生的操作数,默认值为N,在main中会提示改变class student /定义学生类private: string name, sex, number, CLASS; int ch

6、inese, math, english, comprehensive, sum, ave, rank;public: string get_name() /外部接口,查询信息时用到。 return name; string get_number() /外部接口,查询信息时用到。 return number; int get_chinese() /外部接口,分班级处理时用到。 return chinese; int get_math() /外部接口,分班级处理时用到。 return math; int get_english() /外部接口,分班级处理时用到。 return english;

7、int get_comprehensive() /外部接口,分班级处理时用到。 return comprehensive; int get_sum() /总分是排序的依据,在输出信息和排序时会产生 sum = chinese + math + english + comprehensive; return sum; int get_ave() ave = (chinese + math + english + comprehensive) / 4; return ave; string get_CLASS() return CLASS; void set_rank(int rank) /对多个

8、学生进行排序时产生产生名次 this-rank = rank; void set_Rn(int nsum, int nave, int nrank) /我把总分、平均数和名次称为余项。 /这些数据在基本数据录入后会产生。 sum = nsum; /提供这个外部接口用于从文件中读取这些数据 ave = nave; rank = nrank; friend istream & operator (istream & in, student &cs) /重载插入符,实现输入基本数据 in cs.CLASS cs.number cs.name cs.sex cs.chinese cs.math cs.

9、english prehensive; return in; friend ostream & operator (ostream & out, student &cs) /重载提取符,实现格式输出详细信息 out cs.CLASS t cs.number t cs.name t cs.sex t cs.chinese t cs.matht cs.english t prehensive t cs.get_sum() t cs.get_ave() t cs.rank t)和提取符()。但是11个数据成员中只有8个是是从键盘输入,所以重载插入符时仅仅实现了8个基本数据的输入。另外3个数据有两个是

10、通过调用get_ave()和get_sum()时由基本数据自动算出并返回给调取位置,另外一个排名rank是在降序排序时产生。所以,在重载提取符时实现了11个数据的格式输出。所以文件中,每个成员有11个数据,通过重载的提取符只能提取8个,另外三个暂时保存在临时定义的sum,ave,rank中,通过对象的成员函数void set_Rn(int nsum, int nave, int nrank)把剩余的三个值对象的数据成员。从而避免从文件中读取数据时出现读取错位的现象。5.程序代码 请注意参考注释#include#include#includeusing namespace std;const i

11、nt N = 5000; /student sNstatic int count=N; /控制学生的操作数,默认值为N,在main中会提示改变void mima( ); /函数的声明void input_student();void rank_down();void save_student();void rwrite_student();void delete_student();void serch_menu();void open_file();void surch_number();void surch_CLASS();void detial_class();void subject_

12、ave();class student /定义学生类private: string name, sex, number, CLASS; int chinese, math, english, comprehensive, sum, ave, rank;public: string get_name() /外部接口,查询信息时用到。 return name; string get_number() /外部接口,查询信息时用到。 return number; int get_chinese() /外部接口,分班级处理时用到。 return chinese; int get_math() /外部接口

13、,分班级处理时用到。 return math; int get_english() /外部接口,分班级处理时用到。 return english; int get_comprehensive() /外部接口,分班级处理时用到。 return comprehensive; int get_sum() /总分是排序的依据,在输出信息和排序时会产生 sum = chinese + math + english + comprehensive; return sum; int get_ave() ave = (chinese + math + english + comprehensive) / 4;

14、 return ave; string get_CLASS() return CLASS; void set_rank(int rank) /对多个学生进行排序时产生产生名次 this-rank = rank; void set_Rn(int nsum, int nave, int nrank) /我把总分、平均数和名次称为余项。 /这些数据在基本数据录入后会产生。 sum = nsum; /提供这个外部接口用于从文件中读取这些数据 ave = nave; rank = nrank; friend istream & operator (istream & in, student &cs) /

15、重载插入符,实现输入基本数据 in cs.CLASS cs.number cs.name cs.sex cs.chinese cs.math cs.english prehensive; return in; friend ostream & operator (ostream & out, student &cs) /重载提取符,实现格式输出详细信息 out cs.CLASS t cs.number t cs.name t cs.sex t cs.chinese t cs.matht cs.english t prehensive t cs.get_sum() t cs.get_ave()

16、t cs.rank t endl; return out; student() ;student sN; /N=5000,但是学生的操作数是由count控制void mima() /密码设置与验证模块 string mima, mima1; ifstream mimafile(mima.txt); if (mimafile.fail() /检验是否设置过密码 cout 您是第一次使用本系统,请设置密码: mima; cout 请再输入一次: mima1; if (mima = mima1) ofstream mimafile; mimafile.open(mima.txt); mimafile

17、 mima; cout 密码设置成功! endl; /设置密码成功,会生成密码内容的文件 else /当设置密码两次输入不一致,重新设置 do cout 两次输入不一致,请重新输入: mima; cout 请再输入一次: mima1; while (mima != mima1); ofstream mimafile; mimafile.open(mima.txt); mimafile mima; cout 密码设置成功! endl; else /若之前设置过密码,可以直接进入密码验证模块 string mima, mima1; cout 检验您之前设置过密码,请输入密码: mima1; mim

18、afile mima; if (mima != mima1) int i = 2; for (; i 0; i-) cout 密码错误,请重新输入(您还有 i 次机会): mima1; if (mima1 = mima) mimafile.close(); break; if (i = 0) exit(0); mimafile.close(); else mimafile.close(); return ;void input_student( ) /输入学生信息 system(cls); cout 请按照下面格式输入 endl 班级t学号t姓名t性别t语文t数学t英语t综合 endl; fo

19、r (int i = 0; i si; void save_student( ) /保存学生信息 system(cls); string filename; cout 请输入文件名字: filename; /getline(cin, filename, n); fstream studentfile(filename, ios:out); studentfilecount; /学生的个数也会被保存到文件中,目的是方便文件读取 studentfileendl; for (int i = 0; i count; i+) studentfile si; studentfile.close(); co

20、ut 数据已经成功保存为文件filenameendl;void rwrite_student( ) /修改学生成绩信息 system(cls); char F; string number; do /用do循环实现持续的修改 int i = 0; cout number; for (i = 0; i count; i+) if (number = si.get_number() cout 修改前,学生信息为: endl; cout 班级t学号t姓名t性别t语文t数学t英语t综合t总分t平均t名次 endl; cout si; cout 请按照下面格式输入 endl 班级t学号t姓名t性别t语文

21、t数学t英语t综合 si; cout 数据修改成功! = count) cout 查无此人! endl; cout F; while (F != n);void delete_student( ) /删除学生信息 system(cls); char F,P; string number; do int i = 0; cout number; for (i = 0; i count; i+) if (number = si.get_number() cout 要删除的学生信息为: endl; cout 班级t学号t姓名t性别t语文t数学t英语t综合t总分t平均t名次 endl; cout si;

22、 cout 是否删除?(输入任意键继续,输入n取消本次操作。) P; if (P != n) for (; i N - 1; i+) si = si + 1; /数据删除过程 cout 数据删除成功! endl; count-; /数据删除后,就少了一个,计数变量自减 break; cout F; while (F != n);void surch_number( ) /按照学号查找学生成绩信息 system(cls); char F; string number; do /用do实现持续删除 int i = 0; cout number; for (i = 0; i count; i+) if (number = si.get_number() cout 该学生详细信息为: endl; cout 班级t学号t姓名t性别t语文t数学t英语t综合t总分t平均t名次 endl; cout si; cout 查询结束! = count) cout 查无此人! endl; cout F; while (F != n);void surch_CLASS( ) /按照班级和姓名实现学生信息的查找 system(cls); char F; string name,CLASS; do /用do循环实现持续的查找

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

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