工资管理系统的开发设计
(一)需求分析
本次课题为工资管理系统的开发和设计。即模拟公司实际运营情况,对员工工资进行管理。整体实现职工工资的录入,删除,查找,修改,读取,工资排序等要求。
应实现以下功能:
- 数据录入功能
主要是对员工工资的日常管理,如:工资的输入,修改,迅速准确地完成工资信息统计计算以及对员工信息录入,修改等相关操作。
- 数据查询功能
1) 查询某一员工每个月份的工资情况
2) 查询某一月份每个员工的工资情况
3) 按编号查找某个员工的全部信息
- 数据删除功能
删除某一员工的相关信息
4.数据统计功能
统计员工交纳个人所得税以后的实际工资
- 数据排序功能
对某一员工按照各月工资高低排序
- 数据保存功能
将员工信息保存到文件
(二)初步设计
(1) 用结构体数组存储每个员工信息
struct Month
{
int month;
int money;
int finalmoney;
};
struct worker
{
char name[30];
char id[10];
char job[30];
unsigned char flag;
int mnum;
int finalmoney;
struct Month m[13] ;
} num[maxnum]; //定义人员信息数组
(2) 流程图
![工资管理系统的开发设计_第1张图片](http://img.e-com-net.com/image/info8/19c0d52e460d47608894700c660a0c42.jpg)
(三)详细设计
(1)代码展示
a.全局变量和头文件
#include
#include
#include
#define maxnum 100
FILE*in; //定义文件指针
FILE*out; //定义文件指针
int worknum = 0;
b.主界面
void show()
{
printf("\n");
printf("***************工资管理系统主界面***************\n");
printf("1.职工信息录入\t\t");
printf("2.职工信息删除\n");
printf("3.职工信息查找\t\t");
printf("4.职工信息修改\n");
printf("5.职工信息读取\t\t");
printf("6.按照工资排序\n");
printf("7.返回主界面\t\t");
printf("8.退出系统\n");
printf("************************************************\n");
}
c.写入文件和读文件
void Write_File()
{
FILE *fp;
int i;
if ((fp = fopen("worker.txt", "wb")) == NULL) //打开文件
{
printf("inFile open error!\n");
exit(1);
}
for(i=0; i
d.录入
//添加职工信息
void record(int n)
{
int i,j,salary,month,money;
char id[10];
int f=0;
struct worker tmp;
Read_File();
system("cls");
printf("录入职工信息:\n");
for(i=0; i
e.读取
//读取职工信息
void read()
{
int i,j;
system("cls");
printf("读取职工信息:\n");
Read_File();
printf("月份\t职工号\t姓名\t职务\t应得工资\t实际工资\n");
for(i=0; i
f.查找
//方法一查找信息
void search1()
{
int i, j, flag = 0;
char id[10];
printf("*****按编号查找某个员工的全部信息****** \n");
printf("请输入编号:");
scanf("%s", id);
Read_File();
for(i=0; i
g.修改
//修改职工信息
void modify()
{
int c,i,j,f=0;
char ch;
char name[30],job[30],id[10];
int flag = 0;
Read_File();
//Write_File();
printf("修改员工信息:\n");
printf("请输入员工编号:");
scanf("%s",id);
for(i=0; i
h.删除
//删除职工信息
void delet()
{
char id[10];
char c;
int i,flag=0;
FILE *fp;
system("cls");
printf("删除职工信息:\n");
printf("请输入职工编号:");
scanf("%s",id);
Read_File();
if ((fp = fopen("worker.txt", "wb")) == NULL) //打开文件
{
printf("open failedd!!\n");
return;
}
for(i=0; i
i.计算实际工资
int actulSalary(int money)
{
int k=money/1000;
double rate;
switch(k)
{
case 1:
case 2:
case 3:
case 4:
{
rate=0.1;
//printf("%.2",money-money*rate);
break; }
case 5:
case 6:
{
rate=0.2;
break;
}
case 7:
case 8:
{
rate=0.3;
break;
}
default:
{
rate=0.4;
break;
}
}
return money-money*rate;
}
j.主函数
void main()
{
int choose,n,i;
memset(num,0,maxnum*sizeof(struct worker));
while(1)
{
show();
printf("请输入数字,选择相关操作:");
scanf("%d",&choose);
system("cls");
if(choose==8)
{
break;
}
switch(choose)
{
case 1:
{
system("cls");
printf("请输入录入的人数:\n");
scanf("%d",&n);
record(n);
break;
}
case 2:
delet();
break;
case 3:
search();
break;
case 4:
modify();
break;
case 5:
read();
break;
//case 6:
// save();
// break;
case 6:
sort();
break;
case 7:
break;
default :
printf("输入数字不正确,请重新输入.");
break;
}
system("pause");
//system("cls");
}
}
(三)算法改进
1.将文件存储换为数据库存储应该更好些
2.实际情况还应包含更多内容。如:加班时间,加班类别,加班天数,岗位补贴,事假扣款,病假扣款,年终奖金等,应该具体完善。