学生成绩管理系统设计与实现--C++课程设计_第1页
学生成绩管理系统设计与实现--C++课程设计_第2页
学生成绩管理系统设计与实现--C++课程设计_第3页
学生成绩管理系统设计与实现--C++课程设计_第4页
学生成绩管理系统设计与实现--C++课程设计_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、河南工程学院高级程序设计语言课程设计成果报告学生成绩管理系统设计与实现学生学号: 学生姓名: 学 院: 计算机学院 专业班级: 软件工程1342 专业课程: 高级程序设计语言 指导教师: 2014 年 6 月 27 日题 目学生成绩管理系统设计与实现考核项目考核内容得分平时考核(30分)出勤情况、态度、效率;知识掌握情况、基本操作技能、知识应用能力、获取知识能力系统设计(20分)分析系统的功能模块编程调试(20分)实现系统的各个功能模块,并完成调试回答问题(15分)回答老师针对课程设计提出的问题课程设计报告撰写(10分)严格按照规范要求完成课程设计报告源代码(5分)按照规范要求完成课程设计源代

2、码的排版总 评 成 绩指导教师评语: 日期: 年 月 日目 录第1章 系统设计目的11.1 课程设计目的11.2 课程设计主要目标11.3 课程设计内容11.4课程设计所用工具11.5课程设计任务及要求1第2章 系统实现思路22.1 类的设计22.2 自定义函数的设计32.3 主函数的设计4第3章 系统详细设计63.1 数据录入、保存功能函数63.2数据查询功能函数73.3 数据修改功能函数93.4 成绩打印函数10第4章 系统调试运行124.1 系统程序运行过程124.2 系统程序运行结果14课程设计体会16参考文献16第1章 系统设计目的1.1 课程设计目的通过高级程序设计语言课程设计,是

3、学生能将学到的面向对象的程序设计思想运用到具体的工作和学习中去,加深对类与对象的理解,是将计算机课程与实际问题相联接的关键步骤。通过课程设计,能够提高学生分析问题、解决问题,从而运用所学知识解决实际问题的能力。1.2 课程设计主要目标通过本课程设计,使学生进一步深化掌握C+语言的基本知识;掌握结构化程序设计的基本方法和设计技巧,初步了解算法分析与设计概念;理解面向对象程序设计思想,初步具备运用面向对象程序设计方法进行程序设计的能力。能熟练应用VC+集成环境进行C+语言程序的编写、编译与调试,提高学生对本课程知识综合运用能力。1.3 课程设计内容学生成绩管理系统设计与实现1.4课程设计所用工具P

4、C机、VC6.0语言编辑、编译运行工具、文档编辑软件等。1.5课程设计任务及要求根据提供的实习题目,认真完成软件设计的全部过程,并以最终软件设计成果来证明其独立完成实际任务的能力,从而,反映出理解和运用C+程序知识的水平和能力,最后完成软件设计和程序调试并提交文档:课程设计报告书,报告书中包含设计的算法及部分程序代码。第2章 系统实现思路2.1 类的设计第一步建立四个类用于描述各个操作对象的基本信息class score /分数信息类public: /各科期末成绩 int s_math; int s_english; int s_c; /各科成绩 int s_total_m; int s_to

5、tal_e; int s_total_c; int s_average; /综评成绩 int s_sum; /总成绩;class course /课程信息类public: int cou_id; /科目编码 string cou_name; /科目名称;class student:public score /学生信息类public: string name; /学生姓名 string sex; /学生性别 int std_id; /学号 /各科平时成绩 int s_normal_m; int s_normal_e; int s_normal_c; double per; /平时成绩所占百分比

6、friend bool operator stu2.s_average; ;class grades /班级信息类public: string major; int cla_id; int peop_num; multisetstu; /储存学生信息/包含自定义函数 void fread(int n); /录入学生信息 void seek(int m_std_id); /查找 void revise(int m_std_id); /学生信息修改 void display(void); /按班级输出成绩 void display1(void); /查找成绩不及格同学并输出相关不及格科目;2.2

7、自定义函数的设计第二步设计功能函数用于操作第一步中所建立的操作对象以实现系统功能的核心步骤void fread(int n); /录入学生信息void seek(int m_std_id); /查找(按学号)void revise(int m_std_id); /学生信息修改(按学号)void display(void); /按班级输出成绩void display1(void); /查找成绩不及格同学并输出相关不及格科目2.3 主函数的设计第三部建立实际操作对象,运用自定义函数实现系统功能int main() /主函数,用来实现系统功能int c; int t; grades cla; /定义

8、操作对象 cout*endl; cout请输入专业cla.major; cout请输入班级cla.cla_id; cout请输入学生人数:cla.peop_num; cla.fread(cla.peop_num); while(1) system(cls); cout1_修改学生信息endl; cout2_打印班级成绩单endl; cout3_打印个人成绩单endl; cout4_打印不及格学生名单endl; cout5_退出c; switch (c) case 1: coutt; cla.revise(t); break; case 2: cla.display(); break; case

9、 3: coutt; cla.seek(t); break; case 4: cla.display1(); break; case 5: return 0; default: cout输入错误!endl; system(pause); return 0;第3章 系统详细设计3.1 数据录入、保存功能函数该函数运用C+面向对象程序设计(谭浩强版)一书中的“文件操作与文件流”章节中所介绍的知识,通过使用VC+编译器中的库函数进行学生信息的录入与保存工作。说明:每一个打开的文件都有一个文件指针,该指针的初始位置是由I/O方式指定,每次读写都从文件指针的当前位置开始。每读入一个字节,指针就后移一个字

10、节。当文件指针移到最后,就会遇到文件结束EOF(文件结束符也占一个字节,其值为-1),此时流对象的成员函数eof的值为非0值(一般设为1),表示文件结束了。这就是该输入方式的运行机制。void grades:fread(int n) /按照学生信息录入成绩 student tem; ifstream infile(f1.txt,ios:in);/录入f1.txt文件中的信息 if(! infile) cerr open error!endl; exit(1); for(int i=0;tem.sextem.std_idtem.pertem.s_normal_mtem.s_no

11、rmal_etem.s_normal_c;infiletem.s_mathtem.s_englishtem.s_c;tem.s_total_m=tem.s_normal_m*tem.per+tem.s_math*(1-tem.per); tem.s_total_e=tem.s_normal_e*tem.per+tem.s_english*(1-tem.per); tem.s_total_c=tem.s_normal_c*tem.per+tem.s_c*(1-tem.per); tem.s_sum=tem.s_total_m+tem.s_total_e+tem.s_total_c; tem.s_

12、average=(tem.s_sum)/3; stu.insert(tem); infile.close();3.2数据查询功能函数根据自定义函数设定,在对学生进行成绩录入时唯一不会改变、不会出现错误的就是学生的学号,所以该函数使用学生信息中的学号为操作对象进行学生成绩查询基本不会出现太大的问题。void grades:seek(int m_std_id) /按学号查找学生 student temstu; temstu.std_id=m_std_id; multiset:iterator iter; iter=stu.find(temstu); if(iter!=stu.end() cout姓

13、名:(*iter).nameendl; cout学号:(*iter).std_idendl; cout高等数学1:(*iter).s_normal_m大学英语1:(*iter).s_normal_e程序设计1:(*iter).s_normal_cendl; cout高等数学2:(*iter).s_math大学英语2:(*iter).s_english程序设计2:(*iter).s_cendl; cout高等数学:(*iter).s_total_m大学英语:(*iter).s_total_e程序设计:(*iter).s_total_cendl; cout总成绩:(*iter).s_sumendl

14、; cout综评成绩:(*iter).s_averageendl; else cout找不到该学生!endl;运用条件函数查找学生中成绩不及格的学生同时将这些名单及不及格科目进行打印。void grades:display1(void) /查找各学科不及格学生名单 student stu1; multiset:iterator iter; iter=stu.find(stu1); if(iter!=stu.end() if(*iter).s_total_m60|(*iter).s_total_e60|(*iter).s_total_c) cout姓名:(*iter).nameendl; cou

15、t不及格科目:endl; if(*iter).s_total_m60) cout高等数学endl; if(*iter).s_total_e60) cout大学英语endl; if(*iter).s_total_c60) cout程序设计endl; 3.3 数据修改功能函数根据自定义函数设定,在对学生进行成绩录入时唯一不会改变、不会出现错误的就是学生的学号,所以该函数使用学生信息中的学号为操作对象进行学生成绩查询基本不会出现太大的问题。void grades:revise(int m_std_id) /学生信息修改 student temstu; temstu.s_sum=0; temstu.s

16、td_id=m_std_id; multiset:iterator iter; iter=stu.find(temstu); if(iter!=stu.end() cout请输入要修改的学生信息endl; cout期末成绩:temstu.s_math; cintemstu.s_english; cintemstu.s_c; cout平时成绩:temstu.s_normal_m; cintemstu.s_normal_e; cintemstu.s_normal_c; cout平时成绩所占百分比temstu.per; temstu.s_total_m=temstu.s_normal_m*temst

17、u.per+temstu.s_math*(1-temstu.per); temstu.s_total_e=temstu.s_normal_e*temstu.per+temstu.s_english*(1-temstu.per); temstu.s_total_c=temstu.s_normal_c*temstu.per+temstu.s_c*(1-temstu.per); temstu.s_sum=temstu.s_total_m+temstu.s_total_e+temstu.s_total_c;temstu.s_average=(temstu.s_sum)/3;cout姓名temstu.n

18、ame;cout性别:temstu.sex;stu.erase(iter); /删除旧元素tu.insert(temstu); /插入新元素 else cout找不到该学生endl;3.4 成绩打印函数通过主函数进行控制使该函数运行,从而达到打印班级成绩单的目的,该函数同样运用C+面向对象程序设计(谭浩强版)一书中的“文件操作与文件流”章节中所介绍的知识,具体内容可翻阅查看。 void grades:display(void) /按照班级打印学生成绩单 multiset:iterator iter; /multiset容器,提取fread函数向容器中储存的学生信息 ofstream outfi

19、le(f1.txt,ios:out); if(! outfile) cerr open error!endl; exit(1); outfile专业:major班级:cla_id人数peop_numendl; outfile姓名t性别t学号t高等数学1t高等数学t大学英语1t大学英语t程序设计1t程序设计t总成绩tt综评成绩tendl; for(iter=stu.begin();iter!=stu.end();iter+) outfile(*iter).namet(*iter).sext(*iter).std_idt; outfile(*iter).s_math(*iter).s_total_

20、mt; outfile(*iter).s_english(*iter).s_total_et; outfile(*iter).s_c(*iter).s_total_ct; outfile(*iter).s_sum(*iter).s_averageendl; outfile.close();第4章 系统调试运行4.1 系统程序运行过程输入班级信息,按照班级信息进行下一步操作 图4.1 输入信息按照学生学号对学生信息进行修改并储存到原文件中图4.2 修改学生信息按照班级信息将班级成绩单打印并储存到D:白亚胜rDebugr.exe文件中图4.3 打印班级成绩单按照学生学号单独打印成绩并储存到D:白亚

21、胜rDebugr.exe文件中图4.4 打印个人成绩单按照学生基本信息将成绩不及格学生名单进行打印并将结果储存到D:白亚胜rDebugr.exe文件中图4.5 打印不及格学生名单4.2 系统程序运行结果原文件中储存的学生信息经过“1”操作之后背修改的原文件信息经过“2”操作之后按照班级信息打印的班级成绩单专业:软件工程 班级:1342 人数:30姓名 性别 学号 高等数学1 高等数学 大学英语1 大学英语 程序设计 程序设计 总成绩 综评成绩Caomein 103 80 88 90 89 80 88 265 88Sukim n 115 90 90 90 89 80 87 264 88Ruo n

22、 116 90 90 90 89 80 87 266 88Pdd n 101 90 90 90 89 50 81 260 86Misda n 102 90 90 90 89 50 81 260 86Dlink n 110 90 90 90 81 80 85 256 85Jiing n 116 90 90 90 89 80 87 266 88Fzaf n 101 90 90 90 89 50 81 260 86Clear n 110 90 90 90 81 80 85 256 85Namei n 118 92 94 98 89 98 85 265 89Carry n 116 90 90 90 8

23、9 80 87 266 88Larry n 110 90 90 90 81 80 85 256 85Macel n 116 90 90 90 89 80 87 266 88Harry n 118 92 94 98 89 98 85 265 89Harry n 118 92 94 98 89 98 85 265 89Harry n 118 92 94 98 89 98 85 265 89Harry n 118 92 94 98 89 98 85 265 89Harry n 118 92 94 98 89 98 85 265 89Harry n 118 92 94 98 89 98 85 265

24、89Harry n 118 92 94 98 89 98 85 265 89Harry n 118 92 94 98 89 98 85 265 89Harry n 118 92 94 98 89 98 85 265 89Harry n 118 92 94 98 89 98 85 265 89Harry n 118 92 94 98 89 98 85 265 89Harry n 118 92 94 98 89 98 85 265 89Harry n 118 92 94 98 89 98 85 265 89课程设计体会这次的课程设计是一次可以让我所学的理论与实际相结合的机会,老师布置了学生成绩管理

25、系统这一题目。通过这次比较完整的一个程序的设计,我走出了纯理论的学习。理论与实际相结合的设计,锻炼了我综合运用所学的基础知识,解决实际问题的能力。而且通过对整体的掌控,对局部的取舍,以及对细节的斟酌处理,都使我的能力得到了锻炼,我的各方面经验都得到了极大的丰富。和老师以及同学的沟通交流更使我对程序整体的规划与设计有了新的认识。我会在以后的工作和学习中不断的弥补不足之处,在以后的生活中也要保持同样的态度,不断地完善自己。参考文献1谭浩强.C+面向对象程序设计. 清华大学出版社2谭浩强.C面向过程程序设计. 清华大学出版社3 Kenneth C.Louden.编译原理及实践. 机械工业出版社4H.

26、M.Deitel(美) P.J.Deitel(美).C+大学教程. 电子工业出版社5Herbert Schildt.C+编译艺术. 清华大学出版社6Al Stevens Clayton Walnum(美).标准C+宝典. 电子工业出版社#include #include #include #include #include #include #include #include using namespace std;class score /分数信息public: /各科期末成绩 int s_math; int s_english; int s_c; /各科成绩 int s_total_m;

27、int s_total_e; int s_total_c; int s_average; /综评成绩 int s_sum; /总成绩;class course /课程信息public: int cou_id; /科目编码 string cou_name; /科目名称;class student:public score /学生信息public: string name; /学生姓名 string sex; /学生性别 int std_id; /学号 /各科平时成绩 int s_normal_m; int s_normal_e; int s_normal_c; double per; /平时成绩

28、所占百分比 friend bool operator stu2.s_average; ;class grades /班级信息public: string major; int cla_id; int peop_num; multisetstu; /储存学生信息 void fread(int n); /录入学生信息 void seek(int m_std_id); /查找 void revise(int m_std_id); /学生信息修改 void display(void); /按班级输出成绩 void display1(void); /查找成绩不及格同学并输出相关不及格科目;void gr

29、ades:fread(int n) /按照学生信息录入成绩 student tem; ifstream infile(f1.txt,ios:in); if(! infile) cerr open error!endl; exit(1); for(int i=0;tem.sextem.std_idtem.pertem.s_normal_mtem.s_normal_etem.s_normal_ctem.s_mathtem.s_englishtem.s_c; tem.s_total_m=tem.s_normal_m*tem.per+tem.s_math*(1-tem.per); t

30、em.s_total_e=tem.s_normal_e*tem.per+tem.s_english*(1-tem.per); tem.s_total_c=tem.s_normal_c*tem.per+tem.s_c*(1-tem.per); tem.s_sum=tem.s_total_m+tem.s_total_e+tem.s_total_c; tem.s_average=(tem.s_sum)/3; stu.insert(tem); infile.close();void grades:display(void) /按照班级打印学生成绩单 multiset:iterator iter; /m

31、ultiset容器,提取fread函数向容器中储存的学生信息 ofstream outfile(f2.txt,ios:out); if(! outfile) cerr open error!endl; exit(1); outfile专业:major班级:cla_id人数peop_numendl; outfile姓名t性别t学号t高等数学1t高等数学t大学英语1t大学英语t程序设计1t程序设计t总成绩t综评成绩tendl; for(iter=stu.begin();iter!=stu.end();iter+) outfile(*iter).namet(*iter).sext(*iter).st

32、d_idt; outfile(*iter).s_matht(*iter).s_total_mt; outfile(*iter).s_englisht(*iter).s_total_et; outfile(*iter).s_ct(*iter).s_total_ct; outfile(*iter).s_sumt(*iter).s_averagetendl; outfile.close();void grades:display1(void) /查找各学科不及格学生名单并进行打印 student stu1; multiset:iterator iter; iter=stu.find(stu1); i

33、f(iter!=stu.end() if(*iter).s_total_m60|(*iter).s_total_e60|(*iter).s_total_c) cout姓名:(*iter).nameendl; cout不及格科目:endl; if(*iter).s_total_m60) cout高等数学endl; if(*iter).s_total_e60) cout大学英语endl; if(*iter).s_total_c60) cout程序设计endl; void grades:seek(int m_std_id) /按学号查找学生 student temstu; temstu.std_id

34、=m_std_id; multiset:iterator iter; iter=stu.find(temstu); if(iter!=stu.end() cout姓名:(*iter).nameendl; cout学号:(*iter).std_idendl; cout高等数学1:(*iter).s_normal_m大学英语1:(*iter).s_normal_e程序设计1:(*iter).s_normal_cendl; cout高等数学2:(*iter).s_math大学英语2:(*iter).s_english程序设计2:(*iter).s_cendl; cout高等数学:(*iter).s_total_m大学英语:(*iter).s_total_e程序设计:(*iter).s_total_cendl; cout总成绩:(*iter).s_sumendl; cout综评成绩:(*iter).s_averageendl; else cout找不到该学生!endl;void grades:revise(int m_std_id) /学生信息修改 student temstu; temstu.s_sum=0; temstu.std_id=m_std_id; multis

温馨提示

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

评论

0/150

提交评论