




已阅读5页,还剩25页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
高级程序设计语言课程设计成果报告学生成绩管理系统设计与实现学生学号: 学生姓名: 学 院: 计算机学院 专业班级: 软件工程 1342 专业课程: 高级程序设计语言指导教师: 2014 年 6 月 27 日题 目学生成绩管理系统设计与实现考核项目考核内容得分平时考核(30分)出勤情况、态度、效率;知识掌握情况、基本操作技能、知识应用能力、获取知识能力系统设计(20分)分析系统的功能模块编程调试(20分)实现系统的各个功能模块,并完成调试回答问题(15分)回答老师针对课程设计提出的问题课程设计报告撰写(10分)严格按照规范要求完成课程设计报告源代码(5分)按照规范要求完成课程设计源代码的排版总 评 成 绩指导教师评语: 日期: 年 月 日目 录第1章 课程设计目的及任务11.1 课程设计目的11.2 课程设计任务1第2章 系统实现思路22.1 各个类基本功能22.2 模板框架图2第3章 系统详细设计33.1分数类的设计(class score)33.2课程类的设计(class course)33.3学生类的设计(class student)43.4班级类的设计(class grades)53.4.1 class student成员函数设计53.4.2 void student:input()的设计73.4.3 class manage_stu的设计83.4.4 void student:stu_find(student stu)的设计103.4.5 int main()10第4章 系统调试运行124.1输入文件格式124.2调试运行结果13课程设计体会16参考文献17附 录18第1章 课程设计目的及任务1.1 课程设计目的本课程设计的目的是培养应用面向对象程序设计设计方法及思想解决实际问题的能力,掌握使用面向对象程序设计语言C+,熟悉面向对象开发平台VisualC+6.0,提高调查研究、查阅技术资料以及编写技术文献的能力。1.2 课程设计任务(1)设计四个类,包括学生类(描述学生基本信息);成绩类:班级类;课程类(描述课程信息:课程编号,科目名称,如高等数学,大学英语等);(2)学生成绩及课程信息用文件保存,程序执行时从文件读入;(3)能按学期,按班级完成对学生成绩的录入、修改,能按班级统计学生的成绩;(4)求学生的总分及平均分,并能根据学生的平均成绩进行排序,能查询学生成绩,不及格科目及学生名单;能按班级输出学生的成绩单。 设置学生的成绩信息:学生学号、姓名、所选课程名称、平时成绩、期末成绩、平时成绩所占百分比。 计算学生总评成绩:总评成绩=平时成绩*平时成绩所占百分比+期末成绩*(1-平时成绩所占百分比)。 显示学生的姓名、所选课程名称以及平时成绩、期末成绩和总评成绩信息。分单人显示和以班输出(班成绩单格式输出到文件)。 注意,至少应包含一个班、30人、三门课。 第2章 系统实现思路通过类的封装,将课程类的信息储存在学生类中,学生信息储存在班级类中,程序的所有功能均通过班级类的成员函数实现。2.1 各个类基本功能各个类的数据成员用于储存其相关信息:分数类用于综合成绩的储存,学生类用于储存学生基本信息,班级类用于存放专业,编号等信息,课程类用于存放科目信息。具体内容见表2.1。表2.1 类及其数据成员类名成员分数类score总评成绩(s_tot),平均分(s_av)总分(s_sum)学生类student学生相关信息:姓名(name),性别(sex),学号(std_id),平时成绩(s_normal)等.班级类grades专业(major),班级(cla_id),人数(peop_num),学生类容器(multiset)课程类course相关课程信息:科目编号(cou_id),科目名称(cou_name)以及分数(mark)2.2 模板框架图共包括:成绩录入、增减、删除、修改、数据查询、排序显示构成。见图2.1。学生信息管理系统图 2.1 模版框架图平时各科学生信息修改删除录入增加成绩统计 操作 查询第3章 系统详细设计系统包括查询/修改个人分数,打印班级成绩单及不及格名单,并对学生排序;通过主窗体调用其他窗体,具体实现可以参照系统分析相关内容。应用系统主控界面包括记录编辑和记录查询等功能模块。记录编辑功能完成学生成绩记录编辑和记录查询功能。记录查询功能可以对数据各分类的记录进行查询。3.1分数类的设计(class score)Class score 负责储存学生的平均成绩,总成绩,综评成绩。其中:总成绩=各科成绩合,平均成绩=总成绩/科目数,总评成绩=平时成绩*平时成绩所占百分比+期末成绩*(1-平时成绩所占百分比)。class score /分数public: int s_tot; int s_av; int s_sum;3.2课程类的设计(class course)class course 负责储存课程的编号,名称,及分数代码实现:class course /课程信息 public: int cou_id;string cou_name;int mark; /分数;3.3学生类的设计(class student)class student 为class score的子类。其新增的数据成员为:学生姓名(name),性别(sex),学号(std_id),平时成绩(s_normal),平时成绩所占百分比(per),该学生选的科目数m,以及一个class course的vector容器用来储存该学生选的科目。class student char n_name10; char n_numble5; char n_sex3; float score4;public:student(); student(char name,char numble,char sex,float a,float b,float c); student(student &s); void input();/输入学生信息:姓名学号性别英语数学语文 float pj();/获取平均分 void stu_delete(student stu);/删除 void stu_find(student stu); void dispaly();/显示学生信息:姓名学号性别英语数学语文平均分 ;3.4班级类的设计(class grades)class grades储存班级的基本信息,包括专业(major),班级编号(sla_id),学生人数(peop_num),以及一个class student的multiset容器,class grades包含5个成员函数,分别实现程序的查找/修改等功能。具体内容见表3.2。表3.2 班级里成员函数功能成员函数名参数类型功能描述void input_stu()int n(学生数)输入n个学生信息voiddelete_stu() void 删除指定学号学生信息void find_stu()void查找指定学号学生并显示void sort_stu()int t_id(学号)按总分高低排序排序结显示并生成文件sortstu.txtVoid display_stu()void显示N名学生信息实现代码如下:class grades /班级private:student stuN+1;/定义N+1名学生空间public:void input_stu();/输入N名学生信息 void delete_stu();/删除指定学号学生信息 void find_stu();/查找指定学号学生并显示 void total_stu();/分别求每人总分 void sort_stu();/按总分高低排序排序结显示并生成文件 void display_stu();/显示N名学生信息;3.4.1 class student成员函数设计该函数实现读入学生信息,包括各科成绩,姓名,性别,等等。实现删除以及显示学生信息。代码实现:class student char n_name10; char n_numble5; char n_sex3; float score4;/score0英语成绩score1数学成绩,score2c语言成绩score3平均分public:student(); student(char name,char numble,char sex,float a,float b,float c); student(student &s); void input();/输入学生信息:姓名学号性别英语数学语文 float pj();/获取平均分 void stu_delete(student stu);/删除 void stu_find(student stu); void dispaly();/显示学生信息:姓名学号性别英语数学语文平均分 student:student()strcpy(n_numble,000); strcpy(n_name,noname); strcpy(n_sex,male); score0=88; score1=99; score2=95; score3=94;3.4.2 void student:input()的设计void student:input()负责输入学生信息,以及删除学生信息。代码实现:void student:input() cout输入学生信息:endl; cout请依次输入: 姓名 学号 性别 英语 数学 c语言n_namen_numblen_sexscore0score1score2; score3=(score0+score1+score2)/3.0;float student:pj() return score3;void student:stu_delete(student stu)student t; int i,k,j; char d_numble5; coutd_numble; for(i=0;iN+1;i+) j=i; k=strcmp(stui.n_numble,d_numble); if(k=0&i!=N) for(;jN;j+) stuj=stuj+1; if(k=0&i=N) strcpy(stuN.n_numble,0000); strcpy(stuN.n_name,noname); strcpy(stuN.n_sex,男); stuN.score0=0; stuN.score1=0; stuN.score2=0; stuN.score3=0; 3.4.3 class manage_stu的设计class manage_stu负责根据输入学号作为索引删除学生信息,并且查找指定学号的学生信息显示,以及排序各个学生成绩。具体代码实现如下:class manage_stu student stuN+1;/定义N+1名学生空间public: void input_stu();/输入N名学生信息 void delete_stu();/删除指定学号学生信息 void find_stu();/查找指定学号学生并显示 void total_stu();/分别求每人总分 void sort_stu();/按总分高低排序排序结显示并生成文件sortstu.txt void display_stu();/显示N名学生信息;void manage_stu:input_stu()/输入N名学生信息 int i; for(i=0;iN;i+) stui.input();void manage_stu:delete_stu()/删除指定学号学生信息student r; r.stu_delete(stu);void manage_stu:find_stu()/查找指定学号学生并显示 student t; t.stu_find(stu);void manage_stu:total_stu()/分别求每人总分 int i; for(i=0;iN+1;i+) stui.pj();3.4.4 void student:stu_find(student stu)的设计void student:stu_find(student stu)根据学号查找出学生。与grades:revise()相似。代码实现:void student:stu_find(student stu) int i,k; char d_numble5; coutd_numble; for(i=0;iN+1;i+) k=strcmp(stui.n_numble,d_numble); if(k=0) stui.dispaly(); 3.4.5 int main()的设计int main()是学生管理系统的主界面设计,从各个选项中选择。代码实现:int main() int i=1,c; manage_stu s; while(i) cout学生管理系统:endl; cout1、录入学生信息N名学生信息endl; cout2、查找endl; cout3、排序endl; cout4、删除endl;cout5、显示几名学生信息endl; cout6、退出系统endl; coutc; switch(c) case 1:s.input_stu();break; case 2:s.find_stu();break; case 3:s.sort_stu();break; case 4:s.delete_stu();break; case 5:s.display_stu();break; case 6:i=0; 第4章 系统调试运行对已经编码完毕的程序进行调试运行,发现程序错误,更改错误。将代码进一步优化,功能进一步完善。4.1输入文件格式输入文件应放于./in.dat中,其中in.dat的格式如下:姓名 学号 性别课程名称 分数 平均分输入样例:Cym 6201 M 英语 91高数 92C语言 96平均分 93Szj 6202 M英语 86高数 82C语言 81平均分 83Lhh 6203 M英语 88高数 86C语言 90平均分 88Lyr 6204 M英语 85高数 85C语言 85平均分 85Sgx 6205 M英语 84高数 86C语言 85平均分 85 4.2调试运行结果打开程序后,会提示键入要读入班级的基本信息,包括姓名,学号,性别,各科成绩。如图4.1所示。 图4.1 输入信息在输入完班级的基本信息后,程序会自动读入学生的相关信息,若文件不存在或其他原因导致文件打开失败,程序会自动生成原有信息。如图4.2所示。图4.2 文件打开失败,原始信息如果成功输入信息,程序会从中读入学生信息,并显示出主页面,这时可以根据标号选择需要执行的功能,或者选择5退出程序。见图4.3。图4.3 程序主界面若选择2查找学生信息时,输入要查询的学号即可。如图4.4。图4.4 查找学生信息 打开文件./out.dat,可以看到如图4.5的结果即打印的班级成绩单。图4.5 程序将成绩单打印到./out.dat课程设计体会通过课程设计的训练,我进一步学习和掌握了对程序的设计和编写,从中体会到了面向对象程序设计的方便与巧妙。懂得了在编写一个程序之前,要有明确的目标和整体的设计思想。另外某些具体的细节内容也是相当重要的。这些宝贵的编程思想和从中摸索到的经验都是在编程的过程中获得的宝贵财富。这些经验对我以后的编程会有很大的帮助,我要好好利用它。这次的课程设计实在同学们的互相帮助下完成的。这也使我明白了,一个程序是需要团队的协作才能准确快速完成的,懂得了互相帮助的重要性。总而言之,我会在以后的学习中更加努力锻炼自己,提高自己,让自己写出更好更完美的程序,为以后的编程打好基础!参考文献1 谭浩强.C+面向对象程序设计(第二版).清华大学出版社2 谭浩强.C+面向对象程序设计题解与上机指导.清华大学出版社3 LippmanBarbara.C+ Primer.人民邮电出版社4 Bjarne Stroustrup.The C+ Programming Language.机械工业出版社 附 录#include #includeusing namespace std;const int N=5;/*class score /分数public: int s_tot; int s_av; int s_su;class course /课程信息public:int cou_id; string cou_name; int mark; /分数;class grades /班级public:string major;int cla_id;int peop_nu;multiset stu;void fread(int n); /对成绩的录入,n个学生void revise(int t_ID); /根据学号修改学生信息void display(void); /打印班级成绩单void seek(int t_ID); /查找void failshow(void); /打印不及格学生名单;*/class student char n_name10; char n_numble5; char n_sex3; float score4;/score0英语成绩score1数学成绩,score2c语言成绩score3平均分public:student(); student(char name,char numble,char sex,float a,float b,float c); student(student &s); void input();/输入学生信息:姓名学号性别英语数学语文 float pj();/获取平均分 void stu_delete(student stu);/删除 void stu_find(student stu); void dispaly();/显示学生信息:姓名学号性别英语数学语文平均分;student:student()strcpy(n_numble,000); strcpy(n_name,noname); strcpy(n_sex,male); score0=88; score1=99; score2=95; score3=94;student:student(char name,char numble,char sex,float a,float b,float c)strcpy(n_name,name); strcpy(n_numble,numble); strcpy(n_sex,sex); score0=a; score1=b; score2=c; score3=(score0+score1+score2)/3.0;student:student(student &s) strcpy(n_name,s.n_name); strcpy(n_numble,s.n_numble); strcpy(n_sex,s.n_sex); score0=s.score0; score1=s.score1; score2=s.score2; score3=(score0+score1+score2)/3.0; void student:input() cout输入学生信息:endl; cout请依次输入: 姓名 学号 性别 英语 数学 c语言n_namen_numblen_sexscore0score1score2; score3=(score0+score1+score2)/3.0;float student:pj() return score3;void student:stu_delete(student stu)student t; int i,k,j; char d_numble5; coutd_numble; for(i=0;iN+1;i+) j=i; k=strcmp(stui.n_numble,d_numble); if(k=0&i!=N) for(;jN;j+) stuj=stuj+1; if(k=0&i=N) strcpy(stuN.n_numble,0000); strcpy(stuN.n_name,noname); strcpy(stuN.n_sex,男); stuN.score0=0; stuN.score1=0; stuN.score2=0; stuN.score3=0; void student:stu_find(student stu) int i,k; char d_numble5; coutd_numble; for(i=0;iN+1;i+) k=strcmp(stui.n_numble,d_numble); if(k=0) stui.dispaly(); void student:dispaly()cout姓名: n_name 学号: n_numble 性别: n_sex 英语: score0 数学: score1 c语言: score2 平均分: score3endl;class manage_stu/private: student stuN+1;/定义N+1名学生空间public: void input_stu();/输入N名学生信息 void delete_stu();/删除指定学号学生信息 void find_stu();/查找指定学号学生并显示 void total_stu();/分别求每人总分 void sort_stu();/按总分高低排序排序结显示并生成文件sortstu.txt void display_stu();/显示N名学生信息;void manage_stu:input_stu()/输入N名学生信息 int i; for(i=0;iN;i+) stui.input();void manage_stu:delete_stu()/删除指定学号学生信息student r; r.stu_delete(stu);void manage_stu:find_stu()/查找指定学号学生并显示 student t; t.stu_find(stu);void manage_stu:total_stu()/分别求每人总分 int i; for(i=0;iN+1;i+) stui.pj();void manage_stu:sort_stu() int i,j; student a; for(i=0;iN-1;i+) for(j=i;jN;j+) if(stui.pj()stuj.pj() a=stui; stui=stuj; stuj=a; void manage_stu:display_stu()/显示N名学生信息 student t; int i; for(i=0;iN;i+) stui.dispaly();void main() int i=1,c; manage_stu s; while(i) cout学生管理系统:endl; cout1、录入学生信息N名学生信息endl; cout2、查找endl; cout3、排序endl; cout4、删除endl;cout5、显示几名学生信息endl; cout6、退出系统endl; coutc; switch(c) case 1:s.input_stu();break; case 2:s.find_stu();break; case 3:s.sort_stu();break; case 4:s.delete_stu();break; case 5:s.display_stu();break; case 6:i=0; #include #includeusing namespace std;const int N=5;/*class score /分数public: int s_tot; int s_av; int s_su;class course /课程信息public:int cou_id; string cou_name; int mark; /分数;class grades /班级public:string major;int cla_id;int peop_nu;multiset stu;void fread(int n); /对成绩的录入,n个学生void revise(int t_ID); /根据学号修改学生信息void display(void); /打印班级成绩单void seek(int t_ID); /查找void failshow(void); /打印不及格学生名单;*/class student char n_name10; char n_numble5; char n_sex3; float score4;/score0英语成绩score1数学成绩,score2c语言成绩score3平均分public:student(); student(char name,char numble,char sex,float a,float b,float c); student(student &s); void input();/输入学生信息:姓名学号性别英语数学语文 float pj();/获取平均分 void stu_delete(student stu);/删除 void stu_find(student stu); void dispaly();/显示学生信息:姓名学号性别英语数学语文平均分;student:student()strcpy(n_numble,000); strcpy(n_name,noname); strcpy(n_sex,male); score0=88; score1=99; score2=95; score3=94;student:student(char name,char numble,char sex,float a,float b,float c)strcpy(n_name,name); strcpy(n_numble,numble); strcpy(n_sex,sex); score0=a; score1=b; score2=c; score3=(score0+score1+score2)/3.0;student:student(student &s) strcpy(n_name,s.n_name); strcpy(n_numble,s.n_numble); strcpy(n_sex,s.n_sex); score0=s.score0; score1=s.score1; score2=s.score2; score3=(score0+score1+score2)/3.0; void student:input() cout输入学生信息:endl; cout请依次输入: 姓名 学号 性别 英语 数学 c语言n_namen_numblen_sexscore0score1score2; score3=(score0+score1+score2)/3.0;float student:pj() return score3;void student:stu_delete(student stu)student t; int i,k,j; char d_numble5; coutd_numble; for(i=0;iN+1;i+) j=i; k=strcmp(stui.n_numble,d_numble); if(k=0&i!=N) for(;jN;j+) stuj=stuj+1; if(k=0&i=N) strcpy(stuN.n_numble,0000)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年新能源行业氢能产业链技术创新与市场布局报告
- 2024年自考专业(计算机应用)全真模拟模拟题(考试直接用)附答案详解
- 2024年执业药师模拟试题含答案详解(满分必刷)
- 经验总结与成长分享
- 2025网络安全面试题大全(附答案详解)
- 2023年第三季度药剂三基考试试题及答案
- 2025年环保用新材料行业研究报告及未来发展趋势预测
- 药物释放调控-洞察及研究
- 公务员考试《常识》试题及参考答案详解(考试直接用)
- 多学科远程协作模式-洞察及研究
- 《高温熔融金属吊运安全规程》(AQ7011-2024)
- 厂房搬迁管理办法
- 2025河南水投资源开发管理集团招聘11人笔试参考题库附带答案详解
- 颅内占位疑难病例讨论
- 视网膜出血的治疗及护理
- 保险学考试题(附答案)
- 心理学基础(第2版) 课件 第1章 概述
- 2025至2030银行人工智能行业市场发展前景及发展趋势与投资机会报告
- 职业少儿创意美术课件
- 国企纪法教育实施路径
- 职业人群心理健康知识讲座:减压赋能与心理调适
评论
0/150
提交评论