不使用SQL,必要时运用清屏等system指令,用c++实现以下主要功能: (1) 学生管理:对学生基本信息的增加、修改和删除 (2) 学生查询:对学生基本信息和成绩的查询 (3) 学生选课:用于学生选择课程学习 (4) 学生成绩:对学生各科成绩的添加、修改和删除等管理 (5) 打印:用来打印学生的基本信息和成绩 参考数据表: 学生(学号,姓名,性别,年级,出生年月,系号) 成绩(学号,成绩,课程号) 课程(课程号,课程名,学分,上课时间,选课人数)
时间: 2023-09-21 16:08:15 浏览: 52
这是一个比较复杂的项目,需要使用多个类和数据结构来实现。以下是一个简单的示例代码,供参考。
```cpp
#include <iostream>
#include <vector>
#include <cstdlib> // 用于清屏操作
using namespace std;
// 定义学生类
class Student {
public:
string id; // 学号
string name; // 姓名
string gender; // 性别
int grade; // 年级
string birthday; // 出生年月
string departmentId; // 系号
// 构造函数
Student(string id, string name, string gender, int grade, string birthday, string departmentId) {
this->id = id;
this->name = name;
this->gender = gender;
this->grade = grade;
this->birthday = birthday;
this->departmentId = departmentId;
}
// 输出学生信息
void printInfo() {
cout << "学号:" << id << endl;
cout << "姓名:" << name << endl;
cout << "性别:" << gender << endl;
cout << "年级:" << grade << endl;
cout << "出生年月:" << birthday << endl;
cout << "系号:" << departmentId << endl;
}
};
// 定义成绩类
class Score {
public:
string studentId; // 学号
double score; // 成绩
string courseId; // 课程号
// 构造函数
Score(string studentId, double score, string courseId) {
this->studentId = studentId;
this->score = score;
this->courseId = courseId;
}
// 输出成绩信息
void printInfo() {
cout << "学号:" << studentId << endl;
cout << "成绩:" << score << endl;
cout << "课程号:" << courseId << endl;
}
};
// 定义课程类
class Course {
public:
string id; // 课程号
string name; // 课程名
int credit; // 学分
string time; // 上课时间
int numStudents; // 选课人数
// 构造函数
Course(string id, string name, int credit, string time) {
this->id = id;
this->name = name;
this->credit = credit;
this->time = time;
this->numStudents = 0;
}
// 输出课程信息
void printInfo() {
cout << "课程号:" << id << endl;
cout << "课程名:" << name << endl;
cout << "学分:" << credit << endl;
cout << "上课时间:" << time << endl;
cout << "选课人数:" << numStudents << endl;
}
};
// 定义学生管理类
class StudentManager {
private:
vector<Student> students; // 存储学生信息的容器
vector<Score> scores; // 存储成绩信息的容器
public:
// 添加学生
void addStudent(string id, string name, string gender, int grade, string birthday, string departmentId) {
Student student(id, name, gender, grade, birthday, departmentId);
students.push_back(student);
}
// 修改学生信息
void modifyStudent(string id) {
for (int i = 0; i < students.size(); i++) {
if (students[i].id == id) {
cout << "请输入修改后的信息:" << endl;
cout << "学号:";
cin >> students[i].id;
cout << "姓名:";
cin >> students[i].name;
cout << "性别:";
cin >> students[i].gender;
cout << "年级:";
cin >> students[i].grade;
cout << "出生年月:";
cin >> students[i].birthday;
cout << "系号:";
cin >> students[i].departmentId;
cout << "修改成功!" << endl;
return;
}
}
cout << "未找到该学生!" << endl;
}
// 删除学生
void deleteStudent(string id) {
for (int i = 0; i < students.size(); i++) {
if (students[i].id == id) {
students.erase(students.begin() + i);
cout << "删除成功!" << endl;
return;
}
}
cout << "未找到该学生!" << endl;
}
// 查询学生信息
void queryStudent(string id) {
for (int i = 0; i < students.size(); i++) {
if (students[i].id == id) {
students[i].printInfo();
return;
}
}
cout << "未找到该学生!" << endl;
}
// 添加成绩
void addScore(string studentId, double score, string courseId) {
Score scoreObj(studentId, score, courseId);
scores.push_back(scoreObj);
}
// 修改成绩
void modifyScore(string studentId, string courseId) {
for (int i = 0; i < scores.size(); i++) {
if (scores[i].studentId == studentId && scores[i].courseId == courseId) {
cout << "请输入修改后的信息:" << endl;
cout << "成绩:";
cin >> scores[i].score;
cout << "修改成功!" << endl;
return;
}
}
cout << "未找到该学生的该门课程成绩!" << endl;
}
// 删除成绩
void deleteScore(string studentId, string courseId) {
for (int i = 0; i < scores.size(); i++) {
if (scores[i].studentId == studentId && scores[i].courseId == courseId) {
scores.erase(scores.begin() + i);
cout << "删除成功!" << endl;
return;
}
}
cout << "未找到该学生的该门课程成绩!" << endl;
}
// 查询学生所有成绩
void queryScore(string studentId) {
bool found = false;
for (int i = 0; i < scores.size(); i++) {
if (scores[i].studentId == studentId) {
found = true;
for (int j = 0; j < students.size(); j++) {
if (students[j].id == studentId) {
cout << "学生姓名:" << students[j].name << endl;
break;
}
}
scores[i].printInfo();
cout << endl;
}
}
if (!found) {
cout << "未找到该学生的成绩!" << endl;
}
}
// 选课
void selectCourse(string studentId, string courseId) {
bool found = false;
for (int i = 0; i < scores.size(); i++) {
if (scores[i].studentId == studentId && scores[i].courseId == courseId) {
found = true;
cout << "你已经选过该门课程!" << endl;
break;
}
}
if (!found) {
for (int i = 0; i < courses.size(); i++) {
if (courses[i].id == courseId) {
if (courses[i].numStudents >= 100) {
cout << "该门课程已满员,无法选课!" << endl;
break;
}
courses[i].numStudents++;
addScore(studentId, 0, courseId);
cout << "选课成功!" << endl;
break;
}
}
}
}
// 输出所有学生信息
void printAllStudents() {
for (int i = 0; i < students.size(); i++) {
students[i].printInfo();
cout << endl;
}
}
// 输出所有课程信息
void printAllCourses() {
for (int i = 0; i < courses.size(); i++) {
courses[i].printInfo();
cout << endl;
}
}
private:
vector<Course> courses = { // 存储课程信息的容器
Course("001", "语文", 3, "周一上午"),
Course("002", "数学", 4, "周二上午"),
Course("003", "英语", 2, "周三下午"),
Course("004", "物理", 3, "周四上午"),
Course("005", "化学", 3, "周五下午")
};
};
// 主函数
int main() {
StudentManager manager;
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;
cout << "9. 选课" << endl;
cout << "10. 输出所有学生信息" << endl;
cout << "11. 输出所有课程信息" << endl;
cout << "0. 退出程序" << endl;
int choice;
cin >> choice;
switch (choice) {
case 1: { // 添加学生
cout << "请输入学生信息:" << endl;
string id, name, gender, birthday, departmentId;
int grade;
cout << "学号:";
cin >> id;
cout << "姓名:";
cin >> name;
cout << "性别:";
cin >> gender;
cout << "年级:";
cin >> grade;
cout << "出生年月:";
cin >> birthday;
cout << "系号:";
cin >> departmentId;
manager.addStudent(id, name, gender, grade, birthday, departmentId);
cout << "添加成功!" << endl;
break;
}
case 2: { // 修改学生信息
cout << "请输入要修改的学生学号:";
string id;
cin >> id;
manager.modifyStudent(id);
break;
}
case 3: { // 删除学生
cout << "请输入要删除的学生学号:";
string id;
cin >> id;
manager.deleteStudent(id);
break;
}
case 4: { // 查询学生信息
cout << "请输入要查询的学生学号:";
string id;
cin >> id;
manager.queryStudent(id);
break;
}
case 5: { // 添加成绩
cout << "请输入成绩信息:" << endl;
string studentId, courseId;
double score;
cout << "学号:";
cin >> studentId;
cout << "课程号:";
cin >> courseId;
cout << "成绩:";
cin >> score;
manager.addScore(studentId, score, courseId);
cout << "添加成功!" << endl;
break;
}
case 6: { // 修改成绩
cout << "请输入要修改的学生学号和课程号:";
string studentId, courseId;
cin >> studentId >> courseId;
manager.modifyScore(studentId, courseId);
break;
}
case 7: { // 删除成绩
cout << "请输入要删除的学生学号和课程号:";
string studentId, courseId;
cin >> studentId >> courseId;
manager.deleteScore(studentId, courseId);
break;
}
case 8: { // 查询学生所有成绩
cout << "请输入要查询的学生学号:";
string id;
cin >> id;
manager.queryScore(id);
break;
}
case 9: { // 选课
cout << "请输入学生学号和课程号:";
string studentId, courseId;
cin >> studentId >> courseId;
manager.selectCourse(studentId, courseId);
break;
}
case 10: { // 输出所有学生信息
manager.printAllStudents();
break;
}
case 11: { // 输出所有课程信息
manager.printAllCourses();
break;
}
case 0: { // 退出程序
return 0;
}
default: { // 输入错误
cout << "输入错误,请重新输入!" << endl;
break;
}
}
system("pause"); // 暂停程序,等待用户按下任意键继续
system("cls"); // 清屏
}
return 0;
}
```