课程设计目的和要求
工资管理要和人事管理相联系,生成企业每个职工的实际发放工资。
企业职工人事基本信息包括:职工编号、姓名、性别、出生日期、职称(助工、工程师、高级工程师)和任职年限。
企业职工工资信息包括:职工编号、姓名、职务工资、职务补贴、住房补贴、应发工资、个人所得税、养老保险、住房公积金和实发工资。
系统主要功能包括:
(1) 创建职工人事基本信息文件,根据提示输入职工的各项信息,按职工编号对职工信息进行排序,并将排序后的职工信息存储到一个文件中。
(2) 创建职工的工资信息文件(每个月创建一个文件),其中职工编号和姓名从人事信息文件中复制,其他工资组成项目按下面方法计算。
职务工资:助工=1270*(1+任职年限*2%)
工程师=2360*(1+任职年限*3%)
高级工程师=3450*(1+任职年限*5%)
职务补贴:=职务工资*25%
住房补贴=(职务工资+职务补贴)*15%
应发工资=职务工资+职务补贴+住房补贴
个人所得税=(应发工资-3000)*5%
养老保险=(职务工资+职务补贴)*10%
住房公积金=应发工资*5%
实发工资=应发工资-个人所得税-养老保险-住房公积金
(3) 增加职工人事基本信息,在原有职工人事基本信息文件的基础上增加新有的职工信息。
(4) 删除职工人事基本信息,提示用户输入要删除的职工编号,如果在文件有该信息存在,则将其信息输出到屏幕上,用户确认后将该信息删除,并将删除后的结果保存至原文件。最后提示用户是否继续进行删除操作。
(5) 修改职工人事基本信息,提示用户输入要删除的职工编号,如果在文件有该信息存在,则将其信息输出到屏幕上,然后提示用户要修改的选项(职称、任职年限),并将修改后的结果保存至原文件。最后提示用户是否继续进行修改操作。
(6) 按不同条件进行查询操作,输出满足条件的职工工资信息。
① 按职工编号查询,输入一个编号,输出对应职工工资信息。
② 按姓名查询,包括精确查询,模糊查询。
③ 按职称查询,输入职称名称,输出相应职称工资信息。
(7) 按不同条件对职工工资信息进行统计工作。
① 统计个职称岗位的职工人数是多少,计算高级工程师比例。
② 计算企业职工的平均实发工资,并输出。
③ 统计职工工资低于平均工资人数,并输出他们的姓名和实发工资。
#include<stdafx.h>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>
#include<time.h>
typedef struct date
{
short year;
short month;
short day;
}st3;
typedef struct gerenxinxi
{
char num[30];
char name[30];
char sex[30];
st3 chushengriqi;
char zhicheng[20];
int nianxian;
}st;
typedef struct gerengongzi
{
char num[20];
char name[12];
double zhiwugongzi;
double zhiwubutie;
double zhufangbutie;
double yingfagongzi;
double gerensuodeshui;
double yanglaobaoxian;
double zhufanggongjijin;
double shifagongzi;
}st1;
#define st3_len sizeof(st3)
#define st_len sizeof(st)
#define st1_len sizeof(st1)
#define gerenxinxinum 1000
#define gerengongzinum 1000
st gerenxinxi[gerenxinxinum]={0};
st1 gerengongzi[gerengongzinum]={0};
int loadgerenxinxi(void);//将文件中的信息读取
int originalgerenxinxi(void);//个人信息初始化
void getonegerenxinxi(int i);//输ru一个职工的个人信息
void allgerenxinxi(int bn);//保存所有信息
void xggerenxinxi(int bn);//修改个人信息
void saveonegerenxinxi(int i);//保存个人信息
int addgerenxinxi(int bn);//增加个人信息
int delgerenxinxi(int bn); //删除个人信息
void putonegerenxinxi(int i);//输出一个个人信息
void sort(int bn);//排序
void shengchenggongzi(int bn);//生成工资
void putonegerengongzi(int i);//输出一个人的工资信息
void cxgerenxinxi(int bn);//查询
void cxzhicheng(int bn);//职称查询
void cxname(int bn);//姓名查询
void cxnum(int bn);//编号查询
void tongjigongzixinxi(int bn);//统计工资信息
float avegongzi(int bn);//平均工资
void lowgongzi(int bn);//低于平均工资
void gangweirenshu(int bn);//职工人数
void main()
{ int select,bn;
bn=loadgerenxinxi();
if(bn==0)
printf("职工信息为零:");
while(1)
{
printf("\n 企业职工工资管理系统 \n");
printf("\n-----------------------------\n");
printf("\n 请输入要进行操作前的序号 \n");
printf("\n 1.输入职工信息 \n");
printf("\n 2.修改职工信息 \n");
printf("\n 3.增加职工信息 \n");
printf("\n 4.删除职工信息 \n");
printf("\n 5.职工工资 \n");
printf("\n 6.统计工资信息 \n");
printf("\n 7.查询工资信息 \n");
printf("\n 0.退出 \n");
printf("\n----------------------------\n");
scanf("%d",&select);
getchar();
switch(select)
{ case 1: originalgerenxinxi(); break;
case 2: xggerenxinxi(bn); break;
case 3: addgerenxinxi(bn); break;
case 4: delgerenxinxi(bn); break;
case 5: shengchenggongzi(bn); break;
case 6: tongjigongzixinxi(bn); break;
case 7: cxgerenxinxi(bn); break;
case 0: return;
default:printf("\n按键错误,请重新选择\n");
}
}
}
//=========================================================&