人事管理系统C 源代码
#include "stdio.h" /*标准输入输出函数库*/
#include "stdlib.h" /*标准函数库*/
#include "string.h" /*字符串函数库*/
#include "conio.h" /*屏幕操作函数库*/
#define HEADER1 " -------------------------------RSDA---------------------------------------- \n"
#define HEADER2 "| number| name | jbgz | jj | kk | yfgz | sk | sfgz | \n"
#define HEADER3 "|--------|-----------|--------|--------|--------|--------|--------|--------| \n"
#define FORMAT "|%-8s|%-10s |%8.2f|%8.2f|%8.2f|%8.2f|%8.2f|%8.2f| \n" #define DATA p->num,p->name,p->jbgz,p->jj,p->kk,p->yfgz,p->sk,p-
>sfgz
#define END "---------------------------------------------------------------------------- \n"
#define N 60
int saveflag=0; /*是否需要存盘的标志变量*/
/*定义与职工有关的数据结构*/
typedef struct employee /*标记为employee*/
{
char num[10]; /*职工编号*/
char name[15]; /*职工姓名*/
float jbgz; /*基本工资*/
float jj; /*奖金*/
float kk; /*扣款*/
float yfgz; /*应发工资*/
float sk; /*税款*/
float sfgz; /*实发工资*/
}RSDA;
void menu() /*主菜单*/
{
system("cls"); /*调用DOS命令,清屏.与clrscr()功能相同*/
printf(" The Employee Management System \n");
printf("
*************************Menu********************************\n");
printf(" * 1 input record 2 delete record *\n");
printf(" * 3 search record 4 modify record *\n");
printf(" * 5 insert record 6 count record *\n");
printf(" * 7 sort record 8 save record *\n");
printf(" * 9 display record 0 quit system *\n");
printf("
*************************************************************\n");
/*printf()送格式化输出至屏幕中*/
}
void printheader() /*格式化输出表头*/
{
printf(HEADER1);
printf(HEADER2);
printf(HEADER3);
}
void printdata(RSDA pp) /*格式化输出表中数据*/
{
RSDA* p;
p=&pp;
printf(FORMAT,DATA);
}
void Disp(RSDA tp[],int n) /*显示数组tp[]中存储的记录,内容为employee 结构中定义的内容*/
{
int i;
if(n==0) /*表示没有职工工资记录*/
{
printf("\n=====>Not employee record!\n");
while(getchar()!='\n')
continue;
getchar();
}
printf("\n\n");
printheader(); /*输出表格头部*/
i=0;
while(i { printdata(tp[i]); i ; printf(HEADER3); } while(getchar()!='\n') continue; getchar(); } void Wrong() /*输出按键错误信息*/ { printf("\n\n\n\n\n***********Error:input has wrong! press any key to continue**********\n"); while(getchar()!='\n') continue; getchar(); } void Nofind() /*输出未查找到此职工的信息*/ { printf("\n=====>Not find this employee record!\n"); } /************************************************************* 作用:用于定位数组中符合要求的记录,并返回保存该记录的数组元素下标值 参数:findmess[]保存要查找的具体内容; nameornum[]保存按什么在数组中查找**************************************************************/ int Locate(RSDA tp[],int n,char findmess[],char nameornum[]) { int i=0; if(strcmp(nameornum,"num")==0) /*按职工编号查询*/ { while(i if(strcmp(tp[i].num,findmess)==0) /*若找到findmess值的职工编号*/ return i; i ; } } else if(strcmp(nameornum,"name")==0) /*按职工姓名查询*/ { while(i { if(strcmp(tp[i].name,findmess)==0) /*若找到findmess值的姓名*/ return i; i ; } } return -1; /*若未找到,返回一个整数-1*/ } /*输入字符串,并进行长度验证(长度 void stringinput(char *t,int lens,char *notice) { char n[255]; do{ printf(notice); /*显示提示信息*/ scanf("%s",n); /*输入字符串*/ if(strlen(n)>lens) printf("\n exceed the required length! \n"); /*进行长度校验,超过lens值重新输入*/ }while(strlen(n)>lens); strcpy(t,n); /*将输入的字符串复制到字符串t中*/ } /*输入数值,0<=数值)*/ float numberinput(char *notice) { float t=0.00; do{ printf(notice); /*显示提示信息*/ scanf("%f",&t); /*输入如工资等数值型的值*/ if(t<0) printf("\n score must >=0! \n"); /*进行数值校验*/ }while(t<0); return t; } /*增加职工工资记录*/ int Add(RSDA tp[],int n) { char ch,num[10]; int i,flag=0; system("cls"); Disp(tp,n); /*先打印出已有的职工工资信息*/ while(1) /*一次可输入多条记录,直至输入职工编号为0的记录结束添加操作*/ { while(1) /*输入职工编号,保证该编号没有被使用,若输入编号为0,则退出 添加记录操作*/ { stringinput(num,10,"input number(press '0'return menu):"); /*格式化输入编号并检验*/ flag=0; if(strcmp(num,"0")==0) /*输入为0,则退出添加操作,返回主界面*/ {return n;} i=0; while(i { if(strcmp(tp[i].num,num)==0) { flag=1; break; } i ; } if(flag==1) /*提示用户是否重新输入*/ { getchar(); printf("==>The number %s is existing,try again?(y/n):",num); scanf("%c",&ch); if(ch=='y'||ch=='Y') continue; else return n; } else {break;} } strcpy(tp[n].num,num); /*将字符串num复制到tp[n].num中*/ stringinput(tp[n].name,15,"Name:"); tp[n].jbgz=numberinput("jbgz:"); /*输入并检验基本工资*/ tp[n].jj=numberinput("jiangjin:"); /*输入并检验奖金*/ tp[n].kk=numberinput("koukuan:"); /*输入并检验扣款*/ tp[n].yfgz=tp[n].jbgz tp[n].jj-tp[n].kk; /*计算应发工资*/ tp[n].sk=tp[n].yfgz*0.12; /*计算税金,这里取应发工资的12%*/ tp[n].sfgz=tp[n].yfgz-tp[n].sk; /*计算实发工资*/ saveflag=1; n ; } return n; } /*按职工编号或姓名,查询记录*/ void Qur(RSDA tp[],int n) { int select; /*1:按编号查,2:按姓名查,其他:返回主界面(菜单)*/ char searchinput[20]; /*保存用户输入的查询内容*/ int p=0; if(n<=0) /*若数组为空*/ { system("cls"); printf("\n=====>No employee record!\n"); getchar(); return; } system("cls"); printf("\n =====>1 Search by number =====>2 Search by name\n"); printf(" please choice[1,2]:"); scanf("%d",&select); if(select==1) /*按编号查询*/ { stringinput(searchinput,10,"input the existing employee number:"); p=Locate(tp,n,searchinput,"num");/*在数组tp中查找编号为searchinput 值的元素,并返回该数组元素的下标值*/ if(p!=-1) /*若找到该记录*/ { printheader(); printdata(tp[p]); printf(END); printf("press any key to return"); getchar(); } else Nofind(); getchar(); } else if(select==2) /*按姓名查询*/ { stringinput(searchinput,15,"input the existing employee name:"); p=Locate(tp,n,searchinput,"name"); if(p!=-1) { printheader(); printdata(tp[p]); printf(END); printf("press any key to return"); getchar(); } else Nofind(); getchar(); } else Wrong(); getchar(); } /*删除记录:先找到保存该记录的数组元素的下标值,然后在数组中删除该数组元素*/ int Del(RSDA tp[],int n) { int sel; char findmess[20]; int p=0,i=0; if(n<=0) { system("cls"); printf("\n=====>No employee record!\n"); getchar(); return n; } system("cls"); Disp(tp,n); printf("\n =====>1 Delete by number =====>2 Delete by name\n"); printf(" please choice[1,2]:"); scanf("%d",&sel); if(sel==1) { stringinput(findmess,10,"input the existing employee number:"); p=Locate(tp,n,findmess,"num"); getchar(); if(p!=-1) { for(i=p 1;i { strcpy(tp[i-1].num,tp[i].num); strcpy(tp[i-1].name,tp[i].name); tp[i-1].jbgz=tp[i].jbgz; tp[i-1].jj=tp[i].jj; tp[i-1].kk=tp[i].kk; tp[i-1].yfgz=tp[i].yfgz; tp[i-1].jbgz=tp[i].sk; tp[i-1].sfgz=tp[i].sfgz; } printf("\n==>delete success!\n"); n--; getchar(); saveflag=1; } else Nofind(); getchar(); } else if(sel==2) /*先按姓名查询到该记录所在的数组元素的下标值*/ { stringinput(findmess,15,"input the existing employee name:"); p=Locate(tp,n,findmess,"name"); getchar(); if(p!=-1) { for(i=p 1;i { strcpy(tp[i-1].num,tp[i].num); strcpy(tp[i-1].name,tp[i].name); tp[i-1].jbgz=tp[i].jbgz; tp[i-1].jj=tp[i].jj; tp[i-1].kk=tp[i].kk; tp[i-1].yfgz=tp[i].yfgz; tp[i-1].jbgz=tp[i].sk; tp[i-1].sfgz=tp[i].sfgz; } printf("\n=====>delete success!\n"); n--; getchar(); saveflag=1; } else Nofind(); getchar(); } return n; } /*修改记录:先按输入的职工编号查询到该记录,然后提示用户修改编号之外的值,编号不能修改*/ void Modify(RSDA tp[],int n) { char findmess[20]; int p=0; if(n<=0) { system("cls"); printf("\n=====>No employee record!\n"); getchar(); return ; } system("cls"); printf("modify employee recorder"); Disp(tp,n); stringinput(findmess,10,"input the existing employee number:"); /*输入并检验该编号*/ p=Locate(tp,n,findmess,"num"); /*查询到该数组元素,并返回下标值*/ if(p!=-1) /*若p!=-1,表明已经找到该数组元素*/ { printf("Number:%s,\n",tp[p].num); printf("Name:%s,",tp[p].name); stringinput(tp[p].name,15,"input new name:"); printf("jbgz:%8.2f,",tp[p].jbgz); tp[p].jbgz=numberinput("jbgz:"); printf("jiangjin:%8.2f,",tp[p].jj); tp[p].jj=numberinput("jiangjin:"); printf("koukuan:%8.2f,",tp[p].kk); tp[p].kk=numberinput("koukuan:"); tp[n].yfgz=tp[n].jbgz tp[n].jj-tp[n].kk; tp[n].sk=tp[n].yfgz*0.12; tp[n].sfgz=tp[n].yfgz-tp[n].sk; printf("\n=====>modify success!\n"); getchar(); Disp(tp,n); getchar(); saveflag=1; } else {Nofind(); getchar(); } return ; } /*插入记录:按职工编号查询到要插入的数组元素的位置,然后在该编号之后插入一个新数组元素。*/ int Insert(RSDA tp[],int n) { char ch,num[10],s[10]; /*s[]保存插入点位置之前的编号,num[]保存输入的新记录的编号*/ RSDA newinfo; int flag=0,i=0,kkk=0; system("cls"); Disp(tp,n); while(1) { stringinput(s,10,"please input insert location after the Number:"); flag=0;i=0; while(i { if(strcmp(tp[i].num,s)==0) {kkk=i;flag=1;break;} i ; } if(flag==1) break; /*若编号存在,则进行插入之前的新记录输入操作*/ else { getchar(); printf("\n=====>The number %s is not existing,try again?(y/n):",s); scanf("%c",&ch); if(ch=='y'||ch=='Y') {continue;} else {return n;} } } /*以下新记录的输入操作与Add()相同*/ while(1) { stringinput(num,10,"input new employee Number:"); i=0;flag=0; while(i { if(strcmp(tp[i].num,num)==0) {flag=1;break;} i ; } if(flag==1) { getchar(); printf("\n=====>Sorry,The number %s is existing,try again?(y/n):",num); scanf("%c",&ch); if(ch=='y'||ch=='Y') {continue;} else {return n;} } else break; } strcpy(newinfo.num,num); /*将字符串num复制到newinfo.num中*/ stringinput(https://www.360docs.net/doc/fe1354425.html,,15,"Name:"); newinfo.jbgz=numberinput("jbgz:"); /*输入并检验jbgz*/ newinfo.jj=numberinput("jiangjin:"); /*输入并检验jiangjin*/ newinfo.kk=numberinput("koukuan:"); /*输入并检验koukuan*/ newinfo.yfgz=newinfo.jbgz newinfo.jj-newinfo.kk; /*计算yfgz*/ newinfo.sk=newinfo.yfgz*0.12; /*计算sk*/ newinfo.sfgz=newinfo.yfgz-newinfo.sk; saveflag=1; /*在main()有对该全局变量的判断,若为1,则进行存盘操作*/ for(i=n-1;i>kkk;i--) /*从最后一个组织元素开始往向移动一个元素的位置*/ { strcpy(tp[i 1].num,tp[i].num); strcpy(tp[i 1].name,tp[i].name); tp[i 1].jbgz=tp[i].jbgz; tp[i 1].jj=tp[i].jj; tp[i 1].kk=tp[i].kk; tp[i 1].yfgz=tp[i].yfgz; tp[i 1].sk=tp[i].sk; tp[i 1].sfgz=tp[i].sfgz; } strcpy(tp[kkk 1].num,newinfo.num); /*在kkk的元素位置后插入新记录*/ strcpy(tp[kkk 1].name,https://www.360docs.net/doc/fe1354425.html,); tp[kkk 1].jbgz=newinfo.jbgz; tp[kkk 1].jj=newinfo.jj; tp[kkk 1].kk=newinfo.kk; tp[kkk 1].yfgz=newinfo.yfgz; tp[kkk 1].sk=newinfo.sk; tp[kkk 1].sfgz=newinfo.sfgz; n ; Disp(tp,n); printf("\n\n"); getchar(); return n; } /*统计公司的员工的工资在各等级的人数*/ void Tongji(RSDA tp[],int n) { int count10000=0,count5000=0,count2000=0,count0=0; int i=0; if(n<=0) { system("cls"); printf("\n=====>Not employee record!\n"); getchar(); return ; } system("cls"); Disp(tp,n); i=0; while(i { if(tp[i].sfgz>=10000) {count10000 ;i=i 1;continue;} /*实发工 资>10000*/ if(tp[i].sfgz>=5000) {count5000 ;i=i 1;continue;} /*5000≤实发工资<10000*/ if(tp[i].sfgz>=2000) {count2000 ;i=i 1;continue;} /*2000≤实发工资<5000*/ if(tp[i].sfgz<2000) {count0 ;i=i 1;continue;} /*实发工资 <2000*/ } printf("\n------------------------------the TongJi result--------------------------------\n"); printf("sfgz>= 10000:%d (ren)\n",count10000); printf("5000<=sfgz<10000:%d (ren)\n",count5000); printf("2000<=sfgz< 5000:%d (ren)\n",count2000); printf("sfgz< 2000:%d (ren)\n",count0); printf("-------------------------------------------------------------------------------\n"); printf("\n\npress any key to return"); getchar(); } /*利用冒泡排序法实现数组的按实发工资字段的降序排序,从高到低*/ void Sort(RSDA tp[],int n) { int i=0,j=0,flag=0; RSDA newinfo; if(n<=0) { system("cls"); printf("\n=====>Not employee record!\n"); getchar(); return ; } system("cls"); Disp(tp,n); /*显示排序前的所有记录*/ for(i=0;i { flag=0; for(j=0;j if((tp[j].sfgz { flag=1; strcpy(newinfo.num,tp[j].num); /*利用结构变量newinfo实现数组元素的交换*/ strcpy(https://www.360docs.net/doc/fe1354425.html,,tp[j].name); newinfo.jbgz=tp[j].jbgz; newinfo.jj=tp[j].jj; newinfo.kk=tp[j].kk; newinfo.yfgz=tp[j].yfgz; newinfo.sk=tp[j].sk; newinfo.sfgz=tp[j].sfgz; strcpy(tp[j].num,tp[j 1].num); strcpy(tp[j].name,tp[j 1].name); tp[j].jbgz=tp[j 1].jbgz; tp[j].jj=tp[j 1].jj; tp[j].kk=tp[j 1].kk; tp[j].yfgz=tp[j 1].yfgz; tp[j].sk=tp[j 1].sk; tp[j].sfgz=tp[j 1].sfgz; strcpy(tp[j 1].num,newinfo.num); strcpy(tp[j 1].name,https://www.360docs.net/doc/fe1354425.html,); tp[j 1].jbgz=newinfo.jbgz; tp[j 1].jj=newinfo.jj; tp[j 1].kk=newinfo.kk; tp[j 1].yfgz=newinfo.yfgz; tp[j 1].sk=newinfo.sk; tp[j 1].sfgz=newinfo.sfgz; } if(flag==0) break;/*若标记flag=0,意味着没有交换了,排序已经完成*/ } Disp(tp,n); /*显示排序后的所有记录*/ saveflag=1; printf("\n =====>sort complete!\n"); } /*数据存盘,若用户没有专门进行此操作且对数据有修改,在退出系统时,会提示用户存盘*/ void Save(RSDA tp[],int n) { FILE* fp; int i=0; fp=fopen("c:\\rsda","wb");/*以只写方式打开二进制文件*/ if(fp==NULL) /*打开文件失败*/ { printf("\n=====>open file error!\n"); getchar(); return ; } for(i=0;i { if(fwrite(&tp[i],sizeof(RSDA),1,fp)==1)/*每次写一条记录或一个结构数组元素至文件*/ { continue; } else { break; } } if(i>0) { getchar(); printf("\n\n=====>save file complete,total saved's record number is:%d\n",i); getchar(); saveflag=0; } else {system("cls"); printf("the current link is empty,no employee record is saved!\n"); getchar(); } fclose(fp); /*关闭此文件*/ } void main() { RSDA gz[N]; /*定义RSDA结构体*/ FILE *fp; /*文件指针*/ int select; /*保存选择结果变量*/ char ch; /*保存(y,Y,n,N)*/ int count=0; /*保存文件中的记录条数(或元素个数)*/ fp=fopen("C:\\rsda","ab "); /*以追加方式打开二进制文件c:\zggz,可读可写,若此文件不存在,则会创建此文件*/ if(fp==NULL) { printf("\n=====>can not open file!\n"); exit(0); } while(!feof(fp)) { if(fread(&gz[count],sizeof(RSDA),1,fp)==1) /*一次从文件中读取一条职工工资记录*/ count ; } fclose(fp); /*关闭文件*/ printf("\n==>open file sucess,the total records number is : %d.\n",count); getchar(); menu(); while(1) { system("cls"); menu(); printf("\n Please Enter your choice(0~9):"); /*显示提示信息*/ scanf("%d",&select); if(select==0) { if(saveflag==1) /*若对数组的数据有修改且未进行存盘操作,则此标志为 1*/ { getchar(); printf("\n==>Whether save the modified record to file?(y/n):"); scanf("%c",&ch); if(ch=='y'||ch=='Y') Save(gz,count); } printf("\n===>thank you for useness!"); getchar(); break; } switch(select) { case 1:count=Add(gz,count);break; /*增加职工工资记录*/ case 2:count=Del(gz,count);break; /*删除职工工资记录*/ case 3:Qur(gz,count);break; /*查询职工工资记录*/ case 4:Modify(gz,count);break; /*修改职工工资记录*/ case 5:count=Insert(gz,count);break; /*插入职工工资记录*/ case 6:Tongji(gz,count);break; /*统计职工工资记录*/ case 7:Sort(gz,count);break; /*排序职工工资记录*/ case 8:Save(gz,count);break; /*保存职工工资记录*/ case 9:system("cls");Disp(gz,count);break; /*显示职工工资记录*/ default: Wrong();getchar();break; /*按键有误,数值必须为0~9*/ } } } JSP课程设计 第1章课程设计目的与要求 (1) 1.1 课程设计目的 (1) 1.2 课程设计的实验环境 (1) 1.3 课程设计的预备知识 (1) 1.4 课程设计要求 (1) 第2章课程设计内容 (2) 2.1 系统设计 (2) 2.2 数据库模型 (3) 2.3 模块与功能设计 (4) 2.4 模块主要代码 (7) 第3章课程设计总结 (16) 参考文献 (17) 第1章课程设计目的与要求 1.1 课程设计目的 本课程的课程设计实际是网络技术专业学生学习完《JSP语言程序设计》课程后,进行的一次全面的综合训练,其目的在于加深对JSP语言程序设计的基础理论和基本知识的理解,掌握运用JSP动态网页编程技术开发应用程序的基本方法。 1.2 课程设计的实验环境 硬件要求:能运行Windows 9.X操作系统的微机系统。 软件要求:JDK、tomcat6.0、SQL Server 2000。 1.3 课程设计的预备知识 熟悉JSP语言程序设计的基本知识及应用开发的编程思想。 1.4 课程设计要求 按课程设计指导书提供的课题,应根据下一节给出的基本需求独立完成各个方面的设计,标有“可选”的部分可根据设计时间的安排及工作量的大小适当选择。选用其他课题或不同的数据库系统,可以组成设计小组,分模块进行,共同协作完成一个课题的开发任务。要求书写详细的设计说明书,对复杂的代码段和程序段,应画出程序流程图。在界面设计中,设计好每个窗口的布局,有多个窗口时,按模块调用的方式画出窗口调用图,用手工画好报表和标签样式,严禁相互抄袭。 第2章课程设计内容 2.1系统功能分析 2.1.1 系统功能分析 人事管理是企业管理的重要内容,如何管理好一个企业内部员工的信息,成为企业管理中的一个大的问题。此时,一个规范、自动的人事管理系统的使用显得尤为重要。根据人事管理的实际要求,结合人事信息管理的实际流程,“人事管理系统”可以满足以下要求: 1.能够掌握企业员工的基本信息,其中包括编号、姓名、性别、籍贯、民族、出生年月、政治面貌、专业、学历、家庭住址、婚姻状况、电话、身份证号等信息,除此之外还可以掌握每个员工的工作信息、调动信息、培训信息、奖惩信息等相关信息。 2.管理人员能够对本系统做相应的管理工作,可以对员工信息进行变动管理,如进行数据添加、查找和修改等操作。而浏览者只可以查看其相应的内容,不可以进行其他操作。 2.1.2 系统功能模块设计 由于人事管理系统主要面向的是小型企业的日常工作,所以设置的模块尽可能的满足企业的日常办公即可,其中设计的功能模块如图2.1所示。 图2.1 功能模块图 人事管理管理系统 [要求] 某高校主要人员有:在职人员(行政人员、教师、一般员工)、退休人员和临时工。现在,需要存储这些人员的人事档案信息:编号、姓名、性别、年龄、职务、职称、政治面貌、最高学历、任职时间、来院时间、人员类别。其中,人员编号唯一,不能重复。 (1)添加删除功能:能根据学院人事的变动情况,添加删除记录; (2)查询功能:能根据编号和姓名进行查询; (3)编辑功能(高级):根据查询对相应的记录进行修改,并存储; (4)统计功能:能根据多种参数进行人员的统计(在职人数、党员人数、女工人数、高学历高职称人数(硕士学位以上或者副教授以上)),统计要求同时显示被统计者的信息; (5)排序功能:按照年龄、来院时间进行排序; (6)保存功能:能对输入的数据进行相应的存储; 一、需求分析: 根据题目要求,职工信息是存放在文件中的,所以应该提供相应的文件的输入输出的功能,在程序中应该有添加删除,查询,编辑,统计,排序,保存等程序实现相应的操作,另外菜单式的选择方式选择程序的功能也是必须需的。另外程序中要求存储的模块,采用的方式均为将原文件中的所有数据读入内存,在内存中处理之后以覆盖的方式写入文件中重新储存,这样的方法容易理解、容易编写,但当文件中的数据量很大时,这种方法也存在一定的难度,在本程序中将N定为100,也即最多可储存的职工人数为100; 二、总体设计: 根据以上需求分析,将程序分成以下几个模块: 1、新建档案信息; 2、删除信息; 3、追加信息; 4、搜索查找信息(按姓名或者编号搜索); 5、浏览全部信息; 6、修改信息; 7、信息排序; 8、信息统计; 三、详细设计; 1、主函数: 〈1〉需求分析: 为使系统执行完每部分功能后能够方便的回到系统主界面,main()函数设计的很简单,只包含一个menu()函数,其余的全部功能都通过menu()函数调用来实现,并通过menu()函数的递归调用实现返回主界面的功能。 main()函数定义如下: main() #include 人事管理管理系统 [要求] 某高校主要人员有:在职人员(行政人员、教师、一般员工)、退休人员和临时工。现在,需要存储这些人员的人事档案信息:编号、姓名、性别、年龄、职务、职称、政治面貌、最高学历、任职时间、来院时间、人员类别。其中,人员编号唯一,不能重复。 (1)添加删除功能:能根据学院人事的变动情况,添加删除记录; (2)查询功能:能根据编号和姓名进行查询; (3)编辑功能(高级):根据查询对相应的记录进行修改,并存储; (4)统计功能:能根据多种参数进行人员的统计(在职人数、党员人数、女工人数、高学历高职称人数(硕士学位以上或者副教授以上)),统计要求同时显示被统计者的信息; (5)排序功能:按照年龄、来院时间进行排序; (6)保存功能:能对输入的数据进行相应的存储; 一、需求分析: 根据题目要求,职工信息是存放在文件中的,所以应该提供相应的文件的输入输出的功能,在程序中应该有添加删除,查询,编辑,统计,排序,保存等程序实现相应的操作,另外菜单式的选择方式选择程序的功能也是必须需的。另外程序中要求存储的模块,采用的方式均为将原文件中的所有数据读入内存,在内存中处理之后以覆盖的方式写入文件中重新储存,这样的方法容易理解、容易编写,但当文件中的数据量很大时,这种方法也存在一定的难度,在本程序中将N定为100,也即最多可储存的职工人数为100; 二、总体设计: 根据以上需求分析,将程序分成以下几个模块: 1、新建档案信息; 2、删除信息; 3、追加信息; 4、搜索查找信息(按姓名或者编号搜索); 5、浏览全部信息; 6、修改信息; 7、信息排序; 8信息统计; 三、详细设计; 1、主函数: 〈1〉需求分析: 为使系统执行完每部分功能后能够方便的回到系统主界面,main()函数设计的 很简单,只包含一个menu()函数,其余的全部功能都通过menu()函数调用来实现,并通过menu()函数的递归调用实现返回主界面的功能。 急需一个公司的人事管理系统源代码(vc++编程) 悬赏分:100 |解决时间:2008-1-8 09:58 |提问者:klak1 某小型公司,主要有两类人员:经理、员工。现在,需要存储这些人员的姓名、编号、身份证号码、业绩、级别(经理包括总经理、经理、副经理级别,员工包括高级员工、普通员工和临时工级别)、家庭住址、开始工作日期、所在部门、薪水等信息,并可以对这些信息进行检索。 要求: 1)人员编号在生成人员信息时同时生成,每输入一个人员信息编号顺序加1; 2)根据业绩的大小具有自动升降级别的功能; 3)输入员工身份证号码号码后自动获取员工生日; 4)输入员工开始工作日期后自动获取员工工龄; 5)能按姓名或者编号显示、查找、增加、删除和保存各类人员的信息 最佳答案 #include #include 建立数据库: create database 数据库 建表: create table 部门信息表 (部门编号 char(2) primary key , 部门名称 nchar(14) , 部门职能 nchar(14), 部门人数 char (4) ) go create table 管理员信息表 (用户名 nchar(4) primary key , 密码 char(10) , ) go create table 用户信息表 (用户名char(10) primary key , 用户类型char(10), 密码 char(10) ) go create table 员工工作岗位表 (姓名 nchar(4) primary key , 员工编号 char(4) 工作岗位 nchar(3) , 部门名称 nchar(10), 参加工作时间 char (4) ) go create table 员工学历信息表 (姓名 nchar(4) primary key , 员工编号 char(4) 学历 nchar(2) , 毕业时间 char(10), 毕业院校 nchar (10), 外语情况 nchar(10), 专业 nchar(10) ) go create table 员工婚姻情况表 (姓名 nchar(4) primary key , 员工编号 char(4) 婚姻情况 nchar(2) , 配偶姓名 nchar(4), 配偶年龄 char (3), 工作单位 nchar(10), ) go create table 员工基本信息表 (员工编号 char(4) primary key , 姓名 nchar(4) , package rsgl; import java.awt.* import java.awt.event.*; import java.sql.*; import java.util.*; import javax.swing.*; import javax.swing.border.*; public class A extends JFrame { protected JPanel p = new JPanel(); protected JPanel p1 = new JPanel(); protected JPanel p2 = new JPanel(); protected JPanel p3= new JPanel(); JMenuBar M =new JMenuBar(); JMenu m1 = new JMenu("基本信息模块"); JMenu m2 = new JMenu("考勤考评信息模块"); JMenu m3 = new JMenu("系统维护信息模块"); JMenuItem mm1 = new JMenuItem("员工基本信息"); JMenuItem mm2 = new JMenuItem("员工家庭成员基本信息"); JMenuItem mm3 = new JMenuItem("员工培训信息"); JMenuItem mm4 = new JMenuItem("员工考勤信息"); JMenuItem mm5 = new JMenuItem("员工考评信息"); JMenuItem mm6 = new JMenuItem("普通管理员"); JMenuItem mm7 = new JMenuItem("高级管理员"); JMenuItem mm8 = new JMenuItem("退出"); protected JLabel l1 = new JLabel("员工编号:"); protected JLabel l2 = new JLabel("姓名:"); protected JLabel l3 = new JLabel("性别:"); protected JLabel l4 = new JLabel("年龄:"); protected JLabel l5 = new JLabel("部门:"); protected JTextField t1 = new JTextField(10); protected JTextField t2 = new JTextField(10); protected JTextField t3 = new JTextField(10); protected JTextField t4 = new JTextField(10); protected JTextField t5 = new JTextField(10); private JButton b1 = new JButton("查询"); private JButton b2 = new JButton("插入"); private JButton b3 = new JButton("修改"); private JButton b4 = new JButton("删除"); private JButton b5 = new JButton("清除"); private JButton b6 = new JButton("下一条"); private Connection c; // @jve:decl-index=0: private Statement s; // @jve:decl-index=0: private ResultSet r; // @jve:decl-index=0: public A() { super("人事管理系统"); getContentPane().add(p); setJMenuBar(M);M.add(m1);M.add(m2);M.add(m3);m1.add(mm1); m1.add(mm2);m1.add(mm3);m1.addSeparator();m1.add(mm8);m2.add(mm4); m2.add(mm5);m3.add(mm6);m3.add(mm7); p.add(p1,BorderLayout.NORTH); p.add(p2,BorderLayout.CENTER); p.add(p3,BorderLayout.SOUTH); p1.setLayout(new GridLayout(5,2,1,3)); p1.add(l1);p1.add(t1); p1.add(l2);p1.add(t2); p1.add(l3);p1.add(t3); p1.add(l4);p1.add(t4); p1.add(l5);p1.add(t5); p2.add(b1);p1.add(b2); p2.add(b3);p1.add(b4); p2.add(b5);p3.add(b6); t1.setText("");t2.setText("");t3.setText("");t4.setText("");t5.setText(""); setSize(350,300);setVisible(true); try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDrive"); c=DriverManager.getConnection("jdbc:odbc:sd","sa",null); s=c.createStatement(); r=s.executeQuery("select * from 员工基本信息表"); } catch (SQLException e){ JOptionPane.showMessageDialog(null ,e.getMessage(),"操作错误!",JOptionPane.ERROR_MESSAGE); System.exit(1); } catch(ClassNotFoundException e) { JOptionPane.showMessageDialog(null ,e.getMessage(),"驱动程序找不到!",JOptionPane.ERROR_MESSAGE); System.exit(1); } addWindowListener( new WindowAdapter(){ public void windowClosing(WindowEvent event) { try { s.close();c.close(); } catch(SQLException e) { JOptionPane.showMessageDialog(null,e.getMessage(),"不能关闭!",JOptionPane.ERROR_MESSAGE); System.exit(1); } } }); b1.addActionListener( new ActionListener(){ public void actionPerformed(ActionEvent event) { try{ r=s.executeQuery("select * C语言课程设计 欧阳家百(2021.03.07) ——人事管理系统题目要求: 人事管理管理系统 [要求] 某高校主要人员有:在职人员(行政人员、教师、一般员工)、退休人员和临时工。现在,需要存储这些人员的人事档案信息:编号、姓名、性别、年龄、职务、职称、政治面貌、最高学历、任职时间、来院时间、人员类别。其中,人员编号唯一,不能重复。 (1)添加删除功能:能根据学院人事的变动情况,添加删除记录; (2)查询功能:能根据编号和姓名进行查询; (3)编辑功能(高级):根据查询对相应的记录进行修改,并存储; (4)统计功能:能根据多种参数进行人员的统计(在职人数、党员人数、女工人数、高学历高职称人数(硕士学位以上或者副教授以上)),统计要求同时显示被统计者的信息;(5)排序功能:按照年龄、来院时间进行排序; (6)保存功能:能对输入的数据进行相应的存储; 一、需求分析: 根据题目要求,职工信息是存放在文件中的,所以应该提供相应的文件的输入输出的功能,在程序中应该有添加删除,查询,编辑,统计,排序,保存等程序实现相应的操作,另外菜单式的选择方式选择程序的功能也是必须需的。另外程序中要求存储的模块,采用的方式均为将原文件中的所有数据读入内存,在内存中处理之后以覆盖的方式写入文件存贮,这样的方法在一定程度上提高了对数据处理的灵活性,较容易理解,但存在处理中遇到以外情况而丢失数据的风险,另外当文件中的数据量很大时,这种方法也存在一定的难度,在本程序中将N定为100,基本上能满足要求; 二、总体设计: 根据以上需求分析,将程序分成以下几个模块: 1、新建数据文件(build new data); 2、添加记录(add data); 附录:源程序代码 1).default.aspx <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="Default2" %> 基于jsp设计的人事管理系统(含源文件)
人事管理系统——C语言
人事管理系统源代码
C语言-人事管理系统
人事管理系统(课程设计)源码
高校人事管理系统C++代码
人事管理系统数据库设计sql代码
人事管理系统代码
C语言课设之人事管理系统之欧阳家百创编
asp 课程设计源代码-人事管理系统