c++:基于文件的小型公司人员信息管理系统的设计与实现

本文介绍了使用C++设计和实现一个基于文件的小型公司人员信息管理系统,包括经理、兼职技术人员、兼职销售员和销售经理等角色。系统实现了员工信息的录入、查找、删除和修改等功能,并利用面向对象编程的特性,如继承、多态等。通过文件存储员工信息,确保数据持久化。
摘要由CSDN通过智能技术生成

2021/6/8

青岛理工大学(陈阳)

本次代码我写的十分繁琐,在这里说声抱歉。后期继续努力学习!

  • 实验目的

1. 综合利用面向对象的封装、继承、多态和文件流对象解决较为复杂的实际应用问题;

2. 体验多继承、动态多态等较为复杂的面向对象机制,提高学生学习的高阶性、挑战性和复杂度。

 

二、实验内容

基于文件的小型公司人员信息管理系统的设计与实现

某小型公司主要有3类人员:经理、兼职技术人员、兼职销售员。这些人员分别具有以下属性。

经理:姓名、编号固定工资、当月薪水、计算月薪、显示信息;

兼职技术人员:姓名、编号工作小时、每小时工资额、当月薪水、计算月薪、显示信息;

兼职销售员:姓名、编号销售额、销售额提成、当月薪水、计算月薪、显示信息。

销售经理:姓名、编号固定工资、销售额、销售额提成、当月薪水、计算月薪、显示信息。

要求:

(1)人员编号基数为1000,每输入一个人员信息编号顺序加1;

(2)月薪计算办法是经理固定月薪8000元;兼职技术人员按100元/小时领取月薪;兼职销售员按当月销售额的4%提成;销售经理固定月薪5000元,销售提成为所管辖部门当月销售总额的0.5%。

(3)将成员函数displayStatus(显示信息)设置成虚函数。

(4)将void pay()(计算月薪)设置成纯虚函数。

(5)根据以上要求,设计一个基类Employee,然后派生出Technician(兼职技术人员)类、Manager(经理)类、Salesman(兼职销售员)类和Salesmanager(销售经理)类。

(6)每类人员的信息记录在“类名_info.txt”文件中,例如兼职技术人员的信息记录在

Technician_info.txt文件中。能够根据编号对每类人员的信息进行增加、查找、删除和修改。

编程提示:

由于销售经理既是经理又是销售人员,拥有两类人员的属性,因此同时继承Manager类和Salesman类。

由于Salesmanager类的两个基类又有公共基类Employee,为了避免二义性,将Employee类设计为虚基类。

 

代码如下:

#include<iostream>

#include<fstream>   //文件流头文件

#include<string>

using namespace std;


 

int CountLines(char *filename);  

void search(int num);

void look_name(int num);

void txt_delate();

void modify_name();

 

class Employee              //人员基类

{

    public:

        Employee();

        virtual void pay()=0;                   //纯虚函数,计算月薪

        virtual void displayStatus();           //虚函数,展示信息

    protected:

        string Name;

        int No;

        static int Next_No;

        int number;

};

int Employee::Next_No = 1000;   //静态序号

Employee::Employee()

{

    cout<<"请输入姓名:";

    cin>>Name;

    Next_No = Next_No + 1;

    No = Next_No;

}

void Employee::displayStatus()

{

    cout<<"姓名:"<<Name<<endl;

    cout<<"号:"<<No<<endl;

}

 class Manager:virtual public Employee     //经理

{

    public:

        Manager();

        virtual void pay();

        virtual void displayStatus();

    protected:

        double Fixed_wage;

        double Monthly_salary;

};

Manager::Manager()

{

    int times;

    int num = 0;   //缓存数字

    string No_after;    //string缓存

    ifstream in;    //创建输入

    in.open("info.txt",ios::in);    //打开输入口

    for(int i = 0;i < CountLines("info.txt");i ++)    //每行每行查询

        {

            int product = 1000; //乘积,每次进入置位

            getline(in,No_after);    //将一行的数据存入No_after

            times = No_after.length();   //获取string长度

            for(int u = 0;u < times;u ++)

            {

                if(((int(No_after[u])) >= 48)&&((int(No_after[u])) <= 57))

                {

                    num = num + ((int(No_after[u])-48)*product);

                    product = product / 10;   //每次减少10倍

                }

                else if(No_after[u] == '/')

                {

                    break;  //退出循环

                }

            }

//          num = ((int(No_after[5])-48)*1000)+((int(No_after[6])-48)*100)+((int(No_after[7])-48)*10)+((int(No_after[8])-48)*1);    //类型转换,提取序号

            No = num + 1;   //赋值序号

            num = 0;    //执行一个循环后置一

        }

    in.close(); 

    Fixed_

  • 12
    点赞
  • 58
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
C++程序设计课程设计报告 课 题: 小型公司工资管理系统 专业班级: 学 号: 姓 名: 指导教师: 目录 1.设计系统的目的意义…………………………………………第1页 2.系统需求、功能分析…………………………………………第2页 3. 数据结构表……………………………………………………第3页 4. 数据测试表……………………………………………………第5页 5. 运行和调试……………………………………………………第7页 6. 课程心得体会…………………………………………………第16页 参考书目…………………………………………………………第17页 附录………………………………………………………………第18页 课程设计报告内容: 1、设计系统的目的意义 本次课程设计所编辑的C++程序是为了建立"小型公司工资管理系统"。 通过对该系统的建立进一步掌握面向过程和面面相对象程序的设计的几本方 法和编程技巧,巩固所学理论知识,是理论与实践相结合,提高分析问题、解决 问题的能力。 具体一点主要是为了进一步熟悉C++中类的概念、类的继承、抽象类、虚函数 、虚基类、多态和文件的输入/输出等内容的实现方式。了解系统开发的需求分析 、类层次设计、模块分析、编码测试、模块组装与整体调试的全过程;逐步熟悉 程序设计的方法,并养成良好的编程习惯。 2、系统需求、功能分析 A、公司主要有四类雇员:经理、技术人员、销售人员、销售经理。要求储存雇员 的编号、姓名、性别、所在部门、级别等信息,并进行工资计算。 B、工资的计算方法 (1)经理:领取固定月薪,固定月薪5000元; (2)技术人员:按小时领取月薪,工作时间*小时工资(80元/小时); (3)销售人员:按巩固销售额领取月薪,0.33*销售额; (4) 销售经理:既拿固定月薪也领取销售提成,0.33*销售额+固定月薪(5000元)。 C、功能分析 (1)添加功能:程序能够任意添加上述四类人员的记录,可提供选择界面供用 户选择所要添加的人员类别,要求员工的编号要唯一,如果添加了重复编号的记 录时,则提示数据添加重复并取消添加。 (2)查询功能:可根据编号、姓名等信息对已添加的记录进行查询,如果未找 到,给出相应的提示信息,如果找到,则显示相应的记录信息; (3)显示功能:可显示当前系统中所有记录,每条记录占据一行。 (4)编辑功能:可根据查询结果对相应的记录进行修改,修改时注意编号的唯 一性。 (5)删除功能:主要实现对已添加的人员记录进行删除。如果当前系统中没有 相应的人员记录,则提示"记录为空!"并返回操作;否则,输入要删除的人员的编 号或姓名,根据所输入的信息删除该人员记录,如果没有找到该人员信息,则提示 相应的记录不存。 (6)统计功能:能根据多种参数进行人员的统计。例如,统计四类人员数量以 及总数,或者统计男、女员工的数量,或者统计平均工资、最高工资、最低工资等 信息。 (7)读取功能:可将保存在文件中的人员信息读入到当前系统中,供用户进行 使用。 (8) 退出功能:退出程序。 3、数据结构表 4、数据测试表 添加后的数据: "编号 "姓名 "性别 "部门 "等级 "工资 " "1 "张三 "男 "经理 "A "5000元 " "2 "李四 "男 "经理 "A "5000元 " "3 "王五 "男 "经理 "A "5000元 " "4 "李白 "男 "技术 "B "4320元 " "5 "杜甫 "男 "技术 "B "3440元 " "6 "洋洋 "女 "销售 "C "2525元 " "7 "丽丽 "女 "销售 "C "2159元 " "8 "武凯旋 "男 "销售 "D "7525元 " "9 "刘玲 "女 "销售 "D "7159元 " 编辑后的数据: "编号 "姓名 "性别 "部门 "等级 "工资 " "1 "张三 "男 "经理 "A "5000元 " "2 "李四 "男 "经理 "A "5000元 " "3 "王五 "男 "经理 "A "5000元 " "4 "李白 "男 "技术 "B "4320元 " "5 "杜甫 "男 "技术 "B "3440元 " "6 "洋洋 "女 "销售 "C "2525元 " "7 "丽丽 "女 "销售 "C "2159元 " "8 "武凯旋 "男 "销售 "D "7525元 " "9 "李平 "男 "销售 "D "7159元 " 按编号删除后的数据: "编号 "姓名 "性别 "部门 "等级 "工资 " "2 "李四 "男 "经理 "A "5000元 " "3 "王五 "男 "经理 "A "5000元 " "4 "李白 "男 "技术 "B "4320元 " "5 "杜甫 "男 "技术 "B "3440元 " "6 "洋洋 "女 "销售 "C "2525元 " "
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值