南 昌 大 学
C++ 选 修 课 课程设计报告
题 目: 学 院: 专 业: 姓 名: 学 号: 电 话:
2016年6月17日
1
目录
1.需求分析????????????????3
2.概要设计????????????????3
3.程序实现思路??????????????4
4.设计总结????????????????4
5.参考文献????????????????5
6.源代码?????????????????6
2
一、需求分析
经过研一下学期C++选修课的学习,对C++基于对象的程序设计有了一定的认识,根据所学的知识,设计学生成绩管理系统。
学生成绩统计管理系统是为某班级成绩统计管理的一个系统。为方便班级的管理人员对学生的信息进行管理,该系统中包括学号、姓名、大学物理、高数、C++语言,各科平均成绩、各科成绩“优秀”、“良好”、“中等”、“及格”、“不及格”的人数及其所占比例,学生的总成绩、平均成绩及成绩排名。
通过仔细研究借鉴众多相关毕业设计研究等文献资料(见参考文献一),学习书籍谭浩强《面向对象的C++程序设计》编写了该成绩管理系统。主要的功能有学生数据的增加、删除、修改、查询,另外实现一些统计的功能,例如:成绩的输入、成绩统计、总成绩统计、成绩的统计结果显示。
3
二、概要设计
1、本程序所用到的所有抽象数据类型的定义如下:
序号 1 2 3 4 5 6 成员名 num name sum range ave score[] 数据类型 long string double int double double 含义 学号 姓名 总分 排名 平均分 记录数组 2、各程序模块的功能 void input(); //输入 void count(); //计算
void sort(); //按学号升序排列 void selectsort(); //按总成绩降序排列 void insert(); //增加 int del(); //删除 void student::Exit(); //修改 void search(); //查询 void display(); //显示
以下为统计模块:
4
void count(); //计算成员函数 void average(); //计算平均值成员函数 void display(); //显示成员函数
三、程序实现思路
1.设计菜单实现功能
①成绩的输入(学号、姓名、大学物理、高数、C++语言)。 ②成绩统计(各科平均成绩、各科成绩“优秀”、“良好”、“中等”、“及格”、“不及格”的人数及其所占比例)。
③总成绩统计(学生的总成绩、平均成绩及成绩排名)。 ④成绩的统计结果显示。
⑤学生数据的增加、修改、与删除。 ⑥学生数据的读取与存储。 2.设计类与对象
class student //建立学生student类,目的是存储学生个人信息 { public:
long num; //学号 string name; //姓名
double score[n]; //学生科目成绩
double sum; //总成绩
5
double ave; //平均成绩 int range; //排名
void insert(); //增加 int del(); //删除 void search(); //查询 void student::Exit();//修改
void input(); //输入 }stu[N];
class all //建立整体all类,目的是存放学生整体信息 {
public:
double ave; //每学科的平均成绩 int people[5]; //每学科的各等级人数 void count(); //计算 void sort(); //按学号升序排列 void selectsort(); //按总成绩降序排列 void display(); //显示
double percent[5]; //每学科的各等级人数比例
void count(); //计算成员函数
6
void average(); //计算平均值成员函数 void display(); //显示成员函数
} al[n];
3.通过类的调用实现功能设计 case 0:
cout<<\cout<<\高数科统计结果为\cout<<\cout< case 1: cout<<\cout<<\大学物理科统计结果为\cout<<\cout< case 2: cout<<\cout<<\统计结果为\cout<<\cout< 7 break; case 3: if(total==0) cout<<\数组为空,请在主菜单中选择1增加数据\ else { cout<<\学生信息为:\ stu[total].count(); stu[total].display();//显示 cout< break; case 4: if (total==0) cout<<\数组为空,请在主菜单中选择1增加数据\ else { cout<<\各科学生成绩为:\al[n].average(); al[n].count(); al[n].display(); cout< 8 } break; case 5: if(total==0) cout<<\数组为空,请在主菜单中选择1增加数据\ else do { stu[total].search(); cout<<\查询成功,继续查询请输入Y/y:\ cout<<\退出请按其他键\ fflush(stdin); ch=getchar(); } while(ch=='Y'||ch=='y'); break; case 6: if(total==0) cout<<\数组为空,请在主菜单中选择1增加数据\ else do { 9 stu[total].Exit(); //修改 cout<<\修改成功,继续修改请输入Y/y:\cout<<\退出请按其他键\fflush(stdin); ch=getchar(); } while(ch=='Y'||ch=='y'); break; case 7: if(total==0) cout<<\数组为空,请在主菜单中选择1增加数据\ else do { system(\ stu[total].insert(); //增加 total++; cout<<\增加成功,继续增加请输入Y/y:\ cout<<\退出请按其他键\ fflush(stdin); ch=getchar(); cout< 10 } while(ch=='Y'||ch=='y'); break; case 8: if(total==0) cout<<\数组为空,请在主菜单中选择1增加数据\else do { system(\ if(stu[total].del()) //删除 { total--; //人数-1 system(\ } else { cout<<\该学号不存在\ system(\ system(\ } cout<<\删除成功,继续删除请输入Y/y:\ 11 cout<<\退出该选择请按其他键\ fflush(stdin); ch=getchar(); cout< while(ch=='Y'||ch=='y'); break; case 9: cout<<\此操作将删除所有记录\ cout<<\继续该操作请输入Y/y:\ cout<<\退出请按其他键\ fflush(stdin); ch=getchar(); if(ch=='Y'||ch=='y') { total=0; } break; default: cout<<\确定要退出吗?\ cout<<\退出请输入Y/y:\ fflush(stdin); 12 ch=getchar(); cout< exit(0); } break; } system(\ }while(1); } 四、设计总结 通过为期两周的努力,挑战程序设计的难度,终于将程序正确地运行。虽说只是一个简单的程序,但它却见证了我从编写、调试、修改、运行、再修改等一系列的过程,收录了我努力后的小小成果。从不断调试中遇到的错误中,我发现了自己的不足,同时也学会让自己如何面对挑战。 运用结构体、类等新学的内容让我再次感受到了学习的重要性。都说“万变不离其宗”,书本是我们课后学习的参照。因为没有重视书本,让我在编译时不断翻看,这也坚定了我努力学好这门课程的决心。 13 五、参考文献 1.谭浩强《C++程序设计》清华出版社 2007,5 六、源代码 学生成绩统计管理程序 #include #define N 100 //宏定义 #define n 3 class student //建立学生类,用于存储学生个人信息 { public: long num; //学号 string name; //姓名 double score[n]; //学生科目成绩 double sum; //总成绩 double ave; //平均成绩 int range; //排名 void input(); //输入 void count(); //计算 void sort(); //按学号升序排列 14 void selectsort(); //按总成绩降序排列 void search(); //查询 void insert(); //增加 int del(); //删除 void student::Exit(); //修改数据 void display(); //显示 }stu[N]; class all //建立整体类,用来存放学生整体信息 { public: double ave; //每学科的平均成绩 int people[5]; //每学科的各等级人数 double percent[5]; //每学科的各等级人数比例 void count(); //计算成员函数 void average(); //计算平均值成员函数 void display(); //显示成员函数 }al[n]; int total=0; //定义全局变量 void student::input() //输入学生个人信息 { 15 cout<<\请输入学生信息:\ cout<<\学号\姓名\<<\高数成绩\大学物理成绩\< cin>>setw(10)>>stu[total].score[j]; } void student::selectsort() //按总成绩降序排列 { student aa; int i,j; for(i=0;i if(stu[i].sum stu[j]=stu[i]; stu[i]=aa; } } 16 } void student::count() //计算总成绩、平均成绩 { stu[total].selectsort(); for(int i=0;i stu[i].sum=0; for(int j=0;j } } void student::sort() //按学号升序排列 { student abc; int i,j; for(i=0;i abc=stu[j]; stu[j]=stu[i]; 17 stu[i]=abc; } } void student::display() //显示学生个人信息 { selectsort(); //调用按总成绩降序排列函数 cout<<\学号\姓名\<<\高数成绩\大学物理成绩\< stu[i].range=i+1; cout< cout< void all::average() //计算各科的平均成绩 18 { for(int j=0;j long double a=0; for(int i=0;i al[j].ave=a/double(total); } } } void all::count() //计算各科的各等级人数及其比例 { for(int j=0;j int a=0,b=0,c=0,d=0,e=0; for(int i=0;i if(stu[i].score[j]<60) a++; else if(stu[i].score[j]<70) b++; else if(stu[i].score[j]<80) 19 c++; else if(stu[i].score[j]<90) d++; else e++; al[j].people[0]=a; //高数科不及格人数 al[j].people[1]=b; //高数科及格人数 al[j].people[2]=c; //高数科中等人数 al[j].people[3]=d; //高数科良好人数 al[j].people[4]=e; //高数科优秀人数 al[j].percent[0]=a/double(total); //高数科不及格人数所占的比例 al[j].percent[1]=b/double(total); //高数科及格人数所占的比例 al[j].percent[2]=c/double(total); //高数科中等人数所占的比例 al[j].percent[3]=d/double(total); //高数科良好人数所占的比例 al[j].percent[4]=e/double(total); //高数科优秀人数所占的比例 } } } void all::display( ) //输出整体信息 { for(int j=0; j 20 7.单人资料查询 8.成绩统计 46 47 9.总成绩统计 10.储存成绩 11.退出程序 八、课程设计心得: 在我们做课程设计的过程中,我遇到了很多的问题,说实话这次课程 设计自己没有出多大的力,大部分都是借鉴同学的设计成果,自己设计是总是觉得没有头绪,无从下手。看到同学认真看程序的样子,还有修改程序时的熟练,我很羡慕他,我想,我也要将C++学好,在将来能为我的就业加分。 在这期末考试前期,学院给我们安排的课程设计周,总让我们觉的有些为难我们,这样一个复杂困难而又繁琐的作业,似乎弄得我们既没有时间也没有心情复习,我曾一度地抱怨过学院,在完成它之后,我发现我错了,课程设计 48 不仅让我们巩固了所学的知识,还使得我们学习到了更多平时所忽略的,最重要的是,它磨砺了我们,让我们在大学的下一个阶段能更好的成长。 这次实验还让我进一步熟悉C++中类的概念、类的封装、继承的实现方式,加深对C++的理解,以及加强自己对VC++环境的运用,让我懂得了作为一个程序员要具备的最基本素质,要拥有的最基本的技能,要想学好软件工程就必须学好C++,而且了解了自己以后的发展方向,更为自己今后的计算机语言学习奠定了良好的基础。 通过这次的课程设计,的确学到了很多东西,同时我也看到自己还有很多不足,在以后的学习中,我会不断努力,查漏补缺,不断提高自己。 49 1. 3程序执行后的部分效果 1.1项目主菜单效果图 1.2初始化信息,第一次对信息的录入 50 百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库C++学生成绩统计管理系统总汇(最新最全)在线全文阅读。
相关推荐: