给我写一个基于C++的考试系统
时间: 2024-03-12 09:42:56 浏览: 152
好的,我可以为您提供一个基于C++的简单考试系统的代码框架。下面是一个参考实现:
```cpp
#include<iostream>
#include<fstream>
#include<cstdlib>
#include<ctime>
using namespace std;
class Question{
private:
string question;
string options[4];
int correctOption;
public:
void setQuestion(string ques){
question=ques;
}
void setOptions(string opts[]){
for(int i=0;i<4;i++){
options[i]=opts[i];
}
}
void setCorrectOption(int opt){
correctOption=opt;
}
string getQuestion(){
return question;
}
string* getOptions(){
return options;
}
int getCorrectOption(){
return correctOption;
}
};
class Quiz{
private:
Question questions[10];
int score;
public:
Quiz(){
score=0;
//读取题库文件
ifstream fin("questions.txt");
if(fin.is_open()){
for(int i=0;i<10;i++){
string ques;
string opts[4];
int opt;
getline(fin,ques); //读取题目
questions[i].setQuestion(ques);
for(int j=0;j<4;j++){
getline(fin,opts[j]); //读取选项
}
questions[i].setOptions(opts);
fin>>opt; //读取正确选项
questions[i].setCorrectOption(opt);
fin.ignore(); //忽略换行符
}
fin.close();
}
}
void startQuiz(){
srand(time(NULL));
for(int i=0;i<10;i++){
//随机选择一道题目
int index=rand()%10;
cout<<"Question "<<i+1<<": "<<questions[index].getQuestion()<<endl;
string* opts=questions[index].getOptions();
for(int j=0;j<4;j++){
cout<<j+1<<") "<<opts[j]<<endl;
}
int choice;
cout<<"Your answer (1-4): ";
cin>>choice;
if(choice==questions[index].getCorrectOption()){
cout<<"Correct!"<<endl;
score++;
}
else{
cout<<"Incorrect!"<<endl;
}
}
cout<<"Your score: "<<score<<"/10"<<endl;
}
};
int main(){
Quiz quiz;
quiz.startQuiz();
return 0;
}
```
上述代码实现了一个简单的考试系统,包含以下功能:
1. 从文件读取题库
2. 随机选择10道题目进行考试
3. 对用户输入的答案进行判断,并计算得分
您可以根据需要进行适当的修改和扩展,例如增加用户登录、题库管理、分数统计等功能。
阅读全文