可视化编程技术课程设计(论文)设备管理系统.doc
辽 宁 工 业 大 学 可视化编程技术 课程设计(论文)题目: 设备管理系统 院(系): 专业班级: 学 号: 学生姓名: 指导教师: 教师职称: 助 教 起止时间:2010.11.22至2010.12.5 课程设计(论文)任务及评语院(系):软件学院 教研室:软件教研窒学 号学生姓名专业班级课程设计(论文)题目设备管理系统课程设计(论文)任务课程设计任务及要求:1、掌握VB程序设计语言的基础知识。2、设计所选择的题目,对具体功能进行详细的分析,根据系统的要求在VB中设计窗体界面,使其合理化。3、编写代码,实现系统的功能。4、通过调试程序,加深对VB编程的基本技巧及方法的理解。5、了解VB与数据库的连接方法。课程设计过程中,要严格遵守实践环节的时间安排,听从指导教师的指导。正确地完成上述内容,记录实习日记,规范完整地撰写出课程设计论文。指导教师评语及成绩成绩: 指导教师签字: 2010 年 12 月 6 日目 录第1章 课程设计目的与要求11.1 课程设计目的11.2 课程设计的实验环境11.3 课程设计的预备知识11.4 课程设计要求1第2章 课程设计内容22.1 系统功能设计22.2 系统详细设计32.3 系统运行与测试13第3章 课程设计总结18参考文献19第1章 课程设计目的与要求1.1 课程设计目的本课程的课程设计实际是学生学习完可视化编程技术课程后,进行的一次全面的综合训练,其目的在于加深对可视化编程技术基本知识的理解,掌握运用VB开发应用程序的基本方法及基本技巧。1.2 课程设计的实验环境硬件要求能运行Windows 9.X操作系统的微机系统。软件:Microsoft Visual Basic 6.0 Microsoft Access 20031.3 课程设计的预备知识熟悉Visual Basic 6.0程序设计的基本语法知识及常用技巧。1.4 课程设计要求按课程设计指导书提供的课题,每个小组设计一个完整的管理系统应用程序。要求根据规定设计系统的具体要求,按照应用程序的设计步骤和VB的基本知识应用程序的分析与实现。应根据基本学时分配合理安排设计时间,并独立完成各方面的设计。选择同一题目的同学,可以共同协作完成一个应用程序的开发任务。要求书写详细的设计说明书,对有复杂的代码段和程序段的部分,应画出程序流程图,写出全部的代码。在界面设计中,需画出每个窗体的布局,进行属性说明,杜绝雷同。第2章 课程设计内容2.1系统功能设计2.1.1 系统功能分析系统详细功能阐述。本系统中的应用程序使用的是Visual Basic,它是Mricrosoft公司开发的一个套件部分,是一个功能丰富,方便实用的程序开发环境,它的一个很大的特点就是功能强大,编程简单的数据库操作能力。可视化的开发环境,丰富的数据库访问控件的支持,使它成为数据库应用程序项目中重要的开发工具。一个完备的企业设备管理信息系统具有以下优越性:方便领导查询企业设备的使用情况,节省时间,可以提高系统的工作效率和准确性。为了适应新形势的发展,我进行了这一系统的初步设计工作,也可以说是做一个初步的探索,希望它能够在查询企业设备信息时发挥高效、便捷的作用,把系统管理员从繁重的工作中解脱出来!该企业设备管理信息系统是以ACCESS数据库为后台核心应用、以服务为目的信息平台,对资源进行科学的加工整序和管理维护,为企业设备信息提供管理。该系统的目标是以最低的成本,在最短的期限内开发出企业设备管理信息系统。系统能减少很多不必要的资源,不用象以前那样用冗余的纸张式的管理。大大节省了学校能源。并且计算机的存储与快速查询功能大大提高了企业设备信息管理的效率,并且还提高了企业设备信息管理的精确度。方便快速的操作,可减少企业设备信息管理的漏洞,又减少因工作的冗余出现的错误,并且操作非常简单,可减少许多不很必要的人员,这无论从物质上还是工作人员的工资上都为企业节约了开支。为企业增加了财富。 目标系统开发需求比较低,加上具有成熟的软硬件环境,所以在软硬件的支出上比较低。而且,目标系统并不是十分的复杂。当系统开发完实际运行后,将很大程度上提高计算机的功能,在为使用者带来便利的同时,也为系统的进一步推广创造了条件。2.1.2 系统功能模块设计企业设备管理系统系统管理设备管理配件管理维修管理配件删除管理员登陆设备添加设备报废设备信息配件添加配件修改维修添加维修查询退出密码修改用户管理综合查询管理设备使用设备调拨图2.1系统功能模块图2.2系统详细设计2.2.1 用户登入模块设计1. 界面设计用户拥有自己的用户名、密码和使用权限。当输入用户名和密码以后,点击“确定”键,如果用户名和密码都正确就可以顺利进入主窗体,如果输入错误,那么就有相应的提示信息。如图2.2所示。图2.2用户登入界面窗体对 象属属 性 值说 明Form1NamefrmLogin 身份验证Caption身份验证 Command1Name cmdOKCaption 确定Command2Name cmdOK 将输入的信息清空Caption 取消Text1Name txtPassword 清空Text NoveText2Name txtPassword 清空Text Nove表 2.1 属性值表用户管理界面设计可以添加、删除用户,此界面普通用户不能进入。图2.3用户管理界面 对 象属 属 性 值 说 明Form1Name frmLogin 用户管理Caption 用户管理DataGrid1 Name用户各项信息Command1NamecmdOK添加按钮 Caption添加Command2NamecmdOK删除按钮 Caption删除Command3NamecmdOK Caption修改Command4NamecmdOK Caption返回表 2.2 属性值表如果两次输入的新密码不一样,将出现提示信息。图2.4修改密码界面Text1Name txtPassword 清空Text NoveText2Name txtPassword 清空Text NoveText3NametxtPassword清空TextNove Text4NametxtPassword清空TextNove表 2.1 属性值表图2.4部门分类管理界面 对 象属 属 性 值 说 明Form1NamefrmLogin 部门分类管理Caption 部门分类管理DataGrid1 Name部门各项信息Command1NamecmdOK添加按钮 Caption添加Command2NamecmdOK删除按钮 Caption删除Command3NamecmdOK更新按钮Caption更新Command4NamecmdOK返回按钮Caption返回Text1Name部门编号TexttxtPasswordText2Name部门名称TexttxtPassword表 2.2 属性值表2.代码设计身份验证界面代码:Dim strPwd As String Dim rsPwd As ADODB.Recordset Dim strLogin As String Dim sql As String Dim pwdCount As Integer Set con = New ADODB.Connection con.Open "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=企业设备" strLogin = Trim(Text1.Text) strPwd = Trim(Text2.Text) If Len(strLogin) = 0 Then MsgBox "用户名不能为空,请输入用户名", 68, "提示" Text1.SetFocus Exit Sub End If If Len(strPwd) = 0 Then MsgBox "密码不能为空,请输入正确的密码", 68, "提示" Text2.SetFocus Exit Sub End Ifsql = "SELECT UserPwd,UserType FROM Users WHERE UserName='" + strLogin + "'" Set rsPwd = con.Execute(sql)If rsPwd.EOF Then MsgBox "用户名不正确,请重新输入!", 68, "提示" Text1.SetFocus Exit SubElseIf strPwd = rsPwd("UserPwd").Value Then LoginSucceeded = True Else MsgBox "密码不正确,请重新输入!", 68, "提示" Text2.SetFocus Text2.Text = "" Exit Sub End If If rsPwd("UserType").Value = 0 Then FrmMain.mn_Users.Enabled = False FrmDeviceEdit.Cmd_Add.Enabled = False FrmDeviceEdit.Cmd_Modi.Enabled = False FrmDeviceEdit.Cmd_Del.Enabled = False FrmDept.Add.Enabled = False FrmDept.DEL.Enabled = False FrmDept.Edit.Enabled = False FrmDept.Text1.Enabled = False FrmDept.Text2.Enabled = False FrmType.Add.Enabled = False FrmType.DEL.Enabled = False FrmType.Edit.Enabled = False FrmType.Text1.Enabled = False FrmType.Text2.Enabled = False FrmUse.Command1.Enabled = False FrmUse.Command2.Enabled = False FrmUse.Command3.Enabled = False FrmUse.Command6.Enabled = False FrmDeviceEdit.Cmd_Add.Enabled = False FrmDeviceEdit.Cmd_Del.Enabled = False FrmDeviceEdit.Cmd_Modi.Enabled = False FrmLend.Command1.Enabled = False FrmLend.Command2.Enabled = False FrmLend.Command4.Enabled = False FrmLend.Command7.Enabled = False FrmLend.Command8.Enabled = False FrmMntenanceEdit.Command1.Enabled = False FrmMntenanceEdit.Command2.Enabled = False FrmMntenanceEdit.Command3.Enabled = False FrmMntenanceEdit.Command8.Enabled = False FrmDiscard.Command1.Enabled = False FrmDiscard.Command3.Enabled = False FrmDiscard.Command4.Enabled = False FrmMain.Show FrmLogin.Hide Text1.Text = "" Text2.Text = "" ElseIf rsPwd("UserType").Value = 1 Then FrmMain.Show FrmLogin.Hide Text1.Text = "" Text2.Text = "" Else FrmMain.Show FrmLogin.Hide Text1.Text = "" Text2.Text = "" End IfEnd Sub该Sub过程是对主界面的设计,设备管理系统的全部功能主选项。并连接到下面的Sub和fuction过程,使整个系统可以顺利进行。用户管理界面代码:对“删除”按钮所编的代码如下:Private Sub Del_Click() '删除信息 a = MsgBox("真的删除此纪录么?", vbYesNo) If a = vbYes Then DataGrid1.AllowDelete = True Adodc1.Recordset.Delete Adodc1.Refresh DataGrid1.AllowDelete = False End IfEnd Sub对“添加”按钮的代码如下:Private Sub Add_Click() Me.Move Me.Left, Me.Top, Me.Width, Me.Height + 1700 Add.Enabled = False DEL.Enabled = False Edit.Enabled = False Text1.Text = "" Text2.Text = "" Text3.Text = ""End Sub该过程可以添加、删除用户,此界面普通用户不能进入修改密码界面代码:对“确定”按钮所编的代码如下:Private Sub Cmd_OK_Click() Dim str1 As String Dim str2 As String Dim strPwd As String Dim rsPwd As ADODB.Recordset Dim rs As ADODB.Recordset Dim strLogin As String Dim sql As String Set con = New ADODB.Connection con.Open "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=企业设备" strLogin = Trim(Text1.Text) strPwd = Trim(Text2.Text) str1 = Trim(Text3.Text) str2 = Trim(Text4.Text) If Len(strLogin) = 0 Then MsgBox "用户名不能为空,请输入用户名", 68, "警告" Text1.SetFocus Exit Sub End If If Len(strPwd) = 0 Then MsgBox "密码不能为空,请输入正确的密码", 68, "警告" Text2.SetFocus Exit Sub End If If Len(str1) = 0 Then MsgBox "新密码不能为空,请输入新密码", 68, "警告" Text3.SetFocus Exit Sub End If If Len(str2) = 0 Then MsgBox "确认密码不能为空,请输入确认密码", 68, "警告" Text4.SetFocus Exit Sub End If sql = "SELECT UserPwd FROM Users WHERE UserName='" + strLogin + "'" Set rsPwd = con.Execute(sql) If rsPwd.EOF Then MsgBox "用户名不正确,请重新输入!", 68, "警告" ElseIf strPwd = rsPwd("UserPwd").Value Then If str1 = str2 Then Else MsgBox "密码与确认密码不一致,请重新输入!", 68, "警告" Text3.Text = "" Text4.Text = "" Exit Sub End If LoginSucceeded = True Set rsPwd = con.Execute("update Users set UserPwd='" + str1 + "'where UserName='" + strLogin + "'") MsgBox "密码修改成功!" FrmMain.Show FrmUserPwdEdit.HideEnd If con.Close Set rsPwd = Nothing Text1.Text = "" Text2.Text = "" Text3.Text = ""Text4.Text = ""End Sub该过程可以让用户来密码修改,如果两次输入的新密码不一样,将出现提示信息。两次输入的新密码一致方可实现用户密码修改。部门分类管理界面代码:对“删除”按钮所编的代码如下:Private Sub Del_Click() '删除信息 a = MsgBox("真的删除此纪录么?", vbYesNo) If a = vbYes Then DataGrid1.AllowDelete = True Adodc1.Recordset.Delete Adodc1.Refresh DataGrid1.AllowDelete = False End IfEnd Sub对“添加”按钮的代码如下:Private Sub Add_Click() Me.Move Me.Left, Me.Top, Me.Width, Me.Height + 1700 Add.Enabled = False DEL.Enabled = False Edit.Enabled = False Text1.Text = "" Text2.Text = "" Text3.Text = ""End Sub2.2.3 数据库访问技术数据访问对象是用来显露了Microsoft Jet数据库引擎(最早是给Microsoft Access 所使用,现在已经支持其它数据库),并允许开发者通过ODBC直接连接到其他数据库一样,直接连接到 Access 表。DAO 最适用于单系统应用程序或在小范围本地分布使用。其内部已经对Jet数据库的访问进行了加速优化,而且其使用起来也是很方便的。所以如果数据库是Access数据库且是本地使用的话,建议使用这种访问方式。VB已经把DAO模型封装成了Data控件,分别设置相应的DatabaseName属性和RecordSource属性就可以将Data控件与数据库中的记录源连接起来了。以后就可以使用Data控件来对数据库进行操作。RDORDO(Remote Data Objects)远程数据对象是一个到ODBC的、面向对象的数据访问接口,它同易于使用的DAO style组合在一起,提供了一个接口,形式上展示出所有ODBC的底层功能和灵活性。尽管RDO在很好地访问Jet或ISAM数据库方面受到限制,而且它只能通过现存的ODBC驱动程序来访问关系数据库。但是,RDO已被证明是许多SQL Server、Oracle 以及其他大型关系数据库开发者经常选用的最佳接口。RDO提供了用来访问存储过程和复杂结果集的更多和更复杂的对象、属性,以及方法。和DAO一样,在VB中也把其封装为RDO控件了,其使用方法与DAO控件的使用方法完全一样。ODBCODBC(Open Database Connectivity,开放数据库互连)是微软公司开放服务结构(WOSA,Windows Open Services Architecture)中有关数据库的一个组成部分,它建立了一组规范,并提供了一组对数据库访问的标准API(应用程序编程接口)。这些API利用SQL来完成其大部分任务。ODBC本身也提供了对SQL语言的支持,用户可以直接将SQL语句送给ODBC。一个基于ODBC的应用程序对数据库的操作不依赖任何DBMS,不直接与DBMS打交道,所有的数据库操作由对应的DBMS的ODBC驱动程序完成。也就是说,不论是FoxPro、Access还是Oracle数据库,均可用ODBC API进行访问。由此可见,ODBC的最大优点是能以统一的方式处理所有的数据库。一个完整的ODBC由下列几个部件组成:1. 应用程序(Application)ODBC管理器(Administrator)。该程序位于Windows 95控制面板(Control Panel)的32位ODBC内,其主要任务是管理安装的ODBC驱动程序和管理数据源。驱动程序管理器(Driver Manager)。驱动程序管理器包含在ODBC32.DLL中,对用户是透明的。其任务是管理ODBC驱动程序,是ODBC中最重要的部件。2. ODBC APIODBC 驱动程序。是一些DLL,提供了ODBC和数据库之间的接口。数据源。数据源包含了数据库位置和数据库类型等信息,实际上是一种数据连接的抽象。ODBC连接目前仅仅限于关系型数据库,对于其他数据源比如EXCEL、文本文件都不能进行访问,而且有很多DBMS(数据库管理系统)都不能充分的支持其所有的功能。相比之下,OLEDB可以存取任何形式的数据,所以其功能是相当的强大,它也指导了目前技术发展的方向。ODBC 驱动程序。是一些DLL,提供了ODBC和数据库之间的接口。数据源。数据源包含了数据库位置和数据库类型等信息,实际上是一种数据连接的抽象。ODBC连接目前仅仅限于关系型数据库,对于其他数据源比如EXCEL、文本文件都不能进行访问,而且有很多DBMS(数据库管理系统)都不能充分的支持其所有的功能。相比之下,OLEDB可以存取任何形式的数据,所以其功能是相当的强大,它也指导了目前技术发展的方向。ADOADO(ActiveX Data Object)是DAO/RDO的后继产物。ADO 2.0在功能上与RDO更相似,而且一般来说,在这两种模型之间有一种相似的映射关系。ADO"扩展"了DAO和 RDO 所使用的对象模型,这意味着它包含较少的对象、更多的属性、方法(和参数),以及事件。作为最新的数据库访问模式,ADO的使用也是简单易用,所以微软已经明确表示今后把重点放在ADO上,对DAO/RDO不再作升级,所以ADO已经成为了当前数据库开发的主流。ADO涉及的数据存储有DSN(数据源名称)、ODBC(开放式数据连接)以及OLE DB三种方式。后面的例程将详细讲解这三种方式的具体访问实现。要使用ADO,必须清楚ADO的对象层次结构,其大体上分为以下7个对象层次:1、 Command 对象:包含关于某个命令,例如查询字符串、参数定义等的信息。Command 对象在功能上和 RDO的rdoQuery 对象相似。2、 Connection 对象:包含关于某个数据提供程序的信息。Connection 对象在功能上和 RDO 的 rdoConnection 对象是相似的,并且包含了关于结构描述的信息。它还包含某些 RDOEnvironment 对象的功能,例如transaction 控件。3、 Error对象:包含数据提供程序出错时的扩展信息。Error 对象在功能上和 RDO 的rdoError 对象相似。4、 Field 对象:包含记录集中数据的某单个列的信息。Field 对象在功能上和 RDO的rdoColumn 对象相似。5、 Parameter 对象:包含参数化的Command对象的某单个参数的信息。该 Command对象有一个包含其所有Parameter 对象的 Parameters 集合。Parameter 对象在功能上和 RDO 的 rdoParameter 对象相似。6、 Property对象:包含某个 ADO 对象的提供程序定义的特征。没有任何等同于该对象的RDO,但DAO有一个相似的对象。7、Recordset对象:用来存储数据操作返回的记录集。此对象和Connection对象是所有对象最重要的两个对象。设备信息数据表:字段字段名类型宽度小数位索引排序Nulls1设备编号数值型11否2设备名称字符型20否3设备分类字符型18否4设备型号字符型10否5维修状态字符型4否6所属部门字符型20否7报废状态字符型20否8数量数值型20否9备注备注型50否配件信息数据表:字段字段名类型宽度小数位索引排序Nulls1配件编号数值型11否2配件名称字符型20否3配件分类字符型18否4配件型号字符型10否5维修状态字符型4否6所属部门字符型20否7报废状态字符型20否8数量数值型20否9备注备注型50否2.3 系统运行与测试盒测试和白盒测试: 黑盒测试 黑盒测试也称功能测试或数据驱动测试,它是在已知产品所应具有的功能,通过测试来检测每个功能是否都能正常使用,在测试时,把程序看作一个不能打开的黑盆子,在完全不考虑程序内部结构和内部特性的情况下, 测试者在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数锯而产生正确的输出信息,并且保持外部信息(如数据库或文件)的完整性。黑盒测试方法主要有等价类划分、边值分析、因果图、错误推测等,主要用于软件确认测试。 “黑盒”法着眼于程序外部结构、不考虑内部逻辑结构、针对软件界面和软件功能进行测试。“黑盒”法是穷举输入测试,只有把所有可能的输入都作为测试情况使用,才能以这种方法查出程序中所有的错误。 白盒测试: 白盒测试也称结构测试或逻辑驱动测试,它是知道产品内部工作过程,可通过测试来检测产品内部动作是否按照规格说明书的规定正常进行,按照程序内部的结构测试程序,检验程序中的每条通路是否都有能按预定要求正确工作,而不顾它的功能,白盒测试的主要方法有逻辑驱动、基路测试等,主要用于软件验证。“白盒”法全面了解程序内部逻辑结构、对所有逻辑路径进行测试。“白盒”法是穷举路径测试。在使用这一方案时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据。 任何工程产品(注意是任何工程产品)都可以使用以下两种方法之一进行测试。黑盒测试:已知产品的功能设计规格,可以进行测试证明每个实现了的功能是否符合要求。白盒测试:已知产品的内部工作过程,可以通过测试证明每种内部操作是否符合设计规格要求,所有内部成分是否以经过检查。 软件的黑盒测试意味着测试要在软件的接口处进行。这种方法是把测试对象看做一个黑盒子,测试人员完全不考虑程序内部的逻辑结构和内部特性,只依据程序的需求规格说明书,检查程序的功能是否符合它的功能说明。因此黑盒测试又叫功能测试或数据驱动测试。黑盒测试主要是为了发现以下几类错误:1、是否有不正确或遗漏的功能?2、在接口上,输入是否能正确的接受?能否输出正确的结果?3、是否有数据结构错误或外部信息(例如数据文件)访问错误?4、性能上是否能够满足要求?5、是否有初始化或终止性错误? 软件的白盒测试是对软件的过程性细节做细致的检查。这种方法是把测试对象看做一个打开的盒子,它允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。通过在不同点检查程序状态,确定实际状态是否与预期的状态一致。因此白盒测试又称为结构测试或逻辑驱动测试。白盒测试主要是想对程序模块进行如下检查:1、对程序模块的所有独立的执行路径至少测试一遍。2、对所有的逻辑判定,取“真”与取“假”的两种情况都能至少测一遍。3、在循环的边界和运行的界限内执行循环体。4、测试内部数据结构的有效性,等等。黑盒测试(Black-boxTesting,又称为功能测试或数据驱动测试)是利用黑盒测试法进行动态测试时,需要测试软件产品的功能,不需测试软件产品的内部结构和处理过程。 白盒测试(开盒测试)我们测试的是软件,因此它的意思就是我们可以看到软件的源代码,并通过检查代码来协助测试。这种方式看起来好象挺万无一失,但是一个软件会有多少代码?我们有可能会把所有的代码都检查完吗?并且现在没有能够实现这种测试方法的自动工具或则测试系统,所以,我们是不可能将所有的代码都检查的。黑盒测试不要求测试人员懂得编程的知识,只是按照程序的功能一项一项的测试,并将有问题的功能点找出来就可以了。黑盒测试法:一般用来确认软件功能的正确性和可操作性,目的是检测软件的各个功能是否能得以实现,把被测试的程序当作一个黑盒,不考虑其内部结构,在知道该程序的输入和输出之间的关系或程序白盒测试的定义功能的情况下,依靠软件规格说明书来确定测试用例和推断测试结果的正确性.白盒测试在测试的早期采用,而黑盒测试主要用于测试的后期。白盒测试,也称为结构化测试、基于代码的测试,它从程序的控制结构导出测试用例。"我们应该更注重于保证程序需求的实现,逻辑错误和不正确假设与一条程序路径被运行的可能性成反比。程序的逻辑流有时是违反直觉的,这黑盒测试方法意味着我们关于控制流和数据流的一些无意识的假设可能导致设计错误,只有路径测试才能发现这些错误。笔误出现在主流上和不明显的逻辑路径上的机率是一样的。通过对程序内部结构的分析,检测来发现问题。白盒测试是基于程序的内部逻辑结构的测试。我们首先是拿到程序的源代码,对源代码中的控制结构、处理过程等进行分析,检查程序内部处理是否正确、包括异常处理、语句结构、分支、循环结构等。很多控制软件,还要考虑有无冗余的代码,因为程序“跑飞”,可能进入这些代码而无法再进行正常的执行。再进行黑盒测试,其中黑盒测试的测试有:用例设计方法、等价类划分方法、边界值分析方法、错误推测方法、因果图方法、判定表驱动分析方法、正交实验设计方法、功