职工信息管理系统
- 格式:rtf
- 大小:116.26 KB
- 文档页数:11
职工信息管理系统目录一,需求文档…………………………………………………………………………………二,设计文档……………………………………………………………………………….. 三,系统说明书及用户操作手册………………………………………………。
.。
四,预计人员分配资源调配和进度表………………………………………。
五,分工表………………………………………………………………………………….一,需求文档:1,编写目的:职工管理系统是一个工作单位不可缺少的管理工具,它管理的数据对于公司的决策者和管理者来说都至关重要,所以职工管理系统应该能够为用户提供充足的信息和快捷的查询手段。
通过对用户需求进行调查分析,写出需求分析文档作为项目设计的基本准则要求,以及系统分析员进行系统分析和测试人员进行测试时的手册,方便设计人员进一步设计规划。
2,需求概述:设计一个职工信息管理系统,是其具有以下功能:2。
1建立职工信息数据,录入职工信息(包括职工编号、姓名、性别、工资、出生年月、参加工作时间和年龄)并保存;2.2根据职工信息表,建立只含有姓名和年龄的职工信息简表;2.3浏览所有职工信息;2.4实现职工信息的增、删、查、改;2.5实现职工信息按姓名字母顺序或职工编号进行排序。
3,需求说明:职工信息管理系统所实现的功能:3。
1添加新职工信息:实现对新加入职工信息的录入,所有的信息当中主码即职工信息编号,必须填写。
3。
2删除职工信息:当公司有职工因故离职,需要删除职员信息时,释放掉它所占据的数据库空间,就可以在列表中选中所要删除的记录,然后点击删除。
如果确认删除则在弹出的消息框中点击确定即可删除所选的记录。
3。
3修改职工信息:由于某种原因可能导致在记录员工信息时出现错误,需要对员工信息进行修改。
在员工信息系统主窗口中选择所要修改的成员信息进行修改,点击修改后将会弹出消息框,如果确认修改则点击确定,则修改数据成功。
3。
4查询职工信息:支持多条件查询,根据职工的姓名、职工编号等信息进行查询,并显示所有符合查询条件的职工信息。
员工信息管理系统一、前言随着企业的不断发展和壮大,对于员工信息的管理也变得越来越重要。
员工信息涉及到工资、福利、培训、考核、晋升等多个方面,如果管理不当会带来不良影响。
为了更好地管理员工信息,提高企业管理效率,我们设计了一套员工信息管理系统。
二、系统设计1.系统架构系统采用C/S模式(Client/Server)架构,主要分为客户端和服务器两部分。
客户端界面简洁明了,便于操作。
服务器采用高配置的主机,数据存储和处理速度快,支持多种操作系统和数据库。
客户端和服务器之间采用Socket通信方式进行数据传输。
2.技术选型服务器操作系统:Linux/Unix/Windows Server等数据库:MySQL/Oracle/SQL Server等开发语言:Java/.Net等3.系统功能(1)员工信息录入系统管理员可以添加新的员工信息,包括员工姓名、性别、职位、部门、入职时间、联系方式等基本信息。
同时,可以为员工设置登录账号和密码。
(2)员工信息查询员工可以通过登录系统查询个人信息,包括个人基本信息、薪资福利等。
(3)工资信息管理管理员可以通过系统管理员工工资信息,包括工资查询、工资调整、薪资档案等功能。
(4)考勤信息管理管理员可以通过系统管理员工考勤信息,包括考勤统计、加班记录、请假记录等功能。
(5)绩效考核管理管理员可以通过系统管理员工绩效考核信息,包括绩效评定、奖惩记录等功能。
(6)培训管理管理员可以通过系统管理员工培训信息,包括培训计划、培训记录、培训成果等功能。
(7)晋升管理管理员可以通过系统管理员工的晋升信息,包括晋升计划、晋升记录等功能。
4.系统特点(1)系统安全:系统采取加密技术,保证数据的安全性和保密性。
(2)系统稳定:使用高性能服务器,保证系统的稳定性和可靠性。
(3)系统易用:客户端界面操作简单易用,员工信息管理方便快捷。
(4)数据备份:系统支持自动备份,防止数据丢失。
(5)系统集成:系统可与企业其他管理系统集成,实现信息共享和传递。
课程设计教学院课程名称题目专业班级姓名同组人员指导教师2014 年 6 月21 日目录第一章概述 (1)1.1选题的背景 (1)1.2系统功能描述 (1)1.3数据库需求分析 (1)1.3.1 总体需求 (2)1.3.2功能需求 (2)1.3.3性能需求分析 (2)1.4数据库概念的结构设计 (2)第二章数据库结构设计 (4)2.1 概念结构设计 (4)2.2数据库功能设计 (7)2.2.1数据介绍 (7)2.2.2数据库介绍 (7)2.2.3 功能描述 (7)2.3逻辑结构设计 (7)2.4物理结构设计 (7)第三章数据库功能实现 (10)3.1创建数据库: (10)3.2创建部门表 (11)第四章课程设计总结 (14)参考文献: (15)第一章概述1.1选题的背景随着公司业务的扩展,人员的增多,传统的手工作业已经不再适合公司发展的需要所以引进计算机技术对企业内部员工进行方便的管理,这样有诸多好处,各层管理人员可以对企业众多的员工信息进行动态的管理,例如基本资料的修改,添加,删除,查询等。
有利于减少错误,减轻人事部门的任务,提高效率,节约人力资源,降低企业成本。
1.2系统功能描述随着经济的发展,企业正向着大型化、规模化发展,而对于大中型企业,员工、职称等跟工资管理有关的信息随之急剧增加。
在这种情况下单靠人工来处理员工的工资不但显得力不从心,而且极容易出错。
如何设计一个小型企业工资的数据库管理系统,由计算机代替人工执行一系列诸如增加新员工,删除旧员工,工资查询,统计等操作。
这样就使办公人员可以轻松快捷地完成工资管理的任务。
对于企、事业单位的工资发放来说,不需要太大型的数据库系统。
只需要一个操作方便,功能实用,能同时满足财务部门、单位其他相关部门及代发单位三方对数据的管理及需求的系统。
企业的目标就是在于利用数据库编程设计一个操作方便、简单实用的工资管理系统。
实现工资的集中管理。
可供管理人员对本单位的人员以及工资进行增加、删除、修改、查询,对人事的管理及工资发放中的应发工资合计等项目由系统自动进行计算;同时系统还可对人事及工资管理情况进行多角度查询。
职工信息管理系统设计python1. 系统功能需求分析1.1 系统管理功能针对管理员用户,需要具备用户管理、角色管理、权限管理等功能,以便管理员对系统进行管理和维护。
1.2 职工信息管理功能能够实现对职工基本信息的增删改查操作,包括但不限于职工尊称、性莂、芳龄、部门、职位等基本信息的管理。
1.3 统计报表功能能够生成职工信息统计报表,提供数据分析和可视化展示功能,帮助管理者进行决策和分析。
2. 系统技术选型2.1 开发语言选择Python作为开发语言,Python具有简洁、高效的特点,适合快速开发。
2.2 数据库使用MySQL作为系统数据库,MySQL是一款成熟可靠的关系型数据库,能够满足系统数据存储和查询需求。
2.3 框架选择Django作为系统开发框架,Django是一款开发快速、功能强大的Web框架,提供了丰富的开发工具和插件,适合构建企业级应用。
3. 系统架构设计3.1 前端架构采用HTML、CSS、JavaScript等前端技术,实现用户界面的设计和交互功能。
3.2 后端架构使用Django作为系统后端框架,通过Python语言实现系统的业务逻辑和数据处理功能。
3.3 数据库架构使用MySQL作为系统数据库,设计合理的数据表结构,确保系统数据存储的准确性和完整性。
4. 系统开发与测试4.1 开发环境搭建搭建Python、Django、MySQL等开发环境,并进行配置和调试,确保开发环境的稳定性。
4.2 系统开发根据功能需求和技术选型,进行系统开发工作,包括前端界面设计、后端业务逻辑实现、数据存储和处理等工作。
4.3 系统测试进行系统功能测试、性能测试、安全测试等,确保系统的稳定性和安全性。
5. 系统部署与维护5.1 系统部署将系统部署到生产环境中,配置服务器、数据库等,确保系统能够正常运行。
5.2 系统监控与维护定期对系统进行监控和维护,包括但不限于系统性能优化、安全漏洞修复、数据备份等工作。
1.课程论文题目职工信息管理系统程序设计一、题目要求职工信息包括职工号、姓名、性别、年龄、学历、工资、住址、电话等(职工号不重复)。
试设计一职工信息管理系统,使之能提供以下功能:(1)系统以菜单的方式工作。
(2)职工信息录入功能(职工信息用文件保存)。
(3)职工浏览功能。
(4)职工信息查询功能,查询方式可按学历查询或者工号查询。
(5)职工信息的删除、修改功能(可选项)。
2.程序设计思路1、设计思路(1)根据题目要求,应该把职工工资信息用结构体形式输入,在定义一个全局变量和文件指针进行整个程序的运行,然后把职工工资信息送到文件中,所以应该提供一个结构体和文件的输入输出等操作;(2)在程序中需实现职工工资浏览、查询、统计等功能的操作,所以需要建立相应的功能模块来实现;(3)另外还需要提供键盘式选择菜单实现功能,在运行时达到所要的目的。
3.功能模块图5.算法设计1.主函数提供输入、处理和输出部分的函数调用,各功能模块采用菜单方式选择。
2浏览模块【分析】该模块的功能是浏览职工的全部信息3排序模块4查询模块【分析】该模块的功能是根据输入的职工按照工号和学历查找对应的记录,找到以后,可进行继续查找或修改信息的操作。
流程图如下:5修改模块【分析】该模块的功能是显示所有职工的信息,考虑到记录较多,建议采用分屏显示。
显示完所有记录后,输入要修改的职工的工号,根据工号查到职工的记录,并提示用户修改该记录的哪部分信息,根据用户做的选择修改相应信息。
流程图如下:6.程序代码#include<stdio.h>#define N 50struct worker{char id[50];char name[20];char sex[10];char age[10];char edu[20];char salary[10];char address[20];char tel[20];}worker[N];void save(int n) //保存函数,保存n个记录{ FILE *fp;int i;if((fp=fopen("worker.txt","wb"))==NULL) //以只写方式为输出打开一个二进制文件{ printf("\nCannot open file\n");}for(i=0;i<n;i++)if(fwrite(&worker[i],sizeof(struct worker),1,fp)!=1)printf("file write error\n");fclose(fp);}int load() //加载函数{ FILE *fp;int i;if((fp=fopen("worker.txt","rb"))==NULL){printf("\nCannot open file\n");return NULL;}for(i=0;!feof(fp);i++)fread(&worker[i],sizeof(struct worker),1,fp);fclose(fp);return(i-1);}void no_input(int i,int n) //工号输入函数,i表示第i个职工的信息,n 表示比较到第n个职工{ int j,k,w1;do{w1=0;printf("工号:");scanf("%s",worker[i].id);for(j=0;worker[i].id[j]!='\0';j++)if(worker[i].id[j]<'0'||worker[i].id[j]>'9') //判断工号是否为数字{puts("请重新输入!\n");w1=1;break;}if(w1!=1)for(k=0;k<n;k++) //比较到第N个职工if(k!=i&&strcmp(worker[k].id,worker[i].id)==0) //判断职工号是否有雷同{puts("请重新输入!\n");w1=1;break;}}while(w1==1);}void input(int i) //输入一个记录的函数{ no_input(i,i);printf("姓名:");scanf("%s",worker[i].name);printf("性别:");scanf(" %s",&worker[i].sex);printf("年龄:");scanf("%s",&worker[i].age);printf("工资:");scanf("%s",worker[i].salary);printf("学历:");scanf("%s",&worker[i].edu);printf("住址:");scanf("%s",worker[i].address);printf("电话:");scanf("%s",worker[i].tel);}void printf_one(int i) //显示一个记录的函数{printf("%10s %10s %5s %5s %8s %6s %10s %10s\n",worker[i].id,worker[i].name,worker[i].sex,worker[i].age,worker[i].salary,worker[i].edu,worker[i].address,worker[i].tel); }void printf_back() //一个任务结束后选择是好似浏览还是返回{ int k,w;printf("\n\n\tSuccessful^-^.\n\n");printf("接下来做什么?\n\n\t1).浏览全部\t2).返回: [ ]\b\b");scanf("%d",&w);if(w==1)browse();else menu();}modify_data(int i,int n) //修改函数{ int c,w1;do{puts("\nmodify by=>\n\n 1).工号 2).姓名 3).性别 4).年龄 5).工资6).学历 7).地址 8).电话 9).取消");printf("请选择?:[ ]\b\b");scanf("%d",&c);if(c>9||c<1){puts("\nChoice error!please again!");getchar();}}while(c>9||c<1);do{switch(c){case 1:no_input(i,n);break;case 2:printf("name:");scanf("%s",worker[i].name);break;case 3:printf("sex:");scanf("%s",worker[i].sex);break;case 4:printf("age:");scanf("%s",worker[i].age);break;case 5:printf("salary:");scanf("%s",worker[i].salary);break;case 6:printf("edu:");scanf("%s",worker[i].edu);break;case 7:printf("address:");scanf("%s",worker[i].address);break;case 8:printf("tel:");scanf("%s",worker[i].tel);break;case 9:menu();break;}puts("\nNow:\n");printf_face();printf_one(i);printf("\n确定?\n\n\t1).是2).否,重新修改3).不保存退出[ ]\b\b");scanf("%d",&w1);if(w1==1)save(n);}while(w1==2);return(w1);}printf_face() //显示数据结构项目{ printf("\n\t工号姓名性别年龄工资学历地址电话号码\n"); }void enter() //输入模块{ int i,n;printf("输入多少个职工信息(0-%d):",N-1);scanf("%d",&n);printf("\n 请输入职工信息\n\n");for(i=0;i<n;i++)input(i);if(i!=0)save(n);printf_back();}browse() //浏览模块{ int i,j,n;n=load();printf_face();for(i=0;i<n;i++){if((i!=0)&&(i%10==0)){printf("\n\n按任意键显示下一页...");getch();puts("\n\n");}printf_one(i);}printf("\t这里有 %d 条记录.\n",n);printf("\n按任意键返回...");getch();menu();}modify() //修改模块{struct worker s;FILE *fp;int i,n,k,w0=1,w1,w2=0;n=load();do{k=-1;printf_face();for(i=0;i<n;i++){if((i!=0)&&(i%10==0)) //目的是分屏显示{printf("\n\n记住要修改的工号.按任意键显示下一页");getch();puts("\n\n");}printf_one(i); //调用显示一个记录的函数}do{printf("\n\n输入要修改的职工工号! 工号:");scanf("%s",s.id); //输入要修改的IDfor(i=0;i<n;i++) //查找要修改的数据if(strcmp(s.id,worker[i].id)==0){k=i; //找到要修改的记录s=worker[i]; //把worker[i]备份,以便恢复}if(k==-1)printf("\n\n未找到请重输");}while(k==-1); //当k=-1表示没有找到printf_face(); //调用显示数据结构项目的函数printf_one(k); //调用显示一个记录的函数w1=modify_data(k,n); //修改记录并返回保存控制值w1,w1=1表示用户已确认修改if(w1==1){printf("\Successful^_^.\n\n修改另一个?\n\n\t1).是 2).否,保存退出\t[ ]\b\b");scanf("%d",&w0);w2=1; //用来控制保存,使w2=1是标记已有过修改}else{w0=0;if(w2==1)worker[k]=s;}if(w0!=1&&w2==1)save(n);}while(w0==1);menu();}search() //查询模块{ int c,w1;do{puts("\nsearch by=>\n\n1).工号 2}.学历 3).取消并返回"); printf("Which you needed?:[ ]\b\b");scanf("%d",&c);if(c>3||c<1){ puts("\nchoice error!please again!");getchar();}}while(c>3||c<1);{switch(c){case 1:search1();break;case 2:search2();break;case 3:menu();break;}}}search1() //按工号查询模块{int i,n,k,w1=1,w2,w3,w4;struct worker s;n=load();do{do{k=-1;printf("\n\n输入要查询的工号! id:");scanf("%s",s.id);printf_face();for(i=0;i<n;i++)if(strcmp(s.id,worker[i].id)==0){k=i;printf_one(k);break;}if(k==-1){printf("\n\nNo exit!please");printf("\n\n继续查找?\n\t1).是 2).否,返回 [ ]\b\b");scanf("%d",&w1);if(w1==2) menu();}}while(k==-1&&w1==1);w4=0;w3=0;if(k!=-1){printf("\n\n接下来干什么?\n\t1).查找另一个 2).修改 3).返回菜单[ ]\b\b");scanf("%d",&w2);switch(w2){case 1:search1();break;case 2:w3=modify_data(k,n);break;case 3:{menu();break;}}}}while(w2==1);menu();}search2() //按学历查询模块{int i,n,k,w1=1,w2,w3,w4;struct worker s;n=load();do{do{k=-1;printf("\n\n请输入你要查询的学历:\n");scanf("%s",);printf_face();for(i=0;i<n;i++)if(strcmp(,worker[i].edu)==0){k=i;printf_one(k);}if(k==-1){printf("\n\nNo exit!please");printf("\n\n继续查找?\n\t1).是 2).否,返回 [ ]\b\b");scanf("%d",&w1);if(w1==2) menu();}}while(k==-1&&w1==1);w4=0;w3=0;if(k!=-1){printf("\n\n接下来干什么?\n\t1).查找另一个 2).修改 3).返回菜单[ ]\b\b");scanf("%d",&w2);switch(w2){case 1:search2();break;case 2:w3=modify_data(k,n);break;case 3:{menu();break;}}}}while(w2==1);menu();}menu(){int n,w1;do{puts("\t\t*******************菜单*******************\n\n");puts("\t\t\t\t1.录入职工信息");puts("\t\t\t\t2.浏览职工信息");puts("\t\t\t\t3.查询职工信息");puts("\t\t\t\t4.修改职工信息");puts("\t\t\t\t5.退出");puts("\t\t****************************************\n\n");printf("请选择(1~5): [ ]\b\b");scanf("%d",&n);if(n<1||n>5) //对选择的数字作判断{w1=1;getchar();}else w1=0;} while(w1==1);switch(n){case 1:enter();break; //录入 case 2:browse();break; //浏览 case 3:search();break; //查询 case 4:modify();break; //修改 case 5:exit(0); //退出}}main(){menu();}7.程序运行结果下面是各个模块的的界面截图(1)、主菜单(2)、输入模块(3)、浏览模块(3)、查找模块(4)、修改模块8.编程中遇到的困难及解决方法温故而知新,可以为师矣。
员工信息管理系统设计与实现(数据库)一、引言1. 背景随着企业规模的扩大和发展,对员工信息的管理变得越来越重要。
传统的手工管理方式已经无法满足现代企业的信息化需求,因此设计一个高效的员工信息管理系统对于企业的管理至关重要。
2. 目的本文将介绍一种基于数据库技术的员工信息管理系统的设计与实现方法,旨在提高企业对员工信息的管理效率和准确性,减少人力成本,同时提高信息安全性。
二、系统设计1. 数据库设计员工信息管理系统采用关系数据库设计,包括以下几张表:员工信息表、部门信息表、职位信息表。
员工信息表中包含员工ID、姓名、性别、年龄、入职时间等字段;部门信息表包含部门ID、部门名称等字段;职位信息表包含职位ID、职位名称等字段。
通过这三张表的设计,实现员工信息与部门、职位的关联。
2. 功能设计员工信息管理系统的主要功能包括员工信息的录入、修改、查询和删除,部门信息的管理和职位信息的管理。
管理员可以通过系统实现对员工信息的全面管理,包括个人资料的维护、考勤记录的查看等功能。
三、系统实现1. 前端设计员工信息管理系统的前端采用Web页面设计,通过HTML、CSS、JavaScript等技术实现用户友好的交互界面。
页面包含员工信息录入表单、查询界面、部门管理界面和职位管理界面等。
2. 后端设计系统的后端采用Java语言开发,使用Spring框架实现业务逻辑和数据访问层。
通过MyBatis等持久化框架与数据库进行交互,实现数据的增删改查操作。
3. 数据库实现数据库采用MySQL进行存储,通过建立员工信息表、部门信息表、职位信息表等实现对员工信息的持久化存储。
同时建立外键关联等约束确保数据的一致性和完整性。
四、系统优化1. 性能优化通过对数据库的索引优化、SQL语句的优化等手段提高系统的响应速度和性能,确保系统可以快速处理大量的员工信息。
2. 安全优化采用权限控制、加密传输等方式加强系统的安全性,防止未授权用户的访问和数据泄露,确保员工信息的保密性。
员工信息管理系统简介员工信息管理系统是一种用于企业管理员工信息的软件系统。
该系统能够帮助企业轻松管理员工的个人信息、薪资、工作记录等数据。
通过使用员工信息管理系统,企业可以更加高效地管理员工信息,从而提高企业的管理效率。
功能员工信息管理系统主要包含以下功能:1.员工信息录入:系统管理员可以通过系统录入员工的个人信息,包括姓名、身份证号码、联系方式等。
2.员工信息查询:企业管理人员可以通过员工信息管理系统查询员工的个人信息、薪资、工作记录等数据。
3.员工薪资管理:企业管理人员可以通过员工信息管理系统管理员工的薪资信息,包括基本工资、奖金、补贴等。
4.员工考勤管理:员工信息管理系统能够轻松管理员工的考勤记录,包括迟到、早退、请假等。
5.统计分析:员工信息管理系统能够根据企业需求进行数据统计分析,并生成相应的报表。
优点员工信息管理系统有以下几点优点:1.提高管理效率:员工信息管理系统能够提高企业管理员工信息的效率,从而提高企业管理效率。
2.数据准确性高:员工信息管理系统是自动化的管理系统,从而能够保证数据准确性。
3.便于数据分析:员工信息管理系统能够轻松进行数据统计和分析,从而为企业决策提供科学依据。
4.方便员工管理:员工信息管理系统能够方便地管理员工的信息和考勤记录,从而为企业打造一个良好的员工管理平台。
使用注意事项使用员工信息管理系统需要注意以下几点:1.系统管理员需要妥善保存系统数据,避免数据丢失或泄露。
2.企业管理人员需要密切关注员工信息管理系统的使用情况,并及时对系统进行维护和升级。
3.每个员工需要保护自己的个人信息,避免泄露。
员工信息管理系统能够帮助企业更加高效地管理员工信息,提高企业管理效率。
虽然使用员工信息管理系统需要注意一些问题,但是这些问题可以通过企业和员工的共同努力来解决。
建议企业尽早使用员工信息管理系统,提高管理效率,促进企业发展。
2职工信息管理系统设计职工信息管理系统是一种用于管理公司或组织中职工人员信息的软件系统。
它可以帮助公司高效地管理职工档案、薪资信息、出勤记录等信息,提高信息管理的效率和准确性。
在本文中,我将讨论一个完整的职工信息管理系统的设计,包括系统功能、系统模块、数据结构、界面设计等。
一、系统功能2.薪资管理:可以记录职工的薪资信息,包括基本工资、津贴、奖金、扣款等,可以自动生成工资单。
3.出勤管理:可以记录职工的出勤情况,包括迟到、早退、请假、加班等,可以生成考勤报表。
4.绩效评估:可以记录职工的绩效评估情况,包括工作表现、奖惩情况等,可以为职工评定绩效等级。
5.培训管理:可以记录职工参加的培训情况,包括培训课程、培训成绩等。
6.数据统计分析:可以对各项数据进行统计和分析,生成各种报表和图表,为管理者提供决策支持。
7.权限管理:可以设置不同的权限级别,确保不同职工只能访问自己的信息。
8.系统日志:可以记录系统的操作日志,包括登录记录、操作记录等,确保系统安全可靠。
二、系统模块1.职工档案模块:包括添加职工信息、修改职工信息、删除职工信息、查看职工信息等功能。
2.薪资管理模块:包括录入薪资信息、生成工资单、查看工资历史记录等功能。
3.出勤管理模块:包括录入出勤情况、生成考勤报表、查看出勤统计等功能。
4.绩效评估模块:包括录入绩效评估情况、生成绩效报表、查看绩效历史记录等功能。
5.培训管理模块:包括录入培训信息、生成培训报表、查看培训历史记录等功能。
6.数据统计分析模块:包括生成各种报表和图表、定制统计分析功能、查看统计分析结果等功能。
7.权限管理模块:包括设置权限级别、添加用户、修改用户权限等功能。
8.系统日志模块:包括记录系统操作日志、查看操作记录、导出日志文件等功能。
三、数据结构2.薪资信息表:包括薪资编号、职工编号、薪资类型、薪资金额、发放日期等字段。
3.出勤信息表:包括出勤编号、职工编号、出勤日期、迟到次数、请假时长等字段。
职工信息管理系统设计随着企业规模的扩大和竞争的加剧,职工信息的管理对企业来说越来越重要。
职工信息管理系统可以帮助企业高效地完成职工记录、管理、审核等工作。
本文将介绍一个职工信息管理系统的设计及其功能实现。
1.系统设计1.1 系统架构该系统采用B/S架构,即浏览器/服务器架构。
职工信息管理系统客户端用户通过浏览器与服务器进行交互,服务器进行数据处理和存储,返回结果给客户端用户。
浏览器是前端,服务器是后端。
如上图所示,该系统的架构由客户端、服务器、数据库三层组成。
客户端允许用户进行各种操作,服务器接收客户端请求并作出处理或向数据库发出请求。
1.3 数据库设计(1)用户表用户表记录系统管理员信息,包括管理员账号、密码等。
(2)员工信息表员工信息表记录职工信息,包括职工编号、姓名、性别、出生日期、联系电话、邮箱等。
1.4 功能设计(1)用户登录和权限管理管理员通过用户名和密码登录系统进行操作。
该系统为管理员设置多个权限,如添加员工信息、修改员工信息、删除员工信息、查看员工信息、发放工资等。
管理员可以添加、修改、删除员工信息,并能够查询员工信息,实现员工信息的全面管理。
其中包括员工基本信息、教育经历、工作经历等。
(3)工资管理管理员可以录入职工的基本工资、奖金、社保、公积金等信息,并自动计算实际工资,并可进行工资的查询、修改、导出等操作。
(4)考勤管理管理员可以对职工的考勤进行管理,包括考勤异常查询、请假、加班等操作。
(5)报表统计系统可对员工信息、工资信息、考勤信息进行统计和分析,并生成相应的报表用于管理决策。
2.系统实现2.1 技术选型本系统采用MySQL5.5、PHP5.2和Apache2.2作为数据库、后端和Web服务器。
2.2 整体流程(1)用户通过浏览器访问系统,输入用户名和密码进行登录。
(2)系统根据用户权限,返回相应的页面。
(3)管理员在系统中完成相应的操作,并提交到服务器。
(4)服务器进行数据处理并返回结果给用户,更新数据到数据库。
#include <stdio.h>#include <windows.h>#include <string.h>#define N 100struct employee{int num;char name[20];char sex;int time;char marital[10];char job[30];char addr[30];char tel[20];char email[20];}pcy[100]; /*定义一个结构体*/void menu();void input();void save(int);void display();void del();void add();void search();void search_num();void search_name();void search_job();void modify(); /*定义各函数*/int main(){menu();int n,flag;char a;do{printf("请选择您要操作的步骤(1--7):\n");scanf("%d",&n);if(n>=1&&n<=7){flag=1;break;}else{flag=0;printf("输入错误,请重新选择!");}}while(flag==0);while(flag==1){switch(n){case 1:printf(" 输入职工信息\n");printf("\n");input();break;case 2:printf(" 浏览职工信息\n");printf("\n");display();break;case 3:printf(" 查询职工信息\n");printf("\n");search();break;case 4:printf(" 删除职工信息\n");printf("\n");del();break;case 5:printf(" 添加职工信息\n");printf("\n");add();break;case 6:printf(" 修改职工信息\n");printf("\n");modify();break;case 7:exit(0);break;default :break;}getchar();printf("\n");printf("是否继续进行(y or n):\n");scanf("%c",&a);if(a=='y'){flag=1;system("cls"); /*清屏*/menu(); /*调用菜单函数*/printf("请再次选择你需要操作的步骤(1--7):\n");scanf("%d",&n);printf("\n");}elseexit(0);}return 0;}void menu() /*菜单函数*/{printf(" 欢迎进入职工信息管理系统\n");printf(" WELCOME\n");printf(" 1.录入职工信息");printf(" 2.浏览职工信息\n");printf(" 3.查询职工信息");printf(" 4.删除职工信息\n");printf(" 5.添加职工信息");printf(" 6.修改职工信息\n");printf(" 7.退出\n");printf("\n");printf(" 谢谢使用\n");printf("\n");printf("\n");void input() /*录入函数*/{int i,m;printf("请输入需要创建信息的职工人数(1--100):\n");scanf("%d",&m);for (i=0;i<m;i++){printf("请输入职工号:");scanf("%d",&pcy[i].num);printf("请输入姓名: ");scanf("%s",pcy[i].name);getchar();printf("请输入性别(f--女m--男): ");scanf("%c",&pcy[i].sex);printf("请输入出生年月: ");scanf("%d",&pcy[i].time);printf("请输入婚姻状况(y--已婚n--未婚): ");scanf("%s",pcy[i].marital);printf("请输入职称: ");scanf("%d",&pcy[i].job);printf("请输入住址: ");scanf("%s",pcy[i].addr);printf("请输入电话: ");scanf("%s",pcy[i].tel);printf("请输入email: ");scanf("%s",pcy[i].email);printf("\n");}printf("\n创建完毕!\n");save(m);}void save(int m) /*保存文件函数*/{int i;FILE*fp;if ((fp=fopen("employee_list","wb"))==NULL){printf("cannot open file\n");exit(0);}for (i=0;i<m;i++) /*将内存中职工的信息输出到磁盘文件中去*/ if (fwrite(&pcy[i],sizeof(struct employee),1,fp)!=1)printf("file write error\n");fclose(fp);}int load() /*导入函数*/{FILE*fp;int i=0;if((fp=fopen("employee_list","rb"))==NULL){printf("cannot open file\n");exit(0);}else{do{fread(&pcy[i],sizeof(struct employee),1,fp);i++;}while(feof(fp)==0);}fclose(fp);return(i-1);}void display() /*浏览函数*/{int i;int m=load();printf(" 职工号\t姓名\t\t性别\t\t出生年月\n");for(i=0;i<m;i++) /*m为输入部分的职工人数*/printf("\n %d\t\t%s\t%c\t\t%d\t\n",pcy[i].num,pcy[i].name,pcy[i].sex,pcy[i].time);printf("\n 婚姻状况\t\t职称\t\t住址\t\t电话\t\temail \n");for(i=0;i<m;i++) /*m为输入部分的职工人数*/printf("\n %s\t%d\t\t%s\t%s\t%s\n",pcy[i].marital,pcy[i].job,pcy[i].addr,pcy[i].tel,pcy[i].email); }void del() /*删除函数*/{int m=load();int i,j,n,t,flag;char name[20];printf("\n 原来的职工信息:\n");display();printf("\n");printf("请输入要删除的职工的姓名:\n");scanf("%s",name);for(flag=1,i=0;flag&&i<m;i++)if(strcmp(pcy[i].name,name)==0){printf("\n已找到此人,原始记录为:\n");printf(" 职工号\t姓名\t\t性别\t\t出生年月\n");printf("\n %d\t\t%s\t%c\t\t%d\t\n",pcy[i].num,pcy[i].name,pcy[i].sex,pcy[i].time);printf("\n 婚姻状况\t\t职称\t\t住址\t\t电话\t\temail \n");printf("\n %s\t%d\t\t%s\t%s\t%s\t%s\n",pcy[i].marital,pcy[i].job,pcy[i].addr,pcy[i].tel,pcy[i].email);printf("\n确实要删除此人信息请按1,不删除请按0\n");scanf("%d",&n);if(n==1){for(j=i;j<m-1;j++){strcpy(pcy[j].name,pcy[j+1].name);pcy[j].num=pcy[j+1].num;pcy[j].sex=pcy[j+1].sex;pcy[j].time=pcy[j+1].time;strcpy(pcy[j].marital,pcy[j+1].job);strcpy(pcy[j].job,pcy[j+1].job);strcpy(pcy[j].addr,pcy[j+1].addr);strcpy(pcy[j].tel,pcy[j+1].tel);strcpy(pcy[j].email,pcy[j+1].email);}flag=0;}}}if(!flag)m=m-1;elseprintf("\n对不起,查无此人!\n");printf("\n 浏览删除后的所有职工信息:\n");save(m); /*调用保存函数*/display(); /*调用浏览函数*/printf("\n继续删除请按1,不再删除请按0\n");scanf("%d",&t);switch(t){case 1:del();break;case 0:break;default :break;}}void add()/*添加函数*/{FILE*fp;int n;int count=0;int i;int m=load();printf("\n 原来的职工信息:\n");display();printf("\n");fp=fopen("emploee_list","a");printf("请输入想增加的职工数:\n");scanf("%d",&n);for (i=m;i<(m+n);i++){printf("\n 请输入新增加职工的信息:\n");printf("请输入职工号: ");scanf("%d",&pcy[i].num);printf("\n");printf("请输入姓名: ");scanf("%s",pcy[i].name);getchar();printf("请输入性别(f--女m--男): ");scanf("%c",&pcy[i].sex);printf("请输入出生年月: ");scanf("%d",&pcy[i].time);printf("请输入婚姻状况(y--已婚n--未婚): ");scanf("%s",pcy[i]. marital);printf("请输入职称: ");scanf("%d",&pcy[i].job);printf("请输入住址: ");scanf("%s",pcy[i].addr);printf("请输入电话: ");scanf("%s",pcy[i].tel);printf("\n");printf("请输入email: ");scanf("%d",&pcy[i].email);count=count+1;printf("已增加的人数:\n");printf("%d\n",count);}printf("\n添加完毕!\n");m=m+count;printf("\n浏览增加后的所有职工信息:\n");printf("\n");save(m);display();fclose(fp);}void search()/*查询函数*/{int t,flag;do{printf("\n按职工号查询请按1; 按姓名查询请按2; 按职称查询请按3;进入主函数请按4\n");scanf("%d",&t);if(t>=1&&t<=4){flag=1;break;}else{flag=0;printf("您输入有误,请重新选择!");}}while(flag==0);while(flag==1){switch(t){case 1:printf("按职工号查询\n");search_num();break;case 2:printf("按姓名查询\n");search_name();break;case 3:printf("按职称查询\n");search_job();break;case 4:main();break;default:break;}}}void search_num(){int num;int i,t;int m=load();printf("请输入要查找的职工号:\n");scanf("%d",&num);for(i=0;i<m;i++)if(num==pcy[i].num){printf("\n已找到此人,其记录为:\n");printf(" 职工号\t姓名\t\t性别\t\t出生年月\n");printf("\n %d\t\t%s\t%c\t\t%d\t\n",pcy[i].num,pcy[i].name,pcy[i].sex,pcy[i].time);printf("\n 婚姻状况\t\t职称\t\t住址\t\t电话\t\temail \n");printf("\n %s\t%d\t\t%s\t%s\t%s\n",pcy[i].marital,pcy[i].job,pcy[i].addr,pcy[i].tel,pcy[i].email);break;}if(i==m)printf("\n对不起,查无此人\n");printf("\n");printf("返回查询函数请按1,继续查询职工号请按2\n");scanf("%d",&t);switch(t){case 1:search();break;case 2: break;default:break;}}void search_name(){char name[30];int i,t;int m=load();printf("请输入要查找的姓名:\n");scanf("%s",name);for(i=0;i<m;i++)if(strcmp(pcy[i].name,name)==0){printf("\n已找到,其记录为:\n");printf(" 职工号\t姓名\t\t性别\t\t出生年月\n");printf("\n %d\t\t%s\t%c\t\t%d\t\n",pcy[i].num,pcy[i].name,pcy[i].sex,pcy[i].time);printf("\n 婚姻状况\t\t职称\t\t住址\t\t电话\t\temail \n");printf("\n %s\t%d\t\t%s\t%s\t%s\n",pcy[i].marital,pcy[i].job,pcy[i].addr,pcy[i].tel,pcy[i].email); }if(i==m)printf("\n对不起,查无此人\n");printf("\n");printf("返回查询函数请按1,继续查询姓名请按2\n");scanf("%d",&t);switch(t){case 1:search();break;case 2:break;default :break;}}void search_job()char job[20];int i, t;int m=load();printf("请输入要查找的职称:\n");scanf("%s",job);for(i=0;i<m;i++)if(strcmp(job,pcy[i].job)==0){printf("\n已找到此人,其记录为:\n");printf(" 职工号\t姓名\t\t性别\t\t出生年月\n");printf("\n %d\t\t%s\t%c\t\t%d\t\n",pcy[i].num,pcy[i].name,pcy[i].sex,pcy[i].time);printf("\n 婚姻状况\t\t职称\t\t住址\t\t电话\t\t \n");printf("\n %s\t%d\t\t%s\t%s\t%s\n",pcy[i].marital,pcy[i].job,pcy[i].addr,pcy[i].tel,pcy[i].email);break;}if(i==m)printf("\n对不起,查无此人\n");printf("\n");printf("返回查询函数请按1,继续查询职称请按2\n");scanf("%d",&t);switch(t){case 1:search();break;case 2:break;default :break;}}void modify() /*修改函数*/{int num;char name[20];char sex;int time;char marital;int job;char addr[30];char tel[20];char email[20];int b,c,i,n,t,flag;int m=load();printf("\n 原来的职工信息:\n");display();printf("\n");printf("请输入要修改的职工的姓名:\n");scanf("%s",name);for(flag=1,i=0;flag&&i<m;i++)if(strcmp(pcy[i].name,name)==0){printf("\n已找到此人,原始记录为:\n");printf(" 职工号\t姓名\t\t性别\t\t出生年月\n");printf("\n %d\t\t%s\t%c\t\t%d\t\n",pcy[i].num,pcy[i].name,pcy[i].sex,pcy[i].time);printf("\n 婚姻状况\t\t职称\t\t住址\t\t电话\t\temail \n");printf("\n %s\t%d\t\t%s\t%s\t%s\n",pcy[i].marital,pcy[i].job,pcy[i].addr,pcy[i].tel,pcy[i].email);printf("\n确实要修改此人信息请按1 ; 不修改请按0\n");scanf("%d",&n);if(n==1){printf("\n需要进行修改的选项\n 1.职工号2.姓名3.性别4.出生年月5.婚姻状况6.职称7.住址8.电话9.email\n");printf("请输入你想修改的那一项序号:\n");scanf("%d",&c);if(c>9||c<1)printf("\n选择错误,请重新选择!\n");}flag=0;}}if(flag==1)printf("\n对不起,查无此人!\n");do{switch(c) /*因为当找到第i个职工时,for语句后i自加了1,所以下面的应该把改后的信息赋值给第i-1个人*/{case 1:printf("职工号改为: ");scanf("%d",&num);pcy[i-1].num=num;break;case 2:printf("姓名改为: ");scanf("%s",name);strcpy(pcy[i-1].name,name);break;case 3:printf("性别改为: ");getchar();scanf("%c",&sex);pcy[i-1].sex=sex;break;case 4:printf("出生年月改为: ");scanf("%d",&time);pcy[i-1].time=time;break;case 5:printf("婚姻状况改为: ");scanf("%s", marital);break;case 6:printf("职称改为: ");scanf("%d",job);break;case 7:printf("住址为: ");scanf("%s",addr);strcpy(pcy[i-1].addr,addr);break;case 8:printf("电话改为: ");scanf("%s",tel);strcpy(pcy[i-1].tel,tel);break;case 9:printf("email改为: ");scanf("%s",email);strcpy(pcy[i-1].email,email);break;}printf("\n");printf("\n是否确定所修改的信息?\n 是请按1 ; 不,重新修改请按2: \n"); scanf("%d",&b);}while(b==2);printf("\n浏览修改后的所有职工信息:\n");printf("\n");save(m);display();printf("\n继续修改请按1,不再修改请按0\n");scanf("%d",&t);switch(t){case 1:modify();break;case 0:break;default :break;}}。