C++代码运行输入的时候遇到问题
#include<iostream.h>#include<string.h>
#include<fstream.h>
#include<stdlib.h>
#include<iomanip.h>
class student
{
private:
int number; //学号
char name[20]; //姓名
char workUnit[20];//工作单位
double Score1,Score2,Score3,allscore,average;//课程分数
public:
student(){}
student(int nu,char n[20],char w[20],double score1,double score2,double score3,double as,double av)
{
strcpy(name,n);
strcpy(workUnit,w);
number=nu;
Score1=score1,Score2=score2,Score3=score3,allscore=as;average=av;
}
friend void main();
};
void main()
{
double allscore;
double average;
cout<<" 欢迎使用学生认知实习信息管理系统"<<endl;
cout<<" ********************************************"<<endl;
cout<<" **** 学生认知实习信息管理系统 ****"<<endl;
cout<<" ********************************************"<<endl;
cout<<" 0、输入数据 "<<endl;
cout<<" 1、增加数据 "<<endl;
cout<<" 2、修改数据 "<<endl;
cout<<" 3、删除学生的信息 "<<endl;
cout<<" 4、按姓名查询 "<<endl;
cout<<" 5、按学号查询 "<<endl;
cout<<" 6、输出所有学生实习成绩 "<<endl;
cout<<" 7、保存文件 "<<endl;
cout<<" 8、退出系统 "<<endl;
cout<<" ============================================="<<endl;
cout<<" 选择0-8数字进行操作"<<endl;
char p;char w;
student s[50]; //指针对象,最多存50个学生数据
ofstream *file[50]; //负责对文件插入操作
int i=0;
int j=0;
int flag=0;
do //flag判断输入是否有效
{
cin>>p;
if((p>='0'&&p<='9'))
flag=1;
else
cout<<" 指令错误!请重新输入:"<<endl;
}while(flag==0);
do{
switch(p) //接收功能选项
{
case '0': //输入数据
{
char c;
int number;
char name[20];char workUnit[20];double Score1,Score2,Score3,allscore,average;
do{
cout<<" 学号 ";
cin>>number;
cout<<endl<<" 姓名:";
cin>>name;
cout<<endl<<" 实习单位 :";
cin>>workUnit;
cout<<endl<<" 实习单位评分:";
cin>>Score1;
cout<<endl<<" 指导教师评分:";
cin>>Score2;
cout<<endl<<" 实习答辩成绩:";
cin>>Score3;
cout<<endl;
{allscore=Score1+Score2+Score3;}
cout<<" 总成绩:"<<allscore<<endl;
{average=(Score2*0.5+Score3*0.5);}
cout<<" 平均成绩:"<<average<<endl;
//file[j]=new ofstream("D:\student.dat",ios::ate);
*file[j]<<" 学号 "<<number<<" 姓名 "<<name<<" 实习单位 "<<workUnit<<" 实习单位评分 "<<Score1
<<" 指导教师评分 "<<Score2<<" 实习答辩成绩 "<<Score3<<"总成绩"<<allscore<<"平均成绩"<<endl;
j++;
s[i]= student(number,name, workUnit,Score1,Score2,Score3,allscore,average);
i++;
cout<<" 数据输入成功,想继续输入吗(y/n):";
cin>>c;
cout<<endl;
do
{
if(c!='y'&&c!='n')
{
cout<<" 指令错误!请重新输入!"<<endl<<" ";
cin>>c;
}
else
flag=1;
}while(flag==0);
}while(c=='y');
break;
}
case '1': //增加数据
{int number;
char name[20];
char workUnit[20];double Score1,Score2,Score3;
char c;
do
{cout<<" 请输入你要争加的学生的学号 ";
cin>>number;
cout<<" 请输入您要增加的学生的姓名:";
cin>>name;
cout<<endl<<" 实习单位 :";
cin>>workUnit;
cout<<endl<<" 实习单位评分:";
cin>>Score1;
cout<<endl<<" 指导教师评分:";
cin>>Score2;
cout<<endl<<" 实习答辩成绩:";
cin>>Score3;
cout<<endl;
{allscore=Score1+Score2+Score3;}
cout<<" 总成绩:"<<allscore<<endl;
{average=(Score2*0.5+Score3*0.5);}
cout<<" 平均成绩:"<<average<<endl;
// file[j]=new ofstream("D:\student.dat",ios::ate);
*file[j]<<" 学号 "<<number<<" 姓名 "<<name<<" 实习单位 "<<workUnit<<" 实习单位评分 "<<Score1
<<" 指导教师评分 "<<Score2<<" 实习答辩成绩 "<<Score3<<"总成绩"<<allscore<<"平均成绩"<<endl;
j++;
s[i]= student(number,name, workUnit,Score1,Score2,Score3,allscore,average);
i++;
cout<<" 数据输入成功,想继续数入吗(y/n):";
cin>>c;
cout<<endl;
if(c!='y'&&c!='n')
{
cout<<" 指令错误!请重新输入!"<<endl<<" ";
cin>>c;
}
}while(c=='y');
break;
}
case '2': //修改数据
{
char name[20];char w[20];double score1,score2,score3,as,av;flag=0;
char c;
if(i==0)
{
cout<<"系统中找不到这个学生";
}
do
{
cout<<" 请输入您要修改的学生的姓名:";
cin>>name;
cout<<endl;
for(int h=0;h<i;h++) //h纪录要修改学生的位置
{
if(strcmp(name,s[h].name)==0)
{
flag=1;
cout<<" 新的实习单位:";
cin>>w;
cout<<endl<<" 实习单位评分:";
cin>>score1;
cout<<endl<<" 指导教师评分:";
cin>>score2;
cout<<endl<<" 实习答辩成绩:";
cin>>score3;
{as=score1+score2+score3;}
cout<<endl<<" 总成绩:"<<as;
{av=(score2*0.5+score3*0.5);}
cout<<endl<<" 平均成绩:"<<av;
cout<<endl;
s[h].Score1=score1;
s[h].Score2=score2;
s[h].Score3=score3;
cout<<" 数据修改成功!"<<endl;
}
}
if(flag==0)
{
cout<<" 您要修改的学生本来就不存在!请检查重新输入!"<<endl;
}
cout<<" 想继续修改吗(y/n):";
cin>>c;
cout<<endl;
if(c!='y'&&c!='n')
{
cout<<" 指令错误!请重新输入!"<<endl<<" ";
cin>>c;
}
}while(c=='y');
break;
}
case '3': //删除学生信息
{
cout<<" 请输入你要删除的姓名 :";
char m[20];
cin>>m;
for(int a=0;a<i;a++)
{
if(strcmp(s[a].name,m)==0)
{
int w;
w=a;
for(w;w<i;w++)
{
s[w]=s[w+1];
i=i-1;}
cout<<" 删除成功!"<<endl;
}
}
break;}
case '4': //学生信息查询
{
char n[20];int j=0;char c;
if(i==0)
{
cout<<" 管理系统中没有输入数据!"<<endl;break;
}
do{
int flag=0;
cout<<" 请输入你要查询的学生姓名:";
cin>>n;
cout<<endl;
for(int j=0;j<i;j++)
{
if(strcmp(n,(s[j]).name)==0)
{
flag=1;
cout<<" 您要查询的学生是:"<<(s[j]).name<<endl;
cout<<"学号:"<<(s[j]).number<<" "<<(s[j]).name<<"的信息是: "<<" 实习单位 "<<(s[j]).workUnit<<" 实习单位评分: "<<
(s[j]).Score1<<" 指导教师评分:"<<(s[j]).Score2<<" 实习答辩成绩:"<<(s[j]).Score3<<" 总成绩"<<(s[j]).allscore<<"
平均成绩"<<(s[j]).average<<endl;
}
}
if(flag==0)
cout<<" 对不起!您要查询的学生不存在!"<<endl;
cout<<" 您想继续查询吗?(y/n):";
cin>>c;
cout<<endl;
if(c!='y'&&c!='n')
{
cout<<" 指令错误!请重新输入!"<<endl;
cin>>c;
}
}
while(c=='y');
break;
}
case '5': //按学号查询
{
int n,j=0;char c;
if(i==0){
cout<<" 管理系统中没有输入数据!"<<endl;break;
}
do{
int flag=0;
cout<<" 请输入你要查询的学生的学号:";
cin>>n;
cout<<endl;
for(int j=0;j<i;j++)
{
if(s[j].number==n)
{
flag=1;
cout<<" 您要查询的学生是:"<<(s[j]).name<<endl;
cout<<"学号:"<<(s[j]).number<<" "<<(s[j]).name<<"的信息是: "<<" 实习单位 "<<(s[j]).workUnit<<" 实习单位评分:
"<<(s[j]).Score1<<" 指导教师评分:"<<(s[j]).Score2<<" 实习答辩成绩:"<<(s[j]).Score3<<" 总成绩"<<(s[j]).allscore<<"
平均成绩"<<(s[j]).average<<endl;
}
}
if(flag==0)
cout<<" 对不起!您要查询的学生不存在!"<<endl;
cout<<" 您想继续查询吗?(y/n):";
cin>>c;
cout<<endl;
if(c!='y'&&c!='n')
{
cout<<" 指令错误!请重新输入!"<<endl;
cin>>c;
}
}
while(c=='y');
break;
}
case '6': //信息输出
{
cout<<" 本系统所有学生数据如下:"<<endl;
if(i==0)
cout<<" 管理系统中没有输入数据!"<<endl;
cout<<"姓名 实习单位 实习单位评分 指导老师评分 实习答辩成绩 总成绩 平均成绩 "<<endl;
for(int k=0;k<i;k++)
{
cout<<s[k].number<<setw(7)<<s[k].name<<setw(7)<<s[k].workUnit<<setw(4)
<<(s[k]).Score1<<setw(5)<<(s[k]).Score2<<setw(5)
<<(s[k]).Score3<<setw(4)<<s[k].allscore<<setw(10)<<(s[k]).average<<setw(7)<<endl;
}
break;
}
case'7':{
cout<<" 保存成功!"<<endl;break;
}
case'8'://退出
{exit(0); cout<<"Bye bye!(欢迎你的再次使用!)"<<endl;}
}
cout<<" 您想继续进行其他操作吗?(y/n):";
int flag=0;
do
{
cin>>w;
cout<<endl;
if(w!='y'&&w!='n')
cout<<" 指令错误!请重新输入!"<<endl;
else
flag=1;
}while(flag==0);
if(w=='y')
cout<<" 请输入操作代码:0 输入数据"<<endl;
cout<<" 1 增加数据"<<endl;
cout<<" 2 修改数据"<<endl;
cout<<" 3 删除学生的信息"<<endl;
cout<<" 4 按姓名查询"<<endl;
cout<<" 5 输出所有学生成绩"<<endl;
cout<<" 6 保存文件"<<endl;
cout<<" 7 退出系统"<<endl;
cin>>p;
}while(w=='y');
}
[ 本帖最后由 爱海松涛 于 2011-6-29 14:04 编辑 ]