用c++写学生选课系统:1.系统管理员可以对学生、教师、选课和课程成绩进行增、删、改和查。 2.系统管理员可对学生选择课程进行查询统计,生成柱状图并导出(每门课选择人数统计)。 3.学院管理员可对本学院教师、学生、本学院学生选课、本学院开设课程和成绩进行增删改查。 4.学院对选择课程的学生进行抽签,并按课程生成中签学生名单。 5. 教师可以登录本系统,在网站上输入课程介绍、上传课程的课件、发布、先修课程、更新和修改课程信息。 6.教师可查询选修自己课程的所有中签学生名单,并录入课程成绩生成成绩统计表(每个分数段的人数,及格率等)。 7.教师可对选修自己课程学生发送消息留言。 8. 学生通过客户机浏览器根据学号和密码进入选课界面,在这里学生可以进行查询已选课程、指定自己的选修课程以及对自己基本信息的查询; 9.学生可以查询自己选课结果。 10.学生选课时,如果该门课程的先修课程没有学习,则不能进行选课,并给出提示“您没有学习该课程的先修课程,不能进行选课!”。 11.学生可浏览课程信息和查询成绩,下载课件。 12.学生可给任课教师发送信息和回复任课教师的留言。
时间: 2023-06-20 10:08:34 浏览: 184
这是一个比较复杂的系统,需要使用数据库管理学生、教师、课程和选课信息。以下是一个简单的 C++ 代码示例,可以帮助你理解如何实现一些功能。
```cpp
#include <iostream>
#include <string>
#include <vector>
#include <map>
using namespace std;
// 学生类
class Student {
public:
string id; // 学号
string name; // 姓名
string gender; // 性别
string major; // 专业
vector<string> courses; // 已选课程
// 构造函数
Student(string _id, string _name, string _gender, string _major) {
id = _id;
name = _name;
gender = _gender;
major = _major;
}
// 添加课程
void addCourse(string course) {
courses.push_back(course);
}
// 删除课程
void removeCourse(string course) {
for (int i = 0; i < courses.size(); i++) {
if (courses[i] == course) {
courses.erase(courses.begin() + i);
break;
}
}
}
};
// 教师类
class Teacher {
public:
string id; // 工号
string name; // 姓名
string gender; // 性别
string title; // 职称
map<string, int> grades; // 成绩
// 构造函数
Teacher(string _id, string _name, string _gender, string _title) {
id = _id;
name = _name;
gender = _gender;
title = _title;
}
// 录入成绩
void addGrade(string course, int grade) {
grades[course] = grade;
}
};
// 课程类
class Course {
public:
string id; // 课程号
string name; // 课程名
string teacher; // 授课教师
int capacity; // 课程容量
int selected; // 已选人数
vector<string> students; // 已选学生
// 构造函数
Course(string _id, string _name, string _teacher, int _capacity) {
id = _id;
name = _name;
teacher = _teacher;
capacity = _capacity;
selected = 0;
}
// 添加学生
bool addStudent(string student) {
if (selected < capacity) {
students.push_back(student);
selected++;
return true;
}
else {
return false;
}
}
// 删除学生
void removeStudent(string student) {
for (int i = 0; i < students.size(); i++) {
if (students[i] == student) {
students.erase(students.begin() + i);
selected--;
break;
}
}
}
};
// 系统管理员类
class Admin {
public:
vector<Student> students; // 学生列表
vector<Teacher> teachers; // 教师列表
vector<Course> courses; // 课程列表
// 添加学生
void addStudent(Student student) {
students.push_back(student);
}
// 删除学生
void removeStudent(string id) {
for (int i = 0; i < students.size(); i++) {
if (students[i].id == id) {
students.erase(students.begin() + i);
break;
}
}
}
// 添加教师
void addTeacher(Teacher teacher) {
teachers.push_back(teacher);
}
// 删除教师
void removeTeacher(string id) {
for (int i = 0; i < teachers.size(); i++) {
if (teachers[i].id == id) {
teachers.erase(teachers.begin() + i);
break;
}
}
}
// 添加课程
void addCourse(Course course) {
courses.push_back(course);
}
// 删除课程
void removeCourse(string id) {
for (int i = 0; i < courses.size(); i++) {
if (courses[i].id == id) {
courses.erase(courses.begin() + i);
break;
}
}
}
// 查询选课人数统计
void queryCourseSelected(string courseId) {
for (int i = 0; i < courses.size(); i++) {
if (courses[i].id == courseId) {
cout << "Course Name: " << courses[i].name << endl;
cout << "Selected Number: " << courses[i].selected << endl;
break;
}
}
}
// 生成柱状图并导出
void exportCourseSelected() {
// TODO: 生成柱状图并导出
}
};
// 学院管理员类
class DepartmentAdmin {
public:
vector<Teacher> teachers; // 教师列表
vector<Student> students; // 学生列表
vector<Course> courses; // 课程列表
// 添加教师
void addTeacher(Teacher teacher) {
teachers.push_back(teacher);
}
// 删除教师
void removeTeacher(string id) {
for (int i = 0; i < teachers.size(); i++) {
if (teachers[i].id == id) {
teachers.erase(teachers.begin() + i);
break;
}
}
}
// 添加学生
void addStudent(Student student) {
students.push_back(student);
}
// 删除学生
void removeStudent(string id) {
for (int i = 0; i < students.size(); i++) {
if (students[i].id == id) {
students.erase(students.begin() + i);
break;
}
}
}
// 添加课程
void addCourse(Course course) {
courses.push_back(course);
}
// 删除课程
void removeCourse(string id) {
for (int i = 0; i < courses.size(); i++) {
if (courses[i].id == id) {
courses.erase(courses.begin() + i);
break;
}
}
}
// 录入成绩
void addGrade(string courseId, string teacherId, string studentId, int grade) {
for (int i = 0; i < courses.size(); i++) {
if (courses[i].id == courseId && courses[i].teacher == teacherId) {
courses[i].addStudent(studentId);
for (int j = 0; j < teachers.size(); j++) {
if (teachers[j].id == teacherId) {
teachers[j].addGrade(courseId, grade);
break;
}
}
break;
}
}
}
// 抽签
void lottery(string courseId) {
for (int i = 0; i < courses.size(); i++) {
if (courses[i].id == courseId) {
vector<string> tmpStudents = courses[i].students;
courses[i].students.clear();
courses[i].selected = 0;
while (tmpStudents.size() > courses[i].capacity) {
int index = rand() % tmpStudents.size();
tmpStudents.erase(tmpStudents.begin() + index);
}
courses[i].students = tmpStudents;
courses[i].selected = tmpStudents.size();
break;
}
}
}
};
// 学生登录界面
void studentLogin() {
// TODO: 学生登录界面
}
// 教师登录界面
void teacherLogin() {
// TODO: 教师登录界面
}
int main() {
Admin admin; // 系统管理员
DepartmentAdmin depAdmin; // 学院管理员
// 添加学生
Student s1("001", "张三", "男", "计算机科学与技术");
Student s2("002", "李四", "女", "软件工程");
admin.addStudent(s1);
admin.addStudent(s2);
// 添加教师
Teacher t1("001", "王五", "男", "副教授");
Teacher t2("002", "赵六", "女", "讲师");
admin.addTeacher(t1);
admin.addTeacher(t2);
// 添加课程
Course c1("001", "C++程序设计", "001", 50);
Course c2("002", "数据结构", "002", 60);
depAdmin.addCourse(c1);
depAdmin.addCourse(c2);
// 录入成绩
depAdmin.addGrade("001", "001", "001", 80);
depAdmin.addGrade("001", "001", "002", 90);
// 抽签
depAdmin.lottery("001");
return 0;
}
```
阅读全文