毕业设计源代码库管理系统数据库管理系统论文_第1页
毕业设计源代码库管理系统数据库管理系统论文_第2页
毕业设计源代码库管理系统数据库管理系统论文_第3页
毕业设计源代码库管理系统数据库管理系统论文_第4页
毕业设计源代码库管理系统数据库管理系统论文_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、源代码库管理系统摘要: 源代码库管理系统是典型的信息管理系统(mis),其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于前者要求建立起数据一致性和完整性强、数据安全性好的库。而对于后者则要求应用程序功能完备,易使用等特点。因此本人结合开入式源代码库的要求,对microsoft access 2000数据库管理系统、sql语言原理、vb应用程序设计、vb数据库技术进行了较深入的学习和应用,主要完成对源代码库管理系统的需求分析、功能模块划分、数据库模式分析,并由此设计了数据库结构和应用程序。系统运行结果证明,本文所设计的源代码库管理系统可以满足程序员管理源代码的需要。第一章

2、 系统需求分析 随着科学技术的不断提高,计算机科学技术日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。作为计算机应用的一部分,使用计算机对各行业的各项信息进行管理,具有着手工管理所无法比拟的优点。数据库管理系统(dbms)是指数据库系统中管理数据的软件系统。dbms是数据库系统的核心组成部分。对数据库的一切操作,包括定义、更新及各种控制,都是通过dbms进行的。dbms总是基于某种数据模型,可以把dbms看成是某种数据模型在计算机系统上的具体实现。根据数据模型的不同,dbms可以分成层次型、网状型、关系型、面向对象型等。access 2000就是一种

3、关系型数据库管理系统。本系统是源代码管理系统,主要为程序员在管理源代码上有更的工具。现在程序语言有很多种,程序的源代码更多。怎么才能更好的管理好这么多不同类型的源代码。因此,开发这样一套源代码库管理系统软件成为很有必要的事情,在下面的各章中我们将就本次毕业设计我所开发的源代码库管理系统,谈谈其开发过程和所涉及到的问题及解决方法。因此本人结合开入式源代码库的要求,对microsoft access 2000数据库管理系统、sql语言原理、vb应用程序设计、vb数据库技术进行了较深入的学习和应用,主要完成对源代码库管理系统的需求分析、功能模块划分、数据库模式分析,并由此设计了数据库结构和应用程序。

4、第二章 数据库和开发语言介绍源代码库管理系统采用的数据库是microsoft access 2000数据库,开发语言为microsoft visual basic 6.0(简称vb6.0)。vb6.0作为前台的开发工具,用access 2000作为后台支持数据库,通过vb6.0的数据库控件来连接access 2000中并对其编程来实现各种功能。因为access与visual basic用的同为microsoft jet数据库引擎,有着最好的兼容性。第一节access 数据库介绍过去的一些数据库软件,在操作上、数据库建立、维护等等,都相当复杂且不易使用,但是在具备了窗口的gui(图形用户界面)特

5、性的access数据库推出之后,数据库的建立不再是困难的事情,我们可以在pc上简单而快速的建立出一套符合自己的数据库。不但如此,在access 2000 推出以后,我们发现数据库的建立更加的快速,但是功能却更加强大,用户不用再去记忆那一大堆的文件名称,或是为数据库的文件管理大费周章,通过access的人性化管理接口把数据库的管理整理,便于维护;此外,在报表的制作上也是相当容易的,完全的视觉开发向导设计,让人使用起来很舒服。但是美中不足的是access对于主从式结构的安全性管理不足,由于access可以快速的通过odbc连接到数据库服务器上(database server),并浏览所有表格或是相

6、关对象转成html基本上,access对建立一个数据库所具备的每一个对象,其中包括了表、查询、窗体、报表、宏、模块。其功能分别叙述如下: 表对象打开已经存在的表格、对已存在的表格字段数据进行修改、新建表格。 查询对象可以用直接拖放的方式,建立表格之间的关联与对应关系,自动产生sql语法查询出我们想要的数据。 窗体设计对象可以设计用户接口,用来输入并处理数据。 报表对象利用视图向导的开发方式,简单、快速的建立出需求报表或标签。 宏对象提供许多的宏功能,您可以把这样的宏连接到窗体设计中的任一个对象,以达成一些复杂的功能。 模块对象撰写vb的程序模块,处理较复杂的问题与需求,该功能是采用事件驱动的模

7、式,类似vb的处理方式。第二节vb 概述visual basic的前身是qbasic,语言基础是basic。自从微软推出vb后,便成为了程序开发人员的首选工具。据统计,仅在数据库系统开发领域,vb就占了90的份额。vb是基于对象的可视化程序开发工具,它的优点在于能够快捷、简易地建立windows应用程序。1998年8月,微软推出了vb 6.0的版本,进一步加强了部件开发的功能。以适用人员来分,可有以下三个版本:1. 标准版 针对一般程序设计人员,适合普通应用系统的开发。2. 专业版 针对专业程序开发人员,它在标准版的基础上提供了对数据库和internet的支持。3. 企业版 适用于专为企业设计

8、应用软件的程序开发人员。使用vb不需要追求完美的算法和精密的逻辑,而只要充分发挥你的想象力和创造力,就能利用vb开发出各种实用的软件了,不论是小游戏还是大型的客户端/服务器端应用程序,都变得非常简单。可视化编程的一个突出特点就是其开发环境就像一个百宝箱,很多功能都集成在其之中,这就是ide(integrated development environment),即集成开发环境。ide是指在相应的开发平台中集成了编辑器、编译连接工具、控件器箱辅助工具。例如在vb的集成开发环境中就包括了以下一些主要元素:工具栏、工具箱、工程管理器窗口、属性窗口、窗体设计器、代码编辑器窗口等;和vb类似,delph

9、i的ide中具有主控制窗体、对象查看窗口和窗体设计器。同时ide的设置是很灵活的,开发人员可以按照自己的编程习惯来配置ide。从简单的文本文件到各种复杂的关系型数据库,数据库应用程序需要面对各种各样的数据源。visual basic 6.0提供ado(active data objects)作为应用程序和ole-db连接的桥梁ado,即active数据对象(active data objects):实际是一种提供访问各种数据类型的连接机制。ado设计为一种极简单的格式,通过odbc的方法同数据库接口相连。用户可以使用任何一种odbc数据源,即不仅适合于sql server、oracle、acc

10、ess等数据库应用程序,也适合于excel表格、文本文件、图形文件和无格式的数据文件。ado是基于ole-db之上的技术,因此ado通过其内部的属性和方法提供统一的数据访问接口方法。本系统就是用ado对象来连接数据库的。下一节专门介绍ado。microsoft在visual basic 6.0以后的版本都集成了ado。它与以前visual basic的dao、rdo相比有了很大的提高。dao(data access objects)即数据访问对象,是一种面向对象的界面接口。通过dao/jet功能可以访问isam数据库,使用dao/odbc direct功能可以实现远程rdo功能。rdo(rem

11、ote data objects)即远程数据对象,为使用代码来创建和操作一个远程odbc数据库系统的各个部件提供了一个框架。rdo是odbc api的一个浅层界面接口,是专为访问远程odbc关系数据源而设计的。第三节 数组数组是一种比较特殊的数据类型,也是编写程序很重要的一种数据结构。当一系列有相同类型的数据需要存储到变量中时,可以使用数组存储,用一个统一的变量名称加上一个索引值来存取数据。使用数组可以缩短程序代码、提高程序的可读性和执行效率。数组的声明和一般变量类似,不同的是声明定长数组时要给出指定的大小或上、下界。声明格式如下: dim 数组名称(大小)as 数据类型或者: dim 数组名

12、称(下界 to 上界)as 数据类型用dim语句声明的数据变量为局部变量,如果要声明静态变量、模块级的变量或公用数组变量,只把声明关键字“dim”分别改成“static”、“private”、“public”即可。例如: dim integerarray(99) as integer这个数组中包含100个元素,脚标从0到99。也可以指定脚标的起始值,例如:dim integerarray(2 to 10) as integer这个数组含有九个元素,脚标从2到10。前面所举的例子为一维数组,还可以定义多维数组:dim threed(4,2 to 5,3 to 6) as integer定义了一个

13、三维数组(444)。创建n维数组格式如下(动态分配数组): dim 数组名称 () as 数据类型 redim数组名称 (第1维大小,第2维大小,第n维大小)第四节 循环语句循环结构是计算机语言里一种重要的结构,它的应用广泛,最简单的例子是累加器的作用,还可以用于穷举法,更直观的例子是把某件事重复指定的次数,这样就不用把要重复的语句输入多次,而通过循环结构完成,非常方便。vb里也有“for”关键字,只是vb的“for”语句更容易理解。“for”的格式是:for = to step next 在默认情况下,step被设为“1”,可以省略,step也可以设为负值,例如:dim a=0for i=1

14、 to 10 a=a+inext i这是一个最简单的累加器的例子,把1到10累加在一起,然后赋值给“a”这样的效果和上面是一样的,只不过是倒着加罢了,请看:dim a=0for i=10 to 1 step 1a=a+inext iwhile语句也是一个很常用的循环语句,它的形式很多。do while loop语句 while wend 语句 do loop while while后面都跟逻辑条件判断,“do while loop语句”和“while wend 语句”作用相似,都是先判断while后面的条件是否为“真”,如果为“真”则执行里面的语句,如果为“假”,则退出循环,循环直至条件为“假

15、”终止。“do loop while ”与前两者的区别在于,它不管条件的真假,都会先执行“do”后面的语句,也就是说,它至少执行语句一次。与while用法相似的还有until语句,它是直至条件为真则终止循环,句式把while上述三个语句的while换成until即可,但是因为容易记混,所以我建议只用while即可。until 可以相当于while not 。for循环和whlie循环应当根据适当的环境使用,它们有时也可替换。第五节 过程与函数函数与过程有许多相似的地方,它们之间最大也是最本质的区别就在于,函数有一个返回值,而过程只是执行一系列动作,所以可以简单的把函数理解成为一个变量,而vb中

16、的每个事件都是一个过程,比如command1_click()就是一个过程。因为在程序设计中经常会有重复的地方,所以把它做成一个函数或一个过程,在使用时进行调用,可以节省大量的输入代码的时间,而且使用函数和过程也便于程序的结构化和修改查看。函数和过程都可以有参数,也可以没有参数。在vb里通用过程分两类,一类是sub过程(子过程), 另一类是function过程(简称函数)。sub过程的定义格式如下:publicprivatestatic sub 过程名称(参数)end subsub过程的调用很简单: call 过程名称(参数)。 function过程的定义和sub相似。就是多了一个返回值的类型。

17、publicprivatestatic function过程名称(参数) as 类型end functionfunction 过程的调用格式如下: dim a$ a=过程名称(参数)第六节 ado 对象ado是microsoft公司关于各种类型数据的高等界面,后来逐渐演变成满足所有数据访问需要的完整解决办法。ado的对象模型是所有数据访问接口对象模型中最简单的一种。microsoft公司用来访问ado数据的应用程序界面技术是ole db。ole db是一种底层编程接口,用来访问许多不同类型的数据源,其中包括消息、文件系统以及其他一些非传统的数据源。ole db是一个由component obj

18、ect model(com)接口组成的集合,用来隐藏创建数据访问服务过程中的细节。oledb提供了访问任何数据资源的方法,包括相互关联的数据库和相互不关联的数据库、email和文件系统、文本和图形以及用户定义的数据对象。以下是本程序中用到的对象:connection对象:通过“连接”可从应用程序访问数据源,连接是交换数据所必需的环境。对象模型使用connection对象使连接概念得以具体。recordset对象:表示的是来自基本表或命令执行结果的记录全集。recordset 对象可支持两类更新:立即更新和批更新。使用立即更新,一旦调用update方法,对数据的所有更改将被立即写入基本数据源。也

19、可以使用addnew和update方法将值的数组作为参数传递,同时更新记录的若干字段。field对象:代表使用普通数据类型的数据的列。recordset对象含有由field对象组成的fields集合。每个field对象对应于recordset中的一列。使用field对象的value属性可设置或返回当前记录的数据。以下是本程序中用到的方法:addnew方法:创建可更新recordset对象的新记录。movefirst、movelast、movenext 和moveprevious方法:在指定 recordset 对象中移动到第一个、最后一个、下一个或前一个记录并使该记录成为当前记录。open方法

20、(ado connection):打开到数据源的连接。open方法(ado recordset):打开记录集。close方法:关闭打开的对象及任何相关对象。execute方法:执行指定的查询、sql语句、存储过程或特定提供者的文本等内容。第三章 系统设计第一节 系统功能分析源代码库管理系统是为了对源代码实行计算机化的管理,以提高工作效率,方便程序员。主要功能有对源代码、源代码类型等进行管理和基本资料管理以及对系统自身的用户权限管理。提供各种源代码信息的录入、修改、查询、删除等功能。而且还包含了对查询情况的模糊功能。系统管理主要任务是提高系统安全性和对系统提供良好的维护,如用户权限可以为用户提供

21、权限服务。源代码库管理系统是基于sstab选项窗体,以vb自带的jet引擎连接access 2000数据库进行开发的,力求与用户相结合满足程序员所要的功能,旨在达到使源代码管理和信息数字化,使之更加方便快捷以提高工作效率。1、登录系统管理主要包括:系统登录分管理员和普通用户登录。2、基本资料管理主要包括:源代码管理模块包括:显示添加修改删除查询等。代码内容的自动加载:可以输入,也可以复制,剪切,粘贴,全选等。3、设置管理主要包括:源代码类型模块包括:显示添加、删除、查询等。系统自带一部分,可以用户自己定义源代码类型。添加用户模块包括:为系统新用户设置用户名及口令。修改密码模块包括:用于操作员更

22、改自己的系统口令。第二节 系统结构设计1、登录系统功能模块结构流程图:如图3-1。修改admin用户的密码系 统 用 户 信 息 admin用户创建修改和删除普通用户信息修改自身的用户名和密码 普通用户图3-1 登录系统功能模块结构2、基本资料模块结构流程图:如图3-2。基本资料系统 源代码内容自动加载人工操作图3-2 基本资料模块结构图3、设置管理模块结构流程图:如图3-3。设置管理模块修改密码代码类型用户添加删除图3-3 设置管理模块结构图4、系统总流程图:如图3-4。开 始用户登录提示出错 成功读取用户类型admin用户普通用户主界面主界面设 置 管 理基 本 资 料检索系统图3-4 系

23、统流程图第四节 数据库设计数据库设计主要是进行数据库的逻辑设计,即将数据按一定的分类、分组系统和逻辑层次组织起来,是面向用户的。数据库设计时需要综合企业各个部门的存档数据和数据需求,分析各个数据之间的关系,按照dbms提供的功能和描述工具,设计出规模适当、正确反映数据关系、数据冗余少、存取效率高、能满足多种查询要求的数据模型。数据库设计的步骤是:1、数据库结构定义:目前的数据库管理系统(dbms)有的是支持联机事务处理cltp(负责对事务数据进行采集、处理、存储)的操作型dbms,有的可支持数据仓库、有联机分析处理clap(指为支持决策的制定对数据的一种加工操作)功能的大型dbms,有的数据库

24、是关系型的、有的可支持面向对象数据库。针对选择的dbms,进行数据库结构定义。2、数据表定义:数据表定义指定义数据库中数据表的结构,数据表的逻辑结构包括:属性名称、类型、表示形式、缺省值、校验规则、是否关键字、可否为空等。关系型数据库要尽量按关系规范化要求进行数据库设计,但为使效率高,规范化程度应根据应用环境和条件来决定。数据表设计不仅要满足数据存储的要求,还要增加一些如反映有关信息、操作责任、中间数据的字段或临时数据表。3、存储设备和存储空间组织:确定数据的存放地点、存储路径、存储设备等,备份方案,对多版本如何保证一致性和数据的完整性。4、数据使用权限设置:针对用户的不同使用要求,确定数据的

25、用户使用权限,确保数据安全。5、数据字典设计:用数据字典描述数据库的设计,便于维护和修改。为了更好地组织数据和设计出实际应用数据库,应该注意如下问题:规范化地重组数据结构:对数据进行规范化表达,这在后面将会具体讨论。6、关系数据结构的建立:在进行了数据基本结构的规范化重组后,还必须建立整体数据的关系结构。这一步设计完成后数据库和数据结构设计工作基本完成,只待系统实现时将数据分析和数据字典的内容代入到所设计的数据整体关系结构中,一个规范化数据库系统结构就建立起来了。第五节 数据表的结构设计根据系统需求分析和功能设计,在数据库创建以下几个表:user_info、源代码表、代码类型表。表结构如下:u

26、ser_info表:主要记录用户名和密码的功能。如表3-5。字段名称字段类型说明姓名文本主键密码文本表3-5 user_info表代码类型表:是记录源代码类型的功能。如表3-6。字段名称字段类型说明代码类型文本主键表3-6 代码类型表源代码表:主要是记录源代码信息的功能。表3-7源代码表。字段名称字段类型说明id自动编号主键代码标题文本代码类型文本代码内容备注代码功能文本备注文本表3-7源代码表第四章 应用程序的开发应用程序是用vb开发的,界面设计的简单明了。根据需求分析和功能设计,系统应用程序分为四大模块:登录模块、信息管理、信息检索、设置管理四个模块。第一节 登录模块的开发登录界面是用户最

27、先看到的系统的界面,所以直观上给用户的感觉很重要,所以做一个好的界面,提高软件的亲和力。本管理系统登录界面如图4-1。图4-1登录界面根据登录模块的功能,管理员和普通用户界面统一在一起。系统自动判断用户的要权限。管理员有所有的权限,普通用户只有检索和改本人的密码权。初始管理员密码为admin。管理员密码存放在机子的注册表中,位置在:hkey_current_usersoftwarevb and vba program settings工程1settingssyspassword 项连接数据库采用ado对象(引用ado)。引擎采用microsoft.jet.oledb.4.0来连接access2

28、000数据库。连接代码如下:if cn.state then cn.closecn.connectionstring = provider=sqloledb.1;integrated security=sspi;persist security info=false;user id=sacn.properties(initial catalog).value = xxmiscn.open详细代码实现请参考附录程序源代码。第二节 主界面的开发根据源代码库管理系统的功能和需求,要求界面明了、简单、直观如图4-2。工具栏下拉区列表区显示区图4-2主界面主界面由工具栏、下拉区、列表区、显示区四部分组成

29、。工具栏主要管理、输出、设置、关于、退出按钮。另外,在主界面最下边是状态栏。工具栏是vb中的toolbar控件和imagelist控件。下拉区是vb中的combobox控件和textbox 控件。列表区是vb中的listbox和sstab选项窗体。显示区是richtextbox控件。状态栏是statusbar控件。各控件之间的位置关系代码如下:sub sizecontrols(x as single) 设置 width 属性 if x (me.width - 1500) then x = me.width - 1500 sstab1.width = x imgsplitter.left = x

30、 lvlistview.left = x + 40 lvlistview.width = me.width - (sstab1.width + 140) if sstab1.tab = 0 then combo1.width = sstab1.width - combo1.left - combo1.left list1.width = combo1.width text1.width = combo1.width list2.width = combo1.width else text1.width = sstab1.width - text1.left - text1.left list1

31、.width = text1.width combo1.width = text1.width list2.width = text1.width end if 设置 top 属性 sstab1.top = pictitles.height lvlistview.top = sstab1.top text1.top = combo1.top 设置 height 属性 if sbstatusbar.visible then sstab1.height = me.scaleheight - (pictitles.top + pictitles.height + sbstatusbar.height

32、) else sstab1.height = me.scaleheight - (pictitles.top + pictitles.height) end if list1.height = sstab1.height - combo1.top - 780 list2.height = list1.height lvlistview.height = sstab1.height imgsplitter.top = sstab1.top imgsplitter.height = sstab1.heightend sub详细代码实现请参考附录程序源代码。第三节 源代码管理界面的开发在主界面如图4

33、-2上,在工具栏上点管理按钮。如果是管理员用户就进入了管理界面。如图4-3所示。如果是普通用户,提示没有权限。代码实现请参考附录程序源代码。图4-3管理界面先介绍在图4-3中,各按钮的功能:移动到第一条记录。:移动到下一条记录。:移动最后一条记录。添加:是添加一新的记录。删除:是删除当前的记录。保存:是在添加和修改记录后,保存记录。修改:没有修改按钮,在移动到要修改的记录,直接修改。点保存后就修改完毕。打开:是打开一个txt文件到代码内容里。此界面不支持右键功能,但支持键盘的复制、粘贴等功能。复制:选中代码内容,之后按ctrl+c,复制完毕。粘贴:在要粘贴的位置,按ctrl+v,粘贴完毕。注意

34、:自动id字段是数据库自动生成的,人为是不能改变的。如何添加代码:点添加按钮,在代码标题输入代码标题,选择代码类型,输入代码内容,备注可以不输入。之后点保存,就提示保存成功,如图4-4。如何删除代码:可以用移动到你要删除的代码,直接删除。系统有提示。如图4-5。 图4-4保存成功 图4-5 删除提示如何打开已有的代码内容:点打开按钮,出现如图4-6所示打开你的代码文件,在代码内容中就出现你打开的文件内容。图4-6打开提示第四节 设置管理的开发在主界面(图4-2)上点设置,如果是管理员用户进入系统设置,如图4-7所示。在系统设置里可以对代码类型和管理员密码、用户进行管理。图4-7系统设置在代码类

35、型中可以添加代码类型。也可以删除代码类型。系统管理按钮是对管理员密码和用户进行管理。如图4-8。图4-8 系统管理界面添加用户:输入用户名称,设置好用户原始密码,点添加。删除用户:在用户名称中选择要删除的用户,点删除按钮。管理员密码修改:输入旧密码,输入新密码和新密码核实。点修改按钮。代码实现请参考附录程序源代码。第五节 信息检索的开发 信息检索是源代码管理系统一个重要的功能,也是必须的功能。在主界面图4-2上列表区下边有,功能检索和标题检索。支持这两种检索。标题检索是全部的分类源代码都可以在列表中显示,也可以输入关键字,模糊查询。功能检索是输入关键字,列表中出现合适的代码标题。如图4-9。图

36、4-9 信息检索操作方法:在图4-9中,输入关键字,回车,在下边列表中就出现所有符合条件的标题。点选你想要的标题。在显示区就出现代码内容。本方法用的sql语句中的模糊检索like。只要标题中包含你要检索的关键字都是合法记录。代码实现请参考附录程序源代码。第六节 程序其他功能的开发本管理系统中其他功能有右键、关于、输出的功能开发。右键有复制、粘贴、剪切、全选菜单。如图4-10。图4-10 右键关于对话框是对软件的介绍。如图4-11。图4-11关于输出功能是输出显示区的内容为txt 文件。点上输出按钮。出现如图4-12保存对话框,输入名称,保存,完毕。代码实现请参考附录程序源代码。图4-12 保存

37、第七节 打包应用程序程序的打包采用vb自带的打包工具。打开vb打包向导。如图4-24。选择要打包的工程。点打包,如图4-25。选择标准包,下一步。如图4-26。进入打包文件夹选择。如图4-27。选择好,再点下一步。一直下一步,只到如图4-28.点完成。这样,程序打包工作就完成了。程序的发布,是用很打好的安装包,来在用户的机子上安装本程序。直接点setup.exe就可以。一般安装都是默认安装。就可以在用户的机子上安装上本系统。图4-24 打包界面图4-25 选择类型图4-26 打包文件夹图4-28 完成结论和谢词经历了几个月的时间,经过这几个月的努力,这个系统总算是完成了。显然这个系统还是有很多

38、不成熟、不完善的地方。由于时间和能力有限本系统只完成了基本的功能部分,一些真正实用的外围功能还来不及完善特别是打印信息这部分没法实现,美工方面也不够漂亮。但这毕竟是自己独立完成的第一个运行正常的系统,从敝帚自珍的角度来讲,还是颇觉欣慰的。系统的实现,将减轻程序人员的负担。并能为程序人员的提供信息支持。感谢。最后,恳请各位评审老师不吝赐教,多提宝贵意见。参 考 文 献1、王小茹等.visual basic 6.0实例解析.北京大学出版社.20002、王建华等译.visual basic 6开发人员指南.机械工业出版社.19993、北京博彦科技发展有限责任公司.visual basic编程高手.北

39、京大学出版社.20004、附录程序源代码:frmlogin模块源代码:记录确定次数dim micount as integerprivate sub command1_click() 登录on error goto err dim txtsql as string username = if trim(txtusername.text = ) then msgbox 请重新输入用户名!, vbokonly + vbexclamation, 警告 txtusername.setfocus else dim syspassword as string syspassword = getsettin

40、g(app.title, settings, syspassword, admin) if trim(txtusername.text) = admin and trim(txtpassword.text) = syspassword then 管理员进入 username = txtusername.text 初始化系统 ok = true unload me frmmain.show elseif trim(txtusername.text) admin then txtsql = select * from user_info where 姓名 = & txtusername.text

41、& if rs.state then rs.close rs.open txtsql, cn, adopenstatic, adlockoptimistic if rs.eof = true then msgbox 没有这个用户,请重新输入用户名!, vbokonly + vbexclamation, 警告 txtusername.setfocus else if trim(rs.fields(1) = trim(txtpassword.text) then rs.close username = trim(txtusername.text) savesetting app.title, se

42、ttings, user_name, username ok = true unload me frmmain.show 1 else msgbox 输入密码不正确,请重新输入!, vbokonly + vbexclamation, 警告 txtpassword.setfocus txtpassword.text = end if end if else msgbox 输入密码不正确,请重新输入!, vbokonly + vbexclamation, 警告 end if end if micount = micount + 1 ok = false if micount = 3 then en

43、d end if exit suberr: msgbox 登录出错,请找管理员!, vbexclamation ok = false endend subprivate sub command2_click() 取消endend subprivate sub form_activate()txtpassword.setfocusend subprivate sub form_load()if cn.state then cn.closecn.connectionstring = provider=microsoft.jet.oledb.4.0;data source= & app.path &

44、 ydm.mdb;persist security info=falsecn.openok = falsetxtusername.text = getsetting(app.title, settings, user_name, )end subfrmmain窗体源代码: dim mbmoving as booleanconst sglsplitlimit = 500private sub combo1_click() 代码类型list1.clearlvlistview.text = if trim(combo1.text) then if rs.state then rs.close rs.

45、open select * from 源代码表 where 代码类型= & trim(combo1.text) & order by id, cn, adopenstatic, adlockoptimistic while not rs.eof if not isnull(rs.fields(1) then list1.additem trim(rs.fields(0) & - & trim(rs.fields(1) rs.movenext wendelse if rs.state then rs.close rs.open select * from 源代码表 order by id, cn

46、, adopenstatic, adlockoptimistic while not rs.eof if not isnull(rs.fields(1) then list1.additem trim(rs.fields(0) & - & trim(rs.fields(1) rs.movenext wendend ifend subprivate sub command1_click(index as integer)select case indexcase 0if username = admin thenfrmadd.show 1elsemsgbox 你没有权限!end ifcase 1

47、 输出call txtoutputcase 2case 3 关于frmabout.show 1case 4endcase 5 设置类型if username = admin then frmoption.show 1else frmuserpass.show 1end ifend selectend subpublic sub txtoutput()on error goto errcommondialog1.filter = txt文件|*.txtcommondialog1.flags = &h2commondialog1.showsaveif commondialog1.filename

48、thenlvlistview.savefile commondialog1.filename, 1msgbox 保存成功!end iferr:end subprivate sub form_load()on error goto err:if rs.state then rs.closers.open select * from 代码类型表, cn, adopenstatic, adlockoptimisticcombo1.additem while not rs.eof if not isnull(rs.fields(0) then combo1.additem trim(rs.fields

49、(0) end ifrs.movenextwendif rs.state then rs.closers.open select * from 源代码表 order by id, cn, adopenstatic, adlockoptimisticwhile not rs.eof if not isnull(rs.fields(1) then list1.additem trim(rs.fields(0) & - & trim(rs.fields(1)rs.movenextwendsstab1.tab = 0exit suberr:end subprivate sub form_resize() on error resume next if me.width 3000 then me.width = 3000 sizecontrols imgsplitter.leftend subprivate sub imgsplitter_mousedown(button as integer, shift as integer, x as single, y as single) with imgsplitter picsplitter.move .left, .top, .width 2, .height - 20 end with pics

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论