C++语言程序设计,十万火急,哪位高人指点一下,在下感激不禁

《C++程序设计》课程设计
一、设计要求:
1.根据设计任务编制程序,在机器上调试运行,并通过上机考核。
2.按照学校“课程设计报告格式”的要求,写出课程设计报告,并提交“课程设计说明书”的书面和电子两种版本,以及相关源程序和能够运行的执行文件;
3.课程设计报告在十八周周五之前学习委员统一交到网络教研室。
二、设计任务(任选一项)
1、成绩管理系统
功能要求
输入一个班级的学生基本信息(包括学号,姓名,性别,科目),对N门考试的成绩进行管理(例N=5)。
要求
1) 用户录入每个学生每门课程的分数;
2) 能够计算每个学生的各门功课总分和平均分,并按总分将成绩排序,显示每个学生的总分和名次;
3) 计算全班各门功课的平均分,显示每门课程中低于平均分的每一个学生的学号,姓名,性别,科目,成绩等信息。
4) 显示每门科目中,成绩在90分以上的学生信息,另外还输出每门科目中不及格的学生信息。
5) 能按姓名或者学号查找、增加、删除和保存各个学生的信息

三、问题的解决方案:
面向对象的解决方案:根据系统功能要求,可以将问题解决分为以下步骤:
(1)分析系统中的各个实体之间的关系及其属性和行为;
(2)根据问题描述,设计系统的类层次;
(3)完成类层次中各个类的描述(包括属性和方法);
(4)完成类中各个成员函数的定义;
(5)完成系统的应用模块;
(6)功能调试;
(7)完成系统总结报告以及系统使用说明书。
面向过程的解决方案:根据系统功能要求,可以将问题解决分为以下步骤:
(1)根据问题描述,设计系统的功能结构和模块说明;
(2)完成各个功能模块中函数的定义;
(3)完成系统应用函数调用;
(4)功能调试;
(5)完成系统总结报告以及系统使用说明书。

#include<iostream.h>
#include<string.h>
#include<fstream.h>
class stu
{
char name[20];
double math,chinese,english,average,sum;
public:
stu()
{
}
stu(char n[20],double ma,double chin,double eng)
{
strcpy(name,n);
math=ma;
chinese=chin;
english=eng;
}
double getsum()
{
sum=chinese+english+math;
return sum;
}
double getaver()
{
average=getsum()/3;
return average;
}
friend void main();
};

void main()
{
cout<<"请选择您需要的操作!"<<endl;
cout<<"操作:"<<endl;
cout<<"(0)数据录入"<<endl;
cout<<"(1)增加人员"<<endl;
cout<<"(2)删除人员"<<endl;
cout<<"(3)修改数据"<<endl;
cout<<"查询:"<<endl;
cout<<"(4)按总成绩查询"<<endl;
cout<<"(5)按姓名查询"<<endl;
cout<<"(6)输出所有学生的数据"<<endl;
cout<<"成绩名词"<<endl;
cout<<"(7)按总分查询排名"<<endl;
cout<<"(8)按语文查询排名"<<endl;
cout<<"(9)按数学查询排名"<<endl;
cout<<"(y)按英语查询排名"<<endl;
cout<<"选择相关操作请输入相对的括号里的阿拉伯数字!"<<endl;
char p;char w;
stu *s[50];
ofstream *file[50];
int i=0;
int j=0;
bool flag2=0;
do
{
cin>>p;
if((p>='0'&&p<='10'))
flag2=1;
else
cout<<"指令错误!请重新输入:"<<endl;
}while(flag2==0);
do{
switch(p)
{
case '0':
{
char c;
char name[20];double math,chinese,english;
do{
cout<<"请输入姓名"<<endl;
cin>>name;
cout<<"请输入数学成绩:"<<endl;
cin>>math;
cout<<"请输入语文成绩:"<<endl;
cin>>chinese;
cout<<"请输入外语成绩:"<<endl;
cin>>english;
file[j]=new ofstream("d:\\document",ios::ate);
*file[j]<<"姓名"<<name<<"数学成绩"<<math<<"语文成绩"<<chinese<<"外语成绩"<<english<<endl;
j++;
s[i]=new stu(name, math, chinese, english);
i++;
cout<<"数据录入成功,想继续录入吗(y/n)"<<endl;
cin>>c;
flag2=0;
do
{
if(c!='y'&&c!='n')
{
cout<<"指令错误!请重新输入!"<<endl;
cin>>c;
}
else
flag2=1;
}while(flag2==0);
}while(c=='y');
break;
}
case '4':
{
double t;char c;
do
{
int flag1=0;
cout<<"请输入你要查询学生的总成绩"<<endl;
cin>>t;
for(int q=0;q<i;q++)
{
if(s[q]->getsum()==t)
{
flag1=1;
cout<<"您要查询的学生是:"<<(*s[q]).name<<endl;
}
}
if(flag1==0)
cout<<"对不起!您要查询的学生不存在!"<<endl;
cout<<"您想继续查询吗?(y/n)"<<endl;
cin>>c;
if(c!='y'&&c!='n')
{
cout<<"指令错误!请重新输入!"<<endl;
cin>>c;
}
}
while(c=='y');
break;
}

case '5':
{
char n[20];int j=0;char c;
do{
int flag=0;
cout<<"请输入你要查询的学生姓名"<<endl;
cin>>n;
for(int j=0;j<i;j++)
{
if(strcmp(n,(*s[j]).name)==0)
{
flag=1;
cout<<"您要查询的学生是:"<<(*s[j]).name<<endl;
cout<<(*s[j]).name<<"的总成绩成绩是"<<(*s[j]).getsum()<<endl<<"平均成绩是:"<<(*s[j]).getaver()<<endl;
}
}
if(flag==0)
cout<<"对不起!您要查询的学生不存在!"<<endl;
cout<<"您想继续查询吗?(y/n)"<<endl;
cin>>c;
if(c!='y'&&c!='n')
{
cout<<"指令错误!请重新输入!"<<endl;
cin>>c;
}
}
while(c=='y');
break;
}
case '1':
{
char name[20];double math,chinese,english;
char c;
do
{
cout<<"请输入您要增加的学生的姓名:"<<endl;
cin>>name;
cout<<"请输入数学成绩:"<<endl;
cin>>math;
cout<<"请输入语文成绩:"<<endl;
cin>>chinese;
cout<<"请输入外语成绩:"<<endl;
cin>>english;
file[j]=new ofstream("d:\\document",ios::ate);
*file[j]<<"姓名"<<name<<"数学成绩"<<math<<"语文成绩"<<chinese<<"外语成绩"<<english<<endl;
j++;
s[i]=new stu(name, math, chinese, english);
i++;
cout<<"数据录入成功,想继续录入吗(y/n)"<<endl;
cin>>c;
if(c!='y'&&c!='n')
{
cout<<"指令错误!请重新输入!"<<endl;
cin>>c;
}
}while(c=='y');
break;
}
case '2':
{
char name[20];bool flag3=0;char c;
do{
cout<<"请输入您要删除的学生姓名:"<<endl;
cin>>name;
for(int h=0;h<i;h++)
{
if(strcmp(name,s[h]->name)==0)
{
flag3=1;
i--;
do{
s[h]=s[h+1];
h++;
}while(h<=i);
}
}
if(flag3==0)
cout<<"您要求删除的对象本来就不存在!请检查输入的正确性!";
cout<<"要继续删除吗?(y/n)"<<endl;
cin>>c;
if(c!='y'&&c!='n')
{
cout<<"指令错误!请重新输入!"<<endl;
cin>>c;
}
}while(c=='y');
break;
}
case '3':
{
char name[20];double mat,chin,eng;flag2=0;
char c;
do
{
cout<<"请输入您要修改的学生的姓名:"<<endl;
cin>>name;
for(int h=0;h<i;h++)
{
if(strcmp(name,s[h]->name)==0)
{
flag2=1;
cout<<"请输入新的数学成绩:"<<endl;
cin>>mat;
cout<<"请输入新的语文成绩:"<<endl;
cin>>chin;
cout<<"请输入新的外语成绩:"<<endl;
cin>>eng;
s[h]->chinese=chin;
s[h]->math=mat;
s[h]->english=eng;
cout<<"数据修改成功!";
}
}
if(flag2==0)
{
cout<<"您要修改的学生本来就不存在!请检查重新输入!"<<endl;
}
cout<<"想继续修改吗(y/n)"<<endl;
cin>>c;
if(c!='y'&&c!='n')
{
cout<<"指令错误!请重新输入!"<<endl;
cin>>c;
}
}while(c=='y');
break;
}

case '6':
{
cout<<"本系统所有学生数据如下:"<<endl;
if(i==0)
cout<<"管理系统中没有录入数据或者数据已经被删除!"<<endl;
for(int k=0;k<i;k++)
{
cout<<k+1<<" "<<"姓名:"<<" "<<s[k]->name<<
"语文:"<<" "<<s[k]->chinese<<"数学:"<<" "<<s[k]->math
<<"外语:"<<" "<<s[k]->english<<"总分:"<<" "<<(*s[k]).getsum()
<<"平均分:"<<" "<<(*s[k]).getaver()<<endl;
}
break;
}
case '7':
{
int t;stu b;

cout<<"本系统所以学生排名如下:"<<endl;
for(int x=0;x<i-1;x++)
{
t=x;
for(int y=x+1;y<i;y++)
{
if((s[t]->getsum())<(s[y]->getsum()))
t=y;
if(t!=x)
{
b=*s[x];
*s[x]=*s[t];
*s[t]=b;
}
}
}
if(i==0)
cout<<"管理系统中没有录入数据或者数据已经被删除!";
for(int k=0;k<i;k++)
{
cout<<k+1<<" "<<"姓名:"<<" "<<s[k]->name<<
"语文:"<<" "<<s[k]->chinese<<"数学:"<<" "<<s[k]->math
<<"外语:"<<" "<<s[k]->english<<"总分:"<<" "<<s[k]->getsum()
<<"平均分:"<<" "<<s[k]->getaver()<<endl;
}
break;
}
case '8':
{
int t;stu b;

cout<<"本系统所以学生语文排名如下:"<<endl;
for(int x=0;x<i-1;x++)
{
t=x;
for(int y=x+1;y<i;y++)
{
if((s[t]->chinese)<(s[y]->chinese))
t=y;
if(t!=x)
{
b=*s[t];
*s[t]=*s[x];
*s[x]=b;
}
}
}

if(i==0)
cout<<"管理系统中没有录入数据或者数据已经被删除!";
for(int k=0;k<i;k++)
{
cout<<k+1<<" "<<"姓名:"<<" "<<s[k]->name<<
"语文:"<<" "<<s[k]->chinese<<"数学:"<<" "<<s[k]->math
<<"外语:"<<" "<<s[k]->english<<"总分:"<<" "<<s[k]->getsum()
<<"平均分:"<<" "<<s[k]->getaver()<<endl;
}
break;
}
case '9':
{
int t;stu b;

cout<<"本系统所以学生数学排名如下:"<<endl;
for(int x=0;x<i-1;x++)
{
t=x;
for(int y=x+1;y<i;y++)
{
if((s[t]->math)<(s[y]->math))
t=y;
if(t!=x)
{
b=*s[t];
*s[t]=*s[x];
*s[x]=b;
}
}
}

if(i==0)
cout<<"管理系统中没有录入数据或者数据已经被删除!";
for(int k=0;k<i;k++)
{
cout<<k+1<<" "<<"姓名:"<<" "<<s[k]->name<<
"语文:"<<" "<<s[k]->chinese<<"数学:"<<" "<<s[k]->math
<<"外语:"<<" "<<s[k]->english<<"总分:"<<" "<<s[k]->getsum()
<<"平均分:"<<" "<<s[k]->getaver()<<endl;
}
break;
}
case 'y':
{
int t;stu b;

cout<<"本系统所以学生英语排名如下:"<<endl;
for(int x=0;x<i-1;x++)
{
t=x;
for(int y=x+1;y<i;y++)
{
if((s[t]->english)<(s[y]->english))
t=y;
if(t!=x)
{
b=*s[t];
*s[t]=*s[x];
*s[x]=b;
}
}
}

if(i==0)
cout<<"管理系统中没有录入数据或者数据已经被删除!";
for(int k=0;k<i;k++)
{
cout<<k+1<<" "<<"姓名:"<<" "<<s[k]->name<<
"语文:"<<" "<<s[k]->chinese<<"数学:"<<" "<<s[k]->math
<<"外语:"<<" "<<s[k]->english<<"总分:"<<" "<<s[k]->getsum()
<<"平均分:"<<" "<<s[k]->getaver()<<endl;
}
}
break;
}

cout<<"您想继续进行其他操作吗?(y/n)"<<endl;
bool flag4=0;
do
{
cin>>w;
if(w!='y'&&w!='n')
cout<<"指令错误!请重新输入!"<<endl;
else
flag4=1;
}while(flag4==0);
if(w=='y')
cout<<"请输入操作代码(0 录入/4 按总分查询/5 按姓名查询/1 增加人员/2 删除人员/3 修改数据/6 显示所有成员数据/7 按总分排名/8 按语文排名/9按数学排名/y按英语排名)"<<endl;
cin>>p;
}while(w=='y');
for(int x=0;x<i;x++)
{
delete s[x];
cout<<"delete all members!"<<endl;
}

}
温馨提示:内容为网友见解,仅供参考
第1个回答  2007-07-08
编结束了才看到要编系统,但看在我编了一下午的份上把分给我吧.
#include<fstream>
#include<iostream>
using namespace std;
ifstream fin ("chenji.in");
ofstream fout ("chenji.out");
string name[2500];
int xf[5][2500];
void dlt (int w,int ll)
{
int x,k;
for (;w<=ll-1;w++)
{
for (int i=0;i<=5;i++)
name[w]=name[w+1];
for (k=1;k<=4;k++)
xf[k][w]=xf[k][w+1];
}
}
int lf (string g,int oo)
{
int u;
for (u=1;u<=oo;u++)
if (name[u]==g)
return (u);
}
main()
{
int i,k,zs,cm,lm,cm1,kk,z,cm2,m,t;
string g1,as[2500];
cout<<"学生原信息请保存入chenji.in"<<endl;
cout<<"学生处理后信息保存在chenji.out"<<endl;
cout<<"请输入学生总数"<<endl;
cin>>zs;
cout<<endl;
for (i=1;i<=zs;i++)
{
fin>>name[i];
for (k=1;k<=4;k++)
fin>>xf[k][i];
}
lm=9;
cout<<"友情提示(学生信息):";
for (i=1;i<=zs;i++)
{
cout<<name[i]<<' ';
for (k=1;k<=4;k++)
if (xf[k][i]<10 && k==1)
cout<<'0'<<xf[k][i]<<' ';
else cout<<xf[k][i]<<' ';
cout<<endl;
}
while (lm!=0)
{
cout<<"增加学生信息请按1"<<endl<<"删除学生信息请按2"<<endl;
cout<<"修改学生信息请按3"<<endl<<"查分请按4"<<endl;
cout<<"成绩统计请按5"<<endl;
cout<<"排序请按6"<<endl;
cin>>cm;
cout<<endl;
if (cm==2)
{
cout<<"请输入删除几号"<<endl;
cin>>cm;
cout<<endl;
dlt (cm,zs);
zs--;
}
if (cm==1)
{
cout<<"请输入增加的学生姓名"<<endl;
cin>>name[++zs];
cout<<endl;
cout<<"请输入增加的学生各门成绩"<<endl<<"语文:";
cin>>xf[2][zs];
cout<<endl<<"数学:";
cin>>xf[3][zs];
cout<<endl<<"英语:"<<endl;
cin>>xf[4][zs];
xf[1][zs]=zs;
}
if (cm==3)
{
cout<<"请输入要修改人的学号"<<endl;
cin>>cm;
cout<<"请输入要修改的学科,语文请按1,数学请按2,英语请按3"<<endl;
cin>>cm1;
lm++;
cout<<"请输入修改后分数:";
cin>>xf[cm1][cm];
}
if (cm<=3)
cout<<"修改完成,请到chenji.out中看结果";
if (cm==4)
{
cout<<"按姓名查找请按1,按学号查找请按2"<<endl;
cin>>cm1;
if (cm1==1)
{

cout<<"请输入要查找的学生的姓名:";
cin>>g1;
kk=lf(g1,zs);
}
if (cm1==2)
{
cout<<"请输入要查找的学生的学号:";
cin>>kk;
}
cout<<"这是你所要的信息:"<<endl;
cout<<"姓名 号 语文 数学 英语"<<endl;
cout<<name[kk]<<' ';
if (kk<9)
fout<<'0';
for (z=1;z<=4;z++)
cout<<xf[z][kk]<<' ';
cout<<endl;
}
if (cm==5)
{
cout<<"请输入要修改的学科,语文请按1,数学请按2,英语请按3"<<endl;
cin>>kk;
kk++;
cout<<"请输入统计段起始值:";
cin>>cm1;
cout<<"请输入统计段终止值:";
cin>>cm2;
m=0;
for (z=1;z<=zs;z++)
if (xf[kk][z]>=cm1 && xf[kk][z]<=cm2)
{
m++;
as[m]=name[z];
}
if (m==0)
cout<<"没有学生在"<<cm1<<'~'<<cm2<<"中";
else cout<<"共有"<<m<<"个学生在"<<cm1<<"分"<<'~'<<cm2<<"分中分别是: ";
for (z=1;z<=m;z++)
cout<<as[z]<<' ';
cout<<endl;
}
if (cm==6)
{
cout<<"请输入要排序学生的学号:";
cin>>kk;
cm1=xf[2][kk];
cm2=xf[3][kk];
z=xf[4][kk];
if (cm1<cm2)
{
t=cm1;
cm1=cm2;
cm2=t;
}
if (cm1<z)
{
t=cm1;
cm1=z;
z=t;
}
if (cm2<z)
{
t=cm2;
cm2=z;
z=t;
}
cout<<"排序后分数"<<cm1<<"->"<<cm2<<"->"<<z<<endl;
}
cout<<"处理结束请按0"<<endl;
cout<<"继续处理请按0以外的任何数"<<endl;
cin>>lm;
}
fout<<"姓名 学号 语文 数学 英语"<<endl;
for (i=1;i<=zs;i++)
{
fout<<name[i]<<' ';
for (k=1;k<=4;k++)
if (xf[k][i]<10 &&k==1)
fout<<'0'<<xf[k][i]<<' ';
else fout<<xf[k][i]<<' ';
fout<<endl;
}
}本回答被网友采纳
第2个回答  2007-06-29
这几天,藏有这个程序的还真赚分,汗``````
相似回答
大家正在搜