代码:
#include<iostream>
#include<Windows.h>
#include<string>
#include<cstring>
#define MAXN 1050
#define LOCAL
using namespace std;
#ifndef LOCAL //如果加了日期就把#define LOCAL删掉即可使用
class Date
{
private:
int year, month, day;
public:
Date() :year(1900), month(1), day(1) {}
Date(int y, int m, int d) :year(y), month(m), day(d) {}
Date(Date &date) {
year = date.year;
month = date.month;
day = date.day;
}
void Display() { cout << year << ' ' << month << ' ' << day << endl; }
~Date() {}
};
#endif
class Student
{
private:
string name;
int age;
int chinese, math, english;
public:
Student():name("none"),age(0),chinese(0),math(0),english(0) {} //默认构造函数初始化
Student(string name, int age, int chinese, int math, int english);
string getName() { return name; }
void Input();
void Display();
~Student() {}
};
class Worker
{
protected:
string name;
int age;
int salary;
public:
Worker() :name("none"),age(0),salary(0) {}
Worker(string name, int age);
string getName() { return name; }
//void Display() { cout << name << ' '<< age << ' '; };
~Worker() {}
};
class Teacher :virtual public Worker
{
private:
string level;
public:
Teacher() :level("none") {} //默认调用Worker构造函数我就不写了
Teacher(string name, int age, string level);
void Input();
void Match();
void Display();
~Teacher() {}
};
class Admin :virtual public Worker
{
private:
char level;
public:
Admin():level('0') {}
Admin(string name, int age, char level);
void Input();
void Match();
void Display();
~Admin() {}
};
class Manager
{
private:
Student * stu;
Teacher * teach;
Admin * adm;
int TeacherNum, AdminNum, StudentNum;
public:
Manager() :TeacherNum(0), AdminNum(0), StudentNum(0) {}
//Manager(int TeacherN, int AdminN);
void Alloc();
void ManagerInput();
void ManagerSearch();
void ManagerDisplay();
~Manager();
};
int main()
{
//由于只是为了满足题目要求,就没有写完整格式
Manager mng;
mng.Alloc();
mng.ManagerInput();
mng.ManagerSearch();
Sleep(5000);
mng.ManagerDisplay();
system("pause");
return 0;
}
Student::Student(string name, int age, int chinese, int math, int english)
{
this->name = name;
this->age = age;
this->chinese = chinese;this->math = math;this->english = english;
}
void Student::Input()
{
cin >> name >> age >> chinese >> math >> english;
}
void Student::Display()
{
cout << name << ' ' << age << ' ' << chinese << ' ' << math << ' ' << english << ' ' << chinese + math + english << endl;
//为了简化问题我直接跟着输出了总成绩
}
Worker::Worker(string name, int age)
{
this->name = name;
this->age = age;
}
Teacher::Teacher(string name, int age, string level):Worker(name,age)
{
this->name = name;
this->age = age;
this->level = level;
}
void Teacher::Input()
{
cin >> name >> age >> level;
}
void Teacher::Match()
{
if (level._Equal("jiangshi")) salary = 4000;
else if (level._Equal("fujiaoshou")) salary = 5000;
else if (level._Equal("jiaoshou")) salary = 6000;
else cout << "参数传递出错,请检查输入职称是否合法!" << endl;
}
void Teacher::Display()
{
cout << name <<' '<< age <<' '<< level <<' '<< salary<<endl;
}
Admin::Admin(string name, int age, char level):Worker(name,age)
{
this->name = name;
this->age = age;
this->level = level;
}
void Admin::Input()
{
cin >> name >> age >> level;
}
void Admin::Match()
{
switch (level)
{
case '1':
salary = 2000;break;
case '2':
salary = 3000;break;
case '3':
salary = 4000;break;
default:
cout << "参数传递出错,请检查输入职称是否合法!" << endl;break;
}
}
void Admin::Display()
{
cout << name << ' ' << age << ' ' << level << ' ' << salary << endl;
}
/*
Manager::Manager(int TeacherN, int AdminN) :TeacherNum(TeacherN), AdminNum(AdminN)
{
teach = new Teacher[TeacherNum];
}
*/
void Manager::Alloc()
{
cout << "请分别输入您想要录入的学生、教师、职员数目:" << endl;
cin >> StudentNum >> TeacherNum >> AdminNum;
stu = new Student[StudentNum]; //分配内存
teach = new Teacher[TeacherNum];
adm = new Admin[AdminNum];
}
void Manager::ManagerInput()
{
int i;
cout << "请依次输入" << StudentNum << "个学生的信息:" << endl;
for (i = 0;i < StudentNum;i++)
stu[i].Input();
cout << "请依次输入" << TeacherNum << "个教师的信息:" << endl;
for (i = 0;i < TeacherNum;i++)
{
teach[i].Input();
teach[i].Match();
}
cout << "请依次输入" << AdminNum << "个职员的信息:" << endl;
for (i = 0;i < AdminNum;i++)
{
adm[i].Input();
adm[i].Match();
}
}
void Manager::ManagerSearch()
{
int i;
char ch;
string NN;
cout << "请输入想要查找人员的职位序号(1--学生 2--教师 3--职员):" << endl;
cin >> ch;
cout << "请输入想要查找人员的姓名:";
cin >> NN;
switch (ch)
{
case '1':
for (i = 0;i < StudentNum;i++)
if (stu[i].getName()._Equal(NN)) stu[i].Display();
break;
case '2':
for (i = 0;i < TeacherNum;i++)
if (teach[i].getName()._Equal(NN)) teach[i].Display();
break;
case '3':
for (i = 0;i < AdminNum;i++)
if (adm[i].getName()._Equal(NN)) adm[i].Display();
break;
default:
cout << "参数传递出错,请检查输入序号是否合法!" << endl;
break;
}
}
void Manager::ManagerDisplay()
{
int i;
cout << "学生信息(姓名、年龄、语数外成绩、总成绩):" << endl;
for (i = 0;i < StudentNum;i++)
stu[i].Display();
cout << "教师信息(姓名、年龄、等级、总工资)" << endl;
for (i = 0;i < TeacherNum;i++)
teach[i].Display();
cout << "职员信息(姓名、年龄、等级、总工资)" << endl;
for (i = 0;i < AdminNum;i++)
adm[i].Display();
}
Manager::~Manager()
{
delete[] teach;
delete[] adm;
delete[] stu;
}
本文介绍了一个使用C++实现的人员管理系统,包括学生、教师和职员的管理。系统能够进行信息输入、显示、搜索和资源释放等功能,实现了多态性和继承等面向对象特性。

被折叠的 条评论
为什么被折叠?



