综合实验四 面向对象的程序设计
[实验目的]
1. 2. 3. 4. 5. 6.
掌握类和对象的定义
掌握面向对象的程序设计方法 掌握类的继承与派生 掌握基类和虚函数的用法 掌握运算符重载的方法 掌握I/O流类的操作
[实验环境]
1. 软件需求:Visual C++ 6.0
2. 硬件需求: Pentium III 450以上的CPU处理器,64MB以上的内存,200MB的自由硬盘空
间
[实验内容]
1.
设计员工类Employee(静态数据成员)分 a) 题目描述
定义一个描述员工(Employee)基本情况的类,数据成员包括编号(num)、姓名(name)、性别(sex)、工资(wage)、人数(count)、总工资(totalWage)。其中姓名定义为长度为18的字符数组,性别定义为长度为3的字符数组,其它数据类型为整型,总工资和人数为静态数据成员,函数成员包括构造函数、显示基本函数(ShowBase)和显示静态数据函数(ShowStatic),其中构造函数由已知参数编号(nu),姓名(nm)、性别(sx)和工资(wg)构造对象,显示基本数据函数用于显示学生的编号、姓名、性别和工资,显示静态数据函数为静态成员函数,用于显示人数和总工资;要求所有数据成员为protected访问权限,所有成员函数为public访问权限,在主函数中定义若干个员工对象,分别显示员工基本信息,以及显示员工人数和总工资。 b) 输入描述
第一行要求输入一个小于10的数字n,表示即将录入的员工数量,换行后从键盘录入每个员工的数据,依次是编号,姓名,性别,工资,每个员工占一行 c) 输出描述
第一行显示“人数:”,第二行显示“总工资:”,后面分别显示每个员工的信息,每个员工之间空一行 d) 样例输入
2
1008 张三 男 2500
1009 李四 女 2600 e) 样例输出
人数:2
总工资:5100元
个人基本信息: 编号:1008 姓名:张三 性别:男 工资:2500
个人基本信息: 编号:1009 姓名:李四 性别:女 工资:2600
参考程序:
/******************************************************** 2012 IMIS C++ Practice 4 (Object oriented programming) Task 1
Programmed by YE Huanzhuo Lakeside Nov.28, 2012
********************************************************/ #include
class Employee {
protected: int num; char name[18]; char sex[3]; int wage; static int count; static int totalWage;
public: Employee(int nu, char * nm, char * sx, int wg); ~Employee(); void ShowBase(); static void ShowStatic(); };
int Employee::count=0;
int Employee::totalWage=0;
Employee::Employee(int nu, char * nm, char * sx, int wg) { num=nu; strcpy(name, nm); strcpy(sex, sx); wage=wg; count++; totalWage+=wg; }
Employee::~Employee() { count--; totalWage-=wage; }
void Employee::ShowBase() { cout<<\个人基本信息:\\n\ cout<<\编号:\ cout<<\姓名:\ cout<<\性别:\ cout<<\工资:\}
void Employee::ShowStatic() { cout<<\人数:\ cout<<\总工资:\元\}
int main() { int n, i, nu, wg; char nm[18], sx[3]; cin>>n; Employee **a=new Employee* [n]; for(i=0; i
}
}
Employee::ShowStatic(); for(i=0; i delete [] a; return 0; 2. 日期类Date的设计(构造函数) a) 题目描述 定义一个日期类Date,能提供和设置由年、月、日组成的日期。编写程序,提供类的构造函数用于根据输入初始化日期类Date的对象;提供函数用于输出日期类对象的日期,按照如下格式输出:yyyy-mm-dd b) 输入描述 初始化日期类Date对象的数据,分别是年、月、日。程序有多个测试用例。 c) 输出描述 按照指定格式输出的日期。 d) 样例输入 2010 12 30 2012 18 30 2012 6 10 e) 样例输出 2010-12-30 ERROR DATE 2012-06-10 参考程序: /******************************************************** 2012 IMIS C++ Practice 4 (Object oriented programming) Task 2 Programmed by YE Huanzhuo Lakeside Nov.28, 2012 ********************************************************/ #include using namespace std; class Date { int year; int month; int day; public: Date(int y, int m, int d); void show(); }; Date::Date(int y, int m, int d) { year=y; month=m; day=d; } void Date::show() { cout< int main() { int y, m, d, leap, md[]={0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; while(cin>>y>>m>>d) { if(y>=0&&y<=9999&&m>=1&&m<=12) { leap=y%4==0&&y0!=0||y@0==0; if((m==2&&d<=md[m]+leap)||(m!=2&&d<=md[m])) { Date D(y, m, d); D.show(); } else cout<<\ } else cout<<\ }