您好,欢迎来到伴沃教育。
搜索
您的当前位置:首页南昌大学(2010-11C++)实验一题目及要求

南昌大学(2010-11C++)实验一题目及要求

来源:伴沃教育
实 实验课程:学生姓名:学 号:专业班级:

验 报 告

C++ 面向对象程序设计 慎镛日 8000608039

计算机软件081

2010年11月 11日

南昌大学实验报告

学生姓名: 慎镛日 学 号: 8000608039 专业班级: 计算机软件081

实验类型:■ 验证 □ 综合 □ 设计 □ 创新 实验日期: 2010.11.12 实验成绩:

一、实验项目名称:小型公司人员管理 二、实验目的:

1、理解继承在面向对象程序设计中的重要作用; 2、理解继承和派生的概念;

3、掌握通过继承派生出一个新类的方法; 4、进一步学习简单面向对象程序的编写; 5、理解多态的概念; 6、理解虚函数的作用;

7、掌握虚函数的定义和使用方法; 8、学习实现多态;

9、了解纯虚函数和抽象类的概念和使用方法;

三、实验内容 1、题目内容描述

2、输入和输出信息描述及数据类型确定; (1)、输入数据

序号 输入数据描述 数据类型 1 2

…… …… ……

(2)、输出数据

序号 输出数据描述 数据类型 1 2

…… …… ……

(3)、自定义数据类型

如果程序中有自定义数据类型,如枚举、结构体、联合体等,请代码方式列出并概要解释其作用。

3、类的解释

(1)、类的定义 例如:

类 Point 成员数据定义 成员数据作用描述

int m_X 2维坐标点的 X坐标 …… ……

成员函数定义 成员函数功能描述 void SetX(int x); 设置 2 维坐标点 X坐标

…… ……

(2)、类之间的关系 4、程序调试

错误 错误信息 是否 解决方法

序号 列出你认为最重要的 10 个错误信息 解决 (简要描述) 1 …… 2 …… 3 …… ……

5、测试与结果分析 (1)、测试数据与结果(至少两组)

源文件名 可执行文件名 测试序号 测试输入数据 测试输出结果是否正确结果分析

三、 实验总结

1、问题总结

1) 结合本次实验目的,熟悉或掌握了那些内容。程序是否实现并测试通过 2)代码是否完成

3)那些方面的知识理解或掌握的不到位;程序存在什么问题 4)对于程序存在的问题如何去改进,写出其方法 2、经验总结

1)简述你在本题目积累了在开发工具使用、编成程序、调试程序、测试程序方面的实践经验

四、列出源代码

源文件:

employee.cpp

#include\"employee.h\" #include using namespace std;

employee::employee(char*n,int nu,char *s,int p,int sa,int y,int m,int d) { strcpy(name,n); num=nu; strcpy(sex,s);

position=p; salary=sa; bdate.setyear(y); bdate.setmonth(m); bdate.setday(d); }

int employee::getyear(){return bdate.gety();} int employee::getmonth(){return bdate.getm();} int employee::getday(){return bdate.getd();} char* employee::getname(){return name;} int employee::getnum(){return num;} char* employee::getsex(){return sex;}

int employee::getposition(){return position;} int employee::getsalary(){return salary;}

inoutdata.cpp:

#include\"main.h\" void inoutdata(int n) { ofstream outdata(\"data.txt\ char name[20],sex[4]; int num,salary,year,month,day,area;

cout<<\"请输入姓名:\"; cin>>name; outdata<<\"姓名:\"<cout<<\"请输入编号:\"; cin>>num; outdata<<\"编号:\"<cout<<\"请输入性别:\"; cin>>sex; outdata<<\"性别:\"<outdata<<\"职位:\"<>salary;

cout<<\"请输入哪一年出生:\"; cin>>year;

cout<<\"请输入出生月份:\"; cin>>month;

cout<<\"请输入出生在哪天:\"; cin>>day; outdata<<\"生日:\"< }

manager m(name,num,sex,n-1,salary,year,month,day); outdata<<\"薪水:\"<if(n==2) { cout<<\"请选择部门(1、华北,2、华东):\"<>area; salesmanager sm(name,num,sex,n-1,salary,year,month,day,area-1); outdata<<\"部门:\"<if(n==3) { cout<<\"请选择部门(1、华北,2、华东):\"<>area; salesman s(name,num,sex,n-1,salary,year,month,day,area-1); outdata<<\"部门:\"<if(n==4) { technician t(name,num,sex,n-1,salary,year,month,day); outdata<<\"薪水:\"<outdata<<\"\\n\"; outdata.close();

main.cpp:

#include\"main.h\" void inout() { int i; while(1) { cin>>i; if(i!=1&&i!=2&&i!=3&&i!=4)

return; inoutdata(i); }; }

void outf() { char a; cout<<\"是否要输出所有数据(y/n)?\"<>a; if(a!='y'&&a!='Y')return; ifstream indata; indata.open(\"data.txt\"); while(indata.get(a)) { cout<void main() { cout<<\"请选择要输入的数据:\\n1、总经理 \\n2、销售经理 \\n3、销售员 \\n4、技术员\\n\"<manager.cpp:

#include\"manager.h\" #include

manager::manager(char*n,int nu,char *s,int p,int sa,int y,int m,int d):employee(n,nu,s,p,sa,y,m,d) { mpay=sa; }

manager::getpay() { return mpay; }

void manager::pay()

{ mpay=mpay; }

void manager::display() { cout <<\"名字:\"<salesman.cpp:

#include\"salesman.h\" #include salesman::getsale() { return sale; }

salesman::getpay() { pay(); return spay; }

salesman::salesman(char*n,int a):employee(n,nu,s,p,sa,y,m,d) { sale=sa; area=a; }

void salesman::setsale(int p) { sale=p; }

void salesman::pay() { spay=getsale()*4/100; }

char *salesman::getarea() {

nu,char* s,int p,int sa,int y,int m,int d,int

return ar[area]; }

void salesman::display() { cout <<\"名字:\"<salesmanager.cpp:

#include\"salesmanager.h\" #include

salesmanager::salesmanager(char*n,int nu,char* s,int p,int a):salesman(n,nu,s,p,sa,y,m,d,a),manager(n,nu,s,p,sa,y,m,d) { sale=sa; }

salesmanager::getsmpay() { pay(); return smpay; }

salesmanager::getmpay() { return manager::getpay(); }

void salesmanager::setsale(int s) { sale=s; }

void salesmanager::setpay(int g) { gpay=g; }

void salesmanager::pay() { smpay=5000+sale*5/1000; }

sa,int y,int m,int d,int

char *salesmanager::getare() { return getarea(); }

void salesmanager::display() { cout <<\"名字:\"<technician.cpp:

#include\"technician.h\" #include

technician::technician(char*n,int nu,char* d):employee(n,nu,s,p,sa,y,m,d) { time=sa; }

technician::gettime() { return time; }

technician::getpay() { pay(); return tpay; }

void technician::pay() { tpay=time*25; }

void technician::display() { cout <<\"名字:\"<s,int p,int sa,int y,int m,int

cout <<\"职位:\"<头文件:

empolyee.h:

#ifndef empolyee_h #define empolyee_h static char p[4][20]={ {\"总经理\ {\"销售经理\ {\"销售员\ {\"技术人员\};

class date //定义时间类 {

private: int year,month,day; //定义时间类的年月日 public: date(){} //时间类的构造函数 void setyear(int y=1988){year=y;} void setmonth(int m=5){month=m;} void setday(int d=16){day=d;} int gety(){return year;} int getm(){return month;} int getd(){return day;} };

class employee //基类,被雇佣者 {

private: char name[20]; //名字 int num; //编号 char sex[4]; //性别 date bdate; //出生时间 int position; //职位 int salary; //薪水 public: employee(){} //基类构造函数 employee(char*n,int nu,char* s,int p,int sa,int y,int m,int d);//基类构造函数的重载 int getyear(); int getmonth();

}; #endif

int getday(); char* getname(); int getnum(); char* getsex(); int getposition(); int getsalary(); virtual void promote(){} virtual void pay()=0; virtual void display()=0;

//虚升职函数 //纯虚的计算工资函数 //纯虚的显示函数

main.h:

#include #include using namespace std; #include\"employee.h\" #include\"salesman.h\" #include\"manager.h\" #include\"salesmanager.h\" #include\"technician.h\" void inoutdata(int);

manager.h:

#include\"employee.h\" #ifndef manager_h #define manager_h

class manager:public employee //定义经理类,继承employee类 {

private: int mpay; //定义经理类的工资 public: manager(char*n,int nu,char *s,int p,int sa,int y,int m,int d); virtual void promote(){} int getpay(); virtual void pay(); virtual void display(); }; #endif

salesman.h

#include\"employee.h\"

#ifndef salesman_h #define salesman_h

static char ar[4][20]={ //定义储存部门的数组,以便后面你用整数来表示部门 {\"华北地区\ {\"华东\ };

class salesman:public employee //定义销售员的类,继承employee类 {

private: int sale,spay; //定义销售量,和销售员的工资变量 int area; //定义销售员的部门 public: salesman(char*n,int nu,char* s,int p,int sa,int y,int m,int d,int a); int getsale(); int getpay(); char* getarea(); void setsale(int); virtual void promote(){} //虚升职函数 virtual void pay(); //虚计算工资的函数 virtual void display(); //虚显示函数 }; #endif

salesmanager.h:

#include\"salesman.h\" #include\"manager.h\" #ifndef salesmanager_h #define salesmanager_h

class salesmanager:public salesman,public manager //定义销售经理的类,继承销售员类和经理类 {

private: int smpay,sale,gpay; public: salesmanager(char*n,int nu,char *s,int p,int sa,int y,int m,int d,int a); int getsmpay(); //获得销售经理的工资 int getmpay(); //获得销售经理的固定工资 void setsale(int); //设置销售经理的总销售量 void setpay(int); //设置销售经理的固定工资 char* getare(); //获得销售经理的部门 virtual void promote(){} //虚升职函数 void pay(); //销售经理的计算工资的函数

void display(); }; #endif

//销售经理的显示函数

technician.h:

#include\"employee.h\" #ifndef technician_h #define technician_h

class technician:public employee //定义技术员的类,继承employee类 {

private: int time,tpay; //定义技术员的工作时间和工资 public: technician(char*n,int nu,char* s,int p,int sa,int y,int m,int d); int gettime(); //获得技术员的工作时间 int getpay(); //获得技术员的工资 virtual void promote(){} //虚升职函数 virtual void pay(); //销售经理的计算工资的函数 virtual void display(); //销售经理的显示函数 }; #endif

五、参考文献

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- bangwoyixia.com 版权所有 湘ICP备2023022004号-2

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务