使用c++进行编译有详细注释语言精简错题本管理程序:利用链表实现错题本管理程序。其中错题信息包括题目、错误信息、答案分析、心得体会、错题来源、错题原因、难易程度、题目类型、知识点等多项信息。具体实现的管理功能如下:1 输入并显示错题的信息;2 可实现错题信息的添加;3 查询至少提供按知识点和题目类型两种方式;4 修改提供查询后进行修改;5 删除依据指定的信息知识点和题目类型查找后删除错题;6文件的
#include <iostream>
#include <fstream>
using namespace std;
struct Node {
string question;
string errorInfo;
string answerAnalysis;
string experience;
string source;
string cause;
string difficulty;
string type;
string knowledgePoint;
Node* next;
};
class ErrorBook {
private:
Node* head;
public:
ErrorBook() {
head = nullptr;
}
// 添加错题信息
void addError() {
Node* newNode = new Node;
cout << "请输入题目:" << endl;
cin.ignore();
getline(cin, newNode->question);
cout << "请输入错误信息:" << endl;
getline(cin, newNode->errorInfo);
cout << "请输入答案分析:" << endl;
getline(cin, newNode->answerAnalysis);
cout << "请输入心得体会:" << endl;
getline(cin, newNode->experience);
cout << "请输入错题来源:" << endl;
getline(cin, newNode->source);
cout << "请输入错题原因:" << endl;
getline(cin, newNode->cause);
cout << "请输入难易程度:" << endl;
getline(cin, newNode->difficulty);
cout << "请输入题目类型:" << endl;
getline(cin, newNode->type);
cout << "请输入知识点:" << endl;
getline(cin, newNode->knowledgePoint);
newNode->next = nullptr;
if (head == nullptr) {
head = newNode;
} else {
Node* temp = head;
while (temp->next != nullptr) {
temp = temp->next;
}
temp->next = newNode;
}
cout << "成功添加错题信息!" << endl;
}
// 浏览错题信息
void displayErrors() {
if (head == nullptr) {
cout << "暂无错题信息!" << endl;
} else {
Node* temp = head;
while (temp != nullptr) {
cout << "题目:" << temp->question << endl;
cout << "错误信息:" << temp->errorInfo << endl;
cout << "答案分析:" << temp->answerAnalysis << endl;
cout << "心得体会:" << temp->experience << endl;
cout << "错题来源:" << temp->source << endl;
cout << "错题原因:" << temp->cause << endl;
cout << "难易程度:" << temp->difficulty << endl;
cout << "题目类型:" << temp->type << endl;
cout << "知识点:" << temp->knowledgePoint << endl;
cout << endl;
temp = temp->next;
}
}
}
// 查询错题信息
void searchErrors() {
int choice;
cout << "请选择查询方式:" << endl;
cout << "1. 按知识点查询" << endl;
cout << "2. 按题目类型查询" << endl;
cin >> choice;
string keyword;
cout << "请输入查询关键字:" << endl;
cin.ignore();
getline(cin, keyword);
Node* temp = head;
bool found = false;
while (temp != nullptr) {
if (choice == 1 && temp->knowledgePoint == keyword) {
found = true;
cout << "题目:" << temp->question << endl;
cout << "错误信息:" << temp->errorInfo << endl;
cout << "答案分析:" << temp->answerAnalysis << endl;
cout << "心得体会:" << temp->experience << endl;
cout << "错题来源:" << temp->source << endl;
cout << "错题原因:" << temp->cause << endl;
cout << "难易程度:" << temp->difficulty << endl;
cout << "题目类型:" << temp->type << endl;
cout << "知识点:" << temp->knowledgePoint << endl;
cout << endl;
} else if (choice == 2 && temp->type == keyword) {
found = true;
cout << "题目:" << temp->question << endl;
cout << "错误信息:" << temp->errorInfo << endl;
cout << "答案分析:" << temp->answerAnalysis << endl;
cout << "心得体会:" << temp->experience << endl;
cout << "错题来源:" << temp->source << endl;
cout << "错题原因:" << temp->cause << endl;
cout << "难易程度:" << temp->difficulty << endl;
cout << "题目类型:" << temp->type << endl;
cout << "知识点:" << temp->knowledgePoint << endl;
cout << endl;
}
temp = temp->next;
}
if (!found) {
cout << "未找到相关错题信息!" << endl;
}
}
// 修改错题信息
void modifyError() {
string keyword;
cout << "请输入要修改的题目:" << endl;
cin.ignore();
getline(cin, keyword);
Node* temp = head;
bool found = false;
while (temp != nullptr) {
if (temp->question == keyword) {
found = true;
cout << "请输入新的错误信息:" << endl;
getline(cin, temp->errorInfo);
cout << "请输入新的答案分析:" << endl;
getline(cin, temp->answerAnalysis);
cout << "请输入新的心得体会:" << endl;
getline(cin, temp->experience);
cout << "请输入新的错题来源:" << endl;
getline(cin, temp->source);
cout << "请输入新的错题原因:" << endl;
getline(cin, temp->cause);
cout << "请输入新的难易程度:" << endl;
getline(cin, temp->difficulty);
cout << "请输入新的题目类型:" << endl;
getline(cin, temp->type);
cout << "请输入新的知识点:" << endl;
getline(cin, temp->knowledgePoint);
cout << "成功修改错题信息!" << endl;
}
temp = temp->next;
}
if (!found) {
cout << "未找到该题目的错题信息!" << endl;
}
}
// 删除错题信息
void deleteError() {
string keyword;
cout << "请输入要删除的知识点:" << endl;
cin.ignore();
getline(cin, keyword);
Node* prev = nullptr;
Node* curr = head;
bool found = false;
while (curr != nullptr) {
if (curr->knowledgePoint == keyword) {
found = true;
if (prev == nullptr) {
head = curr->next;
delete curr;
curr = head;
} else {
prev->next = curr->next;
delete curr;
curr = prev->next;
}
cout << "成功删除错题信息!" << endl;
} else {
prev = curr;
curr = curr->next;
}
}
if (!found) {
cout << "未找到该知识点的错题信息!" << endl;
}
}
// 文件导入
void importFromFile() {
string filename;
cout << "请输入文件名:" << endl;
cin >> filename;
ifstream inputFile;
inputFile.open(filename);
if (!inputFile) {
cout << "文件打开失败!" << endl;
return;
}
while (!inputFile.eof()) {
Node* newNode = new Node;
getline(inputFile, newNode->question);
getline(inputFile, newNode->errorInfo);
getline(inputFile, newNode->answerAnalysis);
getline(inputFile, newNode->experience);
getline(inputFile, newNode->source);
getline(inputFile, newNode->cause);
getline(inputFile, newNode->difficulty);
getline(inputFile, newNode->type);
getline(inputFile, newNode->knowledgePoint);
newNode->next = nullptr;
if (head == nullptr) {
head = newNode;
} else {
Node* temp = head;
while (temp->next != nullptr) {
temp = temp->next;
}
temp->next = newNode;
}
}
inputFile.close();
cout << "成功导入错题信息!" << endl;
}
// 文件导出
void exportToFile() {
string filename;
cout << "请输入文件名:" << endl;
cin >> filename;
ofstream outputFile;
outputFile.open(filename);
if (!outputFile) {
cout << "文件打开失败!" << endl;
return;
}
Node* temp = head;
while (temp != nullptr) {
outputFile << temp->question << endl;
outputFile << temp->errorInfo << endl;
outputFile << temp->answerAnalysis << endl;
outputFile << temp->experience << endl;
outputFile << temp->source << endl;
outputFile << temp->cause << endl;
outputFile << temp->difficulty << endl;
outputFile << temp->type << endl;
outputFile << temp->knowledgePoint << endl;
temp = temp->next;
}
outputFile.close();
cout << "成功导出错题信息!" << endl;
}
};
int main() {
ErrorBook errorBook;
int choice;
while (true) {
cout << "错题本管理程序" << endl;
cout << "1 添加错题信息" << endl;
cout << "2 浏览错题信息" << endl;
cout << "3 查询错题信息" << endl;
cout << "4 删除错题信息" << endl;
cout << "5 文件导入" << endl;
cout << "6 文件导出" << endl;
cout << "7 退出" << endl;
cout << "请选择功能:";
cin >> choice;
switch (choice) {
case 1:
errorBook.addError();
break;
case 2:
errorBook.displayErrors();
break;
case 3:
errorBook.searchErrors();
break;
case 4:
errorBook.deleteError();
break;
case 5:
errorBook.importFromFile();
break;
case 6:
errorBook.exportToFile();
break;
case 7:
return 0;
default:
cout << "无效的选择!" << endl;
break;
}
}
return 0;
}
``
原文地址: https://www.cveoy.top/t/topic/iJTG 著作权归作者所有。请勿转载和采集!