(2010 ---- 2011 学年 第 1 学期)
学 院: 管理学院 专 业 名 称: 电子商务 课 程 名 称: 面向对象程序设计 论 文 题 目: 《模拟网上购书的结账功能》 授课 教师(职称): 学 生 姓 名: 年 级: 2010 级 成 绩:
山西大学管理学院 2011年 9 月 14日
模拟网上购书的结账功能
一、问题分析与功能定义:
随着计算机技术的飞速发展,企业办公系统智能化已成为不可取代的趋势。它不仅更加快捷方便,也体现了如今无纸化办公的思想。
现在要解决的问题是:员工在发工资时,系统根据员工不同的岗位将工资打到员工卡上。 工资系统发工资的一般过程是:员工输入自己的员工编号,然后,工资系统计算出应发工资。
根据实际情况,确定了员工可分为三级别: 兼职技术人员,工资按小时计算 销售人员,月薪按销售额的4%计算
经理,固定工资8000元加销售额的4%计算
二、对象(类)设计:
Class Staff //基类 { protected:
String name; //姓名 int number; //员工编号
double money; //工资 public: staff();
staff(string n,double m);
string getstaffname(); //取姓名 int getnumber(); //取员工编号 double getmoney(); //取工资 virtual void display()=0; //显示函数 virtual void setmoney(double=0); //计算工资 };
Class Manager:public Staff //经理类
( int level; //经理级别 public:
worker(string n,int u,double m,int l ):Staff(n,u,m)
{level=l;} //构造函数 void display(); //显示函数 void setmoney(double m); //计算工资 };
Class Salesman:public Staff //销售人员类 { double rate; //占利润比 public:
Salesman (string n,int u,double m,double r) :Staff(n,u,m)
{rate=r;} //构造函数 void display(); //显示函数 void setmoney(double m); //计算工资 };
Class Technician:public Staff //技术人员类 { public:
Technician (string n,int u,double m) :Staff(n,u,m)
{ } //构造函数 void display(); //显示函数 void setmoney(double m); //计算工资
三、核心控制与编码:
// employee.cpp #include #include \"employee.h\" using namespace std; int employee::employeeNo=1000; // 员工编号基数为1000(起始编号) employee::employee() { char namestr[50]; // 输入雇员姓名时首先临时存放在namestr中 cout<<\"请输入下一个雇员的姓名:\"; cin>>namestr; name=new char[strlen(namestr)+1]; // 动态申请用于存放姓名的内存空间 strcpy(name,namestr); // 将临时存放的姓名复制到name individualEmpNo=employeeNo++; // 新输入的员工,其编号为目前最大编号加1 grade=1; // 级别初值为1 accumPay=0.0; // 月薪总额初值为0 } employee::~employee() { delete name; // 在析构函数中删除为存放姓名动态分配的内存空间 } void employee::pay() { } void employee::promote(int increment) { grade+=increment; // 升级,提升的级数由increment指定 } void employee::displayStatus() { } technician::technician() { hourlyRate=100; // 每小时薪金100元 } void technician::pay() { cout<<\"请输入\"< accumPay=hourlyRate*workHours; // 计算月薪,按小时计算 cout<<\"兼职技术人员 \"< cout<<\"兼职技术人员 \"< CommRate=0.04; // 销售提成比例4% } void salesman::pay() { cout<<\"请输入\"< accumPay=sales*CommRate; // 月薪=销售提成 cout<<\"推销员 \"< cout<<\"推销员 \"< manager::manager() { monthlyPay=8000; // 固定月薪8000元 } void manager::pay() { accumPay=monthlyPay; // 月薪总薪即固定月薪数 cout<<\"经理 \"< cout<<\"经理 \"< monthlyPay=5000; // 固定月薪8000元 CommRate=0.05; // 销售提成比例5% } void salesmanager::pay() { cout<<\"请输入\"< accumPay=sales*CommRate+monthlyPay; // 月薪=销售提成+固定工资 cout<<\"销售经理 \"< cout<<\"销售经理 \"< 部分截图: 实验心得: C++定义类最大的特点是使程序面向对象而不是面向过程,这在C中是没有体现的。类的标志特性是继承,封装,多态,对象化提供了模型化和信息隐藏的好处,类化提供了可重用性德好处。 通过面向对象使得程序设计模块化了,便于编程人员拆分合作。类首先是基类,派生和继承得到的新类既有基类的公共属性,又可以定义新的功能属性,便有了多元化实用价值,封装便于保护代码不被任意篡改和便于维护,可移植性和重用性高。 实验结束了,对于我们小组来说并不容易,有时代码要修改三四次,但是回想整个过程,收获还是不少的。 因篇幅问题不能全部显示,请点此查看更多更全内容