我们,有的时候希望,用户动态的输入学生和老师信息,然后再显示出来。
那么,C++如何实现呢?
下面,我们开始代码实现:
#include<iostream>
#include<cstring>
using namespace std;
/**
学生和老师的信息录入
*/
class Person{
//数据成员
private:
string ID; //ID号码
string name; //名字
public:
Person(string sendID, string sendName){
ID = sendID;
name = sendName;
}
//给数据成员赋用户输入的值
void initPersonData(string sendID, string sendName){
ID = sendID;
name = sendName;
}
//获取名字
string getName(){
return name;
}
//获取ID号码
string getID(){
return ID;
}
};
class Student : public Person{
//学生类私有数据成员
private:
string classnum; //学生班级
int grade; //学生成绩
public:
static int studentCount; //学生总人数
//学生类构造函数
Student(string sendClassNum = "", int sendGrade = 0, string ID = "", string name = "") : Person(ID, name){
classnum = sendClassNum;
grade = sendGrade;
studentCount++; //每实例化一个学生——>学生总人数 + 1
}
//给学生类的数据成员赋用户输入的值
void initStudnetData(string ID, string name, string sendClassNum, int sendGrade){
classnum = sendClassNum;
grade = sendGrade;
initPersonData(ID, name); //调用父类(Person类),设置用户输入的值
}
//显示学生信息
void print(){
cout<<Person::getID()<<"\t\t"<<Person::getName()<<"\t"<<classnum<<"\t\t"<<grade<<endl;
}
};
class Teacher : public Person{
//老师类私有数据成员
private:
string titleName; //老师职称
string department; //老师所在部门
public:
static int teacherCount ; //老师总人数
//老师类构造函数
Teacher(string sendtitle = "",string sendDepartment = "",string ID = "", string name = "") : Person(ID, name){
titleName = sendtitle;
department = sendDepartment;
teacherCount ++; //每实例化一个老师——>老师总人数 + 1
}
//给老师类的数据成员,赋用户输入的值
void initTeacherData(string ID, string name, string sendTitleName, string sendDepartment){
titleName = sendTitleName;
department = sendDepartment;
initPersonData(ID, name); //调用父类(Person类),设置用户输入的值
}
//显示老师基本信息
void print(){
cout<<Person::getID()<<"\t\t"<<Person::getName()<<"\t\t"<<titleName<<"\t\t"<<department<<endl;
}
};
int Student::studentCount = 0; //学生总人数——>静态变量初始化
int Teacher::teacherCount = 0; //老师总人数——>静态变量初始化
int main(){
int i; //定义循环变量
string name; //姓名
string ID; //ID号码
int grade; //学生成绩
string department; //老师所在部门
string titleName; //老师职称
string classNumber; //学生所在班级
//创建对象数组,实例化学生类对象=====>数量为三
Student stu[3] = {
Student(),
Student(),
Student()
};
//创建对象数组,实例化老师类对象=====>数量为三
Teacher tea[3] = {
Teacher(),
Teacher(),
Teacher()
};
//接收学生数据
cout<<"请输入三个学生的信息:"<<endl;
for(i = 0; i < 3; i++){
cin>>ID>>name>>classNumber>>grade; //接收用户输入的学生信息
stu[i].initStudnetData(ID, name, classNumber, grade); //设置用户输入的学生数据
}
//接收老师数据
cout<<"请输入三位老师的信息:"<<endl;
for(i = 0; i < 3; i++){
cin>>ID>>name>>titleName>>department; //接收用户输入的老师信息
tea[i].initTeacherData(ID, name, titleName, department); //设置用户输入的学生数据
}
//打印学生信息
cout<<"学生总人数为:"<<Student::studentCount<<"人"<<endl;
cout<<"-----------------------------学生名单-----------------------------"<<endl;
cout<<"学号\t\t"<<"姓名\t\t"<<"班级\t\t"<<"成绩"<<endl;
for(i = 0; i < 3; i++){
stu[i].print();
}
//打印老师信息
cout<<"老师总人数为:"<<Teacher::teacherCount <<"人"<<endl;
cout<<"-----------------------------老师名单-----------------------------"<<endl;
cout<<"教工号\t\t"<<"姓名\t\t"<<"职称\t\t"<<"部门"<<endl;
for(i = 0; i < 3; i++){
tea[i].print();
}
return 0;
}
测试数据 :
学生数据:
111 上官帝文 计算161 100
110 上官瑞谦 计算162 99
109 诸葛中天 计算163 98
老师数据:
666 张老师 教授 数学研究室
888 王老师 副教授 办公室
555 李老师 博士 科研室
运行结果如下: