基于C++实现(控制台)职工信息管理系统【100010060】

news2024/11/25 12:51:53

职工信息管理系统

一、实验内容

​ 设计一个职工信息管理案例,实现不同类别职工的工资数据。职工的种类包括:正式职工和临时工。定义一个基本的职工类,基本信息包括:编号、姓名、性别、年龄、家庭住址、基本职务工资。派生出正式职工类,增加的属性包括:岗位津贴、养老金、住房公积金、所得税、医疗保险、实发工资;临时工增加的属性包括:奖金、所得税、实发工资。

  • 正式职工:实发工资=基本职务工资 + 岗位津贴-养老金-住房公积金-所得税-医疗保险-所得税;
  • 临时工:实发工资=基本职务工资 + 奖金-所得税;

基本功能与技术要求

数据文件管理功能:创建新文件、打开文件、保存文件。

计算与统计功能:完成记录中相关数据的统计;

  • 能够打开已存在的数据表文件,对数据表中与某关键字匹配的相关记录进行数据统计(包括:工资总额、平均值)
  • 计算每个职工的实发工资,排序输出。

记录管理功能:记录的管理采用链表或者指针数组实现。

  • 输入/添加/插入记录,并保存到数据文件中。
  • 查询、显示记录,根据用户要求按所给编号、姓名、工资等记录关键字排序,查询一个或多个相关联记录的各项信息。
  • 修改记录:能够打开已存在的数据表文件,并对确定的任意记录进行修改,在修改过程中,应显示记录信息,给出确认提示,并对更新的记录信息进行文件保存。
  • 删除记录:能够打开已存在的数据表文件,可以删除数据表中的任一记录,要求具备逻辑删除(具有恢复功能)和物理删除功能,并对新的数据表信息进行文件保存。

二、代码说明

2.1 类与函数功能

main

​ 主要实现功能选择,运用 flag 变量,用户输入,进入 swith 选择对应功能,在程序的开始和结束及时读取和写入文件,及时更新用户信息。

print

​ 主要负责打印出不同功能下所要对应的界面,有以下函数:

打印选择功能界面:

void printFunction();

打印功能一对应界面:

void printFunction1();

打印功能一用户选择的数据:

void printFunction1(listpoint1 *head, int i);void printFunction1(listpoint2 *head, int i);

打印功能二对应界面:

void printFunction2(listpoint1 *head1, listpoint2 *head2);

打印功能三对应界面:

void printFunction3();

打印功能四选择界面,以及需要操作的员工类型界面:

void printFunction4(string s);

打印功能四选择查询方式界面:

void printFunction4();

打印功能五选择更改信息界面:

void printFunction5(listpoint1 *head);void printFunction5(listpoint2 *head);

打印功能六选择删除方式界面:

void printFunction6();

function

​ 主要负责对员工进行操作的一些函数,其中的函数有以下几个:

建立正式员工对应链表:

typedef struct listpoint1 {
    fullTimeEmployee *e;
    bool fireEmployee = false;
    struct listpoint1 *next;
    struct listpoint1 *last;
} listpoint1;

建立临时员工对应链表:

typedef struct listpoint2 {
    temporaryEmployee *e;
    bool fireEmployee = false;
    struct listpoint2 *next;
    struct listpoint2 *last;
} listpoint2;

增加正式员工和临时员工:

void addEmployee(listpoint1 *head);void addEmployee(listpoint2 *head);

写入文件:

void writeCsv(fullTimeEmployee e);void writeCsv(temporaryEmployee e);

读取 CSV 文件:

void readCsv(listpoint1 *temp);void readCsv(listpoint2 *temp);

对员工进行排序:

void update(listpoint1 *temp);void update(listpoint2 *temp);

输出员工总工资:

void printWages(listpoint1 *temp, int i);void printWages(listpoint2 *temp, int i);

打印单个员工工资:

void printEmployee(listpoint1 *temp);void printEmployee(listpoint2 *temp);

打印即将被操作的员工全部信息:

void print(listpoint1 *flag);
void print(listpoint2 *flag);
打印全部员工信息:
void printEmployees(listpoint1 *head);
void printEmployees(listpoint2 *head);

按不同方式查找员工:

listpoint1* findEmplpoyee(listpoint1 *head, int i);listpoint2* findEmplpoyee(listpoint2 *head, int i);

打印全部查询到的正式员工或临时员工:

void printEmplpoyee(int i, int j, listpoint1 *head1, listpoint2 *head2);

更改员工信息:

void changeEmplpoyee(int i,listpoint1 *head1,listpoint2 *head2);

删除员工:

void deleteEmplpoyee(int i, int j, listpoint1 *head1, listpoint2 *head2);

保存员工信息:

void saveEmployee(listpoint1 *head);void saveEmployee(listpoint2 *head);employee:

主要员工类,包含了员工的一些基本信息,:

普通员工类:

class employee {
private:
    int num = 0;             //职工编号  
    string name = "";        //职工姓名  
    string gender = "";      //性别  
    int age = 0;             //年龄  
    string address = "";     //家庭住址  
    int wages = 0;           //基本职务工资
public:
    void setNum(int _num);
    void setName(string _name);
    void setGender(string _gender);
    void setAge(int _age);
    void setAddress(string _address);
    void setWages(int _wages);
    void set();
    int getNum();
    string getName();
    string getGender();
    int getAge();
    string getAddress();
    int getWages();
    employee();
};

派生出正式员工类:

class fullTimeEmployee : public employee {
private:
    int moreMoney1 = 0;  //岗位津贴  
    int moreMoney2 = 0;  //养老金  
    int moreMoney3 = 0;  //住房公积金  
    int moreMoney4 = 0;  //所得税  
    int moreMoney5 = 0;  //医疗保险  
    int sumMoney = 0;    //实发工资
public:
    void setMoney1(int _moreMoney1);
    void setMoney2(int _moreMoney2);
    void setMoney3(int _moreMoney3);
    void setMoney4(int _moreMoney4);
    void setMoney5(int _moreMoney5);
    void setSumMoney();
    void set();
    int getMoney1();
    int getMoney2();
    int getMoney3();
    int getMoney4();
    int getMoney5();
    int getSumMoney();
    fullTimeEmployee();
    fullTimeEmployee(int i);
};

派生出临时员工类:

class temporaryEmployee : public employee {
    int moreMoney1 = 0;   //奖金  
    int moreMonry2 = 0;   //所得税  
    int sumMoney = 0;     //实发工资
public:
    void setMoney1(int _moreMoney1);
    void setMoney2(int _moreMoney2);
    void setSumMoney();
    void set();
    int getMoney1();
    int getMoney2();
    int getSumMoney();
    temporaryEmployee();
    temporaryEmployee(int i);
};

2.2 运行截图

开始界面:

功能一功能选择界面:

功能一工资总额输出界面:

功能一平均工资输出界面:

功能二输出界面:

功能三选择截图:

增加正式员工:

增加临时员工:

功能四查询数据(例 按编号查询):

功能五修改数据:

功能六删除选择删除方式:

功能七显示所有员工:

♻️ 资源

在这里插入图片描述

大小: 2.36MB
➡️ 资源下载:https://download.csdn.net/download/s1t16/87249013

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/116266.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Quarkus实现第一个Hello World

Quarkus介绍 Quarkus 是一个为 Java 虚拟机(JVM)和原生编译而设计的全堆栈 Kubernetes 原生 Java 框架,用于专门针对容器优化 Java,并使其成为无服务器、云和 Kubernetes 环境的高效平台。 Quarkus 可与常用 Java 标准、框架和库…

php正则匹配反斜杠问题

php正则匹配反斜杠问题&#xff1a; 之前做了一道题&#xff0c;发现php中正则匹配反斜杠好像有点问题。 我们先看下面代码&#xff1a; <?php$cmd "\\";echo $cmd.PHP_EOL;if(preg_match("/\\\\|\\/",$cmd)) {echo "yes";} else {echo …

springdata-jpa-hibernate-03

springdata-jpa-hibernate-03 多表关联操作 首先加上这个lombok依赖,可以使代码更加简洁 一对一 account类 customerRepository接口 测试 一对多 message类 测试 多对一 在上面一对多的基础上加上这句代码就行 MessageRepository接口 测试&#xff1a; 多对多…

Mybatis-Plus快速入门

入门案例 MyBatisPlus(简称MP)是基于MyBatis框架基础上开发的增强型工具&#xff0c;旨在简化开发、提高效率开发方式基于MyBatis使用MyBatisPlus基于Spring使用MyBatisPlus基于SpringBoot使用MyBatisPlusSpringBoot整合MyBatis开发过程&#xff08;复习&#xff09;创建Spring…

DSP-Z变换

目录 Z变换的定义: Z变换的收敛域: 收敛域的定义: 收敛条件&#xff1a; Z变换收敛域的形状&#xff1a; 阿贝尔定理&#xff1a; 对于有限长序列的收敛域&#xff1a; Z变换的性质: 线性&#xff1a; 收敛域取交集&#xff1a; 时移&#xff1a; 指数相乘&#xf…

Java和Web前端哪个有发展前景?

Java和Web前端都是当今技术行业里的热门岗位&#xff0c;岗位招聘需求量大&#xff0c;人才竞争度高&#xff0c;同学们掌握这两个岗位里其中任何一个的相关主流技术&#xff0c;都可以找到一份不错的职位。下面请允许笔者做一个简要的分析阐述&#xff1a; 一、Web前端 Web前…

5 Redis

5.1 Redis 5.1.1 前言 前面使用到的mysql数据库会出现以下问题 由于用户量增大&#xff0c;请求数量也随之增大&#xff0c;数据压力过大 多台服务器之间数据不同步 多台服务器之间的锁&#xff0c;已经不存在互斥性了。 5.1.2 Redis 5.1.2.1 什么是Redis Redis&#x…

GO语言基础-05-循环和语句-select语句

文章目录1. 概述1.1 作用1.2 和switch比较1.3 执行过程2. 语法示例3. 完整示例1. 概述 1.1 作用 监听channel的数据流动 1.2 和switch比较 相同 开始的一个新的选择块&#xff0c;每个选择条件由case语句来描述。 不同 switch语句&#xff1a;可以选择任何使用相等比较的…

SpringCloud 协同开发方案

相比Springboot开发&#xff0c;SpringCloud开发要复杂的多&#xff0c;因为涉及服务的注册发现&#xff0c;多个微服务模块间的调用等。 最简单的解决方案是每个开发者都在本地启动一套完整的开发环境&#xff0c;包括网关、nacos等各个组成微服务的模块&#xff0c;如果系统…

Hive 学习Demo

背景介绍 陌陌作为聊天平台每天都会有大量用户在线&#xff0c;会出现大量的聊天数据&#xff0c;通过对聊天数据分析&#xff0c;可以更好的构建精确的用户画像&#xff0c;为用户提供更好的服务以及实现高ROI(投资回报率)的平台运营推广&#xff0c;给公司的发展决策提供精确…

智能网联汽车渗透率变化图显示预计

IDC 于 2020 年最新发布的《全球智能网 联汽车预测报告&#xff08;2020-2024&#xff09;》数据显示&#xff0c;尽管受新冠肺炎疫情冲击&#xff0c;2020 年全球智能网联汽车出货量预计较上一年下滑 10.6%&#xff0c;约为 4440 万辆&#xff0c;但到 2024 年全球智能网联汽车…

广播机制基础知识

广播机制 1.广播机制 1.1概述 1.1.1引入 1.广播的生活案例 记得以前读书的时候&#xff0c;每个班级都会有一个挂在墙上的大喇叭&#xff0c;用来广播一些通知&#xff0c;比如&#xff0c;开学要去搬书&#xff0c;广播&#xff1a; "每个班级找几个同学教务处拿书"…

商业智能BI与业务结构分析

做商业智能BI还必须熟悉行业和业务知识&#xff0c;不结合行业业务知识&#xff0c;商业智能BI的项目是很难落地的。商业智能BI的本质其实是企业的业务和管理思维的落地。企业的高层、业务部门的管理人员为什么要通过商业智能BI去看报表&#xff0c;他们看的是什么&#xff0c;…

深度学习-吴恩达(C3)结构化你的机器学习工程

结构化你的机器学习工程改变了深度学习的错误 比如你分割数据的方法&#xff0c;分割成train&#xff0c;development(dev)或叫valid&#xff0c;test&#xff0c;所以最好的实践方法是什么&#xff1f;了解更多端对端的深度学习&#xff0c;进而了解到你是否需要使用它&#…

Elasticsearch 核心技术(三):Kibana 安装、配置、运行(Windows 版)

❤️ 个人主页&#xff1a;水滴技术 &#x1f680; 支持水滴&#xff1a;点赞&#x1f44d; 收藏⭐ 留言&#x1f4ac; &#x1f338; 订阅专栏&#xff1a;大数据核心技术从入门到精通 文章目录一、下载 Kibana二、安装 Kibana三、配置 Kibana1. 主机名2. 端口3. Elasticsea…

Spark基础入门----框架概述

Spark Spark 框架概述 Spark 诞生背景 Apache Spark是用于大规模数据处理的统一分析引擎 Spark 最早源于一片论文&#xff0c;该论文是由加州大学柏克莱分校的Matei Zaharia等人发表。论文中提出了一种弹性分布式数据集(RDD)的概念。 总的说&#xff0c;Spark借鉴了Map Red…

Android进阶——sdk开发和apk开发有什么区别?

sdk SDK 就是 Software Development Kit 的缩写&#xff0c;中文意思就是“软件开发工具包”。即辅助开发某一类软件的相关文档、范例和工具的集合都可以叫做“SDK”。 apk APK&#xff08;全称&#xff1a;Android application package&#xff0c;Android应用程序包&#…

【重学Javase】—— 数组(从头剖析一维数组,二维数组,array常用工具类以及数组的两种常见异常)

目录 数组的概述 1、数组的理解&#xff1a; 2、数组的特点&#xff1a; 3、数组的分类&#xff1a; 一维数组 1、一维数组的声明与初始化 2、一维数组元素的引用&#xff1a;通过角标的方式调用 3、数组的属性&#xff1a;length 4、一维数组的遍历&#xff08;for循…

mysql 备份还原数据库,java使用Runtime对象执行mysqldump备份数据库

为了提高系统可用性,通过java写定时任务每天晚上定时备份mysql数据库,然后把备份的.sql文件(建议在压缩一次上传,减少文件体积提高传输效率)调用文件上传服务器提供的文件上传接口上传到文件服务器,达到数据库服务器损坏后快速还原数据库的目的。以windows系统为例。linux注…

high-resolution image synthesis with latent diffusion models

如何通俗理解扩散模型&#xff1f; - 知乎泻药。实验室最近人人都在做扩散&#xff0c;从连续到离散&#xff0c;从CV到NLP&#xff0c;基本上都被diffusion洗了一遍。但是观察发现&#xff0c;里面的数学基础并不是模型应用的必须。其实大部分的研究者都不需要理解扩散模型的数…