人事管理系统SQLDELPHI7课程设计报告.doc
人事管理系统数据库SQL_课程设计<报告>A:摘要:为了能设计一个提高人事系统工作效率管理系统,使其人事信息可以规范化管理、并且能够实现科学统计人事资料,重要的是能够快速查询,减少管理方面的工作量.特用SQL Server设计一个人事管理系统,旨在体会其在现实生活中的应用.1、该系统的基本功能:Ø 员工各种信息的输入,包括员工的基本信息、学历信息、婚姻状况信息、职称等.Ø 员工各种信息的修改;Ø 对于转出、辞职、辞退、退休员工信息的删除;Ø 按照一定的条件,查询、统计符合条件的员工信息;包括每个员工详细信息的查询、按婚姻状况查询、按学历查询、按工作岗位查询等,同时也可实现按学历、婚姻状况、岗位、参加工作时间等统计各自的员工信息;2、数据库中所包含下列数据表:Ø 用户基本信息表用户名,用户号,密码,权限Ø 员工基本信息表个人基本信息,进入公司时间,员工级别,基本工资,所在部门等;Ø 员工家庭情况表,反映员工的家庭信息;Ø 员工学历信息表,反映员工的学历、专业、毕业时间、学校、外语情况等;Ø 企业工作岗位表,反应基本的名称所属部门信息;Ø 企业部门信息表.反应部门名称等基本信息.3、设计环境:先导课程为:数据库系统概论.设计环境和开发工具:操作系统: WindowsVista数据库管理系统:MySQL开发工具: JavaB:目录:目录1 摘要22 需求分析42.1 业务需求分析42.2 功能需求42.3 数据需求42.4 数据字典53 数据库结构概念结构设计63.1 数据结构和数据项63.2 思维图73.3 E-R图84 数据库逻辑结构设计95 数据流程与程序结构框图125.1 程序结构框图125.2 数据流程图135.3 数据流定义145.4 数据存储定义145.5 主要处理过程156 程序源代码与其说明总结166.1 部分原代码166.2 实验数据输入186.3 图片展示217 总结238 致谢语249参考文献24C:需求分析:C.1业务需求分析背景资料:随着公司的规模不断扩大,员工的数量急剧增加,有关员工的各种信息也成倍增长.面对庞大的信息量,一个好的人事管理系统可以提高公司人事管理工作的效率.通过这样的系统,可以做到信息的规范管理、科学统计和快速查询,从而减少管理方面的工作量.为公司和员工带来便利.C.2功能需求在数据操作界面要有用户登陆窗口和信息操作<修改,删除,查询>窗口 功能列表编号功能名称功能说明1.1用户登陆用户输入用户名和密码登陆系统1.2用户添加添加用户和对你添加的用户权限进行设定1.3添加用户添加新的用户1.4删除用户删除已有的用户息2.1员工信息管理查询员工的基本信息,修改员工的基本信息2.2部门信息管理查询修改部门的基本信息2.3工作岗位信息管理对工作岗位进行相关操作C.3数据需求系统处理的对象有大致:a:用户信息:用户名,密码,权限.b:员工信息:员工进入公司的时间、员工级别、员工的基本工资、员工所在部门和员工的其他基本信息等c:工作岗位信息:岗位名称,岗位级别,工资范围,所属部门等d:公司部门信息:部门信息,负责人等C.4数据字典数据项名称数据项描述数据项类型主码User_ID用户编号intUser_Name用户#char<20>Password用户密码char<20>Popedom用户权限char<20>允许为空D_Number部门编号Char<4>D_Name部门名称char<20>D_Count部门所含岗位数intD_Chief部门负责人intP_Name岗位名称char<20>P_Number岗位编号intP_Rank岗位级别char<20>P_Department所属部门char<20>P_Count岗位人数intP_Wage工资范围max&minintE-Number员工编号intE_Name员工#char<30>E_Sex员工性别char<2>E_BornDate员工出生日期char<30>E_Marriage员工婚姻状况char<4>E_PoliticsVisage员工政治面貌char<20>E_Phoen员工联系 intE_SchoolAge员工学历char<20>E_Specialty员工专业char<20>E_Graduate员工毕业时间char<30>E_School员工毕业学校char<20>E_FL员工外语情况char<20>E_EnterDate员工进入公司时间char<30>E_InDueFormDate员工转正时间char<30>E_Department员工部门char<20>E_Headship员工职务char<20>E_Estate员工状态char<10>E_Remark员工备注char<500>E_Rank员工级别char<20>E_BassicWage员工基本工资intE_Family员工家属#char<20>E_Address员工住址char<20>E_Relation与员工关系char<20>D:数据库概念结构设计:通过需求分析,可确定系统的数据项和数据结构如下:1:用户基本信息表User:#,编号,密码,权限2:员工基本信息表Employment:#,编号,性别,婚姻状况,进入公司时间,转正时间,部门, 职务,状态,备注,级别,基本工资3:员工家庭信息表Family:编号,出生年月,联系 ,住址,家属#,与员工关系4:员工学历信息表Schooling:编号,毕业学校,毕业专业,学历,毕业时间,外语情况,政治面貌5:企业工作岗位表Post:名称,编号,级别,所属部门,工资mix,工资min6:企业部门信息表Department:名称,编号,所含岗位数,部门负责人概念结构设计E-R模型:上幅图是指:如果用户有"只限浏览权",则只能对部门表浏览,以此类推思维图下幅是各实体之间的E-R图:E-R图上幅图是完整的E-R图:用户的数据基本信息不含在这个E-R图中,因为,用户只是一个窗口,当他满足某些条件,才能进入者个关系模式,并进行相应的操作,如果他不满足程序所要求的任何条件,这个关系模式对其是屏蔽的,用户数据也有其自个儿数据库,但是我在这个课程设计没有主要讨论,用相应的编程让其和E-R相联系起来.E:数据库逻辑结构设计:a:用户基本信息表UserUser_NameUser_IDPasswordPopedom浏览Popedom查询Popedom统计Popedom更新总理101001*×××总理201002*×总理301003*负责人102001*××负责人202002*××负责人302003*×××管理人103001*管理人203002*××管理人303003*×××···········*××···········*××b:员工基本信息表EmploymentE_NameE-NumberE_SexE_MarriageE_EnterDateE_InDueFormDateE_Department01000001女未婚A02000003女已婚B03000004女已婚2008.12.29C04000002女未婚D···········································································································接上:E_HeadshipE_EstateE_RemarkE_RankE_BassicWageA01001在职无16000B02003在职无25000C01001不在职休假34000D01001在职无45500····························c:员工家庭信息表Family:E-NumberE_BornDateE_PhoenE_AddressE_FamilyE_Relation01000001良乡马*姐姐02000003海淀刘*妈妈03000004朝阳*04000002顺义*d:员工学历信息表SchoolingE-NumberE_SchoolE_SpecialtyE_SchoolAgeE_GraduateE_FLE_PoliticsVisage01000001工商软件工程本科西班牙语党员02000003工商软件工程本科英语党员03000004工商软件工程研究生法语团员04000002工商软件工程本科英语团员*e:企业工作岗位表Post:P_NameP_NumberP_RankP_DepartmentP_CountP_Wage<mix>P_Wage<min>CEOA010011A3100006000总监B020032B5100005000组长C010013C280004000部长D010014D180005000*f:企业部门信息表Department:D_NameD_NumberD_CountD_Chief管理A1001000001培训B502000003销售C803000004财务D2004000002设计E9*开发F12*F:数据流程与程序结构框图:1:以上是程序结构图D1 员工档案P1档案管理员工D6 管理人员记录管理员情况P6安全管理管理员工资查询发工资P4工资管理D4 工资记录员工员工情况上级员工P3调动管理D3 职务调动记录上级员工对应编号P2岗位管理D2 岗位记录员工调动用户身份用户身份用户身份部门情况P5部门管理D5 部门记录上级工资在档案表里调动在档案表里2:以上是数据流程图图中虚线表示的数据流是员工信息1主要的数据流定义1数据流名称:员工情况位置:员工P1.定义: 员工情况=#+编号+性别+婚姻状况+部门+基本工资+职务······ .说明:要对每一位被聘用的新员工进行唯一编号.2数据流名称:调动情况位置:P3员工定义: 调动情况=员工号+调动前职务+调动后职务+调动日期.说明:员工号和调动日期备注可以唯一确定一个调动情况.3数据流名称:工资查询位置:P4员工定义: 工资查询=员工号+基本工资.说明:根据员工号可以唯一确定一个工资记录.4数据流名称:管理员情况位置:管理员P6定义: 用户身份=员工编号.说明:要对每一位管理员建立唯一的账号.5数据流名称:用户身份位置:安全管理P1,·······定义: 用户身份= 负责人 | 总理 | 管理人|······说明:不同的用户身份对应不同的操作权限,对应着不同的安全级别.6数据流名称:部门情况位置:上级部门情况定义: 部门情况=部门号+部门名称+负责人编号说明:部门号是主码.2主要的数据存储定义1数据存储编号:员工记录 D1输入:P1输出:P1,P3,P4,P5,P6数据结构:员工记录=#+性别+婚姻状况+基本工资+职务+部门 +员工编号.存取方式:检索和更新.说明:员工编号具有唯一性和非空性;性别只能是男或女;主码是员工编号.2数据存储编号:管理人员记录 用户D6 输入:P6输出:P6数据结构:管理人员记录=用户号+密码+账号+权限.存取方式:检索和更新;以检索操作为主.说明:主码用户设为账号.3数据存储编号:部门记录 D5输入:P5输出:P5数据结构:部门记录=部门号+部门名称+负责人+所含岗位数.存取方式:检索和更新;以检索操作为主.说明:主码设为部门号.3主要的处理过程1处理过程编号:P1处理过程名:档案管理输入:用户身份,员工记录,员工情况输出:员工记录处理说明:根据员工的聘用、解聘建立或删除员工记录,以与在后续的过程中,以管理员身份对员工的记录进行修改.2处理过程编号:P4处理过程名:工资管理输入:用户身份,工资记录输出:工资记录,工资查询处理说明:根据员工目前的工资情况,进行调薪的操作.3处理过程编号:P3处理过程名:调动管理输入:用户身份,职务调动记录输出:职务调动记录,调动情况处理说明:更改员工的职务信息.4处理过程编号:P6处理过程名:安全管理输入:管理员情况输出:D6, P1处理说明:建立管理人员用户记录表;通过用户名和口令,确认用户身份,保证系统安全性.5处理过程编号:P5处理过程名:部门管理输入:部门情况,部门记录输出:部门记录处理说明:根据上级的调度,对现在公司的部门进行领导人的调换,或者是增加或删除某一部门.G:程序源代码与其说明:部分create database HAMS /*HAMS:人事管理系统human affairs manage system*/on primary< name= HAMS, filename='D:MySQLMYR_ HAMS.mdf', size=10, filegrowth=10%, maxsize=50 >log on< name= HAMS _Log, filename='D:SQL HAMS_Log.ldf', size=5, filegrowth=10%, maxsize=10>gocreate table Department<D_Number Char<4> primary key,D_Name Char<20> not null,D_Count int not null,D_Chief int not null,>gocreate table User<User_IDint primary key,User_Name Char<20> not null,Password Char<20> not null,Popedom<浏览> Char<2>,Popedom<查询> Char<2>,Popedom<统计> Char<2>,Popedom<更新> Char<2>,>gocreate table Employment<E_Name Char<30> not null,E-Numberint primary key,E_Sexchar<2> not null,E_Marriagechar<4>,E_EnterDatechar<30>,E_InDueFormDate char<30>,E_Department char<20> not null,E_Headshipchar<20> not mull,E_Estate char<10> ,E_Remark char<500>,E_BassicWage int,E_Rankint not null,>gocreate table Family<E-Number int primary key,E_BornDatechar<30>,E_Phoen int,E_Address char<20>,E_Family char<20>,E_Relationchar<20>,>gocreate table Schooling<E-Number int primary key,E_School char<20>,E_Specialtychar<20>,E_SchoolAge char<20>,E_Graduatechar<30>,E_FLchar<20> not null, E_PoliticsVisagechar<20>>gocreate table Post<P_Numberint primary key,P_Name char<20> not null,P_Rankint,P_Department char<20>,P_Count intnot null,P_Wagemax intnot null, P_Wagemin int not null,>go/*索引的建立*/create uniqe index D_Chief _index onDepartment <D_Chief>create index E_BassicWage_index on Employment <E_BassicWage>create index E-Number_index on Employment<E-Number ASG>create cluster index User_ID_index on User<User_ID >go实验数据的输入MySQL上建立的"HAMS"数据库,输入少量的实验数据.一:insert into Uservalues<'01001','总理1','123456','','×', '×','×'>insert into Uservalues<'01002','总理2','654321','',', '','×'>insert into Uservalues<'01003','总理3','567890','','', '',''>insert into Uservalues'02001','负责人1','098765','','', '×','×'>insert into Uservalues<'02002','负责人2','811253','','×', '','×'>insert into Uservalues<'02003','负责人3','352118','','×', '×','×'>insert into Uservalues<'03001','管理人1','111222','','', '',''>insert into Uservalues<'03002','管理人2','3333444','','', '×','×'>insert into Uservalues<'03003','管理人3','888999','','×', '×','×'>二:insert into Employmentvalues<'*', '01000001','女','未婚','','', ' A ',' A01001',' 在职','无','6000','1'>insert into Employmentvalues<'*' , '02000003','女','已婚','2008.09.12','2008.12.29', ' B ',' B02003',' 在职','无','5000','2'>insert into Employmentvalues<'*', '03000004','女','未婚','2008.09.12','2008.12.29', ' C ',' A01001',' 在职','无','4000','3'>insert into Employmentvalues<'*', '04000002','女','未婚','2008.09.12','2008.12.29', 'D ',' A01001',' 在职','无','5500','4'>三:insert into Familyinsert into Familyinsert into Familyinsert into Family四:insert into Schoolingvalues<'01000001','工商','软件工程','本科','', ' 西班牙语 ',' 党员'>insert into Employmentvalues<' '02000003','工商','软件工程','本科','', ' 英语 ','党员'>insert into Employmentvalues<'03000004','工商','软件工程','研究生','', ' 法语','团员'>insert into Employmentvalues<'04000002','工商','软件工程','本科','', '英语','团员'>五:insert into Postvalues<'CEO','A01001','1','A','3', '10000 ','6000'>insert into Postvalues<'总监','B02003','2','B,'5', '10000 ','5000'>insert into Postvalues<'组长','C01001','3','C,'3', '8000 ','4000'>insert into Postvalues<'部长','D01001','4','D','1', '10000 ','5000'>六:insert into Departmentvalues<'A','管理','10',' A01001 '>insert into Departmentvalues<'B','培训','5',' B02003'>insert into Departmentvalues<'C','销售','8',' C01001 '>insert into Departmentvalues<'D','财务','20',' D01001 '>insert into Departmentvalues<'E','设计','9',' E01008 '>insert into Departmentvalues<'F,'开发','12',' F01010 '>图片展示:H:总结:当时在数据库的设计初期,没有对人事管理系统进行准确地需求分析,导致后期设计过程中的数据库的概念设计阶段无法进行.因此,又回头重新画逻辑图,然后再修改添加,前期工作做的很麻烦,也让我深刻认识到了需求分析对于系统设计的重要性.也认识到规范化的设计流程对于后期的设计来说,是十分重要的.只有对前面的设计过程进行准确地分析,思路清晰,才能节省整个系统的开发时间.这次实验感触最深的还是老师开学时告诉我们:数据库建设是硬件、软件的结合,三分技术,七分管理,十二分基础数据.设计先不说麻烦,这个管理起初让我焦头烂额,特别是在刚开始设计时,无从下手····其实我的实验已经设计尽可能少的表了,刚开始设计时,表很多,一对多的表在整个过程中浪费了很多时间还有空间,就在好好画逻辑图,找到几个中间表和关系表联系起来,这样就只用维护这几个小表就行了,节约了不少时间.还有一个重要的东西索引!索引的创建我是在系统开发完毕,测试阶段,根据查询该表的所有SQL语句进行设计的.由于数据较少,建立之间和之后,查询速度的变化感觉不明显,但是,如果数据很多,就可以大大的加快查找速度.I:致谢语:老师在作业布置之初就强调要自己完成,诚信应该是我们必须一直坚持着这个信念. 这几个新期各种考试,时间紧,写课设的时间也相对减少了很多,但是,课设的提交时间也越来越近.这个新期除了上课,我就在图书馆写课设,我的课设准备时间很短,我知道如果从网上找一篇改改很容易,但是我觉得我们已经大三,这种学生认识完成一门作业的感觉以后进入社会很少在能感受了,所以坚持自己动手,做完之后,也看了同宿舍的女孩的课设,觉得自己的课设真的还有很多缺陷,但是从中体会到了知识,管理技术,即使成品不完美,我也很欣慰,因为这个新期花的很值!我要感谢黄金慧老师在我论文过程中给予的指导,以与对于我们一些同学迟交论文的放宽,还有在我们写论文过程中对我们的督促.我还要感谢我同宿舍的女孩帮我一起解决了很多安装软件时遇到的困难. J:参考文献:1 王珊. 数据库系统概论<第四版>.:高等教育,20052 PowerBuilder 7.0 的帮助文件 pbgswin.pdf在文件夹C:Program FilesSybasePowerBuilder 7.0hlp3 Adaptive Server Anywhere 的所有帮助文件在文件夹C:Program FilesSybaseAdaptive Server Anywherewin324:MySQL帮助文档.5:Java帮助文档.15 / 15