资源描述
教师工资管理系统C语言#include#include#include#includetypedef struct teacherchar name32;char unit32;char sex4;char address32;long number,phone;float salary,allowance,tax,call,waterandele,rent,clean,gong,koukuan,total;struct teacher *next;TEACHER/;/ 节点的结构体,包含数据和指针.TEACHER*head;/ 头节点void init() / 初始化头节点并从文件中读取数据存入链表head=(TEACHER*)malloc(sizeof(TEACHER);head-next=NULL;FILE*f_p;if(f_p = fopen(teacher.txt,a+) != NULL)fseek(f_p,0L,SEEK_END);int len = ftell(f_p);rewind(f_p);while(len!=0&!feof(f_p)TEACHER*node=(TEACHER*)malloc(sizeof(TEACHER);fscanf(f_p,%s%s%s%s%ld%ld,node-name,node -sex,node-unit,node -address,&node- number,&node -phone);fscanf(f_p,%f%f%f%f,&node -salary,&node-allowance,&node -tax,&node -call);fscanf(f_p,%f%f%f%f%f%f,&node -waterandele,&node -rent,&node -clean,&node -gong ,&node -koukuan,&node -total);node -next = head-next;head -next = node;fclose(f_p);TEACHER*search(char *s) / 遍历整个链表并打印数据TEACHER*nod=head - next;/ 把头节点赋值给nod 节点while(nod != NULL)循环到最后一个节点if(!strcmp(nod -name,s) | (!strcmp(nod -unit,s)printf( 姓名:%sn 性别 : %sn 单位:%sn 家庭住址:%sn 教师号:%ldn 电话号: %ldn,nod -name,nod -sex,nod-unit,nod -address,nod -number,nod -phone);printf( 基 本 工 资 :%.2fn 津 贴 :%.2fn 扣 税 :%.2fn 话费: %.2fn,nod -salary,nod-allowance,nod -tax,nod -call);printf( 水 电 费 :%.2fn 房 租 :%.2fn 卫 生 费 :%.2fn 公 积金: %.2fn,nod -waterandele,nod -rent,nod -clean,nod - gong);printf( 合计扣款: %.2fn 实发工资: %.2fn,nod -koukuan,nod -total);return nod;/ 返回到第一个nod 节点else nod = nod -next;/ 跳出循环printf( 未找到数据!n);return NULL; int addmenu()/ 添加教师信息子菜单TEACHER*node;char command;system(cls);printf(*n);printf(*添加子菜单*n);printf(*n);*n);printf(* 功能 :4.返回主菜单5.添加printf(* 请选择需要使用的功能: *n);printf(*n);fflush(stdin);while(command=getchar()!=4)printf( 添加信息 :n);node=(TEACHER*)malloc(sizeof(TEACHER);fflush(stdin);printf( 姓名 :);fflush(stdin);gets(node-name);printf( 性别: );gets(node-sex);fflush(stdin);printf( 单位 :);fflush(stdin);gets(node -unit);printf( 家庭住址 :);gets(node -address);fflush(stdin);printf( 教师号 :);fflush(stdin);scanf(%ld,&node -number);printf( 电话号码: );scanf(%ld,&node -phone);fflush(stdin);printf( 基本工资:);scanf(%f,&node -salary);fflush(stdin);printf( 津贴 :);scanf(%f,&node -allowance);fflush(stdin);printf( 扣税 :);scanf(%f,&node -tax);fflush(stdin);printf( 话费 :);scanf(%f,&node -call);fflush(stdin);printf( 水电费 :);scanf(%f,&node -waterandele);fflush(stdin);printf( 房租 :);scanf(%f,&node -rent);fflush(stdin);printf( 卫生费 :);scanf(%f,&node -clean);fflush(stdin);printf( 公积金 :);scanf(%f,&node -gong);fflush(stdin);node-koukuan = node -tax + node-call + node-waterandele + node-rent + node-clean + node -gong;node-total = node-salary + node-allowance - node -koukuan;node-next = head -next;head-next = node;printf(输入c退出,其他字符继续n);if(command=getchar()=c) break;return 0;bool save()/ 保存教师信息函数TEACHER*nod = head-next;FILE*fp;/ 定义文件指针if(fp=fopen(teacher.txt,w) = NULL) printf( 打开文件异常n);return false; elsewhile(nod != NULL)打开teacher这个文件并写入信息 fprintf(fp,%s%s%s%s%ld%ld,nod -name,nod -sex,nod-unit,nod -address,nod-number,nod -phone);fprintf(fp,%.2f %.2f %.2f %.2f ,nod -salary,nod-allowance,nod - tax,nod -call);fprintf(fp,%.2f %.2f %.2f %.2f %.2f %.2f,nod -waterandele,nod -rent,nod -clean,nod - go ng,nod -koukuan,nod -total);if(nod -next!=NULL) fprintf(fp,n);nod = nod -next; fclose(fp);return true;bool modify()/ 修改教师信息函数char name16;printf( 请输入需修改教师的姓名: );scanf(%s,name);TEACHER*nod=head - next;while(nod != NULL)if(!strcmp(nod -name,name)printf( 请输入新信息: n);printf( 姓名 :);fflush(stdin);gets(nod - name);printf( 性别 :);gets(nod - sex);fflush(stdin);printf( 单位 :);fflush(stdin);gets(nod - unit);printf( 家庭住址 :);fflush(stdin);gets(nod - address);printf( 教师号 :);fflush(stdin);scanf(%ld,&nod -number);printf( 电话号码 :);fflush(stdin);scanf(%ld,&nod -phone);printf( 基本工资 :);scanf(%f,&nod -salary);fflush(stdin);printf( 津贴 :);scanf(%f,&nod -allowance);fflush(stdin);printf( 扣税 :);scanf(%f,&nod -tax);fflush(stdin);printf( 话费 :);scanf(%f,&nod -call);fflush(stdin);printf( 水电费 :);scanf(%f,&nod -waterandele);fflush(stdin);printf( 房租 :);scanf(%f,&nod -rent);fflush(stdin);printf( 卫生费 :);scanf(%f,&nod -clean);fflush(stdin);printf( 公积金 :);scanf(%f,&nod -gong);fflush(stdin);nod-koukuannod-tax + nod-call + nod-waterandele + nod-rent + nod-clean + nod-gong;nod-total = nod-salary + nod-allowance - nod -koukuan; return true;nod = nod-next;return false;bool Delete()/ 删除教师信息函数char name16;printf( 请输入需删除教师的姓名: );scanf(%s,name);fflush(stdin);TEACHER*delete_nod = head;while(delete_nod -next)if(!strcmp(delete_nod -next-name,name)TEACHER*wait_delete_nod = delete_nod -next;delete_nod -next = wait_delete_nod -next;free(wait_delete_nod);return true;delete_nod = delete_nod -next;return false;int searchmenu()/ 查寻教师信息菜单char name16;char command;system(cls);printf(| |n);printf(|查询和修改子菜单|n);printf(| |n);printf(| 功能:4.返回主菜单5.通过姓名 /单位查找 6.修改 7.删除 |n);printf(| |n);fflush(stdin);printf( 请输入需要实现的操作:);while(command=getchar() !=4)switch(command)case5:printf( 请输入需要查找的姓名/单位:);fflush(stdin);gets(name);fflush(stdin);search(name);break;case6:if(modify()printf( 修改成功! n);elseprintf( 未查询到该教师!请重试.n);break;case7:if(Delete()printf( 删除成功! n);elseprintf( 未查询到该教师!请重试.n);break;fflush(stdin);printf( 请输入需要实现的操作 :);return 0;int menu()/ 系统欢迎界面char command;system(cls);printf(* *n);printf(* 欢迎进入教师工资管理系统*n);printf(* *n);printf(* 功能 :1.添加2.查询/修改3.保存4.退出 n);printf(* *n);printf(*本系统由XXX所编*n);printf(* *n);printf(请输入需要实现的操作:n);while(command=getchar()!=4)switch(command)case1: addmenu(); break;case2: searchmenu();break;case3:bool judge=save(); if(judge)printf( 保存成功!n);else printf( 保存失败!n);break;printf( 请按任意键返回 .n);getch();fflush(stdin);/* 子函数退出后再次显示主界面*/system(cls);printf(| |n);printf(|教师工资管理系统|n);printf(| |n);printf(| 功能 :1.添加 2.查询 /修改 3.保存 4.退出 |n);printf(| |n);printf(|请输入需要实现的操作:|n);printf(| |n);printf(|感谢您使用本系统|n);return 0;int main()init();menu();return 0;
展开阅读全文