c语言课程设计人事管理系统.doc
湘 南 学 院C语言课程设计 课程:人事管理系统 姓名: 学号: 系别:计算机科学与技术 专业:计算机科学与技术 级别: 时间:2012年6月5日 目 录1成员分工表2系统功能分析3函数简介4系统流程图5原代码6各成员总结成员分工表姓名 学号 任务1程序输/插入函数部分设计,程序总体检验,课程封面设计以及成员任务安排2程序查询部分设计3程序删除部分设计 4负责登录页面,成员表格的制作 5注册页面代码的编写6负责程序浏览部分一、 系统功能分析 人事管理系统的主要任务是对人事档案进行整理,使得能方便快捷地对人事档案进行查询、统计、更新,并且能按一定要求输出报表。通过该系统,使企业的人事管理工作系统化、规范化、自动化,从而提高企业人事管理的效率。 本系统分为如下的几大模块:档案查询,输入新员工的信息,删除员工信息和浏览员工信息。其中的主要模块包括:1、 主界面模块该模块提供管理系统的主界面,是主系统的唯一入口,该界面提供用户登陆和新用户的注册。 2、 查询模块该模块提供查询符合某一条件的人事档案的界面,其中包括两种查询方式,一种是按姓名查找,另一种是按职工号查找。3、输插入模块 该模块主要功能是输入新员工的信息。4、删除模块 该模块主要是删除员工的信息。5、 浏览模块该模块提供全部人事档案的界面。6、 退出系统二、函数简介 该系统运用了三个结构体数组和10个函数,结构体数组包括:denglu数组、yuefen1数组和worker数组,denglu数组中有两个元素:用户名username10和密码key5;yuefen1数组中只有一个元素:月份,而worker数组中包含有二十个元素:职工号gonghao,姓名 xingming20,应发工资yfgz,实发工资 sf,电费df,税金sj,性别sex4,职位position10,部门 department10,工作时间wokestate20,联系电话tel13,身份证号shenfenzheng20,银行卡号kahao10,QQ号码qq10,年龄age,邮箱email20,政治面貌plotical10,籍贯jiguan40,婚否ifmarry5,住址address40,实发工资sfgz。函数包括:1.登陆界面函数 denglujiemian;2.读取函数 duqu;3.浏览函数 liulan;4.查询函数 chaxun;5.删除函数 shanchu;6.输入和插入函数 luru;7.登陆函数 load;8.实发工资计算函数 shifagongzi;9.个人所得税计算函数 shuijin;10.注册函数 zhuce三 、单位人事管理系统流程图注册 登陆主界面查询删除输/插入单个信息员工信息退出系统四、原代码简介#include<stdio.h>#include<string.h>#define N 100void denglujiemian();void load();void zhuce(void);struct dengluchar username10;char key5;struct yuefen1int yuefen;struct worker int gonghao; char xingming20; float yfgz; float sf; float df; float sj; char sex4; char position10; char department10; char wokestate20; char tel13,shenfenzheng20,kahao10,qq10; int age; char email20; char plotical10; char jiguan40; char ifmarry5; char address40; float sfgz; struct yuefen1 m12; ;int ygsm;struct worker aN;float shuijin(float m) float shui1,shui2; float tmp; shui1=0;shui2=0;if(m>=1500) shui1=(m-1500)*0.1; shui2=30;else if(m>=1000 && m<1500) shui2=(m-1000)*0.05; tmp=shui1+shui2;return(tmp);float shifagongzi(float a,float b,float c,float d) float e=a-b-c-d; return(e);void denglujiemian(void) /登陆的主界面函数int i;printf(" 欢迎使用湘南公司人事管理系统");printf("n n");printf(" . 登陆系统 n");printf(" n");printf(" . 注册新用户 n");printf(" n");printf(" . 退出系统 n");printf(" n");printf(" =请选择功能数字编号=n");scanf("%d",&i);switch(i)case 1:load();break;case 2:zhuce();break;default:printf("输入错误n");denglujiemian();void load(void) /登陆函数char a10,b5;struct denglu head10;FILE *fp;int c=1,i;if(fp=fopen("D:user.txt","r")=NULL)printf("不能打开文档n");denglujiemian();for(i=0;i<1;i+)/fread(&headi,sizeof(struct denglu),1,fp); fscanf(fp,"%s %s",headi.username,headi.key);while(c) printf("用户名:");scanf("%s",a);printf("密码:");scanf("%s",b); for(i=0;i<10;i+) if(strcmp(a,headi.username)=0)&&(strcmp(b,headi.key)=0) printf("登陆成功!n"); break; if(i= 10 )printf("n警告:用户名不存在或密码输入错误,请重新输入!nn");c=1;else c=0;fclose(fp);void zhuce() /注册新用户struct denglu p;FILE *fp;printf("请输入用户名,密码n");scanf("%s%s",p.username,p.key);if(fp=fopen("D:user.txt","a")=0) printf("无法打开文件!n"); denglujiemian(); fwrite(&p,sizeof(struct denglu),1,fp);printf("注册成功!n");fclose(fp);void duqu() FILE *fp; if(fp=fopen("D:员工信息.txt","r")=NULL) printf("无法读取文件"); ;return; while(!feof(fp) fread(&aygsm,sizeof(struct worker),1,fp); ygsm+; void chaxun() int b; int i; int j; label_3: b=0; while(b!=1&&b!=2) printf("1,选择姓名查询.n2,选择工号查询.n"); scanf("%d",&b); if(b=1) char c20; printf("请输入您的姓名:n"); scanf("%s",c); i=0; while(!(strcmp(ai.xingming,c)=0)&&i<ygsm) i+; if(i=ygsm) printf("您查找的名字不存在,请正确输入您的名字或用工号查询n"); return; printf("%-10d %-20s n",ai.gonghao,ai.xingming); for(j=0;ai.mj.yuefen!=NULL;j+) printf("月份:%5d,姓名:%s,工号:%d,性别:%s,应发工资:%10.2f,水费:%7.2f,电费:%7.2f,税金:%7.2f,实发工资:%10.2f.n",ai.mj.yuefen,ai.xingming,ai.gonghao,ai.sex,ai.yfgz,ai.sf,ai.df,ai.sj,ai.sfgz); printf("籍贯:%s,通讯地址:%s,部门:%s,政治面貌:%s,职位:%s,年龄:%d,联系号码:%d,婚姻状况:%s,工作地:%s,邮箱:%s,身份证号:%s,卡号:%s,QQ:%sn",ai.jiguan,ai.address,ai.department,ai.plotical,ai.position,ai.age,ai.tel,ai.ifmarry,ai.wokestate,ai.email,ai.shenfenzheng,ai.kahao,ai.qq); b=0; while(b!=1&&b!=2) printf("1,继续查询.n2,返回主菜单.n"); scanf("%d",&b); if(b=1) goto label_3; else ;return; else int d=0; while(!(d>=1&&d<=500) printf("请输入您的工号(三位数字),例如:001n"); scanf("%d",&d); i=0; while(ai.gonghao!=d&&i<ygsm) i+; if(i=ygsm) printf("您查找的名字不存在,请正确输入您的名字或用工号查询n"); return; printf("%-10d %-20s n",d,ai.xingming); for(j=0;ai.mj.yuefen!=NULL;j+) printf("月份:%5d,姓名:%s,工号:%d,性别:%s,应发工资:%10.2f,水费:%7.2f,电费:%7.2f,税金:%7.2f,实发工资:%10.2f.n",ai.mj.yuefen,ai.xingming,ai.gonghao,ai.sex,ai.yfgz,ai.sf,ai.df,ai.sj,ai.sfgz); printf("籍贯:%s,通讯地址:%s,部门:%s,政治面貌:%s,职位:%s,年龄:%d,联系号码:%d,婚姻状况:%s,工作地:%s,邮箱:%s,身份证号:%s,卡号:%s,QQ:%s.n",ai.jiguan,ai.address,ai.department,ai.plotical,ai.position,ai.age,ai.tel,ai.ifmarry,ai.wokestate,ai.email,ai.shenfenzheng,ai.kahao,ai.qq); b=0; while(b!=1&&b!=2) printf("1,继续查询.n2,返回主菜单.n"); scanf("%d",&b); if(b=1) goto label_3; else ;return; void liulan() struct worker x; int c; int i; int j; int k; for(i=0;i<ygsm;i+) c=ai.gonghao; k=i; for(j=i+1;j<ygsm;j+) if(c>aj.gonghao) c=aj.gonghao; k=j; x=ai; ai=ak; ak=x; for(i=0;i<ygsm;i+) printf("%-10d %-20s n",ai.gonghao,ai.xingming); for(j=0;ai.mj.yuefen!=NULL;j+) printf("月份:%5d,姓名:%s,工号:%d,性别:%s,应发工资:%10.2f,水费:%7.2f,电费:%7.2f,税金:%7.2f,实发工资:%10.2f.n",ai.mj.yuefen,ai.xingming,ai.gonghao,ai.sex,ai.yfgz,ai.sf,ai.df,ai.sj,ai.sfgz); printf("籍贯:%s,通讯地址:%s,部门:%s,政治面貌:%s,职位:%s,年龄:%d,联系号码:%d,婚姻状况:%s,工作地:%s,邮箱:%s,身份证号:%s,卡号:%s,QQ:%s.n",ai.jiguan,ai.address,ai.department,ai.plotical,ai.position,ai.age,ai.tel,ai.ifmarry,ai.wokestate,ai.email,ai.shenfenzheng,ai.kahao,ai.qq); for(i=0;i<5;i+) printf("n"); void shanchu() FILE *fp; int b; int c; int i; int j; label_4: printf("请输入要删除信息的工号:n"); scanf("%d",&b); for(i=0;i<ygsm;i+) if(ai.gonghao=b) j=i; for(i=j+1;i<ygsm;i+) ai-1=ai; ygsm-; fp=fopen("D:工资信息.txt","w"); for(i=0;i<ygsm;i+) fwrite(&ai,sizeof(struct worker),1,fp); fclose(fp); c=0; while(c!=1&&c!=2) printf("1.继续删除n2 返回主菜单n"); scanf("%d",&c); if(c=1) goto label_4; else return; void luru() FILE *fp; int k; int i; int j; int b; int c; int d; if(fp=fopen("D:员工信息.txt","w")=NULL) printf("无法找到目标文件n"); return; label_1: b=0; while(!(b>=1&&b<=12) printf("请您输入您要建立的月份n"); scanf("%d",&b); b=b-1; d=0; while(!(d>=1&&d<=500) printf("请输入您要录入员工的工号(三位数字),例如:001n"); scanf("%d",&d); for(i=0;i<ygsm&&ai.gonghao!=d;i+); if(ai.gonghao!=d) c=0; while(c!=1&&c!=2) printf("没有该工号记录.n1 新建n2 返回上一级n"); scanf("%d",&c); if(c=2) goto label_1; if(c=1) ai.gonghao=d; ai.mb.yuefen=b+1; printf("请输入姓名:n"); scanf("%s",ai.xingming); printf("请输入性别: n"); scanf("%s",&ai.sex); printf("请输入籍贯: n"); scanf("%40s",&ai.jiguan); printf("请输入通讯地址: n"); scanf("%40s",&ai.address); printf("请输入部门: n"); scanf("%s",&ai.department); printf("请输入政治面貌: n"); scanf("%10s",&ai.plotical); printf("请输入职位: n"); scanf("%s",&ai.position); printf("请输入年龄: n"); scanf("%d",&ai.age); printf("请输入联系号码: n"); scanf("%s",ai.tel); printf("请输入婚姻状况: n"); scanf("%s",ai.ifmarry); printf("请输入工作地: n"); scanf("%s",ai.wokestate); printf("请输入邮箱: n"); scanf("%20s",ai.email); printf("请输入此人该月的应发工资: n"); scanf("%f",&ai.yfgz); printf("请输入此人该月所用水费: n"); scanf("%f",&ai.sf); printf("请输入此人该月所用电费: n"); scanf("%f",&ai.df); printf("请输入此人的身份证号:n"); scanf("%20s",ai.shenfenzheng); printf("请输入此人的银行卡号:n"); scanf("%s",ai.kahao); printf("请输入此人的QQ号码:n"); scanf("%s",ai.qq); ai.sj=shuijin(ai.yfgz); ai.sfgz=shifagongzi(ai.yfgz,ai.sf,ai.df,ai.sj); ygsm+; c=0; while(c!=1 && c!=2) printf("1 继续n2 返回主菜单n"); scanf("%d",&c); if(c=1) goto label_1; if(c=2) goto label_2; else if(ai.mb.yuefen=b+1) c=0; while(c!=1 && c!=2) printf("已有该月记录n1 覆盖原有记录n2 返回上级n"); scanf("%d",&c); if(c=1) printf("请输入姓名:n"); scanf("%s",ai.xingming); ai.mb.yuefen=b+1; printf("请输入性别: n"); scanf("%s",&ai.sex); printf("请输入籍贯: n"); scanf("%40s",&ai.jiguan); printf("请输入通讯地址: n"); scanf("%40s",&ai.address); printf("请输入部门: n"); scanf("&s",&ai.department); printf("请输入政治面貌: n"); scanf("%10s",&ai.plotical); printf("请输入职位: n"); scanf("%s",&ai.position); printf("请输入年龄: n"); scanf("%d",&ai.age); printf("请输入联系号码: n"); scanf("%s",ai.tel); printf("请输入婚姻状况: n"); scanf("%s",ai.ifmarry); printf("请输入工作地: n"); scanf("%s",ai.wokestate); printf("请输入邮箱: n"); scanf("%20s",ai.email); printf("请输入此人该月的应发工资:n"); scanf("%d",&ai.yfgz); printf("请输入此人该月所用水费:n"); scanf("%d",&ai.sf); printf("请输入此人该月所用电费: n"); scanf("%d",&ai.df); printf("请输入此人的身份证号:n"); scanf("%20s",ai.shenfenzheng); printf("请输入此人的银行卡号:n"); scanf("%s",ai.kahao); printf("请输入此人的QQ号码:n"); scanf("%s",ai.qq); ai.sj=shuijin(ai.yfgz); ai.sfgz=shifagongzi(ai.yfgz,ai.sf,ai.df,ai.sj); while(c!=1 && c!=2) printf("1 继续n2 返回主菜单n"); scanf("%d",&c); if(c=1) goto label_1; if(c=2) goto label_2; else goto label_1; if(ai.mb.yuefen=NULL) ai.mb.yuefen=b+1; printf("请输入姓名:n"); scanf("%s",ai.xingming); ai.mb.yuefen=b+1; printf("请输入性别: n"); scanf("%s",&ai.sex); printf("请输入籍贯: n"); scanf("%40s",&ai.jiguan); printf("请输入通讯地址: n"); scanf("%40s",&ai.address); printf("请输入部门: n"); scanf("&s",&ai.department); printf("请输入政治面貌: n"); scanf("%10s",&ai.plotical); printf("请输入职位: n"); scanf("%s",&ai.position); printf("请输入年龄: n"); scanf("%d",&ai.age); printf("请输入联系号码: n"); scanf("%s",ai.tel); printf("请输入婚姻状况: n"); scanf("%s",ai.ifmarry); printf("请输入工作地: n"); scanf("%s",ai.wokestate); printf("请输入邮箱: n"); scanf("%20s",ai.email); printf("请输入此人该月的应发工资:n"); scanf("%f",&ai.yfgz); printf("请输入此人该月所用水费:n"); scanf("%f",&ai.sf); printf("请输入此人该月所用电费: n"); scanf("%f",&ai.df); printf("请输入此人的身份证号:n"); scanf("%20s",ai.shenfenzheng); printf("请输入此人的银行卡号:n"); scanf("%s",ai.kahao); printf("请输入此人的QQ号码:/n"); scanf("%s",ai.qq); ai.sj=shuijin(ai.yfgz); ai.sfgz=shifagongzi(ai.yfgz,ai.sf,ai.df,ai.sj); c=0; while(c!=1 && c!=2) printf("1 继续n2 返主主菜单n"); scanf("%d",&c); if(c=1) goto label_1; if(c=2) goto label_2; c=0; while(c!=1 && c!=2) printf("1 继续n2返回主菜单n"); scanf("%d",&c); if(c=1) goto label_1; if(c=2) goto label_2; label_2: fp=fopen("D:员工信息.txt","r+"); for(j=0;j<ygsm;j+); fwrite(&ai,sizeof(struct worker),1,fp); fclose(fp); void main()float shifagongzi(float a,float b,float c,float d); int a=0;denglujiemian(); duqu(); while(a!=5) printf("欢迎使用n"); printf("请按菜单选项进行选择 n"); printf("1.查询员工情况 n"); printf("2.输/插入员工信息 n"); printf("3.删除员工信息 n"); printf("4.浏览员工信息 n"); printf("5.退出人事管理系统 n"); printf("_ _ _n"); scanf("%d",&a); switch(a) case 1:chaxun();break;case 2:luru();break;case 3:shanchu();break;case 4:liulan();break;case 5:printf(" 欢迎使用本公司管理系统!再见! ");break;d