主题:急急!!高手帮忙解决一题关于c++语言和面向对象程序设计!!
sweet123
[专家分:0] 发布于 2008-12-08 17:09:00
试卷与试题类
要求:
试题类可派生多种题型的派生类
试卷类中含有若干个试题派生类的对象
可以设置试卷类包含试题的种类
可以设置试卷类中每种试题对象的个数
试卷类提供选题的功能,并显示题目和已做结果
试卷类提供做题的功能,并接收做题结果
试题类提供比较已做结果和标准答案对比
试卷类提供统计已做结果和标准答案一致的得分[em10]
最后更新于:2008-12-09 22:00:00
回复列表 (共1个回复)
沙发
i_cplusplus [专家分:290] 发布于 2008-12-17 14:35:00
我也属于c++初学者,说一下我的思路,希望有人能指正。
我简单的写了写只有选择题的情况!对于题目的显示,我觉得是不是要用到数据库,我不会,那部分功能我就没写 下面是我的代码,在vc中编译通过了,你看看吧。看有无参考!也望下面的人给出好的代码!
//试题类 抽象类
#include<iostream>
using namespace std;
class Questions
{
public:
Questions();
virtual int Compare()=0;
};
//选择题类
const int per=3;
class Option
{
public:
Option(int n1);
int Compare();
~Option();
char*p1;//保存写入答案
int num1;//题的数目
private:
char*p;//标准答案
};
Option::Option(int n1)
{
if(n1>0)
{
num1=n1;
p=new char[num1];
p1=new char[num1];
cout<<"请输入标准答案"<<endl;
cin>>p[0];
p1[0]='x';
for(int i=1;i<num1;i++)
{ p1[i]='x';//初始化写入答案令其为空
cin>>p[i];
}
}
else
{
p=NULL;
p1=NULL;
num1=0;
}
}
int Option::Compare()
{
int a=0;
for(int i=0;i<num1;i++)
{
if(p1[i]==p[i])
a++;
}
return a*per;
}
Option::~Option()
{
delete []p;
delete []p1;
}
//试卷类 在此只列出有选择题的情况
class Paper
{
public:
Paper(int a):p(a){}
void Display();//显示题目
void solve();//解题并保存答案
void score();//显示得分
private:
Option p;
};
void Paper::solve()
{
for(int i=0;i<p.num1;i++)
{
cout<<"请写入选择题第"<<i+1<<"题结果"<<endl;
cin>>p.p1[i];
}
}
void Paper::Display()
{
cout<<"选择题数为"<<p.num1<<endl;//此处可改为显示题目,可以选择读入文件显示
}
void Paper::score()
{
cout<<"分数为"<<p.Compare()<<endl;
}
void main()
{int a;
cout<<"请选择选择题的数目 "<<endl;
cin>>a;
Paper paper(a);//建立试卷对象
paper.Display();//显示题目
paper.solve();//做题
paper.score();//显示得分
}
我来回复