1、/*程序名称:工资管理系统 */*程序说明:该系统在磁盘上储存了某单位上月全体员工的工资信息,对于每一位职工存储以下信息:月份,职工编号,基本工资,津贴,岗贴,补贴,房贴,交通补贴,应发数,房租,储蓄,会费,个人所得税,应扣数,实发数。个人所得税计算方法设定为:工资少于 800 元为 0,800-1000 元的部分为 5%,1000-5000 元的部分为 10%,5000 元以上的部分为 20%。该系统功能如下:1)创建存储职工工资信息的存储系统。2)添加职工的工资信息(增加新职工时用)3)删除某职工的工资信息(职工离职或者死亡时用)4)修改某职工的部分工资信息(当月开始增加或减少某些项工资或
2、扣款数变化)5)输出指定编号职工的工资信息(查询用)6)输出当月全体职工的工资信息(发工资用) */*编写心得:2006 年 9 月 26 日 19:30-23:00 共计 3 小时 30 分钟。由于时间仓促,没有对代码进行优化设计。对于主要的结构体也是粗粗设计了一下。在存储上只采用了结构体数组,没用运用到二叉树等复杂的数据结构,有点遗憾。主程序采用模块化设计,用独立的函数把功能分解开来,便于调试和扩展。假如用 C+就可以多做几个构造函数,可能会更方便点。不过最近在学 JAVA,不敢乱用C+了,怕到时候知识搞混了。感觉稍微麻烦一点的地方是文件的输入输出部分,因为一般的书上这一章都比较靠后,老师
3、上课也就简单的带过的,格式有点忘记了。个人感觉现在靠 C 语言来做数据库不是很合适,50 个元素的数组应该够了吧。反正只要弄清那些常用函数,还有怎么一个 I/O 方式就可以了。让偶想起了教偶 C 语言的班主任老童,想起了偶美好的青春,以及那些为了听课和 MM 们一大早抢前排坐位的幸福日子.总得来说还是比较轻松的,就是项目字段太多,写写麻烦(谁叫偶打字不快啊_)BY 雨田心梦*/* 为了调用 FILE 等函数 */#include “stdio.h“#include “conio.h“/* 为了调用 atof()等函数 */#include “stdlib.h“#define TRUE 1/*
4、结构体声明 */struct zhigongint month;float id;float jbgz;float jt;float gt;float bt;float ft;float jtbt;float yfs;float fz;float cx;float hf;float grsds;float yks;float sfs;/* 建立 50 个元素的结构体数组 */struct zhigong zg50;/* 建立结构体变量 */struct zhigong zgone;/* 职员列表中的数量 */int n=0;/* 获得字符串 */char numstr50;main()char
5、 ch;n=0;/*rfile(); 使用后启动程序时系统会自动加载纪录*/while(TRUE)printf(“n“);printf(“=n“);printf(“Welcome!Please choice(1-6) : +n“);printf(“1.Add one infomation +n“);printf(“2.Delete one infomation +n“);printf(“3.Modify one infomation +n“);printf(“4.Print out by id +n“);printf(“5.Print out all +n“);printf(“6.Save d
6、ate +n“);printf(“7.Load date +n“);printf(“8.Exit +n“);printf(“=n“);ch=getche();switch(ch)case 1:addone();break;case 2:delone();break;case 3:modone();break;case 4:idone();break;case 5:listall();break;case 6:wfile();break;case 7:rfile();break;case 8:return;default:printf(“Sorry,please choice again!n“)
7、;/*计算个人所得税*/float tgrsds(float m)float sui1,sui2,sui3;float tmp;sui1=0;sui2=0;sui3=0;if(m=5000)sui1=(m-5000)*0.2;sui2=(5000-1000)*0.1;sui3=(1000-800)*0.05;else if(m=1000 tmp=sui1+sui2+sui3;return(tmp);/* 添加职工的工资信息 */addone(void)printf(“n“);printf(“Record NO. %d n“,n+1);printf(“Please put in month: n
8、“);gets(numstr);zgn.month=atoi(numstr);printf(“Please put in zhigongbianhao: n“);gets(numstr);zgn.id=atof(numstr);printf(“Please put in jibengongzi: n“);gets(numstr);zgn.jbgz=atof(numstr);printf(“Please put in jintie: n“);gets(numstr);zgn.jt=atof(numstr);printf(“Please put in gangtie: n“);gets(numst
9、r);zgn.gt=atof(numstr);printf(“Please put in butie: n“);gets(numstr);zgn.bt=atof(numstr);printf(“Please put in fangtie: n“);gets(numstr);zgn.ft=atof(numstr);printf(“Please put in jiaotongbutie: n“);gets(numstr);zgn.jtbt=atof(numstr);zgn.yfs=(zgn.jbgz)+(zgn.jt)+(zgn.gt)+(zgn.bt)+(zgn.ft)+(zgn.jtbt);p
10、rintf(“Please put in fangzu: n“);gets(numstr);zgn.fz=atof(numstr);printf(“Please put in chuxu: n“);gets(numstr);zgn.cx=atof(numstr);printf(“Please put in huifei: n“);gets(numstr);zgn.hf=atof(numstr);zgn.grsds=tgrsds(zgn.yfs);zgn.yks=(zgn.fz)+(zgn.cx)+(zgn.hf)+(zgn.grsds);zgn.sfs=(zgn.yfs)-(zgn.yks);
11、n+;/*删除个人纪录*/delone(void)struct zhigong tmp50;float zhigongid;int j,k;int flagfind;flagfind=0;k=0;printf(“n Please put in zhigongbianhao: n“);gets(numstr);zhigongid=atof(numstr);for(j=0;j=n;j+)if(zgj.id=zhigongid)flagfind=1;elsetmpk=zgj;k+;if(flagfind=1)for(j=0;j=(n-1);j+)zgj=tmpj;printf(“n Record d
12、eleted! n“);n=n-1;elseprintf(“n Record not found! n“);return;/*修改个人纪录*/modone(void)float zhigongid;int j;int flagfind;flagfind=0;printf(“n Please put in zhigongbianhao: n“);gets(numstr);zhigongid=atof(numstr);for(j=0;j=n;j+)if(zgj.id=zhigongid)printf(“NO.:%dn“,j);printf(“month:%dn“,zgj.month);printf
13、(“zhigongbianhao%10.0fn“,zgj.id);printf(“jibengongzi:%10.2fn“,zgj.jbgz);printf(“Please put in jibengongzi: n“);gets(numstr);zgj.jbgz=atof(numstr);printf(“jintie:%10.2fn“,zgj.jt);printf(“Please put in jintie: n“);gets(numstr);zgj.jt=atof(numstr);printf(“gangtie:%10.2fn“,zgj.gt);printf(“Please put in
14、gangtie: n“);gets(numstr);zgj.gt=atof(numstr);printf(“butie:%10.2fn“,zgj.bt);printf(“Please put in butie: n“);gets(numstr);zgj.bt=atof(numstr);printf(“fangtie:%10.2fn“,zgj.ft);printf(“Please put in fangtie: n“);gets(numstr);zgj.ft=atof(numstr);printf(“jiaotongbutie:%10.2fn“,zgj.jtbt);printf(“Please
15、put in jiaotongbutie: n“);gets(numstr);zgj.jtbt=atof(numstr);zgj.yfs=(zgj.jbgz)+(zgj.jt)+(zgj.gt)+(zgj.bt)+(zgj.ft)+(zgj.jtbt);printf(“fangzu:%10.2fn“,zgj.fz);printf(“Please put in fangzu: n“);gets(numstr);zgj.fz=atof(numstr);printf(“chuxu:%10.2fn“,zgj.cx);printf(“Please put in chuxu: n“);gets(numst
16、r);zgj.cx=atof(numstr);printf(“huifei:%10.2fn“,zgj.hf);printf(“Please put in huifei: n“);gets(numstr);zgj.hf=atof(numstr);zgj.grsds=tgrsds(zgj.yfs);zgj.yks=(zgj.fz)+(zgj.cx)+(zgj.hf)+(zgj.grsds);zgj.sfs=(zgj.yfs)-(zgj.yks);flagfind=1;elseflagfind=0;if(flagfind=0)printf(“n Can not find record! n“);re
17、turn;/*随机从内存中查找纪录根据 id*/idone(void)float zhigongid;int j;int flagfind;flagfind=0;printf(“n Please put in zhigongbianhao: n“);gets(numstr);zhigongid=atof(numstr);for(j=0;j=n;j+)if(zgj.id=zhigongid)printf(“n %d record found! n |“,j+1);printf(“month:%d |“,zgj.month);printf(“zhigongbianhao%10.0f |“,zgj.
18、id);printf(“jibengongzi:%10.2f |“,zgj.jbgz);printf(“jintie:%10.2f |“,zgj.jt);printf(“gangtie:%10.2f |“,zgj.gt);printf(“butie:%10.2f |“,zgj.bt);printf(“fangtie:%10.2f |“,zgj.ft);printf(“jiaotongbutie:%10.2f |“,zgj.jtbt);printf(“yingfashu:%10.2f |“,zgj.yfs);printf(“fangzu:%10.2f |“,zgj.fz);printf(“chu
19、xu:%10.2f |“,zgj.cx);printf(“huifei:%10.2f |“,zgj.hf);printf(“gerensuodeshui:%10.2f |“,zgj.grsds);printf(“yingkoushu:%10.2f |“,zgj.yks);printf(“shifashu:%10.2fn“,zgj.sfs);flagfind=1;elseflagfind=0;if(flagfind=0)printf(“n Can not find record! n“);return;/* 输出当月全体职工的工资信息 */listall(void)int j;if(n1)pri
20、ntf(“n No record! n“);elsefor(j=0;jn;j+)printf(“n NO:%d |“,j+1);printf(“month:%d |“,zgj.month);printf(“zhigongbianhao%10.0f |“,zgj.id);printf(“jibengongzi:%10.2f |“,zgj.jbgz);printf(“jintie:%10.2f |“,zgj.jt);printf(“gangtie:%10.2f |“,zgj.gt);printf(“butie:%10.2f |“,zgj.bt);printf(“fangtie:%10.2f |“,
21、zgj.ft);printf(“jiaotongbutie:%10.2f |“,zgj.jtbt);printf(“yingfashu:%10.2f |“,zgj.yfs);printf(“fangzu:%10.2f |“,zgj.fz);printf(“chuxu:%10.2f |“,zgj.cx);printf(“huifei:%10.2f |“,zgj.hf);printf(“gerensuodeshui:%10.2f |“,zgj.grsds);printf(“yingkoushu:%10.2f |“,zgj.yks);printf(“shifashu:%10.2fn“,zgj.sfs
22、);/* 把所有纪录从内存中写到磁盘 gongzi.rec 中 */wfile(void)FILE *fptr;printf(“n Saving date. n“);if(n1)printf(“n No record! n“);return;if(fptr=fopen(“gongzi.rec“,“wb“)=NULL)printf(“Can not open file gongzi.rec! n“);elsefwrite(zg,sizeof(zg0),n,fptr);fclose(fptr);printf(“File of %d records written! n“,n );/* 把所有纪录从磁盘 gongzi.rec 读到数组 gz 中 */rfile(void)FILE *fptr;n=0;printf(“n Loading date. n“);if(fptr=fopen(“gongzi.rec“,“rb“)=NULL)printf(“Can not open file gongzi.rec! n“);elsewhile(fread(fclose(fptr);printf(“ Total %d records read! n“,n);