公司办公费用信息管理系统.docx
学号:200610137234 成绩:_ 武汉科技大学城市学院武汉科技大学城市学院 课程设计报告课程设计报告 院 系 信息科学与工程系 专 业 计算机科学与技术 年级 班 06 级 计科二班 课程名称 数据库应用与原理 设计题目 公司办公费用信息管理系统 姓 名 陈钊 指导教师 朱倩 2008 年 6 月 27 日 数据库课程设计报告 - 1 - 数据库课程设计报告 - 2 - 设计题目设计题目: 公司办公费用管理信息系统设计公司办公费用管理信息系统设计 设计主要内容设计主要内容: 一、开发平台一、开发平台:VB+ SQL SERVER 2000 二、功能要求二、功能要求: 1、设计内容 设计一个公司办公费用管理信息系统,该系统的用户由一般用户和管理员组成,然后不同的用户拥有不同的权限,各自完成各自的管理功能,首先是欢迎界面,然后选择登录,登录的时候首先要判断用户的身份, 合法的用户然后进入到系统主界面中, 不同的用户看到不同的系统功能。用 sql server2000 创建后台数据库,然后利用程序设计语言(VB)编写程序实现对数据库的操作,按照要求完成所有的功能和模块。 2、公司办公费用管理信息系统主要功能 (1)用户管理:用户登录界面、用户注册界面、办公费用申请界面、办公费用信息查询界面、本用户密码的修改界面 (2)管理员管理:管理员登录界面、办公费用查询界面、办公费用添加、删除界面、本用户密码修改界面。 3、公司办公费用管理信息系统数据库表单(可以按照需求增加) (1)用户信息表单:用户名、密码、用户身份(管理员和普通用户) (2)部门信息表单:部门编号、部门名称、部门负责人、联系电话、电子邮件、备注 (3)办公费用申请表单:序号、费用编号(外码) 、费用金额、部门编号(外码) 、申请年月、是否通过审核、备注 (4)办公费用类别表单:费用编号、费用名称 (5)办公费用控制表单:部门编号(外码) 、年份、本年预算、本年累计支出 (6)办公费用支出明细表单:序号、费用编号(外码) 、费用金额、部门编号(外码) 、支出日期 三、课程设计报告主要内容三、课程设计报告主要内容: 1 公司办公费用管理信息系统需求分析(给出系统功能模块图,对各功能作出详细介绍) 2 公司办公费用管理信息系统界面设计(给出界面截图及其主要控件的属性设置表格,并给出各界面的详细代码) 3 公司办公费用管理信息系统数据库设计(给出数据库各个表单中数据的字段名,数据类型及其相应的说明) 4 公司办公费用管理信息系统程序设计(功能模块给出详细的程序代码,重点语句的注释) 数据库课程设计报告 - 3 - 1. 公司办公费用管理信息系统需求分析 图 1.1 零件交易管理信息系统 1.1 欢迎界面 系统启动之后便可进入欢迎界面,单击“系统登陆”按钮便可进入选择登陆界面。 1.2 登录界面 1.2.1 选中管理员登录后便进入管理员服务界面 公司办公费用管理信息 登 录 用 户 登 录 管 理 员 登 录 用户服务 新用户注册 管理员服务 本用户密码的修改 办公费用信息查询 办公费用申请 办公费用查询 办公费用添加、删除 本用户密码的修改 添 加 更 新 删 除 查 询 数据库课程设计报告 - 4 - 1.2.2 选中用户登录后便进入用户服务界面 1.2.3 点注册弹出注册界面,注册成功可返回登录界面 1.3 管理员服务界面 可以进行办公费用查询,办公费用添加、删除,本用户密码修改。 1.3.1 本用户密码修改 管理员通过输入和确认新密码来更改自己的密码。 1.3.2 办公费用添加、删除 选此项后弹出选择费用修改类型,管理员可以查询,删除,添加费用信息,在 VB 界面中修改了数据库中的信息。 1.3.3 办公费用查询 管理员可以根据部门的编号进行查询,可以查询申请和支出两种费用。 1.4 用户界面 用户可以进行本用户密码的修改,查看零件信息和工程项目使零件情况。 1.4.1 本用户密码修改 用户通过输入和确认新密码来更改自己的密码。 1.4.2 办公费用申请 用户进入界面后可输入信息进行费用申请。 1.4.3 办公费用信息查询 用户可以根据部门的编号进行查询,可以查询申请和支出两种费用。 数据库课程设计报告 - 5 - 2公司办公费用管理信息系统 图 2.1 欢迎界面 图 2.2 登录界面 图 2.3 新用户注册界面 数据库课程设计报告 - 6 - 图 2.4 管理员服务界面 表 2.1 管理员服务界面属性表 对象 属性 设定值 Option1 Caption 本用户密码修改 Option2 Caption 办公费用添加、删除 Option3 caption 办公费用查询 图 2.5 用户服务界面 数据库课程设计报告 - 7 - 表 2.2 用户服务界面属性表 对象 属性 设定值 Option1 Caption 本用户密码修改 Option2 Caption 办公费用申请 Option3 caption 办公费用信息查询 图 2.6 用户/管理员密码修改界面 图 2.7 办公费用申请界面 图 2.8 办公费用查询界面(用户/管理员) 数据库课程设计报告 - 8 - 表 2.3 办公费用查询界面属性表 对象 属性 设置值 Dadagrid1 datasource Adodc1 Adodc1 Caption Adodc1 Commandstring DSN=chenzhao Commandtype 2-adcmdtable Recordsource Partment Visible false 图 2.9 费用修改类型选择 图 2.10 申请费用修改界面 表 2.4 申请费用修改界面属性表 对象 属性 设置值 Adodc1 Caption Adodc1 Commandstring DSN=chenzhao Commandtype 2-adcmdtable Recordsource Application Visible false Adodc2 Caption Adodc2 Commandstring DSN=chenzhao Commandtype 2-adcmdtable 数据库课程设计报告 - 9 - Visible false Recordsource Control 图 2.11 支出费用修改界面 表 2.5 支出费用界面属性表 对象 属性 设置值 dadagrid Datasource Adodc1 Adodc1 Caption Adodc1 Commandtype 2-adcmdtable Recordsource Out Visible false Adodc2 Caption Adodc2 Commandtype 2-adcmdtable Recordsource Out Visible false 图 2.11 MDI 主窗体界面 数据库课程设计报告 - 10 - 3公司办公费用管理信息系统数据库设计 公司办公费用管理信息系统总共有六张表:用户信息表单、部门信息表单、办公费用申请表单、办公费用类别表单、办公费用控制表单、办公费用支出明细表单。 表 3.1 用户信息表 Users 字段名称 标始名称 数据类型 是否允许为空 字段说明 Uname 用户名 char 否 主码 Ukey 密码 char 否 Utype 用户类型 char 否 表 3.2 部门信息表 Partment 字段名称 标始名称 数据类型 是否允许为空 字段说明 Pno 部门编号 char 否 主码 Pname 部门名称 char 否 Pmanager 负责人 char 是 Pcall 电话 char 是 Pemail 电子邮件 Char 是 Ps 备注 Char 是 表 3.3 办公费用申请表 Application 字段名称 标始名称 数据类型 是否允许为空 字段说明 Ano 序号 int 否 主码 Tno 费用编号 char 否 引用 Type 外码 Amoney 申请费用 char 是 Pno 部门编号 char 否 Partment 外码 Adate 申请时间 smalldatetime 是 Apermit 是否通过 char 是 Aps 备注 char 是 表 3.4 办公费用类别表 Type 字段名称 标始名称 数据类型 是否允许为空 字段说明 Tno 费用编号 char 否 主码 Tname 费用名称 char 否 表 3.5 办公费用控制表 Control 字段名称 标始名称 数据类型 是否允许为空 字段说明 Pno 部门编号 char 否 Partmen 外码 Cyear 年份 char 是 Cadvance 本年预算 char 是 Cout 本年支出 char 是 数据库课程设计报告 - 11 - 表 3.6 办公费用支出明细表 Out 字段名称 标始名称 数据类型 是否允许为空 字段说明 Ono 序号 int 否 主码 Tno 费用编号 char 否 引用 Type 外码 Omoney 支出金额 char 是 Pno 部门编号 char 否 Partment 外码 Odate 支出日期 Smalldatetime 是 4公司办公费用管理信息系统程序设计(部分代码) 4.1 欢迎界面 欢迎界面是整个系统的首页,用户可通过它进入到登录系统。 4.2 登录界面 进入此界面后, 使用者可根据自己的身份选择登录方式。 普通用户选择用户登录,管理员选择管理员登录。如果是新用户,直接点注册。代码如下: Dim a As Integer Private Sub Command1_Click() a = Combo1.ListIndex While a = 0 If Len(Text1.Text) 0 Then Adodc1.CommandType = adCmdText Adodc1.RecordSource = select uname from users where uname = & Trim(Text1.Text) & and Utype = & 用户 & Adodc1.Refresh Else MsgBox 请填写用户名 Exit Sub End If If Adodc1.Recordset.EOF = True Then MsgBox 姓名错误!, 48, warning! Text1.Text = Text2.Text = Exit Sub End If If Len(Text2.Text) 0 Then Adodc1.CommandType = adCmdText Adodc1.RecordSource = select ukey from users where uname = & Trim(Text1.Text) & Adodc1.Refresh Else 数据库课程设计报告 - 12 - MsgBox 请填写密码 Exit Sub End If If StrComp(Trim(Adodc1.Recordset.Fields(ukey).Value), Trim(Form2.Text2.Text) 0 Then MsgBox 密码错误!, 48, warning Text2.Text = Text2.SetFocus Exit Sub Else MsgBox 登录成功 Form4.Show Form2.Hide Exit Sub End If Wend While a = 1 If Len(Text1.Text) 0 Then Adodc1.CommandType = adCmdText Adodc1.RecordSource = select uname from users where uname = & Trim(Text1.Text) & and Utype = & 管理员 & Adodc1.Refresh Else MsgBox 请填写用户名 Exit Sub End If If Adodc1.Recordset.EOF = True Then MsgBox 姓名错误!, 48, warning! Text1.Text = Text2.Text = Exit Sub End If If Len(Text2.Text) 0 Then Adodc1.CommandType = adCmdText Adodc1.RecordSource = select ukey from users where uname = & Trim(Text1.Text) & Adodc1.Refresh Else MsgBox 请填写密码 Exit Sub End If If StrComp(Trim(Adodc1.Recordset.Fields(ukey).Value), Trim(Form2.Text2.Text) 0 Then MsgBox 密码错误!, 48, warning 数据库课程设计报告 - 13 - Text2.Text = Text2.SetFocus Exit Sub Else MsgBox 登录成功 Form5.Show Form2.Hide Exit Sub End If Wend End Sub Private Sub Command2_Click() Dim a As Integer a = MsgBox(您真的要退出吗?, 305, 提示) If a = 1 Then End End If End Sub Private Sub Command3_Click() Form3.Show End Sub Private Sub Form_Load() Combo1.AddItem 用户 Combo1.AddItem 管理员 Combo1.Text = Combo1.List(0) Text1.Text = Text2.Text = End Sub 4.3 用户服务界面 用户登录进去后,可以到用户服务界面选择自己所需的服务,该界面为用户提供了三种服务,分别是“本用户密码的修改” , “办公费用信息查询”和“办公费用申请” 。 4.4 管理员服务界面 管理员登录进去后,可以到管理员服务界面选择自己所需的服务,该界面为管理员提供了三种服务,分别是“本用户密码的修改” , “办公费用信息查询”和“办公费用添加、删除” 。 4.5 用户密码修改界面程序设计(管理员密码修改也是次界面) 用户如需修改自己的密码可在此界面进行,用户通过用户服务界面到此,然后数据库课程设计报告 - 14 - 在此界面中输入原始密码和新密码并验证新密码,确认后如果无误就会提示用户修改成功,并且其密码在用户信息表中也会有相应的修改。代码如下: Private Sub Command1_Click() If Trim(Text1.Text = ) Then MsgBox 请输入密码!, 0, 提示 Text1.SetFocus Exit Sub End If Adodc1.CommandType = adCmdText Adodc1.RecordSource = select ukey from users where uname = & Trim(Form2.Text1.Text) & And ukey = & Trim(Form6.Text1.Text) & Adodc1.Refresh If Adodc1.Recordset.EOF = True Then MsgBox 密码不正确,请重新输入!, 0, 提示 Text1.Text = Text2.Text = Text3.Text = Text1.SetFocus Exit Sub End If If Trim(Text2.Text) = Then MsgBox 请输入新密码, 0, 提示 Text2.SetFocus Exit Sub End If If Trim(Text2.Text) Trim(Text3.Text) Then MsgBox 新密码不一致,请从新输入, 0, 提示 Text2.Text = Text3.Text = Text2.SetFocus Exit Sub End If Adodc1.Recordset.Fields(ukey).Value = Trim(Text3.Text) Adodc1.Recordset.Update Adodc1.Refresh MsgBox 修改密码成功!, 0, 提示 Unload Me End Sub Private Sub Command2_Click() Unload Me End Sub 4.6 办公费用查询界面 数据库课程设计报告 - 15 - 用户可通过输入部门编号查找相应部门信息, 还可以查询此部门申请/支出费用信息。利用 datagrid 和 adodc 控件的连接显示出来。代码如下: Dim i As Variant Private Sub Command1_Click() Adodc1.Recordset.MoveFirst End Sub Private Sub Command2_Click() Adodc1.Recordset.MovePrevious If Adodc1.Recordset.BOF = True Then Adodc1.Recordset.MoveFirst End If End Sub Private Sub Command3_Click() Adodc1.Recordset.MoveNext If Adodc1.Recordset.EOF = True Then Adodc1.Recordset.MoveLast End If End Sub Private Sub Command4_Click() Adodc1.Recordset.MoveLast End Sub Private Sub Command5_Click() Unload Me End Sub Private Sub Command6_Click() Dim strpno As String Dim strselect As String strpno = Trim(Form7.Text1.Text) strselect = select type.tno,tname,amoney from type join application on type.tno = application.tno where application.pno = & strpno & Adodc1.CommandType = adCmdText Adodc1.RecordSource = strselect Adodc1.Refresh Set DataGrid1.DataSource = Adodc1 DataGrid1.Columns(0).Caption = 费用编号 DataGrid1.Columns(1).Caption = 费用名称 DataGrid1.Columns(2).Caption = 申请金额 End Sub Private Sub Command7_Click() Dim strpno As String Dim strselect As String strpno = Trim(Form7.Text1.Text) strselect = select type.tno,tname,omoney from type join out on type.tno = out.tno where out.pno = & strpno & 数据库课程设计报告 - 16 - Adodc1.CommandType = adCmdText Adodc1.RecordSource = strselect Adodc1.Refresh Set DataGrid1.DataSource = Adodc1 DataGrid1.Columns(0).Caption = 费用编号 DataGrid1.Columns(1).Caption = 费用名称 DataGrid1.Columns(2).Caption = 支出金额 End Sub Private Sub Command8_Click() Dim strselect As String strselect = select pno,pname,pmanager,pcall,pemail,ps from partment Adodc1.CommandType = adCmdText Adodc1.RecordSource = strselect Adodc1.Refresh Set DataGrid1.DataSource = Adodc1 DataGrid1.Columns(0).Caption = 部门编号 DataGrid1.Columns(1).Caption = 部门名称 DataGrid1.Columns(2).Caption = 负责人 DataGrid1.Columns(3).Caption = 联系电话 DataGrid1.Columns(4).Caption = 电子邮件 DataGrid1.Columns(5).Caption = 备注 End Sub Private Sub Command9_Click() Dim strselect As String If Len(Text4.Text) 0 Then strselect = select pno,pname,pmanager,pcall,pemail,ps from partment where pno = & Trim(Text4.Text) & Adodc1.CommandType = adCmdText Adodc1.RecordSource = strselect Adodc1.Refresh If Adodc1.Recordset.EOF = True Then MsgBox 没有这个部门 Text4.Text = Text4.SetFocus Exit Sub Else Set DataGrid1.DataSource = Adodc1 DataGrid1.Columns(0).Caption = 部门编号 DataGrid1.Columns(1).Caption = 部门名称 DataGrid1.Columns(2).Caption = 负责人 DataGrid1.Columns(3).Caption = 联系电话 DataGrid1.Columns(4).Caption = 电子邮件 DataGrid1.Columns(5).Caption = 备注 End If 数据库课程设计报告 - 17 - End If End Sub Private Sub Form_Load() Set DataGrid1.DataSource = Adodc1 DataGrid1.Columns(0).Caption = 部门编号 DataGrid1.Columns(1).Caption = 部门名称 DataGrid1.Columns(2).Caption = 负责人 DataGrid1.Columns(3).Caption = 联系电话 DataGrid1.Columns(4).Caption = 电子邮件 DataGrid1.Columns(5).Caption = 备注 End Sub 4.7 办公费用添加、删除界面 从管理员服务界面进入,有两种费用类型,申请/支出费用修改,管理员需要选择。申请费用修改界面代码如下: Dim a As Integer Dim b As Variant Dim c As Variant Private Sub Command5_Click() 设置文本可编辑 Text1.Locked = False Text2.Locked = False Text3.Locked = False Text7.Locked = False Text5.Locked = False Text6.Locked = False Adodc1.CommandType = adCmdText Adodc1.RecordSource = select max(ano) max from application Adodc1.Refresh a = Adodc1.Recordset.Fields(max).Value 将序号的最大值赋给 a Adodc1.CommandType = adCmdTable Adodc1.RecordSource = application Adodc1.Refresh Adodc1.Recordset.AddNew Text1.SetFocus Command5.Enabled = False Command6.Enabled = False Command7.Enabled = True Command8.Enabled = True End Sub Private Sub Command6_Click() Dim res As Integer Dim d As Variant res = MsgBox(确实要删除此行记录吗?, vbExclamation + vbYesNo + 数据库课程设计报告 - 18 - vbDefaultButton2) If res = vbYes Then If Adodc1.Recordset.RecordCount 1 Then Adodc2.CommandType = adCmdText Adodc2.RecordSource = select * from control where pno = & Trim(Text3.Text) & and cyear = & Mid$(Trim(Text5.Text), 1, 4) & Adodc2.Refresh 如果是通过的申请费用, 有日期的, 则从预算中减去这部分费用 If Trim(Text6.Text) = 是 And Len(Text5.Text) 0 Then d = Adodc2.Recordset.Fields(cadvance).Value - Val(Trim(Text2.Text) Adodc2.Recordset.Fields(cadvance).Value = d Adodc2.Recordset.Update End If Adodc1.Recordset.Delete Adodc1.Recordset.Update End If If Adodc1.Recordset.EOF = True Then Adodc1.Recordset.MoveLast End If Else MsgBox 不能将数据全部删除 Exit Sub End If End Sub Private Sub Command7_Click() Adodc1.Recordset.Fields(ano).Value = a + 1 If Len(Text1.Text) 0 Then Adodc2.CommandType = adCmdText Adodc2.RecordSource = select tno from type where tno = & Trim(Text1.Text) & Adodc2.Refresh If Adodc2.Recordset.EOF = True Then MsgBox 无此费用编号 Text1.Text = Text1.SetFocus Exit Sub Else Adodc1.Recordset.Fields(tno).Value = Trim(Text1.Text) End If End If If IsNumeric(Trim(Text2.Text) = True Then Adodc1.Recordset.Fields(amoney).Value = Trim(Text2.Text) 数据库课程设计报告 - 19 - Else MsgBox 请输入数字 Text2.Text = Text2.SetFocus Exit Sub End If If Len(Text3.Text) 0 Then Adodc2.CommandType = adCmdText Adodc2.RecordSource = select pno from partment where pno = & Trim(Text3.Text) & Adodc2.Refresh If Adodc2.Recordset.EOF = True Then MsgBox 无此部门编号 Text3.Text = Text3.SetFocus Exit Sub Else Adodc1.Recordset.Fields(pno).Value = Trim(Text3.Text) End If End If If Len(Text3.Text) = 0 Then MsgBox 请输入部门编号 Text3.SetFocus Exit Sub End If If Len(Text1.Text) 0 Then If IsDate(Trim(Text5.Text) = True Then Adodc1.Recordset.Fields(adate).Value = Trim(Text5.Text) Else MsgBox 日期格式错误,请按 XXXX-XX-XX 输入 Text5.Text = Text5.SetFocus Exit Sub End If End If Adodc1.Recordset.Fields(apermit).Value = Trim(Text6.Text) Adodc1.Recordset.Fields(aps).Value = Trim(Text7.Text) 如果申请通过,则将申请的费用金额加如到对应预算中 If Trim(Text6.Text) = 是 Then 数据库课程设计报告 - 20 - If Len(Text5.Text) 0 Then b = Mid$(Trim(Text5.Text), 1, 4) 取日期的年份 Adodc2.CommandType = adCmdText Adodc2.RecordSource = select * from control where pno = & Trim(Text3.Text) & and cyear = & b & Adodc2.Refresh c = Adodc2.Recordset.Fields(cadvance).Value + Val(Trim(Text2.Text) 取预算金额和申请金额之和 Adodc2.Recordset.Fields(cadvance).Value = c Adodc2.Recordset.Update End If End If Adodc1.Recordset.Update MsgBox 更新成功 设置文本不可编辑 Text1.Locked = True Text2.Locked = True Text3.Locked = True Text7.Locked = True Text5.Locked = True Text6.Locked = True Command5.Enabled = True Command6.Enabled = True Command8.Enabled = False End Sub Private Sub Command8_Click() Adodc1.Recordset.CancelUpdate Command5.Enabled = True Command6.Enabled = True Command8.Enabled = False End Sub Private Sub Form_Load() Command8.Enabled = False Command7.Enabled = False End Sub Private Sub Command1_Click() Adodc1.Recordset.MoveFirst End Sub Private Sub Command2_Click() Adodc1.Recordset.MovePrevious If Adodc1.Recordset.BOF = True Then Adodc1.Recordset.MoveFirst End If End Sub 数据库课程设计报告 - 21 - Private Sub Command3_Click() Adodc1.Recordset.MoveNext If Adodc1.Recordset.EOF = True Then Adodc1.Recordset.MoveLast End If End Sub Private Sub Command4_Click() Adodc1.Recordset.MoveLast End Sub 支出费用修改代码如下: Dim a As Integer Dim b As Variant Dim c As Variant Private Sub Command5_Click() Adodc1.CommandType = adCmdText Adodc1.RecordSource = select max(ono) max from out Adodc1.Refresh a = Adodc1.Recordset.Fields(max).Value Adodc1.CommandType = adCmdTable Adodc1.RecordSource = out Adodc1.Refresh Adodc1.Recordset.AddNew Text1.SetFocus Command5.Enabled = False Command6.Enabled = False Command7.Enabled = True Command8.Enabled = True End Sub Private Sub Command6_Click() Dim res As Integer res = MsgBox(确实要删除此行记录吗?, vbExclamation + vbYesNo + vbDefaultButton2) If res = vbYes Then If Adodc1.Recordset.RecordCount 1 Then 如果支出的费用有日期,则从总支出中去掉这部分支出 If Len(Text5.Text) 0 Then Adodc2.CommandType = adCmdText Adodc2.RecordSource = select * from control where pno = & Trim(Text3.Text) & and cyear = & Mid$(Trim(Text5.Text), 1, 4) & Adodc2.Refresh d = Adodc2.Recordset.Fields(cout).Value - Val(Trim(Text2.Text) Adodc2.Recordset.Fields(cout).Value = d Adodc2.Recordset.Update 数据库课程设计报告 - 22 - Adodc1.Recordset.Delete Adodc1.Recordset.Update End If If Adodc1.Recordset.EOF = True Then Adodc1.Recordset.MoveLast End If Else MsgBox 不能将数据全部删除 Exit Sub End If End If End Sub Private Sub Command7_Click() Adodc1.Recordset