• C++ 大作业/课程设计 小型公司工资管理软件


    一、实验目的

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

    二、实验要求

    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.类的设计

    各类具体的属性和方法就不详细描述了
    在这里插入图片描述

    3.程序运行流程

    在这里插入图片描述

    4.异常处理

    1. 用户输入异常

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

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

     cout << "请输入您的选择(1-3): ";
        int choose; cin >> choose;
        while (1) {
            //判断是否输入数字
            if (!cin)
            {
                cout << "非法输入,请输入数字:";
                cin.clear(); cin.ignore(1024,'\n');
                cin >> choose; continue;
            }
            ...//继续执行
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    当用户输入为数字时通过switch…case…default语句选择要执行的内容

    2.文件操作异常

    在写入文件时用if语句测试文件是否建立成功:

    ofstream out("Employee.txt"); //建立Employee.txt文件,写入职工工资信息
    if (!out)                     //测试建立文件是否成功
        {
            cout << "建立文件失败!" << endl;
            exit(0);
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在读取文件时用try…catch…throw语句测试打开文件是否成功:

    ifstream in("Employee.txt"); //打开Employee.txt,读取职工工资信息
    try { if (!in) throw 1; }    //测试打开文件是否成功
    catch (int) {
        cout << "打开文件失败!" << endl;
        exit(0);
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    五、程序代码

    代码: https://download.csdn.net/download/weixin_45468907/87229002

  • 相关阅读:
    搞懂图论中的中心性
    微软用 18 万行 Rust 重写了 Windows 内核
    前端小白的学习之路(CSS3 一)
    springcloudalibaba架构(20):链路追踪ZipKin数据持久化至elasticsearch
    【微信小程序】解决分页this.setData数据量太大的限制问题
    娄底医药工业洁净厂建设基本要点概述
    java.lang.Enum类下name()方法起什么作用呢?
    在Eclipse将Java代码打包为jar用于jmeter BeanShell
    软件测试/测试开发丨接口自动化测试学习笔记,整体结构响应断言
    PMP每日一练 | 考试不迷路-8.13(包含敏捷+多选)
  • 原文地址:https://blog.csdn.net/weixin_45468907/article/details/128133489