VB+sqlserver学籍管理系统程序源代码+论文

目录

11 开发背景.... 3

3.其它特性.... 4

1.3.2.1  SQL Server数据库特点... 7

1.3.3.1 利用ADO开发网络数据库应用程序... 8

1.3.3.2 ADO组件的主要对象及其功能... 9

1.3.3.3 用来操纵数据的SQL命令.... 9

①定义数据库组建.... 10

②打开数据库.... 10

③设定SQL语句,使用“Execute”命令,即可开始执行访问数据库的动作.... 10

④关闭结果集对象,断开与数据库的连接.... 10

21数据库的设计.... 10

Else. 14

Frmlogin.Show. 14

Select Case Index. 15

If Not rs.EOF Then. 15

'密码错误时.... 15

If loginno = 3 Then. 15

Else. 15

'将当前登陆用户的权限保存到LoginPower中... 16

Else. 16

End If. 16

End Sub. 16

3321 菜单设计.... 17

If LoginPower = "普通用户" Then. 17

Cancel = 1. 18

QueryUnload和Unload事件.... 18

ShellExecute 0, "open", App.Path & "\help.chm", "", "", 1. 19

Dim DelNO As Integer. 20

Combo1.Clear. 20

LoadOperator. 20

End Sub. 20

Dim Listit As ListItem. 20

Dim ef As New ADODB.Recordset. 20

If InStr(1, Trim(Text1.Text), "'", vbTextCompare) Then. 21

If Trim(Text2.Text) = "" Then. 21

End Sub. 22

DelNO = rs.RecordCount. 22

Do While Not rs.EOF. 22

End Sub. 22

Do While Not rs.EOF. 22

If Trim(Text3.Text) <> Trim(Text2.Text) Then. 23

MsgBox "两次密码不相同,请重输入!", vbOKOnly + 48, "提示:". 23

MsgBox "添加用户" & Text1.Text & "成功", vbOKOnly, "添加系统用户". 23

If Button = 2 Then. 25

End If. 25

If Trim(pwd) <> Trim(confirmpwd) Then. 26

End Sub. 26

If Not rs.EOF Then. 26

MsgBox "您的密码更新成功,请牢记你的密码!", vbInformation. 27

End Sub. 28

TreeView.Height = Me.ScaleHeight - 50. 29

ListView.Top = TreeView.Top. 29

'正在导入数据,提示用户等待.... 29

If Node.Tag = "classid" Then. 29

Else. 29

Public Sub ListviewLoad(ByVal classid As String). 30

Dim Listit As ListItem. 30

Dim ef As New ADODB.Recordset. 30

Do While Not ef.EOF. 30

Loop. 30

Exit Sub. 31

Combo2.Clear. 34

Combo3.Clear. 35

If EditNum = "00000000" Then. 35

Me.Caption = "修改学号为" & EditNum & "的学生资料". 35

If rs.Fields("SGender") = "男" Then. 36

ElseIf rs.Fields("SGender") = "女" Then. 36

If rs.Fields("SZhengzhi") = "" Then. 36

ElseIf rs.Fields("SZhengzhi") = "团员" Then. 36

ElseIf rs.Fields("SZhengzhi") = "党员" Then. 36

ElseIf rs.Fields("SZhengzhi") = "预备党员" Then. 36

If Trim(EditStu(0).Text) = "" Or Val(Trim(EditStu(0).Text)) > 99999999. 37

MsgBox "学号输入有错误!请重新输入学号(xxxxxxxx)!", vbInformation. 37

If Trim(EditStu(1).Text) = "" Then. 37

If IsDate(EditStu(2).Text) = False Then. 37

Dim i As Integer. 37

Next. 37

错误!未找到图形项目表。If EditStu(0).Enabled Then. 38

Else. 38

For i = 0 To 8. 39

Data Source=" & App.Path + "\student.mdb". 39

第一章 系统概述

1.1 开发背景

1.1.1 当前趋势

现代教育技术特别是网络与多媒体技术的发展,对学习活动产生了具有深远意义的冲击,网络中的学习者必须是一个主动行为着的主体,人们可以选择或者设计适合其学习特点的信息采集、加工与重组方式,一种个性化的学习类型。该学籍管理系统采用多层架构的系统,是真正适应教育信息化发展三大趋势的校园网络应用系统,全面支持Internet功能、远程访问功能,全部采用最先进的B/S(浏览器/服务器) 模式来开发,支持有关学校信息交流、日常教学、教务管理等的各种应用,提供了一个基于校园内联网中支持各种类型的学校应用产品的服务平台和开发平台,基本目标是在学校内部和外部建立起顺畅的信息通道,让信息技术成为推动教育生产力的有力工具,提高学校的管理水平和效率,同时充分利用全球的教育资源为学校的教育服务,克服了目前大部分学校的校园网建设只起到宣传作用的通病。

1.1.2  用计算机管理学生学籍的意义

现在我国的中小学校中学籍的管理水平还停留在纸介质的基础上,这样的机制已经不能适应时代的发展,因为它浪费了许多人力和物力,在信息时代这种传统的管理方法必然被计算机为基础的信息管理所取代。

作为一个计算机应用的本科生,希望可以在这方面有所贡献。改革的总设计师邓小平同志说过“科学技术是第一生产力”,我希望能用我四年的所学编制出一个实用的程序来帮助中小学进行更有效的学籍管理。

归纳起来,好处大约有以下几点:

1.可以存储历届的学生学籍,安全、高效;

2.只需一到二名学籍录入员即可操作系统,节省大量人力;

3.可以迅速查到所需信息。

1.2 学籍管理系统概述

1.2.1 开展该系统的原因

由于现今的学籍管理非常繁琐,行政人员付出大量的工作时间,得到的效率很低。因此为提高工作效率,减轻校方人员的工作负担,决定开发学籍管理系统软件。
1.2.2 该工程的基本目标

开发此学籍管理系统软件,以供教学人员及操作者进行学籍管理,方便操作者随时添加、查询、修改等。为了我们提高软件开发的能力,学习汉语编程的技巧,提高工作设计思想,通过本次的工程开发,开发小组成员与辅助老师,公司的技师交流,能从中学习知识吸取经验,再技术和软件思想上同时得到锻炼和提高,从而使总体水升到一个新的高度。

1.3 开发环境以及开发工具介绍

该软件是在Windows 2000 Advanced Server + Visual Basic 6.0 + SQL Server 2000的环境下完成的。下面就对这些开发工具进行介绍:

1.3.1 Visual Basic 6.0

微软公司的Visual Basic 6.0是Windows应用程序开发工具,是目前最为广泛的、易学易用的面向对象的开发工具。Visual Basic提供了大量的控件,这些控件可用于设计界面和实现各种功能,减少了编程人员的工作量,也简化了界面设计过程,从而有效的提高了应用程序的运行效率和可靠性。利用VISUAL BASIC 程序设计语言,可以很方便地设计出在WINDOWS环境下运行的应用程序。故而,实现本系统VB是一个相对较好的选择。

1.3.1.1 Visual Basic的编程特点

Visual Basic语言的出现为Windows下的编程提出了一个新概念,利用Visual Basic的动态数据交换、对象的链接和嵌入、动态链接库、ActiveX技术可以很方便地设计出功能强大的应用程序。

利用Visual Basic语言编程有以下几个特点:

  1. 可视化程序设计

在Visual Basic中开发的应用程序,不但有丰富的图形界面,同时由用户为开发图形界面添加的代码真是少而又少,因为在设计图形界面的过程中只需设置 ActiveX控件的属性即可。

  1. 强大的数据库和网络功能

随着Visual Basic 语言的向前发展,它在数据库和网络方面的功能优势就愈加明显,利用Visual Basic 中的ODBC——开放式的数据库访问技术可以很方便地开发出自己的数据库应用程序;利用 Visual Basic自带的可视化数据管理器和报表生成器,完全可以在Visual Basic就完成数据库的开发工作。

3.其它特性

在Visual Basic以前的版本中,由于仍然摆脱不了解释执行的代码运行机制,所以在相当的程度上制约了 Visual Basic 的发展。

从Visual Basic5.0版本开始,在Visual Basic 中制作的应用程序都改变为编译执行,使得Visual Basic的代码效率有了很大的提高,同时执行的速度 也加快了解30%(同Visual Basic4.0相比)。

当然在 Visual Basic中还有其它特性,例如:

  1. 面向对象的编程语言;
  2. 结构化程序设计;
  3. 事件驱动的程序设计:

在传统的或“过程化”的应用程序中,应用程序自身控制了执行哪一部分代码和按何种顺序执行代码。从第一行代码执行程序并按应用程序中预定的路径执行,必要时才会调用过程。

在事件驱动的应用程序中,代码不是按预定的路径执行,而是在响不同的事件时执行不同的代码片段。事件可以由用户操作触发、也可以由来自操作系统或其它应用程序的消息触发、甚至由应用程序本身的消息触发。这些事件的顺序,决定了代码执行的顺序,因此应用程序每次运行时所经过的路径都是不同的。

  1. 支持动态链接库;
  2. 应用程序之间的资源共享。

1.3.1.2 VB 支持的数据库系统

VB支持对多格式的数据库的访问和维护,无论是Access还是Foxpro中创建的数据库,都可以用VB打开,对其进行查询、修改和删除等操作。事实上,VB几乎支持对市面上所有数据库的访问。

VB可以访问的数据库可以简单的分为三类,即:Microsoft Access格式数据库,外部数据库和ODBC数据库。VB对多种数据库格式的支持,大大的增强了开发数据库应用程序的能力。

1.3.1.3 Jet数据库引擎

Microsoft引擎为Visual Basic与数据库的接口提供了基本的方法。Jet引擎被Visual Basic,Microsoft Access和其他Microsoft产品共享。Jet数据库引擎提供了多种功能,Jet的数据定义功能支持对表、索引、查询的创建、修改和删除。Jet以主键标和表间引用完整性的形式支持数据完整性。

对于数据操纵,Jet支持使用SQL。SQL提供用单独语句对基于用户定义标准的记录组进行检索、添加、删除或更新的方法。

Jet也提供对安全功能的支持。这种功能让开发者指定用户标识符和口令,他们必须在用户访问数据库之前给出。Jet也支持使用许可,或是对单个表和查询的访问级别(例如,只读或读写可访问性)。这是的数据库管理员要对每一位用户或用户组分配对数据库不同特定访问。

除了数据操作和数据定义任务外,也可用Jet引擎来执行其他的任务。Jet还具备在数据库开发工作中所需的其他功能,这些功能包括:数据库修复,数据库压缩(以使消除不同的空间)和重新索引。

1.3.1.4 数据库开发中的三大工具

Visual Basic在数据库应用程序的开发领域中,提供包含数据管理(DataManager),数据控件(Data Control)以及数据编程对象(数据访问对象(DAO)、远程数据对象(RDO)和ActiveX数据对象(ADO))等功能强大的工具,协助设计人员轻松的连接数据库文件,并访问其中的数据,在功能方面与其他一些专业数据库软件(如FoxPro,Micosoft Access等)不相上下。

数据管理器(Data Manager)是Visual Basical已有的老成员之一,拓本盛举有的Jet数据库引擎(Database Engine)可以帮助VB程序元件立即维护数据库内容,并可通过输入查询或查找数据库信息,而不必再通过其他数据库软件另外去设计数据库。

数据控件是VB所提供的基本控件成员之一。它使得设计者省下一堆程序代码编写的工作,能够轻松的设计及维护数据库内容。数据控件可以通过一些属性的设置去链接某个数据库文件,但是它本身并无法显示数据库各个记录的内容,必须在搭配其他具有数据感知(Data Aware)功能的控件对应并显示一个字段内容,以方便地进行记录的浏览及编辑工作。

VB提供的数据访问对象(Data Access Object;DAO)让程序设计者拥有更大的发挥空间。借助程序代码编写,直接控制Jet数据库引擎,配合数据库控件,能够开发出更具弹性且高效率的数据应用程序。

RDO是处理远程数据库的一些专门需要的对象集合。使用RDO可以不用本地的查询机就能访问ODBC数据源,这无疑将大大提高应用程序的性能。

ADO是VB6。0中新增的对象,它是一个更简单的对象模型,它更好的集成了其它数据访问技术,并且对本地和远程数据库均有共同的界面,可以取代DAO和RDO。ADO更易于使用。

我们在本系统中利用数据管理器创建了数据库及数据库表,并采用了ADO数据访问技术。

1.3.2  SQL Server 2000简介

SQL Server 2000是微软公司最新版的大型数据库服务器,其性能指标在各方面都有赶超Oracle数据库的趋势。用它可以方便地管理数据库和开发应用程序,它使用了最先进的数据库构架,与Windows NT/2000平台紧密集成,具有完全的Web功能。通过对高端硬件平台、网络和存储技术的支持,为WEB站和企业的应用最大限度地提供了可扩展性和高可靠性,能在Internet商业领域快速建立并应用。此外,还增强了安全性,保护防火墙内外的数据。支持基于角色的安全并拥有安全审计工具。在经历了SQL Server 6.5和7.0两个版本的尝试后,微软公司终于开始了大规模的业务。记得在以前各种关于SQL Server的文章,都会将其定位成中小型应用方面,这种感觉被大家自然的延续到了2000版之中。其实这是一种误解。在过去的很长一段时间中,微软公司聘请了世界上最优秀的数据库专家以及专门搭建了信息量可谓空前的地理信息系统,励精图治,就是为了摘掉扣在自己头上的这顶帽子。有了强大的性能和功能支持,再配合其一向为人称道的易用性,SQL Server可以说成为了开发者手中的一柄利器!
    另外,目前国内的一些关于微软平台的数据库编程教程,喜欢使用Access作为数据库平台的案例,并展开相关的内容。这其实对于开发真正的数据库应用并没有直接的帮助作用,只能使大家停留在应用的初级阶段。SQL Server 2000提供的非常傻瓜的缺省安装和使用模式,其上手难度并不比Access大。另外,SQL Server 2000可以兼顾小、中、大规模的应用,有着远远比Access强大的伸缩性。

1.3.2.1  SQL Server数据库特点

概括起来,SQL Server 2000数据库管理系统具有以下主要特点。

1.丰富的图形管理工具,使系统管理、操作更为直观方便。SQL Server企业管理器是一个基于图形用户界面(GUI)的集成管理工具,利用它可以配置管理SQL Server服务器、管理数据库和数据库对象、备份和恢复数据、调度任务和管理警报、实现数据复制和转换操作等。此外,SQL Server 2000还提供了SQL事件探查器、SQL查询分析器、SQL Server服务管理器和多种操作向导等图形界面管理工具,大大简化了用户操作,从而增强了系统的易用性。

2.动态自动管理和优化功能。即使SQL Server数据库管理员不做任何设置,SQL Server也能够在运行过程中根据环境配置和用户访问情况动态自动配置,以达到最优性能,从而减轻管理员工作。

3.充分的Internet技术支持。Internet网络发展到今天已经成为一条重要的信息发布渠道,SQL Server增强了对Internet技术支持,它除保留了前期版本中的数据库Web出版工具“Web助手”外,还增强了对XML和HTTP技术的支持,这使得电子商务系统能够通过XML等访问SQL Server数据库系统,也扩展了SQL Server在数据挖掘和分析服务领域的应用。

4.丰富的编程接口工具,使用户开发SQL Server数据库应用程序更加灵活。SQL Server提供了Transact-SQL、DB-Library for C、嵌入式SQL(ESQL)等开发工具,Transact-SQL与工业标准SQL语言兼容,并在其基础上加以扩充,使它更适合事务处理方面的需要。此外,SQL Server 2000还支持ODBC、OLE DB、ADO规范,可以使用ODBC、OLE DB、ADO接口访问SQL Server数据库。

5.具有很好的伸缩性和可靠性。SQL Server 2000既能运行在Windows桌面操作系统下,又可运行在服务器操作系统(包括Windows NT和Windows 2000)下;既能运行在单CPU计算机上,又能运行在对称多处理系统下。所以,它具有很好的伸缩性,能够满足从桌面应用到大型企业分布式应用到不同层次用户的要求。

6.简单的管理方式。SQL Server 2000与Microsoft Windows 2000有机集成,所以可以使用Windows 2000的活动目录(Active Directory)功能对SQL Server进行集中管理,大大简化大型企业中的系统管理工作。此外,与Windows 2000的集成还使SQL Server能够充分利用操作系统所提供的服务和功能(如安全管理、事件日志、性能监视器、内存管理和异步I/O等),从而增强了SQL Server数据库系统的功能,并且只需要占用很少的系统资源。

1.3.3 ADO对象概述

ADO对象是针对当前微软的软件所支持的数据进行操作的最为有效、简单并且功能强大的方法。它可以把大部分数据源可编程的属性直接扩展到Active Server上,主要含有Connection、Recordset与Command三种对象。其中:Connection对象主要负责打开或连接数据库文件;Recordset对象主要是存取数据库的内容;Command对象主要是对数据库下达行动查询指令以及SQL Server的Stored Proceduce。

ADO对象能够存取到数据库的内容,首先要求数据库的驱动程序( ODBC驱动程序与OLE DB驱动程序)必须安装上,否则,ADO对象是无法存取数据库中内容,其原理示意图如图1.1所示:

客户端

客户端

客户端

ADO对象

各种数据库所对应的驱动程序

各种数据库(如Access、SQL Server以及Oracle等)

图1.1 ADO对象存取数据原理示意图

请注意:上图中的“各种数据库所对应的驱动程序”即ODBC驱动程序与OLE DB驱动程序。

1.3.3.1 利用ADO开发网络数据库应用程序

ADO(Active Date Objects,即ActiveX数据对象)是一个ASP内置的ActiveX服务器组件(ActiveX Server Component)。可把它与ASP结合起来,建立提供数据库信息的网页内容,对数据库进行查询、插入、更新、删除等操作,并可以把在用户端实现“网上实时更新显示”的最新Web数据库技术。

要执行ADO,服务器端必须安装Windows NT Server 和Internet Information Server(IIS),而客户端只要有IE或NETSCAPE较新版本的浏览器即可。

利用ADO开发网络数据库应用程序有以下几个优点:

⑴ 支持客户机/服务器结构(Client/Server)与Web系统开发技术。

⑵ 内部有多个互相独立的对象模型。

⑶ 支持分批修改数据库内容。

⑷ 支持多种不同的数据控制指标形式。

⑸ 先进的Recordset数据高速缓存管理功能。

⑹ 允许在程序中使用多个Recordset对象或者多个分批修改区块传送。

⑺ ADO属于Free_threaded对象,利用它可以开发出更有效的Web应用程序。

1.3.3.2 ADO组件的主要对象及其功能

ADO组件又称为数据库访问组件,它提供了以下七种对象:

Connection对象:提供对数据库的连接服务。

Command对象:定义对数据库源操作的命令。

Recordset对象:由数据库服务器所返回的记录集。

●Recordset对象的LockType属性的设置值

常量

说明

adLockReadOnly

1

默认值,只读。无法更改数据

adLockPressimistic

2

保守式记录锁定(逐条)。提供者执行必要的操作确保成功编辑记录,通常采用立即锁定数据源的记录的方式。

adLockOptimistic

3

开放式记录锁定(逐条)。提供者使用开放式锁定,只在调用Updata方法时锁定记录。

adLockBatchOptimistic

4

开放式批更新。用于与立即更新模式相反的批更新模式。

Fields对象:由数据库服务器所返回的单一数据字段

Parametes对象:表示Command对象的参数。

Property对象:单独的一个Property对象,提供属性功能。

Error对象:提供处理错误的功能。

使用ADO对象可以建立和管理数据库的连接,按数据库服务器的要求获得数据,执行更新、删除、添加数据等操作,获取ODBC的错误信息等。

1.3.3.3 用来操纵数据的SQL命令

SQL命令是发送给数据库并要求数据库操作的指令,它是专门为数据库设计的语言,比一般的计算机程序语言简单的多。SQL命令主要分成两部分:DDL(Data Definition Language)和DML(Data Manipulation Language),其中DDL是建立数据表及数据列的指令群,而DML则是操作数据库记录的指令群,如数据库记录的添加、更新、删除、和查询等。

SQL命令,包括Select、Delete、Update、Insert Into、Select Into等。

⑴ 筛选及排序记录的Select指令

基本句型一:Select 字段串列 From 数据表

基本句型二:Select … From … Where 筛选条件

基本句型三:Select … From … Order By字段串列

Select Top:限定选取数据的条数

⑵ 删除数据记录的Delete指令

基本语法:Delete From 数据表  Where 条件式

⑶ 更新数据记录的Update指令

基本语法:Update 数据表Set 表达式

⑷ 增加数据记录的Insert Into 指令

基本句型一:Insert Into 数据表 (字段串列) Values (字段串列)

基本句型二:Insert Into 数据表 (字段1,字段2,…,字段n) Select …

⑸ 建立新数据表的Select Into 指令

该指令与“Insert Into … Select …”指令的区别是,这个指令将建立另一个新的数据表,而Insert Into是增加数据记录到“现存的”数据表中。

1.2.4 Visual Basic 6.0访问数据库的过程

①定义数据库组建

Dim con As New ADODB.Connection

②打开数据库

对于SQL数据库,其连接语句为con.Open "driver={sql server};server=

localhost;uid=sa;pwd=;database=student"。而对于Access数据库,连接语句为

con.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=

" & App.Path + "\student.mdb"

③设定SQL语句,使用“Execute”命令,即可开始执行访问数据库的动作

Dim rs As New ADODB.Recordset 其中rs为结果集对象(RECORDSET)

④关闭结果集对象,断开与数据库的连接

rs.Close

Con.Close

第二章 系统整体规划

2.1数据库的设计

在系统设计过程中,首先要建立的就是数据库。本数据库采用SQL Server 2000来构造,共使用了7个表,它们分别是用户信息表(UserInfo)、学生信息表(StuInfo)、班级信息表(Class)、专业信息表(Major)、学院信息表(Depart)、课程信息表(Lesson)、学生成绩表(Result)。

  1. 用户信息表(UserInfo):

字段名

数据类型

说明

是否为空

是否为关键字

UserID

文本

用户名

Not Null

Primary Key

UserPWD

文本

用户密码

Not Null

UserName

文本

姓名

Not Null

UserPower

文本

使用权限

Not Null

  1. 学生信息表(StuInfo):

字段名

数据类型

说明

是否为空

是否为关键字

SID

文本

学号

Not Null

Primary Key

SName

文本

姓名

Not Null

SGender

文本

性别

Not Null

SPlace

文本

籍贯

Not Null

SBirthday

日期/时间

出生日期

Not Null

SMinzu

文本

民族

Not Null

SZhengzhi

文本

政治面貌

Not Null

SDormitory

文本

寝室号码

Not Null

SAddress

文本

家庭住址

Not Null

SCode

文本

邮政编码

Not Null

STel

文本

联系电话

Not Null

SRemark

备注

备注

Not Null

  1. 班级信息表(Class):

字段名

数据类型

说明

是否为空

是否为关键字

ID

文本

班级代码

Not Null

Primary Key

  1. 专业信息表(Major):

字段名

数据类型

说明

是否为空

是否为关键字

ID

文本

专业代号

Not Null

Primary Key

Name

文本

专业名称

Not Null

  1. 学院信息表(Depart):

字段名

数据类型

说明

是否为空

是否为关键字

ID

文本

学院代号

Not Null

Primary Key

Name

文本

学院名称

Not Null

6.课程信息表(Lesson):

字段名

数据类型

说明

是否为空

是否为关键字

ID

文本

课程代号

Not Null

Primary Key

Name

文本

课程名称

Not Null

Time

文本

课时

Not Null

Mark

 文本

学分

Not Null

7.学生成绩表(Result):

字段名

数据类型

说明

是否为空

是否为关键字

ID

文本

学生学号

Not Null

Primary Key

Name

文本

课程名称

Not Null

Primary Key

Score

文本

分数

Not Null

Remark

文本

备注

Not Null

2.2系统流程图

登陆表单(管理员或者普通用户身份登陆)

Splash表单

MDI主窗口

(系统主窗口)

管理学生学籍信息(学生基本信息管理,课程管理,专业/学院管理和考试成绩管理

管理系统用户(添加,删除)

对学生信息进行查找(按学号或姓名)

返回查询信息

管理员登陆

重新登陆

                                                 

                            

                                                        

图2.1 系统流程图

2.3 系统功能分析
系统开发的目标是实现学生学籍管理的系统化、规范化和自动化,这是在

用户要求的基础上提出来的,功能要求如下:

(一)学生信息管理:能对学生信息进行添加、修改、删除。

(二)课程管理:对课程进行添加、修改、删除操作。

(三)专业/学院设置:

(三)考试成绩管理:

(四)查询学生信息:根据学号或姓名对学生信息进行精确/模糊查询

(五)用户管理:定义使用本系统的用户名称及密码

第三章 系统具体实现

经过需求分析、功能模块设计之后要进入详细设计阶段,本阶段将按系统的主要模块进行论述,重在阐述具体的某项功能的实现方法或运用到的相关技术。

3.1 准备工作

  1. 添加引用:单击工程菜单中的引用选项,添加Microsoft ActiveX Data Objects 2.6 Library和Microsoft Excel 9.0 Object Library两个引用。
  2. 添加部件:单击工程菜单中的部件选项,添加Microsoft ADO Data Control 6.0(OLEDB)、Microsoft Common Dialog Control 6.0(SP3) 、Microsoft FlexGrid Control 6.0、Microsoft Windows Common Controls 6.0(SP4)和Microsoft Windows Common Controls-2 6.0五项。

3.2 模块设计

添加两个模块module1和module2,在module1中添加如下代码

Option Explicit

Global con As New ADODB.Connection

Global rs As New ADODB.Recordset

Global classid As String, stuid As String

Global LoginUser As String, LoginPower As String 

LoginUser记录当前登陆用户的用户名,LoginPower记录当前登陆用户的权限

Dim Userid As String, Userpwd As String, Username As String, Userpower As String

Dim sqlstr As String

Sub Main()

If App.PrevInstance = True Then

    MsgBox "注意程序已经运行,不能再次装载!", vbOKOnly

    Exit Sub

Else

Con.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&App.Path+"\student.mdb"

      Frmlogin.Show

End If

End Sub

 

在module2中添加代码(MD5算法)

  详细代码见程序中module2.bas

3.3 用户界面实现

3.3.1 登陆界面(frmlogin)

因为本系统是按学籍管理的思想设计的,故而登陆部分主要完成密码校验、确定管理员等功能,对于密码本系统采用的是MD5算法。这里附上本程序的登陆界面,见图3.1。

图3.1 用户登陆界面

在代码窗口的“通用”部分,定义一个模块级的公共变量loginno用来记录当前密码输入错误的次数

Dim loginno As Integer

在Form的Load事件中,将txtuser设置为焦点,初始化loginno。

Private Sub Form_Load()

   loginno = 0

   Me.Show

   txtuser.SetFocus

End Sub

这里将“确定”和“取消”两个按钮作为一个按钮数组cmdOkCancel:确定按钮的index属性为0,取消按钮的index属性为1。

利用SQL语句,在数据库中查询,如果查到相应的记录,则调用Case 0事件,用户的登陆获得通过,此时可以退出登陆窗口,并进入MDI主窗口,同时将用户类型和用户名分别传递到MDI主窗口和frmmanage中;如果没有相应的记录,则给出提示错误信息,同时将用户输入错误密码次数增加1,如果错误超过3次,则退出整个系统;若次数还没有超过3次,则提示用户重新输入。

根据以上的设计,cmdOkCancel的Click事件的代码如下:

Private Sub cmdOkCancel_Click(Index As Integer)

   Select Case Index

      Case 0

        ……

        Userid = Trim(txtuser.Text)

        Userpwd = MD5(Trim(txtPassword.Text))

   

        sqlstr = "select * from UserInfo where UserID='" & Userid & "'"

        rs.Open sqlstr, con, 1, 1

   

    If Not rs.EOF Then

        If rs("UserPWD") <> Userpwd Then

           '密码错误时

            MsgBox "您输入的密码不正确!", vbQuestion

            Me.Caption = "请输入用户名和密码:"

            loginno = loginno + 1

           

            '当错误的密码次数达到3次时,不能登陆,退出!

            If loginno = 3 Then

      MsgBox "对不起,您不能使用该系统!请与管理员联系。", vbInformation

                Unload Me

                Exit Sub

            End If

            ……

         Else

           LoginUser = Userid       '保存当前登陆用户名

           LoginPower = rs.Fields(3)

 '将当前登陆用户的权限保存到LoginPower中

           Unload Me

           frmflash.Show

         End If

    Else

        MsgBox "没有您输入的用户名!", 32

        ……

    End If

    rs.Close: Set rs = Nothing

     Case 1

        ‘退出整个程序

        Unload Me

   End Select

End Sub

《姓名大乐斗》各版本下载:https://github.com/airingursb/nameplayer/releases 姓名大作战 1.0 游戏内容: 输入两个人的姓名,即可进行姓名PK。 有六项属性值: 生命值,攻击,防御,速度,命中,运气。 除了运气,其他5项属性每个姓名都有唯一的属性值相匹配。 目前只支持输入中文名。 有四项特殊技能:九阳神功,降龙十八掌,快速治疗,垂死挣扎 具体内容,大家玩玩就知道啦~ 欢迎各位提出宝贵意见,提交BUG,升级意见欢迎投稿邮箱:gx-deng@163.com 另外欢迎联系QQ:361411192 创作日期:2014.4.5 ---------------------------------------------------------------------- 姓名大作战 1.1 更新内容如下: 1.修复了速度属性值可能为0的BUG 2.修复了运气值相等时无法开始游戏的BUG 3.优化了游戏界面 4.增加了调整游戏速度的按钮 5.增加了作弊器 6.增加了复位键 至于增加新的技能,等下个版本再吧!这个版本还是遵循网页传统版本做的,贸然增加新的东西进去不但可能破坏游戏平衡性,还会引来不必要的BUG。 谢谢游戏! 更新日期:2014.4.6 ---------------------------------------------------------------------- 姓名大作战 1.2 更新内容如下: 1.优化了游戏页面,删除了一些多余的按钮 2.修改了战斗先手系统,融入了速度属性值因素 3.修改了游戏速度按钮 4.优化了作弊器 5.降低触发“垂死挣扎”的条件:触发血量上调至15 6.修复了text控件可编辑的BUG 7.发现了“降龙十八掌”中的巨大BUG,删除了此项技能 8.丰富了提示系统,并添加了登录窗口 用户名:Airing 密码:123 9.增强了“快速治疗”回复的最大生命值(由原来的20上调至30) 10.增加了“吸星大法”,可以吸收对方生命值和属性值 此次修改之后游戏算是成型了,新添加“吸星大法”或许有些BT,会在以后慢慢调整的,另外增加恢复HP系统是为了变相削弱攻击力属性。在测试中,发现攻击力过于逆天,有些姓名的攻击可以相差到100点,以至于秒杀,毫无游戏观赏性。伤害计算公式较为合理,所以只能够通过技能来增加伤害。另外,原来的“降龙十八掌”很鸡肋,初期释放过于逆天,后期释放相当于没放,运气成分过大,所以将其删除。今后会就持续游戏做出调整,比如增加姓名的HP、增加防御或者削弱攻击来达到持续战斗的目的。下个版本会融入命中率参数。 有任何新的游戏建议请联系本人,谢谢支持! 更新日期:2014.4.9 ---------------------------------------------------------------------- 姓名大作战 1.3 更新内容如下: 1.优化了登陆窗口,增加了登录系统 系统试用账号:2014612,密码:222222 2.增加了注册系统,用户名与姓名关联,一人一号 3.增加了密码找回系统 4.增加了管理员系统 5.削弱了“吸星大法”,削弱释放几率,限制使用次数 (由原本的47.5%下调为7%,全场限制施放3次) 6.增加了新技能“八门遁甲” 7.增强了“九阳神功”,取消了施放失败的情况,增强了技能威力,释放几率大 幅增加(由原本下降最大属性10点,上调为15点,释放几率由2.5%升为15%) 8.增强了“快速治疗”,释放几率大幅增加(由原本的2.5%上调至10%) 9.增强了普通攻击,基础攻击上调,释放几率增加 (基础攻击最大值由10点上升到30点,释放几率由47.5%上调至60%) 10.修复了连续与同一人作战产生相同作战过程的BUG 12.增加了胜场显示标签 新技能介绍:八门遁甲:增加自身属性值300~400点,自使用起,三个回合未解决战斗,则施放者功力枯竭而死,全场使用次数上限为1次,释放几率为5%。 更新中断了两个月,其实是在弄别的游戏,这次将技能大改动,削弱了上个版本很BUG的吸星大法。吸星大法本身效果BT,然后释放几率高达50%,所以两个人来回吸,你吸我一口我吸你一口,打个三五分钟都无法结束战斗。故本版本从几率和施放上限上削弱了吸星大法。本版本在增加普攻几率的同时,通过增加破甲基本攻击,削弱了高防御属性的姓名。平衡了各个技能的出现几率。最主要的是增加了数据库,做出登录系统,采用一人一号制,为未来的更新打下的基础。 更新日期:2014.6.13 ---------------------------------------------------------------------- 姓名大乐斗 1.4 更新内容如下: 1.《姓名大作战》正式更名《姓名大乐斗》 2.加密了数据库 3.增加了人物等级和技能等级系统 4.增加了金钱系统 4.增加了属性窗口 5.增加了显示失败场次 6.增加了商店系统,并引入新物品:小红药 7.增加了物品系统,加入新物品“小红药”和“复活药” 8.增加了新技能“金蝉脱壳” 9.“垂死挣扎”更名为“回光返照” 10.修复了使用八门遁甲功力枯竭身亡不算失败的BUG 11.修复了一方攻击比另一方防御高的时候,普攻有几率给对方加血的BUG 12.修复了可以输入不规范对手名的BUG 13.将命中属性更名为敏捷属性 14.增加了游客试玩界面(v1.3版本) 15.增加了新副本——试炼之塔 16.增加了乐斗模式 新物品介绍: 小红药:限试炼之塔使用,售价100/个,效果HP+50 复活药:限试炼之塔死亡时使用,目前只有通关试炼之塔才可获得,死亡时原地满状态复活 新技能介绍:金蝉脱壳:HP降为0时有几率以一定血量复活,每人限用1次 Lv1:触发几率5%,复活后血量20 Lv2:触发几率6%,复活后血量30 Lv3:触发几率7%,复活后血量40 新副本介绍:试炼之塔:共十层,守塔人为教技十男子。挑战过程中可以使用物品,挑战过程中状态不会回复,一旦挑战失败便会掉到第一层。通关奖励:金币5000,小红药*10,复活药*1 新模式介绍:乐斗模式:节操无下限,血量无上限!!取消等级系统,所有角色血量上限扩大20倍,八门遁甲释放几率上升为20%,并且取消限制使用次数,使用之后也不会死亡!!!金蝉脱壳触发几率上调为50%,取消限制使用次数,复活血量升为100~300!!九阳神功威力提升三倍!!尽情疯狂的打架吧!! 人物等级介绍: Lv1:胜场0~2 Lv2:胜场3~9 Lv3:胜场10~19 Lv4:胜场20~ 技能等级介绍:(主动技能的释放几率不会随等级变化) 破甲攻击: Lv1:伤害值0~30 Lv2:伤害值5~30 Lv3:伤害值5~35 九阳神功: Lv1:属性下降值1~15 Lv2:属性下降值2~17 Lv3:属性下降值3~20 八门遁甲: Lv1:属性提升值300~400 Lv2:属性提升值320~420 Lv3:属性提升值340~440 快速回复: Lv1:治疗值0~30 Lv2:治疗值10~40 Lv3:治疗值20~50 吸星大法: Lv1:吸收比率10% Lv2:吸收比率11% Lv3:吸收比率12% 回光返照: Lv1:属性提升值0~10,触发血量上限15 Lv2:属性提升值2~15,触发血量上限17 Lv3:属性提升值5~20,触发血量上限20 试炼之塔NPC介绍: 第1层:刘杰容——50,20,10,15,14 第2层:张荣佳——100,50,10,42,41 第3层:赵俊杰——2500,0,0,0,0 第4层:陈谊明——300,100,20,50,50 第5层:黄晓剑——100,300,100,50,50 第6层:赖鹏津——2000,0,500,0,0 第7层:梅震坤——500,200,200,50,50 第8层:缎嘉文——300,200,100,5000,50 第9层:范振威——3000,100,200,50,50 第10层:邓国雄——5000,500,500,500,500 经过几天几夜的更新,终于迎来了《姓名大乐斗1.4》,这次改动是几次来最大的,加入了新技能,副本系统,金钱系统,等级系统,乐斗模式,游客模式,物品系统,商店系统~~哇塞,居然改了这么多!嗯,努力往全球第一发展,争取游戏越做越大,玩家越来越多!!接下来会丰富物品系统和副本,推出越来越多的新模式,加入更多的新技能!!动画版是下一个大目标,在动画版做出来之前先慢慢丰富游戏内容,平衡游戏,增加游戏可玩度!之后的大目标的实现联网PVP对战,相信不久的将来,呈现给大家的是全新的《姓名大乐斗》!谢谢支持! 更新日期:2014.6.15 ---------------------------------------------------------------------- 姓名大乐斗 1.5 更新内容如下: 1.支持联机PVP,所有注册资源共享 2.新增了擂台战模式,只要打赢了擂主就能成为擂主,每次挑战消耗100金币,成为擂主有丰厚奖励!(金币*200,复活药*1) 3.新增了联机对战模式,只要输入对方的ID便能够PK 4.降低了小红药的售价,从200金币/个改为100金币/个 5.试炼之塔进入需要购买门票——100金币/次 6.试炼之塔不再触发八门遁甲 7.提高试炼之塔的奖励制度(第三层之后每层奖励200金币,并且回复300HP,通过之后复活药奖励改为3个) 8.新增了更新检查系统 经过几天几夜的更新,终于迎来了《姓名大乐斗1.5》,这次最重大的改动是可以联网了!!没错,新增的决斗场和擂台战绝对可以让玩家们感受到竞技的乐趣。上个版本关于试炼之塔的BUG已经修复,比如可以无限刷“刘杰容”来刷金币刷等级,莫名其妙触发八门遁甲而死的⋯⋯增加了门票收费制度的同时也丰富了奖励制度。嗯,差不多就是这样。另外新增了更新检查,有更新会提示的,暂时无法做到自动更新,注意关注我的微博,会有更新说明的。另外,招美工,为2.0版本做准备!谢谢支持! 微博:Airing-安灵 更新日期:2014.6.17 ----------------------------------------------------------------------- 更多更新可以关注:https://github.com/airingursb/
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

用数据说话用数据决策

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值