急求 C++班级人事管理系统的`主函数(内附函数类定义)

\u8bbe\u8ba1\u73ed\u7ea7\u6210\u7ee9\u7ba1\u7406\u7cfb\u7edf 1\u3001\u6709\u754c\u9762 2\u3001\u80fd\u591f\u4f7f\u7528\u51fd\u6570\u7684\u8981\u4f7f\u7528\u51fd\u6570 3\u3001\u80fd\u591f\u505a\u6210\u901a\u7528.H\u6587\u4ef6\u7684\u8981

\u8fd9\u79cd\u60c5\u51b5 \u6ca1\u60ac\u8d4f\u662f\u6ca1\u4eba\u505a\u7684

\u725b

从people(人员)类派生出student(学生)类,添加属性:班号 char chassNO【7】;从people(人员)类派生出student(学生)类,添加属性:职务 char principalship【11】,部门 char department【21】.从 student类中派生出graduate(研究生)类,添加属性:专业 char subject【21】,导师 teacher adviser(为(教师类内嵌子对象));从graduate类和 teacher类派生出TA(助教生)类,注意虚基类的使用,重载相应的成员函数。
(3) 对people类重载“= =”运算符和“=”运算符,“= =”运算符判断两个people类对象的id属性是否相等;“=”运算符实现people类对象的赋值操作。
(4) 定义一个对people类对象数组按编号排序的函数,一个按编号查找people对象的函数。

#include<iostream>
using namespace std;
class Day
{private:
int date;
int month;
int year;
public:
Day(int y=1,int m=1,int d=1):date(d),month(m),year(y){}
friend istream& operator >> (istream&a,Day&v)
{cout <<"His brithday is:"<<"\nyear:";a>>v.year;
cout <<"month:";a>>v.month;
cout <<"date:";a>>v.date;
return a;}
friend ostream& operator << (ostream&a,Day&v)
{a <<"His brithday is:"<<"\nyear:"<<v.year;
a <<"\nmonth:"<<v.month;
a <<"\ndate:"<<v.date<<endl;
bool r;
if(v.month>12)v.month=12;
if(v.year%4==0&&v.year%100!=0)r=true;
else if(v.year%400==0)r=true;
if(r&&v.month==2&&v.date>29)v.date=29;
else if(v.date>28&&v.month==2)v.date=28;
if(v.month<0)v.month==0;
if(v.date<0)v.date==0;
return a;}
};
class People
{protected:
char name[100];
long number;
Day brithday;
long id;
public:
People(char *n="people",long num=123456,int y=1,int m=1,int d=1,long i=12345679):
number(num),brithday(y,m,d),id(i){strcpy(name,n);}
friend istream& operator >> (istream&a,People&v)
{cout <<"His name is:";a>>v.name;
cout <<"His number is:";a>>v.number;
a>>v.brithday;
cout <<"His id is:";a>>v.id;
return a;}
friend ostream& operator << (ostream&a,People&v)
{a <<"His name is:"<<v.name;
a <<"\nHis number is:"<<v.number<<endl;
a<<v.brithday;
a <<"His id is:"<<v.id<<endl;
return a;}
bool operator == (People&v)
{if(id==v.id)return true;
else return false;
}
void operator =(char *a){strcpy(name,a);}
friend void paixu(People*);
};
void paixu(People*a)
{
int n;
n=sizeof(a)/sizeof(People);
People t;
for(int i=0;i<n-1;i++)
for(int j=i+i;j<n;j++)
if((a+i)->number>(a+j)->number)t=*(a+i),*(a+i)=*(a+j),*(a+j)=t;
}
class Student :virtual public People
{protected:
char chassNO[20];
public:
Student(char *n="people",long num=1,int y=1,int m=1,int d=1,long i=1,char*c="??"):
People(n,num,y,m,d,i){strcpy(chassNO,c);}
friend istream& operator >> (istream&a,Student&v)
{cout <<"输入学生基本资料:"<<endl;
cout <<"His name is:";a>>v.name;
cout <<"His number is:";a>>v.number;
a>>v.brithday;
cout <<"His id is:";a>>v.id;
cout <<"He in (chassNo):";a>>v.chassNO;
return a;}
friend ostream& operator << (ostream&a,Student&v)
{cout <<"学生基本资料:"<<endl;
a <<"His name is:"<<v.name;
a <<"\nHis number is:"<<v.number<<endl;
a<<v.brithday;
a <<"His id is:"<<v.id<<endl;
a <<"He in:"<<v.chassNO<<endl;
return a;}
};
class Teacher :virtual public People
{protected:
char principalship[30];
char department[40];
public:
Teacher(char *n="people",long num=1,int y=1,int m=1,int d=1,long i=1,char*p="??",char*de="??"):
People(n,num,y,m,d,i){strcpy(principalship,p);strcpy(department,de);}
friend istream& operator >> (istream&a,Teacher&v)
{cout <<"输入教师基本资料:"<<endl;
cout <<"His name is:";a>>v.name;
cout <<"His number is:";a>>v.number;
a>>v.brithday;
cout <<"His id is:";a>>v.id;
cout <<"He is (principalship):";a>>v.principalship;
cout <<"He in (department):";a>>v.department;
return a;}
friend ostream& operator << (ostream&a,Teacher&v)
{cout <<"教师资料:"<<endl;
a <<"His name is:"<<v.name;
a <<"\nHis number is:"<<v.number<<endl;
a<<v.brithday;
a <<"His id is:"<<v.id<<endl;
a <<"He is(principalship):"<<v.department<<endl;
a <<"He in(department):"<<v.department<<endl;
return a;}
};
class Graduate :public Teacher, public Student
{private:
char subject[21];
Teacher adviser;
public:
Graduate(char *n="people",long num=1,int y=1,int m=1,int d=1,long i=1,
char *c="??",char*p="??",char*de="??",Teacher a):
People(n,num,y,m,d,i),Student(n,num,y,m,d,i,c),Teacher(n,num,y,m,d,i,p,de),
adviser(a){}
friend istream& operator >> (istream&a,Graduate&v)
{cout <<"输入研究生基本资料:"<<endl;
cout <<"His name is:";a>>v.name;
cout <<"His number is:";a>>v.number;
a>>v.brithday;
cout <<"His id is:";a>>v.id;
cout <<"He in (chassNo):";a>>v.chassNO;
cout <<"He is (principalship):";a>>v.principalship;
cout <<"He in (department):";a>>v.department;
cout <<"这个研究生的:";
a >>v.adviser;
return a;}
friend ostream& operator << (ostream&a,Graduate&v)
{cout <<"研究生资料:"<<endl;
a <<"His name is:"<<v.name;
a <<"\nHis number is:"<<v.number<<endl;
a<<v.brithday;
a <<"His id is:"<<v.id<<endl;
cout <<"He in (chassNo):"<<v.chassNO<<endl;
a <<"He is(principalship):"<<v.principalship<<endl;
a <<"He in(department):"<<v.department<<endl;
a <<"这个研究生的:";
a <<v.adviser;
return a;}
};
class TA :public Teacher
{public:
TA(char *n="people",long num=1,int y=1,int m=1,int d=1,long i=1,char*p="??",char*de="??"):
Teacher(n,num,y,m,d,i,p,de){}
friend istream& operator >> (istream&a,TA&v)
{cout <<"输入助教生基本资料:"<<endl;
cout <<"His name is:";a>>v.name;
cout <<"His number is:";a>>v.number;
a>>v.brithday;
cout <<"His id is:";a>>v.id;
cout <<"He is (principalship):";a>>v.principalship;
cout <<"He in (department):";a>>v.department;
return a;}
friend ostream& operator << (ostream&a,TA&v)
{cout <<"助教生资料:"<<endl;
a <<"His name is:"<<v.name;
a <<"\nHis number is:"<<v.number<<endl;
a<<v.brithday;
a <<"His id is:"<<v.id<<endl;
a <<"He is(principalship):"<<v.department<<endl;
a <<"He in(department):"<<v.department<<endl;
return a;}
};
int main()
{Teacher t;
cout <<t;
cin >>t;
cout <<t;
Graduate a("li",123456,1993,11,11,12561264,"class 8","电脑系教师","政教处",t);
cout <<a;
cin >>a;
cout <<a;
getchar();
getchar();
}

有些问题
从people(人员)类派生出student(学生)类,添加属性:班号 char chassNO【7】;从people(人员)类派生出student(学生)类,添加属性:职务 char principalship【11】,部门 char department【21】.从 student类中派生出graduate(研究生)类,添加属性:专业 char subject【21】,导师 teacher adviser(为(教师类内嵌子对象));从graduate类和 teacher类派生出TA(助教生)类,注意虚基类的使用,重载相应的成员函数。
(3) 对people类重载“= =”运算符和“=”运算符,“= =”运算符判断两个people类对象的id属性是否相等;“=”运算符实现people类对象的赋值操作。
(4) 定义一个对people类对象数组按编号排序的函数,一个按编号查找people对象的函数。

扩展阅读:一个初中生学java要多久 ... crv 出现排放控制系统 ... c++编程 ... c++类实现图书管理系统 ... c++个人通讯录管理系统 ... c++简单的图书管理系统 ... 大一c++语言图书管理系统 ... 国开大学一网一平台 ... 班长 班级 ...

本站交流只代表网友个人观点,与本站立场无关
欢迎反馈与建议,请联系电邮
2024© 车视网