【职工工资管理系统 c语言版】Dev-C++上通过测试+多文件实现

写在最前面:

1.本文代码在Dev-C++上经过测试。

2.代码中在开始和录入员工信息时设置了密码输入,但是没有具体的实现更多的功能,可以根据自身情况进行修改。

3.文中命名可能存在一点缺陷和问题。

一·程序功能描述

此员工工资管理系统主要可以实现以下功能:

  • 信息管理人员可以根据工资表通过该系统录入员工的各项工资信息(职工工号,职工姓名,应发工资,税收,水电费等),把工资信息保存在文件中,并且及时进行信息插入,删除等操作更新文件
  • 员工可以通过该系统查询到员工发放工资情况和具体金额
  • 该系统还可以按照月份累计统计职工在某段时间发放工资的总金额,并有排序功能,按照工资卡号升序或者实发工资降序输出

二·程序功能结构图

以下是此工资信息管理系统的简易结构功能图和实现的函数图

三·数据结构分析

  1. 职工工资采用结构体数组进行统计等操作,信息种类过多,如果采用数组方式存储会过于复杂
  2. 结构体中编号采用字符数组形式存储,便于后面统计排序等

变量名

数据类型

备注说明

ID

Char[10]

职工号

name

Char[30]

职工姓名

Card

Char[20]

职工卡号

WageTotal

double

应发工资

PayMonth

double

发放月份

Nuilities

double

水电费

TaxRate

double

税率

Tax

double

税金

Wage

double

实发工资

Notes

char[100]

备注

count

int

员工个数

Password

Char[20]

密码

四·项目文件组织结构

源程序

函数名

功能描述

代码行数

Main.c

main()

主程序入口

69

File.c

Login()

密码设置

42

LoadFile()

从文件中读取工资信息

UpdateFile()

将工资信息写入文件

Display.c

Munu()

主菜单显示

83

Add()

添加职工信息

See()

查看职工信息

Delect.c

Del()

删除职工信息

67

NameDel()

按姓名删除

IdDel()

按工号删除

Modify.c

Modify()

修改职工信息

121

NameModify()

按姓名修改

IdModify()

按工号修改

Reverse()

保存数据

Back()

返回主菜单

Search.c

Search()

查找职工信息

80

NameSearch()

按姓名查找

IdSearch()

按工号查找

DpSearch()

按部门查找

Statistics.c

SelfStatistics()

个人工资统计

255

TotalStatistic()

总计职工工资

statistics()

统计职工工资

Gzdtj()

按工资段统计

Bmtj()

按部门统计

Yftj()

按发放月份统计

Average()

职工工资求平均

Sort()

职工工资排序

Wage.h

函数声明

引用库函数和函数

47

结构体数组定义

公共类型数据声明

五·源代码演示

Main.c
#include <stdio.h>
#include <stdlib.h>
#include "Wage.h"
int main() 
{
	unsigned int num_workers = 0;    //当前存储的工资信息数目
	unsigned int Number=0;           //记录总的职工人数
	int choose=0;
	LoadFile();
	Login();
	while (1) {
		Menu();
		printf ("\t\t====>请选择:");
		scanf ("%d",&choose);
		system ("cls");
		switch (choose) {
			case 0:
				printf("\n\n\n\n\n");
				printf("\t\t\t\t感谢使用职工工资管理系统\t\t\t\t");
				getchar();
				getchar();
				exit(0);  //退出
				break ;
			case 1:
				Add();    
				Back();   //添加职工信息
				break ;
			case 2:
				See();   
				Back() ;   //查看职工信息
				break ;
			case 3:
				Search(); 
				Back();    //查找职工信息
				break ;
			case 4:
				Del() ;    
				Back();   //删除职工信息
				break ;
			case 5:
				SelfStatistics();
				Back( );  //个人工资统计
				break ;
			case 6:
				TotalStatistic();
				Back();   //总记职工工资
				break ;
			case 7:
				Sort();
				Back();   //排序职工信息
				break ;
			case 8:
				Modify();
				Back();   //修改职工信息
				break ;
			case 9:
				UpdateFile();
				Reserve();
				Back();   //保存数据
				break ;
			default:
				break;
		}
		fflush(stdin);    //清空输入的缓冲区
		system ("cls");   //清空屏幕
		system("pause");
	}
	return 0;
}
Wage.c
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAX_WORKERS 100 //最多可存储的工资信息数目
#define FILENAME "workers.dat" //工资信息文件名
extern unsigned int num_workers;
extern unsigned int Number;
typedef struct 
{
	char depa[30];     //所属部门
	char name[30];     //职工姓名
	char ID[10];       //职工编号
	char card[20];     //卡号
	int WageTotal;     //应发工资
	int PayMonth;      //发放月份
	int UtilityBill;   //水电费
	int Tax;           //税金
	char Notes[100];   //备注
    char Password[20]; // 密码
}Worker;               //职工信息
Worker workers[MAX_WORKERS]; // 存储工资信息的数组
void Menu();                 //主界面
void Add();                  //添加信息
void See();                  //查看信息
void Search();               //查询信息
void IdSearch();            //按工号查找
void NameSearch();          //按姓名查找
void DpSearch();            //按部门查找
void Del();                  //删除信息
void NameDel()  ;           //按姓名删除
void IdDel();               //按工号删除
void SelfStatistics();      //个人工资统计
void TotalStatistic();      //总计职工工资
void Statistics();           //统计职工工资
void Average();              //职工工资求平均
void Gzdtj();                //按工资段统计
void Bmtj();                 //按部门统计
void Yftj();                 //按发放月份统计
void Sort();                 //职工工资排序
void Modify();               //修改职工信息
void IdModify();            //按工号修改
void NameModify();          //按姓名修改
void Reserve();              //保存
void Back();                 //返回
void UpdateFile();          //从文件中读取工资信息
void LoadFile();            //将工资信息写入文件
void Login();                //密码设置
 Delect.c
#include "Wage.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
unsigned int num_workers;
unsigned int Number;
//删除职工信息
void Del() 
{ 
	int n=0;
	printf ("1 按姓名删除\n");
	printf ("2 按工号删除\n");
	scanf ("%d",&n);
	switch (n) {
		case 1:
			NameDel();
			break ;
		case 2:
			IdDel();
			break ;
	}
	system("pause");
}
//按姓名删除
void NameDel()
{ 
	char name[30];
	int i=0;
	int j=0;
	printf ("请输入要删除的职工姓名:");
	scanf ("%s",name);
	for (i=0; i<num_workers; i++) {
		if (strcmp(name,workers[i].name)==0) {
			for (j=i; j<num_workers-1; j++) {
				workers[j]=workers[j+1];
			}
		    num_workers--; // 工资信息数目减1
            UpdateFile(); // 更新文件中的内容
            printf("工资信息已成功删除!\n");
            return;
		}
		system("pause");
	}

}
//按工号删除
void IdDel() 
{ 
	FILE*fp=NULL;
	char id[60];
	int i=0;
	int j=0;
	printf ("请输入要删除的职工工号:");
	scanf ("%s",id);
	for (i=0; i<Number; i++) {
		if (strcmp(id,workers[i].ID)==0) {
			for(j=i; j<num_workers-1; j++) {
				workers[j]=workers[j+1];
			}
			num_workers--; // 工资信息数目减1
            UpdateFile(); // 更新文件中的内容
            printf("工资信息已成功删除!\n");
            return;
		}
		system("pause");
	}
}

Display.c

#include "Wage.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
extern unsigned int num_workers;
extern unsigned int Number;
//主菜单功能
void Menu () 
{
	printf ("\n");
	printf("=============================欢迎进入工资信息管理系统=========================\n");
	printf("==================Thanks for using the payroll management stystem=============\n");
	printf("|                                                                            |\n");
	printf("|   ¥¥¥¥¥¥¥¥¥¥ 请输入以下数字选项进行相应操作 ¥¥¥¥¥¥¥¥¥¥ |\n");
	printf("|                             [1]职工工资信息录入                            |\n");
	printf("|     ¥¥¥¥¥¥¥¥        [2]职工工资信息显示         ¥¥¥¥¥¥¥¥   |\n");
	printf("|                             [3]职工工资信息查找                            |\n");
	printf("|       ¥¥¥¥¥¥          [4]职工信息删除               ¥¥¥¥¥¥     |\n");
	printf("|                             [5]职工个人工资统计                            |\n");
	printf("|        ¥¥¥¥             [6]职工工资总计                 ¥¥¥¥       |\n");
	printf("|                             [7]职工工资排序                                |\n");
	printf("|          ¥¥               [8]职工信息修改                   ¥¥         |\n");
	printf("|                             [9]保存数据                                    |\n");
	printf("|           ¥                [0]退出系统                        ¥          |\n");
	printf("|                                                                            |\n");
	printf("==============================================================================\n");
}
//添加职工信息
void Add()
{ 
extern unsigned int num_workers;
extern unsigned int Number;
	if (num_workers >= MAX_WORKERS) //数组已满,无法再添加新的工资信息
	{ 
        printf("存储的工资信息已达到最大数目,无法添加新的工资信息!\n");
        return;
    }
    int numberTemp=0;
	int i=0;
	printf("请输入要添加职工个数:");
	scanf ("%d",&numberTemp);
	for (i=0; i<numberTemp; i++) {
		printf ("输入第%d个职工信息\n",i+1);
		printf ("职工姓名:");
		scanf ("%s",workers[num_workers].name);
		printf ("职工工号:");
		scanf ("%s",workers[num_workers].ID);
		printf ("职工部门:");
		scanf ("%s",workers[num_workers].depa);
		printf ("职工卡号:");
		scanf ("%s",workers[num_workers].card);
		printf ("应发工资:");
		scanf ("%d",&workers[num_workers].WageTotal);
		printf ("发放月份:");
		scanf ("%d",&workers[num_workers].PayMonth);
		printf ("水电费:");
		scanf ("%d",&workers[num_workers].UtilityBill);
		printf ("税金:");
		scanf ("%d",&workers[num_workers].Tax);
		printf ("备注:");
		scanf ("%s",workers[num_workers].Notes);
		printf("设置密码:");
        scanf("%s", workers[num_workers].Password);
		num_workers++; // 工资信息数目加1
        UpdateFile(); // 更新文件中的内容
		system("pause");
	}
	printf ("基本信息添加完毕添加成功!\n");
}
//查看职工信息
void See() 
{ 
extern unsigned int num_workers;
extern unsigned int Number;
	int i=0;
	printf ("-------------------------------------以下是全部职工信息---------------------------------------\n");
	printf ("\n职工姓名 职工工号  职工部门   职工卡号  应发工资 发放月份 水电费  税金  总工资     备注\n");
	while (i<num_workers) {
		printf ("\n%s\t  %s\t   %s\t %s %d\t    %d\t    %d\t   %d\t %d\t  %s\n",workers[i].name,workers[i].ID,workers[i].depa,workers[i].card,workers[i].WageTotal,workers[i].PayMonth,workers[i].UtilityBill,workers[i].Tax,workers[i].WageTotal-workers[i].UtilityBill-workers[i].Tax,workers[i].Notes);
		i++;
	}
	system("pause");
}
File.c
#include "Wage.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
unsigned int num_workers;
unsigned int Number;
//密码设置
void Login() 
{
    char password[20];
    printf("请输入密码:");
    scanf("%s", password);
    if (strcmp(password, "123456") == 0) {
        printf("密码正确,登录成功!\n");
    } else {
        printf("密码错误,登录失败!\n");
        exit(0); //密码错误,直接退出系统
    }
}
//从文件中读取工资信息
void LoadFile() 
{
    FILE *fp = fopen(FILENAME, "rb");
    /*代码通过调用fopen()函数打开指定文件,并返回指向该文件的指针fp。
	fopen()函数的第一个参数FILENAME表示要打开的文件名,
	第二个参数"rb"表示以二进制方式读取该文件。*/
    if (fp != NULL) {
        fread(&num_workers, sizeof(int), 1, fp); //先读取存储的工资信息数目
        fread(workers, sizeof(Worker), num_workers, fp); //读取工资信息
        fclose(fp);
    }
}
//将工资信息写入文件
void UpdateFile()
{
    FILE *fp = fopen(FILENAME, "wb");
    if (fp != NULL) {
        fwrite(&num_workers, sizeof(int), 1, fp); //先写入存储的工资信息数目
        fwrite(workers, sizeof(Worker), num_workers, fp); //写入工资信息
        fclose(fp);
    }
}
Search.c
#include "Wage.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
unsigned int num_workers;
unsigned int Number;
//查找职工信息
void Search() 
{ 
	int n=0;
	printf("1 按姓名查找\n");
	printf("2 按工号查找\n");
	printf("3 按部门查找\n");
	scanf ("%d",&n);
	switch (n) {
		case 1:
			NameSearch();
			break ;
		case 2:
			IdSearch();
			break ;
		case 3:
			DpSearch();
			break ;
		default:
			printf ("输入错误!\n");
			break ;
	}
	system("pause");
}
//按姓名查找
void NameSearch() 
{ 
	char name[30];
	int i=0;
	printf ("请输入要查找职工姓名:");
	scanf ("%s",name);
	system ("cls");
	printf("-------------------------------------以下是按姓名查找输出结果--------------------------------------");
	for(i=0; i<num_workers; i++) {
		if (strcmp(name,workers[i].name)==0) {
			printf ("\n%s\t  %s\t   %s\t %s %d\t    %d\t    %d\t   %d\t %d\t  %s\n",workers[i].name,workers[i].ID,workers[i].depa,workers[i].card,workers[i].WageTotal,workers[i].PayMonth,workers[i].UtilityBill,workers[i].Tax,workers[i].WageTotal-workers[i].UtilityBill-workers[i].Tax,workers[i].Notes);
	}
}
	system("pause");
}
//按工号查找
void IdSearch() 
{ 
	char id[10];
	int i=0;
	printf("请输入要查找工号:");
	scanf("%s",id);
	system("cls");
	printf("-------------------------------------以下是按工号查找输出结果--------------------------------------");
	printf ("\n职工姓名 职工工号  职工部门   职工卡号  应发工资 发放月份 水电费  税金  总工资     备注\n");
	for(i=0; i<num_workers; i++) {
		if(strcmp(id,workers[i].ID)==0) {
			printf("\n%s\t  %s\t   %s\t %s %d\t    %d\t    %d\t   %d\t %d\t  %s\n",workers[i].name,workers[i].ID,workers[i].depa,workers[i].card,workers[i].WageTotal,workers[i].PayMonth,workers[i].UtilityBill,workers[i].Tax,workers[i].WageTotal-workers[i].UtilityBill-workers[i].Tax,workers[i].Notes);
	}
}
	system("pause");
}
//按部门查找
void DpSearch() 
{ 
	char depa[30];
	int i=0;
	printf("请输入要查找部门名称:");
	scanf("%s",depa);
	system("cls");
	printf("-------------------------------------以下是按部门查找输出结果--------------------------------------");
	printf ("\n职工姓名 职工工号  职工部门   职工卡号  应发工资 发放月份 水电费  税金  总工资     备注\n");
	for(i=0; i<num_workers; i++) {
		if(strcmp(depa,workers[i].depa)==0) {
		printf("\n%s\t  %s\t   %s\t %s %d\t    %d\t    %d\t   %d\t %d\t  %s\n",workers[i].name,workers[i].ID,workers[i].depa,workers[i].card,workers[i].WageTotal,workers[i].PayMonth,workers[i].UtilityBill,workers[i].Tax,workers[i].WageTotal-workers[i].UtilityBill-workers[i].Tax,workers[i].Notes);
	}
}
	system("pause");
}
Statistics.c
#include "Wage.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
unsigned int num_workers;
unsigned int Number;
//个人工资统计
void SelfStatistics() 
{ 
	int i=0;
	double sum[100];
	printf("-以下是员工个人总工资统计-\n");
	for (i=0; i<num_workers; i++) 
	{
		sum[i]=workers[i].WageTotal-workers[i].UtilityBill-workers[i].Tax;
		printf ("%s的总工资为:%f\n",workers[i].name,sum[i]);
	}
	system("pause");
}
//总计职工工资
void TotalStatistic()
{ 
	int n=0;
	printf ("1 统计职工工资\n");
	printf ("2 职工工资求平均\n");
	scanf ("%d",&n);
	switch (n) 
	{
		case 1:
			Statistics();
			break ;
		case 2:
			Average();
			break ;
		default:
			printf("输入错误!\n");
			break;
	}
	system("pause");
}
 //统计职工工资
void  Statistics()  
{
	int n=0;
	printf ("1 按工资段统计\n");
	printf ("2 按部门统计\n");
	printf ("3 按发放月份统计\n");
	scanf ("%d",&n);
	switch (n) 
	{
		case 1:
			Gzdtj();
			break ;
		case 2:
			Bmtj();
			break ;
		case 3:
			Yftj();
			break ;
		default:
			printf("输入错误!\n");
			break;
	}
	system("pause");
}
//按工资段统计
void Gzdtj() 
{ 
	int sa1,sa2;
	int i=0;
	int n,m;
	int sl[20]= {0,0};
	double sum [100];
	printf ("请输入要查询的工资段:");
	scanf ("%d,%d",&sa1,&sa2);
	system ("cls");
	for (i=0; i<num_workers; i++) 
	{
		sum[i]=workers[i].WageTotal-workers[i].UtilityBill-workers[i].Tax;
	}
	for (i=0; i<num_workers; i++) 
	{
		n=sum[i]/1000;
		if (n>9)
			n=10;
		switch(n) 
		{
			case 0:
				sl[0]++;
				break ;
			case 1:
				sl[1]++;
				break ;
			case 2:
				sl[2]++;
				break ;
			case 3:
				sl[3]++;
				break ;
			case 4:
				sl[4]++;
				break ;
			case 5:
				sl[5]++;
				break ;
			case 6:
				sl[6]++;
				break ;
			case 7:
				sl[7]++;
				break ;
			case 8:
				sl[8]++;
				break ;
			case 9:
				sl[9]++;
				break ;
			case 10:
				sl[10]++;
				break ;
		}
	}
	m=sa1/1000;
	switch(m) 
	{
		case 0:
			printf ("工资在1000以下的人数为%d\n",sl[0]);
			break ;
		case 1:
			printf("工资在1000到2000之间的人数为%d\n",sl[1]);
			break ;
		case 2:
			printf("工资在2000到3000之间的人数为%d\n",sl[2]);
			break ;
		case 3:
			printf("工资在3000到4000之间的人数为%d\n",sl[3]);
			break ;
		case 4:
			printf("工资在4000到5000之间的人数为%d\n",sl[4]);
			break ;
		case 5:
			printf("工资在5000到6000之间的人数为%d\n",sl[5]);
			break ;
		case 6:
			printf("工资在6000到7000之间的人数为%d\n",sl[6]);
			break ;
		case 7:
			printf("工资在7000到8000之间的人数为%d\n",sl[7]);
			break ;
		case 8:
			printf("工资在8000到9000之间的人数为%d\n",sl[8]);
			break ;
		case 9:
			printf("工资在9000到10000之间的人数为%d\n",sl[9]);
			break ;
		case 10:
			printf("工资在10000以上的人数为%d\n",sl[10]);
			break ;
	}
	system("pause");
}
//按部门统计
void Bmtj() 
{ 
	char depa[30];
	float sum=0;
	int i=0;
	printf("请输入要查询的部门名称:");
	scanf ("%s",depa);
	system ("cls");
	printf("-------------------------------------以下是按部门统计输出结果--------------------------------------");
	printf ("\n职工姓名 职工工号  职工部门   职工卡号  应发工资 发放月份 水电费  税金  总工资     备注\n");
	for(i=0; i<num_workers; i++) 
	{
		if (strcmp(depa,workers[i].depa)==0) 
		{
				printf("\n%s\t  %s\t   %s\t %s %d\t    %d\t    %d\t   %d\t %d\t  %s\n",workers[i].name,workers[i].ID,workers[i].depa,workers[i].card,workers[i].WageTotal,workers[i].PayMonth,workers[i].UtilityBill,workers[i].Tax,workers[i].WageTotal-workers[i].UtilityBill-workers[i].Tax,workers[i].Notes);
				sum=sum+workers[i].WageTotal-workers[i].UtilityBill-workers[i].Tax;
	    }
	}
	printf("该部门的总工资为:%f\n",sum);
	system("pause");
}
//按发放月份统计
void Yftj() 
{ 
	int PayMonth;
	int i=0;
	printf("请输入要查询的发放月份:");
	scanf ("%d",&PayMonth);
	system ("cls");
	printf("-------------------------------------以下是按月份发放输出结果--------------------------------------");
	printf ("\n职工姓名 职工工号  职工部门   职工卡号  应发工资 发放月份 水电费  税金  总工资     备注\n");
	for(i=0; i<num_workers; i++) 
	{
		if (PayMonth==workers[i].PayMonth) 
		{
			printf("\n%s\t  %s\t   %s\t %s %d\t    %d\t    %d\t   %d\t %d\t  %s\n",workers[i].name,workers[i].ID,workers[i].depa,workers[i].card,workers[i].WageTotal,workers[i].PayMonth,workers[i].UtilityBill,workers[i].Tax,workers[i].WageTotal-workers[i].UtilityBill-workers[i].Tax,workers[i].Notes);
	    }
    }
	system("pause");
}
//职工工资求平均
void Average() 
{ 
	double all=0;
	double sum[100];
	int cnt=0;
	int i=0;
	printf("职工工资平均值如下:\n");
	for (i=0; i<num_workers; i++) 
	{
		sum[i]=workers[i].WageTotal-workers[i].UtilityBill-workers[i].Tax;
		all+=sum[i];
		cnt++;
	}
	all/=cnt;
	printf("%f\n",all);
	system("pause");
}
//职工工资排序
void Sort() 
{ 
	int i=0;
	int m,n;
	double sum[100];
	double t;
	Worker p;
	printf("-以下是工资发放排序结果-\n");
	for (i=0; i<num_workers; i++)
	{
		sum[i]=workers[i].WageTotal-workers[i].UtilityBill-workers[i].Tax;
	}
	//冒泡排序法由工资高到低依次输出员工工资
	for(m=1; m<num_workers; m++) 
	{
		for(n=1; n<num_workers; n++) 
		{
			if(sum[n]>sum[n-1]) 
			{
				t=sum[n];
				sum[n]=sum[n-1];
				sum[n-1]=t;
				p=workers[n];
				workers[n]=workers[n-1];
				workers[n-1]=p;
			}
		}
	}
	for (i=0; i<num_workers; i++)
	{
		printf ("%s的总工资为:%lf\n",workers[i].name,sum[i]);
	}
	system("pause");
}
Modify.c
#include "Wage.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
unsigned int num_workers;
unsigned int Number;
//修改职工信息
void Modify() 
{ 
	int mode=0;
	printf ("请选择修改查找方式\n");
	printf ("1 按姓名查找修改\n");
	printf ("2 按工号查找修改\n");
	scanf ("%d",&mode);
	switch (mode) 
	{
		case 1:
			NameModify();
			break ;
		case 2:
			IdModify();
			break ;
		default :
			printf ("输入错误!\n");
			break ;
	}
	system("pause");
}
//按姓名修改
void NameModify() 
{ 
	FILE*fp=NULL ;
	char name[30];
	int i=0;
	printf ("请输入要修改的职工姓名:");
	scanf ("%s",name);
	for (i=0; i<num_workers; i++) 
	{
		if (strcmp(name,workers[i].name));
		else
			break;
	}
	printf ("\n职工姓名 职工工号  职工部门   职工卡号  应发工资 发放月份 水电费  税金  总工资     备注\n");
	printf("\n%s\t  %s\t   %s\t %s %d\t    %d\t    %d\t   %d\t %d\t  %s\n",workers[i].name,workers[i].ID,workers[i].depa,workers[i].card,workers[i].WageTotal,workers[i].PayMonth,workers[i].UtilityBill,workers[i].Tax,workers[i].WageTotal-workers[i].UtilityBill-workers[i].Tax,workers[i].Notes);
	printf ("姓名:");
	scanf ("%s",workers[i].name);
	printf ("工号:");
	scanf ("%s",workers[i].ID);
	printf ("所属部门:");
	scanf ("%s",workers[i].depa);
	printf ("职工卡号:");
	scanf ("%s",workers[i].card);
	printf ("应发工资:");
	scanf ("%d",&workers[i].WageTotal);
	printf ("发放月份:");
	scanf ("%d",&workers[i].PayMonth);
	printf ("水电费:");
	scanf ("%d",&workers[i].UtilityBill);
	printf ("税金:");
	scanf ("%d",&workers[i].Tax);
	printf ("备注:");
	scanf ("%s",workers[i].Notes);
	printf("设置密码:");
    scanf("%s", workers[num_workers].Password);
	UpdateFile(); //更新文件中的内容
	printf("\t=======>信息修改成功!\n");
	system("pause");
}
//按工号修改
void IdModify() 
{ 
	FILE*fp=NULL ;
	char id[30];
	int i=0;
	printf ("请输入要修改的职工工号:");
	scanf ("%s",id);
	for (i=0; i<num_workers; i++) 
	{
		if (strcmp(id,workers[i].ID));
		else
			break ;
	}
	printf ("\n职工姓名 职工工号  职工部门   职工卡号  应发工资 发放月份 水电费  税金  总工资     备注\n");
	printf("\n%s\t  %s\t   %s\t %s %d\t    %d\t    %d\t   %d\t %d\t  %s\n",workers[i].name,workers[i].ID,workers[i].depa,workers[i].card,workers[i].WageTotal,workers[i].PayMonth,workers[i].UtilityBill,workers[i].Tax,workers[i].WageTotal-workers[i].UtilityBill-workers[i].Tax,workers[i].Notes);
	printf ("请重新输入该职工信息\n");
	printf ("姓名:");
	scanf ("%s",workers[i].name);
	printf ("工号:");
	scanf ("%s",workers[i].ID);
	printf ("所属部门:");
	scanf ("%s",workers[i].depa);
	printf ("职工卡号:");
	scanf ("%s",workers[i].card);
	printf ("应发工资:");
	scanf ("%d",&workers[i].WageTotal);
	printf ("发放月份:");
	scanf ("%d",&workers[i].PayMonth);
	printf ("水电费:");
	scanf ("%d",&workers[i].UtilityBill);
	printf ("税金:");
	scanf ("%d",&workers[i].Tax);
	printf ("备注:");
	scanf ("%s",workers[i].Notes);
	printf("设置密码(原密码保持不变):");
    scanf("%s", workers[i].Password);
	UpdateFile(); //更新文件中的内容
	printf("\t=======>信息修改成功!\n");
	system("pause");
}
//保存数据
void Reserve() 
{ 
    UpdateFile(); //更新文件中的内容
	printf("\t=====>程序在运行时已自动保存....\n");
	system("pause");
}
void Back() 
{
	printf("\t=====>按Enter键返回主菜单\n");
	system("pause");
}

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值