快捷搜索: 王者荣耀 脱发

C++小型公司工资管理系统 C++ 大作业/课程设计

一、实验目的

熟悉面向对象程序设计思想,掌握类、类的派生、静态成员、多态性、异常处理、文件读写的实际综合应用。

二、实验要求

1. 编写一个小型公司的工资管理程序。该公司主要有4类人员:经理、兼职技术人员、销售员和销售经理。要求每位职工的工号能够自动编号(从10000起编号)。其中月薪计算方法为:经理固定月薪8000元,兼职技术人员100元/小时,销售员为当月销售额的4%,销售经理保底工资5000元另加其所管部门销售额的5‰。

(1) 能够输入多位兼职技术人员的信息。 (2) 能够输入多位销售人员的信息,并能在自动计算销售总额的基础上,自动计算销售经理的月薪。 (3) 基类Employee中计算月薪的成员函数,要求为纯虚函数,以便约束四个子类重写计算月薪函数。 (4) 实现计算职工当月工资并写入文件的功能。 (5) 实现从文件中读取职工当月工资并显示的功能。 (6) 软件运行界面友好。

2. 锻炼小组合作能力。每个班内,学生自由结成开发小组,以小组形式完成软件开发。每个小组要求学生3-4名(最好3名学生),必须分工明确、体现合作意识。

三、项目分工

四、软件设计

包括但不限于类的设计,函数的设计,异常处理,文件读写等

类和主要函数分开设计。 通过对实验要求的分析研究,我们可以得到各类职工之间的上下级关系,以及他们各自信息之间的相似性和差异性。例如各职工姓名,工号,职位的相似性,和职位不同导致计算工资的方式也不同。 通过这些关系可以抽象出不同的类,存储各职工的信息,即封装他们的属性和方法。

1.类的继承关系

首先定义Employee职工基类,用基类派生出不同职位所代表的类:经理(Manger),销售(Salesman),销售经理(SalesManager),兼职技术人员(Technician)。继承关系如下

2.类的设计

各类具体的属性和方法就不详细描述了

3.程序运行流程

4.异常处理

1. 用户输入异常

整个程序在用户输入和打开文件时可能会出现错误,例如在输入选择时不小心输入了字母或者符号或者输入给定选项之外的数字;建立文件或打开文件失败等错误。 为了不让程序崩溃,我们需要处理这些异常,即提高程序的容错率。

在用户输入选项时添加以下代码:

cout << "请输入您的选择(1-3): ";
    int choose; cin >> choose;
    while (1) {
          
   
        //判断是否输入数字
        if (!cin)
        {
          
   
            cout << "非法输入,请输入数字:";
            cin.clear(); cin.ignore(1024,
);
            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);
    }

五、程序代码

代码:

经验分享 程序员 微信小程序 职场和发展