学生成绩管理系统课程设计.docx

上传人:b****6 文档编号:8763460 上传时间:2023-05-14 格式:DOCX 页数:37 大小:70.93KB
下载 相关 举报
学生成绩管理系统课程设计.docx_第1页
第1页 / 共37页
学生成绩管理系统课程设计.docx_第2页
第2页 / 共37页
学生成绩管理系统课程设计.docx_第3页
第3页 / 共37页
学生成绩管理系统课程设计.docx_第4页
第4页 / 共37页
学生成绩管理系统课程设计.docx_第5页
第5页 / 共37页
学生成绩管理系统课程设计.docx_第6页
第6页 / 共37页
学生成绩管理系统课程设计.docx_第7页
第7页 / 共37页
学生成绩管理系统课程设计.docx_第8页
第8页 / 共37页
学生成绩管理系统课程设计.docx_第9页
第9页 / 共37页
学生成绩管理系统课程设计.docx_第10页
第10页 / 共37页
学生成绩管理系统课程设计.docx_第11页
第11页 / 共37页
学生成绩管理系统课程设计.docx_第12页
第12页 / 共37页
学生成绩管理系统课程设计.docx_第13页
第13页 / 共37页
学生成绩管理系统课程设计.docx_第14页
第14页 / 共37页
学生成绩管理系统课程设计.docx_第15页
第15页 / 共37页
学生成绩管理系统课程设计.docx_第16页
第16页 / 共37页
学生成绩管理系统课程设计.docx_第17页
第17页 / 共37页
学生成绩管理系统课程设计.docx_第18页
第18页 / 共37页
学生成绩管理系统课程设计.docx_第19页
第19页 / 共37页
学生成绩管理系统课程设计.docx_第20页
第20页 / 共37页
亲,该文档总共37页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

学生成绩管理系统课程设计.docx

《学生成绩管理系统课程设计.docx》由会员分享,可在线阅读,更多相关《学生成绩管理系统课程设计.docx(37页珍藏版)》请在冰点文库上搜索。

学生成绩管理系统课程设计.docx

学生成绩管理系统课程设计

软件与通信工程学院

课程设计报告

2015学年 第一学期

 

课程名称c++课程设计

设计题目学生成绩管理系统

学生姓名陈莉范玲陈慧琳庞昭君

学号06080424

专业班级计算机科学与技术2班

指导教师郭美

 

 

1设计任务书

1.1题目与要求

本组计划(成员为:

陈莉,范玲,庞昭君,陈慧琳)编写一个学生成绩管理系统,主要用来管理学生的成绩。

具体要求如下:

1、建立一个学生类,保存学生的班级、姓名、学号、各科成绩、平均分。

2、求出每个学生的平均分。

3、增加和删除学生的学生信息。

4、根据条件查询学生的信息。

5、按条件统计学生的信息。

6、退出系统

根据分工,陈莉的主要工作是编写学生成绩管理系统的输入、删除和管理。

根据分工,范玲的主要工作是编写学生成绩管理系统的统计和查找。

根据分工,庞昭君的主要工作是编写学生成绩管理系统的菜单函数、主函数、显示、修改。

根据分工,陈慧琳的主要工作是编写学生的成绩管理系统的函数定义、文件的输入和输出。

1.2本系统涉及的知识点

类、数组、循环、函数、分支。

1、类的实现

定义一个类,类的代码如下:

classStu//构建学生类

{public:

friendvoidshuru(Stustud[]);//输入

friendvoidtongji(Stustud[]);//统计

friendvoidchazhao(Stustud[]);//查找

friendvoidxiugai(Stustud[]);//修改

friendvoidshanchu(Stustud[]);//删除

friendvoidshuchu(Stustud[]);//输出

friendvoidzengjia(Stustud[]);//增加

friendvoidWrite(Stustud[],intn);//文件写

friendintRead(Stustud[]);//文件读

private:

charclass_0[20];

intnum;

charname[8];

floatc_program;

floatmedia;

floatenglish;

floathuibian;

floataverage;

intorder;

}stud[100];

2、数组的实现

在输入学生信息,存入类的对象数组里,部分代码如下:

voidshuru(Stustud[])//---------------输入学生成绩

{system("cls");/*运行前清屏*/

inti=0;

intflag;

charsign;

cout<>请输入学生成绩<<===="<

while(sign!

='n'&&sign!

='N')/*判断*/

{cout<<"班级:

";/*交互输入*/

cin>>stud[i].class_0;

loop:

cout<<"学号:

";

cin>>stud[i].num;

intc=0;

while(c

{c++;

if(stud[i].num==stud[i-c].num)

{cout<<"你输入的学号已经存在!

请重新输入。

"<

gotoloop;

}

}

3、循环的实现

在找到要删除的学生后,用for循环语句将后面的学生的信息往前覆盖,代码如下:

voidshanchu(Stustud[])//---------------按学号查找,删除学生信息

{system("cls");/*运行前清屏*/

intn=Read(stud);

ints;

inti=0,j;

cout<>删除学生成绩<<===="<

cout<<"请输入需要删除学生的学号:

"<

cin>>s;

while((stud[i].num-s)!

=0&&i

if(i==n)

{cout<<"====>提示:

对不起,无法找到该学生……"<

}

else

{for(j=i;j

{strcpy(stud[j].class_0,stud[j+1].class_0);

stud[j].num=stud[j+1].num;

strcpy(stud[j].name,stud[j+1].name);

stud[j].c_program=stud[j+1].c_program;

stud[j].media=stud[j+1].media;

stud[j].english=stud[j+1].english;

stud[j].huibian=stud[j+1].huibian;

stud[j].average=stud[j+1].average;}

cout<<"====>提示:

已成功删除!

"<

4、函数的实现

在类外定义函数,用来进行删除、增加、修改等功能,部分代码如下:

voidzengjia(Stustud[])//---------------增加学生成绩

{system("cls");/*运行前清屏*/

intn=Read(stud);

chars;

cout<>增加学生成绩<<===="<

while(s!

='n'&&s!

='N')

{cout<<"班级:

"<

cin>>stud[n].class_0;

cout<<"学号:

";

cin>>stud[n].num;

cout<<"姓名:

";

cin>>stud[n].name;

cout<<"C++程序设计成绩:

";

cin>>stud[n].c_program;

cout<<"多媒体成绩:

";

cin>>stud[n].media;

cout<<"大学英语成绩:

";

cin>>stud[n].english;

cout<<"汇编成绩:

";

cin>>stud[n].huibian;

stud[n].average=(stud[n].c_program+stud[n].media+stud[n].english+stud[n].huibian)/4;

cout<<"平均分"<

n++;

cout<<"=====>提示:

插入成功!

"<

cout<<"是否继续输入(y/n)"<

cin>>s;}

5、分支的实现

在主函数用switch用来选择功能,代码如下:

voidmain()/*主函数*/

{for(;;)

{switch(menu())/*选择判断*/

{case1:

shuru(stud);/*输入学生成绩*/

break;

case2:

shuchu(stud);/*输出学生统计数据*/

break;

case3:

chazhao(stud);/*查找学生成绩*/

cout<<"\t\t\t";

system("pause");

break;

case4:

xiugai(stud);/*修改学生成绩*/

cout<<"\t\t\t";

system("pause");

break;

case5:

shanchu(stud);/*按学号查找,删除学生信息*/

cout<<"\t\t\t";

system("pause");

break;

case6:

zengjia(stud);/*增加学生成绩*/

cout<<"\t\t\t";

system("pause");

break;

case7:

tongji(stud);/*显示全部学生成绩*/

cout<<"\t\t\t";

system("pause");

break;

case0:

cout<>===============================\n"<

cout<<"\t\t\t";

system("pause");exit(0);}}}

2功能设计

2.1算法设计

1、本系统需要实现的功能要求:

利用switch语句设计如图1所示的主菜单:

请输入选项编号(1~6)

图1学生管理系统主菜单

2、根据所选菜单设计相应的功能函数:

1)输入函数shuru(stu[]):

利用while循环输入的方式将学生信息存入学生数组对象,最后调用文件函数write(stu,i)保存在文件。

2)求平均分:

在输入完所有的成绩信息后,stud[i].average保存了所有的科目的平均成绩。

3)文件保存函数Write(Stustud[],intn):

在对正在操作后的学生的信息进行保存,fstreammyFile;函数建立一个文件对象,再测试文件是否能打开,最后用文件函数myFile将学生数组对象中的所有信息都写入到文件中保存。

4)查找函数chazhao(Stustud[]):

定义了整型变量i、j、s和字符变量a[20],运用if判断语句来判断j是用学号查找还是用姓名查找,用whilewhile(strcmp(a,stud[i].name)!

=0&&i

5)增加信息函数zengjia(Stustud[]):

定义字符变量s用来记录输入的字符是否是’N’试试’n’,如果都不是则输入要添加的学生的信息,最后在根据cout<<"是否继续输入(y/n)"<

6)删除信息函数shanchu(Stustu[]):

定义字符变量s,整型变量i、j,i用来接收学生的个数,while((stud[i].num-s)!

=0&&i

如果找到了则用for(j=i;j

7)统计信息函数tongji(Stustu[]):

定义了字符变量,用if和比较函数语句来判断输入的是课程名,最后输出统计的信息。

8)输出信息函数shuchu(Stustu[]):

定义整型变量i来接收输入的学生个数,运用for循环语句,将所有的学生信息一一输出。

2.2主要模块流程图

主要模块流程图如图2学生管理系统流程所示

3程序代码设计

3.1菜单模块

1、函数原形:

intmenu()。

2、功能:

利用while判断函数getchar和标准输出函数来完成主菜单以及功能的选择。

该菜单包含了该系统的8大功能(有输入、显示、查找、修改、删除、插入、统计、退出)。

3、变量以及类型

Charc:

字符变量,接收8大功能的序号,用来判断系统该执行什么功能。

4、说明:

该函数只是用来显示系统的功能和来选择功能,只要输入的字符不是0~7,就返回选择。

5、模块代码及其相关注释

intmenu()/*菜单函数*/

{charc;

do

{system("cls");/*运行前清屏*/

cout<<"-----------------<<欢迎您使用学生成绩管理系统--------------\n"<

cout<<"*******************************************\n\n"<

cout<<"1、输入学生成绩"<

cout<<"2、显示统计数据"<

cout<<"3、查找学生成绩"<

cout<<"4、修改学生成绩"<

cout<<"5、删除学生成绩"<

cout<<"6、插入学生成绩"<

cout<<"7、统计学生成绩"<

cout<<"0、退出本系统"<

cout<<"*********************************************"<

cout<<"请你选择操作(0-7):

"<

c=getchar();/*读入选择*/}

while(c<'0'||c>'7');

return(c-'0');/*返回选择*/}

图2学生管理系统流程

 

3.2主函数模块

1、函数原型:

voidmain()。

2、功能:

执行switch()来调用menu()函数,然后接收menu函数传递回来的数值,然后经过case语句的选择,调用相应的函数,达到相应的目的。

3、说明:

我们用system("pause");来暂停查询,等待操作者按键。

4、模块代码及其相关注释 

voidmain()/*主函数*/

{for(;;)

{switch(menu())/*选择判断*/

{case1:

shuru(stud);/*输入学生成绩*/

break;

case2:

Shuchu(stud);/*输出学生统计数据*/

break;

case3:

chazhao(stud);/*查找学生成绩*/

cout<<"\t\t\t";

system("pause");

break;

case4:

xiugai(stud);/*修改学生成绩*/

cout<<"\t\t\t";

system("pause");

break;

case5:

shanchu(stud);/*按学号查找,删除学生信息*/

cout<<"\t\t\t";

system("pause");

break;

case6:

zengjia(stud);/*增加学生成绩*/

cout<<"\t\t\t";

system("pause");

break;

case7:

tongji(stud);/*统计学生成绩*/

cout<<"\t\t\t";

system("pause");

break;

case0:

cout<>===============================\n"<

cout<<"\t\t\t";

system("pause");

exit(0);}}}

3.3定义类模块

1、定义一个学生类classStu。

2、定义友元函数(输入、统计、查找、修改、删除、输出、增加、文件写入、文件读出)构建每一个模块。

3、定义对象和数据成员(班级、学号、姓名、c++、多媒体、汇编、英语、平均成绩)。

3.4文件输入模块

1、函数原形:

voidWrite(Stustud[],intn)。

 

2、功能:

定义输出文件流对象myfile,打开输入文件“student.dat”,用if语句判断文件,如果打开文件失败,myfile返回0值并退出。

把变量n传给变量count,把信息个数count写到磁盘文件”student.dat”中,利用for(inti=0;i<=count;i++)这循环把所有的信息(班级、学号、姓名、c++、多媒体、汇编、英语、平均成绩)写到磁盘文件”student.dat”文件中,然后将与流对象myfile所关联的输入文件”student.dat”关闭。

3、变量类型:

int i:

循环控制量。

 

int n :

整型形参变量,接收main()传过来的人数。

stu stud[ ]:

接收主函数传过来的数组首地址。

Count:

信息个数变量。

5、说明:

执行该函数时,把学生的所有信息写到文件中。

6、模块代码及其相关注释 

voidWrite(Stustud[],intn)//向文件中写入数据

{fstreammyFile;

if(!

myFile)

{cout<<"student.datcan'topen!

"<

exit

(1);

}

intcount=n;

myFile<

for(inti=0;i<=count;i++)

{myFile<

<<""<

}

myFile.close();

}

3.5文件输出模块

1、函数原形:

intRead(Stustud[])。

2、功能:

定义输如文件流对象myfile,打开输出文件“student.dat”,用if语句判断文件,如果打开文件失败,myfile返回0值并退出。

将文件指针myFile.seekg(0)移到文件开头,把信息个数count从磁盘文件”student.dat”中读出来,利用for(inti=0;i<=count;i++)这循环把所有的信息(班级、学号、姓名、c++、多媒体、汇编、英语、平均成绩)从磁盘文件”student.dat”中读出来,然后将与流对象myfile所关联的输入文件”student.dat”关闭。

3、变量及类型:

fstreammyFile;定义一个文件。

 

int i:

循环控制变量。

 

myFile.seekg(0):

文件指针移到文件开头。

Returncount;count返回到main()函数。

stu stud[ ]:

接收主函数传过来的数组首地址。

Count:

信息个数变量。

4、说明:

执行该函数时,把学生的所有信息从文件中读出。

5、模块代码及其相关注释 

intRead(Stustud[])//从文件中读数据

{fstreammyFile;

myFile.open("student.dat",ios:

:

in);

if(!

myFile)

{cout<<"student.datcan'topen!

"<

exit

(1);

}

intcount;

myFile.seekg(0);//文件指针移到文件开头

myFile>>count;

for(inti=0;i<=count;i++)

{myFile>>stud[i].class_0>>stud[i].num>>stud[i].name>>stud[i].c_program>>stud[i].media>>stud[i].english>>stud[i].huibian>>stud[i].average;}

myFile.close();

returncount;

3.6信息输入模块

1、函数原型voidshuru(Stustu[])。

2、变量及类型:

inti=0;整型变量,记录人数。

intflag;整型变量,记录判断后的结果是为1还是0。

charsign;字符变量,接收输入的字符进行while循环。

3、功能:

定义两个整型变量i、flag,一个字符变量sign,在字符变量中输入任意的字符,然后进入while(sign!

='n'&&sign!

='N')循环判断sign中的字符是否为’n’或’N’,如果都不是怎进行学生信息的输入。

先将班级输入,在loop:

跳转语句下输入学号,定义一个c用来记录输入的人数,进入while循环,用if(stud[i].num==stud[i-c].num)来判断这次输入的学号是否与以输入的学号重复了,如果重复了系统将会提示"你输入的学号已经存在!

请重新输入。

"然后gotoloop;语句则跳转到loop重新输入学号,直到不相同为止,输入完学号后再继续输入姓名。

然后进入do-while语句,定义一个flag=0,用它来记录输入的成绩是否是在1--100之间,if(stud[i].c_program>100||stud[i].c_program<1)cout<<"对不起,请输入1-100之间的数字!

!

\n";如果if不成立,则flag=1,否则flag=0,则继续循环,输入正确的成绩。

随后将运用同样的方法依次输入c++程序设计、多媒体成绩、英语成绩和汇编成绩。

在输入完所有的成绩信息后,运用简单的求平均分运算的stud[i].average=(stud[i].c_program+stud[i].media+stud[i].english+stud[i].huibian)/4;这条语句,将每一个学生的成绩的平均分都求出并保存下来。

cout<<"====>提示:

是否继续写入学生成绩?

(Y/N)";

cin>>sign;/*输入判断*/

根据提示进入判断是否继续进行学生成绩的输入,如果是就输入y,否则就输入n.i自加一,最后根据sign的输入决定是否继续循环本段函数。

本段程序结束后调用函数Write(stud,i)将所有的信息都保存在文件中,以便后面程序的使用。

4、说明:

在执行函数前,运用清屏函数system("cls");清除掉上段函数运行的数据,以便后面函数运行时主界面的整洁清晰。

5、相关代码及注释

voidshuru(Stustud[])//---------------输入学生成绩

{system("cls");/*运行前清屏*/

inti=0;

intflag;

charsign;

cout<>请输入学生成绩<<===="<

while(sign!

='n'&&sign!

='N')/*判断*/

{cout<<"班级:

";/*交互输入*/

cin>>stud[i].class_0;

loop:

cout<<"学号:

";

cin>>stud[i].num;

intc=0;

while(c

{c++;

if(stud[i].num==stud[i-c].num)

{cout<<"你输入的学号已经存在!

请重新输入。

"<

gotoloop;

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2