系统基本信息包括职工工号、姓名、部门、职级、基本工资、加班工资、奖金、公积金、保险、总工资等。建议用结构体数组存储,或动态分配内存。
系统以菜单方式工作;
职工信息录入、浏览和删除功能;
职工信息查询功能,查询方式:按工号查询或部门查询;
职工信息修改功能;
统计基本工资>3000的人数;
按照总工资排序;
定义结构体数组实现相关功能就是了,都是基本操作
代码:
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//定义职工结构体
typedef struct _employee
{
char id[10]; //编号
char name[20];//姓名
char partment[20];//部门
int zj; //职级
float gzBase; //基本工资
float gzJb; //加班工资
float jj; //奖金
float gjj; //公积金
float bx; //保险
float zgz; //总工资
}Employee;
//录入信息
void input(Employee emp[],int* n)
{
system("cls");
printf("请输入员工编号:");
scanf("%s", emp[*n].id);
printf("请输入员工姓名:");
scanf("%s", emp[*n].name);
printf("请输入员工部门:");
scanf("%s", emp[*n].partment);
printf("请输入员工职级:");
scanf("%d", &emp[*n].zj);
printf("请输入员工基本工资:");
scanf("%f", &emp[*n].gzBase);
printf("请输入员工加班工资:");
scanf("%f", &emp[*n].gzJb);
printf("请输入员工奖金:");
scanf("%f", &emp[*n].jj);
printf("请输入员工公积金:");
scanf("%f", &emp[*n].gjj);
printf("请输入员工保险:");
scanf("%f", &emp[*n].bx);
//计算总工资(减去公积金和保险)
emp[*n].zgz = emp[*n].gzBase + emp[*n].gzJb + emp[*n].jj - emp[*n].gjj - emp[*n].bx;
*n = (*n) + 1;
printf("添加成功!\n");
system("pause");
}
//显示单条员工信息
void showInfo(Employee p)
{
printf("%s %s %s %d ", p.id, p.name, p.partment, p.zj);
printf("%.2f %.2f %.2f %.2f %.2f %.2f\n", p.gzBase, p.gzJb, p.jj, p.gjj, p.bx,p.zgz);
}
//查询
void search(Employee emp[],int n)
{
char tmp[20];
int flag = 0;
int i;
system("cls");
printf("请输入需要查找的员工编号或者部门:");
scanf("%s", tmp);
for(i=0;i<n;i++)
{
if (strcmp(emp[i].id, tmp) == 0 || strcmp(emp[i].partment, tmp) == 0)
{
flag = 1;
showInfo(emp[i]);
}
}
if (flag == 0)
printf("查无此人!\n");
system("pause");
}
//修改
void changeInfo(Employee emp[],int n)
{
char id[20];
int i;
int flag = 0;
system("cls");
printf("请输入需要修改信息的职工编号:");
scanf("%s", id);
for(i=0;i<n;i++)
{
if (strcmp(emp[i].id, id) == 0)
{
flag = 1;
printf("修改前的职工信息:\n");
showInfo(emp[i]);
//修改信息
//printf("请输入员工编号:"); //默认编号不可更改
//scanf("%s", emp[i].id);
printf("请输入员工姓名:");
scanf("%s", emp[i].name);
printf("请输入员工部门:");
scanf("%s", emp[i].partment);
printf("请输入员工职级:");
scanf("%d", &emp[i].zj);
printf("请输入员工基本工资:");
scanf("%f", &emp[i].gzBase);
printf("请输入员工加班工资:");
scanf("%f", &emp[i].gzJb);
printf("请输入员工奖金:");
scanf("%f", &emp[i].jj);
printf("请输入员工公积金:");
scanf("%f", &emp[i].gjj);
printf("请输入员工保险:");
scanf("%f", &emp[i].bx);
printf("修改后的职工信息:\n");
showInfo(emp[i]);
break;
}
}
if (flag == 0)
printf("查无此人!\n");
system("pause");
}
//删除记录
void deleteInfo(Employee emp[],int *n)
{
char id[20];
int op, i, j;
int flag = 0;
system("cls");
printf("请输入要删除的职工编号:");
scanf("%s", id);
for(i=0;i<*n;i++)
{
if (strcmp(emp[i].id, id) == 0)
{
flag = 1;
printf("是否要删除(1.删除 2.取消删除)? ");
scanf("%d", &op);
if (op == 1)
{
for (j = i; j < *n - 1; j++)
emp[j] = emp[j + 1];
*n = (*n) - 1;
printf("删除成功!\n");
break;
}
}
}
if (flag == 0)
printf("查无此人!\n");
system("pause");
}
//统计基本工资>3000的人数
void Tongji(Employee emp[],int n)
{
int i, cnt = 0;
system("cls");
for(i=0;i<n;i++)
{
if (emp[i].gzBase > 3000)
cnt++;
}
printf("基本工资大于3000的人数:%d\n", cnt);
system("pause");
}
//根据总工资排序
void sortByzgz(Employee emp[], int n)
{
int i, j;
Employee t;
for (i = 0; i < n - 1; i++)
{
for (j = 0; j < n - 1 - i; j++)
{
if (emp[j].zgz < emp[j + 1].zgz)
{
t = emp[j];
emp[j] = emp[j + 1];
emp[j + 1] = t;
}
}
}
//显示
printf("排序完毕:\n");
for (i = 0; i < n; i++)
showInfo(emp[i]);
}
//显示所有信息
void showAll(Employee emp[], int n)
{
int i;
system("cls");
if (n == 0)
{
printf("目前暂无员工\n");
system("pause");
return;
}
printf("所有员工信息:\n");
for (i = 0; i < n; i++)
showInfo(emp[i]);
system("pause");
}
int main()
{
int op;
Employee all[1000];
int n = 0; //实际员工人数
while (1)
{
system("cls");
printf("-------------职工工资管理系统------------\n");
printf(" 1.录入信息\n");
printf(" 2.查询信息\n");
printf(" 3.修改信息\n");
printf(" 4.删除信息\n");
printf(" 5.统计基本工资大于3000的人数\n");
printf(" 6.根据总工资排序\n");
printf(" 7.显示所有员工信息\n");
printf(" 0.退出系统\n");
printf("请选择:\n");
scanf("%d", &op);
switch (op)
{
case 0:return 0;
case 1:input(all,&n); break;
case 2:search(all,n); break;
case 3:changeInfo(all,n); break;
case 4:deleteInfo(all,&n); break;
case 5:Tongji(all,n); break;
case 6:sortByzgz(all, n); break;
case 7:showAll(all, n); break;
}
}
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!