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

in Stduy with 0 comment

一个C作业捂脸


//员工工资管理系统
/*
一:添加信息
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
Responses