安徽科技学院 信网学院网络文化节 陈鑫鑫

#pragma once
#include
#include
using namespace std;
typedef long long LL;
class person {
private:
string name;//姓名
string age;//年龄
string sex;//性别
string pro;//职业
string Id;//身份标识
public:
person();
person(string name, string age, string sex, string Id);
~person();
string getN();
void setN(string name);
string getA();
void setA(string age);
string getS();
void setS(string sex);
void setI(string Id);
string getI();
bool AllisNum(string str);
LL Num(string str);
virtual void behave() = 0;
};

#include"person.h"
person::person()
{
}
person::person(string name, string age, string sex, string Id)
{
this->name = name;
this->age = age;
this->sex = sex;
this->Id = Id;
}
person::~person()
{
}

string person::getN()
{
return name;
}

void person::setN(string name)
{
this->name = name;
}

string person::getA()
{
return this->age;
}

void person::setA(string age)
{
this->age = age;
}

string person::getS()
{
return this->sex;
}

void person::setS(string sex)
{
this->sex = sex;
}

void person::setI(string Id)
{
this->Id = Id;
}

string person::getI()
{
return this->Id;
}
bool person::AllisNum(string str)
{
for (int i = 0; i < str.size(); i++)
{
int tmp = (int)str[i];
if (tmp >= 48 && tmp <= 57)
{
continue;
}
else
{
return false;
}
}
return true;
}
LL person::Num(string str)
{
LL A = 0;
for (int i = 0; i < str.size(); i++)
{
int tem = (int)str[i] - 48;
A = A * 10 + tem;
}
return A;
}
文件二:
#pragma once
#include"person.h"
using namespace std;
class Student : public person
{
private:
string grade;//年级
string fee;//学费
public:
Student(string name, string age, string sex, string Id, string grade, string fee);
Student();
~Student();
string getG();
void setG(string grade);
string getF();
void setF(string fee);
void behave();
friend istream& operator >> (istream& in, Student& S);
friend ostream& operator << (ostream& out, Student& S);
};
istream& operator >> (istream& in, Student& S);
ostream& operator << (ostream& out, Student& S);

#include"Student.h"

Student::Student(string name, string age, string sex, string Id, string grade, string fee):person(name, age, sex, Id)
{
this->grade = grade;
this->fee = fee;
}

Student::Student()
{
}
Student::~Student()
{
}

string Student::getG()
{
return this->grade;
}

void Student::setG(string grade)
{
this->grade = grade;
}

string Student::getF()
{
return this->fee;
}

void Student::setF(string fee)
{
this->fee = fee;
}

void Student::behave()
{
cout << this->getN() << “去交” << this->getF() << “元学费” << endl;
}

/ostream& Student::operator<<(ostream& out, Student S)
{
return out;
// TODO: 在此处插入 return 语句
}
/

istream& operator>>(istream& in, Student& S)
{
//string name, int age, char sex, LL Id, int grade, double fee
cout << "姓名: ";
string name;
in >> name;
S.setN(name);
//cout << endl;
cout << “年龄:”;
string age;
while (in >> age)
{
if (S.AllisNum(age) && S.Num(age) > 10 && S.Num(age) < 60) {
S.setA(age);
break;
}
else
{
cout << “输出格式错误请重新输入:”;
}
}
cout << “性别:”;
string sex;
while (in >> sex)
{
if (sex == “男” || sex == “女”)
{
S.setS(sex);
break;
}
else
{
cout << “输出格式错误请重新输入:”;
}
}
cout << “输入学号:”;
string Id;
while (in >> Id)
{
if(S.AllisNum(Id))
{
S.setI(Id);
break;
}
else
{
cout << “输出格式错误请重新输入:”;
}
}
cout << “综合分数:”;
string grade;
while (in >> grade)
{
if (S.AllisNum(grade) && S.Num(grade) >= 0 && S.Num(age) <= 100) {
S.setG(grade);
break;
}
else
{
cout << “输出格式错误请重新输入:”;
}
}
cout << “学费:”;
string fee;
while (in >> fee)
{
if (S.AllisNum(fee) && S.Num(fee) >= 3000 && S.Num(age) <= 10000) {
S.setF(fee);
break;
}
else
{
cout << “输出格式错误请重新输入:”;
}
}
return in;
// TODO: 在此处插入 return 语句
}
ostream& operator<<(ostream& out, Student& S)
{
out << “姓名:” << S.getN() << endl;
out << "学号: " << S.getI() << endl;
out << “年龄:” << S.getA() << endl;
out << "性别: " << S.getS() << endl;
out << “综合分:” << S.getG() << endl;
out << "学费: " << S.getF() << endl;
return out;
// TODO: 在此处插入 return 语句
}

文件三:
#pragma once
#include"person.h"
class Teacher :public person
{
private:
string salary;
string subject;
public:
Teacher(string name, string age, string sex, string Id, string salary, string subject);
Teacher();
~Teacher();
string getSa();
void setSa(string salary);
string getSu();
void setSu(string subject);
void behave();
friend istream& operator >> (istream& in, Teacher& S);
friend ostream& operator << (ostream& out, Teacher& S);
};
istream& operator >> (istream& in, Teacher& S);
ostream& operator << (ostream& out, Teacher& S);

#include"teacher.h"
using namespace std;
Teacher::Teacher(string name, string age, string sex, string Id, string salary, string subject):person(name, age, sex, Id)
{
this->salary = salary;
this->subject = subject;
}

Teacher::Teacher()
{
}

Teacher::~Teacher()
{
}

string Teacher::getSa()
{
return this->salary;
}

void Teacher::setSa(string salary)
{
this->salary = salary;
}

string Teacher::getSu()
{
return this->subject;
}

void Teacher::setSu(string subject)
{
this->subject = subject;
}

void Teacher::behave()
{
cout << this->getN() << “去领” << this->getSa() << “元工资” << endl;
}

istream& operator>>(istream& in, Teacher& S)
{
cout << "姓名: ";
string name;
in >> name;
S.setN(name);
//cout << endl;
cout << “年龄:”;
string age;
while (in >> age)
{
if (S.AllisNum(age) && S.Num(age) > 10 && S.Num(age) < 60) {
S.setA(age);
break;
}
else
{
cout << “输出格式错误请重新输入:”;
}
}
cout << “性别:”;
string sex;
while (in >> sex)
{
if (sex == “男” || sex == “女”)
{
S.setS(sex);
break;
}
else
{
cout << “输出格式错误请重新输入:”;
}
}
cout << “输入工号:”;
string Id;
while (in >> Id)
{
if (S.AllisNum(Id))
{
S.setI(Id);
break;
}
else
{
cout << “输出格式错误请重新输入:”;
}
}
cout << “教授科目:”;
string subject;
while (in >> subject)
{
if (subject == “语文” || subject == “数学” || subject == “英语” || subject == “物理” || subject == “生物” || subject == “化学”) {
S.setSu(subject);
break;
}
else
{
cout << “输出格式错误请重新输入:”;
}
}
cout << “工资:”;
string salary;
while (in >> salary)
{
if (S.AllisNum(salary) && S.Num(salary) >= 3000 && S.Num(salary) <= 10000) {
S.setSa(salary);
break;
}
else
{
cout << “输出格式错误请重新输入:”;
}
}
return in;
// TODO: 在此处插入 return 语句
}

ostream& operator<<(ostream& out, Teacher& S)
{
out << “姓名:” << S.getN() << endl;
out << "学号: " << S.getI() << endl;
out << “年龄:” << S.getA() << endl;
out << “性别: " << S.getS() << endl;
out << “教授科目:” << S.getSu() << endl;
out << “工资: " << S.getSa() << endl;
return out;
// TODO: 在此处插入 return 语句
}文件四:
#pragma once
#include"Student.h”
#include"teacher.h”
#include
class School
{
public:
void entryS(Student S);//学生入学
void entryT(Teacher T);//老师入职
bool findS(LL S);//查找学生
bool findT(LL T);//查找老师
void deleteS(LL S);//开除学生
void deleteT(LL T);//老师离职
void printT();//打印老师名单
void printS();//打印学生名单
private:
map<LL, Teacher> tea;
map<LL, Student> Stu;
};

#include"school.h"
void School::entryS(Student S)
{
Stu.insert(make_pair(S.Num(S.getI()), S));
}

void School::entryT(Teacher T)
{
tea.insert(make_pair(T.Num(T.getI()), T));
}
bool School::findS(LL S)
{
map<LL, Student>::iterator it;
it = Stu.find(S);
if (it == Stu.end())
{
//cout << “本校无此学生” << endl;
return false;
}
else
{
//cout << “本校有此学生” << endl;
return true;
}
}
bool School::findT(LL T)
{
map<LL, Teacher>::iterator it;
it = tea.find(T);
if (it == tea.end())
{
//cout << “本校无此教职工” << endl;
return false;
}
else
{
//cout << “本校有此工作人员” << endl;
return true;
}
}

void School::deleteS(LL S)
{
if (findS(S))
{
map<LL, Student>::iterator it;
it = Stu.find(S);
Stu.erase(it);
}
else
{
cout << “删除操作失败,并无此学生”;
}
}

void School::deleteT(LL T)
{
if (findT(T))
{
map<LL, Teacher>::iterator it;
it = tea.find(T);
tea.erase(it);
}
else
{
cout << “删除操作失败,并无此老师”;
}

}

void School::printS()
{
for (map<LL, Student>::iterator it = Stu.begin(); it != Stu.end(); it++)
{
cout << it->second;
}
}

void School::printT()
{
for (map<LL, Teacher>::iterator it = tea.begin(); it != tea.end(); it++)
{
cout << it->second;
}
}
文件五:
#include"school.h"
#include
using namespace std;
int main()
{
School sch;
ifstream fin(“Stu.txt”, ios::in);
ifstream fin2(“Tea.txt”, ios::in);
if (!fin || !fin2)
{
cout << “file 打开失败 !” << endl;
return 0;
}
string name;
string age;
string sex;
string Id;
string grade;
string fee;
string salary;
string subject;
while (!fin.eof())
{
fin >> name >> age >> sex >> Id >> grade >> fee;
Student Stu(name, age, sex, Id, grade, fee);
sch.entryS(Stu);
}
while (!fin2.eof())
{
fin2 >> name >> age >> sex >> Id >> salary >> subject;
Teacher T(name, age, sex, Id, salary, subject);
sch.entryT(T);
}
sch.printS();
cout << “华丽的分割线” << endl;
sch.printT();
fin.close();
fin2.close();
return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值