我們,有的時候希望,用戶動態的輸入學生和老師信息,然後再顯示出來。
那麼,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 李老師 博士 科研室
運行結果如下: