《软件工程综合实验报告.doc》由会员分享,可在线阅读,更多相关《软件工程综合实验报告.doc(34页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、软件工程综合实验报告学号姓名(组长): 学号姓名: 班级: 教师: 1 系统需求分析开发及运行环境1. 硬件要求CPU:300MHz以上的处理器。内存:128MB,推荐256MB。硬盘:150MB以上剩余空间。显示像素:最低800*600,最佳效果1024*768。2. 软件要求操作系统:Windows2000/NT/XP/CE。数据库:SQL Server2000。管理信息系统(MIS)不仅是一个技术系统,而且也是一个社会系统。这从另一个方面可看出,任何企事业单位的管理信息系统都是基于自己单位的实际情况而建立,即使是同行企业建立的相同系统都会由于企业的实际情况而有所不同。工资管理是任何企事业
2、单位都面临的问题,由于各个公司的工资处理方式总是有所区别,因此目前还没有一个通用的工资管理系统,只能针对公司情况去开发适合本公司需求的工资管理系统。早期的工资管理是人工化的,工作量大时,出现错误的机率也会随之升高,这会导致会计人员花费更多的时间去改正错误,延误工资发放的时间,或出现工资发放错误的现象。而企业工资管理系统就是使用电脑代替大量的人工统计和计算,完成企业工资信息的处理,而且还可以用电脑安全完整地保存企业工资记录。系统初步调查的内容主要是了解公司组织的整体信息,包括员工信息和员工工资信息。通过对系统特点进行调查和分析,可以得到本系统的关键部分如下:(1) 员工职务工资的设定,是工资管理
3、系统的基础,可以实现工资的基本管理。这样可以减少出错,提高效率。 (2) 其他工资的设置,是对员工基本工资的补充。(3) 系统应该可以输出工资报表,可以通过报表侧面反映员工工作的好坏。(4) 系统还应包括员工基本信息的录入、修改和删除。(5) 系统还应该提供强大的数据统计、查询功能。(6) 系统应有比较好的可操作性、稳定性和可扩展性。1.1 数据流图(DFD)数据流图是一种能全面地描述信息系统逻辑模型的主要工具,它可以用少数几种符号综合地反映出信息在系统中的流动、处理和存储情况,比管理业务流程图具有更好的抽象性和概括性。它包括四种符号,如下图所示:外部实体-S 处理 -P 数据流-F 数据存储
4、-D 数据流程图的符号通过详细调查和业务流程图,舍去物质和其他要素,绘制出工资管理数据流程图。如下图所示: 工资管理系统数据流程图 S1管理员P1P3S2员工编制工资表P2S1管理员工资表D2月度工资条D4职工信息表D1工资设置表P4输入职工信息F1员工基本信息s1计算工资F 2实发工资1.2 数据字典(DD)DFD只是对数据处理和彼此之间的联系进行了说明。为了对数据流程图中的各个元素作出详细的说明,有必要建立数据字典,将数据流图中的全部数据流及其组成部分的数据元素,数据存储,数据加工描述清楚,以便于系统设计的进行。数据流程图配以数据字典,就可以从图形和文字两个方面对系统的逻辑模型进行完整的描
5、述。因此,开发人员有必要编写详细的数据字典,来描述系统开发过程的细节。下面列出本系统中主要的数据字典,包括数据项、数据流、数据存储、加工处理。1.2.1 数据项数据项又称数据元素,是数据的最小单位,是无法再细分的数据。下面列出主要的数据元素,如下表所示主要的数据元素数据项名称数据项编号类型及宽度别名简述备注empID 无varchar(12)职工编号用来标识员工的唯一编码name 无varchar(10)姓名与职工编号相对应headship 无varchar(10)职务表示职工现任职务base_pay 无money(8)基本工资表示员工的基本工资1000(默认)Prize无money(8)奖金
6、表示员工的奖金800(默认)1.2.2 数据流数据流是由一个或一组固定的数据项组成。其体现了数据的流向,从哪里来,流向哪里。如下表所示。 数 据 流数据流编号:F1 数据流名称:员工基本信息简述:管理员可以添加、修改、删除员工基本信息数据流来源:管理员的输入 数据流去向:制定员工基本信息数据流组成:empID+name+sex+borntime+region+nation+govvis+culture+marr+headship+addr+phone+email+ID+pic+resume数据流编号:F2 数据流名称:月度实发工资简述:由管理员输入或修改员工工资,再由数据库自动计算员工的月度工
7、资信息数据流来源:管理员或数据库 数据流去向:员工工资信息数据流组成:empID+name+headship+base_pay+prize+salary+income_tax+income1.2.3 数据存储数据存储是数据结构保存的场所,它只描述了数据的逻辑存储结构,而不涉及它的物理组织。现就以相关表来说明数据存储的定义,如下表所示。 数 据 存 储数据存储编号:D1数据存储名称:员工信息表简 述:存放员工的基本信息数据存储组成:empID+name+sex+borntime+region+nation+govvis+culture+marr+headship+addr+phone+email
8、+ID+pic+resume关 键 字:empID相 关 处 理:P1,P2数据存储编号:D2数据存储名称:员工工资信息简 述:存放员工的工资信息数据存储组成: empID+name+headship+base_pay+prize+salary+income_tax+income关 键 字: empID相 关 处 理: P2,P31.2.4 加工处理加工处理是对数据流程图中的逻辑处理进行分析及一些必要说明。如下表所示。加 工 处 理处理逻辑编号:P2处理逻辑名称:编制基本工资简 述:制定基本工资表输入的数据流:职工编号来源于数据存储员工信息表;工资来源于数据存储工资信息表处 理:根据员工信息和
9、工资信息编制基本工资输出的数据流:数据流“基本工资”写入数据存储员工工资信息表处 理 频 率:如果员工信息无变动,处理基本上也是没变动处理逻辑编号:P3处理逻辑名称:计算工资简 述:计算应发工资输入的数据流:基本工资来源于数据存储员工工资信息表处 理:根据基本工资、奖金和个人所得税计算应发工资输出的数据流:数据流“工资”写入数据存储员工工资信息表 处 理 频 率:对每个员工每月处理一次处理逻辑编号:P1、P4处理逻辑名称:输入职工信息、工资设置简 述: 系统挂另一拥有管理职工信息和工资信息的权利输入的数据流:由管理员输入处 理:管理员管理输出的数据流:员工信息表、员工工资表处 理 频 率:对每
10、个员工处理一次 2 总体设计2.1 项目规划工资管理系统是由基本信息管理、工资查询、工资管理、系统管理和帮助等几个功能模块组成,规划系统功能模块如下:q 基本信息管理模块基本信息管理模块主要包括员工录入、员工删除2部分。q 工资查询模块工资查询模块主要包括基本工资查询、浮动工资查询、加班/休假查询、总体查询4个部分。q 工资管理模块工资管理模块主要包括工资发放管理、基本工资管理、浮动工资管理3个部分。q 系统管理模块系统管理模块主要包括用户管理、修改密码、退出系统3个部分。q 帮助模块帮助模块主要包括关于1个部分。2.2 系统功能结构工资系统的功能结构如图1所示。图1 系统功能图2.3 设计目
11、标本系统是根据中小企业的实际需求而开发的,完全能够实现企业对客户的自动化管理,通过本系统可以达到以下目标:q 系统运行稳定,安全可靠。q 界面设计美观,人机交互界面友好。q 信息查询灵活、方便、快捷、准确,数据存储安全可靠。q 满足键盘和鼠标的双重操作,完全支持回车键。q 采用多种方式查询数据。q 操作员可以随时修改自己的口令。q 对用户输入的数据,系统进行严格的数据检验,尽可能排除人为的错误。q 数据保密性强,为每个用户设置相应的权限级别。3概念模型设计性别籍贯民族婚姻职工编号基本工资职务职工编号政治面貌文化程度职务奖金职务 发放工资员工应发工资出生日期姓名姓名个人所得税地址工资表实发工资e
12、电话管理系统用户用户名密码权限电邮照片简历身份证 实体联系(E-R)图对数据中词典中的数据存储进行分析,得出用户、员工信息、员工工资信息等数据存储,它们都由自己的头信息另加若干细节项构成,根据实体与属性的区分准则(作为“属性”,不能再具有需要描述的性质),这些细节项应上升为实体。工资管理系统的主要实体及其属性有:用户 user,password,right员工信息 empID,name,sex,borntime,region,nation,govvis,culture,marr,headship,addr,phone,email,ID,pic,resume员工工资信息 empID,name,h
13、eadship,base_pay,prize,salary,income_tax,income 4逻辑模型设计逻辑结构设计的任务就是把概念模型设计阶段设计好的基本E-R图转换为与选用的具体机器上的DBMS产品所支持的数据模型相符合的逻辑结构,现选用关系模型,E-R图向关系模型的转换结果如下所示:用户(user,password,right)user为此关系的主键。员工信息(empID,name,sex,borntime,region,nation,govvis,culture,marr,headship,addr,phone,email,ID,pic,resume)empID此关系的主键。员工
14、工资信息(empID,name,headship,base_pay,prize,salary,income_tax,income)empID此关系的主键。5物理模型设计5.1数据库和表名称在本系统中数据库的名称设置为gzgl。数据库中表名称和字符标识如下所示:序号表名称字符标识1用户yh2员工信息yg3员工工资信息yggz5.2表的结构设计用户(yh)列名描述类型长度允许空user用户名varchar20NoPassword密码varchar12Noright用户权限varchar20No员工信息(yg)列名描述类型长度允许空empID(主键)职工编号varchar12NoName姓名varc
15、har10NoSex性别varchar4NoBorntime出生日期datetime8YesRegion籍贯varchar10YesNation民族varchar8YesGovvis政治面貌varchar10YesCulture文化程度varchar20YesMarr结婚状况varchar4YesHeadship职务varchar10NoAddr地址varchar20YesPhone电话varchar20YesEmail电子邮件varchar20YesID身份证号码varchar20YesPic个人照片image16YesResume个人简历text16Yes员工工资信息(yggz)列名描述类
16、型长度允许空备注empID(主键)职工编号varchar12NoName姓名varchar10NoHeadship职务varchar10Nobase_pay基本工资money8Yes默认值(1000)Prize奖金money8Yes默认值(800)Salary应发工资money8Yes公式(base_pay + prize)income_tax个人所得税money8YesIncome实发工资money8Yes公式(base_pay + prize - income_tax)实现员工工资信息(职工编号、姓名、职务)随着员工信息的更新、删除、插入而更新、删除、插入,实现动态更新,我使用了三个触发器
17、,分别如下:CREATE TRIGGER Delete_Reminder ON dbo.员工信息 FOR deleteASdeclare emp varchar(12)select emp =empID from deleteddelete from 员工工资信息where empID=empCREATE TRIGGER Insert_Reminder ON dbo.员工信息 FOR INSERTASinsert into 员工工资信息(empID,name,headship)select empID,name,headshipfrom insertedCREATE TRIGGER Updat
18、e_name ON dbo.员工信息 FOR UPDATEASdeclare emp varchar(12)declare na varchar(10)declare hs varchar(10)select emp =empID from insertedselect na =name from insertedselect hs =headship from insertedif update(name) or update(headship)beginupdate员工工资信息set name=na,headship=hswhere empID=empend实现个人所得税的自动计算,而不在
19、程序中修改,我使用了一个计算个人所得税的触发器,代码如下:CREATE TRIGGER modifyincome_tax ON dbo.员工工资信息 FOR INSERT, UPDATEASupdate 员工工资信息set income_tax=(salary-1600)*0.05where empID = 员工工资信息.empID and (salary-1600)=0 and (salary-1600)=500 and (salary-1600)=2000 and (salary-1600)=5000 and (salary-1600)=20000 and (salary-1600)=40
20、000 and (salary-1600)=60000 and (salary-1600)=80000 and (salary-1600)=1000006应用程序设计一、6.1 系统功能结构设计 为了详细描述系统模块功能,在系统功能模块划分的的基础上,对相应系统的数据流图进行功能分解,得到含义明确、功能单一的单元功能模块,从而得到系统的功能模块图。6.1.2工资管理系统本系统主要分系统管理模块、工资管理模块、报表管理模块和帮助模块组成。工资管理系统系统管理模块工资管理模块报表管理模块帮助模块工资管理系统模块图6.1.3系统管理模块 这一模块主要完成一些用户的管理和员工信息的管理以及系统的退出和
21、重新登录。系统管理模块用户管理员工信息管理重新登录退出用户管理注册用户注销用户密码修改系统管理模块结构图6.1.4工资管理模块 这一模块主要实现个人工资管理、工资批量设置和工资计算公式的功能。工资管理个人工资管理工资批量设置工资计算公式工资管理模块结构图6.1.5报表管理模块 这一模块主要完成对工资管理系统中公司中的员工信息和工资信息的制表,为企业领导提供所需的数据。主要包括:员工工资表 、员工信息表和员工工资条报表管理员工工资表 员工信息表员工工资条报表管理模块结构图6.2 界面设计 由于工资管理系统的最终用户是对计算机技术并不精通的管理人员,从他们的应用需求出发,应该本着用户操作界面友好、
22、清晰、易学易用、易于维护的原则来进行设计。6.2.1 登录窗口进入系统时要进行安全性检验。需输入你的用户名,密码。本系统由管理员负责注册和注销用户,您可以使用管理员登录系统,初始密码为jsjmz。通过数据库的安全认证,您还可以限制他人以管理员登录,只能以来宾的用户登录系统,初始密码为123456。系统用户登录窗体设计如下:6.2.2 主界面窗体本系统主要有三个功能:系统管理、工资管理、报表管理。其中系统管理中包含用户管理、员工信息管理、重新登录系统功能,工资管理包含员工工资管理、工资批量设置、工资计算公式,报表中由员工信息表、员工工资表、员工工资条,本系统可以让您轻松地了解本公司员工的基本信息
23、和工资管理。主界面窗体设计如下:6.2.3 注册用户 您可以通过管理员用户注册其他用户(注册成功的用户为非管理员权限),而非管理员用户没有此项功能。注册用户窗体如下:6.2.4 员工信息管理 您可以通过此功能查看或修改员工的基本信息。其中管理员拥有添加、修改、删除及查询员工信息的权利,而非管理员只能查询员工信息,而不能拥有添加、修改和删除的权利。6.2.5 个人工资管理您可以通过此功能查看或修改员工的工资信息。其中管理员拥有修改和查询员工工资信息的权利,而非管理员只能查询员工工资信息,而不能拥有修改员工工资的权利。6.2.6 员工工资条您可以打印员工的工资信息发放给各员工。6.2.7 关于注:
24、此系统中还有许多窗体因篇幅有限,不能一一显示,只显示了一些主要窗体,若要进一步了解这些窗口及其它窗口,请查看系统应用设计和运行界面。6.3 应用系统实施6.3.1 开发工具的选择本系统采用Visual Basic 6.0和SQL Server 2000编写,为了您能够轻松使用本系统请您在使用前请看怎样配置您的系统(包括配置SQL Server 2000服务器(导入数据库文件)和配置数据源(使用数据源ODBC方法)6.3.2 代码部分系统登录窗体代码:Dim TIM As IntegerDim myval As StringPrivate Sub Command1_Click()Adodc1.C
25、ommandType = adCmdUnknownAdodc1.RecordSource = select *from 用户 where user= + DataCombo1.BoundText + Adodc1.RefreshIf Adodc1.Recordset.RecordCount = 0 ThenMsgBox (暂无此用户,请重新选择用户!)DataCombo1.SetFocusExit SubEnd IfIf DataCombo1.BoundText And Text1.Text And Text1.Text = Trim(Adodc1.Recordset.Fields(passw
26、ord) Thenloginflag = 0usename = DataCombo1.BoundTextIf Adodc1.Recordset.Fields(right) = 管理员 Thenloginuserflag = 1Elseloginuserflag = 0End IffrmMain.ShowUnload MeElseIf TIM = 3 Thenmyval = MsgBox(密码输入错误,请向系统管理员查询!)If myval = vbOK Then EndEnd IfIf DataCombo1.BoundText = ThenMsgBox (请选择用户)DataCombo1.Se
27、tFocusElseIf Text1.Text = ThenMsgBox (用户密码不能为空,请输入用户密码!)Text1.SetFocusElseIf Text1.Text Adodc1.Recordset.Fields(password) ThenMsgBox (密码错误,请查证后重新输入密码!)Text1.SelStart = 0Text1.SelLength = Len(Text1.Text)TIM = TIM + 1Text1.SetFocusEnd IfEnd IfEnd IfEnd IfEnd SubPrivate Sub Command2_Click()If loginflag
28、 = 1 ThenEndElsefrmMain.ShowMe.HideEnd IfText1.Text = DataCombo1.Text = 请选择用户End SubPrivate Sub DataCombo1_Change()TIM = 1Text1.Text = End SubPrivate Sub DataCombo1_Click(Area As Integer)Adodc1.CommandType = adCmdUnknownAdodc1.RecordSource = select * from 用户Adodc1.RefreshEnd SubPrivate Sub DataCombo
29、1_KeyDown(KeyCode As Integer, Shift As Integer)If KeyCode = vbKeyReturn Then Text1.SetFocusEnd SubPrivate Sub Form_Activate()DataCombo1.SetFocusTIM = 1If loginflag 1 ThenfrmLogin.Caption = 工资管理系统重新登录窗体End IfEnd SubPrivate Sub Form_Unload(Cancel As Integer)If loginflag = 1 ThenEndElsefrmMain.ShowMe.H
30、ideEnd IfEnd SubPrivate Sub Picture1_Click()Call ShellAbout(hWnd, “工资管理系统”, “欢迎提出建议”, Me.Icon)End SubPrivate Sub Picture2_Click()SendKeys F1End SubPrivate Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)If KeyCode = vbKeyReturn Then Command1_ClickIf KeyCode = vbKeyUp Then DataCombo1.SetFocusE
31、nd Sub主窗体代码:Private Declare Function ShellExecute Lib shell32.dll Alias ShellExecuteA (ByVal hWnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As LongConst SW_SHOWNORMAL = 1Private Sub Form_Activate()
32、StatusBar1.Panels(2).Text = 当前登录的是 & usenameIf loginuserflag = 1 ThenmnuAdduser.Enabled = TruemnuDeleteuser.Enabled = TruemnuBatchset.Enabled = TruePicture1.Enabled = TrueElsemnuAdduser.Enabled = FalsemnuDeleteuser.Enabled = FalsemnuBatchset.Enabled = FalsePicture1.Enabled = FalseEnd IfEnd SubPrivat
33、e Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)i = MsgBox(您真的退出工资管理系统?, vbYesNo + vbExclamation)If i = vbYes ThenEndEnd IfEnd SubPrivate Sub mnuAbout_Click()Call ShellAbout(hWnd, “工资管理系统”, “欢迎提出建议”, Me.Icon)End SubPrivate Sub mnuAdduser_Click()frmAdduser.ShowMe.HideEnd SubPrivate Su
34、b mnuAssist_Click(Index As Integer)ShellExecute Me.hWnd, vbNullString, App.Path & 帮助.chm, vbNullString, , SW_SHOWNORMALEnd SubPrivate Sub mnuBatchset_Click()frmBatch.ShowMe.HideEnd SubPrivate Sub mnuChange_Click()frmChange.ShowMe.HideEnd SubPrivate Sub mnuDeleteuser_Click()frmDeleteuser.ShowMe.HideE
35、nd SubPrivate Sub mnuEMP_Click(Index As Integer)frmUser.ShowMe.HideEnd SubPrivate Sub mnuExit_Click()i = MsgBox(您真的退出工资管理系统?, vbYesNo + vbExclamation)If i = vbYes ThenEndEnd IfEnd SubPrivate Sub mnuFormulae_Click()frmFormulae.ShowMe.HideEnd SubPrivate Sub mnuInfotable_Click()DataReport2.ShowMe.HideE
36、nd SubPrivate Sub mnuPersalaryset_Click()frmPersal.ShowMe.HideEnd SubPrivate Sub mnuRlogin_Click()frmLogin.ShowMe.HideEnd SubPrivate Sub mnuWagebar_Click()DataReport1.ShowMe.HideEnd SubPrivate Sub mnuWagetable_Click()DataReport3.ShowMe.HideEnd SubPrivate Sub Picture2_Click()mnuChange_ClickEnd SubPri
37、vate Sub Picture1_Click() mnuAdduser_ClickEnd SubPrivate Sub Picture3_Click()frmUser.ShowMe.HideEnd SubPrivate Sub Picture4_Click()mnuInfotable_ClickEnd SubPrivate Sub Picture5_Click()mnuPersalaryset_ClickEnd SubPrivate Sub Picture6_Click()mnuWagebar_ClickEnd SubPrivate Sub Picture7_Click()mnuRlogin
38、_ClickEnd SubPrivate Sub Picture8_Click()mnuExit_ClickEnd Sub注册用户窗体代码:Private Sub Command1_Click()If Trim(Text1.Text) = ThenMsgBox (用户不能为空,请重新输入!)Text1.SetFocusExit SubEnd IfIf Trim(Text2.Text) = ThenMsgBox 密码不能为空,请重新输入!Text2.SetFocusExit SubEnd IfIf Combo1.Text = ThenMsgBox (用户权限不能为空,请重新输入!)Combo1.
39、SetFocusExit SubEnd IfIf Text2.Text Text3.Text ThenMsgBox (两次输入的密码不一致,请重新输入!)Text2.Text = Text3.Text = Text2.SetFocusElseAdodc1.CommandType = adCmdUnknownAdodc1.RecordSource = select *from 用户 where user= + Trim(Text1.Text) + Adodc1.RefreshIf Adodc1.Recordset.RecordCount 0 Theni = MsgBox(用户名已经存在!是否重新输入?, vbYesNo + vbExclamation)If i = vbYes ThenText1.Text = Text2.Text = Text3.Text = Text1.SetFocusElseComma