c语言职工工资管理程序代码
- 格式:doc
- 大小:72.50 KB
- 文档页数:10
绝对可以完美运行,下面有运行图片#include<stdio.h> //调用库函数#include<string.h> //字符串处理#include<conio.h> //控制台输入输出#include<stdlib.h> //定义杂项函数及内存分配函数#define N 2 //宏定义以3代替N/******************************************************************************函数声明*******************************************************************************/ void enter();int menu();void input();void output();void search();void search_employeeid();void search_name();void edit();void array();void array_basesalary();void array_postwage();void array_totalwage();void statistics();void save();void load();/******************************************************************************职工类型定义*******************************************************************************/ struct employee{char employeeid[10];char name[10];char sex[10];int age;float basesalary;float postwage;float totalwage;};/******************************************************************************职工变量定义******************************************************************************/ struct employee emp[N];struct employee replace;struct employee *p=emp;/*****************************************************************************系统主函数******************************************************************************/ void main(){int c;while(1){printf(" \n\n\n\n");printf(" 欢迎进入职工工资管理系统\n\n\n");printf(" 1 进入管理系统\n\n");printf(" 0 退出\n\n");printf(" \n\n\n\n");printf(" 请输入你选择:\n");scanf("%d",&c);switch(c){case 1:enter();break;case 0:printf(" 谢谢使用!\n");exit(0);}}}/***************************************************************************** 功能:登陆函数,进行密码验证*****************************************************************************/ void enter(){char q;char key[10],password[10]="china";int k=1,i;printf(" 请输入密码:\n");for(i=0;i<5;i++){q=getch();key[i]=q;printf("*");}while(k<=3){if(strncmp(key,password,5)==0){while(1){int a;//system("cls");a=menu();switch(a){case 1:input();break;case 2:output();break;case 3:search();break;case 4:edit();break;case 5:array();break;case 6:load();statistics();break;case 0:printf("\n\n 谢谢使用!\n\n\n\n");save();exit(0);}}}else{k++;printf(" 输入密码错误!请再次输入:");for(i=0;i<5;i++){q=getch();key[i]=q;printf("*");}if(k>2){if(strncmp(password,key,5)==0)continue;else{printf(" 输入密码错误三次,系统将自动退出!\n");exit(0);}}}}}/************************************************************************功能: 主菜单函数参数:a类型:int说明: 变量返回值: a************************************************************************/int menu(){int a ;printf("\n\n");printf("|*****************欢迎进入职工工资管理系统************************|\n");printf("| |\n");printf("| |\n");printf("| 1 职工信息输入|\n");printf("| |\n");printf("| 2 职工信息输出|\n");printf("| |\n");printf("| 3 职工信息查询|\n");printf("| |\n");printf("| 4 职工信息修改|\n");printf("| |\n");printf("| 5 工资排序|\n");printf("| |\n");printf("| 6 工资统计|\n");printf("| |\n");printf("| 0 退出|\n");printf("| |\n");printf("| |\n");printf("|*****************************************************************|\n");printf("\n\n");printf(" 请输入你所选择的选项:");scanf("%d",&a);while(a>6||a<0){printf(" error!\n");printf(" 请重新输入你所选择的选项:");scanf("%d",&a);}return a;}/********************************************************************************* ***功能:职工信息输入********************************************************************************** ***/void input(){int c;p=emp;printf(" 进入职工信息输入模块\n\n\n");for(c=0;c<N;c++,p++){p[c].totalwage=p[c].basesalary+p[c].postwage;printf(" 请输入第%d个职工信息:\n\n",c+1);printf(" 请输入职工号:\n");scanf("%s",p->employeeid);if(strcmp(p->employeeid,"0")!=0){printf(" 请输入职工姓名:\n");scanf("%s",p->name);printf(" 请输入职工性别: \n");scanf("%s",&p->sex);printf(" 请输入职工年龄: \n");scanf("%d",&p->age);printf(" 请输入职工基本工资:\n");scanf("%f",&p->basesalary);printf(" 请输入职工岗位工资:\n");scanf("%f",&p->postwage);printf(" 职工信息输入完成!\n\n");}elsereturn;}save();}/******************************************************************************* 功能:职工信息输出********************************************************************************/ void output(){int j;load();p=emp;printf(" 进入职工信息输出模块\n\n\n");printf("-------------------------------------------------------------------------------\n");printf("| 职工号|姓名|性别|年龄|基本工资|岗位工资|总工资|\n");printf("-------------------------------------------------------------------------------\n");for(j=0;j<N;j++){p[j].totalwage=p[j].postwage+p[j].basesalary;printf("|%10s|%9s|%7s| %5d| %10.2f| %10.2f| %10.2f|\n",p[j].employeeid,p[j].name,p [j].sex,p[j].age,p[j].basesalary,p[j].postwage,p[j].totalwage);printf("-------------------------------------------------------------------------------\n");}printf("\n\n 职工信息输出完成!\n\n");getchar();}/******************************************************************************功能:职工信息查询******************************************************************************/ void search(){int j;while(1){printf("*********************职工信息查询*********************\n\n\n");printf(" 1 按职工号查询\n");printf(" 2 按职工姓名查询\n");printf(" 0 退出该项操作\n");printf("\n\n");while(1){printf(" 请输入你的选择\n");scanf("%d",&j);if(j>=0&&j<=2){switch(j){case 1:search_employeeid();break;case 2:search_name();break;case 0:return;}}else{printf(" 输入错误!\n\n");printf(" 请再次输入你的选择: \n\n");}}}}/******************************************************************************* 功能:按职工号查询函数*******************************************************************************/ void search_employeeid(){char employeeid[10];int k,j;p=emp;printf("*********************按职工号查询职工信息*****************************\n\n\n\n");printf(" 请输入要查询职工的职工号:\n\n");scanf("%s",employeeid);for(k=0;k<N;k++){if(strcmp(employeeid,p->employeeid)==0){j=k;p[j].totalwage=p[j].postwage+p[j].basesalary;printf("-------------------------------------------------------------------------------\n");printf("| 职工号|姓名|性别|年龄|基本工资|岗位工资|总工资|\n");printf("|%10s|%9s|%7s| %5d| %10.2f| %10.2f| %10.2f|\n",p[j].employeeid,p[j].name,p [j].sex,p[j].age,p[j].basesalary,p[j].postwage,p[j].totalwage);printf("-------------------------------------------------------------------------------\n");break;}else{printf(" not found\n");return;}}}/*****************************************************************************功能:按职工姓名查询函数*****************************************************************************/ void search_name(){char name[10];int flog=0;int f,j;p=emp;printf("******************************按职工姓名查询职工信息***********************\n\n\n");printf(" 请输入要查询职工的姓名:\n\n");scanf("%s",name);for(f=0;f<N;f++,p++){if(strcmp(name,p->name)==0){j=f;p[j].totalwage=p[j].postwage+p[j].basesalary;printf("-------------------------------------------------------------------------------\n");printf("| 职工号|姓名|性别|年龄|基本工资|岗位工资|总工资|\n");printf("|%10s|%9s|%7s| %5d| %10.2f| %10.2f| %10.2f|\n",p[j].employeeid,p[j].name,p [j].sex,p[j].age,p[j].basesalary,p[j].postwage,p[j].totalwage);printf("-------------------------------------------------------------------------------\n");break;}else{printf(" not found \n\n");return;}}getchar();}/*******************************************************************************功能:职工信息修改函数*******************************************************************************/ void edit(){char e[10];int g=0,j;char flog;p=emp;printf(" 请输入你要修改职工的职工号:\n");scanf("%s",e);for(g=0;g<N;g++){// if(*e==p[g].employeeid)if(strcmp(e,p->employeeid)==0){j=g;p[j].totalwage=p[j].postwage+p[j].basesalary;printf("-------------------------------------------------------------------------------\n");printf("| 职工号|姓名|性别|年龄|基本工资|岗位工资|总工资|\n");printf("|%10s|%9s|%7s| %5d| %10.2f| %10.2f| %10.2f|\n",p[j].employeeid,p[j].name,p[j].sex ,p[j].age,p[j].basesalary,p[j].postwage,p[j].totalwage);printf("-------------------------------------------------------------------------------\n");printf(" 是否要修改该职工信息?y(是)or n(否)?\n\n");getchar();scanf("%c",&flog);if(flog == 'y'){printf(" 请输入新姓名:\n");scanf("%s",p->name);printf(" 请输入性别:\n");scanf("%s",&p->sex);printf(" 请输入年龄:\n");scanf("%d",&p->age);printf(" 请输入基本工资:\n");scanf("%f",&p->basesalary);printf(" 请输入岗位工资:\n");scanf("%f",&p->postwage);printf(" 修改职工信息成功!\n\n");}if(flog == 'n'){printf(" 退出该项操作!\n\n");return;}save();}if(g==N){printf(" not found \n\n\n");return;}}}/************************************************************************ 功能:职工工资排列函数************************************************************************/ void array(){int j;while(1){printf("*************************工资排序*********************\n\n");printf(" 1 按基本工资排序\n\n");printf(" 2 按岗位工资排序\n\n");printf(" 3 按总工资排列\n\n");printf(" 0 退出\n\n");printf("\n\n\n");while(1){printf(" 请输入你的选择:\n\n");scanf("%d",&j);if(j>=0&&j<=3){switch(j){case 1:array_basesalary();break;case 2:array_postwage();break;case 3:array_totalwage();break;case 0:return;}}else{printf(" 输入错误!\n\n\n");printf(" 请再次输入你的选择:\n\n");}}}}/**************************************************************************功能:按基本工资排列(选择法)***************************************************************************/void array_basesalary(){int i,j,k;p=emp;for(i=0;i<N-1;i++){k=i;for(j=i+1;j<N;j++){if(p[k].basesalary<p[j].basesalary)k=j;}if(k!=i){replace=emp[k];emp[k]=emp[i];emp[i]=replace;}}for(j=0;j<N;j++){p[j].totalwage=p[j].postwage+p[j].basesalary;printf("-------------------------------------------------------------------------------\n");printf("| 职工号|姓名|性别|年龄|基本工资|岗位工资|总工资|\n");printf("|%10s|%9s|%7s| %5d| %10.2f| %10.2f| %10.2f|\n",p[j].employeeid,p[j].name,p [j].sex,p[j].age,p[j].basesalary,p[j].postwage,p[j].totalwage);}printf("-------------------------------------------------------------------------------\n");}/************************************************************************功能:按岗位工资排列(冒泡法)*************************************************************************/void array_postwage(){int i,j;p=emp;for(i=0;i<N;i++){for(j=0;j<N-i;j++){if(p[j].postwage<p[j+1].postwage){replace=emp[j];emp[j]=emp[j+1];emp[j+1]=replace;}}}for(j=0;j<N;j++){p[j].totalwage=p[j].postwage+p[j].basesalary;printf("------------------------------------------------------------------------------\n");printf("| 职工号|姓名|性别|年龄|基本工资|岗位工资|总工资|\n");printf("|%10s|%9s|%7s| %5d| %10.2f| %10.2f| %10.2f|\n",p[j].employeeid,p[j].name,p [j].sex,p[j].age,p[j].basesalary,p[j].postwage,p[j].totalwage);}printf("-------------------------------------------------------------------------------\n");}/************************************************************************功能:按总工资排列(插入法)************************************************************************/void array_totalwage(){int i,j;p=emp;for(i=1;i<N;i++){replace=emp[i];for(j=i-1;j>=0&&p[i].totalwage>p[i].totalwage;j--){emp[j+1]=emp[j];emp[j+1]=replace;}}for(j=N-1;j>=0;j--){p[j].totalwage=p[j].postwage+p[j].basesalary;printf("-------------------------------------------------------------------------------\n");printf("| 职工号|姓名|性别| 年龄|基本工资|岗位工资|总工资|\n");printf("|%10s|%9s|%7s| %5d| %10.2f| %10.2f| %10.2f|\n",p[j].employeeid,p[j].name,p [j].sex,p[j].age,p[j].basesalary,p[j].postwage,p[j].totalwage);}printf("-------------------------------------------------------------------------------\n");}/*************************************************************************功能:工资统计函数**************************************************************************/void statistics(){int z,a=0,b=0,c=0;p=emp;for(z=0;z<N;z++){if(p[z].totalwage>3000){a++;continue;}if(p[z].totalwage>=2000&&p[z].totalwage<=3000){b++;continue;}if(p[z].totalwage<=2000&&p[z].totalwage>0){c++;continue;}}printf(" 总工资在3000元以上的职工人数有:%d\n\n",a);printf(" 总工资在2000元至3000元的职工人数有:%d\n\n",b);printf(" 总工资在2000元以下的职工人数有:%d\n\n",c);getchar();}/*************************************************************************** 功能:导出函数***************************************************************************/ void save(){int k;FILE *fp;p=emp;if((fp=fopen("emp_list","wb"))==NULL){printf(" Create file error!\n");return;}for(k=0;k<N;k++,p++){if(fwrite(p,sizeof(struct employee),1,fp)!=1){printf(" file save error!\n\n");break;}elsecontinue;}getchar();fclose(fp);}/***********************************************************************功能:导入函数***********************************************************************/ void load(){int l;FILE *fp;p=emp;if((fp=fopen("emp_list","rb"))==NULL){printf(" Create file error!\n");exit(0);}for(l=0;l<N;l++,p++){if(fread(p,sizeof(struct employee),1,fp)!=1){printf(" file read error!\n\n");break;}elsecontinue;}getchar();fclose(fp);}下面是实验结果。
主程序代码:fmain.c#include <stdio.h>;#include <dos.h>;#include <time.h>#include <conio.h>;#include <graphics.h>;#include "fface.c" ;#include "finput.c";#include "foutput.c";#include "fsearch.c";#include "fdelete.c";#include "finsert.c";#include "fmodify.c";#include "fmoney.c";extern Face(int);extern Subinput(int);extern Suboutput(int);extern Subsearch(int);extern Subdelete(int);extern Subinsert(int);extern Submodify(int);extern Submoney(int);extern Getkey();extern window_3d(int,int,int,int,int,int); Sub(int);Cinput(int);Coutput(int);Csearch(int);Cdelete(int);Cinsert(int);Cmodify(int);Cmoney(int);Chelp();Cexit();int c;main(){int x=7;clrscr();printf("Please Input The File From:");scanf("%s",filename);initgraph(9,1,VGA);Face(x);Chelp();while ((c=Getkey())!=27){if (c==13) Sub(x);switch (c){case 105: x=0;break;/*按“i”*/case 115: x=1;break;/*按“s”*/case 100: x=2;break;/*按“d”*/case 73: x=3;break;/*按“I”*/case 109: x=4;break;/*按“m”*/case 111: x=5;break;/*按“o”*/case 83: x=6;break;/*按“S”*/case 104: x=7;break;/*按“h”*/case 101: x=8;break;/*按“e”*/case 208: if(x!=8) x++; else x=0;break;/*向下光标*/ case 200: if(x!=0) x--; else x=8;break;/*向上光标*/ }Face(x);}closegraph();}Sub(int x){switch(x){case 0:Cinput(0);break;case 1:Csearch(1);break;case 2:Cdelete(2);break;case 3:Cinsert(3);break;case 4:Cmodify(4);break;case 5:Coutput(5);break;case 6:Cmoney(6);break;case 7:Chelp();break;case 8:Cexit();break;return x;}}Cinput(int x){int c1;directvideo=0;textcolor(WHITE);gotoxy(19,5);cprintf(" Y ou Can input worker's information,Please read NOTICE!"); gotoxy(19,9);cprintf("NOTICE:");gotoxy(19,11);cprintf(" The Date Mode : year-month-day ");gotoxy(19,13);cprintf(" The Rank Mode : professor | associate | teacher | helper"); gotoxy(19,15);cprintf(" The Sex Mode : female | male ");gotoxy(19,19);cprintf(" Press 'Enter' Continue!");if ((c1=Getkey())==13)Subinput(x);}Csearch(int x){int c1;directvideo=0;textcolor(WHITE);gotoxy(19,5);cprintf(" Y ou Can Search worker's information,There are 2 Method!"); gotoxy(19,9);cprintf(" Y ou Can Chooice 1 or 2");gotoxy(19,11);cprintf(" Chooice 1 Y ou Must Input The W orker's Name!");gotoxy(19,13);cprintf(" Chooice 2 Y ou Must Input The W orker Enter Date");gotoxy(19,17);cprintf(" Press 'Enter' Continue!");if ((c1=Getkey())==13)Subsearch(x);}Cdelete(int x){int c1;directvideo=0;textcolor(WHITE);gotoxy(19,5);cprintf(" Y ou Can Delete The W orker And His Information!");gotoxy(19,9);cprintf(" Y ou Sure Y ou Will Delete The W orker And His Information"); gotoxy(19,11);cprintf(" Y ou Enter The W orker's Name!");gotoxy(19,15);cprintf(" Press 'Enter' Continue!");if ((c1=Getkey())==13)Subdelete(x);}Cinsert(int x){int c1;directvideo=0;textcolor(WHITE);gotoxy(19,5);cprintf(" Y ou Can Insert New worker and his information!");gotoxy(19,9);cprintf("NOTICE:");gotoxy(19,11);cprintf(" The Date Mode : year-month-day ");gotoxy(19,13);cprintf(" The Rank Mode : professor | associate | teacher | helper"); gotoxy(19,15);cprintf(" The Sex Mode : female | male ");gotoxy(19,19);cprintf(" Press 'Enter' Continue!");if ((c1=Getkey())==13)Subinsert(x);}Cmodify(int x){int c1;directvideo=0;textcolor(WHITE);gotoxy(19,5);cprintf(" Y ou Can Modify The W orker And His Information!");gotoxy(19,9);cprintf(" Input Y ou Will Modify The W orker's Name");gotoxy(19,11);cprintf(" Read The W orker's Information and Make sure Y ou Will Modify"); gotoxy(19,13);cprintf(" Input The New Information");gotoxy(19,17);cprintf(" Press 'Enter' Continue!");if ((c1=Getkey())==13)Submodify(x);}Coutput(int x){int c1;directvideo=0;textcolor(WHITE);gotoxy(19,5);cprintf(" Y ou Can W atch worker's information!");gotoxy(19,8);cprintf("Content:");gotoxy(22,9);cprintf("Name");gotoxy(22,10);cprintf("Order");gotoxy(22,11);cprintf("Sex");gotoxy(22,12);cprintf("Salary");gotoxy(22,13);cprintf("Birthday");gotoxy(22,14);cprintf("Department");gotoxy(22,15);cprintf("Date");gotoxy(19,19);cprintf("Press 'Enter' Continue!");if ((c1=Getkey())==13)Suboutput(x);}Cmoney(int x){int c1;directvideo=0;textcolor(WHITE);gotoxy(19,5);cprintf(" Y ou Can Count And W atch W orker's Salary!");gotoxy(19,7);cprintf(" This Is The External Program,Y ou Can Use 'Money.exe'!"); gotoxy(19,11);cprintf(" Input The file That Content Information Where From");gotoxy(19,13);cprintf(" Y ou Will Complete Count and W atch W orker's Salary");gotoxy(19,15);cprintf(" Y ou Can W atch W orker's Detailed Information from 'Output'"); gotoxy(19,19);cprintf("Press 'Enter' Continue!");if ((c1=Getkey())==13)Submoney(x);}Chelp(){directvideo=0;textcolor(WHITE);gotoxy(19,5);cprintf(" This is the Salary Manage System,Y ou can Input worker infor"); gotoxy(19,7);cprintf("-mation,Search information and Modify information.Y ou can qu"); gotoxy(19,9);cprintf("-ick complete your work. ");gotoxy(19,12);cprintf("Version: 1.0 ");gotoxy(19,13);cprintf("Author : Gaobing ");gotoxy(19,14);cprintf("Class : 2000-5 ");gotoxy(19,15);cprintf("Number : 00240523");gotoxy(19,16);cprintf("web : ");gotoxy(19,17);cprintf("Mail : cbf107@ ");gotoxy(19,18);cprintf("Date : 2003-1-13 ");getch();}Cexit(){int c1;directvideo=0;textcolor(WHITE);gotoxy(19,5);cprintf("Are Y ou Sure Exit?");gotoxy(19,7);cprintf("Press 'Enter' Leave Program,Press Other Key Continue!"); if ((c1=Getkey())==13)closegraph();}Fface.c#define NULL 0#define LEN sizeof(struct employee) int n;char filename[20];/*定义结构变量*/struct data{int year;int month;int day;};struct employee{char name[20];int number;char sex[7];char rank[10];int money;struct data birthday;char departme nt[20];struct data date1;struct employee *next;};/*定义时间结构变量*/struct data1{ int da_year;char da_day;char da_mon;};struct data1 *dateblk;/*初试化窗口*/Face(int x){int i,xstart,ystart,xend,yend;char file[9][7]={{"Input"},{"Search"},{"Delete"},{"Insert"},{"Modify"},{"Output"},{"Salary"},{"Help"},{"Exit"},};setgraphmode(2);setbkcolor(6);setcolor(1);bar3d(25,25,600,40,15,1);outtextxy(250,30,"Salary Manage System");rectangle(5,50,634,400);line(135,50,135,400);line(30,430,600,430);outtextxy(20,420,"Press 'Enter' Select | Press 'Up' 'Down' 'left' 'Right' | Press 'Esc' Back");outtextxy(110,437,"Made by GaoBing | Mail to : cbf107@ | 2003-1-8");xstart=25;ystart=80;xend=85;yend=95;for(i=0;i<=8;i++){if (i!=x){setcolor(1);bar3d(xstart,ystart,xend,yend,15,1);outtextxy(xstart+10,ystart+5,file[i]);}if (i==x){setcolor(4);bar3d(xstart+15,ystart,xend+15,yend,15,1);outtextxy(xstart+25,ystart+5,file[i]);}ystart=ystart+35;yend=yend+35;}}/*从键盘读入按钮值*/int Getkey(){union REGS in,out;in.h.ah=0x8;int86(0x21,&in,&out);if(out.h.al==0)return Getkey()+128;elsereturn out.h.al;}/*画3d窗体*/window_3d(int x1,int y1,int x2,int y2,int bk_color,int fo_color) {textbackground(BLACK);window(x1,y1,x2,y2);clrscr();textbackground(bk_color);textcolor(fo_color);window(x1-2,y1-1,x2-2,y2-1);clrscr();}/*打印链表*/print(struct employee *head,int n){int y=5;struct employee *pp;directvideo=0;textmode(3);textbackground(BROWN);textcolor(WHITE);clrscr();gotoxy(25,1);cprintf("There Are W orkers Record");printf("\n");printf("-------------------------------------------------------------------------------\n");printf("Name Number Sex Rank Money Birthday Department Date \n");printf("-------------------------------------------------------------------------------\n");pp=head;if (head!=NULL)do{gotoxy(1,y);cprintf("%s",pp->name);gotoxy(11,y);cprintf("%d",pp->number);gotoxy(19,y);cprintf("%s",pp->sex);gotoxy(26,y);cprintf("%s",pp->rank);gotoxy(37,y);cprintf("%d",pp->money);gotoxy(44,y);cprintf("%d-%d-%d",pp->birthday.year,pp->birthday.month,pp->birthday.day );gotoxy(57,y);cprintf("%s",pp->department);gotoxy(71,y);cprintf("%d-%d-%d\n",pp->date1.year,pp->date1.month,pp->date1.day);pp=pp->next;y=y+2;}while(pp!=NULL);}/*保存链表为文件*/void save(struct employee *head){FILE *fp;struct employee *k1;/*printf("The Information Save to:");scanf("%s",name);*/fp=fopen(filename,"w"); for(k1=head;k1!=NULL;k1=k1->next)fprintf(fp,"%s %d %s %s %d %d %d %d %s %d %d %d ",k1->name,k1->number,k1->sex,k1->rank,k1->money,k1->birthday.year,k1->birthday.month,k1->birthday.day,k1->department,k1->date1.year,k1->date1.month,k1->date1.day);fclose(fp);}/*打开文件初始链表*/struct employee *get_in(void){FILE *fp;struct employee *head,*k1,*k2;/*char name[20];*//*printf("The Information From:");scanf("%s",name);*/fp=fopen(filename,"r");if(fp==NULL){printf("Open File Fail!\n");}else{head=k1=k2=(struct employee *)malloc(LEN);while(!feof(fp)==1){fscanf(fp,"%s %d %s %s %d %d %d %d %s %d %d %d ",&k1->name,&k1->number,&k1->sex,&k1->rank,&k1->money,&k1->birthday.year,&k1->birthday.month,&k1->birthday.day,&k1->department,&k1->date1.year,&k1->date1.month,&k1->date1.day);/*fscanf(fp,"%s %d %s %s %d %d %d %d %d %d",k1->name, &k1->num,k1->sex,k1->add,&k1->bd.math,&k1->puter,&k1->bd.english,&k1->mn.year,&k1->mn.month,&k1->mn.day);*//*fscanf(fp,"%s %d %d %d %d ",k1->name,&k1->num,&k1->bd.math,&k1->puter,&k1->bd.english);*/if (!feof(fp)==1){k1=(struct employee *)malloc(LEN);k2->next=k1;k2=k1;}k2->next=NULL;}fclose(fp);return head;finput.c/*初始化链表*/struct employee *creat(void){struct employee *head;struct employee *p1,*p2;int cc;n=0;p1=p2=(struct employee*)malloc(LEN);gotoxy(22,3);scanf("%s",&p1->name);gotoxy(22,5);scanf("%d",&p1->number);gotoxy(22,7);scanf("%s",&p1->sex);gotoxy(22,9);scanf("%s",&p1->rank);gotoxy(22,11);/*scanf("%d",&p1->money);gotoxy(22,13);*/p1->money=0;scanf("%d-%d-%d",&p1->birthday.year,&p1->birthday.month,&p1->birthday. day);gotoxy(22,13);scanf("%s",&p1->department);gotoxy(22,15);scanf("%d-%d-%d",&p1->date1.year,&p1->date1.month,&p1->date1.day); gotoxy(1,17);cprintf("Press 'Enter' continue! Press 'Exit' abandon! Press 'C' complete");if((cc=Getkey())==27) p1->number=0;else if(cc==67){n=n+1;if (n==1) head=p1;else p2->next=p1;p2=p1;}head=NULL;while (p1->number!=0){n=n+1;if (n==1) head=p1;else p2->next=p1;p2=p1;p1=(struct employee*)malloc(LEN);initinputface();gotoxy(22,3);scanf("%s",&p1->name);gotoxy(22,5);scanf("%d",&p1->number);gotoxy(22,7);scanf("%s",&p1->sex);gotoxy(22,9);scanf("%s",&p1->rank);gotoxy(22,11);p1->money=0;scanf("%d-%d-%d",&p1->birthday.year,&p1->birthday.month,&p1->birthday. day);gotoxy(22,13);scanf("%s",&p1->department);gotoxy(22,15);scanf("%d-%d-%d",&p1->date1.year,&p1->date1.month,&p1->date1.day); gotoxy(1,17);cprintf("Press 'Enter' continue! Press 'Exit' abandon! Press 'C' complete");if((cc=Getkey())==27) p1->number=0;else if (cc==67){n=n+1;if (n==1) head=p1;else p2->next=p1;p2=p1;goto add;}}add:p2->next=NULL;return(head);}/*初始化输入窗体*/initinputface(){window_3d(7,4,70,22,BLUE,WHITE); gotoxy(10,3);cputs("Name:");gotoxy(10,5);cputs("Order:");gotoxy(10,7);cputs("Sex:");gotoxy(10,9);cputs("Rank:");gotoxy(10,11);cputs("Birthday:");gotoxy(10,13);cputs("Department:");gotoxy(10,15);cputs("date:");}Subinput(int x){struct employee *head;closegraph();directvideo=0;textmode(3);textbackground(BROWN);textcolor(WHITE);clrscr();gotoxy(20,2);cputs("Please Input W orker's Information"); initinputface();head=creat();print(head,n);getch();clrscr();save(head);getch();clrscr();initgraph(9,1,VGA);Face(x);}Finsert.cstruct employee *insert(struct employee *head,struct employee *worker) {struct student *p0,*p1,*p2;p1=head;p0=worker;if (head==NULL){head=p0;p0->next=NULL;}elsewhile (((p0->number)>(p1->number))&&(p1->next!=NULL)) {p2=p1;p1=p1->next;}if((p0->number)<=(p1->number)){if(head==p1) head=p0;else p2->next=p0;p0->next=p1;}else{p1->next=p0;p0->next=NULL;}return(head);}Subinsert(int x){struct employee *head,*p;closegraph();directvideo=0;textmode(3);textbackground(BROWN);textcolor(WHITE);clrscr();head=get_in();gotoxy(20,2);cputs("Please Input W orker's Information");initinputface();gotoxy(22,3);scanf("%s",&p->name);gotoxy(22,5);scanf("%d",&p->number);gotoxy(22,7);scanf("%s",&p->sex);gotoxy(22,9);scanf("%s",&p->rank);gotoxy(22,11);p->money=0;scanf("%d-%d-%d",&p->birthday.year,&p->birthday.month,&p->birthday.day );gotoxy(22,13);scanf("%s",&p->department);gotoxy(22,15);scanf("%d-%d-%d",&p->date1.year,&p->date1.month,&p->date1.day); gotoxy(1,17);head=insert(head,p);save(head);head=get_in();print(head,n);clrscr();initgraph(9,1,VGA);Face(x);}fdelete.cstruct employee *del(struct employee *head){struct employee *p1,*p2;char delname[20];gotoxy(5,5);printf("Please input you will detelete name:");gotoxy(43,5);scanf("%s",delname);if (head==NULL){printf("\nlist null!\n");goto end;}p1=head;while((strcmp(p1->name,delname)!=0)&&(p1->next!=NULL)) {p2=p1;p1=p1->next;}if((strcmp(p1->name,delname)==0)){if(p1==head) head=p1->next;else p2->next=p1->next;gotoxy(5,6);printf("delete: %s \n",delname);}else{gotoxy(5,6);printf("Sorry The people not find\n");}end:return(head);}Subdelete(int x){struct employee *head;closegraph();directvideo=0;textmode(3);textbackground(BROWN);textcolor(WHITE);clrscr();head=get_in();head=del(head);save(head);getch();clrscr();initgraph(9,1,VGA);Face(x);}Fmodify,cSubmodify(int x){struct employee *head,*p1,*p2;char modifyname[20];closegraph();directvideo=0;textmode(3);textbackground(BROWN);textcolor(WHITE);clrscr();head=get_in();gotoxy(10,5);printf("Please Input you will Modify Whose Information :");gotoxy(60,5);scanf("%s",modifyname);if (head==NULL){printf("\nlist null!\n");goto end;}p1=head;while((strcmp(p1->name,modifyname)!=0)&&(p1->next!=NULL)){p2=p1;p1=p1->next;}if((strcmp(p1->name,modifyname)==0)){printf("OK! The worker's Information:\n");printf("%s\n",p1->name);printf("%d\n",p1->number);printf("%s\n",p1->sex);printf("%s\n",p1->rank);printf("%d\n",p1->money);printf("%d-%d-%d\n",p1->birthday.year,p1->birthday.month,p1->birthday.da y);printf("%s\n",p1->department);printf("%d-%d-%d\n",p1->date1.year,p1->date1.month,p1->date1.day); getch();clrscr();gotoxy(20,2);printf("Modify worker's Information:");if(p1==head) head=p1->next;p2->next=p1->next;save(head);Subinsert(x);}else{gotoxy(10,6);printf("Sorry The people not find\n");getch();}end:clrscr();initgraph(9,1,VGA);Face(x);}Foutput.cSuboutput(int x){struct employee *head;closegraph();directvideo=0;textmode(3);textbackground(BROWN);textcolor(WHITE);clrscr();head=get_in();print(head,n);getch();clrscr();initgraph(9,1,VGA);Face(x);}Fmoney.c#include <process.h>char *envString[]={"COMM_VECTOR=0x63","PARENT=MONEY.EXE","",NULL};mm(int argc,char **argv){spawnvpe(P_W AIT,"MONEY.EXE",argv,envString); }Submoney(int x){mm(1,'I');}Money.c#include <dos.h>#include <time.h>#include <graphics.h>#include <conio.h>#include <stdio.h>#include "fface.c"money (struct employee *p,int n){int i,stayy,average;int s;char rank;stayy=n-(p->date1.year);average=stayy/2;/* printf(" work %d years",stayy); */ rank=p->rank[0];switch(rank){case 'p':s=876; break;case 'a':s=567; break;case 't':s=318; break;case 'h':s=289; break;}for(i=0;i<average;i++){s=(s+0.1*s);}s=s*0.85;if ((s>1000)&&(s<=1500)) s=s-(s-1000)*0.05;if ((s>1500)&&(s<=2000)) s=s-(500*0.05+(s-1500)*0.01);if (s>2000) s=s-(500*0.05+500*0.01+(s-2000)*0.2);printf(" Salary %d\n",s);p->money=s;}main(){struct employee *head,*p1,*p2;directvideo=0;textmode(3);textbackground(BROWN);textcolor(WHITE);clrscr();printf("Please Input The File From:");scanf("%s",filename);getdate(dateblk);printf("TheDate:%d-%d-%d\n",dateblk->da_year,dateblk->da_mon,dateblk->da_day); head=get_in();p1=head;while( p1!=NULL ){printf("%s\n ",p1->name);money(p1,dateblk->da_year);p1=p1->next;}save(head);getch();}。
#include<stdio。
h>#include<string.h>#include<ctype。
h〉#include〈malloc.h>#define null 0typedef struct Info1{char num[10];char name[10];char depar[10];char yfsalary[10];char aband[10];char tax[10];char sfsalary[10];struct Info1 *next;}Info2;typedef struct Info1 *Info;Info head;void display();void find();void modify();void add();void del();void list();void listOne(Info s);Info isExists(char *num);void init();void init(){head=(Info)malloc(sizeof(Info2));head—〉next=null;}void main(){init();while(1){char c;display();scanf(”%c",&c);switch(c){case ’1':find();break;case ’2’:add();break;case ’3':modify();break;case '4':del();break;case '5’:list();break;case ’6':printf("\t\t.。
退出系统!\n”);return;default:printf(”\t\t输入错误!请按任意键返回重新选择(1-7)\n");getchar();}}}void display(){printf(”\n\t**欢迎使用员工信息管理系统**\n\n");printf(”\t请选(1—7):\n”);printf("\t============================================\n");printf("\t\t1。
#include<stdio.h>#include<string.h>#include<ctype.h>#include<malloc.h>#define null 0typedef struct Info1{char num[10];char name[10];char depar[10];char yfsalary[10];char aband[10];char tax[10];char sfsalary[10];struct Info1 *next;}Info2;typedef struct Info1 *Info;Info head;void display();void find();void modify();void add();void del();void list();void listOne(Info s);Info isExists(char *num);void init();void init(){head=(Info)malloc(sizeof(Info2));head->next=null;}void main(){init();while(1){char c;display();scanf("%c",&c);switch(c){case '1':find();break;case '2':add();break;case '3':modify();break;case '4':del();break;case '5':list();break;case '6':printf("\t\t...退出系统!\n");return;default: printf("\t\t输入错误!请按任意键返回重新选择(1-7)\n");getchar();}}}void display(){printf("\n\t** 欢迎使用员工信息管理系统 **\n\n");printf("\t请选(1-7):\n");printf("\t============================================\n");printf("\t\t1.查询员工信息\n");printf("\t\t2.录入员工信息\n");printf("\t\t3.修改员工信息\n");printf("\t\t4.删除员工信息\n");printf("\t\t6.显示所有员工信息\n");printf("\t\t7.退出系统\n");printf("\t============================================\n");printf("\t您的选择是: ");}void listOne(Info p){printf("\n该员工信息记录如下: ");printf("\n==========================================================\n\n");printf("%-12s%-10s%-10s%-7s%-7s%-10s%-10s%\n","员工编号","姓名","部门","应付工资","保险","税金","实付工资");printf("%-12s%-10s%-10s%-7s%-7s%-10s%-10s%\n",p->num,p->name,p->depar,p->yf salary,p->aband,p->tax,p->sfsalary);}Info isExists(char *num){Info p,q;p=head;q=p->next;while(q!=null){if(strcmp(q->num,num)==0)return p;p=q;q=p->next;}return p;}void add(){Info p,q;char num[10];q=(Info)malloc(sizeof(Info2));printf("\t\t请输入员工编号: ");scanf("%s",num);p=isExists(num);if (p->next==null){strcpy(q->num,num);printf("\t\t请输入员工姓名: ");scanf("%s",q->name);printf("\t\t请输入该员工的部门: ");scanf("%s",q->depar);printf("\t\t请输入该员工的应付工资金额: ");scanf("%s", q->yfsalary);printf("\t\t请输入该员工的保险金额: ");scanf("%s", q->aband);printf("\t\t请输入该员工的税金金额: ");scanf("%s",q->tax);printf("\t\t请输入该员工的实付工资: ");scanf("%s",q->sfsalary);q->next=null;p->next=q;}elseprintf("\n\t\t您所输入的员工编号以存在! ");printf("\n\t\t按任意键返回住菜单......");getchar();}void del(){Info p,q;char num[10];if (head->next==null){printf("\n\t\t当前还没有员工信息记录,按任意键返回主菜单......");getchar();return;}printf("\t\t请输入员工编号: ");scanf("%s",num);p=isExists(num);q=p->next;if (q!=null){q=q->next;p->next=q;printf("\n\t\t删除成功! ");}elseprintf("\n\t\t您所输入的员工编号有误或不存在! ");printf("\n\t\t按任意键返回主菜单......");getchar();}void modify(){Info p,q;char num[10];if (head->next==null){printf("\n\t\t当前还没有员工信息记录,按任意键返回主菜单......");getchar();return;}printf("\t\t请输入员工编号: ");scanf("%s",num);p=isExists(num);q=p->next;if(q!=null)listOne(q);printf("\t\t请输入该员工的新姓名: ");scanf("%s",q->name);printf("\t\t请输入该员工的部门: ");scanf("%s",q->depar);printf("\t\t请输入该员工的应付工资金额: ");scanf("%s",q->yfsalary);printf("\t\t请输入该员工的保险: ");scanf("%s",q->aband);printf("\t\t请输入该员工的新税金金额: ");scanf("%s",q->tax);printf("\t\t请输入该员工的新实付工资: ");scanf("%s",q->sfsalary);}elseprintf("\n\t\t您所输入的员工编号有误或不存在!");printf("\n\t\t按任意键返回主菜单......");getchar();}void list(){Info p;if (head->next==null){printf("\n\t\t当前还没有员工信息记录,按任意键返回主菜单......");getchar();return;}printf("\n所有员工信息记录如下: ");printf("\n================================================================= =======\n\n");printf("%-12s%-10s%-10s%-7s%-7s%-10s%-10s%\n","员工编号","姓名","部门","应付工资","保险","税金","实付金额");p=head->next;while(p!=null){printf("%-12s%-10s%-10s%-7s%-7s%-10s%-10s%\n",p->num,p->name,p->depar,p->yf salary,p->aband,p->tax,p->sfsalary);p=p->next;printf("\n\t\t按任意键返回主菜单......");getchar();}void find(){Info p;char num[10];if (head->next==null){printf("\n\t\t当前还没有员工信息记录,按任意键返回主菜单......");getchar();return;}printf("\t\t输入员工编号: ");scanf("%s",num);p=isExists(num);p=p->next;if(p!=null)listOne(p);elseprintf("\n\t\t您所输入的员工信息有误或不存在!");printf("\n\t\t按任意键返回主菜单......");getchar();}欢迎您的下载,资料仅供参考!致力为企业和个人提供合同协议,策划案计划书,学习资料等等打造全网一站式需求。
#i n c l u d e<s t d i o.h>#include<string.h>#include<ctype.h>#include<malloc.h>#define null 0typedef struct Info1{char num[10];char name[10];char depar[10];char yfsalary[10];}Info2;{}{while(1){char c;display();scanf("%c",&c);switch(c){case '1':find();break;case '2':add();break;case '3':modify();break;case '4':del();break;case '5':list();break;case '6':printf("\t\t...退出系统!\n");return;default: printf("\t\t输入错误!请按任意键返回重新选择(1-7)\n");getchar();}}}void display(){printf("\n\t** 欢迎使用员工信息管理系统**\n\n");printf("\t请选(1-7):\n");printf("\t============================================\n");}{","税金","实付工资}{while(q!=null){if(strcmp(q->num,num)==0)return p;p=q;q=p->next;}return p;}void add(){Info p,q;char num[10];q=(Info)malloc(sizeof(Info2));printf("\t\t请输入员工编号: ");scanf("%s",num);p=isExists(num);if (p->next==null){strcpy(q->num,num);printf("\t\t请输入员工姓名: ");scanf("%s",q->name);printf("\t\t请输入该员工的部门: ");}else}{{printf("\n\t\t当前还没有员工信息记录,按任意键返回主菜单......");getchar();return;}printf("\t\t请输入员工编号: ");scanf("%s",num);p=isExists(num);q=p->next;if (q!=null){q=q->next;p->next=q;printf("\n\t\t删除成功! ");}elseprintf("\n\t\t您所输入的员工编号有误或不存在! ");printf("\n\t\t按任意键返回主菜单......");getchar();}void modify(){Info p,q;char num[10];{}{printf("\t\t请输入该员工的新实付工资: ");scanf("%s",q->sfsalary);}elseprintf("\n\t\t您所输入的员工编号有误或不存在!");printf("\n\t\t按任意键返回主菜单......");getchar();}void list(){Info p;if (head->next==null){printf("\n\t\t当前还没有员工信息记录,按任意键返回主菜单......");getchar();return;}printf("\n所有员工信息记录如下: ");printf("\n========================================================================\n\n" );printf("%-12s%-10s%-10s%-7s%-7s%-10s%-10s%\n","员工编号","姓名","部门","应付工资","保险","税金","实付金额");p=head->next;{}}{{}p=p->next;if(p!=null)listOne(p);elseprintf("\n\t\t您所输入的员工信息有误或不存在!");printf("\n\t\t按任意键返回主菜单......");getchar();}。
#include<stdio.h>#include<string.h>#include<ctype.h>#include<malloc.h>#define null 0typedef struct Info1{char num[10];char name[10];char depar[10];char yfsalary[10];char aband[10];char tax[10];char sfsalary[10];struct Info1 *next;}Info2;typedef struct Info1 *Info;Info head;void display();void find();void modify();void add();void del();void list();void listOne(Info s);Info isExists(char *num);void init();void init(){head=(Info)malloc(sizeof(Info2));head->next=null;}void main(){init();while(1){char c;display();scanf("%c",&c);switch(c){case '1':find();break;case '2':add();break;case '3':modify();break;case '4':del();break;case '5':list();break;case '6':printf("\t\t...退出系统!\n");return;default: printf("\t\t输入错误!请按任意键返回重新选择(1-7)\n");getchar();}}}void display(){printf("\n\t** 欢迎使用员工信息管理系统**\n\n");printf("\t请选(1-7):\n");printf("\t============================================\n");printf("\t\t1.查询员工信息\n");printf("\t\t2.录入员工信息\n");printf("\t\t3.修改员工信息\n");printf("\t\t4.删除员工信息\n");printf("\t\t6.显示所有员工信息\n");printf("\t\t7.退出系统\n");printf("\t============================================\n");printf("\t您的选择是: ");}void listOne(Info p){printf("\n该员工信息记录如下: ");printf("\n==========================================================\n\n");printf("%-12s%-10s%-10s%-7s%-7s%-10s%-10s%\n","员工编号","姓名","部门","应付工资","保险","税金","实付工资");printf("%-12s%-10s%-10s%-7s%-7s%-10s%-10s%\n",p->num,p->name,p->depar,p->yfsalary, p->aband,p->tax,p->sfsalary);}Info isExists(char *num){Info p,q;p=head;q=p->next;while(q!=null){if(strcmp(q->num,num)==0)return p;p=q;q=p->next;}return p;}void add(){Info p,q;char num[10];q=(Info)malloc(sizeof(Info2));printf("\t\t请输入员工编号: ");scanf("%s",num);p=isExists(num);if (p->next==null){strcpy(q->num,num);printf("\t\t请输入员工姓名: ");scanf("%s",q->name);printf("\t\t请输入该员工的部门: ");scanf("%s",q->depar);printf("\t\t请输入该员工的应付工资金额: ");scanf("%s", q->yfsalary);printf("\t\t请输入该员工的保险金额: ");scanf("%s", q->aband);printf("\t\t请输入该员工的税金金额: ");scanf("%s",q->tax);printf("\t\t请输入该员工的实付工资: ");scanf("%s",q->sfsalary);q->next=null;p->next=q;}elseprintf("\n\t\t您所输入的员工编号以存在! ");printf("\n\t\t按任意键返回住菜单......");getchar();void del(){Info p,q;char num[10];if (head->next==null){printf("\n\t\t当前还没有员工信息记录,按任意键返回主菜单......");getchar();return;}printf("\t\t请输入员工编号: ");scanf("%s",num);p=isExists(num);q=p->next;if (q!=null){q=q->next;p->next=q;printf("\n\t\t删除成功! ");}elseprintf("\n\t\t您所输入的员工编号有误或不存在! ");printf("\n\t\t按任意键返回主菜单......");getchar();}void modify(){Info p,q;char num[10];if (head->next==null){printf("\n\t\t当前还没有员工信息记录,按任意键返回主菜单......");getchar();return;}printf("\t\t请输入员工编号: ");scanf("%s",num);p=isExists(num);q=p->next;if(q!=null){listOne(q);printf("\t\t请输入该员工的新姓名: ");scanf("%s",q->name);printf("\t\t请输入该员工的部门: ");scanf("%s",q->depar);printf("\t\t请输入该员工的应付工资金额: ");scanf("%s",q->yfsalary);printf("\t\t请输入该员工的保险: ");scanf("%s",q->aband);printf("\t\t请输入该员工的新税金金额: ");scanf("%s",q->tax);printf("\t\t请输入该员工的新实付工资: ");scanf("%s",q->sfsalary);}elseprintf("\n\t\t您所输入的员工编号有误或不存在!");printf("\n\t\t按任意键返回主菜单......");getchar();}void list(){Info p;if (head->next==null){printf("\n\t\t当前还没有员工信息记录,按任意键返回主菜单......");getchar();return;}printf("\n所有员工信息记录如下: ");printf("\n=================================================================== =====\n\n");printf("%-12s%-10s%-10s%-7s%-7s%-10s%-10s%\n","员工编号","姓名","部门","应付工资","保险","税金","实付金额");p=head->next;while(p!=null){printf("%-12s%-10s%-10s%-7s%-7s%-10s%-10s%\n",p->num,p->name,p->depar,p->yfsalary, p->aband,p->tax,p->sfsalary);p=p->next;}printf("\n\t\t按任意键返回主菜单......");getchar();}void find(){Info p;char num[10];if (head->next==null){printf("\n\t\t当前还没有员工信息记录,按任意键返回主菜单......");getchar();return;}printf("\t\t输入员工编号: ");scanf("%s",num);p=isExists(num);p=p->next;if(p!=null)listOne(p);elseprintf("\n\t\t您所输入的员工信息有误或不存在!");printf("\n\t\t按任意键返回主菜单......");getchar();}。
C职工工资管理源代码集团文件版本号:(M928-T898-M248-WU2669-I2896-DQ586-M1988)附录〈源程序〉#include <stdio.h>#include <stdlib.h>#include <string.h>struct worker{char name[30];char ID[10];int salary1,salary2,salary3;};int dq(struct worker wo[]);void show();void bc(struct worker wo[]);void add();void see();void search();void ghcz();void xmcz();void del();void xmsc();void ghsc();void statistics();void modify();void ghxg();void xmxg();void reserve();void back();void author();struct worker wo[100]; //保存所有的职工信息int Number=0; //记录总的职工人数void main(){int choose=0;while(true){show();printf("\t\t====>请选择:");scanf("%d",&choose);system("cls");switch(choose){case 0: exit(0);//退出break;case 1: add();back();//添加职工信息break;case 2: see();back();//查看职工信息break;case 3: search();back();// 查找职工信息break;case 4: del();back();//删除职工信息break;case 5: statistics(); back();//统计职工工资break;case 6: modify();back();//修改职工信息break;case 7:reserve();back();//保存数据break;case 8:author();back();//作者信息break;default:break;}fflush(stdin);getchar();system("cls");}}int dq(struct worker wo[]){FILE *fp=NULL;int i=0;while(fread(&wo[i],sizeof(struct worker),1,fp)) i++;fclose(fp);return i;}void show(){printf("\n");printf("\t****************职工工资管理系统****************\n\n");printf("\t*☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆*\n\n");printf("\t^^^^^^^^^^^^^^^[1] 添加职工信息^^^^^^^^^^^^^^^^^\n"); printf("\t^^^^^^^^^^^^^^^[2] 查看职工信息^^^^^^^^^^^^^^^^^\n"); printf("\t^^^^^^^^^^^^^^^[3] 查找职工信息^^^^^^^^^^^^^^^^^\n"); printf("\t^^^^^^^^^^^^^^^[4] 删除职工信息^^^^^^^^^^^^^^^^^\n"); printf("\t^^^^^^^^^^^^^^^[5] 统计职工工资^^^^^^^^^^^^^^^^^\n"); printf("\t^^^^^^^^^^^^^^^[6] 修改职工信息^^^^^^^^^^^^^^^^^\n"); printf("\t^^^^^^^^^^^^^^^[7] 保存数据^^^^^^^^^^^^^^^^^\n"); printf("\t^^^^^^^^^^^^^^^[8] 作者信息^^^^^^^^^^^^^^^^^\n"); printf("\t^^^^^^^^^^^^^^^[0] 退出系统^^^^^^^^^^^^^^^^^\n\n");printf("\t*★★★★★★★★★★★★★★★★★★★★★★★*\n"); }void bc(struct worker *wo){FILE *fp=NULL;fwrite(wo,sizeof(struct worker),1,fp);fclose(fp);}//添加职工信息void add(){int numberTemp=0;int i=0;struct worker temp;printf("请输入要添加职工个数:"); scanf("%d",&numberTemp);for(i=0;i<numberTemp;i++){printf("输入第%d个职工信息\n",i+1); printf("姓名:");scanf("%s",);printf("工号:");scanf("%s",temp.ID);printf("基本工资:");scanf("%d",&temp.salary1);printf("职务工资:");scanf("%d",&temp.salary2);printf("津贴:");scanf("%d",&temp.salary3);wo[Number++]=temp; //写入到数组bc(&temp); //写入到文件}printf("添加成功\n");}//查看职工信息void see(){int i=0;printf("以下是全部职工\n");printf("\t姓名\t工号\t基本工资\t职务工资\t津贴\n");while(i<Number){printf("\t%s\t%s\t%d\t\t%d\t\t%d\n",wo[i].name,wo[i].ID,wo[i].s alary1,wo[i].salary2,wo[i].salary3);i++;}}//查找职工信息void search(){int n=0;printf("1 按姓名查找\n");printf("2 按工号查找\n");scanf("%d",&n);switch(n){case 1: xmcz();break;case 2: ghcz();break;default: printf("输入错误!\n");break;}}void xmcz()//按姓名查找{char name[30];int i=0;printf("请输入要查找职工姓名:");scanf("%s",name);system("cls");printf("\t姓名\t工号\t基本工资\t职务工资\t津贴\n"); for (i=0;i<Number;i++){if (strcmp(name,wo[i].name)==0){printf("\t%s\t%s\t%d\t\t%d\t\t%d\n",wo[i].name,wo[i].ID,wo[i].s alary1,wo[i].salary2,wo[i].salary3);}}}void ghcz()//按工号查找{char id[10];int i=0;printf("请输入要查找职工工号:");scanf("%s",id);system("cls");printf("\t姓名\t工号\t基本工资\t职务工资\t津贴\n");for (i=0;i<Number;i++){if (strcmp(id,wo[i].ID)==0){printf("\t%s\t%s\t%d\t\t%d\t\t%d\n",wo[i].name,wo[i].ID,wo[i].s alary1,wo[i].salary2,wo[i].salary3);}}}//删除职工信息void del(){int n=0;printf("1 按姓名删除\n"); printf("2 按工号删除\n"); scanf("%d",&n);switch(n){case 1: xmsc();break;case 2: ghsc();break;}}void xmsc()//按姓名删除{FILE *fp=NULL;char name[30];int i=0;int j=0;printf("请输入要删除的职工姓名:");scanf("%s",name);for(i=0;i<Number;i++){if (strcmp(name,wo[i].name)==0){for (j=i;j<Number-1;j++){wo[j]=wo[j+1];}Number--;}}//将剩余数据写入文件擦除以前的数据for (i=0;i<Number;i++){fwrite(&wo[i],sizeof(struct worker),1,fp); }fclose(fp);printf("删除成功;\n");}void ghsc()//按工号删除{FILE *fp=NULL;char id[60];int i=0;int j=0;printf("请输入要删除的职工工号:"); scanf("%s",id);for(i=0;i<Number;i++){if (strcmp(id,wo[i].ID)==0){for (j=i;j<Number-1;j++){wo[j]=wo[j+1];}Number--;}}//将剩余数据写入文件擦除以前的数据for (i=0;i<Number;i++){fwrite(&wo[i],sizeof(struct worker),1,fp);}fclose(fp);printf("删除成功;\n");}//统计职工工资void statistics(){int i=0;double s=0.0;double sum[100];for(i=0;i<Number;i++){sum[i]=wo[i].salary1+wo[i].salary2+wo[i].salary3; printf("%s的总工资为:%f\n",wo[i].name,sum[i]); }for(i=0;i<Number;i++){s+=sum[i];}printf("平均工资为:%f\n",s/Number);}//修改职工信息void modify(){int mode=0;printf("请选择修改查找方式\n"); printf("1 按姓名查找修改\n"); printf("2 按工号查找修改\n"); scanf("%d",&mode);switch(mode){case 1: xmxg();break;case 2: ghxg();break;default: printf("输入错误!\n"); break;}}void xmxg()//按姓名修改{FILE *fp=NULL;char name[30];int i=0;printf("请输入要修改的职工姓名:");scanf("%s",name);for (i=0;i<Number;i++){if (strcmp(name,wo[i].name));elsebreak;}printf("\t姓名\t工号\t基本工资\t职务工资\t津贴\n");printf("\t%s\t%s\t%d\t\t%d\t\t%d\n",wo[i].name,wo[i].ID,wo[i].s alary1,wo[i].salary2,wo[i].salary3);printf("请重新输入该职工信息");printf("姓名:");scanf("%s",wo[i].name);printf("工号:");scanf("%s",wo[i].ID);printf("基本工资:");scanf("%d",&wo[i].salary1);printf("职务工资:");scanf("%d",&wo[i].salary2);printf("津贴:");scanf("%d",&wo[i].salary3);//信息修改后重新更新文件里面的数据以保持数据一致性for (i=0;i<Number;i++){fwrite(&wo[i],sizeof(struct worker),1,fp);}fclose(fp);}void ghxg()//按工号修改{FILE *fp=NULL;char id[30];int i=0;printf("请输入要修改的职工工号:");scanf("%s",id);for (i=0;i<Number;i++){if (strcmp(id,wo[i].ID));elsebreak;}printf("\t姓名\t工号\t基本工资\t职务工资\t津贴\n");printf("\t%s\t%s\t%d\t\t%d\t\t%d\n",wo[i].name,wo[i].ID,wo[i].s alary1,wo[i].salary2,wo[i].salary3);printf("请重新输入该职工信息");printf("姓名:");printf("姓名:");scanf("%s",wo[i].name);printf("工号:");scanf("%s",wo[i].ID);printf("基本工资:");scanf("%d",&wo[i].salary1);printf("职务工资:");scanf("%d",&wo[i].salary2);printf("津贴:");scanf("%d",&wo[i].salary3);//信息修改后重新更新文件里面的数据以保持数据一致性for (i=0;i<Number;i++){fwrite(&wo[i],sizeof(struct worker),1,fp);}fclose(fp);printf("\t=======>修改成功\n");}//保存数据void reserve(){printf("\t=====程序在运行时已自动保存.....\n");}void back(){printf("\t===>按Enter键返回主菜单\n");}//作者信息void author(){printf("\t***☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆***\n\n"); printf("\t^^^^^^^^^^^^^^^学校名称^^^^^^^^^^^^^\n\n"); printf("\t^^^^^^^^^^^^^^学院班级^^^^^^^^^^^^^\n\n"); printf("\t^^^^^^^^^^^^^^^XXX制作^^^^^^^^^^^^^\n\n"); printf("\t***★★★★★★★★★★★★★★★★***\n\n");。
#include<stdio.h>#include<string.h>#include<ctype.h>#include<malloc.h>#define null 0typedef struct Info1{char num[10];char name[10];char depar[10];char yfsalary[10];char aband[10];char tax[10];char sfsalary[10];struct Info1 *next;}Info2;typedef struct Info1 *Info;Info head;void display();void find();void modify();void add();void del();void list();void listOne(Info s);Info isExists(char *num);void init();void init(){head=(Info)malloc(sizeof(Info2));head->next=null;}void main(){init();while(1){char c;display();scanf("%c",&c);switch(c){case '1':find();break;case '2':add();break;case '3':modify();break;case '4':del();break;case '5':list();break;case '6':printf("\t\t...退出系统!\n");return;default: printf("\t\t输入错误!请按任意键返回重新选择(1-7)\n");getchar();}}}void display(){printf("\n\t** 欢迎使用员工信息管理系统**\n\n");printf("\t请选(1-7):\n");printf("\t============================================\n");printf("\t\t1.查询员工信息\n");printf("\t\t2.录入员工信息\n");printf("\t\t3.修改员工信息\n");printf("\t\t4.删除员工信息\n");printf("\t\t6.显示所有员工信息\n");printf("\t\t7.退出系统\n");printf("\t============================================\n");printf("\t您的选择是: ");}void listOne(Info p){printf("\n该员工信息记录如下: ");printf("\n==========================================================\n\n");printf("%-12s%-10s%-10s%-7s%-7s%-10s%-10s%\n","员工编号","姓名","部门","应付工资","保险","税金","实付工资");printf("%-12s%-10s%-10s%-7s%-7s%-10s%-10s%\n",p->num,p->name,p->depar,p->yfsalary, p->aband,p->tax,p->sfsalary);}Info isExists(char *num){Info p,q;p=head;q=p->next;while(q!=null){if(strcmp(q->num,num)==0)return p;p=q;q=p->next;}return p;}void add(){Info p,q;char num[10];q=(Info)malloc(sizeof(Info2));printf("\t\t请输入员工编号: ");scanf("%s",num);p=isExists(num);if (p->next==null){strcpy(q->num,num);printf("\t\t请输入员工姓名: ");scanf("%s",q->name);printf("\t\t请输入该员工的部门: ");scanf("%s",q->depar);printf("\t\t请输入该员工的应付工资金额: ");scanf("%s", q->yfsalary);printf("\t\t请输入该员工的保险金额: ");scanf("%s", q->aband);printf("\t\t请输入该员工的税金金额: ");scanf("%s",q->tax);printf("\t\t请输入该员工的实付工资: ");scanf("%s",q->sfsalary);q->next=null;p->next=q;}elseprintf("\n\t\t您所输入的员工编号以存在! ");printf("\n\t\t按任意键返回住菜单......");getchar();void del(){Info p,q;char num[10];if (head->next==null){printf("\n\t\t当前还没有员工信息记录,按任意键返回主菜单......");getchar();return;}printf("\t\t请输入员工编号: ");scanf("%s",num);p=isExists(num);q=p->next;if (q!=null){q=q->next;p->next=q;printf("\n\t\t删除成功! ");}elseprintf("\n\t\t您所输入的员工编号有误或不存在! ");printf("\n\t\t按任意键返回主菜单......");getchar();}void modify(){Info p,q;char num[10];if (head->next==null){printf("\n\t\t当前还没有员工信息记录,按任意键返回主菜单......");getchar();return;}printf("\t\t请输入员工编号: ");scanf("%s",num);p=isExists(num);q=p->next;if(q!=null){listOne(q);printf("\t\t请输入该员工的新姓名: ");scanf("%s",q->name);printf("\t\t请输入该员工的部门: ");scanf("%s",q->depar);printf("\t\t请输入该员工的应付工资金额: ");scanf("%s",q->yfsalary);printf("\t\t请输入该员工的保险: ");scanf("%s",q->aband);printf("\t\t请输入该员工的新税金金额: ");scanf("%s",q->tax);printf("\t\t请输入该员工的新实付工资: ");scanf("%s",q->sfsalary);}elseprintf("\n\t\t您所输入的员工编号有误或不存在!");printf("\n\t\t按任意键返回主菜单......");getchar();}void list(){Info p;if (head->next==null){printf("\n\t\t当前还没有员工信息记录,按任意键返回主菜单......");getchar();return;}printf("\n所有员工信息记录如下: ");printf("\n=================================================================== =====\n\n");printf("%-12s%-10s%-10s%-7s%-7s%-10s%-10s%\n","员工编号","姓名","部门","应付工资","保险","税金","实付金额");p=head->next;while(p!=null){printf("%-12s%-10s%-10s%-7s%-7s%-10s%-10s%\n",p->num,p->name,p->depar,p->yfsalary, p->aband,p->tax,p->sfsalary);p=p->next;}printf("\n\t\t按任意键返回主菜单......");getchar();}void find(){Info p;char num[10];if (head->next==null){printf("\n\t\t当前还没有员工信息记录,按任意键返回主菜单......");getchar();return;}printf("\t\t输入员工编号: ");scanf("%s",num);p=isExists(num);p=p->next;if(p!=null)listOne(p);elseprintf("\n\t\t您所输入的员工信息有误或不存在!");printf("\n\t\t按任意键返回主菜单......");getchar();}。
#include<stdio.h>#include<string.h>#include<conio.h>#include<stdlib.h>#define N 3void enter();int menu();void input();void search();void search_number();void search_name();void edit();void pay();void array_basesalary();void array_reward();void save();struct employee{char number[10];char name[10];char sex[10];int age;float basesalary;float reward;float totalwage;};struct employee emp[N];struct employee replace;struct employee *p=emp;void main(){int c;while(1){printf(" ***************************************************\n");printf(" | 作者信息|\n");printf(" | 姓名:牛熙国学号:201007122 |\n");printf(" | 学院:计算机班级:网络102 |\n");printf("***************************************************\n\n\n\n\n");printf(" \n\n\n\n");printf(" ******************欢迎使用职工工资管理系统*********\n\n\n");printf(" ***************************************************\n");printf(" | 1 进入管理系统| \n");printf(" | 0 退出|\n");printf("***************************************************\n\n\n\n");printf(" 请输入你的选择:");scanf("%d",&c);switch(c){case 1:enter();break;case 0:printf(" 谢谢使用!\n");exit(0);}}}void enter(){char key[10],password[10]="111";int k=1;printf(" 请输入密码:");scanf("%s",key);while(k<=3){if(strcmp(password,key)==0){while(1){int a;a=menu();switch(a){case 1:input();break;case 2:edit();break;case 3:pay();break;case 4:search();break;case 0:printf("\n\n 谢谢使用!\n\n\n\n");save();exit(0);}}}else{k++;printf(" 输入密码错误!请再次输入:");scanf("%s",key);if(k>2){if(strcmp(password,key)==0)continue;else{printf(" 输入密码错误三次,系统将自动退出!\n");exit(0);}}}}}int menu(){int a ;printf("\n\n");printf(" |*****************欢迎进入职工工资管理系统****************|\n");printf(" | 1 职工信息输入 2 职工信息修改|\n");printf(" | 3 职工信息输出 4 工资发放信息|\n");printf(" | 0 退出|\n");printf("|*********************************************************|\n");printf("\n\n");printf(" 请输入你所选择的选项:");scanf("%d",&a);while(a>4||a<0){printf(" error!\n");printf(" 请重新输入你所选择的选项: ");scanf("%d",&a);}return a;}void input(){int c;p=emp;printf(" 进入职工信息输入模块\n\n\n");for(c=0;c<N;c++,p++){p[c].totalwage=p[c].basesalary+p[c].reward;printf(" 请输入第%d个职工信息:\n\n",c+1);printf(" 请输入职工号:");scanf("%s",p->number);if(strcmp(p->number,"0")!=0){printf(" 请输入职工姓名:");scanf("%s",p->name);printf(" 请输入职工性别: ");scanf("%s",&p->sex);printf(" 请输入职工年龄: ");scanf("%d",&p->age);printf(" 请输入职工基本工资:");scanf("%f",&p->basesalary);printf(" 请输入职工奖金:");scanf("%f",&p->reward);printf(" 职工信息输入完成!\n\n");}elsereturn;}save();}void edit(){char e[10];int g=0;char flog;printf(" 请输入你要修改职工的职工号:\n");scanf("%s",e);for(int i=0;i<=N;i++){if(strcmp(e,emp[i].number)==0)break;}printf("-------------------------------------------------------------------------------\n");printf("|职工号|姓名|性别|年龄|基本工资|奖金|\n");printf("|%10s|%9s|%7s| %5d| %10.2f| %10.2f| %10.2f|\n",p[i].number,p[i].name,p[i].sex ,p[i].age,p[i].basesalary,p[i].reward);printf("-------------------------------------------------------------------------------\n");printf(" 是否要修改该职工信息?y(是)or n(否)?\n");getchar();scanf("%c",&flog);if(flog == 'y'){printf(" 请输入新姓名:");scanf("%s",p[i].name);printf(" 请输入性别:");scanf("%s",&p[i].sex);printf(" 请输入年龄:");scanf("%d",&p[i].age);printf(" 请输入基本工资:");scanf("%f",&p[i].basesalary);printf(" 请输入奖金:");scanf("%f",&p[i].reward);printf(" 修改职工信息成功!\n\n");}printf("-------------------------------------------------------------------------------\n");printf("|职工号|姓名|性别|年龄|基本工资|奖金|\n");printf("|%10s|%9s|%7s| %5d| %10.2f| %10.2f| \n",p[i].number,p[i].name,p[i].sex, p[i].age,p[i].basesalary,p[i].reward);printf("-------------------------------------------------------------------------------\n");if(flog == 'n'){printf(" 退出该项操作!\n\n");return;save();}void pay(){int j;while(1){printf("*************************工资排序*********************\n\n");printf(" 1 按基本工资排序\n\n");printf(" 2 按岗位工资排序\n\n");printf(" 0 退出\n\n");printf("\n\n\n");while(1){printf(" 请输入你的选择:");scanf("%d",&j);if(j>=0&&j<=2){switch(j){case 1:array_basesalary();break;case 2:array_reward();break;case 0:return;}}else{printf(" 输入错误!\n\n\n");printf(" 请再次输入你的选择:");}}}}void array_basesalary(){int i,j,k;p=emp;for(i=0;i<N-1;i++){k=i;for(j=i+1;j<N;j++){if(p[k].basesalary<p[j].basesalary)k=j;}if(k!=i){replace=emp[k];emp[k]=emp[i];emp[i]=replace;}}for(j=0;j<N;j++){p[j].totalwage=p[j].reward+p[j].basesalary;printf("-------------------------------------------------------------------------------\n");printf("|职工号|姓名|性别|年龄|基本工资|奖金|总工资|\n");printf("|%10s|%9s|%7s| %5d| %10.2f| %10.2f| %10.2f|\n",p[j].number,p[j].name,p[j ].sex,p[j].age,p[j].basesalary,p[j].reward,p[j].totalwage);}printf("-------------------------------------------------------------------------------\n");}void array_reward(){int i,j;p=emp;for(i=0;i<N;i++){for(j=0;j<N-i;j++){if(p[j].reward<p[j+1].reward){replace=emp[j];emp[j]=emp[j+1];emp[j+1]=replace;}}}for(j=0;j<N;j++){p[j].totalwage=p[j].reward+p[j].basesalary;printf("-------------------------------------------------------------------------------\n");printf("|职工号|姓名|性别|年龄|基本工资|奖金|总工资|\n");printf("|%10s|%9s|%7s| %5d| %10.2f| %10.2f| %10.2f|\n",p[j].number,p[j].name,p[j ].sex,p[j].age,p[j].basesalary,p[j].reward,p[j].totalwage);}printf("-------------------------------------------------------------------------------\n");}void search(){int j;while(1){printf("*********************职工信息查询*********************\n\n\n");printf(" 1 按职工号查询\n");printf(" 2 按职工姓名查询\n");printf(" 0 退出该项操作\n");printf("\n\n");while(1){printf(" 请输入你的选择:");scanf("%d",&j);if(j>=0&&j<=2){switch(j){case 1:search_number();break;case 2:search_name();break;case 0:return;}}else{printf(" 输入错误!\n\n");printf(" 请再次输入你的选择: ");}}}}void search_number(){char e[10];int g=0;p=emp;printf(" 请输入你要查询职工的职工号:\n");scanf("%s",e);for(int i=0;i<=N;i++){if(strcmp(e,emp[i].number)==0)break;}p[i].totalwage=p[i].basesalary+p[i].reward;printf("-------------------------------------------------------------------------------\n");printf("|职工号|姓名|性别|年龄|基本工资|奖金|总工资|\n");printf("|%10s|%9s|%7s| %5d| %10.2f| %10.2f| %10.2f|\n",p[i].number,p[i].name,p[i ].sex,p[i].age,p[i].basesalary,p[i].reward,p[i].totalwage);printf("-------------------------------------------------------------------------------\n");}void search_name(){char e[10];int g=0;p=emp;printf(" 请输入你要查询的职工的姓名:\n");scanf("%s",e);for(int i=0;i<=N;i++){if(strcmp(e,emp[i].name)==0)break;}p[i].totalwage=p[i].basesalary+p[i].reward;printf("-------------------------------------------------------------------------------\n");printf("|职工号|姓名|性别|年龄|基本工资|奖金|总工资|\n");printf("|%10s|%9s|%7s| %5d| %10.2f| %10.2f| %10.2f|\n",p[i].number,p[i].name,p[i ].sex,p[i].age,p[i].basesalary,p[i].reward,p[i].totalwage);printf("-------------------------------------------------------------------------------\n");}void save(){int k;FILE *fp;p=emp;if((fp=fopen("emp_list","wb"))==NULL){printf(" Create file error!\n");return;}for(k=0;k<N;k++,p++){if(fwrite(p,sizeof(struct employee),1,fp)!=1){printf(" file save error!\n\n");break;}elsecontinue;}getchar();fclose(fp);}。