1、 信息系统设计 软件工程课程设计课题名称: 职员信息管理系统 姓 名: 兰朝仁 学 号: 学 院:继续教育学院专 业:计算机科学和技术年 级:级(夜大专升本)指导老师: 陈郞钦 完成日期: 年 10 月 11 日目 录引言11.系统计划21.1系统设计目标21.2系统总体计划21.3设计方案(步骤)22.系统分析22.1业务需求和分析22.2系统业务步骤图32.3系统数据步骤图43.系统设计53.1系统软件功效结构53.2系统关键技术53.3系统数据库设计63.3.1数据库设计关键点63.3.2数据库系统设计关键点及难点63.3.3数据库及其表建立和使用63.3.4系统组成及数据环境63.3.
2、5数据库概念设计73.3.6数据库逻辑设计83.3.7数据库物理设计93.4输出设计113.5输入设计114.系统实现114.1系统主程序步骤124.2系统主界面设计134.3系统主程序设计134.4子程序设计174.4.1系统登录174.4.2职员管理184.4.3部门管理214.4.4职务管理234.4.5工资管理254.4.6工资类别管理264.5系统测试275.结束语28【摘 要】本文从职员信息管理系统计划、需求分析、系统设计、系统实现及系统测试等多个方面,分别叙述系统研发整个实现过程,简述采取Delphi 7编程工具及Access数据库实现系统应用设计关键点,关键叙述系统实现过程中关
3、键和难点问题分析及其处理方案,处理企业对职员计算机管理。【关键词】职员、人事、工资、管理、数据库引言伴随中国国民经济建设蓬勃发展和社会主义市场经济体制快速完善,各个行业全部在主动使用现代化手段,不停改善服务质量,提升工作效率,这些全部在很大程度上给企业提出越来越严峻挑战,对企业体系不管是在行政职能、企业管理水平和优质服务上全部提出更高要求。建设一个科学高效信息管理系统是处理这一问题必由之路。职员信息管理作为企业内部一个职员基础档案管理也是如此,因为企业人数较多,每一位职员具体实际情况也不尽相同,假如没有一个完整职员信息管理系统去完成,将使工作变得复杂,而且对于工作效率也将使一个致命打击,使不管
4、怎样也无法适应该代社需要。另外,现在部分企业使用职员信息管理系统只有信息录入,修改和删除功效,而不含有信息查询功效,这对于企业信息管理工作来说是一个很遗憾事情。所以,开发一套功效完整,设计合理,使用方便企业职员信息管理系统成为很有必需事情。企业职员信息管理系统内容功效对于企业决议者和管理者来说全部至关关键,所以企业职员信息管理系统应该能够为管理者提供充足信息和快捷查询和管理手段。作为计算机应用一部分,使用计算机对企业职员信息进行管理,含有手工管理所无法比拟优点.比如:查询快速、查找方便、可靠性高、存放量大、保密性好、寿命长、成本低等。这些优点能够降低职员管理工作成本,减轻企业管理人员负担,方便
5、职员信息更新、维护和查询,增加数据可靠性;从而提升企业职员信息管理效率,开拓企业职员管理工作新局面,提升管理水平,是企业管理科学化、正规化、信息化管理,和世界接轨关键条件。目前主流程序开发环境有Microsoft Visual Studio.NET,Sun Java,Borland Delphi等。Visual Studio.NET对Windows系统兼容性好;Java能够支持多个环境及操作系统平台;而Delphi则可在Windows系统下快速开发C/S结构程序,含有多方成熟控件完善系统开发。主流数据系统则有Oracle,Microsoft SQL Server和Access。Oracle功效
6、强大,稳定性好;SQL Server稳定,功效齐全;而Access简单快速、小巧便捷。下面采取Borland Delphi 7开发环境,结合Microsoft Access数据库,对职员信息管理系统开发过程和系统计划、系统需求及分析、系统设计、系统实现及系统测试等各个阶段,叙述其数据库应用系统设计关键点,实现过程中存在难点、问题分析及其处理方案。1. 系统计划系统计划关键内容是信息系统设计目标及信息系统总体方案。1.1 系统设计目标本系统设计目标是建立企业对职员档案及工资计算机管理系统。1.2 系统总体计划系统本着合理性、可靠性和优异性标准,实现:(1) 完整数据分析系统,能对数据流实施控制和
7、动态分析;(2) 有功效强大、资料齐全查询系统;(3) 方便用户使用及操作界面,操作简便、运行稳定。1.3 设计方案(步骤)在职员信息需求基础上,提出整个信息系统总体结构方案,确定系统开发设计次序立即间安排。具体分为五个步骤:(4) 分析职员档案及工资等信息管理业务活动,搞清业务步骤及数据步骤;(5) 依据业务步骤及数据步骤,确定属于系统业务处理范围;(6) 分析业务步骤及数据步骤所包含数据,确定数据库及其数据表;(7) 确定系统概要设计(总体结构、数据结构)、具体设计(模块、算法)框架;(8) 进行系统实施过程程序设计及其软件测试。2. 系统分析系统分析最关键内容有职员信息管理系统业务需求分
8、析、业务步骤图、数据步骤图、数据库设计等四个部分。2.1 业务需求和分析(1) 系统数据需求经过对企业职员信息管理业务步骤调查,总结系统对其数据需求,关键有:职员档案信息,职员工资信息,部门、职务、工资类型等基础信息(2) 系统功效需求系统关键需求,即所设计系统在功效上应做什么。本系统关键功效有:职员管理:完成职员档案新增、修改、删除、查询及打印等功效;关键实现对全部职员姓名、编号、部门、职务、入职时间、性别、身份证号、出生日期、学历、私人电话及工作电话等信息管理。工资管理:完成职员工资录入、查询、分析及相关打印等功效;关键实现对职员姓名、工资类别及工资金额等信息管理。基础信息管理:完成部门设
9、置、职务设置、工资类别设置、用户口令设置,系统数据初始化等功效。部门设置关键实现部门编号和部门名称设置;职务设置关键实现职务编号和职务名称设置;工资类别设置关键实现工资类别编号和工资类别名称设置;口令更改实现用户口令修改;系统初始化清除系统全部历史数据,使数据库进入初始状态。系统帮助:帮助用户处理问题,沟通和软件开发者联络。(3) 系统性能需求系统性能指标包含存放容量限制、运行时间限制、传输速度要求、安全保密性等多个方面。(4) 系统运行环境需求硬件方面:采取设备机型和外部设备等;软件方面:支持系统运行系统软件,如操作系统、数据库系统等。(5) 系统可靠性及安全保密需求对系统、关键子系统在运行
10、中安全、可靠、保密方面提出要求。2.2 系统业务步骤图从实际业务功效角度将系统计划中相关业务做深入分析,用一个完整图型来反应业务处理过程。系统业务步骤图(TFD)以下:2.3 系统数据步骤图以数据步骤图表示数据流向和对数据进行加工;分析系统数据,对数据流图中数据流给出具体定义。系统顶层数据步骤图(DFD)以下:3. 系统设计系统设计关键有以下几项内容:3.1 系统软件功效结构3.2 系统关键技术本系统采取Borland Delphi 7开发环境,结合Microsoft Access数据库。Borland Delphi 7使用是面向对象Object Pascal语言,能够灵活得进行大型应用系统开
11、发。Delphi 7提供了对数据库系统及标准SQL语言支持,能够开发出符合标准SQL应用系统,提升系统可移植性,可依据不一样企业需求,使用Oracle、SQL Server、Access等标准SQL数据库。同时,Delphi 7本身提供了很多数据库操作控件,还有第三方优势数据库操控件,从面愈加快,愈加好得开发出优异应用系统。本系统就采取了Dev Express企业DevExpressVCL数据控件一起实现职员信息管理系统开发。3.3 系统数据库设计3.3.1 数据库设计关键点(9) 第一阶段设计任务是搜集和分析用户需求,完成数据库概念设计。(10) 第二阶段设计任务是数据库逻辑设计,完成E-R
12、模型向逻辑模型转换。(11) 第三阶段设计任务是数据库物理设计,确定表结构,建立数据库模型。3.3.2 数据库系统设计关键点及难点(12) 建立数据库,确定数据库中表数量及其每个表中各个字段字段名、类型、宽度、小数及索引、排序。(13) 确定数据库中各个表字段主键值、主索引及一般索引。(14) 建立各个表数据环境,确定主表并建立主表和各个表之单关联。(15) 程序设计过程中标签、文本框、编辑框、复选框、列表框、数据库连接、数据查询属性。(16) 采取结构化编程方法,确定系统功效模块及其相互之间关系。3.3.3 数据库及其表建立和使用使用Access程序建立Access数据库,建立对应表,设置各
13、个表中具体字段名称、类型、主键、索引,设置各个表间关系。3.3.4 系统组成及数据环境(1)数据库:PersonnelInfo.mdb(2)表:职员职员信息表,工资工资表,部门部门信息表,职务职务信息表,工资类别工资类别信息表(3)项目:PersonnelInfo.dpr:职员信息管理系统项目管理器(4)表单:Main.dfm系统主界面Personnel.dfm 职员管理界面Wage.dfm工资管理界面Department.dfm部门管理界面Post.dfm职务管理界面About.dfm 相关界面WageCategory.dfm工资类型管理界面(5)程序:Main.pas系统主程序Person
14、nel.pas 职员管理程序Wage.pas工资管理程序Department.pas部门管理程序Post.pas职务管理程序About.pas 相关程序WageCategory.pas工资类型管理程序(6)数据环境:3.3.5 数据库概念设计数据库概念设计关键采取E-R模型进行设计.E-R模型关系是确定每一处理模块实体、实体属性和实体间联络。实体、属性、联络及数据结构描述以下:(1)职员管理模块实体:职员、部门、职务;属性:职员属性有姓名、职员编号、部门、职务、入职时间、性别、身份证号、出生日期、学历、私人电话、工作电话及备注等;部门属性有部门编号和部门名称;职务属性有职务编号和职务名称。联络
15、:职员和部门之间是多对一(M:1)关系;职员和职务之间也是多对一(M:1)关系。数据项:见数据库物理设计。(2)工资管理模块实体:工资、工资类别;属性:工资属性有职员编号、工资类别和工资金额;工资类别有工资类别编号、工资类别名称。关系:工资类别和工资这间是一对一(1:1)关系。数据项:见数据库物理设计。3.3.6 数据库逻辑设计数据库逻辑设计关键完成从E-R模型向数据逻辑模型转换。首先将E-R模型中同一实体全部属性放在同一统计类型中,变成统计数据项;其次假如两个实体间有M:N关系,除各自建立统计类型之外,还需增加一个统计类型,这一统计类型应包含两个实体各自主键。逻辑模型规范化及总E-R图描述以
16、下:职员(职员编号、姓名、部门编号、职务编号、入职时间、性别、身份证号、出生日期、学历、私人电话、工作电话、备注);部门(部门编号、部门名称、备注);职务(职务编号、职务名称、备注);工资(职员编号、工资类型编号、金额、备注);工资类别(工资类别编号、工资类别名称、备注);用户(用户名、密码、确定密码、备注)。消除冗余数据和联络后,其系统E-R图以下:3.3.7 数据库物理设计数据库物理设计将完成数据逻辑模型向数据物理模型转换。每一统计类型确定为数据库中一张表;统计类型中数据项成为对应表中字段,字段属性依据各字段特点设置;确定索引和表之间联络。系统表结构描述以下:(1)职员表用于存放职员信息,
17、包含职员编号、姓名、部门编号、职务编号、入职时间、性别、身份证号、出生日期、学历、私人电话、工作电话、备注。字段字段名称类型宽度必需索引说明1职员编号文本20是有没有反复主键2姓名文本10是3部门编号数字长整型4职务编号数字长整型5入职时间日期/时间6性别文本27身份证号文本208出生日期日期/时间9学历文本1010私人电话文本2011工作电话文本2012备注文本100(2)部门表用于存放职员部门信息,包含部门编号、部门名称和备注。字段字段名称类型宽度必需索引说明1部门编号数字长整型是有没有反复主键2部门名称文本20是3备注文本100(3)职务表用于存放职员职务信息,包含职务编号、职务名称和备
18、注。字段字段名称类型宽度必需索引说明1职务编号数字长整型是有没有反复主键2职务名称文本20是3备注文本100(4)工资表用于存放职员工资信息,包含职员编号、工资类别编号、金额和备注。字段字段名称类型宽度必需索引说明1职员编号文本20是有反复主键2工资类别编号数字长整型是有反复主键3金额数字单精度型4备注文本100(5)工资类别表用于存放职员工资类别,包含工资类别编号、工资类别名称和备注。字段字段名称类型宽度必需索引说明1工资类别编号数字长整型是有没有反复主键2工资类别名称文本20是3备注文本100(6)用户表用于存放系统用户名和密码,包含用户名、密码和备注。字段字段名称类型宽度必需索引说明1用
19、户名文本20是有没有反复主键2密码文本30是3确定密码文本30是4备注文本1003.4 输出设计(1) 选择输出方法 :显示终端、打印机;(2) 确定输出格式:格式设计表现在各类报表中;(3) 输出关键形式:报表;(4) 输出内容:关键有职员信息、工资信息、部门信息、职务信息、工资类别信息和用户信息。3.5 输入设计(1) 输入方法设计键盘输入和鼠标操作,为常规数据录入方法;磁盘传输数据。(2) 用户界面设计(详见各子模块用户界面)人机对话方法:经过屏幕、键盘、鼠标和系统对话,当操作错误时系统给出提醒和警告。菜单方法:设计成下拉式、上弹式、按钮式,功效选择:有光带移动、数字或字母选择、鼠标驱动
20、。4. 系统实现系统实施最关键工作是程序设计,另外还包含了物理系统实施、程序调试等。本系统程序设计由主程序和各模块表单程序等两大部份组成。4.1 系统主程序步骤4.2 系统主界面设计4.3 系统主程序设计unit Main;interfaceuses Windows, SysUtils, Classes, Graphics, Forms, Controls, Menus, StdCtrls, Dialogs, Buttons, Messages, ExtCtrls, ComCtrls, StdActns, ActnList, ToolWin, ImgList, DB, ADODB, cxCon
21、trols, cxContainer, cxEdit, cxLabel;type TMainForm = class(TForm) MainMenu: TMainMenu; File1: TMenuItem; Window: TMenuItem; Help: TMenuItem; FileExitItem: TMenuItem; WindowCascadeItem: TMenuItem; WindowTileItem: TMenuItem; WindowArrangeItem: TMenuItem; HelpAboutItem: TMenuItem; WindowMinimizeItem: T
22、MenuItem; ActionList: TActionList; FileExit: TAction; WindowCascade1: TWindowCascade; WindowTileHorizontal1: TWindowTileHorizontal; WindowArrangeAll1: TWindowArrange; WindowMinimizeAll1: TWindowMinimizeAll; HelpAbout1: TAction; WindowTileVertical1: TWindowTileVertical; WindowTileItem2: TMenuItem; Im
23、ageList: TImageList; FileWage: TMenuItem; FilePersonnel: TMenuItem; FileDepartment: TMenuItem; ADOConnection: TADOConnection; FilePost: TMenuItem; N1: TMenuItem; FileWageCategory: TMenuItem; Image1: TImage; FileUser: TMenuItem; ADOQueryDelete: TADOQuery; FileDataInit: TMenuItem; procedure HelpAbout1
24、Execute(Sender: TObject); procedure FileExitExecute(Sender: TObject); procedure FilePersonnelClick(Sender: TObject); procedure FileDepartmentClick(Sender: TObject); procedure FilePostClick(Sender: TObject); procedure FileWageCategoryClick(Sender: TObject); procedure FileWageClick(Sender: TObject); p
25、rocedure FormActivate(Sender: TObject); procedure FileUserClick(Sender: TObject); procedure FileDataInitClick(Sender: TObject); private Private declarations public Public declarations end;var MainForm: TMainForm; ShowLogin :Boolean = True;implementation$R *.dfmuses Login, Personnel, Department, Post
26、, Wage, WageCategory, User, About;procedure TMainForm.FileExitExecute(Sender: TObject);begin Close;end;procedure TMainForm.HelpAbout1Execute(Sender: TObject);begin AboutBox.ShowModal;end;procedure TMainForm.FilePersonnelClick(Sender: TObject);var MDIPersonnel: TMDIPersonnel; i: integer;begin for i:=
27、0 to MDIChildCount-1 do if MDIChildreni is TMDIPersonnel then begin MDIChildreni.BringToFront; if MDIChildreni.WindowState = wsMinimized then MDIChildreni.WindowState := wsNormal; Exit; end; MDIPersonnel := TMDIPersonnel.Create(Application); MDIPersonnel.Show;end;procedure TMainForm.FileDepartmentCl
28、ick(Sender: TObject);var MDIDepartment: TMDIDepartment; i: integer;begin for i:=0 to MDIChildCount-1 do if MDIChildreni is TMDIDepartment then begin MDIChildreni.BringToFront; if MDIChildreni.WindowState = wsMinimized then MDIChildreni.WindowState := wsNormal; Exit; end; MDIDepartment := TMDIDepartm
29、ent.Create(Application); MDIDepartment.Show;end;procedure TMainForm.FilePostClick(Sender: TObject);var MDIPost: TMDIPost; i: integer;begin for i:=0 to MDIChildCount-1 do if MDIChildreni is TMDIPost then begin MDIChildreni.BringToFront; if MDIChildreni.WindowState = wsMinimized then MDIChildreni.Wind
30、owState := wsNormal; Exit; end; MDIPost := TMDIPost.Create(Application); MDIPost.Show;end;procedure TMainForm.FileWageCategoryClick(Sender: TObject);var MDIWageCategory: TMDIWageCategory; i: integer;begin for i:=0 to MDIChildCount-1 do if MDIChildreni is TMDIWageCategory then begin MDIChildreni.Brin
31、gToFront; if MDIChildreni.WindowState = wsMinimized then MDIChildreni.WindowState := wsNormal; Exit; end; MDIWageCategory := TMDIWageCategory.Create(Application); MDIWageCategory.Show;end;procedure TMainForm.FileWageClick(Sender: TObject);var MDIWage: TMDIWage; i: integer;begin for i:=0 to MDIChildC
32、ount-1 do if MDIChildreni is TMDIWage then begin MDIChildreni.BringToFront; if MDIChildreni.WindowState = wsMinimized then MDIChildreni.WindowState := wsNormal; Exit; end; MDIWage := TMDIWage.Create(Application); MDIWage.Show;end;procedure TMainForm.FormActivate(Sender: TObject);begin if ShowLogin t
33、hen begin LoginBox.ShowModal; if ShowLogin then Close; end;end;procedure TMainForm.FileUserClick(Sender: TObject);var MDIUser: TMDIUser; i: integer;begin for i:=0 to MDIChildCount-1 do if MDIChildreni is TMDIUser then begin MDIChildreni.BringToFront; if MDIChildreni.WindowState = wsMinimized then MD
34、IChildreni.WindowState := wsNormal; Exit; end; MDIUser := TMDIUser.Create(Application); MDIUser.Show;end;end.4.4 子程序设计4.4.1 系统登录unit Login;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, DB, ADODB, StdCtrls;type TLoginBox = class(TForm) ButtonLogin:
35、TButton; ButtonCancel: TButton; LabelUser: TLabel; EditUser: TEdit; LabelPassword: TLabel; EditPassword: TEdit; ADOQueryLogin: TADOQuery; procedure ButtonLoginClick(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure ButtonCancelClick(Sender: TObject); private
36、 Private declarations public Public declarations end;var LoginBox: TLoginBox; LoginTime: Integer=0; implementation$R *.dfmuses Main;procedure TLoginBox.ButtonLoginClick(Sender: TObject);begin if (EditUser.Text) then begin try ADOQueryLogin.Close; ADOQueryLogin.SQL.Clear; ADOQueryLogin.SQL.Add(SELECT
37、 COUNT(*) FROM 用户 WHERE 用户名=:User AND 密码=:Password); ADOQueryLogin.Parameters.ParamByName(User).Value:=EditUser.Text; ADOQueryLogin.Parameters.ParamByName(Password).Value:=EditPassword.Text; ADOQueryLogin.Open; if ADOQueryLogin.Fields0.AsInteger=1 then begin ShowLogin:=False; Close; end else begin S
38、howMessage(用户名或密码错误!); LoginTime:=LoginTime+1; if LoginTime=3 then Close; end; finally ADOQueryLogin.Close; end; end;end;procedure TLoginBox.FormClose(Sender: TObject; var Action: TCloseAction);begin Action := caFree;end;procedure TLoginBox.ButtonCancelClick(Sender: TObject);begin Close;end;end.4.4.
39、2 职员管理unit Personnel;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, DB, ADODB, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, cxDataStorage, cxEdit, cxDBData, cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxGridLevel, cxClasses,
40、cxControls, cxGridCustomView, cxGrid, cxNavigator, StdCtrls, Grids, DBGrids, StrUtils, cxDBNavigator, cxGridCustomPopupMenu, cxGridPopupMenu, dxStatusBar, cxCalendar, cxDropDownEdit, cxCheckBox, cxRadioGroup, cxDBLookupComboBox;type TMDIPersonnel = class(TForm) DataSourcePersonne: TDataSource; ADOQu
41、eryPersonne: TADOQuery; cxGrid1DBTableView1: TcxGridDBTableView; cxGrid1Level1: TcxGridLevel; cxGrid1: TcxGrid; cxDBNavigator1: TcxDBNavigator; cxGrid1DBTableView1DBColumn: TcxGridDBColumn; cxGrid1DBTableView1DBColumn1: TcxGridDBColumn; cxGrid1DBTableView1DBColumn2: TcxGridDBColumn; cxGrid1DBTableVi
42、ew1DBColumn3: TcxGridDBColumn; cxGrid1DBTableView1DBColumn4: TcxGridDBColumn; cxGrid1DBTableView1DBColumn5: TcxGridDBColumn; cxGrid1DBTableView1DBColumn6: TcxGridDBColumn; cxGrid1DBTableView1DBColumn7: TcxGridDBColumn; cxGrid1DBTableView1DBColumn8: TcxGridDBColumn; cxGrid1DBTableView1DBColumn9: TcxGridDBColumn; cxGrid1DBTableView1DBColumn10: TcxGridDBColumn; cxGr