家有C++的,复制镍铁下,请教下怎么生成的TXT文件没内容(程序做到一半)!
/*C++作业
1. 建立一个试题类(shiti)
包括成员:题目,分值,批改(纯虚函数),正确答案
2. 该类派生出 (1)判断题 类
(2)单项选择题 类
(3)多项项选择题 类
后两种添加新成员选项(字符串数组)
以上三个类均覆盖"批改"
批改要求:
1. 其中判断题和单项选择题答对得所有分,答错不得分
2. 多项选择题全部正确得所有分,部分正确得一半分,答错不得分
3.使用以上类生成两个应用程序
1. 教师用版:1添加试题 2生成试卷和答案
2. 学生用版:1续入试题 2学生答题并计算得分
选择题的"选项",使用数组保存
clrscr();
*/
#include <iostream>
#include <fstream>
#include <iomanip>
using namespace std;
class st
{
protected:
char tm[200];
double fs;
char da[10];
public:
st(char *ntm, double nfs,char *nda)
{
strcpy(tm,ntm);
fs=nfs;
strcpy(da,nda);
}
// virtual double pg() = 0;
// void shuchu()
// {
// cout<<"题目:"<<tm<<setw(20)<<"("<<fs<<")"<<endl;
//}
virtual void shengcheng(ofstream &f)
{
f<<tm<<"\t"<<"("<<fs<<")"<<"\t"<<da<<endl;
}
};
class pdt : public st
{
public:
pdt(char *tm,double fs, char *da):st(tm,fs,da)
{}
/* double pg()
{
}*/
};
class dx : public st
{
private:
char xx[50];
public:
dx(char *tm,double fs,char *da,char *nxx):st(tm,fs,da)
{
strcpy(xx,nxx);
}
//void shuchu()
// {
// cout<<"题目:"<<tm<<setw(20)<<"("<<fs<<")"<<endl;
// cout<<xx<<endl;
//}
void shengcheng(ofstream &f)
{
f<<tm<<"\t"<<"("<<fs<<")"<<"\t"<<da<<endl;
f<<xx<<endl;
}
};
class dxt : public st
{
private:
char xx[50];
public:
dxt(char *tm,double fs,char *da,char *nxx):st(tm,fs,da)
{
strcpy(xx,nxx);
}
// void shuchu()
// {
// cout<<"题目:"<<tm<<setw(20)<<"("<<fs<<")"<<endl;
// cout<<xx<<endl;
// }
void shengcheng(ofstream &f)
{
f<<tm<<"\t"<<"("<<fs<<")"<<"\t"<<da<<endl;
f<<xx<<endl;
}
};
int sum=0;
st *tmk[200];
void tianjia()
{
char tm[200],da[10],xx[50];
double fs;
int i;
do
{
cout<<"请选择添加题目类型:"<<endl;
cout<<"1, 判断题 2,单选题 3, 多选题 4,输入完毕!(选择1~4)"<<endl;
cin>>i;
if (i==4)
break;
else if(i<0||i>4)
cout<<"选择范围出错!"<<endl;
else
{
cout<<"输入题目:";
cin>>tm;
cout<<"输入分数:";
cin>>fs;
cout<<"输入答案:";
cin>>da;
switch(i)
{
case 1:
{
tmk[sum]=new pdt(tm,fs,da);
break;
}
case 2:
{
cout<<"输入选项:"<<endl;
cin>>xx;
tmk[sum]=new dx(tm,fs,da,xx);
break;
}
case 3:
{
cout<<"输入选项:"<<endl;
cin>>xx;
tmk[sum]=new dxt(tm,fs,da,xx);
break;
}
sum++;
cout<<"添加成功!"<<endl;
break;
}
}
}while(true);
}
void shengcheng()
{
int i;
ofstream f("tmk.txt");
for( i=0;i<sum;i++)
{
tmk[i]->shengcheng(f);
}
f.close();
// for (i=0;i<sum;i++)
//tmk[i]->st::shuchu();
}
void main()
{
int i,j;
cout<<"欢迎使用系统!!"<<endl;
cout<<"请选择用户类型:(请输入(1~3):1,教师系统 ; 2,学生系统; 3,退出系统)"<<endl;
do{
cin>>i;
if(i<0||i>3)
cout<<"选择超出范围!"<<endl;
switch(i)
{
case 1:
{
do
{
cout<<"欢迎进入教师系统"<<endl;
cout<<"1,添加题目 2,生成试卷 3,返回上级 "<<endl;
cin>>j;
if(j==3)
return;
if (j<0||j>3)
cout<<"选择超出范围!"<<endl;
else
{
switch(j)
{
case 1:
{
tianjia();
break;
}
case 2:
{
shengcheng();
break;
}
case 3:
{
cout<<"退出系统!"<<endl;
return;
}
}
}
}while(true);
}
case 2:
default:
return;
}
}while(true);
}