c语言编写的 工资管理系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
/*程序名称:工资管理系统 */
/*程序说明:
该系统在磁盘上储存了某单位上月全体员工的工资信息,对于每一位职工存储以下信息:
月份,职工编号,基本工资,津贴,岗贴,补贴,房贴,交通补贴,应发数,房租,储蓄,会费,个人所得税,应扣数,实发数。
个人所得税计算方法设定为:工资少于800元为0,800-1000元的部分为5%,1000-5000元的部分为10%,5000元以上的部分为20%。
该系统功能如下:
1)创建存储职工工资信息的存储系统。
2)添加职工的工资信息(增加新职工时用)
3)删除某职工的工资信息(职工离职或者死亡时用)
4)修改某职工的部分工资信息(当月开始增加或减少某些项工资或扣款数变化)
5)输出指定编号职工的工资信息(查询用)
6)输出当月全体职工的工资信息(发工资用) */
/*编写心得:
2006年9月26日19:30-23:00共计3小时30分钟。
由于时间仓促,没有对代码进行优化设计。
对于主要的结构体也是粗粗设计了一下。
在存储上只采用了结构体数组,没用运用到二叉树等复杂的数据结构,有点遗憾。
主程序采用模块化设计,用独立的函数把功能分解开来,便于调试和扩展。
假如用C++就可以多做几个构造函数,可能会更方便点。
不过最近在学JAVA,不敢乱用C++了,怕到时候知识搞混了。
感觉稍微麻烦一点的地方是文件的输入输出部分,因为一般的书上这一章都比较靠后,老师上课也就简单的带过的,格式有点忘记了。
个人感觉现在靠C语言来做数据库不是很合适,50个元素的数组应该够了吧。
反正只要弄清那些常用函数,还有怎么一个I/O方式就可以了。
让偶想起了教偶C语言的班主任老童,想起了偶美好的青春,以及那些为了听课和MM们一大早抢前排坐位的幸福日子...
总得来说还是比较轻松的,就是项目字段太多,写写麻烦(谁叫偶打字不快啊^_^)
BY 雨田心梦
*/
/* 为了调用FILE等函数 */ #include "stdio.h"
#include "conio.h"
/* 为了调用atof()等函数 */ #include "stdlib.h"
#define TRUE 1
/* 结构体声明 */
struct zhigong
{
int 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 zg[50];
/* 建立结构体变量 */
struct zhigong zgone;
/* 职员列表中的数量 */
int n=0;
/* 获得字符串 */
char numstr[50];
main()
{
char 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
date
+\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");
}
}
}
/*计算个人所得税*/
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 && m<5000) {
sui2=(m-1000)*0.1;
sui3=(1000-800)*0.05; }
else if(m>=800 && m<1000) {
sui3=(m-800)*0.05;
}
tmp=sui1+sui2+sui3;
return(tmp);
}
/* 添加职工的工资信息 */
addone(void)
{
printf("\n");
printf("Record NO. %d \n",n+1);
printf("Please put in month: \n");
gets(numstr);
zg[n].month=atoi(numstr);
printf("Please put in zhigongbianhao: \n"); gets(numstr);
zg[n].id=atof(numstr);
printf("Please put in jibengongzi: \n"); gets(numstr);
zg[n].jbgz=atof(numstr);
printf("Please put in jintie: \n");
gets(numstr);
zg[n].jt=atof(numstr);
printf("Please put in gangtie: \n");
gets(numstr);
zg[n].gt=atof(numstr);
printf("Please put in butie: \n");
gets(numstr);
zg[n].bt=atof(numstr);
printf("Please put in fangtie: \n");
gets(numstr);
zg[n].ft=atof(numstr);
printf("Please put in jiaotongbutie: \n");
gets(numstr);
zg[n].jtbt=atof(numstr);
zg[n].yfs=(zg[n].jbgz)+(zg[n].jt)+(zg[n].gt)+(zg[n].bt)+(z g[n].ft)+(zg[n].jtbt);
printf("Please put in fangzu: \n");
gets(numstr);
zg[n].fz=atof(numstr);
printf("Please put in chuxu: \n");
gets(numstr);
zg[n].cx=atof(numstr);
printf("Please put in huifei: \n");
gets(numstr);
zg[n].hf=atof(numstr);
zg[n].grsds=tgrsds(zg[n].yfs);
zg[n].yks=(zg[n].fz)+(zg[n].cx)+(zg[n].hf)+(zg[n].grsds); zg[n].sfs=(zg[n].yfs)-(zg[n].yks);
n++;
}
/*删除个人纪录*/
delone(void)
{
struct zhigong tmp[50];
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(zg[j].id==zhigongid)
{
flagfind=1;
}
else
{
tmp[k]=zg[j];
k++;
}
}
if(flagfind==1)
{
for(j=0;j<=(n-1);j++)
{
zg[j]=tmp[j];
}
printf("\n Record deleted! \n");
n=n-1;
}
else
{
printf("\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(zg[j].id==zhigongid)
{
printf("NO.:%d\n",j);
printf("month:%d\n",zg[j].month);
printf("zhigongbianhao%10.0f\n",zg[j].id); printf("jibengongzi:%10.2f\n",zg[j].jbgz); printf("Please put in jibengongzi: \n"); gets(numstr);
zg[j].jbgz=atof(numstr);
printf("jintie:%10.2f\n",zg[j].jt);
printf("Please put in jintie: \n");
gets(numstr);
zg[j].jt=atof(numstr);
printf("gangtie:%10.2f\n",zg[j].gt);
printf("Please put in gangtie: \n");
gets(numstr);
zg[j].gt=atof(numstr);
printf("butie:%10.2f\n",zg[j].bt);
printf("Please put in butie: \n");
gets(numstr);
zg[j].bt=atof(numstr);
printf("fangtie:%10.2f\n",zg[j].ft);
printf("Please put in fangtie: \n");
gets(numstr);
zg[j].ft=atof(numstr);
printf("jiaotongbutie:%10.2f\n",zg[j].jtbt);
printf("Please put in jiaotongbutie: \n");
gets(numstr);
zg[j].jtbt=atof(numstr);
zg[j].yfs=(zg[j].jbgz)+(zg[j].jt)+(zg[j].gt)+ (zg[j].bt)+(zg[j].ft)+(zg[j].jtbt);
printf("fangzu:%10.2f\n",zg[j].fz);
printf("Please put in fangzu: \n");
gets(numstr);
zg[j].fz=atof(numstr);
printf("chuxu:%10.2f\n",zg[j].cx);
printf("Please put in chuxu: \n");
gets(numstr);
zg[j].cx=atof(numstr);
printf("huifei:%10.2f\n",zg[j].hf);
printf("Please put in huifei: \n");
gets(numstr);
zg[j].hf=atof(numstr);
zg[j].grsds=tgrsds(zg[j].yfs);
zg[j].yks=(zg[j].fz)+(zg[j].cx)+(zg[j].hf)+(z g[j].grsds);
zg[j].sfs=(zg[j].yfs)-(zg[j].yks);
flagfind=1;
}
else
{
flagfind=0;
}
}
if(flagfind==0)printf("\n Can not find record! \n");
return;
}
/*随机从内存中查找纪录根据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(zg[j].id==zhigongid)
{
printf("\n %d record found! \n |",j+1);
printf("month:%d |",zg[j].month);
printf("zhigongbianhao%10.0f |",zg[j].id);
printf("jibengongzi:%10.2f |",zg[j].jbgz);
printf("jintie:%10.2f |",zg[j].jt);
printf("gangtie:%10.2f |",zg[j].gt);
printf("butie:%10.2f |",zg[j].bt);
printf("fangtie:%10.2f |",zg[j].ft);
printf("jiaotongbutie:%10.2f |",zg[j].jtbt);
printf("yingfashu:%10.2f |",zg[j].yfs);
printf("fangzu:%10.2f |",zg[j].fz);
printf("chuxu:%10.2f |",zg[j].cx);
printf("huifei:%10.2f |",zg[j].hf);
printf("gerensuodeshui:%10.2f |",zg[j].grsds);
printf("yingkoushu:%10.2f |",zg[j].yks);
printf("shifashu:%10.2f\n",zg[j].sfs);
flagfind=1;
}
else
{
flagfind=0;
}
}
if(flagfind==0)printf("\n Can not find record! \n");
return;
}
/* 输出当月全体职工的工资信息 */
listall(void)
{
int j;
if(n<1)
{
printf("\n No record! \n");
}
else
{
for(j=0;j<n;j++)
{
printf("\n NO:%d |",j+1);
printf("month:%d |",zg[j].month);
printf("zhigongbianhao%10.0f |",zg[j].id);
printf("jibengongzi:%10.2f |",zg[j].jbgz);
printf("jintie:%10.2f |",zg[j].jt);
printf("gangtie:%10.2f |",zg[j].gt);
printf("butie:%10.2f |",zg[j].bt);
printf("fangtie:%10.2f |",zg[j].ft);
printf("jiaotongbutie:%10.2f |",zg[j].jtbt);
printf("yingfashu:%10.2f |",zg[j].yfs);
printf("fangzu:%10.2f |",zg[j].fz);
printf("chuxu:%10.2f |",zg[j].cx);
printf("huifei:%10.2f |",zg[j].hf);
printf("gerensuodeshui:%10.2f |",zg[j].grsds);
printf("yingkoushu:%10.2f |",zg[j].yks);
printf("shifashu:%10.2f\n",zg[j].sfs);
}
}
}
/* 把所有纪录从内存中写到磁盘gongzi.rec中 */
wfile(void)
{
FILE *fptr;
printf("\n Saving date... \n");
if(n<1)
{
printf("\n No record! \n");
return;
}
if((fptr=fopen("gongzi.rec","wb"))==NULL)
printf("Can not open file gongzi.rec! \n"); else
{
fwrite(zg,sizeof(zg[0]),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"); else
{
while(fread(&zg[n],sizeof(zg[n]),1,fptr)==1) n++;
fclose(fptr);
printf(" Total %d records read! \n",n);
}
}。