cdl学生成绩管理系统编码日记.docx
- 文档编号:6497165
- 上传时间:2023-01-07
- 格式:DOCX
- 页数:28
- 大小:74.20KB
cdl学生成绩管理系统编码日记.docx
《cdl学生成绩管理系统编码日记.docx》由会员分享,可在线阅读,更多相关《cdl学生成绩管理系统编码日记.docx(28页珍藏版)》请在冰豆网上搜索。
cdl学生成绩管理系统编码日记
2009届软件学院软件工程+电子商务1班程道雷
学号:
200921101101佃
第一阶段:
选择课题的阶段,刚开始老师布置下来大作业,一下子感觉到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);
/////changethenamestrcpy(xh,number[i]);
strcpy(number[i],number[j]);strcpy(number[j],xh);
///changethenumbera=math:
:
display(i);b=math:
:
display(j);math:
:
getdata(b,i);math:
:
getdata(a,j);
///changethescoreofmathc=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)
{III这个函数是用来输出每个同学的信息的
cout<<"class:
\tname:
\tnumber:
\tmath:
\tenglish:
\tlT:
\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); II输入同学们的成绩 s.display1(num); II对同学们的成绩按总分从大到小进行排序 s.display2(num); II输出排序后的同学们的成绩列表 intnn; } 第三阶段;这个阶段,我对程序的功能方面进行了相当的完善,主要是想开始实现这个 小系统的部分功能了,这阶段主要是在查找,修改,和计算方面的做了一些查试。 1、还有个问题目就是有些功能的实现特别原始,就拿修改分数来说吧,这个时候我采用的还是把改后的某门分数和总分一起输进去。 后来解决我是在switch中设计了自动计算的代码,就达到了一定的智能化,也就是你只要输入哪门科目改为多少分,他们就会自己生成新的总分了。 2、上图就是这个阶段遇到的又一个错误,函数太多,弄的乱七八糟了,连参数个数都搞乱 了。 voidstudent: : displayS(doublefenfdoubleweirintn){ ■_.■r*n>U・h■F-Ri■'・1>L■FFTSlr-i-r- riF ileLog| : Debug|虱FindResults遛Dose| |_Messajge 7prototypefor'voidstudent: : d.: play5(doubleJdouble,mt)'doesnotmatchanyin"sludent1 3voidstudent: .dhsplaySldoublt,mt) vuxuu±spxciy4ruvuu丄tsyd±xenrjlh voidstudent: : display3(char*s,intn) {Illi/////huntforsomeone inti,t; for(i=1;i<=n;i++) { if(strcmp(name[i],s)==0) {t=i;break;} } cout<<"class: \tname: \tnumber: \tmath: \tenglish: \tlT: \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: \tlT: \tchinese: \tsum: "< 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查找某个同学的信息: 1112,修改某个同学的信息; ///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/* } }; ////////////////////////////////////////////////////////////// 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; doubleIT仁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) { case1: displaybreak; case2: cout<<"英语平均分是: ";t=english1/=n;break; case3: cout<<"英语平均分是: ";t=english1/=n;break; case4: 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")! =O)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)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- cdl 学生 成绩管理系统 编码 日记