写在最前面:
1.本文代码在Dev-C++上经过测试。
2.代码中在开始和录入员工信息时设置了密码输入,但是没有具体的实现更多的功能,可以根据自身情况进行修改。
3.文中命名可能存在一点缺陷和问题。
一·程序功能描述
此员工工资管理系统主要可以实现以下功能:
- 信息管理人员可以根据工资表通过该系统录入员工的各项工资信息(职工工号,职工姓名,应发工资,税收,水电费等),把工资信息保存在文件中,并且及时进行信息插入,删除等操作更新文件
- 员工可以通过该系统查询到员工发放工资情况和具体金额
- 该系统还可以按照月份累计统计职工在某段时间发放工资的总金额,并有排序功能,按照工资卡号升序或者实发工资降序输出
二·程序功能结构图
以下是此工资信息管理系统的简易结构功能图和实现的函数图
三·数据结构分析
- 职工工资采用结构体数组进行统计等操作,信息种类过多,如果采用数组方式存储会过于复杂
- 结构体中编号采用字符数组形式存储,便于后面统计排序等
变量名 | 数据类型 | 备注说明 |
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");
}