首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

自学.新手.求帮忙写一个正确的程序,该怎么解决

2012-02-21 
自学.新手.求帮忙写一个正确的程序定义一个基类Person,属性有姓名,性别,出生日期,派生出子类Student,新增

自学.新手.求帮忙写一个正确的程序
定义一个基类Person,属性有姓名,性别,出生日期,派生出子类Student,新增成员属性学号,专业,入学总成绩。成员函数自定。要求实现学生名字,性别,出生日期,学号,专业,入学总成绩的录入和显示。我自己写了一个程序,怎么也搞不定,求高手帮下忙。
自己的程序:

C/C++ code
#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;}


[解决办法]
C/C++ code
#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;} 


[解决办法]

C/C++ code
#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;} 

热点排行