c++题目 面向对象程序设计b题目

设计实现校园信息管理系统,在该校园信息管理系统中同时对教师和学生的信息进行管理。
要求和提示如下,请认真看完:
(1)编写person类,student类,teacher类的声明和成员函数定义,注意进行文件的划分,即分别用一个.cpp和一个.h存放一个类的定义和声明
各个文件名称如下:
person.h, person.cpp, student.h, student.cpp, teacher.h, teacher.cpp, main.cpp
此处不允许将所有三个类的成员函数定义写到同一个.cpp中!!
(2)在编写主函数main的.cpp文件中有如下内容(注意:该.cpp文件并不仅仅包含下面内容,缺少的部分需要自己根据需要和实际情况添加)
//测试多态性
void ShowAll(person *p)
{
p->Show();
}

void main()
{
student s;
s.Read();

teacher t;
t.Read();
//下面是调用ShowAll函数显示学生信息,包括姓名性别家庭住址出生日期等
ShowAll(&s);
//请在下面调用ShowAll函数显示教师信息,包括姓名性别家庭住址出生日期等
}
提示:
(1)person类的声明如下(下面的声明有些问题,无法实现多态,需要自己修改好!!):
class person
{
public:
person();
void Show(void);
void Read(void);
private:
char name[10];//姓名
char sex[10];//性别
char address[50];//家庭住址
date birthday;//出生日期,date为自定义结构,见下面的提示
};
(2)类设计如下:
person类
定义 数据类型 描述
name char数组 姓名
sex char数组 性别
address char数组 家庭住址
birthday date(自定义结构) 出生日期
Show 虚成员函数 输出person实例信息(提示:cout)
Read 虚成员函数 输入person实例信息(提示:cin)

下面,由person类派生出学生类student和教师类teacher。类中成员名称及其功能说明如下表:
student类
定义 数据类型 描述
major char数组 所学专业
courses course数组(自定义结构) 所学课程(假设每名学生最多学20门课程)
sregister date(自定义结构) 入学日期
Show 成员函数 输出student实例信息(提示:cout)
Read 成员函数 输入student实例信息(提示:cin)
teacher类
定义 数据类型 描述
courses course数组(自定义结构) 所教课程(假设每名教师最多教10门课程)
tregister date(自定义结构) 到校日期
Show 成员函数 输出teacher实例信息(提示:cout)
Read 成员函数 输入teacher实例信息(提示:cin)

(3)自定义的结构体如下:
//日期:用于person出生日期,学生入学日期,教师入职日期
struct date
{
int year;
int month;
int day;
};
//课程:用于教师教授课程信息,学生学习的课程信息
struct course
{
int xueqi;//学期
int keshi;//课时
char name[50];
};

编程提示:
该程序本质是需要大家了解多态,虚函数,那么成员函数的编写其实非常简单,仅仅是一些输入输出。
(1)在C++中,如果要读入字符串
char str[10];//定义一个数组,里面存放字符类型的数据
cin>>str;//这样从键盘键入字符串,就可以读入str中
在C++中,如果输出字符串,接着上面的例子写
cout<<str;//这样,就将str中存放的字符串输出到屏幕上
(2)在C++中,读入输出整型数据
int keshi;//定义整型变量
cin>>keshi;//读入一个整型数据到keshi变量中
cout<<keshi;//输出keshi变量中存放的数据
在线等 急。。。。 事后追加分

//person.h
#include <iostream>
#include <string>

using namespace std;

class date
{
public:
date(){}
date(int y, int m, int d): year(y),month(m),day(d){}
void set_date(int y, int m, int d)
{
this->year = y;
this->day = d;
this->month = m;
}
void print_date()
{
cout << "birthday" << year << ":" << month << ":" << day << "\n";
}
~date(){};

private:
int year, month, day;
};

class person
{
public:
person();
//person(char*, char*, char*);
person(string, string, string);
virtual void Show();
virtual void Read();
virtual ~person(){};

private:
//char name[10];
//char sex[10];
//char address[50];
string name;
string sex;
string address;
date d;
};
/*
person::person()
{
;
}

person::person(string n, string s, string a):name(n), sex(s), address(a){}

void person::Read()
{
string name, sex, address;
int y, m, d;

cout << "input name, sex, address,date\n";
cin >> name >> sex >> address >> y >> m >> d;
this->name = name;
this->sex = sex;
this->address = address;
//person(name, sex, address);
//this->d.year = y;
//this->d.month = m;
//this->d.day = d;
this->d.set_date(y, m, d);

}

void person::Show()
{
cout << "name: " << this->name << "\tsex:"+sex << "\taddress:"+address << endl;
this->d.print_date();

}
*/

//student.h

class student:public person
{
public:
student(){};
void Show();
void Read();
~student(){};
private:
string major;
string course[20];
date stu_register_date;
};
/*
void student::Read()
{
//person.Read();
person::Read();
cout << "input major:\n" ;
cin >> major;
major = major;
cout << "input course less than 20 and 'q' to quite:\n";
string str_temp;
size_t st = 0;
while (cin >> str_temp && str_temp != "q")
{
course[st] = str_temp;
st++;
}
}

void student::Show()
{
person::Show();
cout << "major:"+major << endl;
}
*/

//teacher.h

struct course
{
int xueqi;
int keshi;
char name[50];
};

class teacher:public person
{
public:
teacher(){}
void Read();
void Show();
~teacher(){}
size_t course_point;
private:
course tea_courses [10];

};
/*
void teacher::Read()
{
person::Read();
cout << "input course:xueqi(int),keshi(int),name(char*) 'q' to complate" << endl;
int xueqi, keshi;
//char name[50];
cin >> xueqi >> keshi;
tea_courses[course_point].xueqi = xueqi;
tea_courses[course_point].keshi = keshi;
cin >> tea_courses[course_point].name;
course_point++;
}

void teacher::Show()
{
person::Show();
for(size_t st=0; st!=course_point;++st)
{
cout << "course:\n" << "xueqi:" + tea_courses[st].xueqi << "\tkeshi:" + tea_courses[st].keshi
<< "\tname:" << tea_courses[st].name << endl;
}

}

*/

//main.cpp
#include <iostream>
#include "person.h"
#include "student.h"
#include "teacher.h"

using namespace std;

int main()
{
person * p;
student stu;
p = &stu;
p->Read(); // read student
p->Show(); //show student

p = new teacher();
p->Read(); // read teacher
p->Show();// show teacher

cout << "hello world\n";
return 0;
}
//person.cpp
#include <iostream>
#include "person.h"
using namespace std;

person::person()
{
;
}

person::person(string n, string s, string a):name(n), sex(s), address(a){}

void person::Read()
{
string name, sex, address;
int y, m, d;

cout << "input name, sex, address,date\n";
cin >> name >> sex >> address >> y >> m >> d;
this->name = name;
this->sex = sex;
this->address = address;
//person(name, sex, address);
//this->d.year = y;
//this->d.month = m;
//this->d.day = d;
this->d.set_date(y, m, d);

}

void person::Show()
{
cout << "name: " << this->name << "\tsex:"+sex << "\taddress:"+address << endl;
this->d.print_date();

}
//student.cpp
#include <iostream>
#include "person.h"
#include "student.h"

using namespace std;

void student::Read()
{
//person.Read();
cout << "input a student\n";
person::Read();
cout << "input major:\n" ;
cin >> major;
major = major;
cout << "input course less than 20 and 'q' to quite:\n";
string str_temp;
size_t st = 0;
while (cin >> str_temp && str_temp != "q")
{
course[st] = str_temp;
st++;
}
}

void student::Show()
{
cout << "cout a student\n";
person::Show();
cout << "major:"+major << endl;
for(size_t st=0; st!=20; ++st)
{
cout <<"\t" << course[st] << endl;
}

}
//teacher.cpp
#include <iostream>
#include "person.h"
#include "teacher.h"

using namespace std;

void teacher::Read()
{
cout << "cin a teacher\n";
person::Read();
cout << "input course:xueqi(int),keshi(int),name(char*) 'q' to complate" << endl;
int xueqi, keshi;
//char name[50];
cin >> xueqi >> keshi;
tea_courses[course_point].xueqi = xueqi;
tea_courses[course_point].keshi = keshi;
cin >> tea_courses[course_point].name;
course_point++;
}

void teacher::Show()
{
cout <<"cout a teacher\n";
person::Show();
for(size_t st=0; st!=course_point;++st)
{
cout << "course:\n" << "xueqi:" + tea_courses[st].xueqi << "\tkeshi:" + tea_courses[st].keshi
<< "\tname:" << tea_courses[st].name << endl;
}

}

你可以仔细测试一下。。
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-10-28
设计实现校园信息管理系统,在该校园信息管理系统中同时对教师和学生的信息进行管理。
要求和提示如下,请认真看完:
(1)编写person类,student类,teacher类的声明和成员函数定义,注意进行文件的划分,即分别用一个.cpp和一个.h存放一个类的定义和声明
各个文件名称如下:
person.h, person.cpp, student.h, student.cpp, teacher.h, teacher.cpp, main.cpp
此处不允许将所有三个类的成员函数定义写到同一个.cpp中!!
(2)在编写主函数main的.cpp文件中有如下内容(注意:该.cpp文件并不仅仅包含下面内容,缺少的部分需要自己根据需要和实际情况添加)
//测试多态性
void ShowAll(person *p)
{
p->Show();
}

void main()
{
student s;
s.Read();

teacher t;
t.Read();
//下面是调用ShowAll函数显示学生信息,包括姓名性别家庭住址出生日期等
ShowAll(&s);
//请在下面调用ShowAll函数显示教师信息,包括姓名性别家庭住址出生日期等
}
提示:
(1)person类的声明如下(下面的声明有些问题,无法实现多态,需要自己修改好!!):
class person
{
public:
person();
void Show(void);
void Read(void);
private:
char name[10];//姓名
char sex[10];//性别
char address[50];//家庭住址
date birthday;//出生日期,date为自定义结构,见下面的提示
};
(2)类设计如下:
person类
定义 数据类型 描述
name char数组 姓名
sex char数组 性别
address char数组 家庭住址
birthday date(自定义结构) 出生日期
Show 虚成员函数 输出person实例信息(提示:cout)
Read 虚成员函数 输入person实例信息(提示:cin)

下面,由person类派生出学生类student和教师类teacher。类中成员名称及其功能说明如下表:
student类
定义 数据类型 描述
major char数组 所学专业
courses course数组(自定义结构) 所学课程(假设每名学生最多学20门课程)
sregister date(自定义结构) 入学日期
Show 成员函数 输出student实例信息(提示:cout)
Read 成员函数 输入student实例信息(提示:cin)
teacher类
定义 数据类型 描述
courses course数组(自定义结构) 所教课程(假设每名教师最多教10门课程)
tregister date(自定义结构) 到校日期
Show 成员函数 输出teacher实例信息(提示:cout)
Read 成员函数 输入teacher实例信息(提示:cin)

(3)自定义的结构体如下:
//日期:用于person出生日期,学生入学日期,教师入职日期
struct date
{
int year;
int month;
int day;
};
//课程:用于教师教授课程信息,学生学习的课程信息
struct course
{
int xueqi;//学期
int keshi;//课时
char name[50];
};

编程提示:
该程序本质是需要大家了解多态,虚函数,那么成员函数的编写其实非常简单,仅仅是一些输入输出。
(1)在C++中,如果要读入字符串
char str[10];//定义一个数组,里面存放字符类型的数据
cin>>str;//这样从键盘键入字符串,就可以读入str中
在C++中,如果输出字符串,接着上面的例子写
cout<<str;//这样,就将str中存放的字符串输出到屏幕上
(2)在C++中,读入输出整型数据
int keshi;//定义整型变量
cin>>keshi;//读入一个整型数据到keshi变量中
cout<<keshi;//输出keshi变量中存放的数据
问题补充:在线等 急。。。。 事后追加分本回答被网友采纳
第2个回答  2010-10-26
我大概看了下,建议你一步步操作。
其实很容易的。从创建类开始,然后逐个添加成员变量和函数。

面向对象程序设计C++复习题
C. 用户程序使用句柄时不需要定义。 D. 句柄仅仅是一个抽象的概念,程序中不能使用句柄。 9.下面关于动态链接库正确的说法是( B ) A. 动态链接库提供的函数,在编译阶段能够连接到应用程序中。 B. 动态链接库提供的函数,在运行阶段能够连接到应用程序中。 C. 动态链接库本身不能单独设计、编译和调试。 D. ...

关于C++的一些题目。
1、C++是从早期的C语言逐渐发展演变来的,与C语言相比,它在求解问题方法上最大的改进是( B )。A. 面向过程 B. 面向对象 C. 安全性 D. 复用性 2、下列关于this指针的叙述中,正确的是( )A.任何与类相关的函数都有this指针 B.类的成员函数都有this指针 C.类的友元函数都...

面向对象程序设计(C++语言描述)马石安 魏文平编著的 课后答案
ji

急急急 C++考试,老师说了题目·叫我们找答案,麻烦各位网友帮忙完成下...
DAACB CAA 四、看程序写结果 结果为 1 3 4 6 7 8 9 10 0 0 五、问答题 1、结构化:把完成某一个任务的复杂的过程分解为子过程,子过程再分解,一直到某些相对简单的过程。关键词:算法分解或过程分解。面向对象就是将一个复杂的系统分解为一些合适实体(对象),由这些实...

C++程序设计题,求解答,十万火急!!!各位帮忙啊!!!
1、目的:(1)要求学生达到熟练掌握C++语言的基本知识和技能;(2)基本掌握面向对象程序设计的基本思路和方法;(3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。2、基本要求:(1)要求利用面向对象的方法以及C++的编程思想来完成系统的设计;(2)要求在设计的过程中,建立清晰的类层次;(...

Java面向对象程序设计__哪位JAVA高手帮我做一下这些题目.
1 Smalltalk语言和C++语言 2 object 3 class 4 RuntimeException和Error 5 Third 6 (7)new Rectangle(2.5,8.7);(8)myRect.area();(9)this.width (10)this.length

用c++面向对象程序设计写一段求三角形周长和面积的代码?
return sqrt(t*(t-a)*(t-b)*(t-c));} else throw "不能构成三角形,无法求面积";} float getcircumference() const { if(valid)return a+b+c;else throw "不能构成三角形,无法求周长";} static void cal(triangle &tr,enum type t){ try { switch(t){ case area:cout<<"面积...

软件设计师中级下午题技巧
判断实体联系的类型。3. UML图:主要考察UML设计模式和UML图。4. 算法与数据结构:题目可能采用代码填空的形式,考察算法设计策略、算法的时间和空间复杂度等。5. 面向对象程序设计:该部分题目分为C++和Java两个题目,尽管编写代码的语法不同,但考察的内容是相同的。考生可以选择其中一个作答。

C++面向对象程序设计:定义一元二次方程类,求解。
){ if(delta()){ T y=sqr(b*b-4ac);x1=(-b+y)\/2;x2=(-b-y)\/2;return true;} return false;} template<class T> void equation<T>::show(){ if(result())std::cout<<"x1="<<x1<<" "<<"x2="<<x2<<std::endl;else std::cout<<"输入有错"<<std::endl;} ...

使用c++面向对象的程序设计方法,找出十个学生成绩中的最高者,并输出...
include<iostream>#include<cstring>using namespace std;class student{private:string name;int score;public:student(){}student(string _n,int _s){name=_n;score=_s;}friend student getMaxScore(student ss[],int n);void initStudent(string _n,int _s){score=_s;name=_n; }void ...

相似回答