【vb精品源码栏目提醒】:网学会员,鉴于大家对vb精品源码十分关注,论文会员在此为大家搜集整理了“【精品】数据库应用系统开发_程序代码 - 科研创新”一文,供大家参考学习!
数据库技术与应用项目指导 图书现场采购系统 系统主窗体的实现 1.数据表结构的实现 经过前面的需求分析和概念结构设计以后,得到了数据库的逻辑结构。
现在就可以在SQL Server 2000 数据库系统中实现该逻辑结构。
可以直接在 SQL Server 2000 企业管理器中创建表,也可以在 SQL 查询分析器中创建。
下面给出在查询分析器中创建这些表的 SQL 语句,读者可以将这些表创建在系统的 pubs 数据库中。
1创建书商图书基本信息表 bookseller_bookinfo CREATE TABLE bookseller_bookinfo rec_id Bigint PRIMARY KEY nextvalserial isbn varchar20 null bookname varchar200 null author varchar50 null publisher_date varchar50 null publisher varchar50 null class_name varchar50 null book_price numeric DEFAULT 0 book_num int DEFAULT 0 provider varchar50 null 表1 bookseller_bookinfo 书商图书基本信息表列名 数据类型 可否为空 说明REC_ID Bigint NOT NULL 主键ISBN Varchar20 NULL ISBN 号bookname Varchar200 NULL 书名author Varchar50 NULL 作者Publisher_date Varchar50 NULL 出版日期Publisher Varchar50 NULL 出版社Class_name Varchar50 NULL 图书分类Book_Price money NULL 图书价格Book_num int NULL 订书数Provider Varchar50 NULL 提供商 2创建图书馆图书馆藏基本信息表 library_bookinfo CREATE TABLE library_bookinfo rec_id Bigint PRIMARY KEY nextvalserial isbn varchar20 null bookname varchar200 null author varchar50 null publisher_date varchar50 null publisher varchar50 null class_name varchar50 null book_price numeric DEFAULT 0 book_num int DEFAULT 0 provider varchar50 null 表2 library_bookinfo 图书馆图书馆藏基本信息表列名 数据类型 可否为空 说明REC_ID Bigint NOT NULL 主键ISBN Varchar20 NULL ISBN 号bookname Varchar200 NULL 书名author Varchar50 NULL 作者Publisher_date Varchar50 NULL 出版日期Publisher Varchar50 NULL 出版社Class_name Varchar50 NULL 图书分类Book_Price money NULL 图书价格Book_num int NULL 馆藏数量Provider Varchar50 NULL 图书馆名称 3创建用户注册表 userenroll_info CREATE TABLE userenroll_info rec_id int PRIMARY KEY nextvalserial machine varchar50 null decode varchar50 null 表 3 userenroll_info 用户注册信息表列名 数据类型 可否为空 说明REC_ID int NOT NULL 主键machine Varchar50 NULL 机器码decode Varchar50 NULL 注册码 2.系统主窗体的创建 上面的 SQL 语句在 SQL Server 2000 中查询分析器执行后,将自动产生需要的所有表。
有关数据结构的所有后端工作已经完成。
现在将通过图书现场采购系统中功能模块的实现,介绍如何使用 Visual Basic 来编写数据库系统的客户端程序。
1创建工程项目 BOOKCG_MIS ,
VB 将自动产生一个 Form 窗体,这里 启动
VB,在
VB 工程模板中选择“标准 EXE”删除这个窗体。
单击“文件→保存工程”菜单项,保存工程,将这个工程命名为BookCG_MIS.vbp。
2创建图书现场采购管理系统主窗体 Visual Basic 创建的应用程序可以是 SDI单文档界面和 MDI多文档界面。
这里采用MDI 多文档界面,可以使程序更为美观、整齐有序。
单击工具栏中的“添加 MDI 窗体”按钮,添加一个多文档界面,后单击工具栏中的“菜单编辑器”创建主窗体的菜单,生成一个如图 2 所示的主窗体,主窗体的 Caption 属性设为“图书现场采购管理系统” 。
主窗体保存文件名为 frmmain.frm。
,Name 属性为“frmmain”菜单结构参考图 1。
图书现场采购系统 统 图 采 数 用 计 书 购 据 户 输 采 数 导 管 出 购 据 入 理 管 管 处 导 理 理 理 出 用 用 采 采 采 D E M 户 户 查 现 批 登 注 购 购 购 B X A 录 册采 询 场 查 数 数 数 F C RC购 选 扫 重 据 数 据 据 导 E统 购 描 功 查 据 修 添 入 L计 功 选 能 询 改 加 导 导 导输 能 购 出 出 入出 导 出 图1 图书现采系统功能模块图 图 2 系统主窗体 3创建公用模块 在 Visual Basic 中可以用公用模块来存放整个工程项目公用的函数、全局变量等。
便于各窗体模块调用公用模块中的函数、变量,以提高代码的效率。
在项目资源管理器中为项目 保存添加一个 Module, 为 Module1.bas, 此工程项目的公用模块程序中的过程和函数据如下: ①SQL Server 2000 服务器连接字符串函数 Public Function ConnectString As String ConnectString quotProviderSQLOLEDB.1PasswordsaUser IDsaInitial CatalogpubsData Source 127.0.0.1quot 设置 SQL Server2000 数据库链接字符串,此字符串可保存在目录文件中 End Function ②SQL 命令执行函数 Public Function ExecuteSQLByVal SQL As String MsgString As String AsADODB.Recordset Dim cnn As ADODB.Connection Dim rst As ADODB.Recordset Dim sTokens As String On Error GoTo ExecuteSQL_Error sTokens SplitSQL Set cnn New ADODB.Connection cnn.Open ConnectString If InStrquotINSERTDELETEUPDATEEXECUTEquot UCasesTokens0 Then cnn.Execute SQL MsgString sTokens0 amp quot query successfulquot Else Set rst New ADODB.Recordset rst.Open TrimSQL cnn adOpenKeyset adLockOptimistic Set ExecuteSQL rst MsgString quot查询到quot amp rst.RecordCount amp quot 条记录 quot End If ExecuteSQL_Exit: Set rst Nothing Set cnn Nothing Exit Function ExecuteSQL_Error: MsgString quot查询错误: quot amp Err.Description Resume ExecuteSQL_Exit End Function 这两个函数在后面的实例中将频繁用到,ConnectString 函数为连接 SQL Server 2000 数据库的参数调用函数,为简便起见写在程序中,实际应用中可以把连接数据库的参数保存在配置文件中,通过程序来调用。
ExecuteSQL 函数执行 SQL 语句,如删除、更新、添加和查询,只有执行查询语句时才返回记录集对象。
③启动函数 SubMain Sub main register.Show End Sub 系统启动时,首先执行用户登录窗体。
用户管理模块的实现 用户管理模块主要实现对软件的加密,防止盗版,使得软件只能在注册的机器上运行,主要实现生成机器码、用户注册和用户登录验证的功能。
所有这些功能在系统的用户登录界面中实现。
1.用户登录窗体的创建 系统启动后,用户登录窗体中放置两个文本框TextBox,用来输入机器码和注册码;3个按钮CommandButton用来进入、注册和退出系统;3 个标签Label用来显示窗体的信息。
这些控件的属性设置见表 4 图 3 登录窗体 用户登 录窗 体中放 置两 个文 本框TextBox, 用来 输入机 器码 和注 册码; 3 个按钮CommandButton用来进入、注册和退出系统;3 个标签Label用来显示窗体的信息。
这些控件的属性设置见表 14-12。
表 4 登录窗体中各个控件的属性设置控件 属性 属性取值 说明RegisterForm Caption 登录 窗体 StartUpPosition CenterScreen 窗体显示在屏幕中央Text1 Name Text1 机器码文本框Text2 Name Text2 注册码文本框cmdok Caption 进入 命令按钮cmdcancel Caption 退出 退出按钮cmdenroll Caption 注册 注册按钮Label1 Caption 图书现场采购管理系统 提示Label2 Caption 机器码为:Label3 Caption 请输入注册码: 此程序在 Form_load实现的代码如下: Private Sub Form_Load Dim machine As String 机器码 Dim machine_decode As String 机器码对应的注册码 Dim txtsql As String 用来存放 SQL 语句 Dim mrc As ADODB.Recordset 用来存放返回记录集对象 Dim msgtext As String 用来存放返回信息 machine GetSerialNumberquotc:quot 取硬盘的序列号作为机器码 machine_decode getserialn 取硬盘机器码对应的注册码 text1.Text machine 在 Text1 文本框中显示机器码 txtsql quotselect from userenroll_info where machinequot amp machine amp quot and decodequot ampmachine_decode amp quotquot Set mrc ExecuteSQLtxtsql msgtext 在用户注册表中查找机器码和注册码 If mrc.EOF Then 没找到机器注册信息显示登录界面中的注册框隐藏进入按钮 MsgBox quot没有注册信息quot cmdok.Visible False cmdenroll.Visible True Else 找到机器注册信息隐藏登录界面中的注册框显示进入按钮 MsgBox quot找到注册信息quot cmdok.Visible True cmdenroll.Visible False Label2.Visible False Label3.Visible False text1.Visible False text2.Visible False End If Set mrc Nothing End SubPrivate Sub cmdok_Click 验证成功时进入系统 Unload Me frmmain.ShowEnd SubPrivate Sub cmdcancel_Click 退出系统 EndEnd Sub 2.生成机器码函数Function GetSerialNumberstrDrive As String As Long 获取机器码函数取硬盘的序列号 Dim SerialNum As Long Dim Res As Long Dim Temp1 As String Dim Temp2 As String Temp1 String255 Chr0 Temp2 String255 Chr0 Res GetVolumeInformationstrDrive Temp1 _ LenTemp1 SerialNum 0 0 Temp2 LenTemp2 GetSerialNumber -SerialNumEnd FunctionFunction getserialn As String 获取机器码对应的注册码对硬盘的序列号机器码进行变换转为注册码 Dim inputseial As String Dim n As String Dim n1 As String Dim n2 As String Dim p As Long Dim p1 As Long Dim p2 As Long Dim i As Long p0 p1 0 p2 0 n quotquot n1 quotquot n2 quotquot n StrGetSerialNumberquotc:quot n1 n n2 n If Lenn lt 20 Then n n String20 - Lenn quotZquot n1 n1 String20 - Lenn1 quotAquot n2 n2 String20 - Lenn2 quotHquot ElseIf Lenn gt 20 Then n Leftn 20 n1 Leftn1 20 n2 Leftn2 20 End If For i 1 To 20 p p AscMidn i 1 199 p1 p1 AscMidn1 i 1 179 p2 p2 AscMidn2 i 1 109 Next inputseial Formatp quot-quot Formatp1 quot-quot Formatp2 getserialn inputseial End Function 在 GetSerialNumber函数中需要调用 API 函数 GetVolumeInformation来获取盘区信息,其中卷序列号也就是磁盘每个分区的序列号, 此函数需在用户登录窗体中申明,函数格式如下。
Private Declare Function GetVolumeInformation Lib _ quotkernel32.dllquot Alias quotGetVolumeInformationAquot ByVal _ lpRootPathName As String ByVal lpVolumeNameBuffer As _ String ByVal nVolumeNameSize As Integer _ lpVolumeSerialNumber As Long lpMaximumComponentLength _ As Long lpFileSystemFlags As Long ByVal _ lpFileSystemNameBuffer As String ByVal _ nFileSystemNameSize As Long As Long 取硬盘卷信息的动态链接库 此函数不需要手工输入,可通过
VB 工具“API 文本浏览器”获取,在 Windows 桌面选择“开始→程序→ Microsoft Visual Basic 6.0 中文版→ Microsoft Visual Basic 6.0 中文版工具→API 文本浏览器”选项,打开 API 阅览器如下图 4 所示。
从“文件”菜单中选择“加载文 本 文 件 ” 菜 单 项 , 加 载 WIN32API.TXT 文 本 文 件 , 此 时 在 “ 可 用 项 ” 中 选 择“GetVolumeInformation”并双击,则此函数的声明显示在“选定项”文本框中,此时可将此函数复制用户管理窗体中。
图4 API 文本浏览器 3.用户注册程序 如果用户第一次登录,则应在文本框text2中输入从软件商处取得的注册码,进行注册,执行 cmdenroll_Click 程序后,将机器码和注册码写入 SQL Server 2000 数据库中。
Private Sub cmdenroll_Click 在 text2 中输入软件商所提供的注册码写入数据库的 userenroll_info 表中 Dim txtsql As String 用来存放 SQL 语句 Dim mrc As ADODB.Recordset 用来存放返回记录集对象 Dim msgtext As String 用来存放返回信息 If Lentext2.Text ltgt 20 Then MsgBox quot您输入的注册码错误quot Exit Sub End If If text2.Text ltgt getserialn Then MsgBox quot注册码错误请重新输入quot Exit Sub End If 注册码输入正确写入数据库同时显示进入按钮隐藏注册对象. On Error GoTo err1 txtsql quotINSERT INTO userenroll_info machinedecode values quot amp text1.Text amp quotquot amptext2.Text amp quotquot Set mrc ExecuteSQLtxtsql msgtext 在用户注册表中查找机器码和注册码 MsgBox quot注册成功quot cmdok.Visible True cmdenroll.Visible False Label2.Visible False Label3.Visible False text1.Visible False text2.Visible False Exit Sub err1: MsgBox quot添加注册信息失败quotEnd Sub 采购数据管理模块的实现 采购数据管理模块主要实现如下功能:添加采购信息、修改采购信息、和查询采购信息。
1.添加采购信息窗体的创建 在窗体中放置了多个文本框,用来输入图书及采购信息;两个命令按钮用来确定添加采购信息和退出;加入多个标签用来提示文本框内容。
这些控件的属性设置如表 5 所示。
表 5 添加采购信息窗体中各控件的属性设置控件 属性 属性值 说明FrmxjaddForm Name frmxjadd 当前窗体 Caption 采购数据添加Text1 Name Text1 输入 ISBN 号文本框Text2 Name Text2 输入书名文本框Text3 Name Text3 输入分类文本框Text4 Name Text4 输入出版社文本框Text5 Name Text5 输入作者文本框Text6 Name Text6 输入价格文本框Text7 Name Text7 输入出版年文本框Text8 Name Text8 输入订购数量文本框Text9 Name Text9 输入提供商文本框cmdxjadd Name cmdxjadd 添加命令按钮cmdexit Name cmdexit 退出命令按钮Label1 Caption ISBN 号: 提示标签Label2 Caption 书名:Label3 Caption .