自动出题题目整合系统设计专业论文.doc
,目 录摘要1 第一章 绪论1 一. 前言1 二设计系统的必要性和可行性2第二章 怎样开发一个题库管理系统?3 一. 编程环境的选择3二关系型数据库的实现4三. ADO接口使用 4第三章 Windows下的Visual Basic 编程环境简介 10一. VB连接数据库的各种方法 10第四章 需求分析阶段 19一. 系统功能模块 19二. 系统数据分析 19三. 系统的逻辑模型 22第五章 系统总体规划22一 设计思想 22 二. 前期设计23第六章 系统具体实现25一. 用户界面的实现25二. 数据库的实现28三. 与VB的连接 29第七章 结束语30主要参考文献31致谢32附录33摘 要题库管理系统是信息管理系统,其开发的功能主要包括:通过计算机管理题库档案,过强大的查询和索检高效的索检出数据,提高办事效率。 使用 MICROSOFT公司的 ACCESS作为后台数据库,设计数据库, 使用 MICROSOFT公司的 VISUAL BASIC开发工具,利用其提供的各种面向对象的开发工具, 使用ADO控件连接数据库,开发出产品。关键字:ADO、窗体、数据库。第一章 绪论一 前言一个学校,题库管理是学校一项重要工作。题库管理无论是哪个学校都要进行的工作。计算机管理题库档案,日常办公,实现无纸化办公,分析题库现状通过强大的查询和索检高效的索检出数据,提高办事效率。 因此,开发这样一套管理软件成为很有必要的事情,在下面的各章中我们将以开发一套题库管理系统为例,谈谈其开发过程和所涉及到的问题及解决方法。二设计系统的必要性与可行性 题库管理的设计分析 通过数据库技术分析数据库中的题库基本信息,达到管理的目的1 建立数据库,题库基本资料就存放在其中2 把,题库的全部资料输入数据库3 用VB开发出应用程序连接数据库 根据实际情况,我们使用ADO控件少量代价快速地构造一个可执行的软件系统模型。使用户和开发人员可以较快地确定需求,然后采用循环进化的开发方式,对系统模型作连续的精化,将系统需具备的性质逐渐增加上去,直到所有的性质全部满足。此时模块也发展成为最终产品了。第二章 怎样开发一个题库管理系统怎样开发一个题库管理系统?一. 编程环境的选择 微软公司的Visual Basic 6.0是Windows应用程序开发工具,使目前最为广泛 的,易学易用的面向对象的开发工具。Visual Basic提供了大量的控件,这些控件可用于 设计界面和实现各种功能,减少了编程人员的工作量,也简化了界面设计过程,从而有效的提高了应用程序的运行效率和可靠性。故而,实现本系统VB是一个相对较好的选择。二. 关系型数据库的实现 Access2000 就是关系数据库开发工具,数据库能汇集各种信息以供查询、存储和检索。Access 的优点在于它能使用数据表示图或自定义窗体收集信息。数据表示图提供了一种类似于 Excel 的电子表格,可以使数据库一目了然。另外,Access 允许创建自定义报表用于打印或输出数据库中的信息。Access也提供了数据存储库,可以使用桌面数据库文件把数据库文件置于网络文件服务器,与其他网络用户共享数据库。Access 是一种关系数据库工具,关系数据库是已开发的最通用的数据库之一。如上所述,Access 作为关系数据库开发具备了许多优点,可以在一个数据包中同时拥有桌面数据库的便利和关系数据库的强大功能。三. ADO接口使用 微软的JET数据库引擎提供了与数据库打交道的途径,我们是通过它以及Visual Basic 来访问数据库并对其进行各种操作。Visual Basic、Access以及其他微软的软件产品都是通过共用JET数据库引擎,从而给用户提供了丰富的数据类型。 ADO 控件在数据库中的信息与将信息显示给用户看的Visual Basic程序之间架起了一座桥梁。我们可以设置ADO控件的各个属性,告诉它要调用那个数据库的哪个部分。缺省情况下,ADO控件根据数据库中的一个或多个数据表建立一个dynaset-type(动态集合)类型的记录集合。一个记录集合是动态的也就意味着,当原来的数据表中的容改变了以后,该记录集合中的记录也会随之改变。ADO控件还提供了用来浏览不同记录的各种跳转按钮。将ADO控件放置在窗体中之后,我们还必须在该控件与要处理的数据库之间建立联系。 ADO(ActiveX Data Objects)是基于组件的数据库编程接口,它是一个和编程语言无关的COM组件系统。本文主要介绍用ADO编程所需要注意的技巧和在VC下进行ADO编程的模式,并对CExtensions进行了简单的讨论,希望对ADO开发人员有一定的帮助作用。因为ADO是一个和编程语言无关的COM组件系统,所以这里讨论的要点适用于所有的编程语言和编程环境,比如:VB、VBScript、VC、Java等等。 对于ADO其中对象来说,我觉得比较重要的是:Command,Connection,Recordset对象.虽然严格的说这是不准确的,但根据我的实际经验确实如此.下面就分别来谈一下.(1) Connection对象Connection对象用于建立与数据库的连接.通过连接可从应用程序访问数据源.它保存诸如指针类型,连接字符串,查询超时,连接超时和缺省数据库这样的连接信息.(2) Command对象在建立Connection后,可以发出命令操作数据源.一般情况下,Command对象可以在数据库中添加,删除或更新数据,或者在表中进行数据查询.Command对象在定义查询参数或执行一个有输出参数的存储过程时非常有用.(3) Recordset对象Recordset对象只代表一个记录集,这个记录集是一个连接的数据库中的表,或者是Command对象的执行结果返回的记录集.在ADO对象模型中,是在行中检查和修改数据的最主要的方法,所有对数据的操作几乎都是在Recordset对象中完成的.Record对象用于指定行,移动行,添加,更改,删除记录.下面就具体地说说如何用ADO存取数据:在实际编程过程中使用ADO的一个典型的存取数据的步骤为:(1) 连接数据源(2) 打开记录集对象(3) 使用记录集(4) 断开连接ADO定义了一个可编程的对象集合.ADO对象模型如图所示:第三章 Windows下的Visual Basic 编程环境简介 VisualBasic(简称VB)是一种可视化的、事件驱动型的Windows应用程序开发工具,它在GUI设计、绘图、制表、运算、通信和多媒体开发方面都具有简单易行、功能强大等优点,所以越来越受到开发人员的亲睐。同时,VB在数据库开发方面也具有Foxpro所远不能及的强大功能。VB能够读取和访问Access、Excel、DbaseX、Foxpro、Btrieve和ODBC等多种数据库,并能利用VB自身所带的数据库引擎创建Access数据库。所以VB在管理信息系统(MIS)的开发和建设方面得到了是益广泛的应用。现在,笔者就VB应用数据库的一些方法作一简单的介绍。VB访问数据库通常有三种途径:第一,通过数据库控制控件DataControl访问;第二,通过VB提供的数据库对象变量编程访问;第三,通过ODBC接口访问ODBCAPI函数。在这三种方法中,第一种方法操作起来最方便、灵活、易于掌握,同时也最能体现VisualBasic面向对象的特色,故这里以Foxpro2.5的数据库为例,介绍数据库控制控件(DataControl)访问数据库的方法与步骤:一. 在Form窗口中加入DataControl控件用鼠标在工具窗口的DataControl控件按钮上双击左键,该对象即出现在Form窗口的中间(控件名为Data1),用鼠标调整好控件的大小及位置。如工具箱中无此控件,可打开主菜单的Tools/Custom,在列表中选中MicrosoftDataControl复选框,确认后即可将此控件加入到工具箱中去。二. 设置联接库用鼠标单击Data1,按下F4,打开属性窗口,设置Connect属性为Foxpro2.5,设置DatabaseName为c:foxprowstudent.dbf(假设磁盘上已有这个文件)。三. 加入字段显示、编辑控件(数据库捆绑控件)在Form窗口中加入DGrid控件,如不在此控件,可打开主菜单Tools/Custom,在列表中选择ApexDataBroundGrid复选框,确认后即可向工具箱中加入此控件。在Form窗口中单击选中此控件(DGrid1),按下F4打开属性窗口,设置Datasource属性为Data1,在Form窗口中用鼠标右键单击控件DGrid1,选择RetrieveFields;再用鼠标右键单击控件DGrid1,选择Edit,用鼠标调整控件及有关字段大小;再用鼠标右键单击控件DGrid1,选择Properties(属性),在弹出窗口中,选择Colums标签,在下拉列表中选Colum1,将Caption属性改为“学号”,选择Colum2,Caption属性改为“姓名”,选择Colum3、4将Caption属性改为“性别”、“专业”,按下“确定”按钮。再向Form窗口中加入一个按钮控件,将Caption属性设置为“退出”,双击该控件(Command1),在代码窗口中写入“END”,存盘。此时,一个具备数据库读写、浏览功能的应用程序就建立了,按下F5运行,通过单击Data1的各按钮即可看出当前记录的变化情况。除此之外,数据库控制控件还有Bookmark、RecordCount等许多属性与方法,能对数据库进行各种方便的操作。由此可见,数据库控制控件具有数据库操作方面的强大功能。另外,数据库控制控件的RecordSource属性可用一个SQL语句赋值,以此来有效地调用SQL语句,从而发挥SELECT语句强大的功能,更使数据库控制控件(DataControl)锦上添花。关闭所有的数据连接如果在代码中使用了数据控件如DAO,RDO,或ADO,在退出时应该关闭所有打开的recordset,database,和workspace。虽然对象能自动注销,但是数据连接不会马上断开,可能会导致一些内存不能被系统重新分配。第四章 需求分析阶段一. 系统功能模块 1 流程图 登录界面口令不正确结 束 输入用户名和口令 开始 始始 口令正确主菜单操作界面自动出试卷打印试卷退出用户管理查询题目手动出试卷题库登记设定科目设定类型1基础数据:对题库的基础数据进行编辑、和查询管理2设定类型:对实验题库的试题类型进行设定。3设定科目:对实验题库的试题科目进行设定。4 出试卷: 对进入题库的记录进行出卷。5查询 :对各个表进行查询6 打印:打印出记录,以备分析二. 系统数据分析1、数据录入和处理的准确性和实时性数据的输入是否准确是数据处理的前提,错误的输入会导致系统输出的不正确和不可用,从而使系统的工作失去意义。数据的输入来源是手工输入。手工输入要通过系统界面上的安排系统具有容错性,并且对操作人员要进行系统的培训。在系统中,数据的输入往往是大量的,因此系统要有一定的处理能力,以保证迅速的处理数据。2、 数据的一致性与完整性由于系统的数据是共享的,在不同的题库类别中,题库是共享数据,所以如何保证这些数据的一致性,是系统必须解决的问题。要解决这一问题,要有一定的人员维护数据的一致性,在数据录入处控制数据的去向,并且要求对数据库的数据完整性进行严格的约束。对于输入的数据,要为其定义完整性规则,如果不能符合完整性约束,系统应该拒绝该数据。3、 数据的共享与独立性 整个题库发布系统的数据是共享的。然而,从系统开发的角度上看,共享会给设计和调试带来困难。因此,应该提供灵活的配置,使各个分系统能够独立运行,而通过人工干预的手段进行系统数据的交换。这样,也能提供系统的强壮性。三 系统的逻辑模型 第五章 系统总体规划系统功能 一. 系统的设计思路1 应用程序设计结构1 建立数据库,基本资料就存放在其中通过Access建立数据库2 用VB开发出界面连接数据库使用ADO控件的连接数据库,通过 DATAGRID 和 TEXT显示出来。. 3 在应用程序中用查询和统计等手段对数据库的资料进行处理,得到有效的数据,分析管理情况,得出结论和措施,然后就可以通过措施,达到管理提高效率的目的。具体是具体实现办法(1)连接数据源利用Connection对象可以创建一个数据源的连接.应用的方法是Connection对象的Open方法.语法:Connection对象.Open ConnectionString, UserID, PassWord, OpenOptions其中:Connection对象为你定义的Connection对象的实例;ConnectionString为可选项,包含了连接的数据库的信息;UserID 可选项,包含建立连接的用户名;PassWord为可选项,包含建立连接的用户密码;OpenOptions为可选项,假如设置为adConnectAsync,则连接将异步打开.(2)打开记录集对象实际上记录集返回的是一个从数据库取回的查询结果集.因此他有两种打开方法:一种使用记录集的Open方法,另一种是用Connection对象的Execute方法.(a)记录集的Open方法语法:Recordset.Open Source, ActiveConnection, CursorType, LockType, Options其中:Recordset为所定义的记录集对象的实例.Source可选项,指明了所打开的记录源信息.可以是合法的命令,对象变量名,SQL语句,表名,存储过程调用,或保存记录集的文件名.ActiveConnection可选项,合法的已打开的Connection对象的变量名,或者是包含ConnectionString参数的字符串.CursorType可选项,确定打开记录集对象使用的指针类型.LockType可选项 确定打开记录集对象使用的锁定类型.(b)Connection对象的Execute方法语法:Set recordset=Connection.Execute(CommandText,RecordsAffected,Options)参数说明:CommandText 一个字符串,返回要执行的SQL命令,表名,存储过程或指定文本.RecordsAffected 可选项,Long类型的值,返回操作影响的记录数.Options 可选项,Long类型值,指明如何处理CommandText参数.介绍完了如何打开数据库下面说说怎么使用吧.(3)使用记录集(a)添加新的记录:在ADO中添加新的记录用的方法为:AddNew 它的语法为:Recordset.AddNew FieldList, ValuesRecordset为记录集对象实例FieldList为一个字段名,或者是一个字段数组.Values为给要加信息的字段赋的值,如果FiledList为一个字段名,那么Values应为一个单个的数值,假如FiledList为一个字段数组,那么Values必须也为一个个数,类型与FieldList相同的数组.再用完AddNew方法为记录集添加新的记录后,应使用UpDate将所添加的的数据存储在数据库中.不过你最好在用UpDate方法之前使用CancelUpdate方法来取消该项操作.(b)修改记录集其实修改核对记录集中的数据重新赋值没有什么太大的区别,只要用SQL语句将要修改的字段的一个数据找出来重新赋值就可以了.这里不再细说了.(c)删除记录在ADO中删除记录集中的数据的方法为:Delete方法,这与DAO对象的方法相同,但是在ADO中它的能力增强了,可以删掉一组记录了.它的语法如下:Recordset.Delete AffectRecords其中的,AffectRecords参数是确定Delete方法作用的方式的,它的取值如下:adAffectCurrent 只删除当前的记录adAffectGroup 删除符合Filter属性设置的那些记录.为了一次能删除一组数据,应设置Filter属性.(d)查询记录在ADO中查询的方法很灵活,有几种查询的方法.使用连接对象的Execute方法执行SQL命令,返回查询记录集.使用Command对象的Execute方法执行CommandText属性中设置的SQL命令,返回查询记录集.第一个方法的具体语法在前面数据连接时已经介绍过了,下面就第二方法具体说一下.Command对象的Execute方法的语法如下:Command.Execute RecordsAffected, Parameters, Options 不返回记录集或者 Set Rscordset=cmmnad.Execute(RecordsAffected,Parameters,Options) 返回记录集CommandText的语法为:Command.CommandText=stringvariable其中: stringvariable为字符串变量,包含SQL语句,表名或存储过程.(4) 断开连接在应用程序结束之前,应该释放分配给ADO对象的资源,操作系统回收这些资源并可以再分配给其他应用程序.使用的方法为:Close方法.语法如下:Object.Close Object为ADO对象二. 系统的技术要点1多用户登陆问题a 建立模块,Module1b 在模块中申明变量 Public user c 在数据库建立用户表,存放用户名和密码,然后输入多个用户 d 通过ADO代码连接到数据库。 E 通过SQL语句 判断是否用户数据库有。 F 如果没有则退出。 G 如果有 通过SQL语句判断是否密码正确。H 如果正确则发送数据库的该用户名到公共变量 user = myrs("user")I 通过变量决定各个用户的权限。2 出试卷 手动出试卷将题库的一个字段设为是否出试卷。然后通过SQL语句筛选出记录,形成出试卷库。SELECT * FORM TK WHERE 是否出卷=“是”自动出试卷获得随即数,然后自动出题nb = myrs3.RecordCountrdnb = Int(nb) * Rnd() 获得随机数myrs3.Move rdnb t1 = CStr(myrs3("编号") myrs2.Open "insert into sj select * from tkgl2 where 编号=" + t1 + " ", mycn, adOpenKeyset, adLockOptimistic myrs3.Delete myrs3.MoveFirst3 多级查询问题 单级查询使用 SELECT * FORM TK WHERE 字段 =SS多级查询使用 SELECT * FORM TK WHERE 字段1 =SS AND字段2 =SS2第五章 系统具体实现首先建立模块,用来存放公共变量Public user一. 用户界面的实现1.登陆界面 在工程引用ADO2.0。在命令按钮单击写下连接数据库USER表的判断语句Private Sub Command1_Click()mname = Text1.Textpass = Text2.TextDim mycn As New ADODB.ConnectionDim myrs As New ADODB.RecordsetSet myrs = New ADODB.Recordsetmycn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=kygl.mdb;"myrs.Open "SELECT * FROM user where (user.user)=" + mname + "", mycn, adOpenKeyset, adLockOptimisticIf myrs.BOF = True And myrs.EOF = True ThenMsgBox "查无此人", , "登陆信息"Else If myrs("pass") = pass Then MsgBox "ok", , "登陆信息" user = myrs("user") Form2.Show Unload Me Else MsgBox "密码不正确", , "登陆信息" End If End If End Sub 目的是USER表没有该用户,将无法使用本程序user = myrs("user ")将公共变量user设为用户的身份 2. 主界面 主界面包含几方面的内容,以下一一介绍:首先在用户管理判断出是否管理员If user = "管理员" ThenForm3.ShowElseMsgBox "身份错误"如果不是则无法进行用户管理各个模块的实现1基础数据:对题库的基础数据进行编辑、和查询管理通过ADO控件连接到数据库的R基础数据表,通过SQL语句“SELECT * from;“ 筛选出全部记录用DATA GRID控件,将它的数据源设为ADO控件,将它的各列显示出数据库的各列。属性设为可写。2设定类型:对实验题库的试题类型进行设定。通过ADO控件连接到数据库的实验题库表 用DATA GRID控件,将它的数据源设为ADO控件,将它的各列显示出数据库的各列。 3设定科目:对实验题库的试题科目进行设定。通过ADO控件连接到数据库的实验项目表 用DATA GRID控件,将它的数据源设为ADO控件,将它的各列显示出数据库的各列。4 出试卷: 对进入题库的记录进行出卷。通过ADO控件连接到数据库的出入库表,通过SQL语句选出出试卷的记录5查询 :对各个表进行查询通过ADO控件连接到数据库的各个表,通过SQL语句ss = Text3.TextAdodc3.RecordSource = "select * from sb where =" + ss + ""Adodc3.Refresh筛选出全部记录 用DATA GRID控件,将它的数据源设为ADO控件,将它的各列显示出数据库的各列。属性设为可写。6 自动出题通过随机函数获得随机数,然后自动出题。For i = 1 To jnb = myrs3.RecordCountrdnb = Int(nb) * Rnd() 获得随机数myrs3.Move rdnb t1 = CStr(myrs3("编号") myrs2.Open "insert into sj select * from tkgl2 where 编号=" + t1 + " ", mycn, adOpenKeyset, adLockOptimistic myrs3.Delete myrs3.MoveFirst二. 数据库的实现基础数据表 字 段 名 数 据 类 型 数 据 长 度编号数字(INT)10题目文本型(char)50类型文本型(char)50分数文本型(char)50科目文本型(char)50答案文本型(char)50是否出试卷文本型(char)50用户表 字 段 名 数 据 类 型 数 据 长 度uesr文本型(char)50pass文本型(char)50四. 与VB的连接Visual Basic提供了与底层数据库系统紧密的连接。Visual Basic 支持不同的关系数据库管理系统并充分发挥每一个数据库的特长。生成独立应用或脱离服务器运行的服务以上的应用,Visual Basic连接数据库的方式有两种:通过使用Visual Basic的 ADO控件。 通过使用由Visual Basic提供的专用的直接与数据库相连的接口第七章 结束语经过一个多月的设计和开发,该题库管理系统基本开发完毕。其功能基本符合客户需求,能够完成题库存储和。并提供部分系统维护功能,使用户方便进行数据备份和恢复、数据删除。,对于数据的一致性的问题也通过程序进行了有效的解决。但是由于毕业设计时间以及水平有限,所以该系统还有许多不尽如人意的地方,比如功能较少等多方面问题。这些都有待进一步改善.也希望老师们能够多多指教,好让我能够不断进步.主要参考文献1 Visual Basic 6.0 使用指南作者:Bob Reselman , Richard Peasley , Wayne Pruchniak.出版社:电子工业出版社 2 中文Access 2000 24学时教程 作者:Craig Eddy ,Timothy Buchanan出版社:机械工业出版社致 谢在本次毕业设计中,我要非常感谢指导老师在我不知道写erp论文从何落手的时候给了我指点方向,在我感觉到自己知识有所贫乏的时候给了我细心的指导和技术上的支持。使我本身的能力得到了不少的提高,这对于我以后的工作和学习都有一种巨大的帮助,感谢他耐心的辅导。 还有感谢这四年以来不厌其烦的给我传授大学知识的老师们,感谢在生活上以及学习上给我照顾和教诲的班主任们。 附 录附录程序清单及注释程序清单6.1