职工工资管理
职工工资管理 一、定义职工(employee )类,其中至少包括姓名、性别、工号、电话、所在科室和工资。 二、实现下面的功能 1、设计菜单实现功能选择; 2、输入功能:输入职工信息,并保存到文件中; 3、查询功能: 1)能够根据工号精确查询职工信息; 2)能够根据姓名、科室查询职工信息 3)分科室进行工资统计,计算各科室的平均工资 4、根据职工的工资排序输出 5、根据工号修改职工信息 ### 职工工资管理系统分析与设计 #### 一、系统概述 职工工资管理系统主要针对企业内部员工的基本信息以及工资管理需求而设计的一种应用软件。该系统通过定义一个`Employee`类来存储员工的基本信息,如姓名、性别、工号等,并在此基础上实现了员工信息的录入、查询、统计及更新等功能。 #### 二、类的设计 ##### 1. `Employee`类设计 - **成员变量**: - `int tag;`:标记是否删除。 - `int no;`:工号。 - `char name[20];`:姓名。 - `char boss[20];`:所属科室。 - `char department;`:部门代码。 - `Employee *next;`:链表中的下一个节点指针。 - **成员函数**: - `Employee();`:构造函数。 - `char* getname();`:获取姓名。 - `int gettag();`:获取删除标记。 - `int getno();`:获取工号。 - `void setno(int a);`:设置工号。 - `char getdepartment();`:获取部门代码。 - `char* getboss();`:获取所属科室。 - `void setboss(char q[]);`:设置所属科室。 - `void setname(char na[]);`:设置姓名。 - `void setdepartment(int de);`:设置部门代码。 - `void delna();`:设置删除标记为已删除。 - `void add(int n, char*q, char de, char*b);`:添加员工信息。 - `void display();`:显示员工信息。 ##### 2. `Database`类设计 - **成员变量**: - `int top;`:记录文件中员工信息的数量。 - `Employee *head;`:链表头指针。 - `Employee read[Maxr];`:存储员工信息数组。 - **成员函数**: - `Database();`:构造函数,用于读取文件中的员工数据。 - `void clear();`:清空当前数据。 - `int addemp(int n, char*na, char de, char*q);`:添加新员工信息。 - `Employee* query(int empid);`:按工号查询员工信息。 - `Employee* query1(char empna[20]);`:按姓名查询员工信息。 - `void disp();`:显示所有员工信息。 - `void del();`:删除指定员工信息。 - `void se();`:查询指定员工信息。 #### 三、系统功能实现 ##### 1. 设计菜单实现功能选择 设计一个用户友好的菜单界面,用户可以通过数字选择不同的操作,如添加员工、查询员工信息、统计工资等。 ##### 2. 输入功能:输入职工信息,并保存到文件中 当用户选择添加员工时,程序将提示用户输入员工的相关信息,并调用`addemp`方法将这些信息保存至数组中,同时更新文件中的数据。 ##### 3. 查询功能 - **按工号精确查询职工信息**:通过`query`方法根据工号查询员工信息。 - **按姓名或科室查询职工信息**:通过`query1`方法根据姓名或科室查询员工信息。 ##### 4. 分科室进行工资统计,计算各科室的平均工资 遍历所有员工信息,按科室分组统计工资总和及人数,进而计算出每个科室的平均工资。 ##### 5. 根据职工的工资排序输出 可以采用排序算法对员工工资进行排序,然后输出排序后的结果。 ##### 6. 根据工号修改职工信息 提供一个修改功能,用户输入要修改的工号,程序将显示该员工的信息供确认,然后用户可以修改所需信息并保存。 #### 四、总结 通过上述设计,我们构建了一个功能完善的职工工资管理系统。它不仅可以方便地管理企业的员工信息,还可以进行工资统计和查询等操作,极大地提高了工作效率和准确性。未来还可以考虑增加更多的高级功能,比如自动计算税费、支持多语言界面等,进一步提升系统的实用性和用户体验。
#include<iomanip.h>
#include<string.h>
#include<fstream.h>
const int Maxr=100;
class Employee //职工类
{
int tag;//删除标记
int no;//职工编号
char name[20];//职工名字
char boss[20];//部门经理
char department;//部门
Employee *next;
public:
Employee(){}
char *getname() {return name;}//获取名字
int gettag() {return tag;}//获取标记
int getno() {return no;}//获取编号
void setno(int a){no=a;}
char getdepartment(){return department;}
char *getboss(){return boss;}
void setboss(char q[])//设置部门经理名字
{
strcpy(boss,q);
}
void setname(char na[])//设置职工的名字
{
strcpy(name,na);
}
void setdepartment(int de){department=de;} //设置部门
void add(int n,char *q,char de,char *b)//增加
{
tag=0;
no=n;
strcpy(name,q);
department=de;
strcpy(boss,b);
}
void display()//显示职工信息
{
if(tag==0)
cout<<"│"<<setw(10)<<no<<"│"<<setw(10)<<name<<"│"<<setw(10)<<department<<"│"<<setw(10)<<boss<<"│"<<endl;
cout<<"├----------┼----------┼----------┼----------┤"<<endl;
}
};
class Database//职工数据类
{
int top;
Employee *head;
Employee read[Maxr];
public:
Database()//将职工信息从employee.txt读取到read[]中
{ Employee s ;
top=-1;
fstream file("employee.txt",ios::in);
while (1)
{
file.read ((char*)&s,sizeof(s));
剩余8页未读,继续阅读
- y876362013-03-06和题目怎么不一样
- 粉丝: 9
- 资源: 48
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于深度学习的火焰场景识别matlab仿真,包括程序,中文注释,仿真操作步骤
- 机械臂RLS控制程序matlab simulink
- bellsoft-jdk8u432+7-windows-amd64.msi
- android 移动应用与开发
- 运动物体识别 opencv python
- 技术资料分享uCOS-II信号量集很好的技术资料.zip
- 技术资料分享ucOS-II入门教程(任哲)很好的技术资料.zip
- 技术资料分享UCOSII 2.90 ReleaseNotes很好的技术资料.zip
- 技术资料分享Ucos-II-中文注释版很好的技术资料.zip
- 技术资料分享uCGUI的性能与资源占用很好的技术资料.zip