二、实验要求熟悉面向对象程序设计思想,掌握类、类的派生、静态成员、多态性、异常处理、文件读写的实际综合应用。
1. 编写一个小型公司的工资管理程序。该公司主要有4类人员:经理、兼职技术人员、销售员和销售经理。要求每位职工的工号能够自动编号(从10000起编号)。其中月薪计算方法为:经理固定月薪8000元,兼职技术人员100元/小时,销售员为当月销售额的4%,销售经理保底工资5000元另加其所管部门销售额的5‰。
(1) 能够输入多位兼职技术人员的信息。
(2) 能够输入多位销售人员的信息,并能在自动计算销售总额的基础上,自动计算销售经理的月薪。
(3) 基类Employee中计算月薪的成员函数,要求为纯虚函数,以便约束四个子类重写计算月薪函数。
(4) 实现计算职工当月工资并写入文件的功能。
(5) 实现从文件中读取职工当月工资并显示的功能。
(6) 软件运行界面友好。
2. 锻炼小组合作能力。每个班内,学生自由结成开发小组,以小组形式完成软件开发。每个小组要求学生3-4名(最好3名学生),必须分工明确、体现合作意识。
三、项目分工…
四、软件设计 0.效果图:包括但不限于类的设计,函数的设计,异常处理,文件读写等
1.类的继承关系类和主要函数分开设计。
通过对实验要求的分析研究,我们可以得到各类职工之间的上下级关系,以及他们各自信息之间的相似性和差异性。例如各职工姓名,工号,职位的相似性,和职位不同导致计算工资的方式也不同。
通过这些关系可以抽象出不同的类,存储各职工的信息,即封装他们的属性和方法。
首先定义Employee职工基类,用基类派生出不同职位所代表的类:经理(Manger),销售(Salesman),销售经理(SalesManager),兼职技术人员(Technician)。继承关系如下
2.类的设计各类具体的属性和方法就不详细描述了
整个程序在用户输入和打开文件时可能会出现错误,例如在输入选择时不小心输入了字母或者符号或者输入给定选项之外的数字;建立文件或打开文件失败等错误。 为了不让程序崩溃,我们需要处理这些异常,即提高程序的容错率。
在用户输入选项时添加以下代码:
cout<< "请输入您的选择(1-3): ";
int choose; cin >>choose;
while (1) {//判断是否输入数字
if (!cin)
{cout<< "非法输入,请输入数字:";
cin.clear(); cin.ignore(1024,'\n');
cin >>choose; continue;
}
...//继续执行
当用户输入为数字时通过switch…case…default语句选择要执行的内容
2.文件操作异常在写入文件时用if语句测试文件是否建立成功:
ofstream out("Employee.txt"); //建立Employee.txt文件,写入职工工资信息
if (!out) //测试建立文件是否成功
{cout<< "建立文件失败!"<< endl;
exit(0);
}
在读取文件时用try…catch…throw语句测试打开文件是否成功:
ifstream in("Employee.txt"); //打开Employee.txt,读取职工工资信息
try {if (!in) throw 1; } //测试打开文件是否成功
catch (int) {cout<< "打开文件失败!"<< endl;
exit(0);
}
五、程序代码代码: https://download.csdn.net/download/weixin_45468907/87229002
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧