完整c语言工资管理系统

合集下载

员工工资管理系统(c语言编程)

员工工资管理系统(c语言编程)

scanf("%s",num); p=isExists(num); p=p->next; if(p!=null) listOne(p); else printf("\n\t\t printf("\n\t\t getchar(); } 您所输入的员工信息有误或不存在! ......"); ");
按任意键返回主菜单
#include<stdio.h> #include<string.h> #include<ctype.h> #include<malloc.h> #define null 0 typedef 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;
p=head; q=p->next; while(q!=null) { if(strcmp(q->num,num)==0) return p; p=q; q=p->next; } return p; }

工资信息管理系统——C语言

工资信息管理系统——C语言

工资信息管理系统一、题目要求设计工资信息管理系统,要求该系统能够实现工资信息管理。

系统包括录入、浏览、查询、统计等功能。

其中录入功能要求能够添加新的工资信息到文件,浏览功能要求能按照工资卡号、姓名分类浏览,提供分屏显示;有排序功能,排序后按照工资卡号升序或实发工资降序输出;查询功能要求能够按照工资卡号、姓名查询;统计功能要求能够按照月份累计统计某职工在某时间段实发工资总金额。

二、需求分析根据题目要求,由于工资信息是存放在文件中,所以应提供文件的输入输出等操作;在程序中需要浏览工资信息,应提供显示、查找、排序等操作;另外还应提供键盘式选择彩旦实现功能选择。

三、总体设计四、详细设计1.主函数void main(){menu();/*主函数只用于调用菜单*/2.菜单menu(){int n,w1;do{puts("\t\t***************MENU***************\n\n");puts("\t\t\t\t 1.enter data");puts("\t\t\t\t 2.addition data");puts("\t\t\t\t 3.browse all");puts("\t\t\t\t 4.search");puts("\t\t\t\t 5.order");puts("\t\t\t\t 6.exit");puts("\n\n\t\t **********************************\n");printf("Choice your number(1-6):[]\b\b");scanf("%d",&n);if(n<1||n>6){w1=1;getchar();}else w1=0;}while(w1==1);switch(n){case 1:enter();break;case 2:add();break;case 3:browse();break;case 4:search();break;case 5:order();break;case 6:exit(0);}return 1;}3.各功能模块设计1)录入模块数据结构struct employer{int month;char num[11];char name[20];float yfgz;float sf;float df;float sj;float sfgz;}emp[N];N为职工人数,在此宏定义为100,#define N 100那么此阶段的流程图如下[程序]enter(){int i,n;printf("How many employers(0-%d)?:",N-1);scanf("%d",&n);printf("\n Enter data now\n\n");for(i=0;i<n;i++){printf("\n input %dth employer record.\n",i+1);input(i);}if(i!=0) save(n);printf_back();}2)追加模块先确定要追加信息的条数,调用n=load()函数,再调用输入函数input(),最后保存追加的记录。

C语言 课程设计 教师工资管理系统(职工工资管理系统)

C语言 课程设计 教师工资管理系统(职工工资管理系统)

课程设计教师工资管理系统运行平台:VC6.0(其他平台未经测试,不一定保证有效)制作者:弓箭中南大学信息科学与工程学院源代码如下:#include <stdio.h>#include <stdlib.h>#include <string.h>#include <conio.h>#define LEN sizeof(struct teacher)struct teacher{int num;char name[20];char sex[20];char workplace[50];char address[50];long phone;double de_salary;double de_jintie;double de_shenghuobutie;double yingfa_salary;double cost_phone;double cost_water_elec;double cost_rent;double cost_tax;double cost_weisheng;double cost_gongjijin;double cost_all;double shifa_salary;struct teacher *next;};/***********************************读取函数************************************/ struct teacher *load(){struct teacher *p1,*p2,*head;FILE *fp;int i=1;if((fp=fopen("save","rb"))==NULL){printf(" 文件不存在!按下任意键返回主菜单...");getch();return (NULL);}else{head=NULL;p1=(struct teacher *)malloc(LEN);while (fread(p1,LEN-4,1,fp)==1){if(i==1){head=p1;p2=p1;i=2;}else{p2->next=p1;p2=p2->next;}p1=(struct teacher *)malloc(LEN);}p2->next=NULL;free(p1);fclose(fp);return(head);}}/**********************************欢迎菜单函数*************************************/ void welcome(){printf("\n\n\n >>>>>欢迎使用教师工资管理系统Beta1.2<<<<<\n");printf(" *******************************************************\n");printf(" * C语言课程设计教师工资管理系统*\n");printf(" * 班级:电气信息类1001班学号:0909100119 *\n");printf(" * 姓名:弓箭*\n");printf(" *******************************************************\n");printf("\n\n 按下任意键进入系统...");getch();system("cls");}/**********************************制作人员名单*************************************/void list(){system("cls");printf("\n\n\n >>>>>版权所有侵权必究<<<<<\n");printf("*******************************************************************************\n");printf("* 学校(College): 中南大学Central South University *\n");printf("* 软件名称(Software):教师工资管理系统Teacher's Salary Managing System *\n");printf("* 版本号(Edition): Beta1.2 *\n");printf("* 制作人(Producer):弓箭James *\n");printf("* 所在班级(Class):电气信息类1001班Electric Information 1001 *\n");printf("* 所在学院(Institute):信息科学与工程学院Information Engineering Institute*\n");printf("*******************************************************************************\n");printf(" >>>>>ILLEGAL COPY BANNED<<<<<\n");printf("\n\n 按下任意键返回主菜单...");getch();}/***********************************菜单函数*****************************************/int menu(){int i;printf("\n\n\n >>>>>欢迎使用教师工资管理系统Beta1.2<<<<<\n");printf(" *******************************************************\n");printf(" * 1.输入教师信息*\n");printf(" * 2.插入教师信息*\n");printf(" * 3.修改教师信息*\n");printf(" * 4.删除教师信息*\n");printf(" * 5.浏览教师信息*\n");printf(" * 6.显示制作人员名单*\n");printf(" * 7.退出系统*\n");printf(" *******************************************************\n");printf(" 请输入你想要的操作:");scanf("%d",&i);getchar();return i;}/***********************************插入函数*****************************************/void input(){struct teacher *head,*p1,*p2,*p3,*px;int i,t;FILE *fp;char k,n='n',num[30],name[20];p1=p2=p3=px=(struct teacher *)malloc(LEN);if((head=load())!=NULL){do{n='n';printf(" 请输入要插入的教师信息:\n");printf(" ------------------------------\n");printf(" 请输入教工号:");gets(num);px->num=atoi(num);printf(" 请输入姓名:");gets(px->name);printf(" 请输入性别:");gets(px->sex);printf(" 请输入单位名称:");gets(px->workplace);printf(" 请输入家庭住址:");gets(px->address);printf(" 请输入联系电话:");gets(num);px->phone=atoi(num);printf(" 请输入基本工资:");gets(num);px->de_salary=atof(num);printf(" 请输入津贴:");gets(num);px->de_jintie=atof(num);printf(" 请输入生活补贴:");gets(num);px->de_shenghuobutie=atof(num);printf(" 请输入电话费:");gets(num);px->cost_phone=atof(num);printf(" 请输入水电费:");gets(num);px->cost_water_elec=atof(num);printf(" 请输入房租:");gets(num);px->cost_rent=atof(num);printf(" 请输入个人所得税:");gets(num);px->cost_tax=atof(num);printf(" 请输入卫生费:");gets(num);px->cost_weisheng=atof(num);printf(" 请输入公积金:");gets(num);px->cost_gongjijin=atof(num);px->yingfa_salary=px->de_salary+px->de_jintie+px->de_shenghuobutie;px->cost_all=px->cost_phone+px->cost_water_elec+px->cost_rent+px->cost_tax+px->cost_weisheng+px->cost_go ngjijin;px->shifa_salary=px->yingfa_salary-px->cost_all;printf(" 数据输入完毕,按下任意键继续...");getch();system("cls");printf("\n\n\n >>>>>>>>>>> 插入教师信息<<<<<<<<<<<\n");printf(" *******************************************************\n");printf(" * 1.输入教师号*\n");printf(" * 2.输入姓名*\n");printf(" * 3.返回上级菜单*\n");printf(" *******************************************************\n");printf(" 请选择插入方式:");scanf("%d",&i);getchar();while (i<1||i>3){printf(" 输入有误!请重新输入:");scanf("%d",&i);getchar();}switch(i){case 1:printf(" 请输入要插入在哪条数据后面:");scanf("%d",&t);getchar();p1=head;while (p1->num!=t){if (p1->next!=NULL){ p1=p1->next;}else{printf(" 查找不到相关数据!\n");break;}}if (p1->num==t){printf("-----------------------------要插入的信息如下:--------------------------------\n");printf("教工号姓名性别单位名称家庭住址联系电话\n");printf(" %-4d %-13s %s %-19s %-19s%-14ld\n",px->num,px->name,px->sex,px->workplace,px->address,px ->phone);printf("电话费水电费房租个人所得税卫生费公积金合计扣款\n");printf(" %-10.1lf %-10.1lf %-10.1lf %-10.1lf %-10.1lf %-10.1lf %-10.1lf\n",px->cost_phone,px->cost_water_ele c,px->cost_rent,px->cost_tax,px->cost_weisheng,px->cost_gongjijin,px->cost_all);printf("基本工资津贴生活补贴应发工资实发工资\n");printf(" %-13.1lf %-13.1lf %-13.1lf %-13.1lf %-13.1lf\n",px->de_salary,px->de_jintie,px->de_shenghuobutie,px->yingfa_salary,px->shifa_salary);printf("-------------------------------------------------------------------------------\n");printf(" 确定插入吗?(y或n):");scanf("%c",&k);getchar();}if (k=='y'||k=='Y'){if (p1->num==t){if(p1==head)/*如果插入点为头指针*/{p3=p1->next;p1->next=px;px->next=p3;p2=head;}else if(p1->next==NULL)/*如果插入点为末尾指针*/{p3=p1;p1=head;p2=head;while(p1->next!=p3){p1=p1->next;}p1=p1->next;p1->next=px;px->next=NULL;}else{/*如果插入点为中间指针*/p3=p1;p1=head;p2=head;while(p1->next!=p3){p1=p1->next;}p1=p1->next;p3=p1->next;px->next=p3;p1->next=px;}if((fp=fopen("save","wb"))==NULL){printf(" 文件不存在!按下任意键返回主菜单...");getch();}else{do{fwrite(p2,LEN-4,1,fp);if(p2->next!=NULL)p2=p2->next;}while(p2->next!=NULL);if(p2!=head)fwrite(p2,LEN-4,1,fp);}fclose(fp);printf(" 插入成功!按下任意键继续...");getch();}}else {printf(" 插入已被取消!按下任意键继续...");getch();}break;case 2:printf(" 请输入要插入的教师姓名:");gets(name);p1=head;while (strcmp((p1->name),name)!=0){if (p1->next!=NULL)p1=p1->next;else{printf(" 查找不到相关数据!\n");break;}}if (strcmp((p1->name),name)==0){printf("-----------------------------要插入的信息如下:--------------------------------\n");printf("教工号姓名性别单位名称家庭住址联系电话\n");printf(" %-4d %-13s %s %-19s %-19s%-14ld\n",p1->num,p1->name,p1->sex,p1->workplace,p1->address,p1 ->phone);printf("电话费水电费房租个人所得税卫生费公积金合计扣款\n");printf(" %-10.1lf %-10.1lf %-10.1lf %-10.1lf %-10.1lf %-10.1lf %-10.1lf \n",p1->cost_phone,p1->cost_water_elec,p1->cost_rent,p1->cost_tax,p1->cost_weisheng,p1->cost_gongjijin,p1->cost_al l);printf("基本工资津贴生活补贴应发工资实发工资\n");printf(" %-13.1lf %-13.1lf %-13.1lf %-13.1lf %-13.1lf\n",p1->de_salary,p1->de_jintie,p1->de_shenghuobutie,p1->yingfa_salary,p1->shifa_salary);printf("-------------------------------------------------------------------------------\n");printf(" 确定插入吗?(y或n):");scanf("%c",&k);getchar();}if (k=='y'||k=='Y'){if (strcmp((p1->name),name)==0){if(p1==head)/*如果插入点为头指针*/{p1->next=px;p2=head;}else if(p1->next==NULL)/*如果插入点为末尾指针*/{p3=p1;p1=head;p2=head;while(p1->next!=p3){p1=p1->next;}p1=p1->next;p1->next=px;px->next=NULL;}else{/*如果插入点为中间指针*/p3=p1;p1=head;p2=head;while(p1->next!=p3){p1=p1->next;}p1=p1->next;p1->next=px;p3=p3->next;px->next=p3;}if((fp=fopen("save","wb"))==NULL){printf(" 文件不存在!按下任意键返回主菜单...");getch();}else{do{fwrite(p2,LEN-4,1,fp);if(p2->next!=NULL)p2=p2->next;}while(p2->next!=NULL);if(p2!=head)fwrite(p2,LEN-4,1,fp);}fclose(fp);printf(" 插入成功!按下任意键继续...");getch();}}else {printf(" 插入已被取消!按下任意键继续...");getch();}break;case 3:break;default :break;}if (i!=3){printf("\n 继续插入其他教师的信息吗?(y或n)");scanf("%c",&n);getchar();}}while((n=='y'||n=='Y')&&i!=3);}printf(" 数据插入成功!按下任意键返回主菜单...");getch();getchar();}/***********************************输入函数*****************************************/void insert(){FILE *fp;char m,num[30];struct teacher *p1;p1=(struct teacher *)malloc(LEN);if((fp=fopen("save","ab"))==NULL){printf(" 文件不存在!按下任意键返回主菜单...");getch();}else{printf(" 请输入教师信息:\n");do{printf(" ------------------------------\n");printf(" 请输入教工号:");gets(num);p1->num=atoi(num);printf(" 请输入姓名:");gets(p1->name);printf(" 请输入性别:");gets(p1->sex);printf(" 请输入单位名称:");gets(p1->workplace);printf(" 请输入家庭住址:");gets(p1->address);printf(" 请输入联系电话:");gets(num);p1->phone=atoi(num);printf(" 请输入基本工资:");gets(num);p1->de_salary=atof(num);printf(" 请输入津贴:");gets(num);p1->de_jintie=atof(num);printf(" 请输入生活补贴:");gets(num);p1->de_shenghuobutie=atof(num);printf(" 请输入电话费:");gets(num);p1->cost_phone=atof(num);printf(" 请输入水电费:");gets(num);p1->cost_water_elec=atof(num);printf(" 请输入房租:");gets(num);p1->cost_rent=atof(num);printf(" 请输入个人所得税:");gets(num);p1->cost_tax=atof(num);printf(" 请输入卫生费:");gets(num);p1->cost_weisheng=atof(num);printf(" 请输入公积金:");gets(num);p1->cost_gongjijin=atof(num);p1->yingfa_salary=p1->de_salary+p1->de_jintie+p1->de_shenghuobutie;p1->cost_all=p1->cost_phone+p1->cost_water_elec+p1->cost_rent+p1->cost_tax+p1->cost_weisheng+p1->cost_go ngjijin;p1->shifa_salary=p1->yingfa_salary-p1->cost_all;fwrite(p1,LEN-4,1,fp);printf(" 输入下一个?(y或n)");m=getchar();if(m!='y'&&m!='Y'){printf(" 数据保存成功!按下任意键返回主菜单...");getch();}getchar();}while (m=='y'||m=='Y');}fclose(fp);}/***********************************修改函数*****************************************/ void modify(){struct teacher *head,*p1,*p2;int i;FILE *fp;char m='n',n='n',num2[30];p1=head=(struct teacher *)malloc(LEN);if((head=load())!=NULL){do{int num=0;char name[20];p1=head;system("cls");printf("\n\n\n >>>>>>>>>>> 修改教师信息<<<<<<<<<<<\n");printf(" *******************************************************\n");printf(" * 1.输入教师号*\n");printf(" * 2.输入姓名*\n");printf(" * 3.返回上级菜单*\n");printf(" *******************************************************\n");printf(" 请选择修改方式:");scanf("%d",&i);getchar();while (i<1||i>3){printf(" 输入有误!请重新输入:");scanf("%d",&i);getchar();}switch(i){case 1:printf(" 请输入要修改的教师号:");scanf("%d",&num);getchar();while (p1->num!=num){if (p1->next!=NULL)p1=p1->next;else{printf(" 查找不到相关数据!\n");break;}}if (p1->num==num){system("cls");printf("\n\n\n >>>>>欢迎使用教师工资管理系统Beta1.2<<<<<\n");printf("----------------------------------原信息如下:---------------------------------\n");printf("教工号姓名性别单位名称家庭住址联系电话\n");printf(" %-4d %-13s %s %-19s %-19s%-14ld\n",p1->num,p1->name,p1->sex,p1->workplace,p1->address,p1 ->phone);printf("电话费水电费房租个人所得税卫生费公积金合计扣款\n");printf(" %-10.1lf %-10.1lf %-10.1lf %-10.1lf %-10.1lf %-10.1lf %-10.1lf\n",p1->cost_phone,p1->cost_water_ele c,p1->cost_rent,p1->cost_tax,p1->cost_weisheng,p1->cost_gongjijin,p1->cost_all);printf("基本工资津贴生活补贴应发工资实发工资\n");printf(" %-13.1lf %-13.1lf %-13.1lf %-13.1lf %-13.1lf\n",p1->de_salary,p1->de_jintie,p1->de_shenghuobutie,p1->yingfa_salary,p1->shifa_salary);printf("-------------------------------------------------------------------------------\n");printf(" *******************************************************\n");printf(" * 1.教师号 2.姓名*\n");printf(" * 3.性别 4.单位名称*\n");printf(" * 5.家庭住址 6.联系电话*\n");printf(" * 7.基本工资8.津贴*\n");printf(" * 9.生活补贴10.电话费*\n");printf(" * 11.水电费12.房租*\n");printf(" * 13.所得税14.卫生费*\n");printf(" * 15.公积金*\n");printf(" *******************************************************\n");do{printf(" 请选择要修改的数据:");scanf("%d",&i);getchar();while (i>15||i<1)printf(" 输入有误!请重新输入:");scanf("%d",&i);getchar();}switch(i){case 1:printf(" 请输入新教师号:");gets(num2);p1->num=atoi(num2);break;case 2:printf(" 请输入新姓名:");gets(p1->name);break;case 3:printf(" 请输入新性别:");gets(p1->sex);break;case 4:printf(" 请输入新单位名称:");gets(p1->workplace);break;case 5:printf(" 请输入新家庭住址:");gets(p1->address);break;case 6:printf(" 请输入新联系电话:");gets(num2);p1->phone=atoi(num2);break;case 7:printf(" 请输入新基本工资:");gets(num2);p1->de_salary=atof(num2);break;case 8:printf(" 请输入新津贴:");gets(num2);p1->de_jintie=atof(num2);break;case 9:printf(" 请输入新生活补贴:");gets(num2);p1->de_shenghuobutie=atof(num2);break;case 10:printf(" 请输入新电话费:");gets(num2);p1->cost_phone=atof(num2);break;case 11:printf(" 请输入新水电费:");gets(num2);p1->cost_water_elec=atof(num2);break;case 12:printf(" 请输入新房租:");gets(num2);p1->cost_rent=atof(num2);break;case 13:printf(" 请输入新所得税:");gets(num2);p1->cost_tax=atof(num2);break;case 14:printf(" 请输入新卫生费:");gets(num2);p1->cost_weisheng=atof(num2);break;case 15:printf(" 请输入新公积金:");gets(num2);p1->cost_gongjijin=atof(num2);break;default:break;}p1->yingfa_salary=p1->de_salary+p1->de_jintie+p1->de_shenghuobutie;p1->cost_all=p1->cost_phone+p1->cost_water_elec+p1->cost_rent+p1->cost_tax+p1->cost_weisheng+p1->cost_go ngjijin;p1->shifa_salary=p1->yingfa_salary-p1->cost_all;printf(" 继续修改其他数据吗?(y或n):");scanf("%c",&m);getchar();}while (m=='y'||m=='Y');p2=head;if((fp=fopen("save","wb"))==NULL){printf(" 文件不存在!按下任意键返回主菜单...");getch();}elsefwrite(head,LEN-4,1,fp);do{p2=p2->next;fwrite(p2,LEN-4,1,fp);}while(p2->next!=NULL);printf("------------------------------修改后数据如下:---------------------------------\n");printf("教工号姓名性别单位名称家庭住址联系电话\n");printf(" %-4d %-13s %s %-19s %-19s%-14ld\n",p1->num,p1->name,p1->sex,p1->workplace,p1->address,p1 ->phone);printf("电话费水电费房租个人所得税卫生费公积金合计扣款\n");printf(" %-10.1lf %-10.1lf %-10.1lf %-10.1lf %-10.1lf %-10.1lf %-10.1lf \n",p1->cost_phone,p1->cost_water_elec,p1->cost_rent,p1->cost_tax,p1->cost_weisheng,p1->cost_gongjijin,p1->cost_al l);printf("基本工资津贴生活补贴应发工资实发工资\n");printf(" %-13.1lf %-13.1lf %-13.1lf %-13.1lf %-13.1lf\n",p1->de_salary,p1->de_jintie,p1->de_shenghuobutie,p1->yingfa_salary,p1->shifa_salary);printf("-------------------------------------------------------------------------------\n");}fclose(fp);}break;case 2:printf(" 请输入要修改的教师姓名:");gets(name);while (strcmp(p1->name,name)!=0){if (p1->next!=NULL)p1=p1->next;else{printf(" 查找不到相关数据!\n");break;}}if (strcmp(p1->name,name)==0){system("cls");printf("\n\n\n >>>>>欢迎使用教师工资管理系统Beta1.2<<<<<\n");printf("----------------------------------原信息如下:---------------------------------\n");printf("教工号姓名性别单位名称家庭住址联系电话\n");printf(" %-4d %-13s %s %-19s %-19s%-14ld\n",p1->num,p1->name,p1->sex,p1->workplace,p1->address,p1 ->phone);printf("电话费水电费房租个人所得税卫生费公积金合计扣款\n");printf(" %-10.1lf %-10.1lf %-10.1lf %-10.1lf %-10.1lf %-10.1lf %-10.1lf \n",p1->cost_phone,p1->cost_water_elec,p1->cost_rent,p1->cost_tax,p1->cost_weisheng,p1->cost_gongjijin,p1->cost_al l);printf("基本工资津贴生活补贴应发工资实发工资\n");printf(" %-13.1lf %-13.1lf %-13.1lf %-13.1lf %-13.1lf\n",p1->de_salary,p1->de_jintie,p1->de_shenghuobutie,p1->yingfa_salary,p1->shifa_salary);printf("-------------------------------------------------------------------------------\n");printf(" *******************************************************\n");printf(" * 1.教师号 2.姓名*\n");printf(" * 3.性别 4.单位名称*\n");printf(" * 5.家庭住址 6.联系电话*\n");printf(" * 7.基本工资8.津贴*\n");printf(" * 9.生活补贴10.电话费*\n");printf(" * 11.水电费12.房租*\n");printf(" * 13.所得税14.卫生费*\n");printf(" * 15.公积金*\n");printf(" *******************************************************\n");do{printf(" 请选择要修改的数据:");scanf("%d",&i);getchar();while (i>15||i<1){printf(" 输入有误!请重新输入:");scanf("%d",&i);getchar();}switch(i){case 1:printf(" 请输入新教师号:");gets(num2);p1->num=atoi(num2);break;case 2:printf(" 请输入新姓名:");gets(p1->name);break;case 3:printf(" 请输入新性别:");gets(p1->sex);break;case 4:printf(" 请输入新单位名称:");gets(p1->workplace);break;case 5:printf(" 请输入新家庭住址:");gets(p1->address);break;case 6:printf(" 请输入新联系电话:");gets(num2);p1->phone=atoi(num2);break;case 7:printf(" 请输入新基本工资:");gets(num2);p1->de_salary=atof(num2);break;case 8:printf(" 请输入新津贴:");gets(num2);p1->de_jintie=atof(num2);break;case 9:printf(" 请输入新生活补贴:");gets(num2);p1->de_shenghuobutie=atof(num2);break;case 10:printf(" 请输入新电话费:");gets(num2);p1->cost_phone=atof(num2);break;case 11:printf(" 请输入新水电费:");gets(num2);p1->cost_water_elec=atof(num2);break;case 12:printf(" 请输入新房租:");gets(num2);p1->cost_rent=atof(num2);break;case 13:printf(" 请输入新所得税:");gets(num2);p1->cost_tax=atof(num2);break;case 14:printf(" 请输入新卫生费:");gets(num2);p1->cost_weisheng=atof(num2);break;case 15:printf(" 请输入新公积金:");gets(num2);p1->cost_gongjijin=atof(num2);break;default:break;}p1->yingfa_salary=p1->de_salary+p1->de_jintie+p1->de_shenghuobutie;p1->cost_all=p1->cost_phone+p1->cost_water_elec+p1->cost_rent+p1->cost_tax+p1->cost_weisheng+p1->cost_go ngjijin;p1->shifa_salary=p1->yingfa_salary-p1->cost_all;printf(" 继续修改其他数据吗?(y或n):");scanf("%c",&m);getchar();}while (m=='y'||m=='Y');p2=head;if((fp=fopen("save","wb"))==NULL){printf(" 文件不存在!按下任意键返回主菜单...");getch();}else{fwrite(head,LEN-4,1,fp);do{p2=p2->next;fwrite(p2,LEN-4,1,fp);}while(p2->next!=NULL);printf("------------------------------修改后数据如下:---------------------------------\n");printf("教工号姓名性别单位名称家庭住址联系电话\n");printf(" %-4d %-13s %s %-19s %-19s%-14ld\n",p1->num,p1->name,p1->sex,p1->workplace,p1->address,p1 ->phone);printf("电话费水电费房租个人所得税卫生费公积金合计扣款\n");printf(" %-10.1lf %-10.1lf %-10.1lf %-10.1lf %-10.1lf %-10.1lf %-10.1lf \n",p1->cost_phone,p1->cost_water_elec,p1->cost_rent,p1->cost_tax,p1->cost_weisheng,p1->cost_gongjijin,p1->cost_al l);printf("基本工资津贴生活补贴应发工资实发工资\n");printf(" %-13.1lf %-13.1lf %-13.1lf %-13.1lf %-13.1lf\n",p1->de_salary,p1->de_jintie,p1->de_shenghuobutie,p1->yingfa_salary,p1->shifa_salary);printf("-------------------------------------------------------------------------------\n");}fclose(fp);}break;case 3:break;default :break;}if (i!=3){printf("\n 继续修改其他教师的信息吗?(y或n)");scanf("%c",&n);}}while((n=='y'||n=='Y')&&i!=3);}}/***********************************删除函数*****************************************/void deletes(){struct teacher *head,*p1,*p2,*p3;int i;char k;FILE *fp;char n='n';p1=p2=p3=(struct teacher *)malloc(LEN);if((head=load())!=NULL){do{int num;char name[20];p1=head;system("cls");printf("\n\n\n >>>>>>>>>>> 删除教师信息<<<<<<<<<<<\n");printf(" *******************************************************\n");printf(" * 1.输入教师号*\n");printf(" * 2.输入姓名*\n");printf(" * 3.返回上级菜单*\n");printf(" *******************************************************\n");printf(" 请选择删除方式:");scanf("%d",&i);getchar();while (i<1||i>3){printf(" 输入有误!请重新输入:");scanf("%d",&i);getchar();}switch(i){case 1:printf(" 请输入要删除的信息的教师号:");scanf("%d",&num);getchar();while (p1->num!=num){if (p1->next!=NULL)p1=p1->next;else{printf(" 查找不到相关数据!\n");break;}}if (p1->num==num){printf("-----------------------------要删除的信息如下:--------------------------------\n");printf("教工号姓名性别单位名称家庭住址联系电话\n");printf(" %-4d %-13s %s %-19s %-19s%-14ld\n",p1->num,p1->name,p1->sex,p1->workplace,p1->address,p1 ->phone);printf("电话费水电费房租个人所得税卫生费公积金合计扣款\n");printf(" %-10.1lf %-10.1lf %-10.1lf %-10.1lf %-10.1lf %-10.1lf %-10.1lf\n",p1->cost_phone,p1->cost_water_ele c,p1->cost_rent,p1->cost_tax,p1->cost_weisheng,p1->cost_gongjijin,p1->cost_all);printf("基本工资津贴生活补贴应发工资实发工资\n");printf(" %-13.1lf %-13.1lf %-13.1lf %-13.1lf %-13.1lf\n",p1->de_salary,p1->de_jintie,p1->de_shenghuobutie,p1->yingfa_salary,p1->shifa_salary);printf("-------------------------------------------------------------------------------\n");printf(" 确定删除吗?(y或n):");scanf("%c",&k);getchar();}if (k=='y'||k=='Y'){if (p1->num==num){if(p1==head){p1=p1->next;p2=p1;}else if(p1->next==NULL){p3=p1;p1=head;p2=head;while(p1->next!=p3){p1=p1->next;}p1->next=NULL;}else{p2=head;p3=p1;p1=head;while(p1->next!=p3){p1=p1->next;}p3=p3->next;p1->next=p3;}if((fp=fopen("save","wb"))==NULL){printf(" 文件不存在!按下任意键返回主菜单...");getch();}else{do{fwrite(p2,LEN-4,1,fp);if(p2->next!=NULL)p2=p2->next;}while(p2->next!=NULL);if(p2!=head)fwrite(p2,LEN-4,1,fp);}fclose(fp);printf(" 删除成功!按下任意键继续...");getch();}}else {printf(" 删除已被取消!按下任意键继续...");getch();}break;case 2:printf(" 请输入要修改的教师姓名:");gets(name);while (strcmp((p1->name),name)!=0){if (p1->next!=NULL)p1=p1->next;else{printf(" 查找不到相关数据!\n");break;}}if (strcmp((p1->name),name)==0){printf("-----------------------------要删除的信息如下:--------------------------------\n");printf("教工号姓名性别单位名称家庭住址联系电话\n");printf(" %-4d %-13s %s %-19s %-19s%-14ld\n",p1->num,p1->name,p1->sex,p1->workplace,p1->address,p1 ->phone);printf("电话费水电费房租个人所得税卫生费公积金合计扣款\n");printf(" %-10.1lf %-10.1lf %-10.1lf %-10.1lf %-10.1lf %-10.1lf %-10.1lf \n",p1->cost_phone,p1->cost_water_elec,p1->cost_rent,p1->cost_tax,p1->cost_weisheng,p1->cost_gongjijin,p1->cost_al l);printf("基本工资津贴生活补贴应发工资实发工资\n");printf(" %-13.1lf %-13.1lf %-13.1lf %-13.1lf %-13.1lf\n",p1->de_salary,p1->de_jintie,p1->de_shenghuobutie,p1->yingfa_salary,p1->shifa_salary);printf("-------------------------------------------------------------------------------\n");printf(" 确定删除吗?(y或n):");scanf("%c",&k);getchar();}if (k=='y'||k=='Y'){if (strcmp((p1->name),name)==0){if(p1==head){p1=p1->next;p2=p1;}else if(p1->next==NULL){p3=p1;p1=head;p2=head;while(p1->next!=p3){p1=p1->next;}p1->next=NULL;}else{p2=head;p3=p1;p1=head;while(p1->next!=p3){p1=p1->next;}p3=p3->next;p1->next=p3;}if((fp=fopen("save","wb"))==NULL){printf(" 文件不存在!按下任意键返回主菜单...");getch();}else{do{fwrite(p2,LEN-4,1,fp);if(p2->next!=NULL)p2=p2->next;}while(p2->next!=NULL);if(p2!=head)fwrite(p2,LEN-4,1,fp);}fclose(fp);printf(" 删除成功!按下任意键继续...");getch();}}else {printf(" 删除已被取消!按下任意键继续...");getch();}break;case 3:break;default :break;}if (i!=3){printf("\n 继续删除其他教师的信息吗?(y或n)");scanf("%c",&n);}}while((n=='y'||n=='Y')&&i!=3);}。

员工工资管理系统(c语言编程)

员工工资管理系统(c语言编程)

#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。

员工工资管理系统(c语言编程)

员工工资管理系统(c语言编程)

#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();}欢迎您的下载,资料仅供参考!致力为企业和个人提供合同协议,策划案计划书,学习资料等等打造全网一站式需求。

员工工资管理系统(c语言编程)6页

员工工资管理系统(c语言编程)6页

员工工资管理系统(c语言编程)6页一、设计目标1、完成一个员工工资管理系统,包括对员工信息的添加、删除、修改和查询、员工工资管理和统计等功能。

2、程序必须具备易用性、可靠性、安全性和稳定性等特点。

二、程序结构设计员工工资管理系统是由若干模块构成的一个整体,它们之间相互联系,共同完成对员工信息的处理和管理。

程序分为主界面模块、添加模块、删除模块、修改模块、查询模块、统计模块、退出模块。

三、模块功能设计1、主界面模块主界面包括菜单栏和功能栏,菜单栏包括添加、删除、修改、查询、统计和退出功能,功能栏是对主界面菜单的补充,包括一些快捷操作按钮。

2、添加模块添加模块是用来录入员工信息的,可以录入的信息有员工编号、员工姓名、员工部门、员工工作年限、员工基本工资、员工奖金等。

添加模块会对信息进行一系列的校验,要求信息必须完整正确才能录入。

3、删除模块删除模块是用来删除员工信息的,输入员工编号就可以删除该员工的信息。

5、查询模块查询模块提供了多种查询方式,包括按部门查询、按姓名查询、按工作年限查询、按基本工资查询、按奖金查询等。

查询结果会按照员工编号的顺序进行排序。

6、统计模块统计模块会根据查询结果进行工资统计,包括总工资、平均工资、最高工资和最低工资等。

7、退出模块退出模块是用来关闭程序的,保证程序的安全性和稳定性。

四、程序流程设计1、主界面程序启动后,会显示主界面界面,包括菜单栏和功能栏。

2、录入信息点击添加功能或者添加按钮,会进入添加模块,要求用户输入员工信息,录入完成后数据将保存到文件中。

4、修改信息点击修改功能或者修改按钮,会进入修改模块,输入员工编号,然后修改员工信息。

5、查询信息点击查询功能或者查询按钮,会进入查询模块,选择查询方式,输入查询条件,系统将显示符合条件的员工信息。

6、工资统计当查询完成后,点击统计功能或者统计按钮,会进入统计模块,系统将根据查询结果进行统计。

7、程序退出当操作完成后,点击退出功能或者退出按钮,会关闭程序。

工资管理系统课程设计C语言

工资管理系统课程设计C语言

工资管理系统 课程设计 C语言一、课程目标知识目标:1. 理解工资管理系统的基本概念和功能需求;2. 掌握C语言中的基本数据类型、运算符、控制结构等编程知识点;3. 学会使用C语言设计并实现一个简单的工资管理系统。

技能目标:1. 能够运用C语言编写出结构清晰、逻辑合理的程序代码;2. 能够运用数组、结构体等数据结构存储和管理工资数据;3. 能够运用文件操作实现工资数据的持久化存储。

情感态度价值观目标:1. 培养学生解决问题的能力和团队协作精神,激发学生对编程的兴趣;2. 增强学生对信息技术的认识,使其意识到信息技术在现实生活中的应用价值;3. 培养学生严谨、认真的学习态度,提高学生的编程素养。

课程性质:本课程为C语言编程实践课,旨在让学生通过动手实践,掌握C语言编程的基本技能,并能够运用所学知识解决实际问题。

学生特点:学生为高年级学生,已具备一定的C语言基础,有较强的逻辑思维能力,但对实际应用场景的编程经验不足。

教学要求:结合学生特点,注重实践操作,引导学生从实际问题出发,逐步培养编程思维,提高编程能力。

课程目标分解为具体学习成果,便于教学设计和评估。

二、教学内容1. 工资管理系统概述- 系统需求分析- 功能模块划分2. C语言基础知识回顾- 数据类型- 运算符与表达式- 控制结构(顺序、分支、循环)3. 数据结构设计- 数组- 结构体4. 函数与模块化编程- 函数定义与调用- 模块化设计5. 文件操作- 文件打开与关闭- 文件读写操作6. 工资管理系统功能实现- 员工信息管理- 工资计算- 工资查询- 数据存储与读取7. 测试与调试- 功能测试- 性能测试- 代码调试教学内容安排与进度:第1周:工资管理系统概述及需求分析第2周:C语言基础知识回顾第3周:数据结构设计第4周:函数与模块化编程第5周:文件操作第6周:工资管理系统功能实现(1)第7周:工资管理系统功能实现(2)第8周:测试与调试教材章节及内容:《C语言程序设计》第3章:数据类型、运算符与表达式第4章:控制结构第6章:函数与模块化编程第7章:数组和字符串第8章:结构体与共同体第9章:文件操作教学内容紧密结合课程目标,注重科学性和系统性,通过以上教学内容,使学生能够掌握C语言编程的核心知识,并能够将其应用于工资管理系统的设计与实现。

员工工资管理系统(c语言编程)

员工工资管理系统(c语言编程)

#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();}。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

#include<stdio.h>#include<stdlib.h>#include<string.h>#include<malloc.h>#include<conio.h>#define LEN sizeof(wor)struct worker{long kahao;/*员工工资卡号*/char name[10];/*员工姓名*/int month;//月份float yfgz;/*应发工资*/float sf;/*水费*/float df;/*电费*/float sj;/*税金*/float sfgz;/*实发工资*/struct worker *next;};typedef struct worker wor;int num;void userId();//用户登录函数char menu(void);//主菜单wor *read(wor *head);//加载函数int save(wor *head);//保存函数void inputMenu(wor *head);//输入菜单void input(wor **head);//输入员工信息void searchMenu(wor *head);//查询菜单int numSearch(wor *pNew);//卡号查询方式函数int nameSearch(wor *pNew);//姓名查询方式函数void search(wor *head);//查询功能void deleteSal(wor *head);//删除员工信息wor *deleteNode(wor *head, long nodeNum);//找到删除节点void printSal(wor *head);//打印员工信息void totalSalMenu(wor *head);//统计工资菜单void totalSal(wor *head);/*统计员工某时间段的实发工资总和*/void DeleteMemory(wor *head);//删除内存void order(wor *head);//排序浏览函数char menu1(void);//排序浏览菜单void modify(wor *head);//修改函数,修改完后保存信息void modifyNode(wor *head);//查找节点并修改信息/*==================================================================== ==========================*/int main()/*主函数main,功能:通过调用各函数,实现员工工资信息管理系统的功能*/ {char ch;wor *head=NULL;system("color f2");printf("\n");printf("\n");printf("\n");printf("\n");printf("\n");printf("#〓§〓〓〓〓〓§〓〓〓〓〓〓§〓〓〓〓〓〓§〓〓〓〓〓〓§〓〓〓〓〓〓§〓#\n");printf("↓↓↓↓↓↓\n");printf("☆★☆☆★☆☆★☆☆★☆☆★☆☆★☆\n");printf("☆欢☆☆迎☆☆进☆☆入☆☆系☆☆统☆\n");printf("☆★☆☆★☆☆★☆☆★☆☆★☆☆★☆\n");printf("↓↓↓↓↓↓\n");printf("※※※※※※\n");printf("※※※※※※\n");getchar();userId();system("cls");while(1){ch=menu();switch(ch)/*用switch语句实现功能选择*/{case '1':head=read(head);inputMenu(head);break;/*调用创建链表函数,添加员工工资信息,并保存到文件夹中*/ case '2':head=read(head);searchMenu(head);break;/*调用信息查询函数,查询员工工资信息*/case '3':head=read(head);deleteSal(head);break;/*调用删除信息函数,删除员工工资信息*/case '4':head=read(head);printSal(head);break;/*调用显示信息资料函数*/case '5':head=read(head);totalSalMenu(head);break;/*统计某时间段员工工资信息*/case '6':head=read(head);order(head);break;/*按照卡号对员工进行排序浏览*/case '7':head=read(head);modify(head);break;//修改员工工资信息case '0':system("cls");printf("\n\n\n\n\n");printf("\t\t#〓§〓〓〓〓〓§〓〓〓〓〓〓§〓〓〓〓〓〓§〓#\n");printf("\t\t↓↓↓↓\n");printf("\t\t☆★☆☆★☆☆★☆☆★☆\n");printf("\t\t☆感☆☆谢☆☆使☆☆用☆\n");printf("\t\t☆★☆☆★☆☆★☆☆★☆\n");printf("\t\t↓↓↓↓\n");printf("\t\t※※※※\n");printf("\t\t※※※※\n");printf("\n\n\n\n\n");printf("\t\t\t\t\t\t\t\t12 软件1班\n");printf("\t\t\t\t\t\t\t\t 蔡文豪\n");printf("\t\t\t\t\t\t\t\t201241404120\n\n\n");getchar();exit(0);/*退出系统,返回主界面*/DeleteMemory(head); /*释放所有已分配的内存*/printf("End of program!");break;default:printf("输入错误,请重试!\n");}save(head);}}/*==================================================================== ==========================*/char menu(void)/*函数menu,功能:主菜单选择界面*/{char ch;printf(" ★☆★工资信息管理系统☆★☆\n");printf("\n");printf("★----------------1 * 输入员工工资信息*-----------------------★\n\n");printf("\t☆----------------2 * 查询员工工资信息*-----------------------☆\n\n");printf("★----------------3 * 删除员工工资信息*-----------------------★\n\n");printf("\t☆----------------4 * 浏览员工工资信息*-----------------------☆\n\n");printf("★----------------5 * 统计实发工资总额*-----------------------★\n\n ");printf("\t☆----------------6 * 工资信息排序处理*-----------------------☆\n");printf("★----------------7 * 修改员工工资信息*-----------------------★\n\n ");printf("\t☆----------------0 * 退出工资管理系统*-----------------------☆\n");/*菜单选择界面*/printf("\n");printf("请输入您的选择:");scanf(" %c",&ch);/*选择操作*/return ch;}/*==================================================================== ==========================*/void userId(){int count=0;char q[5]="1234";char b[5];char c;int i=0;part1:printf("请输入您的密码:");while((c=getch())!=13){putchar('*');b[i]=c;i++;}b[i]='\0';if(strcmp(q,b)!=0){printf("密码错误,请重新输入\n");getchar();count++;if(count>=3){printf("您已经三次输入用户名或密码错误,系统自动退出!\n");exit(0); /*退出系统*/}goto part1;}printf("\n");}/*==================================================================== ==========================*/wor *read(wor *head){FILE *fp;wor *s;wor *p;int n;fp=fopen("D:\\1.txt","rb");//以制度方式打开一个二进制文件if(NULL==fp)//如果打开失败就返回-1;{printf("打开文件失败!\n");head=NULL;return NULL;}head=(wor *)malloc(sizeof(wor));p=head;while(!feof(fp)){//为下个节点分配内存空间s=(wor *)malloc(sizeof(wor));n=fread(s,sizeof(wor),1,fp);//从文件读取数据到节点if(n<1){free(s);p->next=NULL;//最后一个节点为NULLbreak;}num++;p->next=s;//保存下个节点p=p->next;//切换至下个节点p->next=NULL;//最后一个节点为NULL}fclose(fp);return head;}/*==================================================================== ==========================*/int save(wor *head){FILE *fp;wor *p;fp=fopen("D:\\1.txt","wb");if(NULL==fp){printf("打开文件失败!\n");return -1;}p=head->next;do{fwrite(p,LEN,1,fp);//把数据保存到fp指向的文件中p=p->next;}while(p!=NULL);fflush(fp);fclose(fp);return 0;}/*==================================================================== ==========================*/void inputMenu(wor *head){char ch;int i=0;do{input(&head);printf("是否继续添加(Y/N)?\n");printf("请输入您的选择:");scanf(" %c",&ch);i++;}while(ch=='y'||ch=='Y');printf("您添加了%d个员工信息!\n",i);}/*==================================================================== ==========================*/void input(wor **head){wor *s;wor *p;if(*head==NULL)//如果表头为空,先为它分配内存{*head=(wor *)malloc(LEN);p=*head;}else//否则说明有内容,直接切换到尾节点{p=*head;while(p->next)p=p->next;}s=(wor *)malloc(LEN);//为这个节点分配内存printf("请输入员工工资卡号(6位):\n");scanf("%ld",&s->kahao);while(s->kahao<100000||s->kahao>=1000000){printf("输入错误,请重新输入6位员工编号:");scanf("%d",&s->kahao);}printf("请输入员工姓名:");scanf("%s",s->name);printf("请输入您要建立的月份:");scanf("%d",&s->month);printf("请输入此人该月应发工资:");scanf("%f",&s->yfgz);printf("请输入此人该月水费:");scanf("%f",&s->sf);printf("请输入电费:");scanf("%f",&s->df);if(s->yfgz<=800)s->sj=0;else if(s->yfgz>800&&s->yfgz<1400)s->sj=(s->yfgz-800)*0.05;elses->sj=(s->yfgz-1400)*0.10;s->sfgz=s->yfgz-s->sf-s->df-s->sj;p->next=s;//保存这个节点p=p->next;//切换至下一个节点p->next=NULL;printf("已成功添加信息!\n");}/*==================================================================== ==========================*/void searchMenu(wor *head){char ch;do{search(head);printf("是否继续查询(Y/N)?\n");printf("请输入您的选择:");scanf(" %c",&ch);}while(ch=='y'||ch=='Y');}/*==================================================================== ==========================*/void search(wor *head){int a;wor *p=head;printf("\t\t\t*********查询菜单**************\n");printf("\t\t\t* 1 按职工的编号查询*\n");printf("\t\t\t* 2 按职工的姓名查询*\n");printf("\t\t\t* 0 退出*\n");printf("\t\t\t*******************************\n");printf("请按数字键选择:");while(1){scanf("%d",&a);if(a>=0&&a<3);break;printf("输入错误,请重新输入:");}switch(a){case 1:numSearch(p);break;case 2:nameSearch(p);break;case 0:return ;break;}}/*==================================================================== ==========================*/int numSearch(wor *pNew){long n;wor *t;int found=0;printf("请输入您要查询的员工卡号:");scanf("%ld",&n);if(pNew==NULL){printf("没有记录员工工资信息!\n");return -1;}printf("查询结果:\n");while(pNew){t=pNew;if(pNew->kahao==n)//查找与n相同学号的学生信息并打印到屏幕{found=1;printf("卡号姓名月份应发工资水费电费税金实发工资\n");printf("%-ld %-s %-d %-.2f\t%-.2f %-.2f %-.2f %-.2f\n",pNew->kahao,pNew->name,pNew->month,pNew->yfgz,pNew->sf,pNew->df,pNew->sj,pNe w->sfgz);}pNew=pNew->next;}if(found!=1){printf("没有找到符合要求的员工信息!\n");return -1;}getch();system("cls");return 0;}/*==============================================================================================*/int nameSearch(wor *pNew){char name[10];int found;wor *t;printf("请输入您要查询的员工姓名:");scanf("%s",name);if(pNew==NULL){printf("没有记录员工工资信息!\n");return -1;}printf("查询结果:\n");while(pNew){t=pNew;if(strcmp(pNew->name,name)==0)//查找与n相同学号的学生信息并打印到屏幕{found=1;printf("卡号姓名月份应发工资水费电费税金实发工资\n");printf("%-ld %-s %-d %-.2f\t%-.2f %-.2f %-.2f %-.2f\n",pNew->kahao,pNew->name,pNew->month,pNew->yfgz,pNew->sf,pNew->df,pNew->sj,pNe w->sfgz);}pNew=pNew->next;}if(found!=1){printf("没有找到符合要求的员工信息!\n");return -1;}getch();system("cls");return 0;}/*==================================================================== ==========================*/void deleteSal(wor *head)/*删除员工信息*/{int i = 0;long nodeNum;char c;do{printf("请输入您要删除的员工卡号:");scanf(" %ld", &nodeNum);head=deleteNode(head, nodeNum); /*删除卡号为nodeNum的员工信息*/printSal(head); /*显示当前链表中的各节点信息*/printf("是否继续删除员工信息(Y/N)?");scanf(" %c",&c); /*%c前面有一个空格*/i++;}while (c=='Y' || c=='y');printf("%ld new nodes have been deleted!\n", i);save(head);printf("\n");}/*==================================================================== ==========================*/wor *deleteNode(wor *head, long nodeNum){wor *p = head;wor *pr = head;if (head == NULL) /*链表为空,没有节点,无法删除节点*/{printf("No Linked Table!\n");return(head);}/*若没找到节点nodeNum且未到表尾,则继续找*/while (nodeNum != p->kahao && p != NULL){pr = p;p = p->next;}if (nodeNum == p->kahao) /*若找到节点nodeNum,则删除该节点*/{if (p == head) /*若待删除节点为首节点,则让head指向第2个节点*/{head = p->next;}else /*若待删除节点不是首节点,则将前一节点的指针指向当前节点的下一节点*/{pr->next = p->next;}free(p); /*释放为已删除节点分配的内存*/}else /*没有找到待删除节点*/{printf("This Node has not been found!\n");}return head; /*返回删除节点后的链表的头节点指针*/}/*==================================================================== ==========================*/void printSal(wor *head){wor *p1;int j=0;if(head==NULL){printf("没有记录!\n");return ;}p1=head->next;printf("卡号姓名月份应发工资水费电费税金实发工资\n");do{printf("%-ld %s %d %.2f\t%.2f %.2f %.2f %.2f\n",p1->kahao,p1->name,p1->month,p1->yfgz,p1->sf,p1->df,p1->sj,p1->sfgz);j++;if(j%10==0)printf("\n\n");p1=p1->next;}while(p1!=NULL);getch();system("cls");return ;}/*==================================================================== ==========================*/void totalSalMenu(wor *head){char ch;int i=0;do{totalSal(head);printf("是否继续统计(Y/N)?\n");printf("请输入您的选择:");scanf(" %c",&ch);}while(ch=='y'||ch=='Y');}/*==================================================================== ==========================*/void totalSal(wor *head)/*统计员工某时间段的实发工资总和*/{wor *p=head;int start;int end;float sum=0;long number;printf("请输入您要统计工资的员工卡号:");scanf("%ld",&number);if(head==NULL)printf("您输入的卡号不存在!");printf("请输入您要统计工资的月份(0=<n<=m<=12):");scanf("%d %d",&start,&end);while(p!=NULL){if(p->kahao==number){if(p->month>=start&&p->month<=end)sum+=p->sfgz;}p=p->next;}printf("您要统计的月份总实发工资为%.1f\n\n",sum);getch();system("cls");}/*==================================================================== ==========================*/void order(wor *head){char ch;long c;char t[10];float b ;float g;float d ;float e;float f;int i;int j;wor *p1;wor *p2;loop:ch=menu1();switch(ch){case '1': /*按商品编号顺序浏览*/{system("cls");/*清屏*/printf("总有%d个员工的信息:\n",num);printf("卡号姓名月份应发工资水费电费税金实发工资\n");p2=p1=head->next;for(i=1;i<num;i++){for(j=i+1;j<=num;j++){p2=p1;p1=p1->next;if(p2->kahao>p1->kahao)//若后面的卡号小于前面的,则交换信息{c=p2->kahao;p2->kahao=p1->kahao;p1->kahao=c;strcpy(t,p2->name);/*交换前后结点中的卡号值*/strcpy(p2->name,p1->name);strcpy(p1->name,t); /*交换前后结点中的员工姓名,使之与卡号相匹配*/i=p2->month;p2->month=p1->month;p1->month=i;/*交换前后结点中的月份,使之与卡号相匹配*/b=p2->yfgz;p2->yfgz=p1->yfgz;p1->yfgz=b; /*交换前后结点中的应发工资,使之与卡号相匹配*/g=p2->sf;p2->sf=p1->sf;p1->sf=g; /*交换前后结点中的水费,使之与卡号相匹配*/d=p2->df;p2->df=p1->df;p1->df=d; /*交换前后结点中的电费,使之与卡号相匹配*/e=p2->sj;p2->sj=p1->sj;p1->sj=e; /*交换前后结点中的税金,使之与卡号相匹配*/f=p2->sfgz;p2->sfgz=p1->sfgz;p1->sfgz=f; /*交换前后结点中的实发工资,使之与卡号相匹配*/}}p2=head->next;p1=head->next;/*重新使p2,p1指向链表头*/}p1=head->next;do{printf("%-ld %s %d %.2f\t%.2f %.2f %.2f %.2f\n",p1->kahao,p1->name,p1->month,p1->yfgz,p1->sf,p1->df,p1->sj,p1->sfgz);p1=p1->next;}while(p1!=NULL);}getch();system("cls");break;case '2':{system("cls");/*清屏*/printf("总有%d个员工的信息:\n",num);printf("卡号姓名月份应发工资水费电费税金实发工资\n");p2=p1=head->next;for(i=1;i<num;i++){for(j=i+1;j<=num;j++){p2=p1;p1=p1->next;if(p2->sfgz<p1->sfgz)//若前面的实发工资小于后面的,则交换信息{c=p2->kahao;p2->kahao=p1->kahao;p1->kahao=c;/*交换前后结点中的卡号值*/strcpy(t,p2->name);strcpy(p2->name,p1->name);strcpy(p1->name,t); /*交换前后结点中的员工姓名,使之与卡号相匹配*/i=p2->month;p2->month=p1->month;p1->month=i;/*交换前后结点中的月份,使之与卡号相匹配*/b=p2->yfgz;p2->yfgz=p1->yfgz;p1->yfgz=b; /*交换前后结点中的应发工资,使之与卡号相匹配*/g=p2->sf;p2->sf=p1->sf;p1->sf=g; /*交换前后结点中的水费,使之与卡号相匹配*/d=p2->df;p2->df=p1->df;p1->df=d; /*交换前后结点中的电费,使之与卡号相匹配*/e=p2->sj;p2->sj=p1->sj;p1->sj=e; /*交换前后结点中的税金,使之与卡号相匹配*/f=p2->sfgz;p2->sfgz=p1->sfgz;p1->sfgz=f; /*交换前后结点中的实发工资,使之与卡号相匹配*/}}p2=head->next;p1=head->next;/*重新使p2,p1指向链表头*/}p1=head->next;do{printf("%-ld %s %d %.2f\t%.2f %.2f %.2f %.2f\n",p1->kahao,p1->name,p1->month,p1->yfgz,p1->sf,p1->df,p1->sj,p1->sfgz);p1=p1->next;}while(p1!=NULL);}getch();system("cls");break;case '0':{system("cls");return;}default :printf("输入错误!\n");}goto loop;}/*==================================================================== ==========================*/char menu1(void)/*子菜单*/{char ch;printf("\n\n\n\n\n\n");printf("\t $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\n");printf("\t $$\n");printf("\t $$ 1 * 按卡号升序浏览\n");printf("\t $$\n");printf(" \t $$\t 2 * 按实发工资降序浏览\n");printf("\t $$\t\t\t\t\t\t $$\n");printf(" \t $$\t\t 0 * 退出\t $$\n");printf("\t \t\t\t\t\t\t $$\n");printf("\t\t\t\t\t \t $$\n");printf("\t\t\t\t\t\t\t $$");printf("\n\t\t\t $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$");printf("\n\n\n\n\n\n\n");printf("请输入您的选择:");scanf(" %c",&ch);return ch;}/*==================================================================== ==========================*/void modify(wor *head){char c;int i=0;do{modifyNode(head);printf("继续修改请按Y/y!?");printf("其他键视为不修改!\n");printf("你想继续修改记录吗(Y/N)?");scanf(" %c",&c);i++;}while (c=='Y' || c=='y');printf("%d nodes have been modifyied!\n",i);}/*==================================================================== ==========================*/void modifyNode(wor *head){wor *q=head;long d;if(q==NULL){printf("工资表为空请重新输入!!\n");return ;}printf("请输入你想修改的职工的编号:");scanf("%ld",&d);while(q&&q->kahao!=d) //做比较判断//q=q->next; //没找到,指针后移继续查找//if(q==NULL) //指针为空,说明没有找到//{printf("Not found!\n");return ;}else{printf("请输入修改后的职工卡号:");scanf("%ld",&q->kahao);printf("请输入修改后的职工姓名:");scanf("%s",q->name);printf("请输入修改后的月份:");scanf("%d",&q->month);printf("请输入修改后的应发工资:");scanf("%f",&q->yfgz);printf("请输入修改后的水费:");scanf("%f",&q->sf);printf("请输入修改后的电费:");scanf("%f",&q->df);if(q->yfgz<=800)q->sj=0;else if(q->yfgz>800&&q->yfgz<=1400)q->sj=(q->yfgz-800)*0.05;elseq->sj=(q->yfgz-1400)*0.10;q->sfgz=q->yfgz-q->sf-q->df-q->sj;}save(head);// 调用保存函数保存修改记录printf("修改成功!\n");getch();system("cls");}/*==================================================================== ==========================*/void DeleteMemory(wor *head)/*删除*/{wor *p = head, *pr = NULL;while (p != NULL) /*若不是表尾,则释放节点占用的内存*/{pr = p; /*在pr中保存当前节点的指针*/p = p->next; /*让p指向下一个节点*/free(pr); /*释放pr指向的当前节点占用的内存*/ }}。

相关文档
最新文档