首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >#C语言#简单的员工工资管理系统

#C语言#简单的员工工资管理系统

作者头像
Alone88
发布2019-10-21 17:00:53
2.6K1
发布2019-10-21 17:00:53
举报
文章被收录于专栏:Alone88Alone88
//员工工资管理系统
/*
一:添加信息
1.员工ID:id
2.员工姓名:name
3.部门:section
4.基本工资:basepay
5.奖金:bonus
6.扣除工资:deduct
7.实发工资:payroll

二:删除信息
三:修改信息
四:查询信息
五:保存信息
六:退出

//制作人:LongPeng
//联系方式:QQ:1830934534
 */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct{
    char id[10];
    char name[20];
    char section[10];
    char basepay[20];
    char bonus[20];
    char deduct[20];
    char payroll[20];

}Person;
Person per[100];//定义可以输入多少个数据
int meun_select(){
    char c;
    do{
    system("cls");
    printf("\t\t****员工工资管理系统****\n");
    printf("\t\t ┌───────┐\n");
    printf("\t\t │ 1.添加信息   │\n");
    printf("\t\t │ 2.显示信息   │\n");
    printf("\t\t │ 3.删除信息   │\n");
    printf("\t\t │ 4.查询信息   │\n");
    printf("\t\t │ 5.修改信息   │\n");
    printf("\t\t │ 6.保存信息   │\n");
    printf("\t\t │ 0.退出程序   │\n");
    printf("\t\t └───────┘\n");
    printf("\t\t 请您选择(0-6):");
    c=getchar();
    }while(c>'6' || c<'0');
    return (c-'0');

}//菜单

int Input(Person per[],int n){
    int i=0;
    char sign,x[10];
    while(sign!='n' && sign!='N'){
        printf("\t员工id:");
        scanf("%s",per[n+i].id);
        printf("\t员工姓名:");
        scanf("%s",per[n+i].name);
        printf("\t部门:");
        scanf("%s",per[n+i].section);
        printf("\t基本工资:");
        scanf("%s",per[n+i].basepay);
        printf("\t奖金:");
        scanf("%s",per[n+i].bonus);
        printf("\t扣除工资:");
        scanf("%s",per[n+i].deduct);
        printf("\t实发工资:");
        scanf("%s",per[n+i].payroll);
        gets(x);
        printf("\t是否继续添加?(Y/n)");
        scanf("\t%c",&sign);
        i++;
    }
return(n+i);
}//添加信息

void  show(Person per[],int n){
    int i;
    printf("----------------------------------------------------------------------\n");
    printf("员工id   员工姓名    部门    基本工资    奖金   扣除工资   实发工资\n");
    printf("----------------------------------------------------------------------\n");
    for(i=1;i<n+1;i++){
    printf("%4s %8s %10s %8s %9s %9s %9s\n",per[i-1].id,per[i-1].name,per[i-1].section,per[i-1].basepay,per[i-1].bonus,per[i-1].deduct,per[i-1].payroll);

    /*printf("%s",per[i-1].id);//员工id
    printf("%s",per[i-1].name);//员工姓名
    printf("%s",per[i-1].section);//部门
    printf("%s",per[i-1].basepay);//基本工资
    printf("%s",per[i-1].bonus);//奖金
    printf("%s",per[i-1].deduct);//扣除工资
    printf("%s",per[i-1].payroll);//实发工资*/
    if(i>1&&i%10==0){
                printf("\t-----------------------------------\n");

                  printf("\t");
                  system("pause");
                  printf("\t-----------------------------------\n");

    }
    }
    printf("----------------------------------------------------------------------\n");
     system("pause");

}//显示工资

int del(Person per[],int n){
    char q[20];
    int i=0,j;
    int m;
      printf("\t\t请选择删除方式:\n");
    printf("\t\t┌───────┐\n");
    printf("\t\t│1---员工编号  │\n");
    printf("\t\t│2---员工姓名  │\n");
    printf("\t\t│3---返回      │\n");
    printf("\t\t└───────┘\t\n");
    printf("请选择(0-3):");
    scanf("%d",&m);
    if(m!=1&&m!=2&&m!=3){
        printf("\t\t输入错误,请重新输入:");
        scanf("%d",&m);
    }
    if(m==1){
            printf("\t请输入要删除员工的编号:");
    scanf("%s",q);
    while(strcmp(per[i].id,q)!=0&&i<n)i++;
    if(i==n){
        printf("\t抱歉,没有此人\n");
        return(i);
    }
    for(j=i;j<n-1;j++){
        strcpy(per[j].id,per[j+1].id);//替换成空id
        strcpy(per[j].name,per[j+1].name);//替换成空name
        strcpy(per[j].section,per[j+1].section);//替换成空section
        strcpy(per[j].basepay,per[j+1].basepay);//替换基本成空gbasepay
        strcpy(per[j].bonus,per[j+1].bonus);//替换成空年终奖
        strcpy(per[j].deduct,per[j+1].deduct);//替换成空扣工资
        strcpy(per[j].payroll,per[j+1].payroll);//替换成空实发工资
    }
        printf("\t\t\t删除成功!\n");
        return(n-1);
    }
    if(m==2){
    printf("\t请输入要删除员工的姓名:");
    scanf("%s",q);
    while(strcmp(per[i].name,q)!=0&&i<n)i++;
    if(i==n){
        printf("\t抱歉,没有此人\n");
        return(i);
    }
    for(j=i;j<n-1;j++){
        strcpy(per[j].id,per[j+1].id);//替换成空id
        strcpy(per[j].name,per[j+1].name);//替换成空name
        strcpy(per[j].section,per[j+1].section);//替换成空section
        strcpy(per[j].basepay,per[j+1].basepay);//替换基本成空gbasepay
        strcpy(per[j].bonus,per[j+1].bonus);//替换成空年终奖
        strcpy(per[j].deduct,per[j+1].deduct);//替换成空扣工资
        strcpy(per[j].payroll,per[j+1].payroll);//替换成空实发工资
    }
        printf("\t\t\t删除成功!\n");
        return(n-1);
    }//如果等于2则通过姓名查询方式删除
}
void query(Person per[],int n){
    char q[20];
    int k;
    int i=0;
    printf("\t\t请选择查询方式:\n");
    printf("\t\t┌───────┐\n");
    printf("\t\t│1---员工编号  │\n");
    printf("\t\t│2---员工姓名  │\n");
    printf("\t\t│3---返回      │\n");
    printf("\t\t└───────┘\t\n");
    printf("请选择(0-3):");
    scanf("%d",&k);
    if(k!=1 && k!=1 &&k!=2 && k!=3){
        printf("输入错误请重新输入:");
        scanf("%d",&k);
    }
    if(k==1){
        printf("\t请输入你要查询的员工编号:");
        scanf("\t%s",q);
        while(strcmp(per[i].id,q)!=0 && i<n)i++;//匹配是否相同ID
        if(i==n){
            printf("员工信息中没有此人\n");
            return ;
        }else{
            printf("----------------------------------------------------------------------\n");
            printf("员工id 员工姓名 部门 基本工资 奖金 扣除工资 实发工资\n");
            printf("----------------------------------------------------------------------\n");
            printf("%s",per[i].id);//员工id
            printf("\t%s",per[i].name);//员工姓名
            printf("\t%s",per[i].section);//部门
            printf("\t%s",per[i].basepay);//基本工资
            printf("\t%s",per[i].bonus);//奖金
            printf("\t%s",per[i].deduct);//扣除工资
            printf("\t%s\n",per[i].payroll);//实发工资
        }

    }//如果输入k等于1则使用编号查询,strcmp比较两个字符是否相同
    if(k==2){
               printf("\t请输入你要查询的员工姓名:");
        scanf("\t%s",q);
        while(strcmp(per[i].name,q)!=0 && i<n)i++;//匹配是否相同姓名
        if(i==n){
            printf("员工信息中没有此人\n");
            return ;
        }else{
            printf("----------------------------------------------------------------------\n");
            printf("员工id 员工姓名 部门 基本工资  奖金  扣除工资 实发工资\n");
            printf("----------------------------------------------------------------------\n");
            printf("%s",per[i].id);//员工id
            printf("\t%s",per[i].name);//员工姓名
            printf("\t%s",per[i].section);//部门
            printf("\t%s",per[i].basepay);//基本工资
            printf("\t%s",per[i].bonus);//年终奖
            printf("\t%s",per[i].deduct);//扣除工资
            printf("\t%s\n",per[i].payroll);//实发工资
        }
    }//如果输入k等于2则姓名编号查询
}
void change(Person per[],int n){
    char q[20];
    int i=0;
    printf("请输入您要修改的员工ID:");
    scanf("%s",q);
    while(strcmp(per[i].id,q)!=0&&i<n )i++;//匹配是否相同ID,strcmp两个字符串相比较,如果匹配则可以重新录入下标相同的数组信息
    if(i==n){
        printf("员工信息中没有此人\n");
        return;
        }
       printf("\t员工id:");
        scanf("%s",per[i].id);
        printf("\t员工姓名:");
        scanf("%s",per[i].name);
        printf("\t部门:");
        scanf("%s",per[i].section);
        printf("\t基本工资:");
        scanf("%s",per[i].basepay);
        printf("\t 奖金:");
        scanf("%s",per[i].bonus);
        printf("\t扣除工资:");
        scanf("%s",per[i].deduct);
        printf("\t实发工资:");
        scanf("%s",per[i].payroll);
        printf("\t\t修改成功");
}
void save(Person per[],int n){
    FILE *fp;
    int i=0;
    int m;
    char filename[20];
    char filenameHtml[10]={".html"};//保存html文件名
    char filenameTxt[10]={".txt"};//保存txt文件
    printf("\t\t┌───────┐\n");
    printf("\t\t│1---Html保存  │\n");
    printf("\t\t│2---Txt保存   │\n");
    printf("\t\t└───────┘\t\n");

    printf("请选择保存方式(0-2)(推荐Html方式):");
    //scanf("%s",filename);
    scanf("%d",&m);
    if(m!=1&&m!=2){
        printf("\t输入错误,请重新输入:");
        scanf("%d",&m);}
    if(m==1){
        printf("\t已选择Html方式保存\n");
        printf("\t\t请输入文件名:");
        scanf("%s",filename);
        if(!(fp=fopen(strcat(filename,filenameHtml),"w+"))){
        printf("\t文件保存失败\n");
        system("pause");
        return;
    }//strcat合并字符串
    fprintf(fp,"<!DOCTYPE html>\n");//保存html
    fprintf(fp,"<html>\n");//保存html
    fprintf(fp,"<head>\n");//保存html
    fprintf(fp,"<meta charset==utf-8>\n");//保存html
    fprintf(fp,"<title>员工工资信息表</title>\n");//保存html
    fprintf(fp,"</head>\n");//保存html
    fprintf(fp,"<body>\n");//保存html
    fprintf(fp,"<table border=1 cellspacing=0 cellpadding=2 align=center>\n");//保存html
    fprintf(fp,"<caption><h2 style=color:red;>员工工资信息表<h2></caption>");//保存html
    //fprintf(f,"<thead><tr><th>员工ID</th><th>员工姓名</th><th>部门</th><th>基本工资</th><th>奖金</th><th>扣工资</th><th>实发工资</th></tr></thead>\n");//保存html,下面写的更美观
    fprintf(fp,"<thead>\n");//保存html
    fprintf(fp,"<tr>\n");//保存html
    fprintf(fp,"<th>\n");//保存html
    fprintf(fp,"员工ID\n");//保存html
    fprintf(fp,"</th>\n");//保存html
    fprintf(fp,"<th>\n");//保存html
    fprintf(fp,"员工姓名\n");//保存html
    fprintf(fp,"</th>\n");//保存html
    fprintf(fp,"<th>\n");//保存html
    fprintf(fp,"部门\n");//保存html
    fprintf(fp,"</th>\n");//保存html
    fprintf(fp,"<th>\n");//保存html
    fprintf(fp,"基本工资\n");//保存html
    fprintf(fp,"</th>\n");//保存html
    fprintf(fp,"<th>\n");//保存html
    fprintf(fp,"奖金\n");//保存html
    fprintf(fp,"</th>\n");//保存html
    fprintf(fp,"<th>\n");//保存html
    fprintf(fp,"扣除工资\n");//保存html
    fprintf(fp,"</th>\n");//保存html
    fprintf(fp,"<th>\n");//保存html
    fprintf(fp,"实发工资\n");//保存html
    fprintf(fp,"</th>\n");//保存html
    fprintf(fp,"</tr>\n");//保存html
    fprintf(fp,"</thead>\n");//保存html
    fprintf(fp,"<tbody>\n");//保存html
    while(i<n){
        fprintf(fp,"<tr>");
        fprintf(fp,"<td>%s</td>\n",per[i].id);//保存html
        fprintf(fp,"<td>%s</td>\n",per[i].name);//保存html
        fprintf(fp,"<td>%s</td>\n",per[i].section);//保存html
        fprintf(fp,"<td>%s</td>\n",per[i].basepay);//保存html
        fprintf(fp,"<td>%s</td>\n",per[i].bonus);//保存html
        fprintf(fp,"<td>%s</td>\n",per[i].deduct);//保存html
        fprintf(fp,"<td>%s</td>\n",per[i].payroll);//保存html
        fprintf(fp,"</tr>");//保存html
    i++;
    }
    fprintf(fp,"<tr><td colspan=7 align=center>共有%d条记录</td></tr>\n",n);
    fprintf(fp,"</tbody>\n");//保存html
    fprintf(fp,"</body>\n");//保存html
    fprintf(fp,"</html>\n");//保存html
    fclose(fp);
    printf("\t保存成功,文件名为:%s\n",filename);
    }
    if(m==2){
        printf("\t已选择Txt方式保存\n");
        printf("\t请输入文件名:");
        scanf("%s",filename);
        if(!(fp=fopen(strcat(filename,filenameTxt),"w+"))){
            printf("\t\t文件保存失败");
            system("pause");
            return;
        }
        fprintf(fp,"************************** 员工工资信息表 **************************\n");//保存txt
        fprintf(fp,"员工id   员工姓名    部门    基本工资   奖金   扣除工资   实发工资\n");//保存txt
        fprintf(fp,"--------------------------------------------------------------------\n");//保存txt
        while(i<n){
        fprintf(fp,"%4s %8s %10s %8s %9s %9s %9s\n",per[i].id,per[i].name,per[i].section,per[i].basepay,per[i].bonus,per[i].deduct,per[i].payroll);//保存txt
            i++;
        }
        fprintf(fp,"*********************************************************************\n");
        fprintf(fp,"************************* 共有%d条记录******************************* \n",n);
        fclose(fp);
        printf("\t保存成功,文件名为:%s\n",filename);

    }

}//保存文件信息
int main(){
    int n=0;
    for(;;){
        switch(meun_select()){
        case 1:
            printf("\n\t添加员工工资信息\n");
            n=Input(per,n);
            break;
        case 2:
            printf("\n\t显示员工工资信息\n");
            show(per,n);
            break;
        case 3:
            printf("\t\t删除员工工资信息\n");
            n=del(per,n);
            printf("\t\t");
            system("pause");
            break;
        case 4:
            printf("\t\t查询员工工资信息\n");
            query(per,n);
            printf("\t");
            system("pause");
            break;
        case 5:
            printf("修改员工工资信息\n");
            change(per,n);
            printf("\t\t");
            system("pause");
            break;
        case 6:
            printf("保存员工信息\n");
            save(per,n);
            printf("\t");
            system("pause");
            break;
        case 0:
            printf("\t谢谢您的使用! 再见!\n");
            system("pause");
            exit(1);//退出

        }
    }
}
//Powered by LongPeng
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档