1、办公用品管理信息系统班级:09电子商务姓名:熊弈 王晗 黄剑锋目录摘要.31.办公用品管理模块概述1.1办公用品管理模块开发的目的1.2办公用品管理模块开发的意义1.3系统的开发方法2. 系统分析与总体设计2.1 系统需求分析2.2 系统体系结构设计2.3数据库结构设计2.3.1部门信息表2.3.2分类信息表2.3.3供应商信息表2.3.4库存信息表2.3.5入库信息表2.3.6领用信息表2.3.7领用信息明细表2.3.8用户信息表3.登录窗体和系统主界面设计3.1设计登录窗体3.2 设计主界面4. 基本信息管理模块设计4.1设计分类信息管理窗体4.2设计部门管理窗体4.3设计供应商信息编辑窗
2、体4.4设计供应商信息管理窗体5.办公用品信息管理模块设计5.1设计入库信息编辑窗体5.2 设计入库信息管理窗体5.3 设计库存信息管理窗体5.4设计领用信息编辑窗体5.5 设计领用信息管理窗体5.6 设计领用明细编辑窗体5.7 设计领用明细信息管理窗体6.数据统计管理模块设计6.1设计库存短缺统计窗体6.2 设计入库统计窗体6.3设计领用统计窗体7.用户管理模块设计7.1 设计用户信息编辑窗体7.2 设计用户管理窗体8.总结摘要在新的时期,基于多年办公自动化建设经验和互连网技术的发展,我们对办公用品管理自动化的认识也越来越清楚,从网络的性质来看,办公用品管理自动化应定位于内部网,从办公性质来
3、看,办公用品管理自动化应定位于数字化办公,从信息化建设的角度来看,办公用品管理自动化应是信息化建设的重要组成部分。办公用品管理自动化可以和一个企业的业务结合的非常紧密,甚至是定制的。因而可以将诸如办公用品信息管理、物品分发,统计等功能与具体业务密切关联。操作人员只须点击一个按钮就可以得到想要的结果,从而极大得方便了企业领导的管理和决策。 每个企业经营者,都在利用规范的管理流程来提高企业的效益。可这一切仅靠人是很难及时准确地完成包括统计在内的工作。针对这些企业办公用品管理存在的缺陷,我开发了办公用品管理模块,目的是要做到科学化、自动化、系统化、规范化,用电脑管理来替代原来以手工、复杂、繁琐的办公
4、用品管理。该模块主要为办公用品申领服务。它包括办公用品信息管理、办公用品的申请、办公用品的分发、办公用品的统计、物品领取权限管理、入库管理六大功能,目的是要做到科学化、自动化、系统化、规范化的电脑管理,进一步有效的解决了公司内部以手工为主,复杂、繁琐的办公用品管理问题。1.办公用品管理模块概述1.1办公用品管理模块开发的目的办公用品管理模块开发的总体目标:以先进成熟的计算机和通信技术为主要手段,建成一个覆盖企业办公部门办公用品管理信息系统,通过网络技术,提高本单位的办公用品管理的效率,为领导决策和办公提供服务,实现办公用品管理现代化、信息资源化、传输网络化和决策科学化。办公用品管理模块开发的根
5、本目的有两个:第一是将管理规范化、合理化、高效化,贯穿先进的管理思想;第二是通过数据采集和分析处理,为领导层提供决策支持。具体地说,实行办公用品管理自动化后,将增强职工的协同工作能力,增进职工之间的沟通与共享;强化领导的监控管理,增强领导的决策支持;提高工作效率,提高工作的透明度;加速工作的运转速度,提高工作质量;降低管理成本,提高管理水平,促进管理的规范化。1.2办公用品管理模块开发的意义办公用品管理模块开发的意义:随着网络技术和软件技术的飞速发展,特别是Internet/Intranet的出现及其相关技术的迅速发展,信息革命带来了全球范围市场竞争的日益加剧,对传统的办公和生活方式产生了巨大
6、冲击。所有的企业都面临着严峻的挑战,面对这样的形势,越来越多的企业打算或正在将计算机网络技术引入到企业的日常经营管理上来,改变过去单纯的手工办公方式,以便在企业内实现信息共享、协同工作乃至科学的管理和决策,从而提高效率、增强企业的竞争力。 每个企业经营者,都在利用规范的管理流程来提高企业的效益。可这一切仅靠人是很难及时准确地完成包括统计在内的工作。针对这些企业办公用品管理存在的缺陷,我开发了办公用品管理模块,目的是要做到科学化、自动化、系统化、规范化,用电脑管理来替代原来以手工、复杂、繁琐的办公用品管理,为广大企、事业单位提高管理效益助一臂之力。办公用品管理系统将成为每个企、事业的小当家,在理
7、清家务的同时,减少浪费,花出该花的,省下可省的。弥补企业管理上的漏洞,提高管理员的工作效率,为公司带来经济效益。1.3系统的开发方法(1)本系统采用VB可视化面向对象的快速开发工具开发(2)由于本系统设计成单机版。后台数据库采用ACCESS2003。(3)开发工具:中文版Visual Basic6.0、ACCESS2003(4)客户端运行环境:Windowxp(5)系统分析是采用系统的思想和方法,把复杂的对象分解成简单的组成部分,找出这些部分的基本属性和彼此之间的联系。针对现行办公用品计算机管理系统中存在的问题,为了提高信息采集的迅速性和准确性,利用计算机所具有的特殊功能处理宾馆客房管理系统中
8、大量复杂的数据,及时输出各种管理信息和业务信息,为各级人员有效的管理和决策提供有力的依据,提高工作效率和经济效益,在全面调查的基础上提出了系统的总体逻辑描述。2. 系统分析与总体设计2.1 系统需求分析办公用品管理系统的用户是各单位管理办公用品的员工和领导。主要功能包括基本信息管理、办公用品管理和数据统计等,具体说明如下:(1) 基本信息的添加、修改、删除和查询。基本信息包括分类、部门和供应商等内容,为办公用品管理和数据统计模块提供依据。(2) 办公用品信息的添加、修改、删除和查询。办公用品信息包括领用信息、入库信息和库存信息。(3)数据统计模块包括库存短缺统计、入库统计和领用统计等功能。2.
9、2 系统体系结构设计办公用品管理系统功能模块办公用品管理系统基本信息 管理部门管理分类管理供应商管理领用管理入库统计领用统计用户信息管理修改自身密码办公用品管理入库管理库存管理数据统计管理库存短缺统计系统用户管理用户管理功能模块系统用户信息管理Admin 用户普通用户修改Admin用户的密码创建、修改和删除普通用户信息修改自身的用户名和密码系统流程分析图开始用户登录失败超过3次失败重试退出程序是读取用户类型成功普通用户Admin用户管理自己的用户信息1.管理自己的用户信息2.管理普通用户的用户信息基本信息管理办公用品管理数据统计管理用户管理模块办公用品管理模块2.3数据库结构设计2.3.1部门
10、信息表编号字段名称数据结构说明12DepId自动编号记录编号,主键DepName文本,长度50部门名称2.3.2分类信息表编号字段名称数据结构说明1TypeId自动编号记录编号,主键2TypeName文本,长度50分类名称3UpperId数字/长整性上级分类编号2.3.3供应商信息表编号字段名称数据结构说明1Sid自动编号记录编号,主键2SName文本,长度100供应商名称3Tel文本,长度50电话4Address文本,长度100地点5Contact文本,长度50联系人6Memos文本,长度200备注信息2.3.4库存信息表编号字段名称数据结构说明1OId自动编号记录编号,主键2OName文本
11、,长度50办公用品名称3OStyle文本,长度50型号4TypeLd数字/长整型办公用品分类编号5OAmount数字/整型库存数量6MOin数字/整型最小库存数量,库存低于此数量则表示库存短缺7Memos文本,长度200备注信息2.3.5入库信息表编号字段名称数据结构说明1InId自动编号记录编号,主键2OId数字/长整型办公用品编号3InDate日期/时间入库日期4SId数字/长整型供应商编号5InAmount数字/整型入库数量6InSum数字/单精度型入库总金额7Memos文本,长度200备注信息8Flag数字/字节状态标志,0表示创建,1便是入库2.3.6领用信息表编号字段名称数据结构说
12、明1Id自动编号记录编号,主键2CreateDate日期/时间领用日期3DepId数字/长整型领用部门编号4Flag数字/字节领用标记。0表示未领用,1表示已领用2.3.7领用信息明细表编号字段名称数据结构说明1Id自动编号记录编号,主键2DId数字/长整型领用单编号3OId数字/长整型办公用品编号4OAmount数字/整型领用数量2.3.8用户信息表编号字段名数据类型说明1UserName文本,长度50用户名,主键2UserPwd文本,长度50密码3.登录窗体和系统主界面设计当系统运行时,首先打开登录,只有有权限的用户才能进入系统。登录成功后,将显示系统主界面。3.1设计登录窗体Public
13、 PasswordKey As StringPublic Try_times As IntegerPublic NameKey As StringPrivate Sub Cmd_Cancel_Click() EndEnd SubPrivate Sub Cmd_OK_Click() Dim j As Single数据有效性检查 If txtUser = Then MsgBox 请输入用户名 txtUser.SetFocus Exit Sub End If If txtPwd = Then MsgBox 请输入密码 txtPwd.SetFocus Exit Sub End If NameKey =
14、 Trim(txtUser) PasswordKey = Trim(txtPwd) 判断用户是否存在 If MyUser.In_DB(NameKey) = False Then MsgBox 用户名不存在 Try_times = Try_times + 1 If Try_times = 3 Then MsgBox 您已经三次尝试进入本系统,均不成功,系统将关闭 DBapi_Disconnect End Else Exit Sub End If End If 判断密码是否正确 MyUser.GetInfo (NameKey) If MyUser.UserPwd PasswordKey Then
15、MsgBox 密码错误 Try_times = Try_times + 1 If Try_times = 3 Then MsgBox 您已经三次尝试进入本系统,均不成功,系统将关闭 DBapi_Disconnect End Else Exit Sub End If End If 登录成功,将当前用户的信息保存在CurUser中 CurUser.GetInfo (MyUser.UserName)关闭自己 Unload MeEnd SubPrivate Sub Frame1_DragDrop(Source As Control, X As Single, Y As Single)End Sub3.
16、2 设计主界面Private Sub Form_Load() FrmLogin.Show 1End SubPrivate Sub mn_ChangePwd_Click() With FrmUserEdit .OriUser = CurUser.UserName .txtUserName = CurUser.UserName .txtPass = CurUser.UserPwd .txtPass2 = CurUser.UserPwd .txtUserName.Enabled = False .Modify = True .Show 1 End WithEnd SubPrivate Sub mn_
17、Department_Click() FrmDepMan.Show 1End SubPrivate Sub mn_Draw_Click() FrmDrawMan.Show 1End SubPrivate Sub mn_Exit_Click() DBapi_Disconnect EndEnd SubPrivate Sub mn_In_Click() FrmStoreInMan.Show 1End SubPrivate Sub mn_SByDraw_Click() FrmSByDraw.Show 1End SubPrivate Sub mn_SByIn_Click() FrmSByIn.Show
18、1End SubPrivate Sub mn_Short_Click() FrmShortMan.Show 1End SubPrivate Sub mn_Store_Click() FrmStoreMan.Show 1End SubPrivate Sub mn_Supplier_Click() FrmSupplierMan.Show 1End SubPrivate Sub mn_Types_Click() FrmTypeMan.Show 1End SubPrivate Sub mn_Users_Click() 只有系统管理员才能进入用户管理窗体 If Trim(CurUser.UserName
19、) = Admin Then FrmUserMan.Show 1 Else 其他用户只能编辑自己的用户信息 With FrmUserEdit .OriUser = CurUser.UserName .txtUserName = CurUser.UserName .txtPass = CurUser.UserPwd .txtPass2 = CurUser.UserPwd .txtUserName.Enabled = False .Modify = True .Show 1 End With End IfEnd Sub4. 基本信息管理模块设计 基本信息管理模块包括分类信息管理、部门信息管理和供应
20、商信息管理。4.1设计分类信息管理窗体Private Sub Form_Load() LoadTypes DataList2.Enabled = FalseEnd Sub装入一级分类名称Private Sub LoadTypes() Adodc1.ConnectionString = Conn Adodc1.RecordSource = Select * From Types Where UpperId=0 Order By TypeId Adodc1.Refresh Set DataList1.RowSource = Adodc1 DataList1.ListField = TypeName
21、 DataList1.BoundColumn = TypeIdEnd Sub根据一级分类编号 装入二级分类名称Private Sub LoadTypes2() Adodc2.ConnectionString = Conn Adodc2.RecordSource = Select * From Types Where UpperId= + Trim(DataList1.BoundText() + Order By TypeId Adodc2.Refresh Set DataList2.RowSource = Adodc2 DataList2.ListField = TypeName DataLi
22、st2.BoundColumn = TypeIdEnd Sub修改选项时,数据列表状态更改Private Sub Option1_Click(Index As Integer) If Index = 0 Then DataList1.Enabled = True DataList2.Enabled = False Else DataList1.Enabled = False DataList2.Enabled = True End IfEnd Sub4.2设计部门管理窗体Public OriDepId As LongPublic OriOldName As StringPrivate Sub
23、Cmd_Add_Click() 添加部门名称,先判断域是否为空 If Len(Trim(txtName) = 0 Then MsgBox (请输入部门名称) txtName.SetFocus Exit Sub End If 判断数据库中是否已经存在此部门名称 If MyDep.In_DB(Trim(txtName) = True Then MsgBox (已经存在此部门名称) txtName.SetFocus Exit Sub End If 插入新记录 With MyDep .DepName = Trim(txtName) .Insert MsgBox (添加成功) End With Data
24、RefreshEnd SubPrivate Sub Cmd_Back_Click() Unload MeEnd SubPrivate Sub Cmd_Del_Click() If Len(Trim(DataList1.BoundText) = 0 Then MsgBox (请选择记录) Exit Sub End If 确定删除 If MsgBox(是否确定要删除 , vbYesNo, 请确认) = vbNo Then Exit Sub End If 判断其他表中是否存在此部门信息 删除部门 MyDep.Delete (Val(DataList1.BoundText) MsgBox (删除成功)
25、 DataRefresh 刷新DataList1End SubPrivate Sub Cmd_Modi_Click() 修改部门名称 If Len(Trim(DataList1.BoundText) = 0 Then MsgBox (请选择记录) Exit Sub End If 判断新的名称是否和原来的相同 If Trim(txtName) = OriOldName Then Exit Sub End If 判断新的名称是否已经存在 If MyDep.In_DB(Trim(txtName) = True Then MsgBox (已经存在此部门名称) txtName.SetFocus Exit
26、 Sub End If 更新部门名称 MyDep.DepName = Trim(txtName) MyDep.Update (OriDepId) MsgBox (修改成功) DataRefresh 刷新部门列表End SubPrivate Sub DataList1_Click() If Len(Trim(DataList1.Text) = 0 Then Exit Sub End If OriDepId = DataList1.BoundText txtName = Trim(DataList1.Text) OriOldName = Trim(DataList1.Text)End SubPri
27、vate Sub Form_Load() 装入部门信息 DataRefreshEnd SubPrivate Sub DataRefresh() 设置连接字符串 Adodc1.ConnectionString = Conn Adodc1.RecordSource = Select * From Department Order By DepId Adodc1.Refresh Set DataList1.RowSource = Adodc1 DataList1.ListField = DepName DataList1.BoundColumn = DepId DataList1.RefreshEn
28、d Sub4.3设计供应商信息编辑窗体Public OriSId As LongPublic Modify As BooleanPrivate Sub Cmd_Cancel_Click() Unload MeEnd SubPrivate Sub Cmd_OK_Click() 检查输入数据的有效性 If Len(Trim(txtName) = 0 Then MsgBox 请输入供应商名称 txtName.SetFocus Exit Sub End If If Len(Trim(txtContact) = 0 Then MsgBox 请输入联系人姓名 txtContact.SetFocus Exi
29、t Sub End If If Len(Trim(txtTel) = 0 Then MsgBox 请输入联系电话 txtTel.SetFocus Exit Sub End If With MySupplier .SName = Trim(txtName) .Tel = Trim(txtTel) .Address = Trim(txtAddress) .Contact = Trim(txtContact) .Memos = Trim(txtMemo) If Modify = False Then .Insert MsgBox 添加成功 Else .Update (OriSId) MsgBox 保
30、存成功 End If End With Unload MeEnd SubPrivate Sub Form_Load()End Sub4.4设计供应商信息管理窗体Private Sub Cmd_Add_Click() FrmSupplierEdit.Modify = False FrmSupplierEdit.Show 1 DataRefreshEnd SubPrivate Sub Cmd_Back_Click() Unload MeEnd SubPrivate Sub DataRefresh() Dim StrSearch As String StrSearch = If Len(Trim(t
31、xtName) 0 Then 设置查询条件 StrSearch = Where SName Like % + Trim(txtName) + % End If Adodc1.ConnectionString = Conn Adodc1.RecordSource = Select SId,SName AS 供货商名称,Tel AS 联系电话, _ + Address AS 地址,Contact AS 联系人,Memos AS 备注 _ + From Supplier + StrSearch + Order By SId Adodc1.Refresh Set DataGrid1.DataSourc
32、e = Adodc1 DataGrid1.Columns(0).Width = 0 DataGrid1.Columns(1).Width = 1600 DataGrid1.Columns(2).Width = 1400 DataGrid1.Columns(3).Width = 1800 DataGrid1.Columns(4).Width = 1400 DataGrid1.Columns(5).Width = 1600End SubPrivate Sub Cmd_Del_Click() If Adodc1.Recordset.EOF Then MsgBox 请选择记录 Exit Sub End
33、 If 判断入库信息表中是否存在此供应商信息 If MyIn.GetSupplier(Adodc1.Recordset.Fields(0) Then MsgBox 不允许删除此供应商 Exit Sub End If MySupplier.Delete (Adodc1.Recordset.Fields(0) MsgBox 删除成功 DataRefreshEnd SubPrivate Sub Cmd_Modi_Click() If Adodc1.Recordset.EOF Then MsgBox 请选择记录 Exit Sub End If FrmSupplierEdit.Modify = True
34、 FrmSupplierEdit.OriSId = Adodc1.Recordset.Fields(0) FrmSupplierEdit.txtName = Trim(Adodc1.Recordset.Fields(1) FrmSupplierEdit.txtTel = Trim(Adodc1.Recordset.Fields(2) FrmSupplierEdit.txtAddress = Trim(Adodc1.Recordset.Fields(3) FrmSupplierEdit.txtContact = Trim(Adodc1.Recordset.Fields(4) FrmSupplie
35、rEdit.txtMemo = Trim(Adodc1.Recordset.Fields(5) FrmSupplierEdit.Show 1 DataRefreshEnd SubPrivate Sub Cmd_Search_Click() DataRefreshEnd SubPrivate Sub DataGrid1_Click()End SubPrivate Sub Form_Load() DataRefreshEnd Sub5.办公用品信息管理模块设计 办公用品信息管理模块包括入库管理、库存管理和领用管理等功能。5.1设计入库信息编辑窗体Public OriInId As LongPubl
36、ic Modify As BooleanPrivate Sub Cmd_Cancel_Click() Unload MeEnd SubPrivate Sub Cmd_OK_Click() If Len(Trim(dco_UType.Text) = 0 Then MsgBox 请选择一级分类名称 dco_UType.SetFocus Exit Sub End If If Len(Trim(dco_Type.Text) = 0 Then MsgBox 请选择二级分类名称 dco_Type.SetFocus Exit Sub End If If Len(Trim(dco_Store.Text) =
37、0 Then MsgBox 请选择办公用品名称 dco_Store.SetFocus Exit Sub End If If Len(Trim(dco_Supplier.Text) = 0 Then MsgBox 请选择供货商名称 dco_Supplier.SetFocus Exit Sub End If If Len(Trim(txtDate) = 0 Then MsgBox 请输入入库日期 txtDate.SetFocus Exit Sub End If If Len(Trim(txtAmount) = 0 Or Val(txtAmount) = 0 Then MsgBox 请输入入库数量
38、txtAmount.SetFocus Exit Sub End If With MyIn .OId = dco_Store.BoundText() .InDate = Trim(txtDate) .SId = dco_Supplier.BoundText() .InAmount = Val(txtAmount) .InSum = Val(txtSum) .Memos = Trim(txtMemo) If Modify = False Then .Insert MsgBox 添加成功 Else .Update (OriInId) MsgBox 保存成功 End If End With Unloa
39、d MeEnd SubPrivate Sub dco_Type_Click(Area As Integer) If Len(Trim(dco_Type.Text) 0 Then Ado_Store.ConnectionString = Conn Ado_Store.RecordSource = Select * From Store Where TypeId= + Trim(dco_Type.BoundText() + Order By OId Ado_Store.Refresh Set dco_Store.RowSource = Ado_Store dco_Store.ListField =
40、 OName dco_Store.BoundColumn = OId dco_Store.Text = End IfEnd SubPrivate Sub dco_UType_Click(Area As Integer) If Len(Trim(dco_UType.Text) 0 Then Ado_Type.ConnectionString = Conn Ado_Type.RecordSource = Select * From Types Where UpperId= + Trim(dco_UType.BoundText() + Order By TypeId Ado_Type.Refresh
41、 Set dco_Type.RowSource = Ado_Type dco_Type.ListField = TypeName dco_Type.BoundColumn = TypeId dco_Type.Text = End IfEnd SubPrivate Sub Form_Load() 装入分类信息 Ado_UType.ConnectionString = Conn Ado_UType.RecordSource = Select * From Types Where UpperId=0 Order By TypeId Ado_UType.Refresh Set dco_UType.RowSource = Ado_UType dco_UType.ListField = TypeName dco_UType.BoundColumn = TypeI