用c++写一个学校师生信息管理系统
时间: 2023-07-01 14:04:47 浏览: 150
好的,下面是一个简单的学校师生信息管理系统的实现,包括学生和教师的基本信息管理和查询功能。
```c++
#include <iostream>
#include <string>
#include <vector>
using namespace std;
// 基类:人员类
class Person {
public:
// 构造函数
Person(string name, int age, string gender) : mName(name), mAge(age), mGender(gender) {}
// 获取人员信息
virtual void getInfo() {
cout << "姓名:" << mName << endl;
cout << "年龄:" << mAge << endl;
cout << "性别:" << mGender << endl;
}
protected:
string mName; // 姓名
int mAge; // 年龄
string mGender; // 性别
};
// 学生类
class Student : public Person {
public:
// 构造函数
Student(string name, int age, string gender, string id, string major)
: Person(name, age, gender), mID(id), mMajor(major) {}
// 获取学生信息
virtual void getInfo() {
Person::getInfo();
cout << "学号:" << mID << endl;
cout << "专业:" << mMajor << endl;
}
private:
string mID; // 学号
string mMajor; // 专业
};
// 教师类
class Teacher : public Person {
public:
// 构造函数
Teacher(string name, int age, string gender, string title, string department)
: Person(name, age, gender), mTitle(title), mDepartment(department) {}
// 获取教师信息
virtual void getInfo() {
Person::getInfo();
cout << "职称:" << mTitle << endl;
cout << "所属部门:" << mDepartment << endl;
}
private:
string mTitle; // 职称
string mDepartment; // 所属部门
};
// 学校类
class School {
public:
// 添加学生
void addStudent(Student* student) {
mStudents.push_back(student);
}
// 添加教师
void addTeacher(Teacher* teacher) {
mTeachers.push_back(teacher);
}
// 根据姓名查找学生
void findStudentByName(string name) {
for (auto it = mStudents.begin(); it != mStudents.end(); ++it) {
if ((*it)->mName == name) {
(*it)->getInfo();
return;
}
}
cout << "未找到姓名为" << name << "的学生!" << endl;
}
// 根据姓名查找教师
void findTeacherByName(string name) {
for (auto it = mTeachers.begin(); it != mTeachers.end(); ++it) {
if ((*it)->mName == name) {
(*it)->getInfo();
return;
}
}
cout << "未找到姓名为" << name << "的教师!" << endl;
}
private:
vector<Student*> mStudents; // 学生列表
vector<Teacher*> mTeachers; // 教师列表
};
int main() {
// 创建学校对象
School school;
// 添加学生
Student* s1 = new Student("张三", 18, "男", "1001", "计算机科学与技术");
Student* s2 = new Student("李四", 19, "女", "1002", "软件工程");
school.addStudent(s1);
school.addStudent(s2);
// 添加教师
Teacher* t1 = new Teacher("王五", 35, "男", "教授", "计算机科学与技术");
Teacher* t2 = new Teacher("赵六", 40, "女", "副教授", "软件工程");
school.addTeacher(t1);
school.addTeacher(t2);
// 查找学生和教师信息
school.findStudentByName("张三");
school.findTeacherByName("赵六");
// 释放内存
delete s1;
delete s2;
delete t1;
delete t2;
return 0;
}
```
该程序定义了一个基类 `Person`,包括姓名、年龄和性别等信息,以及两个派生类 `Student` 和 `Teacher`,分别表示学生和教师,包括学号、专业、职称和所属部门等信息。同时还定义了一个 `School` 类,包括添加学生和教师、根据姓名查找学生和教师等功能。在 `main` 函数中创建学生和教师对象,并添加到学校中,最后查找学生和教师信息并释放内存。
阅读全文