1、 实践教学 ******************* XXX大学 计算机和通信学院 秋季学期 C++程序设计 课程设计 题 目:学生成绩管理系统 专业班级: 姓 名: 学号: 指导老师: 学生成绩管理系统 摘要:此次课程设计采取面向对象C++语言,开发了一个基础学生成绩管理系统,该系统含有了按班级完成对学生成绩信息录入和修改,并用文件保留。实现按班级输出学生成绩单;实现按学号和姓名进行查询,按平均成绩进行排序功效,对学生管理也能够愈加方便
2、快捷。 采取方法和过程: (1)将学生信息存入文件中,并命名为:score.txt; (2)编译一个C++语言函数,其中包含三个类:Person类(人员基础属性),student类(继承Person),Manage类(实现对成绩信息操作)。 (输入学号时必需是6位以上字符串,不许可反复。) 意义: 使学生对成绩管理有所了解,而且培养学生分析能力和动手能力、增强学生对书本理论知识巩固。 关键词:面向对象C++;课程设计;学生成绩管理系统。 目 录 2需求分析 4 2.1 产品需求概述 4 2.1.1 功效介绍 4 2.1.2 运行环
3、境 5 2.1.3 限制条件(可选) 5 2.2 功效需求 5 2.2.1功效1 6 2.2.2功效2 6 2.2.3功效3 6 2.2.4功效4 6 管理员能够根据班级输出学生成绩单。 6 2.2.5功效5 6 2.2.6 功效6 6 退出系统 6 2.3 数据描述 6 3概要 7 3具体设计 7 3.1 系统关键函数说明 7 3.1.1 函数 7 源程序: 16 学生成绩管理系统 (1)以学校学生成绩管理业务为背景,经过调研、分析现有管理模式和已经有管理软件,建立系统模型; (2)完成软件结构设计和算法设计;
4、 (3)完成系统软件开发和测试工作; (4)撰写设计说明书; (5)做好答辩工作。 2需求分析 2.1 产品需求概述 2.1.1 功效介绍 1.学生成绩管理在日常生活中利用十分广泛,所以需要用很多程序来对它们进行管理,此程序包含了学生成绩录入,学生成绩查询和排序,学生成绩添加及修改等。 2.总体程序框图学生成绩管理系统 按平均分显示 退出系统 按班录入学生成绩 按班输出学生成绩 修改成绩 查询个人成绩 按学号查询
5、 按姓名查询 2.1.2 运行环境 1.硬件环境: 主机、显示器、优盘、外部设备等。 2.软件环境: 操作系统、网络软件、数据库系统和其它特殊软件要求。 2.1.3 限制条件(可选) (1)必需使用或避免特定技术、工具、编程语言和数据库; (2)现在所掌握只是较少,对于有些函数不能很好编译,使系统不能完成部分高端任务; (3)系统对外部原因存在依靠,需要有其它组件参与才能够完成任务。 2.2 功效需求 按班级完成对学生成绩信息录入和修改,并用文件保留。实现按班级输出学生成绩单;实现按学号和姓名进行查询,按平均成绩进行排序功效。
6、2.2.1功效1 按班录入全部学生成绩信息 管理员能够录入学生班级,姓名,学号,各科成绩等信息。 2.2.2功效2 查询个人成绩(拥有二级菜单:学号,姓名) 能够经过输入学号或姓名查询学生成绩。 2.2.3功效3 修改成绩(按学号,课程) 管理员能够修改学生信息。 2.2.4功效4 按班输出成绩单 管理员能够根据班级输出学生成绩单。 2.2.5功效5 按平均分显示 能够直接根据平均分显示学生成绩。 2.2.6 功效6 退出系统 2.3 数据描述 学生成绩管理系统 退出系统 按平均分显示 按班输出学生成绩 修改成绩 查询个人成绩 按班录
7、入学生成绩 按姓名查询 按学号查询 3概要 本系统关键依据学生成绩管理为背景,进行软件设计和开发。该系统关键经过三个类,一个文件用于录入学生成绩信息。分为五大模块,以完成对学生成绩录入,查询,修改,显示,输出等功效。 3具体设计 3.1 系统关键函数说明 1)主函数main():定义学生结构体数组,调用录入、统计等函数对成绩表进行处理; 2)录入函数Input():输入班级到政治课成绩; 3)统计函数Statistic():计算平均成绩; 4)查询函数Lookup():查询指定学号学生成绩统计; 5)修改函数Modify():修改指定学号学生成
8、绩统计; 6)删除函数Delete():删除指定学号学生统计; 7)输出函数Output():输出班级全部学生成绩统计; 8) 排序函数Sort():按平均分对学生成绩统计项进行降序排序; 9)插入函数Insert():按平均分次序插入新统计。 3.1.1 函数 【功效】主函数 依据学生成绩管理系统要求,对学生成绩等信息实现录入,查询,修改,输出,显示等功效。 4系统测试 界面 功效一:录入学生成绩 功效二:显示学生成绩 功效三:查找学生成绩 1. 按学号查找 2. 按姓名查找
9、 功效四:修改学生成绩 功效五:插入学生信息 功效六:排列管理成绩 功效七:显示班级学生成绩 功效零:退出系统 5总结 经过这次课程设计,使我对面向对象C++语言有了更深入认识和了解,想要学好它重在于实践,要经过不停地上机操作才能愈加好学习它,我也发觉我自己好多不足之处。经过学习也有所改善,再又对面向对象C++语言部分函数不太了解,所以在以后学习过程中我会愈加重视实践操作。在课程设计过程中,收获知识和提升能力同时,我也知道怎样去制订和实现计划。课程设计是培
10、养学生综合利用所学知识发展提出分析和处理实际问题,锻炼实践能力关键步骤是对学生实际工作能力具体训练和考察过程 。伴随科学技术日新月异,从拿到题目到完成整个编程,从理论到实践,能够学到很多东西。同时不仅能够巩固以前书本中知识,而且还学到书本以外知识。 经过课程设计使我们知道理论和实践结合是十分关键,只有理论知识是远远不够,只有把所学理论知识和课外实践很好地结合起来,才能对自己专业知识有所了解,或说是为自己以后专业知识学习做以铺垫。在课程过程中发觉了自己部分显著不足,如对面向对象C++语言基础知识掌握不牢靠,不能很好地利用自己以前所学内容进行编程,而且不能够在特定环境下做到仔细认真,很小问题在编
11、程过程中出现很数次。不过在老师耐心教导下,我们逐步进入状态,而且做了一个简单学生成绩管理系统。经过对整个系统设计,编译,使我们对各个系统有所了解。在整个系统中,内容包含很多,利用函数也十分复杂,所以过程中容不得半点马虎。当然在操作过程中也碰到部分大问题,如文件操作,需要有模块化思维能力,也就是在编程任意功效模块和函数时候需要全方面思索,不能够局限于完成目前任务简单思绪上,不能够让模块脱离整个系统。 总而言之,在课设过程中,学到了很多课外东西 ,而且自己对面向对象C++语言有了更深入了解。自己动手能力和分析能力有了很大程度提升,这两周看似过很是悠闲但却是受益匪浅。 致 谢
12、 很感谢张玺君老师和马维俊老师指导,在设计中我们碰到了很多编程问题,最终在老师指导下,我们慢慢地进入状态,顺利完成了全部编程题目。天天我们在机房编写程序,老师们也是寸步不离,帮助我们处理问题,因为编程是在英文状态下进行,很多单词不知道意思,造成不懂提醒错误源头意思,从而无法找犯错误原因。在这方面老师给我们提供很大帮助。在程序出现错误时候老师耐心讲解,查找错误帮我们调试。在此,我们对各位辛勤工作老师致以最真挚感谢。
附录:
源程序:
#include
13、lude
14、[]) ; friend void Modify(student stud[]) ; friend void Output(student stud[]) ; friend void Insert(student stud[]) ; friend void Write(student stud[],int n); friend int Read(student stud[]); private: int num; char name[8]; char class_0[20]; float c_program; float eng
15、lish;
float math;
float average;
int order;
}stud[100];
class Manage:public student
{};
void Write(student stud[],int n) //向文件中写入数据
{
fstream myFile;
myFile.open("score.txt",ios::out|ios::binary);
if(!myFile)
{
cout<<"score.txt can't open!"< 16、
myFile< 17、tream myFile;
myFile.open("score.txt",ios::in|ios::binary);
if(!myFile)
{
cout<<"score.txt can't open!"< 18、c_program>>stud[i].english>>stud[i].math >>stud[i].average;
}
myFile.close();
return count ;
}
void Input(student stud[]) //---------------输入学生成绩
{
system("cls"); /*运行前清屏*/
int i=0;
int flag;
char sign;
cout< 19、gn!='N') /*判定*/
{
cout<<"班级:"; /*交互输入*/
cin>>stud[i].class_0;
loop:
cout<<"学号:";
cin>>stud[i].num;
int c=0;
while(c>s 20、tud[i].name;
do{
flag=0;
cout<<"C++成绩:";
cin>>stud[i].c_program;
if(stud[i].c_program>100 ||stud[i].c_program<1)
cout<<"请输入1-100之间数字!\n";
else
flag=1;
}while(flag==0);
do{
flag=0;
21、 cout<<"英语成绩:";
cin>>stud[i].english;
if(stud[i].english>100 ||stud[i].english<1)
cout<<"请输入1-100之间数字!\n";
else
flag=1;
}while(flag==0);
do{
flag=0;
cout<<"数学成绩:";
cin>>stud[i].math;
i 22、f(stud[i].math>100 ||stud[i].math<1)
cout<<"请输入1-100之间数字!\n";
else
flag=1;
}while(flag==0);
stud[i].average=(stud[i].c_program+stud[i].english+stud[i].math)/3;
cout<<"平均分:"< 23、>sign; /*输入判定*/
i++;
}
Write(stud,i);
}
void Statistic(student stud[]) //---------------统计学生数据
{
system("cls"); /*运行前清屏*/
int n=Read(stud);
cout< 24、i=0;i 25、Read(stud);
int s;
int i=0;
cout< 26、"班级:"< 27、tem("cls"); /*运行前清屏*/
int m=Read(stud);
char t;
int i=0;
cout< 28、].class_0< 29、ud[]) //---------------修改学生成绩
{
system("cls"); /*运行前清屏*/
int n=Read(stud);
int s,a; float q;
int i=0;
cout< 30、/*输入失败信息*/
}
else
{
cout<<"----------该学生信息----------\n"< 31、<"\t"< 32、a==2)stud[i].english=q;
if(a==3)stud[i].math=q;
stud[i].average=(stud[i].c_program+stud[i].english+stud[i].math)/3;
cout<<"----------该学生信息----------\n"< 33、"< 34、Write(stud,n);
}
}
void Insert(student stud[]) //---------------增加学生成绩
{
system("cls"); /*运行前清屏*/
int n=Read(stud);
char s;
cout< 35、<"学号:";
cin>>stud[n].num;
cout<<"姓名:";
cin>>stud[n].name;
cout<<"C++成绩:";
cin>>stud[n].c_program;
cout<<"英语成绩:";
cin>>stud[n].english;
cout<<"数学成绩:";
cin>>stud[n].math;
stud[n].average=(stud[n].c_program+stud[n].english+ s 36、tud[n].math)/3;
cout<<"平均分"< 37、endl<<"********** 排列管理成绩 **********\n"< 38、d[j+1].num;
stud[j+1].num=stud[j].num;
stud[j].num=k;
strcpy(t,stud[j+1].name);
strcpy(stud[j+1].name,stud[j].name);
strcpy(stud[j].name,t);
s=stud[j+1].c_program;
stud[j+1].c_program=stud[j].c_program;
stud[j].c_program=s;
s=stud[j+1].english;
39、
stud[j+1].english=stud[j].english;
stud[j].english=s;
s=stud[j+1].math;
stud[j+1].math=stud[j].math;
s=stud[j+1].average;
stud[j+1].average=stud[j].average;
stud[j].average=s;
}
cout<<"-------------------------------------"< 40、"<<"\t "<<"学号"<<"\t "<<"姓名"<<"\t"<<"C++"<<"\t"<<"英语"<<"\t"<<"数学"<<"\t"<<"平均分"<<"\t"<<"名次"< 41、<<"\t"< 42、 cout<<"-------------------------------------------------------------------------"< 43、[i].name<<"\t"< 44、 cout<<"*******************************************************\n"< 45、ndl;
cout<<" * 【2】显示学生成绩 * "< 46、 【6】排列管理成绩 * "< 47、); /*读入选择*/
}
while(c<'0'||c>'8');
return(c-'0'); /*返回选择*/
}
void main() /*主函数*/
{
for(;;)
{
switch(menu()) /*选择判定*/
{
case 1:
Input(stud);/*输入学生成绩*/
break;
case 2:
Statistic(stud); /*输出学生统计数据*/
break;
case 3: 48、
Lookup(stud); /*查找学生成绩*/
cout<<"\t\t\t";
system("pause");
break;
case 4:
Modify(stud); /*修改学生成绩*/
cout<<"\t\t\t";
system("pause");
break;
case 5:
Insert(stud);/*增加学生成绩*/
cout<<"\t\t\t";
49、 system("pause");
break;
case 6:
Manage(stud); /*按平均分对成绩统计项进行降序排序*/
cout<<"\t\t\t";
system("pause");
break;
case 7:
Output(stud); /*显示全部学生成绩*/
cout<<"\t\t\t";
system("pause");
break;
case 0:
cout<






