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