c++课设实验报告学生信息管理系统.docx

上传人:b****2 文档编号:23463008 上传时间:2023-05-17 格式:DOCX 页数:39 大小:114.89KB
下载 相关 举报
c++课设实验报告学生信息管理系统.docx_第1页
第1页 / 共39页
c++课设实验报告学生信息管理系统.docx_第2页
第2页 / 共39页
c++课设实验报告学生信息管理系统.docx_第3页
第3页 / 共39页
c++课设实验报告学生信息管理系统.docx_第4页
第4页 / 共39页
c++课设实验报告学生信息管理系统.docx_第5页
第5页 / 共39页
点击查看更多>>
下载资源
资源描述

c++课设实验报告学生信息管理系统.docx

《c++课设实验报告学生信息管理系统.docx》由会员分享,可在线阅读,更多相关《c++课设实验报告学生信息管理系统.docx(39页珍藏版)》请在冰豆网上搜索。

c++课设实验报告学生信息管理系统.docx

c++课设实验报告学生信息管理系统

一、需求分析………………………………………………02

二、概要设计………………………………………………02

三、详细设计………………………………………………03

四、调试分析………………………………………………14

五、用户手册………………………………………………14

六、测试数据………………………………………………14

七、附录……………………………………………………15

 

一、需求分析

1、用数组存储学生信息,包括姓名学号,各科目成绩。

2、在用户输入成绩时,需要分别输入平时成绩和期末成绩,在程序的aver函数中计算平时成绩和期末成绩所占百分比,算出最终成绩,并且在退出程序时保存。

3、查询学生成绩支持用学号查询或者用姓名查询。

4、修改成绩界面可以选择各科目,修改时要求分别输入平时成绩和期末成绩。

5、菜单选项可以查询并且显示各科优秀(大于90分)的学生和不及格(小于60分)的学生。

6、排名,把所有学生的最终成绩求和,按总分从大到小排序并且显示学生姓名学号总分。

7、各个科目平均分,每门科目的最终成绩相加除去学生人数。

8、退出并且保存用户输入,修改的数据,生成stu.dat,可以以记事本的方式打开查看学生成绩信息。

二、概要设计

1、程序结构较为简单,因此声名两个类:

学生成绩类classscore,学生信息类classstu,前者处理学生成绩计算(求总分,排序,求平均分),后者完成学生信息输入查询和修改。

2、建立六个数组,分别存储姓名学号,四门科目,每门科目先通过平时成绩期末成绩,平时成绩百分比计算后放入各科目数组中。

3、查询学生信息时通过

intt=0;

for(;t

if(strcmp(name,stusco[t].getname())==0)

{u[j]=t;

j++;

}

验证学生姓名,和

intt=0;

for(;t

{

if(number==stusco[t].getnumber())

验证学生学号,然后验证通过后显示学生信息和成绩。

4、输入学生成绩时通过

if(stusco[lo].getnumber()==stusco[i].getnumber())

{

flag=0;

}

验证是否已经储存相同学号的学生,如果有,则显示信息添加失败。

三、详细设计

1、主函数

#include"class.h"

#include"head.h"

#include"run.h"

voidmain()

{

runrd;

intn;

rd.load();

while

(1)

{

system("cls");

rd.menu();

cout<<"请输入1~8的数字"<

cout<<"请输入菜单选项:

";

cin>>n;

cin.sync();

cin.clear();

switch(n)

{

case1:

rd.func1();break;

case2:

rd.func2();break;

case3:

rd.func3();break;

case4:

rd.func4();break;

case5:

rd.func5();break;

case6:

rd.func6();break;

case7:

rd.func7();break;

case8:

rd.save();

exit(0);

}

}

}

2、录入函数

//录入成绩函数

voidrun:

:

func1()

{

intm=f;

intflag,lo;

charp;

i=f;

do{

stusco[i].setstuscore();

flag=1;

for(lo=0;lo

{

if(stusco[lo].getnumber()==stusco[i].getnumber())

{

flag=0;

}

}

if(flag)

{

cout<<"输入成功!

"<

i++;

}else{

cout<<"重复输入相同学号的学生,学生增加失败!

"<

}

cout<<"继续输入请按Y,退出请按n"<

cin>>p;

}while(p=='y'||p=='Y');

f=i;

}

3、查询函数

//成绩查询函数

voidrun:

:

func2()

{

intm=f;

intk;

cout<<"===========[1]按姓名查询==========="<

cout<<"===========[2]按学号查询==========="<

cout<<"请输入查询方式(1或者2)";

cin>>k;

if(k==1)

{

charn='y';

intu[10];

while(n=='y')

{intj=0;

cout<<"请输入要查询的学生姓名:

";

cin>>name;

intt=0;

for(;t

if(strcmp(name,stusco[t].getname())==0)

{u[j]=t;

j++;

}

if(j==0)

{cout<<"没有你要查询的学生的名字!

";//没有找到

cout<<"退出请按n"<

cin>>n;

if(n!

='y')break;

}

for(intb=0;b

{

if(j<2)

{t=u[b];

cout<<"学号"<<"姓名"<<"英语"<<"数学"<<"语文"<<"c++"<

cout<<""<<(int)stusco[t].getnumber()<<""<

<<""<<(int)stusco[t].getenglish()<<""<<(int)stusco[t].getmath()

<<""<<(int)stusco[t].getchinese()<<""<<(int)stusco[t].getcpp()<

cout<<"是否继续查询(继续按y,退出按n)"<

cin>>n;

}

else

{

t=u[b];

}

}

}

}

if(k==2)

{

charn='y';

while(n=='y')

{

intj=0;

cout<<"请输入要查询的学生的学号:

";

cin>>number;

intt=0;

for(;t

{

if(number==stusco[t].getnumber())

{

cout<<"学号"<<"姓名"<<"英语"<<"数学"<<"语文"<<"c++"<

cout<<""<

<<""<

<<""<

cout<<"是否继续查询(继续按y,退出按n)"<

cin>>n;

break;

}

}

if(number!

=stusco[t].getnumber())

{cout<<"没有你要查询的学生!

";

cout<<"退出请按n"<

cin>>n;

}

if(n!

='y')break;

}

}

f=m;

}

4、修改函数

voidrun:

:

func3()

{

intm=f;

intj=0,b[20];

intflag;

charn='y';

while(n=='y')

{

cout<<"请输入要修改成绩的学生学号:

";

cin>>number;

flag=0;

intd;

for(intt=0;t

if(number==stusco[t].getnumber())

do{

b[j]=t;

cout<<"请选择要修改的信息:

"<

cout<<"1.修改英语成绩"<

cout<<"2.修改数学成绩"<

cout<<"3.修改语文成绩"<

cout<<"4.修改c++成绩"<

cout<<"请选择1~4之间的数字:

";

cin>>d;

if(d==1)

{

cout<<"请输入新的英语平时成绩:

";

cin>>english1;

stusco[t].setenglish1(english1);

cout<<"请输入新的英语期末成绩:

";

cin>>english2;

stusco[t].setenglish2(english2);

}

elseif(d==2)

{

cout<<"请输入新的数学平时成绩:

";

cin>>math1;

stusco[t].setmath1(math1);

cout<<"请输入新的数学期末成绩:

";

cin>>math2;

stusco[t].setmath2(math2);

}

elseif(d==3)

{

cout<<"请输入新的语文平时成绩:

";

cin>>chinese1;

stusco[t].setchinese1(chinese1);

cout<<"请输入新的语文期末成绩:

";

cin>>chinese2;

stusco[t].setchinese2(chinese2);

}

elseif(d==4)

{

cout<<"请输入新的c++平时成绩:

";

cin>>cpp1;

stusco[t].setcpp1(cpp1);

cout<<"请输入新的c++期末成绩:

";

cin>>cpp2;

stusco[t].setcpp2(cpp2);

}

stusco[t].aver();

flag=1;

j++;

}while(d<1||d>5);

if(flag==0)

{

cout<<"没有您要找的学生!

"<

cout<<"请重新输入(退出按n)";

cin>>n;

}

else

{

cout<<"是否继续修改(继续请按y,退出请按n)";

cin>>n;

}

}

f=m;

}

5、成绩管理函数

voidrun:

:

func7()

{

intm=f;

intsum1=0;

intsum2=0;

intsum3=0;

intsum4=0;

inti;

if(m==0)

{

f=m;

return;

}

for(i=0;i

{

sum1+=stusco[i].english;

sum2+=stusco[i].math;

sum3+=stusco[i].chinese;

sum4+=stusco[i].cpp;

}

sum1/=m;

sum2/=m;

sum3/=m;

sum4/=m;

cout<<"英语的平均分是"<

cout<<"数学的平均分是"<

cout<<"语文的平均分是"<

cout<<"c++的平均分是"<

system("pause");

f=m;

}

 

voidrun:

:

func4()

{

intm=f;

cout<<"显示各门分数大于90分的优秀学生信息:

"<

cout<<"学号"<<"姓名"<<"英语"<<"数学"<<"语文"<<"c++"<

for(inti=0;i

{

if(stusco[i].getchinese()<90||stusco[i].getmath()<90||stusco[i].getenglish()<90||stusco[i].getcpp()<90)continue;

cout<

}

system("pause");

f=m;

}

voidrun:

:

func5()

{

intm=f;

cout<<"显示各门分数小于60分的不及格学生的信息:

"<

cout<<"学号"<<"姓名"<<"英语"<<"数学"<<"语文"<<"c++"<

for(inti=0;i

{

if(stusco[i].getchinese()>60||stusco[i].getmath()>60||stusco[i].getenglish()>60||stusco[i].getcpp()>60)continue;

cout<

}

system("pause");

f=m;

}

voidrun:

:

func6()

{

intm=f;

inta,b;

if(m==0)

{

f=m;

return;

}

floatzcj[20],ttz;

charxsm[20][20],ttx[20];

intnum[20],ttn;

for(inti=0;i

{

num[i]=stusco[i].getnumber();

strcpy(xsm[i],stusco[i].getname());

zcj[i]=0;

zcj[i]+=stusco[i].getchinese();

zcj[i]+=stusco[i].getmath();

zcj[i]+=stusco[i].getenglish();

zcj[i]+=stusco[i].getcpp();

for(a=0;a

{

for(b=a+1;b

{

if(zcj[a]

{

ttz=zcj[a];

zcj[a]=zcj[b];

zcj[b]=ttz;

ttn=num[a];

num[a]=num[b];

num[b]=ttn;

strcpy(ttx,xsm[a]);

strcpy(xsm[a],xsm[b]);

strcpy(xsm[b],ttx);

}

}

}

}

cout<<"按总分成绩排名:

"<

cout<<"姓名学号成绩"<

for(i=0;i

{

cout<<""<

}

system("pause");

f=m;

}

四、调试分析

1、在排序的时候姓名学号等信息要和成绩信息一起排序,不然会导致信息错误。

2、在exit的函数中加入save函数,退出前保存输入信息和修改的信息。

五、用户手册

1、本程序为控制台程序,具有简单的界面。

2、初次进入本程序可以输入学生相关信息(输入相同学号无效),正常退出以正常保存所输入的信息。

3、各项功能可自行选择菜单完成。

4、保存的学生信息会保存在程序目录下,可以用记事本打开查看。

六、测试数据

七、附录

完整程序

#include

#include

#include

#include

#include

classrun;

classPerson;

classScore;

classstuscore;

usingnamespacestd;

#include"head.h"

//声明抽象类Person

classPerson

{

public:

Person(){}

~Person(){}

voidsetnumber(intnum){number=num;}

voidsetname(char*n){strcpy(name,n);}

intgetnumber(){returnnumber;}

char*getname(){returnname;}

voidsetstudent()//输入函数

{

cout<<"请输入学生学号:

";

cin>>number;

cout<<"请输入学生姓名;";

cin>>name;

}

protected:

charname[20];//学生姓名

intnumber;//学生学号

friendclassrun;

};

//声明成绩类

classScore

{

friendclassrun;

public:

Score(){};

~Score(){};

voidsetenglish(floatE){english=E;}

voidsetenglish1(floatE1){english1=E1;}

voidsetenglish2(floatE2){english2=E2;}

voidsetmath(floatM){math=M;}

voidsetmath1(floatM1){math1=M1;}

voidsetmath2(floatM2){math2=M2;}

voidsetchinese(floatC){chinese=C;}//E=E1*s+E2*(1-s)s=0.3

voidsetchinese1(floatC1){chinese1=C1;}

voidsetchinese2(floatC2){chinese2=C2;}

voidsetcpp(floatcpp);

floatgetenglish(){returnenglish;}

floatgetenglish1(){returnenglish1;}

floatgetenglish2(){returnenglish2;}

floatgetmath(){returnmath;}

floatgetmath1(){returnmath1;}

floatgetmath2(){returnmath2;}

floatgetchinese(){returnchinese;}

floatgetchinese1(){returnchinese1;}

floatgetchinese2(){returnchinese2;}

floatgetcpp(){returncpp;}

floatgetcpp1(){returncpp1;}

floatgetcpp2(){returncpp2;}

voidsetscore()//输入函数

{

cout<<"请输入英语平时成绩:

";

cin>>english1;

cout<<"请输入英语期末成绩:

";

cin>>english2;

cout<<"请输入数学平时成绩:

";

cin>>math1;

cout<<"请输入数学期末成绩:

";

cin>>math2;

cout<<"请输入语文平时成绩:

";

cin>>chinese1;

cout<<"请输入语文期末成绩:

";

cin>>chinese2;

cout<<"请输入c++平时成绩:

";

cin>>cpp1;

cout<<"请输入c++期末成绩:

";

cin>>cpp2;

aver();

}

voidaver(){

english=english1*0.3+english2*0.7;

chinese=chinese1*0.3+chinese2*0.7;

math=math1*0.3+math2*0.7;

cpp=cpp1*0.3+cpp2*0.7;

}

voidsetcpp1(floatcpp1){}

voidsetcpp2(floatcpp2){}

protected:

floatenglish;

floatenglish1;

floatenglish2;

floatmath;

floatmath1;

floatmath2;

floatchinese;

floatchinese1;

floatch

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

当前位置:首页 > PPT模板 > 其它模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1