职工信息管理系统设计

北京理工大学珠海学院实验报告ZHUHAI CAMPAUS OF BEIJING INSTITUTE OF TECHNOLOGY班级:计算机(2)班 学号:100201021001 姓名:徐岩 指导教师:王日桂 成绩:实验题目:职工信息管理系统设计 实 验 时 间 : 2011年6月26日星期日 一、实验设计目的通过亲自设计程序,可以令我们熟悉C 语言操作,更熟练的掌握C 语句。

初步体会编程的过程,为将来的程序深入学习打下基础和培养兴趣。

二、实验设计要求试设计一职工信息管理系统,使之能提供以下功能:1.职工信息包括职工号、姓名、性别、年龄、学历、工资、住址、电话等(职工号不重复)。

2.系统以菜单方式工作3.职工信息录入功能(职工信息用文件保存)--输入4.职工信息浏览功能--输出5.查询和排序功能:按工资查询、按学历查询等(至少一种查询方式)--算法6.职工信息删除、修改功能(任选项)三、实验总体设计:用键盘输入职工信息:将信息写入指定文本文件:将信息从文件中导出放在结构数组中:将所有信息显示在屏幕上:按职工号查询、按学历查询、按电话查询:删除原有的职工信息录入函数写入文件 导出函数 浏览函数显示主菜单查询函数删除函数四、实验详细设计1.菜单函数menu使用printf语句在屏幕上打印出工作菜单,包括录入职工信息、浏览职工信息、查询职工信息、删除职工信息、添加职工信息、修改职工信息、退出。

2.主函数main调用菜单函数menu,显示系统工作菜单,罗列该系统所有功能。

运用do…while语句和选择函数switch即可根据使用者所输入的功能代号进入对应的功能程序。

程序开头的宏定义define N指定首次输入的职工人数为100,可根据不同需要随时更改。

3.录入函数input定义一个结构struct employee和数组em[N]用来储存N个职工的所有信息(职工号em[i].number、姓名em[i].name性别em[i].sex年龄em[i].age学历em[i].xueli工资em[i].wage住址em[i].addr电话em[i].tel)。

通过for循环输入所有职工信息。

用printf 语句提示需要输入的内容,接着用scanf语句输入相应内容。

输入完毕后套用保存函数save(m)将所输入的信息写入指定文件。

4.保存文件函数save定义文件指针fp,创建文件并用if语句判断能否打开,若fopen返回值不为0,则可继续下面操作。

用for循环通过fwrite语句将结构数组em中的内容写入保存在D盘的文本文件里面。

形参m指需要写入文件的职工人数。

最后关闭文件。

5.导出函数load首先判断文件打开是否成功,若fopen返回值不为零,继续下面操作。

用do…while循环通过fread语句将文件中的职工信息取出放到em结构数组里面。

最后关闭文件。

6.浏览函数display声明整形变量i和m,其中i记录输出的职工序数,m用来接收调用浏览函数时所传递过来的实参,接着将其值传递给导出函数load(m),使得导出的职工人数与浏览的职工人数保持一致。

通过调用load函数后(即给em数组附值),用for循环输出每个职工的各种信息。

7.删除函数del声明整形变量i,j,n,t,flag和char形数组name[20]。

调用浏览函数display(),显示所有职工信息,便于使用者审阅需删除的对象。

用printf语句提示“输入要删除的职工名字”,接着用scanf语句输入删除对象名字。

用for循环,循环主体是先判断中是否存在所输入的名字(调用字符串比较函数stecmp)。

若存在,printf语句提示是否确认删除,用scanf语句输入确认指令,再用for循环从要删除的这个职工开始,依次用后一个职工的信息覆盖前一个的。

循环结束后当前职工人数m自减1,并保存,跳出大循环;若不存在,输出“输入错误,无此人”。

printf提示下一步操作“\n继续删除请按1,不再删除请按0\n”。

switch 根据键盘输入的指令代号选择下一步连接的函数。

8.添加函数add声明整形变量i,n,m,定义文件指针fp,用追加的方式打开文件,printf提示“输入要添加的人数”scanf输入要添加的人数存放在n。

用for循环输入要添加的职工信息,浏览增加后的所有职工信息。

将输入的新信息追加写入文件保存。

关闭文件。

9.查询函数search声明整形变量t,先用printf语句显示查询菜单,用scanf输入选择的查询方式代号,用switch(t)进入所选择的具体查询函数,包括按职工号查询、按学历查询、按电话查询三中方式。

10.按职工号查询search_num声明两个整形变量:i记录职工的序数,num存放键盘输入的职工号。

调用导出函数load()表示当前的职工人数。

通过scanf语句从键盘输入需要查询的职工号,并赋值给num。

用for 循环,循环主体是先判断em.num中是否有输入的职工号,如果有,用printf语句输出与职工号相对应的该职工所有信息,再跳出循环;如果没有,输出“查无此人”,并调用search()返回查询菜单。

按学列查询和按电话查询与此方法类似,就不多说,以下只附按职工号查询程序流程图。

五、调试与测试整个程序代码是分块书写的,每个函数都可以独立运行。

只有输入函数查询、菜单函数写得很顺利,一次性就能够成功运行,其他函数在调试过程中或多或少都出现了问题。

而且串联所有函数时,调试提示出错:有几个函数“redefinition; different basic types”解决:在函数名前加void指明类型。

1.保存函数save()在调试和链接的时候都没有出现错误提示,但在运行的时候出现了问题。

写入指定位置的文件,打开后总会有乱码。

与c语言课本上的例题对照后发现,我写的fopen 指向的文件没有指定文件的存储类型。

2.导出函数load()遇到一个问题。

是用fscanf语句时,漏写地址符。

调试和链接都没问题,但点击运行后,总出现一个提示出错的蓝色小窗口。

经过网上的查询发现了原因所在。

解决:在em[i].name等之前加上地址符。

齐。

即下面的职工信息分别与第一个printf输出的中文项目提示对齐。

解决方法:不断修改空格个数,不断运行察看效果。

4.按学历查询函数search_xueli(),要考虑输入一种学历,可能对应出很多职工,这就不能延用按姓名和职工号查询中判断是否输入错误的方法了。

为了显示出所有具有该学历的职工,就需要让for循环一直运行到最后一个为止。

这时计量数i始终会等于职工人数,不能再用i来判断是否不存在此人。

这就需要再定一个整形变量k,用来计量单独的一个循环次数。

5.删除函数del()的难点在于多次删除。

即在删除掉第一个人以后,现有职工人数发生改变,而宏定义中的N却是不变的。

最开始我想到了用static定义一个整形变量a来计量当前人数。

这在单独运行删除函数时,可以成功的连续删除。

最后所有函数串在一起时,有了更好的解决方法—指针。

6.添加函数add()遇到的问题是用printf输入新职工信息后,保存到文件里面,发现原有的信息不见了。

解决:文件打开方式改用"a"追加写入。

六、源程序代码#include<stdio.h>#include<windows.h>#include<time.h>#include<string.h>#define N 100struct employee{int num;char name[10];char sex;int age;char xueli[30];int wage;char addr[30];long int tel;}em[100]; /*定义一个结构体*/void menu();void input();void save(int);void display();void del();void add();void search_num();void search_xueli();void search_tel();void modify(); /*定义各函数*/void menu() /*菜单函数*/{printf("\n");printf("\n");printf(" ******************职工信息管理****************\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");}void 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--6):\n");scanf("%d",&n);printf("\n");}elseexit(0);}}void input() /*录入函数*/{int i,m;printf("请输入需要创建信息的职工人数(1--100):\n");scanf("%d",&m);for (i=0;i<m;i++){printf("职工号: ");srand((int)time(0));em[i].num=rand()%10000+20000000;if(em[i].num!=em[i-1].num)printf("%8d ",em[i].num);printf("\n");printf("请输入姓名: ");scanf("%s",em[i].name);getchar();printf("请输入性别(f--女 m--男): ");scanf("%c",&em[i].sex);printf("请输入年龄: ");scanf("%d",&em[i].age);printf("请输入学历: ");scanf("%s",em[i].xueli);printf("请输入工资: ");scanf("%d",&em[i].wage);printf("请输入住址: ");scanf("%s",em[i].addr);printf("请输入电话: ");scanf("%d",&em[i].tel);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(&em[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(&em[i],sizeof(struct employee),1,fp);i++;}while(feof(fp)==0);}fclose(fp);return(i-1);}void display() /*浏览函数*/{int i;int m=load();printf("\n 职工号\t姓名\t性别\t年龄\t学历\t工资\t住址\t电话 \n");for(i=0;i<m;i++) /*m为输入部分的职工人数*/printf("\n %d\t%s\t%c\t%d\t%s\t%d\t%s\t%ld\n",em[i].num,em[i].name,em[i].se x,em[i].age,em[i].xueli,em[i].wage,em[i].addr,em[i].tel);}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(em[i].name,name)==0){printf("\n已找到此人,原始记录为:\n");printf("\n职工号\t姓名\t性别\t年龄\t学历\t工资\t住址\t电话 \n");printf("\n%d\t%s\t%c\t%d\t%s\t%d\t%s\t%ld\n",em[i].num,em[i].name,em[i].sex, em[i].age,em[i].xueli,em[i].wage,em[i].addr,em[i].tel);printf("\n确实要删除此人信息请按1,不删除请按0\n");scanf("%d",&n);if(n==1) /*如果删除,则其他的信息都往上移一行*/{for(j=i;j<m-1;j++){strcpy(em[j].name,em[j+1].name);em[j].num=em[j+1].num;em[j].sex=em[j+1].sex;em[j].age=em[j+1].age;strcpy(em[j].xueli,em[j+1].xueli);em[j].wage=em[j+1].wage;strcpy(em[j].addr,em[j+1].addr);em[j].tel=em[j+1].tel;}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("请输入职工号: ");srand((int)time(0));em[i].num=rand()%10000+20000000;if(em[i].num!=em[i-1].num)printf("%8d ",em[i].num);printf("\n");printf("请输入姓名: ");scanf("%s",em[i].name);getchar();printf("请输入性别(f--女 m--男): ");scanf("%c",&em[i].sex);printf("请输入年龄: ");scanf("%d",&em[i].age);printf("请输入学历: ");scanf("%s",em[i].xueli);printf("请输入工资: ");scanf("%d",&em[i].wage);printf("请输入住址: ");scanf("%s",em[i].addr);printf("请输入电话: ");scanf("%d",&em[i].tel);printf("\n");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_xueli();break;case 3:printf("按电话号码查询\n");search_tel();break;case 4:main();break;default:break;}}}void search_num(){int num;int i,t;int m=load();printf("请输入要查找的职工号(20001111---20009999):\n");scanf("%d",&num);for(i=0;i<m;i++)if(num==em[i].num){printf("\n已找到此人,其记录为:\n");printf("\n职工号\t姓名\t性别\t年龄\t学历\t工资\t住址\t电话 \n");printf("\n%d\t%s\t%c\t%d\t%s\t%d\t%s\t%ld\n",em[i].num,em[i].name,em[i].sex, em[i].age,em[i].xueli,em[i].wage,em[i].addr,em[i].tel);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_xueli(){char xueli[30];int i,t;int m=load();printf("请输入要查找的学历:\n");scanf("%s",xueli);for(i=0;i<m;i++)if(strcmp(em[i].xueli,xueli)==0){printf("\n已找到,其记录为:\n");printf("\n职工号\t姓名\t性别\t年龄\t学历\t工资\t住址\t电话 \n");printf("\n%d\t%s\t%c\t%d\t%s\t%d\t%s\t%ld\n",em[i].num,em[i].name,em[i].sex, em[i].age,em[i].xueli,em[i].wage,em[i].addr,em[i].tel);}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_tel(){long int tel;int i, t;int m=load();printf("请输入要查找的电话号码:\n");scanf("%ld",&tel);for(i=0;i<m;i++)if(tel==em[i].tel){printf("\n已找到此人,其记录为:\n");printf("\n职工号\t姓名\t性别\t年龄\t学历\t工资\t住址\t电话 \n");printf("\n%d\t%s\t%c\t%d\t%s\t%d\t%s\t%ld\n",em[i].num,em[i].name,em[i].sex, em[i].age,em[i].xueli,em[i].wage,em[i].addr,em[i].tel);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[10];char sex;int age;char xueli[30];int wage;char addr[30];long int tel;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(em[i].name,name)==0){printf("\n已找到此人,原始记录为:\n");printf("\n职工号\t姓名\t性别\t年龄\t学历\t工资\t住址\t电话 \n");printf("\n%d\t%s\t%c\t%d\t%s\t%d\t%s\t%ld\n",em[i].num,em[i].name,em[i].sex,em[i].age,em[i].xueli,em[i].wage,em[i].addr,em[i].tel);printf("\n确实要修改此人信息请按1 ; 不修改请按0\n");scanf("%d",&n);if(n==1){printf("\n需要进行修改的选项\n 1.职工号 2.姓名 3.性别 4.年龄 5.学历 6.工资 7.住址 8.电话\n");printf("请输入你想修改的那一项序号:\n");scanf("%d",&c);if(c>8||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);em[i-1].num=num;break;case 2:printf("姓名改为: ");scanf("%s",name);strcpy(em[i-1].name,name);break;case 3:printf("性别改为: ");getchar();scanf("%c",&sex);em[i-1].sex=sex;break;case 4:printf("年龄改为: ");scanf("%d",&age);em[i-1].age=age;break;case 5:printf("学历改为: ");scanf("%s",xueli);strcpy(em[i-1].xueli,xueli);break;case 6:printf("工资改为: ");scanf("%d",wage);break;case 7:printf("住址改为: ");scanf("%s",addr);strcpy(em[i-1].addr,addr);break;case 8:printf("电话改为: ");scanf("%ld",&tel);em[i-1].tel=tel;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;}}七、执行结果。

合集下载

职工信息管理系统【最新范本模板】

职工信息管理系统【最新范本模板】

职工信息管理系统目录一,需求文档…………………………………………………………………………………二,设计文档……………………………………………………………………………….. 三,系统说明书及用户操作手册………………………………………………。

.。

四,预计人员分配资源调配和进度表………………………………………。

五,分工表………………………………………………………………………………….一,需求文档:1,编写目的:职工管理系统是一个工作单位不可缺少的管理工具,它管理的数据对于公司的决策者和管理者来说都至关重要,所以职工管理系统应该能够为用户提供充足的信息和快捷的查询手段。

通过对用户需求进行调查分析,写出需求分析文档作为项目设计的基本准则要求,以及系统分析员进行系统分析和测试人员进行测试时的手册,方便设计人员进一步设计规划。

2,需求概述:设计一个职工信息管理系统,是其具有以下功能:2。

1建立职工信息数据,录入职工信息(包括职工编号、姓名、性别、工资、出生年月、参加工作时间和年龄)并保存;2.2根据职工信息表,建立只含有姓名和年龄的职工信息简表;2.3浏览所有职工信息;2.4实现职工信息的增、删、查、改;2.5实现职工信息按姓名字母顺序或职工编号进行排序。

3,需求说明:职工信息管理系统所实现的功能:3。

1添加新职工信息:实现对新加入职工信息的录入,所有的信息当中主码即职工信息编号,必须填写。

3。

2删除职工信息:当公司有职工因故离职,需要删除职员信息时,释放掉它所占据的数据库空间,就可以在列表中选中所要删除的记录,然后点击删除。

如果确认删除则在弹出的消息框中点击确定即可删除所选的记录。

3。

3修改职工信息:由于某种原因可能导致在记录员工信息时出现错误,需要对员工信息进行修改。

在员工信息系统主窗口中选择所要修改的成员信息进行修改,点击修改后将会弹出消息框,如果确认修改则点击确定,则修改数据成功。

3。

4查询职工信息:支持多条件查询,根据职工的姓名、职工编号等信息进行查询,并显示所有符合查询条件的职工信息。

JAVA课设职工信息管理系统

JAVA课设职工信息管理系统

*******************实践教学*******************JAVA课程设计题目:职工信息管理系统专业班级:姓名:学号:指导教师:成绩:摘要用计算机管理职工信息具有可靠、方便、省时省力的特点。

当今各种管理软件大部分只针对一个公司或者更大的范围来编写,它具有通用性良好的特点,但对于小领域如一个系来说,它就很难适应这个系特殊的管理。

而该设计正是基于职工信息管理的特点来开发的。

它可以实现职工信息的录入、添加、修改、删除、查询、保存到数据库等基本功能。

同时还为管理者提供统计、制表、系统日志、开介绍信等特色功能。

该系统具有界面友好、操作方便、成本低廉、符合管理者习惯的特点。

另外,系统采用Java语言开发,具有可移植性良好、不依赖于操作系统的特点。

同时采用My SQL数据库管理系统做数据库,是因为它具有管理方便,存储量大的特点,适合计算机系信息管理的要求,它主要包含以下几个模块:系统权限的设定、原始数据录入、数据的汇总及查询等。

本文系统的分析了软件开发的背景以过程;首先介绍了软件的开发环境,其次介绍了本软件的详细设计过程:数据库的设计、各个模块的设计和实现,以及具体界面的设计和功能。

关键词:职工管理信息系统职工信息目录一、需求分析 (1)二、总体设计 (2)三、详细设计 (3)3.1基础数据定义 (3)3.2主要功能实现 (5)3.3数据库表定义 (25)四、测试 (28)4.1登录主界面 (28)4.2管理员身份登录主界面 (28)4.3普通用户身份登录主界面 (29)4.4t添加职工信息 (29)4.5修改职工信息 (30)4.6职工信息查询 (30)4.6删除职工信息 (31)4.6添加用户信息 (31)4.6修改用户信息 (32)4.6用户信息查询 (32)4.6删除用户信息................................................................................................................. ..334.6用户密码修改 (33)设计总结 (34)参考文献 (35)致谢 (36)一、需求分析1.1问题描述对职工信息进行管理,包括:职工信息的录入、修改、删除、更新,还有对登录用户进行管理,包括用户信息的录入、删除、修改,密码修改等管理,还有对用户信息的现实打印,查找等。

职工管理系统课程设计报告

职工管理系统课程设计报告

职工管理系统课程设计报告1.引言职工管理系统是一种企业管理软件,它的主要作用是帮助企业管理职工的基本信息、工资、考勤、培训等内容。

本文将介绍我们小组设计的职工管理系统。

2.概述职工管理系统拥有多个功能模块,包括人事管理、工资管理、考勤管理、培训管理等。

其中,人事管理模块包括职工的基本信息、职务信息、部门信息等;工资管理模块包括职工的薪资计算、社保、公积金等;考勤管理模块包括职工的出勤记录、加班、请假等;培训管理模块则包括职工的培训计划、课程安排、培训记录等。

3.功能设计我们小组的职工管理系统,采用了Java语言进行开发,使用MVC 架构模式进行开发。

具体功能设计如下:3.1人事管理模块人事管理模块用于管理职工的基本信息、职务信息、部门信息等。

其中,职工的基本信息包括姓名、性别、出生日期、身份证号等;职务信息包括职务名称、职级、任职时间等;部门信息包括部门名称、部门经理、部门编号等。

除此之外,人事管理模块还可以进行权限管理,设置不同角色的权限不同。

3.2工资管理模块工资管理模块包括职工的薪资计算、社保、公积金等。

职工的薪资计算需要考虑个人工资、绩效、考勤等因素,同时还要进行税前扣减、税后扣减等计算。

社保、公积金等则需要根据国家政策进行计算。

3.3考勤管理模块考勤管理模块用于管理职工的出勤记录、加班、请假等。

出勤记录需要记录职工的出勤时间、迟到早退、旷工等,加班需要统计职工的加班时间和加班费用,请假需要记录职工的请假类型、请假时间等。

3.4培训管理模块培训管理模块用于管理职工的培训计划、课程安排、培训记录等。

培训计划需要包括培训的目标、内容、时间、地点等,课程安排需要包括课程名称、讲师、授课时间、授课地点等,培训记录需要记录职工的培训情况、培训效果等。

4.技术选型我们小组采用了Spring Boot、MyBatis等技术进行开发,前端采用了Bootstrap、jQuery等技术进行开发。

其中,Spring Boot提供了优雅的开发方式,MyBatis则提供了便捷的数据库交互方式,Bootstrap、jQuery则为前端提供了丰富的UI组件和JavaScript库。

职工信息管理系统设计python

职工信息管理系统设计python

职工信息管理系统设计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 系统监控与维护定期对系统进行监控和维护,包括但不限于系统性能优化、安全漏洞修复、数据备份等工作。

企业员工信息管理系统设计与实现

企业员工信息管理系统设计与实现

企业员工信息管理系统设计与实现摘要本论文首先对现阶段企业员工信息管理的基本情况进行了分析,提出开发本系统要解决的问题,以及从长远考虑所要达到的目的,对系统进行了详细的需求分析,其次根据系统的实现功能和使用环境对系统做了总体规划,最后完成了模块的划分和数据库的设计与实现,并对系统进行了测试。

本系统开发主要包括前台应用程序的开发和后台数据库的建立与维护两方面。

系统前台主要实现用户薪资、考勤、文章信息的查看,以及发表意见建议等功能。

系统前台选用了Css javascript、html等作为主要的编程语言。

后台主要实现了员工的查询、员工变动信息更新、考勤管理、薪资管理、事项管理、站内文章信息管理以及意见建议管理等功能。

系统选用SQL 数据库。

利用.NET动态网页编程技术实现前后台的数据交互。

在企业的经营生产中,员工信息已成为企业经营管理中不可缺少的一部分,为管理者进行管理和进行各种人士调配活动提供了重要的依据,在生产分配安排中将发挥越来越重要的作用。

关键词:员工信息管理系统、前台、后台、交互。

Enterprise Personnel Management System design andimplementationAt frirst,this paper analyse the situation of enterprise personnel management at the present stage.Point out the question needing to solve for development the system and the long.term purpose. So that the system carried out a detailed needs analysis, then it completed the module design and the design and realization of database and test according to the functions and main implementation for the system.The system mainly includes developing the application inrerface of front-end and building up data-base of back-end. The main functions of the before part include salary,attendance,checking theinformation of article, as well as publishing suggestions, etc. The system use Css javascript, html, etc., as the main programming language.The main functions of background part include the staff inquiry, the staff changes in the information update, attendance management, payroll management, issues management, the article in the station management, as well as suggestions management. The system use SQL database as background database. Using .NET pagesDynamic web page programming to achieve the data Interactive.In the progress of enterprises operating and production, the information of staffs has become a business management of most important part. It will provides an more and more important function for the management of decision-making and personnel.Keywords:Personnel Management System、beforeground、background、interactive第一章.绪论1.1.企业员工信息管理系统的开发背景目前,一些企业对员工信息的管理还存在诸多问题,单靠人力进行员工信息的管理是不够的。

C语言课程设计报告:职工信息管理系统程序设计

C语言课程设计报告:职工信息管理系统程序设计

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.编程中遇到的困难及解决方法温故而知新,可以为师矣。

教职工信息管理系统


ABCD
集成测试
将所有模块集成后进行测试,确保模块间通信无 误。
优化建议
根据测试结果,对系统进行必要的优化,如调整 数据库查询语句、优化代码结构等。
05 系统应用与效果评估
系统应用场景与效果
教职工信息管理
系统主要用于管理教职工的基本信息,如姓名、性别、年龄、学历、职称等。
课程与教学管理
系统支持对教职工所授课程、教学计划、教学评估等进行管理。
包括教职工的姓名、性别、年龄、学历、职 称等基本信息的管理。
教职工考勤管理
记录教职工的考勤信息,包括请假、加班、 出差等情况。
教职工合同管理
管理教职工的合同信息,包括合同签订、续 签、解除等操作。
教职工绩效评估
对教职工的工作绩效进行评估,记录评估结 果并根据绩效进行激励。
学生信息管理需求
学生基本信息管理
报表生成模块
根据用户需求生成各类报表,如教职工花名 册、职称结构统计等。
04 系统实现
开发环境与工具
开发环境
系统开发环境应选择稳定、安全 的操作系统,如Windows
Server或Linux,并安装必要的 开发软件,如Visual Studio、
Eclipse等。
数据库
选择合适的数据库管理系统,如 MySQL、Oracle或SQL Server,
用于存储和查询教职工信息。
前端开发工具
使用HTML、CSS、JavaScript 等前端技术,配合jQuery、
Bootstrap等框架,构建用户友 好的界面。
开发过程与关键技术
需求分析
系统设计
编程实现
明确系统的功能需求,确定 系统的主要模块和业务流程。

数据结构课程设计 简单的职工管理系统

数据结构课程设计简单的职工管理系统简单的职工管理系统设计1. 引言本文旨在设计一个简单的职工管理系统,用于匡助管理者进行职工信息的录入、查询、修改和删除等操作。

该系统基于数据结构的相关知识,通过合理的数据结构设计和算法实现,实现对职工信息的高效管理。

2. 功能需求2.1 职工信息录入系统提供一个录入界面,管理者可以输入职工的基本信息,包括职工编号、姓名、性别、年龄、职位等。

系统应该能够对输入的信息进行合法性验证,并将信息存储到合适的数据结构中。

2.2 职工信息查询系统提供一个查询界面,管理者可以根据职工的编号、姓名、职位等条件进行查询。

系统应该能够根据查询条件从数据结构中快速定位到符合条件的职工信息,并将结果展示给管理者。

2.3 职工信息修改系统提供一个修改界面,管理者可以根据职工的编号或者姓名等条件选择一个职工信息进行修改。

系统应该能够根据选择的职工信息,提供可修改的字段,并对输入的修改信息进行合法性验证,并更新数据结构中对应的职工信息。

2.4 职工信息删除系统提供一个删除界面,管理者可以根据职工的编号或者姓名等条件选择一个职工信息进行删除。

系统应该能够根据选择的职工信息,从数据结构中删除对应的职工信息,并给出相应的提示。

3. 数据结构设计为了高效地管理职工信息,我们可以采用链表作为基本的数据结构。

每一个节点表示一个职工信息,包括职工编号、姓名、性别、年龄、职位等字段。

节点之间通过指针进行连接,形成一个链表结构。

3.1 链表节点设计每一个链表节点包含以下字段:- 职工编号(int)- 姓名(string)- 性别(string)- 年龄(int)- 职位(string)- 指向下一个节点的指针(Node*)3.2 链表操作设计- 初始化链表:创建一个空链表,并初始化头节点指针为NULL。

- 添加节点:根据输入的职工信息创建一个新节点,并将其插入到链表的合适位置。

- 删除节点:根据职工的编号或者姓名等条件,找到对应的节点,并将其从链表中删除。

教职工信息管理系统设计报告

教职工信息管理系统设计报告1. 背景教职工信息管理系统是为了方便学校对教职工信息进行管理和查询而设计的一套系统。

传统的教职工信息管理方式通常采用纸质档案,操作繁琐且易丢失,无法满足现代学校对快速、准确、方便的管理需求。

设计一个基于计算机网络的教职工信息管理系统,可以实现信息的集中存储、快速查询和更新、权限控制等功能,将大大提高学校教职工信息的管理效率和准确性。

2. 分析2.1 系统需求分析2.1.1 功能需求分析教职工信息管理系统需要实现以下功能:•教职工信息录入:包括基本个人信息、任教科目、薪资等;•教职工信息查询:按条件查询教职工个人信息,并支持导出查询结果;•教职工信息修改:对已录入的教职工个人信息进行修改;•权限控制:不同用户具有不同的权限,只有管理员才能进行数据修改操作;•数据备份与恢复:定期备份数据,并能够在需要时进行数据恢复。

2.1.2 性能需求分析教职工信息管理系统需要满足以下性能需求:•系统响应快:用户查询、录入、修改操作都需要在较短的时间内完成;•数据安全可靠:系统需要保证数据的完整性和机密性,防止数据泄露和损坏;•并发处理能力:系统需要支持多个用户同时进行操作,保证数据一致性。

2.2 系统设计方案2.2.1 系统架构设计教职工信息管理系统采用三层架构设计,包括表现层、业务逻辑层和数据访问层。

•表现层:负责与用户进行交互,接收用户请求并展示结果;•业务逻辑层:负责处理用户请求,实现各项功能,并调用数据访问层进行数据库操作;•数据访问层:负责与数据库进行交互,执行数据库操作。

2.2.2 数据库设计教职工信息管理系统的数据库主要包括以下表:•教职工表(Employee):存储教职工的基本信息;•科目表(Subject):存储所有的教学科目;•薪资表(Salary):存储教职工的薪资信息。

不同表之间通过主外键关联,实现数据的一致性和完整性。

3. 结果经过系统设计和开发,教职工信息管理系统已经实现了以下功能:•教职工信息录入:管理员可以通过系统界面录入教职工的基本信息、任教科目和薪资等;•教职工信息查询:用户可以根据条件进行查询,并支持导出查询结果为Excel文件;•教职工信息修改:管理员可以对已录入的教职工个人信息进行修改;•权限控制:系统根据用户角色进行权限控制,只有管理员才能进行数据修改操作;•数据备份与恢复:系统定期自动备份数据,并提供恢复功能。

高校教职工信息管理系统的设计与实现


感谢观看
3、Web框架:对于构建Web应用程序,可以选择Django或Spring等Web框架。 Django是一个轻量级的框架,适合快速开发小型应用,而Spring则是一个全功能 的框架,适合大型和复杂的系统。
4、前端技术:HTML5, CSS3和JavaScript是前端开发的基本技术,用于构 建用户界面和实现交互功能。同时也可以使用jQuery, Vue等库或框架来提高开 发效率和用户体验。
四、系统实现技术
1、数据库管理系统(DBMS)选择:根据实际需要,可以选择MySQL, PostgreSQL等开源DBMS来存储和管理数据。它们都提供了强大的数据管理功能和 灵活的查询语言。
2、系统开发语言:可以选择Python或Java作为主要的开发语言。Python语 言代码简洁易读,适合快速原型开发,而Java语言更加成熟稳定,适合大规模应 用开发。
1、用户管理:系统需要支持多用户管理,包括管理员、教职工等不同角色 的用户。管理员可以添加、删除、修改用户信息,教职工可以查看自己的信息。
2、数据管理:系统需要支持对教职工信息的存储和管理,包括基本信息、 教育背景、工作经历、科研成果等方面。
3、查询统计:系统需要支持对教职工信息的查询和统计,包括按姓名、按 性别、按年龄等多种查询方式,以及按照不同指标进行统计。
1、数据库设计:为了满足数据存储和管理需求,我们需要设计一个数据库, 用于存储教职工的基本信息、教育背景、工作经历、科研成果等数据。在数
据库设计时,需要考虑数据的结构、完整性、安全性等问题。
2、用户界面设计:为了使用户可以方便地使用系统,我们需要设计一个友 好的用户界面。用户界面需要包括登录页、主页面和功能页面等部分,主页面和 功能页面需要清晰展示各个功能模块和操作按钮,同时需要考虑用户的使用习惯 和操作便捷性。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档