#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define NUM 1000
void enter();
void search_num();
void dele_num();
void modi_num();
void browse();
void count();
void load();
void add();
void menu();
int n; //员工的总数
struct emploee //职工数据结构
{
char no[];
char name[];
char sex[];
int age;
float wage1; //员工的基本工资
float wage2; //员工的职务工资
float funds; //员工的住房公积金
float WATERfee; //员工的水电费
float TAXfee; //员工的个人所得税
float wage3; //员工的实发工资
}emp[NUM],newemp;
void main()
{
menu();
} void menu()//主界面
{ int n,w1; do
{ system("cls");
printf("************* 职工工资管理系统 **************\n");
printf("* 1-----输入职工信息 *\n");
printf("* 2-----查询职工信息 *\n");
printf("* 3-----根据职工ID号修改 *\n");
printf("* 4-----根据职工ID号删除 *\n");
printf("* 5-----据工资统计并浏览 *\n");
printf("* 6-----从文件载入信息 *\n");
printf("* 7-----浏览全部职工 *\n");
printf("* 8-----追加职工信息 *\n");
printf("* 9-----退出程序 *\n");
printf("***************************************************\n");
printf(" 输入您的选择(1-9):[ ]\b\b");
scanf("%d",&n);
if(n<||n>) //对选择的数字作判断
{
w1=;
printf("your choice is not between 1 and 9,Please input again:");
getchar();
}
else w1=;
}
while(w1==);
switch(n)
{ case :enter(); break;
case :search_num(); break;
case :modi_num(); break;
case :dele_num(); break;
case :count (); break;
case :load(); break; //保存模块
case :browse(); break; //加载模块
case :add(); break;
case :printf("\n×××××××谢谢,欢迎下次光临!×××××××\n\n");
default:exit(); //退出系统,exit(0)函数功能是退出程序。
}
}
/*************************输入模块**********************/
void enter()
{
FILE *fp;
int n,i;
if ((fp=fopen("emp.txt","wb"))==NULL)
{ printf("不能建立emp文件\n");
exit();
}
printf("输入职工人数:");
scanf("%d",&n);
printf("输入格式:职工号 姓名 性别 年龄 基本工资 职务工资 公积金 水电费 税<Enter>\n");
for(i=;i<n;i++) /* 循环获取n个职工记录 */
{
printf("第%d个职工:",i+);
scanf("%s%s%s%d%f%f%f%f%f",emp[i].no,emp[i].name,emp[i].sex,&emp[i].age,
&emp[i].wage1,&emp[i].wage2,&emp[i].funds,&emp[i].WATERfee,&emp[i].TAXfee);
emp[i].wage3=emp[i].wage1+emp[i].wage2+emp[i].funds-emp[i].WATERfee-emp[i].TAXfee;
}
for(i=;i<n;i++) /*将n个职工记录写入文件*/
fwrite(&emp[i],sizeof(struct emploee),,fp);
fclose(fp);
}
/*************************统计模块**********************/
void count()
{
FILE *fp;
int n,num;
if((fp=fopen("emp.txt","rb"))==NULL)
{
printf("不能打开emp文件\n");
exit();
}
printf("请输入工资数:");
scanf("%d",&num);
printf("记录号 职工号 姓名 性别 年龄 基本工资 职务工资 公积金 水电费 税 实发工资\n");
for(n=;fread(&emp[n],sizeof(struct emploee),,fp)!=;n++)
if(emp[n].wage3>=num)
printf("%6d%6s%9s%4s%5d %.1f %.1f %.1f %.1f %.1f %.1f\n",n+,emp[n].no,emp[n].name,emp[n].sex, emp[n].age,emp[n].wage1,
emp[n].wage2,emp[n].funds,emp[n].WATERfee,emp[n].TAXfee,emp[n].wage3);
fclose(fp);
}
/********************删除模块*******************/ void dele_num()
{
FILE *fp;
int i,j,n;
char num[];
if((fp=fopen("emp.txt","rb"))==NULL)
{
printf("不能打开emp文件\n");
exit();
}
printf("删除前:\n");
printf("记录号 职工号 姓名 性别 年龄 基本工资 职务工资 公积金 水电费 税 实发工资\n");
for(n=;fread(&emp[n],sizeof(struct emploee),,fp);n++)
printf("%6d%6s%9s%4s%5d %.1f %.1f %.1f %.1f %.1f %.1f\n",n+,emp[n].no,emp[n].name,emp[n].sex, emp[n].age,emp[n].wage1,
emp[n].wage2,emp[n].funds,emp[n].WATERfee,emp[n].TAXfee,emp[n].wage3);/*n为emp文件中记录数*/
printf("要删除的职工号:");
scanf("%s",num);
for(i=;(strcmp(emp[i].no,num)!=&&i<n);i++)
if(i>=n)
{
printf("\t没有%s职工号的职工\n",num);
exit();
}
fclose(fp);
fp=fopen("emp.dat","w+");
if(n==) /*一个记录已经删除了*/
{
fclose(fp);
exit();
}
for(j=;j<i;j++)
fwrite(&emp[j],sizeof(struct emploee),,fp);
for(j=i+;j<n;j++)
fwrite(&emp[j],sizeof(struct emploee),,fp);
printf("删除后:\n");
fseek(fp,,SEEK_SET);
printf("记录号 职工号 姓名 性别 年龄 基本工资 职务工资 公积金 水电费 税 实发工资\n");
for(i=;fread(&emp[i],sizeof(struct emploee),,fp);i++)
printf("%6d%6s%9s%4s%5d% %.1f %.1f %.1f %.1f %.1f %.1f\n",i+,emp[i].no,emp[i].name,emp[i].sex, emp[i].age,emp[i].wage1,
emp[i].wage2,emp[i].funds,emp[i].WATERfee,emp[i].TAXfee,emp[i].wage3);
fclose(fp);
}
/********************修改模块*******************/
void modi_num()
{
FILE *fp;
int i,j;
char num[];
if((fp=fopen("emp.txt","rb+"))==NULL)
{
printf("不能 打开emp文件\n");
exit();
}
printf("要修改的职工号:");
scanf("%s",num);
for(i=;fread(&emp[i],sizeof(struct emploee),,fp);i++)
if(!strcmp(emp[i].no,num))break;
if(feof(fp))
{
printf("\t没有%s职工号的职工\n",num);
exit();
}
printf("记录号 职工号 姓名 性别 年龄 基本工资 职务工资 公积金 水电费 税 实发工资\n");
printf("%6d%6s%9s%4s%5d% %.1f %.1f %.1f %.1f %.1f %.1f\n",i+,emp[i].no,emp[i].name,emp[i].sex, emp[i].age,emp[i].wage1,
emp[i].wage2,emp[i].funds,emp[i].WATERfee,emp[i].TAXfee,emp[i].wage3);
printf("输入格式:职工号 姓名 性别 年龄 基本工资 职务工资 公积金 水电费 税 <Enter>\n");
printf("第%d个记录:",i+);
scanf("%s%s%s%d%f%f%f%f%f",newemp.no,newemp.name,newemp.sex,&newemp.age,
&newemp.wage1,&newemp.wage2,&newemp.funds,&newemp.WATERfee,&newemp.TAXfee);//获取新的职工记录
newemp.wage3=newemp.wage1+newemp.wage2+newemp.funds-newemp.WATERfee-newemp.TAXfee;
fseek(fp,-(long)sizeof(struct emploee),SEEK_CUR); //文件指针指向该修改的记录开头
fwrite(&newemp,sizeof(struct emploee),,fp); //用newemp覆盖当前记录
printf(" 修改后:\n");
fseek(fp,,SEEK_SET); //显示修改后的文件数据
printf("记录号 职工号 姓名 性别 年龄 基本工资 职务工资 公积金 水电费 税 实发工资\n");
for(i=;fread(&emp[i],sizeof(struct emploee),,fp)!=;i++)
printf("%6d%6s%9s%4s%5d %.1f %.1f %.1f %.1f %.1f %.1f\n",i+,emp[i].no,emp[i].name,emp[i].sex, emp[i].age,emp[i].wage1,
emp[i].wage2,emp[i].funds,emp[i].WATERfee,emp[i].TAXfee,emp[i].wage3);
fclose(fp);
}
/*************************查询模块***********************/
void search_num()
{
FILE *fp;
int i;
char num[];
if((fp=fopen("emp.txt","rb"))==NULL)
{
printf("不能打开emp文件\n");
exit();
}
printf("要查询的职工号:");
scanf("%s",num);
for(i=;fread(&emp[i],sizeof(struct emploee),,fp);i++)
if(!strcmp(emp[i].no,num)) break;
if(feof(fp))
{
printf("\t查无此人\n");
exit();
}
printf("记录号 职工号 姓名 性别 年龄 基本工资 职务工资 公积金 水电费 税 实发工资\n");
printf("%6d%6s%9s%4s%5d %.1f %.1f %.1f %.1f %.1f %.1f\n",i+,emp[i].no,emp[i].name,emp[i].sex, emp[i].age,emp[i].wage1,
emp[i].wage2,emp[i].funds,emp[i].WATERfee,emp[i].TAXfee,emp[i].wage3);
fclose(fp);
}
/*******************浏览模块********************/
void browse()
{ int i;
FILE *fp;
if((fp=fopen("emp.txt","r"))==NULL)
{
printf("不能打开emp文件\n");
exit();
}
printf("记录号 职工号 姓名 性别 年龄 基本工资 职务工资 公积金 水电费 税 实发工资\n");
for(i=;fread(&emp[i],sizeof(struct emploee),,fp)!=;i++)
{
printf("%6d%6s%9s%4s%5d %.1f %.1f %.1f %.1f %.1f %.1f\n",i+,emp[i].no,emp[i].name,emp[i].sex, emp[i].age,emp[i].wage1,
emp[i].wage2,emp[i].funds,emp[i].WATERfee,emp[i].TAXfee,emp[i].wage3);
}
fclose(fp);
}
/******************追加模块*******************/
void add()
{
FILE *fp;
int n,i,j;
if((fp=fopen("emp.txt","ab+"))==NULL)
{
printf("不能打开emp文件\n");
exit();
}
printf("要追加的职工人数:");
scanf("%d",&n);
for(i=;i<n;i++)
{
printf("输入格式:职工号 姓名 性别 年龄 基本工资 职务工资 公积金 水电费 税 <Enter>\n");
printf("追加记录:\n");
scanf("%s%s%s%d%f%f%f%f%f",newemp.no,newemp.name,newemp.sex,&newemp.age,
&newemp.wage1,&newemp.wage2,&newemp.funds,&newemp.WATERfee,&newemp.TAXfee);
newemp.wage3=newemp.wage1+newemp.wage2+newemp.funds-newemp.WATERfee-newemp.TAXfee;//获取一个新的职工记录
fwrite(&newemp,sizeof(struct emploee),,fp); //将该职工记录写入文件
}
fclose(fp);
} /*************************载入模块**********************/
void load() //加载记录或可以计算记录个数的函数
{
FILE *fp;
int i,w;
w=;
system( "cls" );
if((fp=fopen("emp.txt","rb"))==NULL) //以输出打开方式,在此前的记录被覆盖
{
printf("\nCannot open file\n");
w=;
return ;
}
n=;
for(i=;!feof(fp);i++)
{
fread(&emp[i],sizeof(struct emploee),,fp);
n++;
}
n=n-;
fclose(fp);
if(w==)
{
printf("Load file ok!");
getchar();
getchar();
menu();
}
}

职工工资管理系统 --C语言的更多相关文章

  1. C语言职工信息管理系统

    */ * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:text.cpp * 作者:常轩 * 微信公众号:Worldhe ...

  2. Python作业工资管理系统(第三周)

    作业内容: 实现效果: 从info.txt文件中读取员工及其工资信息,最后将修改或增加的员工工资信息也写入原info.txt文件. 效果演示: 1. 查询员工工资 2. 修改员工工资 3. 增加新员工 ...

  3. 4_python之路之模拟工资管理系统

    python之路之模拟工资管理系统 1.程序说明:Readme.txt 1.程序文件:salary_management.py info.txt 2.程序文件说明:salary_management. ...

  4. 2019年7月16日 abp(net core)+easyui+efcore实现仓储管理系统——多语言(十)

    abp(net core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统——ABP总体介绍(一) abp(net core)+ ...

  5. 通用权限管理系统多语言开发接口 - java,php 调用接口程序,多业务子系统集成

    1:公司里有多个业务系统,需要进行统一重构,有PHP的.有Java的.有.NET的,甚至还有delphi的. 2:公司里有多个数据库系统,有mysql的.有sqlserver的.还有oracel的,甚 ...

  6. 实验教学管理系统 c语言程序代写源码下载

    问题描述:实验室基本业务活动包括:实验室.班级信息录入.查询与删除:实验室预定等.试设计一个实验教学管理系统,将上述业务活动借助计算机系统完成. 基本要求: 1.必须存储的信息 (1)实验室信息:编号 ...

  7. 学生信息管理系统(c语言)

    ①注意: 程序中使用了sleep()函数.system()函数 关于 sleep() 函数 sleep() 函数的头文件和用法会因环境的不同而有所不同. 具体见-sleep()函数功能及用法 关于sy ...

  8. 图书管理系统 (c语言实现) (全部代码)

    直接上代码不解释 #include <stdio.h> #include <stdlib.h> #include <string.h> #define AVAILA ...

  9. 通用权限管理系统多语言开发标准接口 - java,php 调用标准接口程序参考

    1:公司里有多个业务系统,需要进行统一重构,有PHP的.有Java的.有.NET的,甚至还有 Delphi 的. 2:公司里有多个数据库系统,有mysql的.有sqlserver的.还有oracel的 ...

随机推荐

  1. [OC] 图片平铺

    Tip: self.bgImg.image = [self.bgImg.image resizableImageWithCapInsets:UIEdgeInsetsMake(100, 40, 40, ...

  2. 数据库:django ORM如何处理N+1查询

    数据库N+1查询是个常见的问题,简单描述场景如下 基本场景 class Category(models.Model): name = models.CharField(max_length=30) c ...

  3. 详解 $_SERVER 函数中QUERY_STRING和REQUEST_URI区别(转)

    对于php$_SERVER这个全局变量 ,里面有很多的参数,慢慢的熟悉 1,http://localhost/aaa/ (打开aaa中的index.php)结果:$_SERVER['QUERY_STR ...

  4. 16个基本颜色关键字 Basic color keywords

    16个基本颜色关键字 Basic color keywords Color Color Name HEX RGB   black #000000 0,0,0   silver #C0C0C0 192, ...

  5. setTimeout和setInterval的区别以及如何写出效率高的倒计时

    1.setTimeout和setInterval都属于js中的定时器,可以规定延迟时间再执行某个操作,不同的是setTimeout在规定时间后执行完某个操作就停止了,而setInterval则可以一直 ...

  6. build.fxbuild打不开 Failed to create the part's controls

    Failed to create the part's controls 以文本形式打开之后,发现编码的地方不是常用编码 将之修改为GBK 然后就可以正常打开了 最后把eclipse中的编码统一设置为 ...

  7. Android6.0之来电转接号码显示修改

    Android6.0之来电转接号码显示修改 手机来电转接界面是在,点开Dialer-搜索框右边的三个点-设置-通话账户(要先插卡)-中国移动或者中国联通--来电转接--第一行,显示始终转接 将所有来电 ...

  8. java中的数据结构(集合|容器)

    对java中的数据结构做一个小小的个人总结,虽然还没有到研究透彻jdk源码的地步.首先.java中为何需要集合的出现?什么需求导致.我想对于面向对象来说,对象适用于描述任何事物,所以为了方便对于对象的 ...

  9. message from server: "Host 'XXX' is not allowed to connect to this MySQL server

    Access denied for user 'root'@'XXXXX' (using password: YES) mysql命令不正确造成: grant all privileges on *. ...

  10. AES,RSA对称加密和非对称加密

    1.关于RSA加密机制:是非对称加密方式,两个钥,公钥和私钥,公钥用于加密数据,可以分享给其他用户,私钥可以用于解密用公钥加密的数据,关于安全问题是公钥泄露不会影响安全问题,公钥与私钥是一一对应的关系 ...