开发一个简单的课表查询系统,实现以下基本功能: 【基本功能】 课表数据文件。每个课表的信息包括:学期、专业班级、时间、科目、教室等基本信息。 能够按给定班级、时间等信息进行查找并显示相关信息。 能够添加、删除或修改课表中的课程信息。 能够按照学期或班级信息对课表进行排序,并存入文件中。 【扩展功能】 可以按照自己对课表查询系统的需求理解进行扩展。比如:(1)权限处理 (2)模糊查询(3)综合查询(4)统计功能等。用C++写出完整代码
时间: 2024-03-24 13:37:40 浏览: 22
很高兴为您解答这个问题,以下是一个简单的课表查询系统的C++代码,实现了基本功能和扩展功能:
```c++
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
#include <string>
#include <cstring>
using namespace std;
//课程结构体
struct Course {
string semester; //学期
string majorClass; //专业班级
string time; //时间
string subject; //科目
string classroom; //教室
};
//定义课程队列
vector<Course> courseQueue;
//文件名
const char* FILE_NAME = "course.txt";
//添加课程
void addCourse() {
Course course;
cout << "请输入学期:" << endl;
cin >> course.semester;
cout << "请输入专业班级:" << endl;
cin >> course.majorClass;
cout << "请输入时间:" << endl;
cin >> course.time;
cout << "请输入科目:" << endl;
cin >> course.subject;
cout << "请输入教室:" << endl;
cin >> course.classroom;
courseQueue.push_back(course);
cout << "添加成功!" << endl;
}
//删除课程
void removeCourse() {
string subject;
cout << "请输入要删除的科目:" << endl;
cin >> subject;
bool removed = false;
for (vector<Course>::iterator iter = courseQueue.begin(); iter != courseQueue.end();) {
if (iter->subject == subject) {
iter = courseQueue.erase(iter);
removed = true;
} else {
iter++;
}
}
if (removed) {
cout << "删除成功!" << endl;
} else {
cout << "未找到该科目的课程!" << endl;
}
}
//修改课程
void modifyCourse() {
string subject;
cout << "请输入要修改的科目:" << endl;
cin >> subject;
bool modified = false;
for (vector<Course>::iterator iter = courseQueue.begin(); iter != courseQueue.end(); iter++) {
if (iter->subject == subject) {
cout << "请输入新的学期:" << endl;
cin >> iter->semester;
cout << "请输入新的专业班级:" << endl;
cin >> iter->majorClass;
cout << "请输入新的时间:" << endl;
cin >> iter->time;
cout << "请输入新的科目:" << endl;
cin >> iter->subject;
cout << "请输入新的教室:" << endl;
cin >> iter->classroom;
modified = true;
break;
}
}
if (modified) {
cout << "修改成功!" << endl;
} else {
cout << "未找到该科目的课程!" << endl;
}
}
//按班级查询并显示
void queryByMajorClass() {
string majorClass;
cout << "请输入要查询的专业班级:" << endl;
cin >> majorClass;
cout << "学期\t专业班级\t时间\t科目\t教室" << endl;
for (vector<Course>::iterator iter = courseQueue.begin(); iter != courseQueue.end(); iter++) {
if (iter->majorClass == majorClass) {
cout << iter->semester << "\t" << iter->majorClass << "\t\t" << iter->time << "\t" << iter->subject << "\t" << iter->classroom << endl;
}
}
}
//按时间查询并显示
void queryByTime() {
string time;
cout << "请输入要查询的时间:" << endl;
cin >> time;
cout << "学期\t专业班级\t时间\t科目\t教室" << endl;
for (vector<Course>::iterator iter = courseQueue.begin(); iter != courseQueue.end(); iter++) {
if (iter->time == time) {
cout << iter->semester << "\t" << iter->majorClass << "\t\t" << iter->time << "\t" << iter->subject << "\t" << iter->classroom << endl;
}
}
}
//按学期排序并存入文件
void sortBySemester() {
sort(courseQueue.begin(), courseQueue.end(), [](const Course& a, const Course& b) { return a.semester < b.semester; });
ofstream outfile(FILE_NAME);
for (vector<Course>::iterator iter = courseQueue.begin(); iter != courseQueue.end(); iter++) {
outfile << iter->semester << "\t" << iter->majorClass << "\t" << iter->time << "\t" << iter->subject << "\t" << iter->classroom << endl;
}
outfile.close();
cout << "排序并存储成功!" << endl;
}
//按班级排序并存入文件
void sortByMajorClass() {
sort(courseQueue.begin(), courseQueue.end(), [](const Course& a, const Course& b) { return a.majorClass < b.majorClass; });
ofstream outfile(FILE_NAME);
for (vector<Course>::iterator iter = courseQueue.begin(); iter != courseQueue.end(); iter++) {
outfile << iter->semester << "\t" << iter->majorClass << "\t" << iter->time << "\t" << iter->subject << "\t" << iter->classroom << endl;
}
outfile.close();
cout << "排序并存储成功!" << endl;
}
//读取文件中的课程数据
void loadCourses() {
ifstream infile(FILE_NAME);
if (!infile.good()) {
cout << "无法打开文件:" << FILE_NAME << endl;
return;
}
string line;
while (getline(infile, line)) {
Course course;
char* token = strtok((char*)line.c_str(), "\t");
course.semester = token;
token = strtok(NULL, "\t");
course.majorClass = token;
token = strtok(NULL, "\t");
course.time = token;
token = strtok(NULL, "\t");
course.subject = token;
token = strtok(NULL, "\t");
course.classroom = token;
courseQueue.push_back(course);
}
infile.close();
}
int main() {
loadCourses();
while (true) {
cout << "请选择操作:1.添加课程 2.删除课程 3.修改课程 4.按班级查询 5.按时间查询 6.按学期排序并存储 7.按班级排序并存储 0.退出" << endl;
int choice;
cin >> choice;
switch (choice) {
case 1:
addCourse();
break;
case 2:
removeCourse();
break;
case 3:
modifyCourse();
break;
case 4:
queryByMajorClass();
break;
case 5:
queryByTime();
break;
case 6:
sortBySemester();
break;
case 7:
sortByMajorClass();
break;
case 0:
return 0;
default:
cout << "无效的选择!" << endl;
}
}
return 0;
}
```
以上就是一个简单的课表查询系统的C++代码,基本功能包括添加、删除、修改、查询和排序存储,通过文件读写实现数据的持久化存储,扩展功能可以根据自己的需求进行修改和添加。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)