学生成绩管理系统编码日记.docx

上传人:b****2 文档编号:17326406 上传时间:2023-07-24 格式:DOCX 页数:37 大小:61.67KB
下载 相关 举报
学生成绩管理系统编码日记.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

学生成绩管理系统编码日记

第一阶段:

选择课题的阶段,刚开始老师布置下来大作业,一下子感觉到500行那么多,不知道写什么才能写到500行,尝试了多种程序的编写,但结果都不尽如人意,最后听到三班的张兄弟说要写一个图书馆的管理系统,我一下子就来了想法,想到写一个学生的成绩的管理系统。

第二阶段:

我开始着手进行代码的编写,因为平时用的更多的是面向过程的程序,所以刚开始写的时候就出现了好多问题目,比如说在继承的时候,有些调用就搞混了,这个时候我写了几个小类一个大类,小类是s_class,math,english,it,chinese大类是STUDENT,下面具体把我的这一阶段的思路讲讲吧。

这个时候我的程序一开始遇到一个难题:

1、就是怎么用类和对像来存储这么多的数据呢?

刚开始有尝试过对像数组之类的东西。

但是写好一段较完整的代码后怎么编译都通不过,后来实现是没有办法,就重新拿起课本来看,看就看到上面有一首程序中是用类中的成员函数和数据成员的组合来实现这个存储的,我一下子恍然大悟,一下子就把输入的程序写了出来,但是编译的错误特别多,没有办法,只有一个一个地改了,把它给调试出来了。

下面是这什么编译的比较重要的代码:

classstudent:

publics_class,publicmath,publicenglish,publicit,publicchinese{

public:

////////数据都是从这个函数中输入的

charname[81][81];

doublesum[81];

charnumber[81][20];

voidgetdata(intn)

{

doublescore;

intbanjii;

charxb;

for(inti=1;i<=n;i++)

{

sum[i]=0;

cout<<"请输入第"<

";

cin>>banjii;

s_class:

:

getdata(banjii,i);

/*

voidgetdata(intbj,inti)

{banji[i]=bj;}

intdisplay(inti)

{returnbanji[i];}

*/

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

";

cin>>number[i];

cout<<"请输入学生的名字:

";

cin>>name[i];

cout<<"请输入学生的性别(f/m):

";

cin>>xb;

people:

:

getdata(xb,i);

cout<<"请输入数学的分数:

";

cin>>score;

sum[i]+=score;

math:

:

getdata(score,i);

cout<<"请输入英语的分数:

";

cin>>score;

sum[i]+=score;

english:

:

getdata(score,i);

cout<<"请输入IT的分数:

";

cin>>score;

sum[i]+=score;

it:

:

getdata(score,i);

cout<<"请输入语文的分数:

";

cin>>score;

sum[i]+=score;

chinese:

:

getdata(score,i);

}

}

voiddisplay1(intn)

{///用来排序的(后来编译成功运行时,才知道这个根本实现不了排序)

doublea,b,c,d,f,e,g,h,k,w,su;

intbanj,banjii;

charxh[20];//学号

charxm[20];//姓名

charse,se1;//性别

for(inti=1;i<=n-1;i++)

for(intj=i+1;j<=n;j++)

{

if(sum[i]>sum[j])

{

su=sum[i];

sum[i]=sum[j];

sum[j]=su;

/////changethesum;

strcpy(xm,name[i]);

strcpy(name[i],name[j]);

strcpy(name[j],xm);

/////changethename

strcpy(xh,number[i]);

strcpy(number[i],number[j]);

strcpy(number[j],xh);

///changethenumber

a=math:

:

display(i);

b=math:

:

display(j);

math:

:

getdata(b,i);

math:

:

getdata(a,j);

///changethescoreofmath

c=it:

:

display(i);

d=it:

:

display(j);

it:

:

getdata(d,i);

it:

:

getdata(c,j);

////////changethescoreofit;

e=english:

:

display(i);

f=english:

:

display(j);

english:

:

getdata(f,i);

english:

:

getdata(e,j);

/////changethescoreofenglish;

g=chinese:

:

display(i);

h=chinese:

:

display(j);

chinese:

:

getdata(h,i);

chinese:

:

getdata(g,j);

/////changethescoreofchinese;

se=people:

:

display(i);

se1=people:

:

display(j);

people:

:

getdata(se1,j);

people:

:

getdata(se,i);

////changethesex;

banj=s_class:

:

display(i);

banjii=s_class:

:

display(j);

s_class:

:

getdata(banj,j);

s_class:

:

getdata(banjii,i);

///changethebanji;

}

}

}

voiddisplay2(intn)

{///这个函数是用来输出每个同学的信息的

cout<<"class:

\tname:

\tnumber:

\tmath:

\tenglish:

\tIT:

\tchinese:

\tsum:

"<

for(inti=1;i<=n;i++)

{

/*chart=people:

:

display(i);

if(t=='f')cout<<"女";

elsecout<<"男";*/

cout<

:

display(i)<<"\t"<

<<"\t"<

:

display(i)

<<"\t"<

:

display(i)<<"\t\t"<

:

display(i)

<<"\t"<

:

display(i)<<"\t\t"<

}

}

};

intmain()

{

students;

intnum;

cout<<"请输入学生的人数:

";

cin>>num;

cout<<"theNO.ofthestudentis:

"<

s.getdata(num);

//输入同学们的成绩

s.display1(num);

//对同学们的成绩按总分从大到小进行排序

s.display2(num);

//输出排序后的同学们的成绩列表

intnn;

}

第三阶段;这个阶段,我对程序的功能方面进行了相当的完善,主要是想开始实现这个小系统的部分功能了,这阶段主要是在查找,修改,和计算方面的做了一些查试。

1、还有个问题目就是有些功能的实现特别原始,就拿修改分数来说吧,这个时候我采用的还是把改后的某门分数和总分一起输进去。

后来解决我是在switch中设计了自动计算的代码,就达到了一定的智能化,也就是你只要输入哪门科目改为多少分,他们就会自己生成新的总分了。

2、上图就是这个阶段遇到的又一个错误,函数太多,弄的乱七八糟了,连参数个数都搞乱了。

所以写到这里,今天就没再写下去了。

这一阶段重要代码如下:

voidstudent:

:

display3(char*s,intn)

{/////////huntforsomeone

inti,t;

for(i=1;i<=n;i++)

{

if(strcmp(name[i],s)==0)

{t=i;break;}

}

cout<<"class:

\tname:

\tnumber:

\tmath:

\tenglish:

\tIT:

\tchinese:

\tsum:

"<

/*chartt=people:

:

display(i);

if(tt=='f')cout<<"女";

elsecout<<"男";*///对英文输入汉字输出作的改进

cout<

:

display(i)<<"\t"<

<<"\t"<

:

display(i)

<<"\t"<

:

display(i)<<"\t\t"<

:

display(i)

<<"\t"<

:

display(i)<<"\t\t"<

}

voidstudent:

:

display4(char*s,doublegaifen,intk,doubled,intn)//

{/////////changethescore

inti,t;

for(i=1;i<=n;i++)

{

if(strcmp(name[i],s)==0)

{t=i;break;}

}

switch(k)///主要是用于转为哪一科目

{

case1:

math:

:

getdata(gaifen,t);sum[t]=d;break;

case2:

it:

:

getdata(gaifen,t);sum[t]=d;break;

case3:

chinese:

:

getdata(gaifen,t);sum[t]=d;break;

case4:

english:

:

getdata(gaifen,t);sum[t]=d;break;

}

}

voidstudent:

:

display5(doublefen,doublewei,intn)

{////算通过某分数段的通过率。

cout<<"class:

\tname:

\tnumber:

\tmath:

\tenglish:

\tIT:

\tchinese:

\tsum:

"<

intflag=0;

for(inti=1;i<=n;i++)

{

if(sum[i]>=fen&&sum[i]<=wei)

{++flag;

cout<

:

display(i)<<"\t"<

<<"\t"<

:

display(i)

<<"\t"<

:

display(i)<<"\t\t"<

:

display(i)

<<"\t"<

:

display(i)<<"\t\t"<

}

}

cout<<"这个分数的通过率为:

"<

}

////////////////////////////////////////////////////////////////////////////////////

intnn;

///1查找某个同学的信息:

///2,修改某个同学的信息;

///3在输入某个分数段就输出并算出通过率

///4

while(cin>>nn)

{

if(nn==1)

{

charna[20];

cout<<"请输入要查找的人的姓名:

";

cin>>na;

s.display3(na,num);

}

else

if(nn==2)

{

charsa[20];//要改的人的名字

intss;//改的科目

doublett,gg;//改后的分数是多少

cout<<"输入要改的人的名字:

";

cin>>sa;

cout<<"输入要改的人的改后的分数:

";

cin>>tt;

cout<<"输入要改的人的科目编号1math,2IT,3chinese,4english:

";

cin>>ss;

cout<<"输入修改后的总分:

";

cin>>gg;

//char*s,doublegaifen,intk,doubled

s.display4(sa,tt,ss,gg,num);

}

elseif(nn==3)

{

doublefen,wei;

cout<<"输入某个分数段就:

";

cin>>fen>>wei;

if(fen>wei)

{

doublekk;

kk=fen;

fen=wei;

wei=kk;

}

s.display5(fen,wei,num);

}

}

return0;

}

第四阶段:

这个阶段终于把程序给运行起来了,便是出现了一个特别大的问题。

1、花了我好几十行的排序函数居然没能起到作用。

当时真的好想放弃这个函数的使用了,因为这个函数我已经花了N长的时间了,没有办法,这个时候的就是怎么改进程序和增加功能了,因为还没有到达500行呀。

2、这个时候也发现了好多其它的问题,比如说,当要搜索一个人的信息的时候,出来的信息太少了。

后来我脆把姓名性别,总分排名,各科成绩全输出来了,加起来四百几十多行。

3、这中间遇到一个问题就是:

一次性把一个的人记录全输出来,是很难在一行间对齐的。

后来没有办法,我只好化成两部分分开输出了。

4、我还把性别用用英文输入转化为中文输出。

唯一的遗憾就是程序的排序没有实现。

但是加了好多功能。

查各个科目的平均分情况,查各科目的具体情况,而且还来了个小游戏。

5、加了一个SCHOOL类,只是想体现一现构造函数,用来构造这个系统的属性的。

6、加了一个进入系统的密码。

以下是这个阶段的代码:

#include

#include

classmath{

public:

inti;

doublescore[81];

voidgetdata(doubleval,inti)

{score[i]=val;}

doubledisplay(inti)

{returnscore[i];}

voidshow3(intn)//增加的用来算各科目的平均分的。

{cout<<"输出所有人的IT成绩"<

intg=0;

doublesum=0;

doubleav=0;

for(inti=1;i<=n;i++)

{cout<

sum+=score[i];

if(score[i]>=60)g++;

}

cout<

cout<<"这科的班级总分是:

"<

cout<<"这科的平均分是:

"<

cout<<"这科的及格率是:

"<<(double)g/n<

}

};

//////////////////////////////////////////////////////////////

voiddisplay3(char*s,intn);

voiddisplay4(char*s,doublegaifen,intk,doubled,intn);

voiddisplay5(doublefen,doublewei,intn);

voiddisplay6(intk,intn);

voiddisplay7(intn);

};

voidstudent:

:

display6(intk,intn)

{/////算各科目的平均分

doubleshuxue1=0;

doubleenglish1=0;

doubleIT1=0;

doublechinese1=0;

for(inti=1;i<=n;i++)

{

shuxue1+=math:

:

display(i);

english1+=english:

:

display(i);

IT1+=it:

:

display(i);

chinese1+=chinese:

:

display(i);

}

doublet;

if(t==1)

{

cout<<"数学平均分是:

";shuxue1/=n;cout<

}

elseif(t==2)

{

cout<<"英语平均分是:

";english1/=n;cout<

}

elseif(t==3)

{

cout<<"IT平均分是:

";IT1/=n;cout<

}

elseif(t==4)

{

cout<<"语文平均分是:

";chinese1/=n;cout<

}

/*switch(k)

{

case 1:

displaybreak;

case 2:

cout<<"英语平均分是:

";t=english1/=n;break;

case 3:

cout<<"英语平均分是:

";t=english1/=n;break;

case 4:

cout<<"语文平均分是:

";t=chinese1/=n;break;

}*/

}

intmain()

{

/*peoplepe;

s_classs_c;

mathma;

englishen;

chineseche;

itit1;

student*p;*/

students;

intnum;

charxiaoming[23];

schoolA("华东交通大学");////为系统还增加了别的属性

cout<<"欢迎使用学生成绩管理系统"<

cout<<"请您六位数输入密码"<

charmima[20];

while(cin>>mima)

{

if(strcmp(mima,"123456")==0)

{

cout<<"欢迎进入!

"<

}

else

cout<<"您输入的密码有误,请再输入一次!

"<

}

cout<<"";

A.out();

cout<<"请输入学生的人数:

";

cin>>num;

cout<<"theNO.ofthestudentis:

"<

s.getdata(num);

//输入同学们的成绩

s.display1(num);

//对同学们的成绩按总分从大到小进行排序

s.display2(num);

//输出排序后的同学们的成绩列表

intnn;

///1查找某个同学的信息:

///2,修改某个同学的信息;

///3在输入某个分数段就输出并算出通过率

///4整个班的各科的平均分

///5各科成绩的具体情况;

//////6小游戏

while(cin>>nn)

{

charye[5];

cout<<"您确定进入吗yesorno?

"<

cin>>ye;

if(strcmp(ye,"yes")!

=0)continue;

if(nn==1)

{

charna[20];

cout<<"请输入要查找的人的姓名:

";

cin>>na;

s.display3(na,num);

}

else

if(nn==2)

{

charsa[20];//要改的人的名字

intss;//改的科目

doublett,gg;//改后的分数是多少

cout<<"输入要改的人的名字:

";

cin>>sa;

cout<<"输入要改的人的改后的分数:

";

cin>>tt;

cout<<"输入要改的人的科目编号1math,2IT,3chinese,4english:

";

cin>>ss;

cout<<"输入修改后的总分:

";

cin>>gg;

//char*s,doublegaifen,intk,doubled

s.display4(sa,tt,ss,gg,num);

cout<<"是否输出修改后的数据(yes/no)"<

chardd[4];

cin>>dd;

if(strcmp(dd,"yes")==0)s.display2(num);

}

else

if(nn==3)

{

doublefen,wei;

cout<<"输入某个分数段就:

";

cin>>fen>>wei;

if(fen>wei)

{

doublekk;

kk=fen;

fen=wei;

wei=kk;

}

s.display5(fen,wei,num);

}

else

if(nn==4)

{

intct;

cin>>ct;

s.display6(ct,num);

}

else

if(nn==5)

{

intsu;

cin>>su;

switch(su)

{

case1:

s.show3(num);break;//math

case2:

s.show4(num);break;//english

case3:

s.show5(num);break;//it

case4:

s.show6(num);break;//chinese

}

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

当前位置:首页 > 人文社科 > 法律资料

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

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