主题:急!急!帮忙修改一个课程设计
请大家帮忙修改一下这个程序 使用输入输出流将数据写入文件,使得在以后每次启动程序后不必重新输入数据,程序设计马上到时间了,麻烦大家快点帮忙改改,本人将不胜感激!麻烦各位大家了
主要代码
// 研究生类 //
void Graduate::set()
{
cout<<"输入研究生信息\n"<<"学号 姓名 性别(man/woman) 导师 三科成绩 出生年\n";
cin>>num>>name>>sex>>instruct>>ch>>en>>ma>>birth;
}
int Graduate::getid()
{return id;}
char*Graduate::getins()
{return instruct;}
Graduate::Graduate():Base()
{
id=1;
}
void Graduate::display()
{
cout<<"\n研究生:\n"<<num<<" "<<name<<" "<<sex<<" "<<instruct<<" "<<(ch+en+ma)/3<<" "<<(2011-birth)<<endl;
}
//研究生类中重载输入输出符
ostream& operator<<(ostream& out,const Graduate& right)
{
out<<right.num<<" "<<right.name<<" "<<right.sex<<" "<<right.instruct<<" "<<(right.ch+right.en+right.ma)/3<<" "<<(2011-right.birth)<<endl;
return out;
}
istream& operator>>(istream& in,Graduate& right)
{
in>>right.num>>right.name>>right.sex>>right.instruct>>right.ch>>right.en>>right.ma>>right.birth;
return in;
}
//主函数
int main()
{
int getin,j;//主菜单中接受选择
int c1,c2,c3,c4,c5,c6,c7,c8;//case中用来接收选择
Base * p[100];
int hao[100],htp;// case 8
int m,n;//case 8
double zong[100],ztp;//case 8
static int i=0;//静态,用来统计对象创建的个数
ofstream out("com.txt");
ifstream in("com.txt");
lab2:system("cls");
cout<<"\n\n\n";
cout<<" *----------学生信息管理系统----------*\n\n";
cout<<" 1.录入信息\n";
cout<<" 2.显示全部学生\n";
cout<<" 3.计算平均成绩\n";
cout<<" 4.删除一个学生\n";
cout<<" 5.按年级输出学生信息\n";
cout<<" 6.按性别输出学生信息\n";
cout<<" 7.按姓名检索学生\n";
cout<<" 8.按总分排序\n";
cout<<" 9.结束程序运行\n\n";
cout<<"输入您的选择(1~8):";
cin>>getin;
switch(getin)
{
case 1://录入信息
lab1: system("cls");
cout<<"1.录入本科生信息"<<endl;
cout<<"2.录入研究生信息"<<endl;
cout<<"3.保存所有信息"<<endl;
cout<<"4.返回上一级菜单"<<endl;
cout<<"选择:";
cin>>c1;
cout<<endl;
switch(c1)
{
case 1:{
p[i]=new College;
p[i]->set();
i++;
goto lab1;
}
case 2:{
p[i]=new Graduate;
p[i]->set();
i++;
goto lab1;
}
case 3://输出文件
for(j=0;j<i;j++)
{
if(p[j]->getid()==1)
out<<p[j]->getnum()<<" "<<p[j]->getname()<<" "<<p[j]->getsex()<<" "<<p[j]->getch()<<" "<<p[j]->geten()<<" "<<p[j]->getma()<<" "<<2011-p[j]->getbirth()<<endl;
if(p[j]->getid()==0)
out<<p[j]->getnum()<<" "<<p[j]->getname()<<" "<<p[j]->getsex()<<" "<<p[j]->getch()<<" "<<p[j]->geten()<<" "<<p[j]->getma()<<" "<<2011-p[j]->getbirth()<<endl;
}
cout<<" 保存成功!";
goto lab1;
default:
goto lab2;
}
break;
case 2: //显示全部信息
system("cls");
cout<<"学生信息\n"<<"学号 姓名 性别(man/woman) 专业/导师 平均成绩 年龄\n";
for(j=0;j<i;j++)
p[j]->display();
cout<<"\n\n输入任意数字返回主菜单:";
cin>>c2;
switch(c2)
{
case 1:case 2:case 3:default: goto lab2;
}
case 3://计算平均成绩
system("cls");
cout<<endl<<endl;
cout<<" ------计算平均成绩-----\n";
cout<<" 1. 语文平均成绩\n";
cout<<" 2. 英语平均成绩\n";
cout<<" 3. 数学平均成绩\n";
cout<<" -----------------------\n";
cout<<" 你的选择:";
cin>>c3;
switch(c3)
{
case 1:{
double sumy=0;
for(j=0;j<i;j++)
{
sumy=sumy+p[j]->getch();
}
cout<<"\n语文平均成绩:"<<(sumy/i)<<endl;
break;
}
case 2:{
double sume=0;
for(j=0;j<i;j++)
{
sume=sume+p[j]->getch();
}
cout<<"\n英语平均成绩:"<<(sume/i)<<endl;
break;
}
case 3:{
double summ=0;
for(j=0;j<i;j++)
{
summ=summ+p[j]->getch();
}
cout<<"\n数学平均成绩:"<<(summ/i)<<endl;
break;
}
default :
goto lab2;
}
cout<<"\n\n输入任意数字返回主菜单:";
cin>>c3;
switch(c3)
{
case 1:case 2:case 3:default: goto lab2;
}
case 4://删除一个学生
system("cls");
cout<<endl<<endl;
cout<<" ------删除一个学生-----\n";
cout<<" 1. 按学号删除\n";
cout<<" 2. 按姓名删除\n";
cout<<" 3. 返回上级\n";
cout<<" -----------------------\n";
cout<<" 你的选择:";
cin>>c4;
switch(c4)
{
case 1:
int xuehao;
cout<<"输入学生的学号:";
cin>>xuehao;
for(j=0;j<i;j++)
{
if(p[j]->getnum()==xuehao)
{
for(int del=j;del<i;del++)
p[del]=p[del+1];
i--;
}
}
cout<<" \n成功删除.......!\n";
cout<<"\n\n输入任意数字返回主菜单:";
cin>>c3;
switch(c3)
{
case 1:case 2:case 3:default: goto lab2;
}
case 2:
char ming[20];
cout<<"输入学生的姓名:";
cin>>ming;
for(j=0;j<i;j++)
{
if(p[j]->getname()==ming)
{
for(int del=j;del<i;del++)
p[del]=p[del+1];
i--;
}
}
cout<<" \n成功删除........!\n";
cout<<"\n\n输入任意数字返回主菜单:";
cin>>c3;
switch(c3)
{
case 1:case 2:case 3:default: goto lab2;
}
default:goto lab2;
}
case 5: ////按年级输出学生信息////
system("cls");
cout<<"\n\n\n";
cout<<" ---------按年级输出学生信息---------\n";
cout<<" 1.按本科生输出学生信息\n";
cout<<" 2.按研究生输出学生信息\n";
cout<<" ------------------------------------\n";
cout<<" 你的选择:";
cin>>c5;
switch(c5)
{
case 1:
cout<<"学号 姓名 性别 专业 平均成绩 年龄\n";
for(j=0;j<i;j++)
{
if(p[j]->getid()==0)
p[j]->display();
}
cout<<"\n输入任意数字返回主菜单:";
cin>>c5;
switch(c5)
{
case 1:case 2:case 3:default: goto lab2;
}
case 2:
cout<<"学号 姓名 性别 导师 平均成绩 年龄\n";
for(j=0;j<i;j++)
{
if(p[j]->getid()==1)
p[j]->display();
}
cout<<"\n输入任意数字返回主菜单:";
cin>>c5;
switch(c5)
{
case 1:case 2:case 3:default: goto lab2;
}
default:
cout<<"\n输入错误!\n";
break;
cout<<"\n输入任意数字返回主菜单:";
cin>>c5;
switch(c5)
{
case 1:case 2:case 3:default: goto lab2;
}
}
case 6://按性别输出学生信息
system("cls");
cout<<endl<<endl;
cout<<" --------按性别输出学生信息-------\n";
cout<<" 1.显示全部女生\n";
cout<<" 2.显示全部男生\n";
cout<<" ---------------------------------\n";
cout<<" 你的选择:";
cin>>c6;
if(c6==1)
{
for(j=0;j<i;j++)
{
if(p[j]->getsex()=="man")
p[j]->display();
}
}
else if(c6==2)
for(j=0;j<i;j++)
{
if(p[j]->getsex()=="woman")
p[j]->display();
}
else
cout<<"\n\n Error!\n";
cout<<"\n\n输入任意数字返回主菜单:";
cin>>c6;
switch(c6)
{
case 1:case 2:case 3:default: goto lab2;
}
case 7://按姓名检索学生
system("cls");
cout<<"\n\n\n\n\n\n";
char xingm[20];
cout<<"输入学生的姓名:";
cin>>xingm;
for(j=0;j<i;j++)
{
if(p[j]->getname()==xingm)
{
p[j]->display();
}
}
cout<<"\n\n输入任意数字返回主菜单:";
cin>>c7;
switch(c7)
{
case 1:case 2:case 3:default: goto lab2;
}
case 8://按总分排序
for(int ci=0;ci<i;ci++)
{
hao[ci]=p[ci]->getnum();
zong[ci]=p[ci]->getsum();
}
for(n=0;n<i;n++)
{
for(m=n+1;m<i;m++)
{
if(zong[n]>zong[m])
{
htp=hao[m];
hao[m]=hao[n];
hao[n]=htp;
ztp=zong[m];
zong[m]=zong[n];
zong[n]=ztp;
}
}
}
system("cls");
cout<<endl<<endl;
cout<<" ---------按总分排序--------\n";
cout<<" 学生学号 总分\n";
for(j=0;j<i;j++)
{
cout<<" "<<hao[j]<<" "<<zong[j]<<endl;
}
cout<<"\n\n输入任意数字返回主菜单:";
cin>>c8;
switch(c8)
{
case 1:case 2:case 3:default: goto lab2;
}
}//switch end !
for(j=0;j<i;j++)//释放内存空间
delete p[j];
}// main end !
主要代码
// 研究生类 //
void Graduate::set()
{
cout<<"输入研究生信息\n"<<"学号 姓名 性别(man/woman) 导师 三科成绩 出生年\n";
cin>>num>>name>>sex>>instruct>>ch>>en>>ma>>birth;
}
int Graduate::getid()
{return id;}
char*Graduate::getins()
{return instruct;}
Graduate::Graduate():Base()
{
id=1;
}
void Graduate::display()
{
cout<<"\n研究生:\n"<<num<<" "<<name<<" "<<sex<<" "<<instruct<<" "<<(ch+en+ma)/3<<" "<<(2011-birth)<<endl;
}
//研究生类中重载输入输出符
ostream& operator<<(ostream& out,const Graduate& right)
{
out<<right.num<<" "<<right.name<<" "<<right.sex<<" "<<right.instruct<<" "<<(right.ch+right.en+right.ma)/3<<" "<<(2011-right.birth)<<endl;
return out;
}
istream& operator>>(istream& in,Graduate& right)
{
in>>right.num>>right.name>>right.sex>>right.instruct>>right.ch>>right.en>>right.ma>>right.birth;
return in;
}
//主函数
int main()
{
int getin,j;//主菜单中接受选择
int c1,c2,c3,c4,c5,c6,c7,c8;//case中用来接收选择
Base * p[100];
int hao[100],htp;// case 8
int m,n;//case 8
double zong[100],ztp;//case 8
static int i=0;//静态,用来统计对象创建的个数
ofstream out("com.txt");
ifstream in("com.txt");
lab2:system("cls");
cout<<"\n\n\n";
cout<<" *----------学生信息管理系统----------*\n\n";
cout<<" 1.录入信息\n";
cout<<" 2.显示全部学生\n";
cout<<" 3.计算平均成绩\n";
cout<<" 4.删除一个学生\n";
cout<<" 5.按年级输出学生信息\n";
cout<<" 6.按性别输出学生信息\n";
cout<<" 7.按姓名检索学生\n";
cout<<" 8.按总分排序\n";
cout<<" 9.结束程序运行\n\n";
cout<<"输入您的选择(1~8):";
cin>>getin;
switch(getin)
{
case 1://录入信息
lab1: system("cls");
cout<<"1.录入本科生信息"<<endl;
cout<<"2.录入研究生信息"<<endl;
cout<<"3.保存所有信息"<<endl;
cout<<"4.返回上一级菜单"<<endl;
cout<<"选择:";
cin>>c1;
cout<<endl;
switch(c1)
{
case 1:{
p[i]=new College;
p[i]->set();
i++;
goto lab1;
}
case 2:{
p[i]=new Graduate;
p[i]->set();
i++;
goto lab1;
}
case 3://输出文件
for(j=0;j<i;j++)
{
if(p[j]->getid()==1)
out<<p[j]->getnum()<<" "<<p[j]->getname()<<" "<<p[j]->getsex()<<" "<<p[j]->getch()<<" "<<p[j]->geten()<<" "<<p[j]->getma()<<" "<<2011-p[j]->getbirth()<<endl;
if(p[j]->getid()==0)
out<<p[j]->getnum()<<" "<<p[j]->getname()<<" "<<p[j]->getsex()<<" "<<p[j]->getch()<<" "<<p[j]->geten()<<" "<<p[j]->getma()<<" "<<2011-p[j]->getbirth()<<endl;
}
cout<<" 保存成功!";
goto lab1;
default:
goto lab2;
}
break;
case 2: //显示全部信息
system("cls");
cout<<"学生信息\n"<<"学号 姓名 性别(man/woman) 专业/导师 平均成绩 年龄\n";
for(j=0;j<i;j++)
p[j]->display();
cout<<"\n\n输入任意数字返回主菜单:";
cin>>c2;
switch(c2)
{
case 1:case 2:case 3:default: goto lab2;
}
case 3://计算平均成绩
system("cls");
cout<<endl<<endl;
cout<<" ------计算平均成绩-----\n";
cout<<" 1. 语文平均成绩\n";
cout<<" 2. 英语平均成绩\n";
cout<<" 3. 数学平均成绩\n";
cout<<" -----------------------\n";
cout<<" 你的选择:";
cin>>c3;
switch(c3)
{
case 1:{
double sumy=0;
for(j=0;j<i;j++)
{
sumy=sumy+p[j]->getch();
}
cout<<"\n语文平均成绩:"<<(sumy/i)<<endl;
break;
}
case 2:{
double sume=0;
for(j=0;j<i;j++)
{
sume=sume+p[j]->getch();
}
cout<<"\n英语平均成绩:"<<(sume/i)<<endl;
break;
}
case 3:{
double summ=0;
for(j=0;j<i;j++)
{
summ=summ+p[j]->getch();
}
cout<<"\n数学平均成绩:"<<(summ/i)<<endl;
break;
}
default :
goto lab2;
}
cout<<"\n\n输入任意数字返回主菜单:";
cin>>c3;
switch(c3)
{
case 1:case 2:case 3:default: goto lab2;
}
case 4://删除一个学生
system("cls");
cout<<endl<<endl;
cout<<" ------删除一个学生-----\n";
cout<<" 1. 按学号删除\n";
cout<<" 2. 按姓名删除\n";
cout<<" 3. 返回上级\n";
cout<<" -----------------------\n";
cout<<" 你的选择:";
cin>>c4;
switch(c4)
{
case 1:
int xuehao;
cout<<"输入学生的学号:";
cin>>xuehao;
for(j=0;j<i;j++)
{
if(p[j]->getnum()==xuehao)
{
for(int del=j;del<i;del++)
p[del]=p[del+1];
i--;
}
}
cout<<" \n成功删除.......!\n";
cout<<"\n\n输入任意数字返回主菜单:";
cin>>c3;
switch(c3)
{
case 1:case 2:case 3:default: goto lab2;
}
case 2:
char ming[20];
cout<<"输入学生的姓名:";
cin>>ming;
for(j=0;j<i;j++)
{
if(p[j]->getname()==ming)
{
for(int del=j;del<i;del++)
p[del]=p[del+1];
i--;
}
}
cout<<" \n成功删除........!\n";
cout<<"\n\n输入任意数字返回主菜单:";
cin>>c3;
switch(c3)
{
case 1:case 2:case 3:default: goto lab2;
}
default:goto lab2;
}
case 5: ////按年级输出学生信息////
system("cls");
cout<<"\n\n\n";
cout<<" ---------按年级输出学生信息---------\n";
cout<<" 1.按本科生输出学生信息\n";
cout<<" 2.按研究生输出学生信息\n";
cout<<" ------------------------------------\n";
cout<<" 你的选择:";
cin>>c5;
switch(c5)
{
case 1:
cout<<"学号 姓名 性别 专业 平均成绩 年龄\n";
for(j=0;j<i;j++)
{
if(p[j]->getid()==0)
p[j]->display();
}
cout<<"\n输入任意数字返回主菜单:";
cin>>c5;
switch(c5)
{
case 1:case 2:case 3:default: goto lab2;
}
case 2:
cout<<"学号 姓名 性别 导师 平均成绩 年龄\n";
for(j=0;j<i;j++)
{
if(p[j]->getid()==1)
p[j]->display();
}
cout<<"\n输入任意数字返回主菜单:";
cin>>c5;
switch(c5)
{
case 1:case 2:case 3:default: goto lab2;
}
default:
cout<<"\n输入错误!\n";
break;
cout<<"\n输入任意数字返回主菜单:";
cin>>c5;
switch(c5)
{
case 1:case 2:case 3:default: goto lab2;
}
}
case 6://按性别输出学生信息
system("cls");
cout<<endl<<endl;
cout<<" --------按性别输出学生信息-------\n";
cout<<" 1.显示全部女生\n";
cout<<" 2.显示全部男生\n";
cout<<" ---------------------------------\n";
cout<<" 你的选择:";
cin>>c6;
if(c6==1)
{
for(j=0;j<i;j++)
{
if(p[j]->getsex()=="man")
p[j]->display();
}
}
else if(c6==2)
for(j=0;j<i;j++)
{
if(p[j]->getsex()=="woman")
p[j]->display();
}
else
cout<<"\n\n Error!\n";
cout<<"\n\n输入任意数字返回主菜单:";
cin>>c6;
switch(c6)
{
case 1:case 2:case 3:default: goto lab2;
}
case 7://按姓名检索学生
system("cls");
cout<<"\n\n\n\n\n\n";
char xingm[20];
cout<<"输入学生的姓名:";
cin>>xingm;
for(j=0;j<i;j++)
{
if(p[j]->getname()==xingm)
{
p[j]->display();
}
}
cout<<"\n\n输入任意数字返回主菜单:";
cin>>c7;
switch(c7)
{
case 1:case 2:case 3:default: goto lab2;
}
case 8://按总分排序
for(int ci=0;ci<i;ci++)
{
hao[ci]=p[ci]->getnum();
zong[ci]=p[ci]->getsum();
}
for(n=0;n<i;n++)
{
for(m=n+1;m<i;m++)
{
if(zong[n]>zong[m])
{
htp=hao[m];
hao[m]=hao[n];
hao[n]=htp;
ztp=zong[m];
zong[m]=zong[n];
zong[n]=ztp;
}
}
}
system("cls");
cout<<endl<<endl;
cout<<" ---------按总分排序--------\n";
cout<<" 学生学号 总分\n";
for(j=0;j<i;j++)
{
cout<<" "<<hao[j]<<" "<<zong[j]<<endl;
}
cout<<"\n\n输入任意数字返回主菜单:";
cin>>c8;
switch(c8)
{
case 1:case 2:case 3:default: goto lab2;
}
}//switch end !
for(j=0;j<i;j++)//释放内存空间
delete p[j];
}// main end !