简单的职工管理系统
- 格式:doc
- 大小:30.00 KB
- 文档页数:11
目录一、前言—--——--—-——-———-—————-———-——-———-—————---—-——————-—--————————-————————2二、需求分析—-———-—---—-——————————-———--——-—--——-————-—--——————————---—----—3 三、概要设计—-——-——-—————-———-—-—————————--——-----—--—--————--——-—---—-—————4四、详细设计—-———-———————--—-—-————-—-—————-—-—-———————-——-——-—-----————-—-—5五、调试分析————-————————-—————-——-————--—-——-——--——--—--—---—--——---—--—-——6六、用户使用说明—--——————-————-————-—-—-—-—--—————————-—————-—-———————-——-7 七、测试结果——————-—--—---——--——————--—-———----———--——-—-—-————————---—-———-8八、总结—-———---—-—--———-———-—--—---——--—————--—-—--—————--————————---—----—-11九、主要参考文献和附录—--——-——-—-————--——-——-—--———---—————-——-———————12前言员工管理系统是一个工作单位不可缺少的管理工具,它管理的数据对于公司的决策者和管理者来说都至关重要,所以员工管理系统应该能够为用户提供充足的信息和快捷的查询手段.但一直以来各个公司基本上都是靠传统的人工方式来管理员工信息,这种管理方式存在着许多缺点,如:效率低、保密性差,另外时间一长,将产生大量的文件和数据,这对于信息的查找、更新和维护都带来了不少的困难。
案例二用VC++制作一个教职工管理系统关键词:VC++应用程序向导增加对话框资源ADODC控件DataGrid控件对话框切换2.1 系统设计的目的和意义学校职工查询是学校管理中需要经常处理的一项工作,本案例结合一个简化的学校教职工管理系统的制作,介绍如何利用VC++的应用程序向导制作应用程序。
该系统的制作涉及一个数据库、两个数据表及其相关的对话框的制作开发,涉及在工程中增加对话框、调用对话框的方法以及应用程序向导的使用方法。
最重要的是,在本案例中,我们将介绍一种新的数据源引用方法,即使用ADODC控件引用数据源并制作应用系统的方法。
案例为学生学习使用VC++创建了一个基本例程,同样,作为本书的第二个例子,我们仍然采用向导创建上程的方法加以进行,案例程序是简单的,但方法是重要的。
2.2 系统功能设计本系统具有—般系统的数据处理功能,如数据录入、增加、修改、删除等,另外,本系统将涉及职工信息表和职工工资表两个表的操作,用户可以在两个表之间相互切换,因此系统制作小需要涉及到对话框相互切换的方法,它是一个重要而且常用的方法。
2.3 数据库与数据表的设计本系统将首先创建一个职工信息数据库,并在它之中创建两个数据表,一个是“职工信息数据表”,—个是“职工工资信息表”。
在本案例当中,我们仅用Microsoft Access 2003创建教职工管理数据库及其数据表,不再介绍其他方法。
2.3.1利用Microsoft Access 2003创建教职工管理数据库及其数据表微软公司的许多产品所支持的数据库结构与数据库驱动器类型均是通用的,因此,用户往往可以借助于相关的工具创建数据库与数据表,这里我们介绍采用Microsoft Access 2003创建数据库及其数据表的方法。
先定义职工信息数据表的结构,如表2.1所示,它专门用于记录教职工的基本情况。
表2.1 职工信息数据表的结构职工工资情况表的结构定义如表2.2所示,注意,这是一个简化了的职工工资数据表,因为工资表往往比较复杂,而且不同的单位工资表结构也有所不同.我们不可能定义一个“万能”的工资表结构,只能创建一个具有示范意义的工资数据表结构。
职工信息管理系统目录一,需求文档…………………………………………………………………………………二,设计文档……………………………………………………………………………….. 三,系统说明书及用户操作手册………………………………………………。
.。
四,预计人员分配资源调配和进度表………………………………………。
五,分工表………………………………………………………………………………….一,需求文档:1,编写目的:职工管理系统是一个工作单位不可缺少的管理工具,它管理的数据对于公司的决策者和管理者来说都至关重要,所以职工管理系统应该能够为用户提供充足的信息和快捷的查询手段。
通过对用户需求进行调查分析,写出需求分析文档作为项目设计的基本准则要求,以及系统分析员进行系统分析和测试人员进行测试时的手册,方便设计人员进一步设计规划。
2,需求概述:设计一个职工信息管理系统,是其具有以下功能:2。
1建立职工信息数据,录入职工信息(包括职工编号、姓名、性别、工资、出生年月、参加工作时间和年龄)并保存;2.2根据职工信息表,建立只含有姓名和年龄的职工信息简表;2.3浏览所有职工信息;2.4实现职工信息的增、删、查、改;2.5实现职工信息按姓名字母顺序或职工编号进行排序。
3,需求说明:职工信息管理系统所实现的功能:3。
1添加新职工信息:实现对新加入职工信息的录入,所有的信息当中主码即职工信息编号,必须填写。
3。
2删除职工信息:当公司有职工因故离职,需要删除职员信息时,释放掉它所占据的数据库空间,就可以在列表中选中所要删除的记录,然后点击删除。
如果确认删除则在弹出的消息框中点击确定即可删除所选的记录。
3。
3修改职工信息:由于某种原因可能导致在记录员工信息时出现错误,需要对员工信息进行修改。
在员工信息系统主窗口中选择所要修改的成员信息进行修改,点击修改后将会弹出消息框,如果确认修改则点击确定,则修改数据成功。
3。
4查询职工信息:支持多条件查询,根据职工的姓名、职工编号等信息进行查询,并显示所有符合查询条件的职工信息。
职工工资信息管理系统实验报告一、引言职工工资信息管理系统是一种用于管理和统计企业职工工资信息的系统,旨在提高工资管理的效率和准确性。
本实验旨在通过搭建一个简单的职工工资信息管理系统,对系统的功能和性能进行测试和评估。
二、系统需求分析职工工资信息管理系统应具备以下基本功能:1. 登录功能:提供登录界面,确保只有授权人员可以使用系统。
2. 职工信息录入功能:管理员或授权人员可以录入职工的基本信息,包括姓名、工号、岗位等。
3. 工资信息录入功能:管理员或授权人员可以录入职工的工资信息,包括基本工资、津贴、绩效工资等。
4. 工资计算功能:根据录入的工资信息,系统能够自动计算每位职工的实际工资。
5. 工资统计功能:系统能够生成工资报表,包括各部门职工工资总额、平均工资等统计信息。
6. 工资查询功能:管理员或授权人员可以通过系统查询特定职工的工资信息。
7. 数据备份与恢复功能:系统能够自动备份工资信息数据,并可在需要时方便地进行数据恢复。
三、系统设计与实现本实验采用Java语言和MySQL数据库进行系统的设计与实现。
系统前端采用Java Swing图形界面库,实现用户友好的操作界面;后端采用Java JDBC技术与MySQL数据库进行数据交互和管理。
1. 登录功能设计与实现登录功能是系统的入口,用户需要输入正确的用户名和密码才能进入系统。
在界面设计上,使用文本框和密码框接收用户输入,并通过按钮实现登录功能。
在数据库中存储用户信息表,包括用户名和密码字段,系统通过对比用户输入与数据库中的数据来实现用户的登录验证。
2. 职工信息录入功能设计与实现职工信息录入功能包括姓名、工号、岗位等信息的录入。
在界面上,通过文本框和下拉列表等来接收和展示用户输入。
用户输入完整的职工信息后,点击确定按钮将数据保存到数据库中。
3. 工资信息录入功能设计与实现工资信息录入功能包括基本工资、津贴、绩效工资等信息的录入。
在界面上,同样使用文本框等组件进行数据的输入和展示。
1.职工管理系统欢迎页面(如图1所示)该页面采用了简单大方的图片及色彩,没有太多的色彩及修饰,但是却已职员为背景核心,突出了主题,图中的向上的楼梯形式的箭头,更是激发着职员努力工作,步步高升。
图中的“您好,欢迎光临职工管理系统!”采用超链接的形式,点击后即可跳转到职工管理系统主界面。
图1该页面同样采用了简单大方的图片及色彩,以白色为主色,以职工为核新,突出了主题,图中的五名职员,体现出了以员工为主题的特色,也表达了员工之间的合作,团队精神。
右上角的三个超链接,可以在登录的同时分别实现职工首页,登录页面及注册页面,方便使用。
在迷你框中可实现已有用户的登录,下次自动登录可以方便下次登录,无需再次输入用户名和密码;如果忘记密码,点击忘记密码,即可轻松的找回,方便快捷。
图2该页面可以实现没有注册的用户的注册,只需填写自己职工号就可以实现注册,注册完信息后便可以马上登录,或者点右上角的登录,马上实现登录功能。
图3该页面可以实现员工信息的录入,浏览,查询,修改,删除以及退出功能,操作者只需点击所需功能的超链接就可以实现相应的功能,方便快捷。
图4该页面可以实现对员工信息的录入,只需按提示要求操作即可,录入无误后点击提交就可成功录入,若填写错误只需在相应的栏中修改,或者点击重置,修改全部项。
若想使用其它功能只需点击上面相应的超链接即可,轻松快捷。
图5当操作者想要浏览职工信息时,只需点击“职工信息查询功能”,页面将自动跳出查询页面,操作者只需按操作提示即可,确定后便可显示您所要查询职工的信息。
图6当操作者想要浏览职工信息时,只需点击“职工信息查询功能”,页面将自动跳出查询页面,操作者只需按操作提示即可,确定后便可显示您所要查询职工的信息。
图78.职工信息删除功能(如图8所示)当操作者想要删除职工信息时,只需点击“职工信息删除功能”,页面将自动跳出查询页面,操作者只需按操作提示即可,确定后便可删除您所要删除职工的信息。
目录一系统的背景2二系统的编译环境和语言2三系统类的设计33.1 类的对象:33.2 类的属性列表:33.3 类的行为:33.4 具体代码如下:3四系统运行入口的设计11五运行步骤13六数据文件16七参考文献16一系统的背景从事商业活动的公司迫切需要这样一个系统:它能高效的管理公司内部所有员工的个人信息,并能正确快速的对系统的使用者的操作做出回应,以提高效率,降低成本。
该系统能够满足以上的要求,使用户可以快速准确的管理公司员工的信息。
二系统的编译环境和语言该系统是采用C++语言在Turbo c下编译而成,。
因为在该系统中有明显的对象,即是公司的员工,且C++语言是一个非常强大的面向对象的语言,因此该系统使用C++编写将会简单,快速而有效。
Turbo C是一个经典且功能强大的编译器,是编译用C++语言写成的程序的首要工具。
三系统类的设计3.1 类的对象:系统有两个类:Employee :对象是公司里的每一个员工,是系统中最重要的类。
DBOperate :对象是系统的数据文件,完成对员工信息的保存和读取。
3.2 类的属性列表:Employee :员工的编号:EmployeeNum (long)员工的姓名:EmployName (string)员工所属部门:EmployeeDepart (string)员工级别:EmployeeGrade (string)员工工资:EmployeePay (float)员工工龄:EmpoyeeWorkTime (long)3.3 类的行为:Employee :添加新员工信息:NewInfo();员工信息浏览:ShowInfo();员工信息变更:RefreshInfo();发放工资:Pay(int EG);//EG为员工级别解聘员工:DeleteInfo();DBOperate :保存员工信息:WriteIn(int iflag);读取员工信息:ReadOut();更新员工总人数:RefreshMaxNum(int iflag);注释:当iflag 为1时,人数增大;为零时,人数不变,即是修改;为-1时,人数减少。
1、问题描述:对单位的职工进行管理,包括插入、删除、查找、排序等功能。
2、要求:职工对象包括姓名〔字符串〕、性别〔字符〕、出生年月〔数字〕、工作年月〔数字〕、学历〔字符串〕、职务〔字符串〕、住址〔字符串〕、〔字符串〕等信息。
〔1〕新增一名职工:将新增职工对象按姓名以字典方式职工管理文件中。
〔2〕删除一名职工:从职工管理文件中删除一名职工对象。
〔3〕查询:从职工管理文件中查询符合某些条件的职工。
〔4〕修改:检索某个职工对象,对其某些属性进行修改。
〔5〕排序:按某种需要对职工对象文件进行排序。
3、实现功能〔1〕由键盘输入职工对象,以文件方式保存。
程序执行时先将文件读入内存。
〔2〕对职工对象中的“姓名〞按字典顺序进行排序。
〔3〕对排序后的职工对象进行增、删、查询、修改、排序等操作。
4、代码:#include <stdlib.h>#include <stdio.h>#include <malloc.h>#include <string.h>typedef struct worker{int id;char name[20];char sex[3];int age;char edu[50];int wages;char adr[255];char phone[13];}WORKER, *PWORKER;//typedef struct WORKER *PWORKER;typedef struct link{WORKER w;struct link *next;}LINK, *PLINK;//typedef struct LINK *PLINK;/*创立职工信息链表*/PLINK create(){PLINK p=(PLINK)malloc(sizeof(LINK));if(NULL!=p){p->next=NULL;return p;}printf("内存缺乏!\n");return NULL;}/*显示程序界面文字*/void message(){printf("\t\t************************************************\n\n"); printf("\t\t>>>>>>>>>>>>>>欢送进入职工管理系统<<<<<<<<<<<<<<\n\n"); printf("\t\t************************************************\n\n"); printf("\t\t ************** Choose Function *************\n\n");printf("\t\t ************ 帮助请输入:0************\n\n"); printf("\t\t ************录入职工信息请输入:1************\n\n"); printf("\t\t ************浏览职工信息请输入:2************\n\n"); printf("\t\t ************查询职工信息请输入:3************\n\n"); printf("\t\t ************删除职工信息请输入:4************\n\n"); printf("\t\t ************修改职工信息请输入:5************\n\n"); printf("\t\t ************ 清屏请输入:6************\n\n"); printf("\t\t ************ 退出请输入:-1***********\n\n");printf("\t\t************************************************\n\n"); printf("\t\t************************************************\n\n"); }void find_sr(PLINK plink, char* str){for(PLINK curr = plink->next; curr != NULL; curr = curr->next){if(strcmp(curr->, str) == 0){printf("职工工号:%d\n",curr->w.id);printf("职工姓名:%s\n",curr->);printf("职工性别:%s\n",curr->w.sex);printf("职工年龄:%d\n",curr->w.age);printf("职工学历:%s\n",curr->);printf("职工工资:%d\n",curr->w.wages);printf("职工住址:%s\n",curr->w.adr);printf("职工:%s\n",curr->w.phone);}}}void findid(PLINK plink, int id){for(PLINK curr = plink->next; curr != NULL; curr = curr->next){if(curr->w.id == id){printf("职工工号:%d\n",curr->w.id);printf("职工姓名:%s\n",curr->);printf("职工性别:%s\n",curr->w.sex);printf("职工年龄:%d\n",curr->w.age);printf("职工学历:%s\n",curr->);printf("职工工资:%d\n",curr->w.wages);printf("职工住址:%s\n",curr->w.adr);printf("职工:%s\n",curr->w.phone);}}}void show(PLINK plink){for(PLINK curr = plink->next;curr != NULL; curr = curr->next){printf("职工工号:%d\n",curr->w.id);printf("职工姓名:%s\n",curr->);printf("职工性别:%s\n",curr->w.sex);printf("职工年龄:%d\n",curr->w.age);printf("职工学历:%s\n",curr->);printf("职工工资:%d\n",curr->w.wages);printf("职工住址:%s\n",curr->w.adr);printf("职工:%s\n",curr->w.phone);}}/*录入职工信息*/int add(PLINK p){PLINK h = NULL;PLINK q=(PLINK)malloc(sizeof(LINK));if(NULL==q){printf("录入失败提示:内存缺乏!\n");return -1;}printf("请输入职工号(数字):");scanf("%d",&q->w.id);h=p->next;while(h){if(h->w.id==q->w.id){free(q);printf("录入失败提示:此职工号已经存在!\n");return -1;}h=h->next;}printf("请输入职工姓名(文字):");scanf("%s",&q->);printf("请输入职工性别(文字):");scanf("%s",&q->w.sex);printf("请输入职工年龄(数字):");scanf("%d",&q->w.age);printf("请输入职工学历(文字):");scanf("%s",&q->);printf("请输入职工工资(数字):");scanf("%d",&q->w.wages);printf("请输入职工住址(文字):");scanf("%s",&q->w.adr);printf("请输入职工(数字):");scanf("%s",&q->w.phone);q->next=p->next;p->next=q;printf(".^_^.录入成功!.^_^.\n");return -1; }/*按姓名查询*/PLINK findname(PLINK p,char *name){message();printf("按姓名查询\n");printf("职工号\t姓名\t性别\t年龄\t学历\t工资\t住址\t \n");while(NULL!=p->next){if(0==strcmp(p->next->,name)){printf("%d\t%s\t%s\t%d\t%s\t%d\t%s\t%s\n",p->next->w.id,p->next->,p->next->w.sex,p->next->w.adr,p->next->,p->next->w.wages,p->next->w.adr,p->next->w.phone);return p;}p=p->next;}printf(".^_^.查询结束!.^_^.\n");return NULL;}/*按职工号删除职工信息*/int del(PLINK p,int id){message();printf("按职工号删除职工信息\n");while(NULL!=p->next){if(p->next->w.id==id){PLINK q=p->next;p->next=p->next->next;free(q);printf(".^_^.删除成功!.^_^.\n");return 1;}p=p->next;}printf("没有你输入的职工号!\n");return -1;/*程序结束释放内存*/void release(PLINK p){PLINK q;while(NULL!=p->next){q=p;p=p->next;free(q);}free(p);}/*查询调用*/void search(){int id;char name[20];char str[20];PLINK pworker;int l;printf("\t\t\t\t*姓名查找按:1*\n");printf("\t\t\t\t*学历查找按:2*\n");printf("\t\t\t\t*职工号查按:3*\n");scanf("%d",&l);if(l>0&&l<4){switch(l){case 1:printf("请输入要查询的职工姓名:");scanf("%s",name);findname(pworker,name);break;case 2:printf("请输入要查询的职工学历: ");scanf("%s", str);find_sr(pworker, str);break;case 3:printf("请输入要查询的职工号:");scanf("%d",&id);findid(pworker,id);break;}printf("\n\n选择完毕!!!");}else printf("\t\t\t\t输入有误!!!");/*修改职工信息*/int modify(PLINK p){int id;PLINK q;PLINK h = NULL;printf("请输入职工号(数字):");scanf("%d",&id);h=p->next;while(h){if(h->w.id==id){break;}h=h->next;}if (h == NULL){printf("找不到此职工,请重试\n");return -1;}printf("请输入职工姓名(文字):");scanf("%s",&h->);printf("请输入职工性别(文字):");scanf("%s",&h->w.sex);printf("请输入职工年龄(数字):");scanf("%d",&h->w.age);printf("请输入职工学历(文字):");scanf("%s",&h->);printf("请输入职工工资(数字):");scanf("%d",&h->w.wages);printf("请输入职工住址(文字):");scanf("%s",&h->w.adr);printf("请输入职工(数字):");scanf("%s",&h->w.phone);q->next=p->next;p->next=q;printf(".^_^.修改成功!.^_^.\n");return -1;}int main(){int cmd=0;int id;char name[20];char str[20];PLINK pworker;if(!(pworker=create())){exit(0);}while(cmd!=-1){switch(cmd){case 0: message(); break;case 1: add(pworker); break;case 2: show(pworker); break;case 3: search(); break;case 4: printf("请输入要删除的职工号:");scanf("%d",&id);del(pworker,id);break;case 5: modify(pworker); break;case 6: message(); break;}printf("请输入操作命令数字:\n");scanf("%d",&cmd);}printf("\t\t>>>>>>>>>>>>>>>>>>>>谢谢使用<<<<<<<<<<<<<<<<<<<<\n\n");release(pworker);return 0;}4.测试结果:5.总结:本次课程设计是围绕数据结构进行。
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. 功能需求2.1 职工信息录入系统提供一个录入界面,管理者可以输入职工的基本信息,包括职工编号、姓名、性别、年龄、职位等。
系统应该能够对输入的信息进行合法性验证,并将信息存储到合适的数据结构中。
2.2 职工信息查询系统提供一个查询界面,管理者可以根据职工的编号、姓名、职位等条件进行查询。
系统应该能够根据查询条件从数据结构中快速定位到符合条件的职工信息,并将结果展示给管理者。
2.3 职工信息修改系统提供一个修改界面,管理者可以根据职工的编号或者姓名等条件选择一个职工信息进行修改。
系统应该能够根据选择的职工信息,提供可修改的字段,并对输入的修改信息进行合法性验证,并更新数据结构中对应的职工信息。
2.4 职工信息删除系统提供一个删除界面,管理者可以根据职工的编号或者姓名等条件选择一个职工信息进行删除。
系统应该能够根据选择的职工信息,从数据结构中删除对应的职工信息,并给出相应的提示。
3. 数据结构设计为了高效地管理职工信息,我们可以采用链表作为基本的数据结构。
每一个节点表示一个职工信息,包括职工编号、姓名、性别、年龄、职位等字段。
节点之间通过指针进行连接,形成一个链表结构。
3.1 链表节点设计每一个链表节点包含以下字段:- 职工编号(int)- 姓名(string)- 性别(string)- 年龄(int)- 职位(string)- 指向下一个节点的指针(Node*)3.2 链表操作设计- 初始化链表:创建一个空链表,并初始化头节点指针为NULL。
- 添加节点:根据输入的职工信息创建一个新节点,并将其插入到链表的合适位置。
- 删除节点:根据职工的编号或者姓名等条件,找到对应的节点,并将其从链表中删除。
程序设计实习实验报告班级:信A0812学号: 25姓名:万明指导老师:周小雄2010-2011第1学期实验员工管理系统班级:信A0812 学号:25 姓名:万明指导教师签名:__________ 成绩:__________ 一、问题描述设计一个计算机程序,能够实现简单的员工管理功能。
设计要求:1.每个员工的信息包括:编号、姓名、性别、出生年月、学历、职务、电话、住址等。
2.系统的功能包括:(1)查询:按特定条件查找员工。
(2)修改:按编号对某个员工的某项信息进行修改。
(3)插入:加入新员工的信息。
(4)删除:按编号删除已离职员工的信息。
(5)排序:按特定条件对所有员工的信息进行排序。
二、算法说明1.算法功能(1)采用结构体WORKER来存储员工的相关信息,定义一个由结构体组成的链表来实现对多个员工信息的存储,以及插入、删除、修改等操作。
(2)注册新员工信息:采用链表的操作,向链表接点的前一个接点插入信息。
(3)查询、修改:采用链表的操作进行信息的查找,找到后可以进行修改覆盖原来的内容。
(4)删除:按链表的操作进行,按关键字找到相应的接点,然后删除此接点的前一个接点即可。
(5)排序:按照员工的工号升序排序,采用冒泡排序法,并且交换所有信息。
2.函数说明Link Create(Link Head);//创建链表void Release(Link Head);//释放链表空间Link Search(Link Head);//按条件查找链表节点Link Searchbywno(Link Head);//按员工号查找员工信息Link Updata(Link Head);//修改员工信息Link Insert(Link Head);//插入员工信息Link Del(Link Head);//删除退休员工的信息Link rankbywno(Link Head);//按员工号将员工排序void Display(Link Head);//查找链表所有节点void Display_Node(Link pNode);//显示链表节点的信息Link Searchwithoutprint(Link Head);//查找链表节点的信息但是不用输出3.数据结构说明struct worker//定义员工结构体链表来存储员工的信息{int wnum;//工号char name[15];//姓名char sex[4];//性别char age[12];//出生年月char post[6];//学历char job[10];//职位unsigned int telnum;//电话号码char add[23];//家庭地址struct worker *next;定义下一个接点};typedef struct worker Node;typedef Node *Link;//定义链表节点三、测试结果第一组测试:(1):测试目的:注册新信息并显示出来。
人力资源高校教职工人事管理系统人力资源高校教职工人事管理系统是一个全面的人事管理软件,旨在帮助高校对教职工进行全方位的管理与掌控。
这个系统具有极高的可定制性,可以根据学校自身的需求进行使用。
本文将详细探讨该系统的功能和优势。
一、系统概述该系统是一个综合性的管理系统,主要包括五大模块:人事档案管理、招聘管理、考核管理、培训管理和统计报表。
这五个模块涵盖了一个完整的人事管理过程,从教职工入职到退休,都可以在系统中找到对应的管理功能。
人事档案管理模块是系统的核心,它主要用于存储教职工档案信息,包括个人基本信息、工作经历、学历、职称、奖惩记录等。
这个模块是其他模块的基础,也是教育管理工作中最重要的一环。
招聘管理模块主要用于对新员工的招聘管理。
它可以自动发布招聘信息、筛选简历、排除不符合条件的应聘者等等。
用户可以自定义岗位发布招聘信息,通过系统筛选符合条件的人选,减轻人工管理的负担。
考核管理模块可以帮助学校对教职工的绩效进行全面评估,通过设定考核标准、制度和流程,使教职工的考核过程更加规范化和公正。
系统可以自动生成评估报告,进行数据分析和绩效总结。
培训管理模块是用于教职工的培训管理。
它可以帮助学校制定培训计划、安排培训课程、跟踪教职工学习进度等。
同时可以根据需要制作在线视频课程,实现在线学习和考核。
统计报表模块可以帮助学校查看各项教育管理数据指标,如人数、年龄结构、职称结构等,还可以按照不同的指标进行对比分析。
它可以帮助决策者更好地洞察学校的人力资源状态,为人力资源的规划提供基础数据。
二、系统优势1.提高工作效率。
通过这个系统,学校可以实现对人员信息的集中管理和共享。
它可以减少繁琐的手工操作,提高工作效率和准确性,节约管理成本。
2.加强信息安全性。
该系统对教职工的个人信息进行了加密处理,仅授权人员能够查看。
对于一些敏感信息,用户可以自行设定访问权限,提高教育管理的信息安全性。
3.提高管理的透明度。
这个系统可以让上下管理层之间的信息沟通透明化,让教育管理工作的各个方面更加清晰明了。
教职工管理系统课程设计一、课程目标知识目标:1. 学生能理解教职工管理系统的基本概念,掌握其功能模块和工作原理。
2. 学生能掌握数据库管理的基本操作,如增加、删除、修改和查询教职工信息。
3. 学生能了解系统开发的基本流程,掌握与教职工管理系统相关的编程语言和开发工具。
技能目标:1. 学生能运用所学知识,设计并实现一个简单的教职工管理系统。
2. 学生能运用数据库管理技能,对教职工信息进行有效管理。
3. 学生能通过团队协作,解决系统开发过程中遇到的问题,提高沟通与协作能力。
情感态度价值观目标:1. 学生能培养对信息技术的兴趣和爱好,增强学习动力。
2. 学生能认识到信息技术在管理领域的应用价值,提高社会责任感。
3. 学生能在团队协作中学会尊重他人、倾听意见,培养良好的团队合作精神。
课程性质分析:本课程为信息技术课程,旨在让学生掌握教职工管理系统的设计与实现方法,培养其信息技术应用能力和团队协作能力。
学生特点分析:学生处于高年级阶段,具有一定的信息技术基础和编程能力,具备自主学习与合作探究的能力。
教学要求:1. 结合教材内容,注重实践操作,提高学生的动手能力。
2. 强化团队合作,培养学生的沟通与协作能力。
3. 关注学生个体差异,因材施教,确保每个学生都能达到课程目标。
二、教学内容1. 教职工管理系统概述- 了解系统的基本概念、功能模块和工作原理- 分析系统在实际应用中的优势与局限2. 数据库管理基础- 学习数据库的基本概念、数据模型和数据表设计- 掌握SQL语言进行数据增加、删除、修改和查询操作3. 系统开发流程与工具- 了解系统开发的基本流程,包括需求分析、设计、编码、测试等- 学习相关编程语言(如Java、Python等)和开发工具(如Eclipse、Visual Studio等)4. 教职工管理系统设计与实现- 分析系统需求,设计系统功能模块和数据库结构- 编写代码实现系统功能,如用户登录、信息录入、查询、修改等5. 系统测试与优化- 学习系统测试的方法和技巧,确保系统功能的正确性和稳定性- 分析系统性能,提出优化措施,提高系统运行效率6. 团队协作与沟通- 培养团队协作能力,明确分工与责任- 学习有效沟通的技巧,提高项目推进效率教学内容安排与进度:第1-2周:教职工管理系统概述、数据库管理基础第3-4周:系统开发流程与工具、教职工管理系统设计与实现第5-6周:系统测试与优化、团队协作与沟通教材章节关联:本教学内容与教材中关于数据库应用、系统设计与实现、团队协作等相关章节紧密关联,确保学生能够系统地掌握教职工管理系统的开发与应用。
第一章绪论1.1 研究的内容随着计算机和网络技术的广泛应用,人事档案管理已成为现代企业管理中必不可少的一部分.企业要发展必须要对人事方面做出更好的管理和控制,为适应现代企业制度管理的要求,实现企业劳动人事档案管理的科学化和规范化,以更好的促使企业的发展的需要,从而提出了企事业单位人事档案管理系统的开发的课题来对企业进行科学现代化的管理.1。
2 研究的软硬件环境企事业单位人事档案管理工作是一种繁琐,务求准确的信息检索工作.特别是在对在岗人员的调动,离退人员,工资发放,职称评定等信息的管理,具有典型的信息处理管理模式。
以PowerBuilder 为设计工具以更好的对软件进行开发与应用,达到提高企事业业单位人事档案管理信息系统的效果。
第二章系统需求分析2。
1 系统开发战略本系统开发主要采用自顶向下的开发方式,自顶向下的方法模型如下图所示::通过以上分析,企业职工管理系统有基础的信息管理模块,职工管理模块、备忘记录。
数据库模块组成。
2.2。
1 需求分析的任务需求分析的任务是通过详细的调查现实世界要处理的对象(组织、部门、企业等),充分了节原系统(手工系统或计算机系统)工作概况,明确公司的各种需求,然后再此基础之上确定新的功能。
调查的重点是“数据”和“处理”,通过调查收集与分析,获得企业对数据库如下要求: (1)信息要求。
指公司需要从数据库中获得信息的内容和性质.即需要在数据库当中存储哪些数据。
(2)处理要求。
指公司要完成什么样的处理功能,对处理的时间有什么要求,处理方式是批处理还是联机处理。
(3)安全性与完整性要求。
设计人员必须具备专业的知识,不断了解公司的需求需要。
了解公司,深入与公司人员进行交流,才能逐步满足公司的实际需求。
2.2。
2 需求分析的方法进行需求分析首先是调查清楚该公司的实际要求,与公司达成共识,然后分析和表达这些需求。
调查公司的具体步骤如下:(1)调查组织机构情况。
(2)调查个部门的业务状况(3)在熟悉业务的基础之上,协助用户明确对新系统的各种要求,包括信息要求、用户要求、安全性与完整性要求,这是调查的又一重点.(4)确定新系统的边界。
企业人员信息管理系统小组成员崔亚兵SY0906328钟祥宜SY0906606陆启超SY0906611高永安SY0906721刘超ZY090610610/30/2009用户需求规格说明1概述本系统是一个企业人员管理系统。
随着经济的飞速发展,企业的发展速度越来越快,随着企业的不断壮大,工作人员的数量规模也不同以往,关于人员的信息量也是与日俱增的。
好的企业会非常注重人员的管理,人员信息的管理就是其中重要的一项。
当前的小企业大多没有信息管理系统,而大企业的信息管理系统可能由于使用年限久远从而已经不能满足企业当前的需要,信息管理系统的更新换代迅速。
因此,快速开发一个结构简单、满足现有功能需要、易于使用的企业人员管理系统对于现代化的企业管理就显得至关重要。
该系统用于管理企业日常工作,针对企业的实际规模量身定制,旨在真正提高企业信息化管理水平,提高工作效率,降低管理成本,全面实现管理的标准化和信息化。
2 产品面向的用户群体本系统为了方便企业对员工进行统一管理、安排而专门开发的企业级应用系统。
主要解决部门管理、职工调动、出入证管理、劳务费管理等一系列信息处理工作。
不同的用户可以通过不同权限的帐户进行登录系统,根据权限的不同,所能执行的操作范围也不尽相同。
用户群体为企业员工,可分为管理员与一般访问者。
3 产品的业务需求本系统主要针对查看员工的各种信息需求所设计的,可以很好的管理数据。
因此,包括以下相关内容:部门管理:功能:部门的添加、修改、删除。
对任意部门内所有员工的信息进行查询。
输入:部门的信息,包括部门的名称,地点等输出:该部门员工的信息,包括员工的姓名、性别、政治面貌、职位等用例:新建或者修改一个部门,写入该部门的信息:名称“人事部”,地点“人事办公室”。
查询该部门的员工情况,点击查询,输入该部门名称,输出该部门所有员工的信息:姓名“张三”,性别“男”,政治面貌“党员”,职位“人事部经理”,状态“在职”,入职日期“1999年9月”。
职工管理系统课程设计报告一、项目背景随着信息技术的迅速发展,企业对于职工管理系统的需求日益增长。
职工管理系统作为一种集成化的管理工具,可以帮助企业高效地管理员工信息、薪资福利等相关数据,提升管理效率、节省人力成本。
本课程设计旨在通过开发一个职工管理系统来帮助学生深入理解管理信息系统的基本原理和应用。
二、项目目标本项目旨在设计并实现一个功能完善的职工管理系统,主要包括以下目标: 1. 实现职工信息的录入、修改和查询功能; 2. 实现薪资福利的管理和计算功能; 3. 实现权限管理和安全控制功能; 4. 提升系统的用户友好性和操作性; 5. 实现系统的数据备份和恢复功能。
三、系统需求分析3.1 功能需求1.职工信息管理模块:包括职工信息的录入、修改和查询功能;2.薪资福利管理模块:包括薪资发放、津贴计算等功能;3.权限管理模块:包括用户权限分配和访问控制功能;4.数据备份模块:包括定期数据备份和恢复功能。
3.2 非功能需求1.用户友好性:系统界面简洁明了,操作简单易懂;2.数据安全性:系统应具有良好的数据加密和权限控制机制;3.稳定性:系统应具有一定的容错能力,能够稳定运行。
四、系统设计与实现4.1 系统架构设计本系统采用B/S架构,前端使用HTML、CSS、JavaScript等技术开发,后端采用Java语言搭建,数据库采用MySQL存储数据。
4.2 模块设计1.职工信息管理模块:包括职工信息的增删改查功能;2.薪资福利管理模块:包括薪资发放、津贴计算等功能;3.权限管理模块:包括用户权限分配和访问控制功能;4.数据备份模块:包括数据备份和恢复功能。
4.3 系统界面设计系统界面简洁明了,采用响应式设计,适配不同大小屏幕的设备,提供友好的用户交互体验。
五、系统测试与维护5.1 系统测试系统测试包括单元测试、集成测试、系统测试和用户验收测试,确保系统功能正常、性能稳定。
5.2 系统维护系统上线后需要定期进行数据备份、安全检查和性能优化,确保系统稳定运行。
职工信息管理系统
职工信息管理系统是一个用于管理和维护企业职工信息的
软件系统。
它可以帮助企业对职工信息进行录入、存储、
查询和统计分析,实现对职工信息的全面管理。
职工信息管理系统的主要功能包括:
1. 职工信息录入:包括基本信息(姓名、性别、出生日期、联系方式等)、工作信息(职位、部门、岗位等)和薪资
信息等的录入。
2. 职工信息查询和浏览:可以根据不同条件进行职工信息
的查询和浏览,如根据姓名、工号、部门等。
3. 职工信息修改和删除:可以对职工信息进行修改和删除
操作,保证职工信息的准确性和及时更新。
4. 职工信息统计和报表:可以根据不同的要求进行职工信息的统计分析,并生成相应的报表,如部门人数统计、工资统计等。
5. 权限管理:可以设定不同用户的权限,实现对职工信息的安全管理和访问控制。
6. 数据备份和恢复:可以对职工信息进行定期的备份,确保数据的安全性,同时在需要时可以进行数据恢复操作。
以上是一个简单的职工信息管理系统的功能描述,实际的系统可能还包括其他功能模块,根据具体的需求进行定制开发。
简单的职工管理系统#include<stdio.h>#include<stdlib.h>#include<ctype.h>#include<string.h>typedef struct //,,,,?,,?,,,,壬(,,,,,,,,,,,,,,?,,,,,,,,?,,?,?,,,?,,,, {char name[20];//,,,,char sex[4]; //,,,int birthday; //,,,,,,,,int year; //,,,,,,,,char degree[8]; // ,,///,,,?,,?,?,,,,,char position[30]; //?,,///,,,?,,,?,?,,,,,,,?,,char address[30]; // ,,?///?,,,?,,,ô,,,,,?,,,,,,char phone[15]; //,,///}employee;employee emp[80]; ///,,,,,,,,,,,,,"struct"?int menu_select() //,,,,,,,{char c;do{printf("?,,,,,,,\n"); //,,,,,??printf(" | 1. Input Records \n");printf(" | 2. Display All Records |\n");printf(" | 3. Sort |\n");printf(" | 4. Insert a Record |\n");printf(" | 5. Delete a Record |\n");printf(" | 6. Query |\n");printf(" | 7. Change |\n");printf(" | 0. Quit |\n");printf("Give your Choice(0-7):");c=getchar(); //,,,,,, ?}while(c<'0'||c>'7');return(c-'0'); //,,,,,,?}int Input(employee emp[],int n) //,,,,,,,,,,?{int i=0;char sign;do{printf("employee's name:\n"); //,,,,,,,,scanf("%s",&emp[i].name);///û"employee",,,,?,,"emp",,,,,,,?,,,,,,,,,,,, printf("employee's sex:\n");scanf("%s",&emp[i].sex); ///printf("employee's birthday:\n");scanf("%d",&emp[i]. birthday);///printf("employee's year:\n");scanf("%d",&emp[i].year); ///printf("employee's degree:\n");scanf("%s",&emp[i].degree);///printf("employee's position:\n");scanf("%s",&emp[i].position);///printf("employee's address:\n");scanf("%s",&emp[i].address);///printf("employee's phone:\n");scanf("%s",&emp[i].phone);///printf("any more records?(Y/N)\n");getchar();sign=getchar();//,,,,,ж,///,,?,,,,,У,,,,,,,,,,,,,,4,, i++;} while(sign!='n'&&sign!='N'); //,ж,return n+i;}Display(employee emp[],int n)//,,,,,,м,?{int i;printf(",,,,,?\n");for(i=0;i<n;i++)//,,,,,,///,,,,,,,,,,,,,,?,,,,{printf("num:\t\t%d\n",i+1);printf("name:\t\t%s\n",emp[i].name);printf("sex:\t\t%s\n",emp[i].sex);printf("birthday:\t%d\n",emp[i].birthday);printf("year:\t\t%d\n",emp[i].year);printf("degree:\t\t%s\n",emp[i].degree);printf("position:\t%s\n",emp[i].position);printf("phone:\t\t%s\n",emp[i].phone);}}void Sort_by_name(employee emp[],int n) /*,,,,,,,,*/ ? {int i,j;employee t;///,м,,,?,,,,?,,,,,,,??for(i=0;i<n-1;i++) /*ð,,,,,,,*/for(j=0;j<n-1-i;j++)if(strcmp(emp[j].name,emp[j+1].name)>0){strcpy(,emp[j+1].name); //,,,,,,,,strcpy(emp[j+1].name,emp[j].name);strcpy(emp[j].name,);strcpy(t.sex,emp[j+1].sex); //,,,,,,,strcpy(emp[j+1].sex,emp[j].sex);strcpy(emp[j].sex,t.sex);t.birthday=emp[j+1]. birthday;//,,,,,,,,,,,emp[j+1].birthday=emp[j].birthday;emp[j].birthday=t.birthday;t.year=emp[j+1].year; //,,,,,,,,emp[j+1].year=emp[j].year;emp[j].year=t.year;strcpy(t.degree,emp[j+1].degree); //,,?strcpy(emp[j+1].degree,emp[j].degree);strcpy(emp[j].degree,t.degree);strcpy(t.position,emp[j+1].position); //?,,strcpy(emp[j+1].position,emp[j].position);strcpy(emp[j].position,t.position);strcpy(t.address,emp[j+1].address); //??strcpy(emp[j+1].address,emp[j].address);strcpy(emp[j].address,t.address);strcpy(t.phone,emp[j+1].phone); // ,,strcpy(emp[j+1].phone,emp[j].phone);strcpy(emp[j].phone,t.phone);}}int Insert_a_record(employee emp[],int n) /*,,,,?,,,?*/ {printf("employee's name:\n");scanf("%s",&emp[n].name); ///i,?,n,,,,,,?,,printf("employee's sex:\n");scanf("%s",&emp[n].sex); ///printf("employee's birthday:\n");scanf("%d",&emp[n]. birthday);///printf("employee's year:\n");scanf("%d",&emp[n].year); ///printf("employee's degree:\n");scanf("%s",&emp[n].degree);///printf("employee's position:\n");scanf("%s",&emp[n].position);///printf("employee's address:\n");scanf("%s",&emp[n].address);///printf("employee's phone:\n");scanf("%s",&emp[n].phone);///n++;Sort_by_name(emp,n); /*,,,,,,,,,,*/printf(",,,,,,,?\n"); /*,,,??,,,,*/ ?return(n);}int Delete_a_record(employee emp[],int n) /*,,,,,,,,?,,,?,,,?*/ ?{ char s[20];int i=0,j;printf(",,,,,,,,,,:\n"); /*,,,,,,,*/ ?scanf("%s",s);while(strcmp(emp[i].name,s)!=0&&i<n) i++; /*,,,,,ж,*/if(i==n){printf("δ,,,,\n"); /*,,,,,,,,,*/ ??return(n);}for(j=i;j<n-1;j++) /*,,,,,*/ ?{///,,,,"stud",,,,"emp",,,,,,,,,?,,,,,,?,,,?,,,,,,,,,,,,,,?,,,,,,4,?, strcpy(emp[j].name,emp[j+1].name);strcpy(emp[j].sex,emp[j+1].sex);emp[j].birthday=emp[j+1].birthday;emp[j].year=emp[j+1].year;strcpy(emp[j].degree,emp[j+1].degree);strcpy(emp[j].position,emp[j+1].position);strcpy(emp[j].address,emp[j+1].address);strcpy(emp[j].phone,emp[j+1].phone);}printf(",,,,!\n"); /*,,,???,,,,*/ ?return(n-1);}void Query_a_record(employee emp[],int n) /*,,,?,,,,?,,,?*/{char s;int i=0;printf(",,,,,,, ,,,,:m ?,,:w \n"); /*,,,,,,,,,*/scanf("%s",s);while(strcmp(emp[i].sex,s)!=0&&i<n) i++; /*,,,,,ж,*/if(i==n){printf("δ,,,,,,?!\n"); /*,,,,,,,,,*/ ??return;}printf("%s\t\t%s\t\t%d\t\t%d\t\t%s\t\t%s\t\t%s\t\t%s\n",emp[i].name, \emp[i].sex,emp[i].birthday,emp[i].year,emp[i].degree,emp[i].position ,emp[i].address,emp[i].phone);}void Change_a_record(employee emp[],int n) //,,,,?,,,?,?,?{char s[20], c, m; ///,,,?,,"s",,?"c" ?int i=0;printf(",,,,,,,,,,:\n"); /*,,,,,,,*/ ?scanf("%s",s);while(strcmp(emp[i].name,s)!=0&&i<n) i++; /*,,,,,ж,*/if(i==n){printf("δ,,,,\n"); /*,,,,,,,,,*/ ??return(n);}printf(",,,,,,,?,?,,,, ,,d? ?,,p ??,,a ,,,,t\n");c=getchar();printf(",,,,,,,,?,,,,,:\n");scanf("%s",&m);switch(c){case 'd': strcpy(emp[i].degree,m); break;///,?,,,,,,,?,,,,,,,,,??? case 'p': strcpy(emp[i].position,m); break;case 'a': strcpy(emp[i].address,m); break;case 't': strcpy(emp[i].phone,m); break;default: printf(",,,,,,,!\n");}}void main() /*,,,,*/{int n=0;for(;;){switch(menu_select()) /*,,,ж,*/ ?{case 1:printf("Input Records\n"); /*,,,,,,,,,,?*/n=Input(emp,n);break;case 2:printf("Display All Records\n"); /*,,,,,,м,?*/ Display(emp,n);break;case 3:printf("Sort\n");Sort_by_name(emp,n); /*,,,,,,,,,,*/printf("Sort Suceessed!\n");break;case 4:printf("Insert a Record\n");n=Insert_a_record(emp,n); /*,,,,?,,,?*/break;case 5:printf("Delete a Record\n");n=Delete_a_record(emp,n); /*,,,,,,,,?,,,?,,,?*/? break;case 6:printf("Query\n");Query_a_record(emp,n); /*,,,?,,,,?,,,?*/ break;case 7:printf("Change\n");Change_a_record(emp,n); /*,,,,,,,,,,,,,,,,*/break;case 0:printf("Have a Good Luck,Bye-bye!\n"); /*,,,,,,,*/ exit(0);}}}。