开发一个简单的课表查询系统,实现以下基本功能: 【基本功能】 课表数据文件。每个课表的信息包括:学期、专业班级、时间、科目、教室等基本信息。 能够按给定班级、时间等信息进行查找并显示相关信息。 能够添加、删除或修改课表中的课程信息。 能够按照学期或班级信息对课表进行排序,并存入文件中。 【扩展功能】 可以按照自己对课表查询系统的需求理解进行扩展。比如:(1)权限处理 (2)模糊查询(3)综合查询(4)统计功能等。用c++写出完整代码
时间: 2024-03-17 10:47:17 浏览: 144
很好,我会尽力回答你的问题。以下是一个用C++编写的简单课表查询系统的代码,基本功能已经实现:
```c++
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
// 定义一个课程结构体
struct Course {
string term; // 学期
string major; // 专业班级
string time; // 时间
string subject; // 科目
string classroom; // 教室
};
// 定义一个读取课程信息的函数
vector<Course> readCourses(string filename) {
vector<Course> courses;
ifstream file(filename);
if (file.is_open()) {
string line;
while (getline(file, line)) {
Course course;
course.term = line.substr(0, 5);
course.major = line.substr(6, 7);
course.time = line.substr(14, 8);
course.subject = line.substr(23, 20);
course.classroom = line.substr(44, 8);
courses.push_back(course);
}
file.close();
}
return courses;
}
// 定义一个显示课程信息的函数
void printCourse(Course course) {
cout << course.term << " " << course.major << " " << course.time << " " << course.subject << " " << course.classroom << endl;
}
// 定义一个按照班级查找课程的函数
vector<Course> searchByMajor(vector<Course> courses, string major) {
vector<Course> result;
for (int i = 0; i < courses.size(); i++) {
if (courses[i].major == major) {
result.push_back(courses[i]);
}
}
return result;
}
// 定义一个按照时间查找课程的函数
vector<Course> searchByTime(vector<Course> courses, string time) {
vector<Course> result;
for (int i = 0; i < courses.size(); i++) {
if (courses[i].time == time) {
result.push_back(courses[i]);
}
}
return result;
}
// 定义一个添加课程的函数
void addCourse(vector<Course>& courses, Course course) {
courses.push_back(course);
}
// 定义一个删除课程的函数
void deleteCourse(vector<Course>& courses, int index) {
courses.erase(courses.begin() + index);
}
// 定义一个修改课程的函数
void editCourse(vector<Course>& courses, int index, Course course) {
courses[index] = course;
}
// 定义一个按照学期排序的函数
bool sortByTerm(Course a, Course b) {
return a.term < b.term;
}
// 定义一个按照班级排序的函数
bool sortByMajor(Course a, Course b) {
return a.major < b.major;
}
// 定义一个保存课程信息到文件的函数
void saveCourses(vector<Course> courses, string filename) {
ofstream file(filename);
if (file.is_open()) {
for (int i = 0; i < courses.size(); i++) {
file << courses[i].term << " " << courses[i].major << " " << courses[i].time << " " << courses[i].subject << " " << courses[i].classroom << endl;
}
file.close();
}
}
int main() {
vector<Course> courses = readCourses("courses.txt");
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 << "8. 退出程序" << endl;
int choice;
cin >> choice;
switch (choice) {
case 1: {
cout << "请选择查找方式:" << endl;
cout << "1. 按照班级查找" << endl;
cout << "2. 按照时间查找" << endl;
int searchChoice;
cin >> searchChoice;
switch (searchChoice) {
case 1: {
cout << "请输入班级:" << endl;
string major;
cin >> major;
vector<Course> result = searchByMajor(courses, major);
for (int i = 0; i < result.size(); i++) {
printCourse(result[i]);
}
break;
}
case 2: {
cout << "请输入时间:" << endl;
string time;
cin >> time;
vector<Course> result = searchByTime(courses, time);
for (int i = 0; i < result.size(); i++) {
printCourse(result[i]);
}
break;
}
}
break;
}
case 2: {
cout << "请输入学期、班级、时间、科目、教室:" << endl;
Course course;
cin >> course.term >> course.major >> course.time >> course.subject >> course.classroom;
addCourse(courses, course);
break;
}
case 3: {
cout << "请输入要删除的课程的序号:" << endl;
int index;
cin >> index;
deleteCourse(courses, index);
break;
}
case 4: {
cout << "请输入要修改的课程的序号:" << endl;
int index;
cin >> index;
cout << "请输入学期、班级、时间、科目、教室:" << endl;
Course course;
cin >> course.term >> course.major >> course.time >> course.subject >> course.classroom;
editCourse(courses, index, course);
break;
}
case 5: {
sort(courses.begin(), courses.end(), sortByTerm);
for (int i = 0; i < courses.size(); i++) {
printCourse(courses[i]);
}
break;
}
case 6: {
sort(courses.begin(), courses.end(), sortByMajor);
for (int i = 0; i < courses.size(); i++) {
printCourse(courses[i]);
}
break;
}
case 7: {
saveCourses(courses, "courses.txt");
break;
}
case 8: {
return 0;
}
}
}
return 0;
}
```
这个程序可以从一个文本文件中读取课程信息,并提供了按照班级和时间查找课程的功能,还可以添加、删除和修改课程信息,并且可以按照学期或班级信息对课表进行排序,并将其保存到文件中。这只是一个简单的示例程序,你可以根据自己的需求进行扩展和修改。
阅读全文