回 帖 发 新 帖 刷新版面

主题:急急!!高手帮忙解决一题关于c++语言和面向对象程序设计!!

试卷与试题类
要求:
试题类可派生多种题型的派生类
试卷类中含有若干个试题派生类的对象
可以设置试卷类包含试题的种类
可以设置试卷类中每种试题对象的个数
试卷类提供选题的功能,并显示题目和已做结果
试卷类提供做题的功能,并接收做题结果
试题类提供比较已做结果和标准答案对比
试卷类提供统计已做结果和标准答案一致的得分[em10]

回复列表 (共1个回复)

沙发

我也属于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();//显示得分
    }
    

我来回复

您尚未登录,请登录后再回复。点此登录或注册