// 西安邮电学院工资管理系统
//在Dev C++ 4.9 和Vc++6.0下编译通过
//
#include "stdafx.h" //在dev c++中请删除
#include <stdio.h>
#include <stdlib.h>
struct GZ
{
//如工资卡号、姓名、性别、部门、技术职称、技术职称编号、电话等。
//基本工资、应发工资、扣款、税金、实发工资等。
int CardNum;
char Name[8];
char Sex[2];
char Part[30];
char ZhiCheng[10];
int ZhiChengNum;
char Tel[12];
int Age;
int JBgz;
int YFgz;
int Kgz;
int SFgz;
};
struct GZ Data[100];//结构体数组
int index[100];//索引
int MaxP=0;//总记录数
int main()
{
int input();
int read();
int out();
int outindex();
int del();
int outn(int i) ;
int save();
int out1();
int out2();
int outm();
int tongji();
int edit();
int charu();
double shui();
char c;
while(c!='0')
{
printf("\n\n\n\n\n\n\n\n\n\n\n");
printf(" ================================\n");
printf(" 西安邮电学院工资管理系统\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(" 请输入:");
c=getchar();
switch (c)
{
case '0':break;
case '1':input();break;
case '2':save();break ;
case '7':del(); break;
case '9':read(); break;
case '5':outm();break;
case '8':edit();break;
case '6':charu();break;
case '4':outindex();break;
}
}
return 0;
}
int input()
{
int i=MaxP;
char c;
printf("\n\n");
printf("================\n");
printf(" 输入数据\n");
printf("================\n\n\n");
//如工资卡号、姓名、性别、部门、技术职称、技术职称编号、电话等。
//基本工资、应发工资、扣款、税金、实发工资等。
printf("=============================================\n");
printf("工资卡号:");
scanf("%d",&Data[i].CardNum);
printf("姓名:");
scanf("%s",&Data[i].Name);
printf("性别(W/M):");
scanf("%s",&Data[i].Sex);
printf("年龄:");
scanf("%d",&Data[i].Age);
printf("部门:");
scanf("%s",&Data[i].Part);
printf("技术职称:");
scanf("%s",&Data[i].ZhiCheng);
printf("职称编号:");
scanf("%d",&Data[i].ZhiChengNum);
printf("电话:");
scanf("%s",&Data[i].Tel);
printf("基本工资:");
scanf("%d",&Data[i].JBgz);
printf("扣款:");
scanf("%d",&Data[i].Kgz);
/*
printf("=============================================\n");
printf("工资卡号:%d\n",Data[i].CardNum);
printf("姓名:%s\n",Data[i].Name);
printf("性别(W/M):%s\n",Data[i].Sex);
printf("年龄:%d\n",Data[i].Age);
printf("部门:%s\n",Data[i].Part);
printf("技术职称:%s\n",Data[i].ZhiCheng);
printf("职称编号:%d\n",Data[i].ZhiChengNum);
printf("电话:%s\n",Data[i].Tel);
printf("基本工资:%d\n",Data[i].JBgz);
printf("扣款:%d\n",Data[i].Kgz);
*/
MaxP++;
index[i+1]=i+1;
printf("=============================================\n");
++i;
return 0;
}
int save()
{
FILE *steam;
int i,j;
char filename[50];
printf("输入文件目录及文件名:");
scanf("%s",&filename);
steam=fopen(filename,"w+");
fwrite(&MaxP,2,1,steam);
for(j=0;j<MaxP;j++)
{
i=index[j];
if(i==-1)continue;
fwrite(&Data[i],sizeof(struct GZ),1,steam);
}
fclose(steam);
return 0;
}
int read()
{
FILE *steam;
int i;
char filename[50];
printf("输入文件目录及文件名:");
scanf("%s",&filename);
steam=fopen(filename,"r+");
fread(&MaxP,2,1,steam);
for(i=0;i<MaxP;i++)
{
index[i]=i;
fread(&Data[i],sizeof(struct GZ),1,steam);
}
fclose(steam);
return 0;
}
int out()
{
int j;
int i;
for(j=0;j<MaxP;j++)
{
i=index[j];
printf("=============================================\n");
printf("工资卡号:%d\n",Data[i].CardNum);
printf("姓名:%s\n",Data[i].Name);
printf("性别(W/M):%s\n",Data[i].Sex);
printf("年龄:%d\n",Data[i].Age);
printf("部门:%s\n",Data[i].Part);
printf("技术职称:%s\n",Data[i].ZhiCheng);
printf("职称编号:%d\n",Data[i].ZhiChengNum);
printf("电话:%s\n",Data[i].Tel);
printf("基本工资:%d\n",Data[i].JBgz);
printf("扣款:%d\n",Data[i].Kgz);
printf("=============================================\n");
}
system("PAUSE");
return 0;
}
int outn(int i)
{
printf("=============================================\n");
printf("工资卡号:%d\n",Data[i].CardNum);
printf("姓名:%s\n",Data[i].Name);
printf("性别(W/M):%s\n",Data[i].Sex);
printf("年龄:%d\n",Data[i].Age);
printf("部门:%s\n",Data[i].Part);
printf("技术职称:%s\n",Data[i].ZhiCheng);
printf("职称编号:%d\n",Data[i].ZhiChengNum);
printf("电话:%s\n",Data[i].Tel);
printf("基本工资:%d\n",Data[i].JBgz);
printf("扣款:%d\n",Data[i].Kgz);
printf("=============================================\n");
return 0;
}
int out1()
{
int j;
int i;
printf("\n\n\ 教师基本情况表\n");
printf("=============================================================================\n");
printf("序号 工资卡号 姓名 性别 年龄 部门 技术职称 职称编号 电话\n");
printf("=============================================================================\n");
for(j=0;j<MaxP;j++)
{
i=index[j];
if(i==-1)continue;
printf("%4d%8d%8s %2s %2d %16s%10s %5d %10s\n",j+1,Data[i].CardNum,Data[i].Name,Data[i].Sex,Data[i].Age,Data[i].Part,Data[i].ZhiCheng,Data[i].ZhiChengNum,Data[i].Tel);
}
printf("=============================================================================\n");
system("PAUSE");
}
double shui(int num)
{
/* 税金计算方法为:
应发工资<1000元,税金=0;
1000<应发工资<2000元, 税金=(应发工资-1000)?5%
应发工资>2000元, 税金=(应发工资-2000)?10%
*/
if(num<1000) return 0;
else if(num<2000) return ((num-1000)*0.05);
else return ((num-2000)*0.1);
}
int out2()
{
int j;
int yingfagongzi,shuijin,shifagongzi;
int i;
printf("\n\n\ 全体教师工资信息表\n");
printf("=============================================================================\n");
printf("序号 工资卡号 姓名 基本工资 应发工资 扣除 税金 实发工资\n");
printf("=============================================================================\n");
for(j=0;j<MaxP;j++)
{
i=index[j];
if(i==-1)continue;
shuijin=shui(Data[i].JBgz);
yingfagongzi= Data[i].JBgz-shui(Data[i].JBgz);
shifagongzi=Data[i].JBgz-shuijin-Data[i].Kgz;
printf("%4d%8d%8s %5d %5d %5d %5d %5d\n",j+1,Data[i].CardNum,Data[i].Name,Data[i].JBgz,yingfagongzi,Data[i].Kgz,shuijin,shifagongzi);
}
printf("=============================================================================\n");
system("PAUSE");
}
int outm()
{
char c;
while(c!='0')
{
c=getchar();
printf("\n ============================\n");
printf(" [1]----教师基本情况表\n");
printf(" [2]----全体教师工资信息表\n");
printf(" [0]--------返回\n");
printf(" ==================