⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gongzi.cpp

📁 工资管理
💻 CPP
📖 第 1 页 / 共 2 页
字号:
/*************************************************************************/
#include <stdio.h>                                         //标准输入输出
#include <stdlib.h>                                       //处理杂乱  
#include <windows.h>                                     //Sleep()                                          
#include <string.h>                                     //字符串操作  
#include <conio.h>                                     //系统输入输出
#include <time.h>                                     //时间相关
/**********************下面是对用到的全局常量声明*************************/
#define NAME 10                                     //职工职工姓名长度
#define PASSWORD "fangfangff"                      //系统登陆密码
int shuru=0;                                      //全局变量标记当前录入职工个数
FILE *fp;                                        //声明一个文件指针
/**************************结构体定义************************************/
struct person{                                 //学生成绩结构
    char name[NAME];                          //职工职工姓名
    int   num;                               //职工编号
    float paid;                             //职工基本工资
    float discount;                        //扣款
    float extra;                          //奖金
    float realpaid;                      //实发工资
    float sum;                          //总工资
}*pp;                                  //声明一个结构指针
/**********************下面是对用到的函数声明*****************************/
void Password();                       //密码验证函数
void Save(struct person per[]);        //保存信息函数
void Inputper(struct person per[]);    //录入信息函数
void Delper(struct person per[]);      //删除信息函数
void Modifyper(struct person per[]);   //修改信息函数
void Findper(struct person per[]);     //查找信息函数
void Insertper(struct person per[]);   //插入信息函数
void Sortper(struct person per[]);     //排 序  函 数
void Listper(struct person per[]);     //显示职工信息
void Menu();
void Help();
//**************************程序主体**************************************
void main()                              //程序入口
{
    system("color 012");               //设置当前窗口的背景色和前景色   
	Password();                       //调用密码验函数
	Help();                          //调用系统信息函数
	Menu();                         //调用菜单函数
}

void Inputper(struct person per[])                         //录入职工工资函数原形
{    
    pp=per;                                               //指针指向结构 
    system("cls");                                       //清屏
    int i;
    printf("请问你要输入几个职工的信息:");
    scanf("%d",&shuru);
    if((fp=fopen("inputdata","wb+"))==NULL)            //当前目录下是否存在INPUTDATA文件
    {                                                 //"wb+":读写打开或建立一个二进制文件,允许读和写
        printf("Cannot open file strike any key exit!");
        getch();
        exit(1);
    }
    fprintf(fp,"职工编号    职工姓名   基本工资    扣款    奖金    实发工作    总工资\n");

    for(i=0;i<shuru;i++)
    {
            printf("输入职工编号:");                       //输入职工编号
            fflush(stdin);
            scanf("%d",&per[i].num);
            printf("输入职工姓名:");                       //输入职工姓名
            fflush(stdin);
            gets(per[i].name);                                            
            printf("输入职工的工资信息\n");
            printf("——————————————————————————————\n");
            printf("\n基本工资: ");                       //基本工资
            fflush(stdin);
            scanf("%f",&per[i].paid);                    
            printf("\n扣款: ");                           //扣款
            fflush(stdin);
            scanf("%f",&per[i].discount);            
            printf("\n奖金: ");                           //奖金
            fflush(stdin);
            scanf("%f",&per[i].extra);
            printf("——————————————————————————————\n");
            per[i].sum=per[i].paid-per[i].discount+per[i].extra;
            per[i].realpaid=per[i].paid-per[i].discount;
            fprintf(fp," %6d    %8s   %7.1f\t  %5.1f\t  %5.1f\t  %5.1f\t  %5.1f\t\n",per[i].num,per[i].name,per[i].paid,per[i].discount,per[i].extra,per[i].realpaid,per[i].sum);
    }
}
void Modifyper(struct person per[])
{
    pp=per;
    int id,i=0;                                           //id为接收用户输入的职工编号
    if((fp=fopen("modifydata.sys","wb+"))==NULL)            
    {
        printf("Cannot open file strike any key exit!");
        getch();
        exit(1);
    }
    fprintf(fp,"职工编号    职工姓名    基本工资   扣款    奖金    实发工资    总工资\n");
    printf("\n请输入你要修改的职工的编号:");
    scanf("%d",&id);
    Sleep(500);
    printf("\n\t查找相关数据.");
        for(i=0;i<=15;i++)
            {
                Sleep(250);
                printf(".");
            }
    for(i=0;i<shuru;i++)
    {
        if(per[i].num==id)             //如果找到了就执行下面语句 ,找不到直接回主界面
            {
                printf("\n输入新职工编号:");                      //输入职工编号
                fflush(stdin);
                scanf("%d",&per[i].num);
                printf("\n输入新职工姓名:");                      //输入职工姓名
                fflush(stdin);
                gets(per[i].name);                                            
                printf("输入职工的工资信息\n");
                printf("——————————————————————————————\n");
                printf("\n基本工资: ");
                scanf("%f",&per[i].paid);
                fflush(stdin);
                printf("\n扣款: ");
                scanf("%f",&per[i].discount);
                fflush(stdin);
                printf("\n 奖金: ");
                scanf("%f",&per[i].extra);
                printf("——————————————————————————————\n");
                per[i].sum=per[i].paid-per[i].discount+per[i].extra;
				per[i].realpaid=per[i].paid-per[i].discount;
                fprintf(fp," %6d   %8s   %7.1f\t  %5.1f\t  %5.1f\t  %5.1f\t  %6.1f\t\n",per[i].num,per[i].name,per[i].paid,per[i].discount,per[i].extra,per[i].realpaid,per[i].sum);
            }
    }
}
void Findper(struct person per[])                          //查询职工工资信息
{
    int i=0,id;                                             //循环变量和用于接收职工编号    
        printf("请输入你要查询的职工编号:");
        scanf("%d",&id);
        for(i=0;i<shuru;i++)
            {
            if (per[i].num==id)                             //如果找到你查询的数据就执行下面语句                                            
                {                                            //如果找不到。直接回程序主界面
                    per[i].sum=per[i].paid-per[i].discount+per[i].extra;
					per[i].realpaid=per[i].paid-per[i].discount;
                    printf("\n职工编号   职工姓名    基本工资    扣款    奖金   实发工资    总工资 \n");
                    printf("\n%6d   %8s   %7.1f\t %5.1f\t  %5.1f\t %5.1f\t %6.1f\t \n\n",per[i].num,per[i].name,per[i].paid,per[i].discount,per[i].extra,per[i].realpaid,per[i].sum);
                    system("pause");
                }
            }        
}
void Insertper(struct person per[])                        //插入职工工资信息
{
    int flag=1;
    pp=per;
    int i,id;
    if((fp=fopen("insertdata.sys","wb+"))==NULL)            
    {
        printf("Cannot open file strike any key exit!");
        getch();
        exit(1);
    }
    fprintf(fp,"职工编号   职工姓名   基本工资   扣款    奖金    实发工资    总工资\n");
    printf("输入你插入的职工编号:");
    scanf("%d",&id);
    for(i=0;i<shuru;i++)
    {
        if(per[i].num==id)                     //判断职工编号信息否存在?
        {
            printf("职工编号信息已经存在!\n");
            flag=0;
            getch();
            break;
        }
    }
    if (flag!=0)
    {
        shuru++;                            //插入一个,原来的总数增加1   
        printf("请确认输入要插入学生的职工编号:");
        scanf("%d",&per[shuru-1].num);        //如果不存在..那么就把插入的信息放到结构数组最后
        printf("输入职工姓名:");                                    
        fflush(stdin);
        gets(per[shuru-1].name);                                            
        printf("输入学生3科成绩\n");
        printf("——————————————————————————————\n");
        printf("\n基本工资: ");
        fflush(stdin);
        scanf("%f",&per[shuru-1].paid);
        printf("\n扣款: ");
        fflush(stdin);
        scanf("%f",&per[shuru-1].discount);
        printf("\n奖金: ");
        fflush(stdin);
        scanf("%f",&per[shuru-1].extra);
        printf("——————————————————————————————\n");
        per[i].sum=per[i].paid-per[i].discount+per[i].extra;
		per[i].realpaid=per[i].paid-per[i].discount;
        fprintf(fp," %6d   %8s   %7.1f\t  %5.1f\t  %5.1f\t  %5.1f\t  %6.1f\t\n",per[shuru-1].num,per[shuru-1].name,per[shuru-1].paid,per[shuru-1].discount,per[shuru-1].extra,per[i].realpaid,per[shuru-1].sum);
        Sleep(500);
        printf("插入数据成功!\n");
        getch();
    }
}
void Listper(struct person per[])                        //浏览所有职工工资
{
    int i=0;
    for(i=0;i<shuru;i++)
    {
        per[i].sum=per[i].paid-per[i].discount+per[i].extra;
        per[i].realpaid=per[i].paid-per[i].discount;
    }
    
    printf("\n职工编号    职工姓名    基本工资   扣款    奖金    实发工资   总工资\n");
    for(i=0;i<shuru;i++)
    {
        printf("\n %6d   %8s   %7.1f\t %5.1f\t  %5.1f\t  %5.1f\t %6.1f\t",per[i].num,per[i].name,per[i].paid,per[i].discount,per[i].extra,per[i].realpaid, per[i].sum);    
    }
    getch();
}
void Delper(struct person per[])                       //删除职工信息函数
{
    pp=per;
    struct person temp;
    int delnum;
    char ask;
    int i,j;
    if((fp=fopen("Deldata.sys","wb+"))==NULL)            
    {
        printf("Cannot open file strike any key exit!");
        getch();
        exit(1);
    }
    fprintf(fp,"职工编号    职工姓名   基本工资   扣款    奖金   实发工资    总工资\n");
    system("cls");
    printf("\n\n\t请输入你要删除的职工的职工编号:");
    fflush(stdin);
    scanf("%d",&delnum);    
    printf("\n\t是否确认删除职工%d的信息(y/n)",delnum);
    fflush(stdin);
    ask = getchar();
    if(ask != 'n')
    {
        for(i=0;i<shuru;i++)
        {
            if(per[i].num == delnum)
                break;
        }
        if(i > shuru)
            printf("\n\t没有你要删除的职工!\n");
        else
        {
            for(j=i;j<shuru;j++)
            {
                temp = per[j];
                per[j] = per[j+1];
                per[j+1] = temp;
            }
            shuru--;                                      //删掉一个职工信息后职工总数相应-1
            system("cls");
            printf("\n\n删除成功!\n");                

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -