《教师工资管理系统.doc》由会员分享,可在线阅读,更多相关《教师工资管理系统.doc(12页珍藏版)》请在三一办公上搜索。
1、#include#include#include#include#define N 100struct teacher int num; /ID号 char name20;/姓名 int lxdh;/ 联系电话 int jbgz; /基本工资 int shbt; /生活补贴 int jt; / /津贴 int dhf; /电话费 int shdf; / 水电费 int fz; /房租 int gjj; /公积金 int suo; /所得税 int yfgz; / 应发工资 int hjkk; /合计扣款 int total; /总工资ee100; void menu();void input(
2、);void save(int);void display();void del();void zengjia();void chaxun();void xiugai(); void start(); /*定义各函数*/void main()/主函数int n,t; char a; start();getch(); menu(); do printf(功能选择(1-8):n); scanf(%d,&n); if(n=1&n 1 输入教师信息 nn);printf( 2 显示教师信息 nn);printf( 3 查找教师信息 nn);printf( 4 删除教师信息 nn);printf( 5
3、添加教师信息 nn);printf( 6 修改教师信息 nn);printf( 7 退出 nn);void input() /*录入函数*/ int i,m; system(cls); printf(职工人数(1-100):n); scanf(%d,&m); for (i=0;im;i+) printf(请输入职工号: ); scanf(%d,&eei.num); printf(请输入姓名: ); scanf(%s,&eei.name); getchar(); printf(请输入联系电话: ); scanf(%d,&eei.lxdh); printf(请输入基本工资: ); scanf(%d
4、,&eei.jbgz); printf(请输入补贴: ); scanf(%d,&eei.shbt);printf(请输入津贴: ); scanf(%d,&eei.jt); printf(请输入电话费: ); scanf(%d,&eei.dhf); printf(请输入水电费: ); scanf(%d,&eei.shdf); printf(请输入所得税: ); scanf(%d,&eei.suo); printf(请输入房租: ); scanf(%d,&eei.fz);printf(请输入公积金: ); scanf(%d,&eei.gjj);eei.yfgz=(eei.jbgz)+(eei.sh
5、bt)+(eei.jt);eei.hjkk=(eei.dhf)+(eei.shdf)+(eei.gjj)+(eei.suo)+(eei.fz); eei.total=(eei.yfgz)-(eei.hjkk);/计算总工资 printf(n);/计算总工资 printf(n创建完毕!n); save(m);/保存职工人数mvoid save(int m) /*保存文件函数*/ int i; FILE*fp; /声明fp是指针,用来指向FILE类型的对象 if (fp=fopen(teacher_list,wb)=NULL) /打开职工列表文件为空 printf (打开失败n); exit(0)
6、; for (i=0;im;i+) /*将内存中职工的信息输出到磁盘文件中去*/ fwrite(&eei,sizeof(struct teacher),1,fp);/写入数据块 &eei:是要输出数据的地址 sizeof(struct teacher):获取一个单体的长度 1:数据项的个数 fp:目标文件指针 fclose(fp);/ 缓冲区内最后剩余的数据输出到磁盘文件中,并释放文件指针和有关的缓冲区int load() /*导入函数 int型*/ FILE*fp; int i=0; if(fp=fopen(teacher_list,rb)=NULL) printf (cannot open
7、 filen); exit(0); else do fread(&eei,sizeof(struct teacher),1,fp); /读取 i+; while(feof(fp)=0); /检测流上的文件结束符 fclose(fp); return(i-1);/返回人数void display() /*浏览函数*/ int i,sum=0; int m=load(); system(cls); printf(职工号 姓名 基本工资 补贴 津贴 电话费 水电费 房租 公积金 所得税 应发工资 合计扣款 总工资 n); for(i=0;im;i+) /*m为输入部分的职工人数*/ printf(n
8、 %d%5s %5d %5d %5d %5d %5d %5d %5d %5d %5d %8d %10d ,eei.num,eei.name,eei.jbgz,eei.shbt,eei.jt,eei.dhf,eei.shdf,eei.fz,eei.gjj,eei.suo,eei.yfgz,eei.hjkk,eei.total); sum+=eei.total;/计算员工总工资之和 printf(nn职工平均工资为:%d n,sum/m);void del() /*删除函数 */ int m=load(); int i,j,n,t,button; char name20; printf(n 原来的
9、职工信息:n); display(); /显示删除前的员工信息 printf(n); printf(按姓名删除:n); scanf(%s,name); for(button=1,i=0;button&im;i+)/主函数中确定button=1时各函数才可以被调用 if(strcmp(eei.name,name)=0)/按员工姓名查找到某员工 并调出其资料 printf(n此人原始记录为:n);/显示选定员工的信息 printf(职工号 姓名 基本工资 补贴 津贴 电话费 水电费 房租 公积金 所得税 应发工资 合计扣款 总工资 n); printf(n %d%5s %5d %5d %5d %5
10、d %5d %5d %5d %5d %5d %8d %10d ,eei.num,eei.name,eei.jbgz,eei.shbt,eei.jt,eei.dhf,eei.shdf,eei.fz,eei.gjj,eei.suo,eei.yfgz,eei.hjkk,eei.total); printf(n确定删除 请按1,不删除请按0n); scanf(%d,&n); if(n=1) for(j=i;jm-1;j+)/从第i项开始 将后一项的各成员的值赋给前一项各对应的成员 完成对第i项的删除 strcpy(eej.name,eej+1.name); eej.num=eej+1.num; eej
11、.jbgz=eej+1.jbgz; eej.shbt=eej+1.shbt; eej.jt=eej+1.jt;eei.dhf=eei+1.dhf; eej.fz=eej+1.fz; eej.gjj=eej+1.gjj;eej.suo=eej+1.suo; eej.yfgz=eej+1.yfgz;eej.hjkk=eej+1.hjkk; eej.total=eej+1.total; button=0; if(!button)/button=0表明删除已完成 m=m-1;/总员工数减少一人 else printf(n查无此人!n); printf(n 删除后的所有职工信息:n); save(m);
12、 /调用保存函数 display(); /调用浏览函数 printf(n);printf(按任意键返回); getch(); menu(); void zengjia()/*添加函数*/ FILE*fp; int n; int count=0; int i; int m=load(); printf(n 原来的职工信息:n); display(); printf(n); fp=fopen(eeploee_list,a); printf(请输入想增加的职工数:n);/确定要加入的职工数n scanf(%d,&n); for (i=m;i(m+n);i+)/添加n名员工的信息 printf(n 请
13、输入新增加职工的信息:n); printf(请输入职工号: ); scanf(%d,&eei.num); printf(n); printf(请输入职工号: ); scanf(%d,&eei.num); printf(请输入姓名: ); scanf(%s,&eei.name); getchar(); printf(请输入联系电话: ); scanf(%d,&eei.lxdh); printf(请输入基本工资: ); scanf(%d,&eei.jbgz); printf(请输入补贴: ); scanf(%d,&eei.shbt);printf(请输入津贴: ); scanf(%d,&eei.j
14、t); printf(请输入电话费: ); scanf(%d,&eei.dhf); printf(请输入水电费: ); scanf(%d,&eei.shdf); printf(请输入所得税: ); scanf(%d,&eei.suo); printf(请输入房租: ); scanf(%d,&eei.fz); printf(请输入公积金: ); scanf(%d,&eei.gjj);eei.yfgz=(eei.jbgz)+(eei.shbt)+(eei.jt);eei.hjkk=(eei.dhf)+(eei.shdf)+(eei.gjj)+(eei.suo)+(eei.fz); eei.tota
15、l=(eei.yfgz)-(eei.hjkk);/计算总工资 printf(n);/计算总工资 printf(n); count=count+1; printf(已增加的人数:n); printf(%dn,count); printf(n添加成功n); m=m+count;/将新添加员工的人数加到总员工人数中 printf(n增加后的所有职工信息:n); printf(n); save(m); display();/显示添加后的信息 fclose(fp);void chaxun() char name30; int i,t; int m=load();system(cls);/清屏 print
16、f(请输入姓名:n); scanf(%s,name); for(i=0;im;i+) if(strcmp(eei.name,name)=0) printf(职工号 姓名 基本工资 补贴 津贴 电话费 水电费 房租 公积金 所得税 应发工资 合计扣款 总工资 n); printf(n %d%5s %5d %5d %5d %5d %5d %5d %5d %5d %5d %8d %10d ,eei.num,eei.name,eei.jbgz,eei.shbt,eei.jt,eei.dhf,eei.shdf,eei.fz,eei.gjj,eei.suo,eei.yfgz,eei.hjkk,eei.to
17、tal); if(i=m) printf(nn); printf(n); printf(返回查询菜单请按1,继续查询姓名请按2n); scanf(%d,&t); switch(t) case 1:menu();break; case 2:chaxun();break; void xiugai() /*修改函数*/ int num; /ID号 char name20;/姓名 int lxdh;/ 联系电话 int jbgz; /基本工资 int shbt; /生活补贴 int jt; / /津贴 int dhf; /电话费 int shdf; / 水电费 int fz; /房租 int gjj;
18、 /公积金 int suo; /所得税 int yfgz; / 应发工资 int hjkk; /合计扣款 int total; /总工资 int b,c,i,n,t,button; int m=load(); system(cls); printf(n 原来的职工信息:n); display(); printf(n); printf(请输入要修改的职工的姓名:n); scanf(%s,name); for(button=1,i=0;button&i11|c1) printf(n选择错误,请重新选择!n); button=0; if(button=1) printf(n查无此人n); do sw
19、itch(c) /*因为当找到第i个职工时,for语句后i自加了1,所以下面的应该把改后的信息赋值给第i-1个人*/ case 1:printf(职工号改为: ); scanf(%d,&num); eei-1.num=num; break; case 2:printf(姓名改为: ); scanf(%s,name); strcpy(eei-1.name,name); break; case 3:printf(基本工资改为: ); getchar(); scanf(%d,&jbgz); eei-1.jbgz=jbgz; eei-1.yfgz=(eei-1.jbgz)+(eei-1.shbt)+(
20、eei-1.jt); eei-1.hjkk=(eei-1.dhf)+(eei-1.shdf)+(eei-1.gjj)+(eei-1.suo)+(eei-1.fz); eei-1.total=(eei-1.yfgz)-(eei-1.hjkk); break; case 4:printf(补贴改为: ); scanf(%d,&shbt); eei-1.shbt=shbt; eei-1.yfgz=(eei-1.jbgz)+(eei-1.shbt)+(eei-1.jt); eei-1.hjkk=(eei-1.dhf)+(eei-1.shdf)+(eei-1.gjj)+(eei-1.suo)+(eei-
21、1.fz); eei-1.total=(eei-1.yfgz)-(eei-1.hjkk); break; case 5:printf(津贴改为: ); scanf(%d,&jt); eei-1.jt=jt; eei-1.yfgz=(eei-1.jbgz)+(eei-1.shbt)+(eei-1.jt); eei-1.hjkk=(eei-1.dhf)+(eei-1.shdf)+(eei-1.gjj)+(eei-1.suo)+(eei-1.fz); eei-1.total=(eei-1.yfgz)-(eei-1.hjkk); break;case 6:printf(电话费改为: ); scanf(
22、%d,&dhf); eei-1.dhf=dhf; eei-1.yfgz=(eei-1.jbgz)+(eei-1.shbt)+(eei-1.jt); eei-1.hjkk=(eei-1.dhf)+(eei-1.shdf)+(eei-1.gjj)+(eei-1.suo)+(eei-1.fz); eei-1.total=(eei-1.yfgz)-(eei-1.hjkk);case 7:printf(水电费改为: );eei-1.shdf=shdf;eei-1.yfgz=(eei-1.jbgz)+(eei-1.shbt)+(eei-1.jt); eei-1.hjkk=(eei-1.dhf)+(eei-
23、1.shdf)+(eei-1.gjj)+(eei-1.suo)+(eei-1.fz); eei-1.total=(eei-1.yfgz)-(eei-1.hjkk); case 8:printf(房租改为: ); scanf(%d,&fz); eei-1.fz=fz; eei-1.yfgz=(eei-1.jbgz)+(eei-1.shbt)+(eei-1.jt); eei-1.hjkk=(eei-1.dhf)+(eei-1.shdf)+(eei-1.gjj)+(eei-1.suo)+(eei-1.fz); eei-1.total=(eei-1.yfgz)-(eei-1.hjkk); break;
24、 case 9:printf(公积金改为: ); scanf(%d,&gjj); eei-1.gjj=gjj; eei-1.yfgz=(eei-1.jbgz)+(eei-1.shbt)+(eei-1.jt); eei-1.hjkk=(eei-1.dhf)+(eei-1.shdf)+(eei-1.gjj)+(eei-1.suo)+(eei-1.fz); eei-1.total=(eei-1.yfgz)-(eei-1.hjkk); break; case 10:printf(所得税改为: ); scanf(%d,&suo); eei-1.suo=suo; eei-1.yfgz=(eei-1.jbg
25、z)+(eei-1.shbt)+(eei-1.jt); eei-1.hjkk=(eei-1.dhf)+(eei-1.shdf)+(eei-1.gjj)+(eei-1.suo)+(eei-1.fz); eei-1.total=(eei-1.yfgz)-(eei-1.hjkk); case 11:xiugai(); break; printf(n); printf(nn 确定修改 请按1 ; 重新修改 请按2: n); scanf(%d,&b); while(b=2); printf(n修改后的所有职工信息:n); printf(n); save(m); display(); printf(n按1 继续修改 ,不再修改请按0n); scanf(%d,&t); switch(t) case 1:xiugai();break; case 0:break; default :break;