77范文网 - 专业文章范例文档资料分享平台

C++学生成绩统计管理系统总汇(最新最全)

来源:网络收集 时间:1970-01-01 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

南 昌 大 学

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 //引用库函数 #include //引用控制符处理 #include //字符串 using namespace std;

#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<<\学号\姓名\<<\高数成绩\大学物理成绩\<>setw(10)>>stu[total].num; cin>>setw(10)>>stu[total].name; for(int j=0;j

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;istu[j].num) {

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++学生成绩统计管理系统总汇(最新最全)在线全文阅读。

C++学生成绩统计管理系统总汇(最新最全).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/226872.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: