自学.新手.求帮忙写一个正确的程序
定义一个基类Person,属性有姓名,性别,出生日期,派生出子类Student,新增成员属性学号,专业,入学总成绩。成员函数自定。要求实现学生名字,性别,出生日期,学号,专业,入学总成绩的录入和显示。我自己写了一个程序,怎么也搞不定,求高手帮下忙。
自己的程序:
#include<iostream>#include<iomanip>using namespace std;class Person{ public: Person(char name,char sex,int birthday){}; char getname(char name) { return Name=name; } char getsex(char sex) { return Sex=sex; } char getbirthday(int birthday) { return Birthday=birthday; } void display(); ~Person(); protected: char Name; char Sex; int Birthday;};void Person::display(){ int i; i=Birthday; cout<<"学生姓名:"<<Name<<endl; cout<<"性别:"<<Sex<<endl; cout<<"出生日期:"<<i/10000<<"年"; i=i%10000; cout<<i/100<<"月"<<i%100<<"日"<<endl;}class Student:public Person{ public: char Num; char Major; int Score[6]; Student(char name,char sex,int birthday,char num,char major,int score[6]):Person(name,sex,birthday) { int i=0; cout<<"请输入学生学号:"; cin.get(num); cout<<"请输入学生专业:"; cin.get(major); cout<<"请分别输入学生的5门入学成绩:"; for(;i<5;i++) { cout<<"请输入第"<<i+1<<"门功课成绩"<<setw(2); cin>>score[i]; } } void display();};void Student::display(){ int i,j=0; i=getbirthday(Birthday); cout<<"学生姓名:"<<getname(Name)<<endl; cout<<"学生性别:"<<getsex(Sex)<<endl; cout<<"学生生日:"<<i/10000<<"年"; i=i%10000; cout<<i<<"月"; i=i%100; cout<<i<<"日"; cout<<"学号:"<<Num<<endl; cout<<"专业:"<<Major<<endl; cout<<"学生成绩为:"<<" "; for(;j<5;j++) {cout<<"第"<<j+1<<"门课的成绩:"<<Score[j];} }int main(void){ int score[6]={60.0,60.0,60.0,60.0,60.0}; Student s1('Li','Ming',19880602,10,'Math',score); return 0;}#include<iostream>#include<iomanip>using namespace std;class Person{public: Person(char name,char sex,int birthday){}; char getname(char name) { return Name=name; } char getsex(char sex) { return Sex=sex; } char getbirthday(int birthday) { return Birthday=birthday; } void display(); // ~Person();//这里后面没对析构函数定义protected: char Name; char Sex; int Birthday;};void Person::display(){ int i; i=Birthday; cout<<"学生姓名:"<<Name<<endl; cout<<"性别:"<<Sex<<endl; cout<<"出生日期:"<<i/10000<<"年"; i=i%10000; cout<<i/100<<"月"<<i%100<<"日"<<endl;}class Student:public Person{public: char Num; char Major; int Score[6]; Student(char name,char sex,int birthday,char num,char major,float score[6]):Person(name,sex,birthday) { int i=0; cout<<"请输入学生学号:"; cin.get(num); getchar();//清空缓存,(吸取回车键) cout<<"请输入学生专业:"; cin.get(major); cout<<"请分别输入学生的5门入学成绩:"; for(;i<5;i++) { cout<<"请输入第"<<i+1<<"门功课成绩"<<setw(2); cin>>score[i]; } } void display();};void Student::display(){ int i,j=0; i=getbirthday(Birthday); cout<<"学生姓名:"<<getname(Name)<<endl; cout<<"学生性别:"<<getsex(Sex)<<endl; cout<<"学生生日:"<<i/10000<<"年"; i=i%10000; cout<<i<<"月"; i=i%100; cout<<i<<"日"; cout<<"学号:"<<Num<<endl; cout<<"专业:"<<Major<<endl; cout<<"学生成绩为:"<<" "; for(;j<5;j++) {cout<<"第"<<j+1<<"门课的成绩:"<<Score[j];} }int main(void){ float score[6]={60.0,60.0,60.0,60.0,60.0}; Student s1('L','M',19880602,10,'M',score);//char是接受单字符的,字符串要用char *或者字符数组来 return 0;}
[解决办法]
#include <iostream>#include <string>using namespace std;class Person{public: Person(string name, string sex, string birthday) { this->name = name; this->sex = sex; this->birthday = birthday; } void display(); ~Person() {}protected: string name; string sex; string birthday;};void Person::display(){ cout << "--------------------------学生信息--------------------------" << endl; cout << "学生姓名:" << name << endl; cout << "性别:" << sex << endl; cout << "出生日期:" << birthday << endl;}class Student: public Person{public: Student(string name, string sex, string birthday, string num, string major, int (&score)[5]):Person(name,sex,birthday) { this->num = num; this->major = major; int i; for(i=0; i<5; ++i) { this->score[i] = score[i]; } } void display();private: string num; //学号 string major; //专业 int score[5]; //成绩};void Student::display(){ Person::display(); int j=0; cout << "学号:" << num << endl; cout << "专业:" << major << endl; cout << "学生成绩为:" << " " << endl; for( ; j<5; j++) { cout << "第" << j+1 << "门课的成绩:" << score[j] << endl; } }int main(void){ int i=0; string name; //姓名 string sex; //性别 string num; //学号 string major; //专业 string birthday; //生日 int score[5]={0}; //成绩 cout << "请输入姓名:"; cin >> name; cout << "请输入性别:"; cin >> sex; cout << "请输入出生日期:"; cin >> birthday; cout << "请输入学生学号:"; cin >> num; cout << "请输入学生专业:"; cin >> major; cout << "请分别输入学生的5门入学成绩:" << endl; for(; i<5; i++) { cout << "请输入第" << i+1 << "门功课成绩:" << endl; cin >> score[i]; } Student s(name, sex, birthday, num, major, score); s.display(); return 0;}