《数据库管理课程设计报告.doc》由会员分享,可在线阅读,更多相关《数据库管理课程设计报告.doc(33页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、南华大学计算机科学和技术学院课程设计报告 ( 2007 2008学年度 第 二 学期 )课程名称数据库原理课程设计名称工资管理系统姓名李顺利学号20064440150专业计算机科学和技术专业班级计算机科学和技术061班地点寝室教师刘征海目 录一 系统需求分析-31.1数据流图(DFD)-41.2数据字典(DD)-41.2.1数据项-41.2.2数据流-41.2.3数据存储-51.2.4加工处理-6二概念模型设计-7三逻辑模型设计-7四物理模型设计-84.1数据库和表名称-84.2表的结构设计-8五应用程序设计-10 5.1系统功能结构设计-105.1.1工资管理系统-115.1.2系统管理模块
2、-115.1.3工资管理模块-115.1.4报表管理模块-115.2界面设计-125.2.1登录窗口-125.2.2主界面窗体-125.2.3注册用户-135.2.4员工信息管理-135.2.5个人工资管理-135.2.6员工工资条-145.2.7关于-145.3应用系统实施-155.3.1开发工具的选择-155.3.2代码部分-155.3.3系统测试-325.3.4系统运行-33六参考文献-33一、 系统需求分析管理信息系统(MIS)不仅是一个技术系统,而且也是一个社会系统。这从另一个方面可看出,任何企事业单位的管理信息系统都是基于自己单位的实际情况而建立,即使是同行企业建立的相同系统都会由
3、于企业的实际情况而有所不同。工资管理是任何企事业单位都面临的问题,由于各个公司的工资处理方式总是有所区别,因此目前还没有一个通用的工资管理系统,只能针对公司情况去开发适合本公司需求的工资管理系统。早期的工资管理是人工化的,工作量大时,出现错误的机率也会随之升高,这会导致会计人员花费更多的时间去改正错误,延误工资发放的时间,或出现工资发放错误的现象。而企业工资管理系统就是使用电脑代替大量的人工统计和计算,完成企业工资信息的处理,而且还可以用电脑安全完整地保存企业工资记录。系统初步调查的内容主要是了解公司组织的整体信息,包括员工信息和员工工资信息。通过对系统特点进行调查和分析,可以得到本系统的关键
4、部分如下:(1) 员工职务工资的设定,是工资管理系统的基础,可以实现工资的基本管理。这样可以减少出错,提高效率。 (2) 其他工资的设置,是对员工基本工资的补充。(3) 系统应该可以输出工资报表,可以通过报表侧面反映员工工作的好坏。(4) 系统还应包括员工基本信息的录入、修改和删除。(5) 系统还应该提供强大的数据统计、查询功能。(6) 系统应有比较好的可操作性、稳定性和可扩展性。1.1 数据流图(DFD)数据流图是一种能全面地描述信息系统逻辑模型的主要工具,它可以用少数几种符号综合地反映出信息在系统中的流动、处理和存储情况,比管理业务流程图具有更好的抽象性和概括性。它包括四种符号,如下图所示
5、:外部实体-S 处理 -P 数据流-F 数据存储-D 数据流程图的符号通过详细调查和业务流程图,舍去物质和其他要素,绘制出工资管理数据流程图。如下图所示: 工资管理系统数据流程图 S1管理员P1P3S2员工编制工资表P2S1管理员工资表D2月度工资条D4职工信息表D1工资设置表P4输入职工信息F1员工基本信息s1计算工资F 2实发工资1.2 数据字典(DD)DFD只是对数据处理和彼此之间的联系进行了说明。为了对数据流程图中的各个元素作出详细的说明,有必要建立数据字典,将数据流图中的全部数据流及其组成部分的数据元素,数据存储,数据加工描述清楚,以便于系统设计的进行。数据流程图配以数据字典,就可以
6、从图形和文字两个方面对系统的逻辑模型进行完整的描述。因此,开发人员有必要编写详细的数据字典,来描述系统开发过程的细节。下面列出本系统中主要的数据字典,包括数据项、数据流、数据存储、加工处理。1.2.1 数据项数据项又称数据元素,是数据的最小单位,是无法再细分的数据。下面列出主要的数据元素,如下表所示主要的数据元素数据项名称数据项编号类型及宽度别名简述备注empID 无varchar(12)职工编号用来标识员工的唯一编码name 无varchar(10)姓名和职工编号相对应headship 无varchar(10)职务表示职工现任职务base_pay 无money(8)基本工资表示员工的基本工资
7、1000(默认)Prize无money(8)奖金表示员工的奖金800(默认)1.2.2 数据流数据流是由一个或一组固定的数据项组成。其体现了数据的流向,从哪里来,流向哪里。如下表所示。 数 据 流数据流编号:F1 数据流名称:员工基本信息简述:管理员可以添加、修改、删除员工基本信息数据流来源:管理员的输入 数据流去向:制定员工基本信息数据流组成:empID+name+sex+borntime+region+nation+govvis+culture+marr+headship+addr+phone+email+ID+pic+resume数据流编号:F2 数据流名称:月度实发工资简述:由管理员输
8、入或修改员工工资,再由数据库自动计算员工的月度工资信息数据流来源:管理员或数据库 数据流去向:员工工资信息数据流组成:empID+name+headship+base_pay+prize+salary+income_tax+income1.2.3 数据存储数据存储是数据结构保存的场所,它只描述了数据的逻辑存储结构,而不涉及它的物理组织。现就以相关表来说明数据存储的定义,如下表所示。 数 据 存 储数据存储编号:D1数据存储名称:员工信息表简 述:存放员工的基本信息数据存储组成:empID+name+sex+borntime+region+nation+govvis+culture+marr+h
9、eadship+addr+phone+email+ID+pic+resume关 键 字:empID相 关 处 理:P1,P2数据存储编号:D2数据存储名称:员工工资信息简 述:存放员工的工资信息数据存储组成: empID+name+headship+base_pay+prize+salary+income_tax+income关 键 字: empID相 关 处 理: P2,P31.2.4 加工处理加工处理是对数据流程图中的逻辑处理进行分析及一些必要说明。如下表所示。加 工 处 理处理逻辑编号:P2处理逻辑名称:编制基本工资简 述:制定基本工资表输入的数据流:职工编号来源于数据存储员工信息表;工
10、资来源于数据存储工资信息表处 理:根据员工信息和工资信息编制基本工资输出的数据流:数据流“基本工资”写入数据存储员工工资信息表处 理 频 率:如果员工信息无变动,处理基本上也是没变动处理逻辑编号:P3处理逻辑名称:计算工资简 述:计算应发工资输入的数据流:基本工资来源于数据存储员工工资信息表处 理:根据基本工资、奖金和个人所得税计算应发工资输出的数据流:数据流“工资”写入数据存储员工工资信息表 处 理 频 率:对每个员工每月处理一次处理逻辑编号:P1、P4处理逻辑名称:输入职工信息、工资设置简 述: 系统挂另一拥有管理职工信息和工资信息的权利输入的数据流:由管理员输入处 理:管理员管理输出的数
11、据流:员工信息表、员工工资表处 理 频 率:对每个员工处理一次二、 概念模型设计对数据中词典中的数据存储进行分析,得出用户、员工信息、员工工资信息等数据存储,它们都由自己的头信息另加若干细节项构成,根据实体和属性的区分准则(作为“属性”,不能再具有需要描述的性质),这些细节项应上升为实体。工资管理系统的主要实体及其属性有:用户 user,password,right员工信息 empID,name,sex,borntime,region,nation,govvis,culture,marr,headship,addr,phone,email,ID,pic,resume员工工资信息 empID,n
12、ame,headship,base_pay,prize,salary,income_tax,income base_payprizesalaryincome_taxincomeborntimesexregionnationmarrculturegovvisresumepicIDemailphoneaddrheadship员工信息员工工资信息empIDheadshipname管理员系统用户用户名密码权限管理 实体联系(E-R)图三、 逻辑模型设计逻辑结构设计的任务就是把概念模型设计阶段设计好的基本E-R图转换为和选用的具体机器上的DBMS产品所支持的数据模型相符合的逻辑结构,现选用关系模型,E-
13、R图向关系模型的转换结果如下所示:用户(user,password,right)user为此关系的主键。员工信息(empID,name,sex,borntime,region,nation,govvis,culture,marr,headship,addr,phone,email,ID,pic,resume)empID此关系的主键。员工工资信息(empID,name,headship,base_pay,prize,salary,income_tax,income)empID此关系的主键。四、 物理模型设计4.1 数据库和表名称在本系统中数据库的名称设置为gzgl。数据库中表名称和字符标识如下所
14、示:序号表名称字符标识1用户yh2员工信息yg3员工工资信息yggz4.2 表的结构设计用户(yh)列名描述类型长度允许空user用户名varchar20NoPassword密码varchar12Noright用户权限varchar20No员工信息(yg)列名描述类型长度允许空empID(主键)职工编号varchar12NoName姓名varchar10NoSex性别varchar4NoBorntime出生日期datetime8YesRegion籍贯varchar10YesNation民族varchar8YesGovvis政治面貌varchar10YesCulture文化程度varchar20
15、YesMarr结婚状况varchar4YesHeadship职务varchar10NoAddr地址varchar20YesPhone电话varchar20YesEmail电子邮件varchar20YesID身份证号码varchar20YesPic个人照片image16YesResume个人简历text16Yes员工工资信息(yggz)列名描述类型长度允许空备注empID(主键)职工编号varchar12NoName姓名varchar10NoHeadship职务varchar10Nobase_pay基本工资money8Yes默认值(1000)Prize奖金money8Yes默认值(800)Sal
16、ary应发工资money8Yes公式(base_pay + prize)income_tax个人所得税money8YesIncome实发工资money8Yes公式(base_pay + prize - income_tax)实现员工工资信息(职工编号、姓名、职务)随着员工信息的更新、删除、插入而更新、删除、插入,实现动态更新,我使用了三个触发器,分别如下:CREATE TRIGGER Delete_Reminder ON dbo.员工信息 FOR deleteASdeclare emp varchar(12)select emp =empID from deleteddelete from 员
17、工工资信息where empID=empCREATE TRIGGER Insert_Reminder ON dbo.员工信息 FOR INSERTASinsert into 员工工资信息(empID,name,headship)select empID,name,headshipfrom insertedCREATE TRIGGER Update_name ON dbo.员工信息 FOR UPDATEASdeclare emp varchar(12)declare na varchar(10)declare hs varchar(10)select emp =empID from insert
18、edselect na =name from insertedselect hs =headship from insertedif update(name) or update(headship)beginupdate员工工资信息set name=na,headship=hswhere empID=empend实现个人所得税的自动计算,而不在程序中修改,我使用了一个计算个人所得税的触发器,代码如下:CREATE TRIGGER modifyincome_tax ON dbo.员工工资信息 FOR INSERT, UPDATEASupdate 员工工资信息set income_tax=(sal
19、ary-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)=40000 and (salary-1600)=60000 and (salary-1600)=80000 and (salary-1600)=100000五、 应用程序设计5.1 系统功能结构设计 为了详细描述系统模块功能,在系统功能模块划分的的基础上,对
20、相应系统的数据流图进行功能分解,得到含义明确、功能单一的单元功能模块,从而得到系统的功能模块图。5.1.1 工资管理系统本系统主要分系统管理模块、工资管理模块、报表管理模块和帮助模块组成。工资管理系统系统管理模块工资管理模块报表管理模块帮助模块工资管理系统模块图5.1.2 系统管理模块 这一模块主要完成一些用户的管理和员工信息的管理以及系统的退出和重新登录。系统管理模块用户管理员工信息管理重新登录退出用户管理注册用户注销用户密码修改系统管理模块结构图5.1.3 工资管理模块 这一模块主要实现个人工资管理、工资批量设置和工资计算公式的功能。工资管理个人工资管理工资批量设置工资计算公式工资管理模块
21、结构图5.1.4 报表管理模块 这一模块主要完成对工资管理系统中公司中的员工信息和工资信息的制表,为企业领导提供所需的数据。主要包括:员工工资表 、员工信息表和员工工资条报表管理员工工资表 员工信息表员工工资条报表管理模块结构图5.2 界面设计 由于工资管理系统的最终用户是对计算机技术并不精通的管理人员,从他们的应用需求出发,应该本着用户操作界面友好、清晰、易学易用、易于维护的原则来进行设计。5.2.1 登录窗口进入系统时要进行安全性检验。需输入你的用户名,密码。本系统由管理员负责注册和注销用户,您可以使用管理员登录系统,初始密码为jsjmz。通过数据库的安全认证,您还可以限制他人以管理员登录
22、,只能以来宾的用户登录系统,初始密码为123456。系统用户登录窗体设计如下:5.2.2 主界面窗体本系统主要有三个功能:系统管理、工资管理、报表管理。其中系统管理中包含用户管理、员工信息管理、重新登录系统功能,工资管理包含员工工资管理、工资批量设置、工资计算公式,报表中由员工信息表、员工工资表、员工工资条,本系统可以让您轻松地了解本公司员工的基本信息和工资管理。主界面窗体设计如下:5.2.3 注册用户 您可以通过管理员用户注册其他用户(注册成功的用户为非管理员权限),而非管理员用户没有此项功能。注册用户窗体如下:5.2.4 员工信息管理 您可以通过此功能查看或修改员工的基本信息。其中管理员拥
23、有添加、修改、删除及查询员工信息的权利,而非管理员只能查询员工信息,而不能拥有添加、修改和删除的权利。5.2.5 个人工资管理您可以通过此功能查看或修改员工的工资信息。其中管理员拥有修改和查询员工工资信息的权利,而非管理员只能查询员工工资信息,而不能拥有修改员工工资的权利。5.2.6 员工工资条您可以打印员工的工资信息发放给各员工。5.2.7 关于注:此系统中还有许多窗体因篇幅有限,不能一一显示,只显示了一些主要窗体,若要进一步了解这些窗口及其它窗口,请查看系统应用设计和运行界面。5.3 应用系统实施5.3.1 开发工具的选择本系统采用Visual Basic 6.0和SQL Server 2
24、000编写,为了您能够轻松使用本系统请您在使用前请看怎样配置您的系统(包括配置SQL Server 2000服务器(导入数据库文件)和配置数据源(使用数据源ODBC方法)5.3.2 代码部分系统登录窗体代码:Dim TIM As IntegerDim myval As StringPrivate Sub Command1_Click()Adodc1.CommandType = adCmdUnknownAdodc1.RecordSource = select *from 用户 where user= + DataCombo1.BoundText + Adodc1.RefreshIf Adodc1
25、.Recordset.RecordCount = 0 ThenMsgBox (暂无此用户,请重新选择用户!)DataCombo1.SetFocusExit SubEnd IfIf DataCombo1.BoundText And Text1.Text And Text1.Text = Trim(Adodc1.Recordset.Fields(password) Thenloginflag = 0usename = DataCombo1.BoundTextIf Adodc1.Recordset.Fields(right) = 管理员 Thenloginuserflag = 1Elseloginu
26、serflag = 0End IffrmMain.ShowUnload MeElseIf TIM = 3 Thenmyval = MsgBox(密码输入错误,请向系统管理员查询!)If myval = vbOK Then EndEnd IfIf DataCombo1.BoundText = ThenMsgBox (请选择用户)DataCombo1.SetFocusElseIf Text1.Text = ThenMsgBox (用户密码不能为空,请输入用户密码!)Text1.SetFocusElseIf Text1.Text Adodc1.Recordset.Fields(password) T
27、henMsgBox (密码错误,请查证后重新输入密码!)Text1.SelStart = 0Text1.SelLength = Len(Text1.Text)TIM = TIM + 1Text1.SetFocusEnd IfEnd IfEnd IfEnd IfEnd SubPrivate Sub Command2_Click()If loginflag = 1 ThenEndElsefrmMain.ShowMe.HideEnd IfText1.Text = DataCombo1.Text = 请选择用户End SubPrivate Sub DataCombo1_Change()TIM = 1T
28、ext1.Text = End SubPrivate Sub DataCombo1_Click(Area As Integer)Adodc1.CommandType = adCmdUnknownAdodc1.RecordSource = select * from 用户Adodc1.RefreshEnd SubPrivate Sub DataCombo1_KeyDown(KeyCode As Integer, Shift As Integer)If KeyCode = vbKeyReturn Then Text1.SetFocusEnd SubPrivate Sub Form_Activate
29、()DataCombo1.SetFocusTIM = 1If loginflag 1 ThenfrmLogin.Caption = 工资管理系统重新登录窗体End IfEnd SubPrivate Sub Form_Unload(Cancel As Integer)If loginflag = 1 ThenEndElsefrmMain.ShowMe.HideEnd IfEnd SubPrivate Sub Picture1_Click()Call ShellAbout(hWnd, 工资管理系统木子制作, 欢迎提出建议:(QQ:506817493), Me.Icon)End SubPrivate
30、 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.SetFocusEnd Sub主窗体代码:Private Declare Function ShellExecute Lib shell32.dll Alias ShellExecuteA (ByVal hWnd As Long, B
31、yVal lpOperation As String, ByVal lp String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As LongConst SW_SHOWNORMAL = 1Private Sub Form_Activate()StatusBar1.Panels(2).Text = 当前登录的是 & usenameIf loginuserflag = 1 ThenmnuAdduser.Enabled = TruemnuDeleteuser.Enabled
32、 = TruemnuBatchset.Enabled = TruePicture1.Enabled = TrueElsemnuAdduser.Enabled = FalsemnuDeleteuser.Enabled = FalsemnuBatchset.Enabled = FalsePicture1.Enabled = FalseEnd IfEnd SubPrivate Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)i = MsgBox(您真的退出工资管理系统?, vbYesNo + vbExclamation)If
33、 i = vbYes ThenEndEnd IfEnd SubPrivate Sub mnuAbout_Click()Call ShellAbout(hWnd, 工资管理系统木子制作, 欢迎提出建议:(QQ:506817493), Me.Icon)End SubPrivate Sub mnuAdduser_Click()frmAdduser.ShowMe.HideEnd SubPrivate Sub 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()frmDelet