| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 497 人关注过本帖
标题:考试管理系统存在几个错误 求改
只看楼主 加入收藏
seeddestiny
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2010-11-2
结帖率:50%
收藏
已结贴  问题点数:10 回复次数:6 
考试管理系统存在几个错误 求改
最近和同学编了一个考试管理系统的程序,可是有2个错误一直改不了 请各位大大们帮忙检查一下  在线等  蛮急的  程序有点长  不过大体没错  用VC++程序运行一下就知道错误处了 就2处错误
#include<fstream>
#include<string.h>
using namespace std;
class stu
{
public:
string num;//学号
string name;//姓名
string keyword;//考生密码
int cond;//是否考过试
int fen;//得分
int mingci;
stu()
{
  num="0";
  name="0";
  keyword="0";
  cond=0;
  fen=0;
  mingci=0;
}
};
class ti
{
public:
string timu;//题目内容
string A;//A选项内容
string B;//B选项内容
string C;//C选项内容
string D;//D选项内容
string t;//正确选项
int q;//标记是否做过
ti()
{
  timu="0";
  A="0";
  B="0";
  C="0";
  D="0";
  t="0";
  q=0;
}
};
void main()
{
ti shiti[20];
stu kao[5];
  
  printf("**************************欢迎使用考试管理系统****************************");
printf("功能选择:1考生管理,2考试,3试题库管理,4退出:");//功能选择
int n;
scanf("%d",&n);
while (n!=4)
{
  while(!(n>=1&&n<4))
  {
  printf("输入有误,请重新输入:");
scanf("%d",&n);
  }
//_______________________________考生管理___________________________________//
  if(n==1)
  {
   
  ifstream inf("考生信息.txt");
  if(!inf)
  {
   printf("打开考生信息文件出错!");
  return;
  }
  for(int i=0;!inf.eof();i++)
  {
  string num,name,keyword;
int cond,fen,mingci;
  scanf("%d%d%d%d%d%d",&num,&name,&cond,&fen,&keyword,&mingci);
   
  kao[i].num=num;
   
  kao[i].name=name;
  kao[i].cond=cond;
  kao[i].fen=fen;
  kao[i].keyword=keyword;
kao[i].mingci=mingci;
  printf("学生信息");
  printf("kao[i].num,kao[i].name,kao[i].cond,kao[i].fen,kao[i].keyword,kao[i].mingci");
   
   
   
  }
  inf.close();
  int x;//记录题数
   
  int nn=1;
  while(nn!=2)
  {
  ifstream inf("考生信息.txt");
  if(!inf)
  {
  printf("打开文件考生信息出错!");
  return;
  }
  for(int i=0;!inf.eof();i++)
  {
  string num,name,keyword;
int cond,fen,mingci;
  printf("num,name,cond,fen,keyword,mingci");
   
   
  kao[i].num=num;
   
  kao[i].name=name;
  kao[i].cond=cond;
  kao[i].fen=fen;
  kao[i].keyword=keyword;
kao[i].mingci=mingci;
  }
  x=i;

  printf("考生信息管理:1.增加考生信息 2.删去考生信息 3.更改学生信息 4.退出 请选择:");
  scanf("%d",&nn);
  if(nn==1)
  {
  string num,name,cond,fen,keyword,mingci;
  printf("请输入学号:");
  scanf("%d",&num);
  printf("请输入姓名:");
  scanf("%d",&name);
printf("请输入考试与否:");
  scanf("%d",&cond);
  printf("请输入分数:");
  scanf("%d",&fen);
  printf("请输入密码:");
  scanf("%d",&keyword);
printf("请输入名次:");
scanf("%d",&mingci);
  ofstream outf("考生信息.txt");
  if(!outf)
  {
printf("打开学生信息文件出错!");
  return;
  }
   
  for(int i=0;i<x;i++)
   
  printf("kao[i].num","kao[i].name","kao[i].cond","kao[i].fen","kao[i].keyword","kao[i].mingci");
   
  printf("num","name","cond","fen","keyword","mingci");
  outf.close();
  printf("已增加!");
  x++;
   
  }
  }
  }
//________________________________考试______________________________________//
  if(n==2)
  {
   
  ifstream inf("考生信息.txt");
  if(!inf)
  {
  printf("打开学生信息文件出错!");
  return;
  }
  for(int i=0;i<5;i++)
  {
  scanf("%d%d%d%d%d%d",&kao[i].num,&kao[i].name,&kao[i].cond,&kao[i].fen,&kao[i].keyword,&kao[i].mingci);
  }
  inf.close();
  string num;
printf("请输入你的学号:");
  scanf("%d",&num);
  int d=1;
  string keyword;
  printf("请输入你的密码");//输入密码
  scanf("%d",&keyword);
  for(i=0;i<5;i++)
  {
  if(&kao[i].num==&num&&kao[i].cond!=1)
  {
  while(kao[i].keyword!=keyword)
      
  {
  d++;
  if(d==4)return;
printf("密码有误,请重新输入密码:");
  scanf("%d",&keyword);
  }
  printf("kao[i].name****"欢迎你!"*****);
  int nn,m=5;
  printf("默认题数为5题,是否需要修改?1是,2否,请选择:");
  scanf("%d",&nn);
  if(nn==1)
  {
   
  printf("请输入考试题数:");
  scanf("%d",&m);
  }
  printf("下面开始答题(选项大写):");
  ifstream inf("试题.txt");
  if(!inf)
  {
  printf("打开试题文件出错!");
  return;
  }
  
  for(int k=0;!inf.eof();k++)
  {
  string timu,A,B,C,D,t;
  inf>>timu>>A>>B>>C>>D>>t;
   
   
   
  shiti[k].timu=timu;
   
  shiti[k].A=A;
  shiti[k].B=B;
  shiti[k].C=C;
  shiti[k].D=D;
  shiti[k].t=t;
   
  }
  inf.close();
  int x2=k;//记录试题总数
//___________________________答m道题目__________________________//
   
  for(int j=0;j<m;j++)
  {
   
  srand(time(NULL));   
  int r;
  r=(rand()%x2+1)-1;//产生随机数
  while(shiti[r].q==1)
  {
  srand(time(NULL));   
  r=(rand()%x2+1)-1;
  }
  printf("第"%d",&j+1"题:");
  cout<<shiti[r].timu<<endl<<shiti[r].A<<endl<<shiti[r].B<<endl<<shiti[r].C<<endl<<shiti[r].D<<endl;
  printf("请选择:");
  string daan;
  scanf("%d",&daan);
  if(daan==shiti[r].t)
  kao[i].fen=kao[i].fen+5;
  shiti[r].q=1;
  }
//_______________________________________________________________//
  printf("您的总分为:"%d",&kao[i].fen");
int arr[]={kao[1].fen,kao[2].fen,kao[3].fen,kao[4].fen,kao[5].fen};
int sort( arr[],int i,j,temp)
{ for(i=0;i<5;i++)
for(j=4;j>i;j--)
if(arr{kao[j].fen]<arr[kao[j].fen]
{temp=arr[kao[j-1].fen];
arr[kao[j-1].fen]=arr[kao[j].fen];
arr[kao[j]=temp;
return j-1;
}
}

  kao[i].cond=1;
  for(int l=0;l<x2;l++)
  shiti[l].q=0;
  break;
  }
  else if(kao[i].num==num&&kao[i].cond==1)
  {
  printf("您已经参加过考试!");
  break;
  }

  }
   
  if(i==5)
  printf("所输入的学号不在考生名单中!");
  ofstream outf("考生信息.txt");
  if(!outf)
  {
  printf("打开试题文件出错!");
  return;
  }
   
  for(int c=0;c<5;c++)
   
  outf<<" "<<kao[c].num<<" "<<kao[c].name<<" "<<kao[c].cond<<" "<<kao[c].fen<<" "<<kao[i].mingci;
   
   
  outf.close();
  }
//________________________________试题管理_________________________________//
  if(n==3)
  {
  string a="123456";
  string b;
  int n=1;
  printf("请输入试题管理密码:");
  scanf("%d",&b);
  while(a!=b)
  {
  n++;
  if(n==4)return;
  printf("密码有误,请重新输入:");
  scanf("%d",&b);
  }
   
  ifstream inf("试题.txt");
  if(!inf)
  {
  printf("打开试题文件出错!");
  return;
  }
  for(int i=0;!inf.eof();i++)
  {
  string timu,A,B,C,D,t;
  inf>>timu>>A>>B>>C>>D>>t;
   
   
   
  shiti[i].timu=timu;
   
  shiti[i].A=A;
  shiti[i].B=B;
  shiti[i].C=C;
  shiti[i].D=D;
  shiti[i].t=t;
  printf("第"%d",&i+1"题:");
  cout<<shiti[i].timu<<endl<<shiti[i].A<<endl<<shiti[i].B<<endl<<shiti[i].C<<endl<<shiti[i].D<<endl;
  printf("正确答案:"%d",&shiti[i].t");
   
   
  }
  inf.close();
  int x;//记录题数
   
  int nn=1;
  while(nn!=2)
  {
  ifstream inf("试题.txt");
  if(!inf)
  {
  printf("打开试题文件出错!");
  return;
  }
  for(int i=0;!inf.eof();i++)
  {
  string timu,A,B,C,D,t;
  inf>>timu>>A>>B>>C>>D>>t;
   
   
   
  shiti[i].timu=timu;
   
  shiti[i].A=A;
  shiti[i].B=B;
  shiti[i].C=C;
  shiti[i].D=D;
  shiti[i].t=t;
  }
  x=i;
   
  printf("是否要增加试题?1是,2否,请选择:");
  scanf("%d",&nn);
  if(nn==1)
  {
  string timu,A,B,C,D,t;
  printf("请输入题目:");
  scanf("%d",&timu);
  printf("请输入A选项");
  scanf("%d",&A);
  cprintf("请输入B选项");
  scanf("%d",&B);
  printf("请输入C选项");
  scanf("%d",&C);
  printf("请输入D选项");
  scanf("%d",&D);
  printf("请输入正确答案");
  scanf("%d",&t);
  ofstream outf("试题.txt");
  if(!outf)
  {
  printf("打开试题文件出错!");
  return;
  }
   
  for(int i=0;i<x;i++)
   
  outf<<" "<<shiti[i].timu<<" "<<shiti[i].A<<" "<<shiti[i].B<<" "<<shiti[i].C<<" "<<shiti[i].D<<" "<<shiti[i].t;
   
  outf<<" "<<timu<<" "<<A<<" "<<B<<" "<<C<<" "<<D<<" "<<t;
  outf.close();
  printf("已增加!");
  x++;
   
  }
   
  }
  }
  printf("功能选择:1考生管理,2考试,3试题库管理,4退出:");//功能选择
  scanf("%d",&n);
}
  
  printf("*********************************谢谢使用***********************************");
}
搜索更多相关主题的帖子: 考试 系统 管理 
2010-11-02 18:36
shafeilong
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:4
帖 子:236
专家分:1434
注 册:2009-3-21
收藏
得分:10 
看的眼花缭乱的 功能都聚集在一块了  建议用函数把功能分开,这样比较好修改
2010-11-02 20:45
shafeilong
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:4
帖 子:236
专家分:1434
注 册:2009-3-21
收藏
得分:0 
还有啊  密码为什么是用"%d"输入啊??  为什么不用char keyboard[10]  scanf("%s",keyboard);
2010-11-02 20:47
shafeilong
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:4
帖 子:236
专家分:1434
注 册:2009-3-21
收藏
得分:0 
把scanf 换成 cin
printf 换成cout
这样string 就可以录进去了

像这种
string a;
    scanf("%d",&a);
    printf("%d",a);
根本就乱码

一方面你用c语言的scanf
另一方面又寻求C++的using namespace
再说 c语言有string 这个类型吗?只有string.h吧?
再且 如果要用C语言比较字符串的话  用char 这个类型 用strcmp(a,b)判断是否为0相等
2010-11-02 21:04
seeddestiny
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2010-11-2
收藏
得分:0 
根据你的建议改了一下 程序如下  还有错误吗
#include<fstream>
using namespace std;
class stu
{
public:
 string num;//学号
 string name;//姓名
 string keyword;//考生密码
 int cond;//是否考过试
 int fen;//得分
 int mingci;
 stu()
 {
  num="0";
  name="0";
  keyword="0";
  cond=0;
  fen=0;
  mingci=0;
 }
};
class ti
{
public:
 string timu;//题目内容
 string A;//A选项内容
 string B;//B选项内容
 string C;//C选项内容
 string D;//D选项内容
 string t;//正确选项
 int q;//标记是否做过
 ti()
 {
  timu="0";
  A="0";
  B="0";
  C="0";
  D="0";
  t="0";
  q=0;
 }
};
void main()
{
 ti shiti[20];
 stu kao[5];
  
  cout<<"**************************欢迎使用考试管理系统****************************"<<endl;
 cout<<"功能选择:1考生管理,2考试,3试题库管理,4退出:";//功能选择
 int n;
 cin>>n;
 while (n!=4)
 {
  while(!(n>=1&&n<4))
  {
  cout<<"输入有误,请重新输入:";
  cin>>n;
  }
//_______________________________考生管理___________________________________//
  if(n==1)
  {
   
  ifstream inf("考生信息.txt");
  if(!inf)
  {
  cout<<"打开考生信息文件出错!"<<endl;
  return;
  }
  for(int i=0;!inf.eof();i++)
  {
  string num,name,keyword;
int cond,fen,mingci;
  inf>>num>>name>>cond>>fen>>keyword>>mingci;
   
  kao[i].num=num;
   
  kao[i].name=name;
  kao[i].cond=cond;
  kao[i].fen=fen;
  kao[i].keyword=keyword;
kao[i].mingci=mingci;
  cout<<"学生信息"<<endl;
  cout<<kao[i].num<<endl<<kao[i].name<<endl<<kao[i].cond<<endl<<kao[i].fen<<endl<<kao[i].keyword<<endl<<kao[i].mingci<<endl;
   
   
   
  }
  inf.close();
  int x;//记录题数
   
  int nn=1;
  while(nn!=2)
  {
  ifstream inf("考生信息.txt");
  if(!inf)
  {
  cout<<"打开文件考生信息出错!"<<endl;
  return;
  }
  for(int i=0;!inf.eof();i++)
  {
  string num,name,keyword;
int cond,fen,mingci;
  inf>>num>>name>>cond>>fen>>keyword>>mingci;
   
   
  kao[i].num=num;
   
  kao[i].name=name;
  kao[i].cond=cond;
  kao[i].fen=fen;
  kao[i].keyword=keyword;
kao[i].mingci=mingci;
  }
  x=i;

  cout<<"考生信息管理:1.增加考生信息 2.删去考生信息 3.更改学生信息 4.退出 请选择:";
  cin>>nn;
  if(nn==1)
  {
  string num,name,cond,fen,keyword,mingci;
  cout<<"请输入学号:";
  cin>>num;
  cout<<"请输入姓名:";
  cin>>name;
  cout<<"请输入考试与否:";
  cin>>cond;
  cout<<"请输入分数:";
  cin>>fen;
  cout<<"请输入密码:";
  cin>>keyword;
cout<<"请输入名次:";
cin>>mingci;
  ofstream outf("考生信息.txt");
  if(!outf)
  {
  cout<<"打开学生信息文件出错!"<<endl;
  return;
  }
   
  for(int i=0;i<x;i++)
   
  outf<<" "<<kao[i].num<<" "<<kao[i].name<<" "<<kao[i].cond<<" "<<kao[i].fen<<" "<<kao[i].keyword<<" "<<kao[i].mingci;
   
  outf<<" "<<num<<" "<<name<<" "<<cond<<" "<<fen<<" "<<keyword<<" "<<mingci;
  outf.close();
  cout<<"已增加!"<<endl;
  x++;
   
  }
  }
  }
//________________________________考试______________________________________//
  if(n==2)
  {
   
  ifstream inf("考生信息.txt");
  if(!inf)
  {
  cout<<"打开学生信息文件出错!"<<endl;
  return;
  }
  for(int i=0;i<5;i++)
  {
  inf>>kao[i].num>>kao[i].name>>kao[i].cond>>kao[i].fen>>kao[i].keyword>>kao[i].mingci;//yougaidong
  }
  inf.close();
  string num;
  cout<<"请输入你的学号:"<<endl;
  cin>>num;
  int d=1;
  string keyword;
  cout<<"请输入你的密码"<<endl;//输入密码
  cin>>keyword;
  for(i=0;i<5;i++)
  {
  if(kao[i].num==num&&kao[i].cond!=1)
  {
  while(kao[i].keyword!=keyword)
  {
  d++;
  if(d==4)return;
  cout<<"密码有误,请重新输入密码:"<<endl;
  cin>>keyword;
  }
  cout<<kao[i].name<<"欢迎你!"<<endl;
  int nn,m=5;
  cout<<"默认题数为5题,是否需要修改?1是,2否,请选择:";
  cin>>nn;
  if(nn==1)
  {
   
  cout<<"请输入考试题数:";
  cin>>m;
  }
  cout<<"下面开始答题(选项大写):"<<endl;
  ifstream inf("试题.txt");
  if(!inf)
  {
  cout<<"打开试题文件出错!"<<endl;
  return;
  }
  
  for(int k=0;!inf.eof();k++)
  {
  string timu,A,B,C,D,t;
  inf>>timu>>A>>B>>C>>D>>t;
   
   
   
  shiti[k].timu=timu;
   
  shiti[k].A=A;
  shiti[k].B=B;
  shiti[k].C=C;
  shiti[k].D=D;
  shiti[k].t=t;
   
  }
  inf.close();
  int x2=k;//记录试题总数
//___________________________答m道题目__________________________//
   
  for(int j=0;j<m;j++)
  {
   
  srand(time(NULL));   
  int r;
  r=(rand()%x2+1)-1;//产生随机数
  while(shiti[r].q==1)
  {
  srand(time(NULL));   
  r=(rand()%x2+1)-1;
  }
  cout<<"第"<<j+1<<"题:"<<endl;
  cout<<shiti[r].timu<<endl<<shiti[r].A<<endl<<shiti[r].B<<endl<<shiti[r].C<<endl<<shiti[r].D<<endl;
  cout<<"请选择:";
  string daan;
  cin>>daan;
  if(daan==shiti[r].t)
  kao[i].fen=kao[i].fen+5;
  shiti[r].q=1;
  }
//_______________________________________________________________//
  cout<<"您的总分为:"<<kao[i].fen<<endl;
int arr[]={kao[1].fen,kao[2].fen,kao[3].fen,kao[4].fen,kao[5].fen};
int sort( arr[],int i,j,temp)
{ for(i=0;i<5;i++)
for(j=4;j>i;j--)
if(arr{kao[j].fen]<arr[kao[j].fen]
{temp=arr[kao[j-1].fen];
arr[kao[j-1].fen]=arr[kao[j].fen];
arr[kao[j]=temp;
return j-1;
}
}

  kao[i].cond=1;
  for(int l=0;l<x2;l++)
  shiti[l].q=0;
  break;
  }
  else if(kao[i].num==num&&kao[i].cond==1)
  {
  cout<<"您已经参加过考试!"<<endl;
  break;
  }

  }
   
  if(i==5)
  cout<<"所输入的学号不在考生名单中!"<<endl;
  ofstream outf("考生信息.txt");
  if(!outf)
  {
  cout<<"打开试题文件出错!"<<endl;
  return;
  }
   
  for(int c=0;c<5;c++)
   
  outf<<" "<<kao[c].num<<" "<<kao[c].name<<" "<<kao[c].cond<<" "<<kao[c].fen<<" "<<kao[i].mingci;
   
   
  outf.close();
  }
//________________________________试题管理_________________________________//
  if(n==3)
  {
  string a="123456";
  string b;
  int n=1;
  cout<<"请输入试题管理密码:";
  cin>>b;
  while(a!=b)
  {
  n++;
  if(n==4)return;
  cout<<"密码有误,请重新输入:";
  cin>>b;
  }
   
  ifstream inf("试题.txt");
  if(!inf)
  {
  cout<<"打开试题文件出错!"<<endl;
  return;
  }
  for(int i=0;!inf.eof();i++)
  {
  string timu,A,B,C,D,t;
  inf>>timu>>A>>B>>C>>D>>t;
   
   
   
  shiti[i].timu=timu;
   
  shiti[i].A=A;
  shiti[i].B=B;
  shiti[i].C=C;
  shiti[i].D=D;
  shiti[i].t=t;
  cout<<"第"<<i+1<<"题:"<<endl;
  cout<<shiti[i].timu<<endl<<shiti[i].A<<endl<<shiti[i].B<<endl<<shiti[i].C<<endl<<shiti[i].D<<endl;
  cout<<"正确答案:"<<shiti[i].t<<endl;
   
   
  }
  inf.close();
  int x;//记录题数
   
  int nn=1;
  while(nn!=2)
  {
  ifstream inf("试题.txt");
  if(!inf)
  {
  cout<<"打开试题文件出错!"<<endl;
  return;
  }
  for(int i=0;!inf.eof();i++)
  {
  string timu,A,B,C,D,t;
  inf>>timu>>A>>B>>C>>D>>t;
   
   
   
  shiti[i].timu=timu;
   
  shiti[i].A=A;
  shiti[i].B=B;
  shiti[i].C=C;
  shiti[i].D=D;
  shiti[i].t=t;
  }
  x=i;
   
  cout<<"是否要增加试题?1是,2否,请选择:";
  cin>>nn;
  if(nn==1)
  {
  string timu,A,B,C,D,t;
  cout<<"请输入题目:";
  cin>>timu;
  cout<<"请输入A选项";
  cin>>A;
  cout<<"请输入B选项";
  cin>>B;
  cout<<"请输入C选项";
  cin>>C;
  cout<<"请输入D选项";
  cin>>D;
  cout<<"请输入正确答案";
  cin>>t;
  ofstream outf("试题.txt");
  if(!outf)
  {
  cout<<"打开试题文件出错!"<<endl;
  return;
  }
   
  for(int i=0;i<x;i++)
   
  outf<<" "<<shiti[i].timu<<" "<<shiti[i].A<<" "<<shiti[i].B<<" "<<shiti[i].C<<" "<<shiti[i].D<<" "<<shiti[i].t;
   
  outf<<" "<<timu<<" "<<A<<" "<<B<<" "<<C<<" "<<D<<" "<<t;
  outf.close();
  cout<<"已增加!"<<endl;
  x++;
   
  }
   
  }
  }
  cout<<"功能选择:1考生管理,2考试,3试题库管理,4退出:";//功能选择
  cin>>n;
 }
  
  cout<<"*********************************谢谢使用***********************************"<<endl;
}
//kao[i].mingci是我后来添加进去的,但是我不知道怎么才能实现学生考完试就可以看到自己的名次。
//考生查询成绩和排名的时候输入的是学号或者姓名,要有密码。
//麻烦了~~
2010-11-03 09:49
shafeilong
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:4
帖 子:236
专家分:1434
注 册:2009-3-21
收藏
得分:0 
说真的,很难修改  41个{   40个}  不知道你少在哪里  我可没空一个一个帮你找  就整体而言
1 :没有设定独立的函数分割功能
2 : 格式不规范 在空格进位上不直观
3 :没有相应的注释

程序上
1,少了#include<iostream>

我想你自己要是找到了 } 那应该会通过吧

自己找吧
2010-11-03 13:32
seeddestiny
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2010-11-2
收藏
得分:0 
已经改好了  多谢提醒
2010-11-03 17:44
快速回复:考试管理系统存在几个错误 求改
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.069959 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved