收藏 分销(赏)

数据库应用系统开发-程序代码.doc

上传人:精*** 文档编号:2243746 上传时间:2024-05-23 格式:DOC 页数:31 大小:315.54KB
下载 相关 举报
数据库应用系统开发-程序代码.doc_第1页
第1页 / 共31页
数据库应用系统开发-程序代码.doc_第2页
第2页 / 共31页
数据库应用系统开发-程序代码.doc_第3页
第3页 / 共31页
数据库应用系统开发-程序代码.doc_第4页
第4页 / 共31页
数据库应用系统开发-程序代码.doc_第5页
第5页 / 共31页
点击查看更多>>
资源描述

1、数据库应用系统开发_程序代码 作者: 日期:2 个人收集整理 勿做商业用途数据库应用系统开发数据库系统开发案例图书现场采购系统系统主窗体的实现1数据表结构的实现经过前面的需求分析和概念结构设计以后,得到了数据库的逻辑结构.现在就可以在SQL Server 2000数据库系统中实现该逻辑结构。可以直接在SQL Server 2000企业管理器中创建表,也可以在SQL查询分析器中创建。下面给出在查询分析器中创建这些表的SQL语句,读者可以将这些表创建在系统的pubs数据库中。(1)创建书商图书基本信息表bookseller_bookinfoCREATE TABLE bookseller_booki

2、nfo(rec_id Bigint PRIMARY KEY nextval(serial),isbn varchar(20) null,bookname varchar(200) null,author varchar(50) null,publisher_date varchar(50) null,publisher varchar(50) null,class_name varchar(50) null,book_price numeric DEFAULT 0,book_num int DEFAULT 0,provider varchar(50) null)(2)创建图书馆图书馆藏基本信息

3、表library_bookinfoCREATE TABLE library_bookinfo (rec_id Bigint PRIMARY KEY nextval(serial),isbn varchar(20) null,bookname varchar(200) null,author varchar(50) null,publisher_date varchar(50) null,publisher varchar(50) null,class_name varchar(50) null,book_price numeric DEFAULT 0,book_num int DEFAULT

4、0,provider varchar(50) null)(3)创建用户注册表userenroll_infoCREATE TABLE userenroll_info (rec_id int PRIMARY KEY nextval(serial),machine varchar(50) null,decode varchar(50) null)2系统主窗体的创建 上面的SQL语句在SQL Server 2000中查询分析器执行后,将自动产生需要的所有表。有关数据结构的所有后端工作已经完成。现在将通过图书现场采购系统中功能模块的实现,介绍如何使用Visual Basic来编写数据库系统的客户端程序。

5、(1)创建工程项目BOOKCG_MIS启动VB,在VB工程模板中选择“标准 EXE,VB将自动产生一个Form窗体,这里删除这个窗体。单击“文件保存工程”菜单项,保存工程,将这个工程命名为BookCG_MIS。vbp。(2)创建图书现场采购管理系统主窗体Visual Basic创建的应用程序可以是SDI(单文档界面)和MDI(多文档界面)。这里采用MDI多文档界面,可以使程序更为美观、整齐有序。单击工具栏中的“添加MDI窗体”按钮,添加一个多文档界面,后单击工具栏中的“菜单编辑器”创建主窗体的菜单,生成一个如图14-15所示的主窗体,主窗体的Caption属性设为“图书现场采购管理系统”,Na

6、me属性为“frmmain”。主窗体保存文件名为frmmain。frm.菜单结构参考图14-12。 图1415 系统主窗体(3)创建公用模块在Visual Basic中可以用公用模块来存放整个工程项目公用的函数、全局变量等.便于各窗体模块调用公用模块中的函数、变量,以提高代码的效率。在项目资源管理器中为项目添加一个Module,保存为Module1。bas,此工程项目的公用模块程序中的过程和函数据如下:SQL Server 2000服务器连接字符串函数Public Function ConnectString() As StringConnectString = Provider=SQLOLE

7、DB.1;Password=sa;User ID=sa;Initial Catalog=pubs; Data Source =127.0.0。1” 设置SQL Server2000数据库链接字符串,此字符串可保存在目录文件中End FunctionSQL命令执行函数Public Function ExecuteSQL(ByVal SQL As String, MsgString As String) As ADODB.Recordset Dim cnn As ADODB.Connection Dim rst As ADODB。Recordset Dim sTokens() As String

8、On Error GoTo ExecuteSQL_Error sTokens = Split(SQL) Set cnn = New ADODB.Connection cnn。Open ConnectString If InStr(INSERT,DELETE,UPDATE,EXECUTE”, UCase(sTokens(0))) Then cnn.Execute (SQL) MsgString = sTokens(0) & query successful Else Set rst = New ADODB。Recordset rst。Open Trim$(SQL), cnn, adOpenKey

9、set, adLockOptimistic Set ExecuteSQL = rst MsgString = 查询到 rst。RecordCount ” 条记录 ” End IfExecuteSQL_Exit: Set rst = Nothing Set cnn = Nothing Exit FunctionExecuteSQL_Error: MsgString = 查询错误: ” & Err.Description Resume ExecuteSQL_ExitEnd Function这两个函数在后面的实例中将频繁用到,ConnectString函数为连接SQL Server 2000数据库的

10、参数调用函数,为简便起见写在程序中,实际应用中可以把连接数据库的参数保存在配置文件中,通过程序来调用。ExecuteSQL函数执行SQL语句,如删除、更新、添加和查询,只有执行查询语句时才返回记录集对象。启动函数SubMainSub main() register。ShowEnd Sub系统启动时,首先执行用户登录窗体。用户管理模块的实现用户管理模块主要实现对软件的加密,防止盗版,使得软件只能在注册的机器上运行,主要实现生成机器码、用户注册和用户登录验证的功能。所有这些功能在系统的用户登录界面中实现。1用户登录窗体的创建系统启动后,如果未注册,则显示如图14-16所示的窗体,如果注册成功后,将

11、显示如图1417所示的窗体。两个图中所有控件在同一窗体中,只是在不同的情况下隐藏了相应的控件. 图14-16 未注册时的窗体 图14-17 注册后用户登录窗体用户登录窗体中放置两个文本框(TextBox),用来输入机器码和注册码;3个按钮(CommandButton)用来进入、注册和退出系统;3个标签(Label)用来显示窗体的信息.这些控件的属性设置见表14-12。表14-12 登录窗体中各个控件的属性设置控件属性属性取值说明Register(Form)Caption登录窗体StartUpPositionCenterScreen窗体显示在屏幕中央Text1NameText1机器码文本框Tex

12、t2NameText2注册码文本框cmdokCaption进入命令按钮cmdcancelCaption退出退出按钮cmdenrollCaption注册注册按钮Label1Caption图书现场采购管理系统提示Label2Caption机器码为:Label3Caption请输入注册码:此程序在Form_load()实现的代码如下:Private Sub Form_Load() Dim machine As String 机器码 Dim machine_decode As String 机器码对应的注册码 Dim txtsql As String 用来存放SQL语句 Dim mrc As ADOD

13、B.Recordset 用来存放返回记录集对象 Dim msgtext As String 用来存放返回信息 machine = GetSerialNumber(c:) 取硬盘的序列号作为机器码 machine_decode = getserialn() 取硬盘机器码对应的注册码 text1。Text = machine 在Text1文本框中显示机器码 txtsql = ”select * from userenroll_info where machine= machine & ” and decode= machine_decode & ” Set mrc = ExecuteSQL(txt

14、sql, msgtext) 在用户注册表中查找机器码和注册码 If mrc.EOF Then 没找到机器注册信息,显示登录界面中的注册框,隐藏进入按钮 MsgBox ”没有注册信息!” cmdok。Visible = False cmdenroll。Visible = True Else 找到机器注册信息,隐藏登录界面中的注册框,显示进入按钮 MsgBox ”找到注册信息 cmdok。Visible = True cmdenroll。Visible = False Label2。Visible = False Label3。Visible = False text1.Visible = Fal

15、se text2.Visible = False End If Set mrc = NothingEnd SubPrivate Sub cmdok_Click() 验证成功时进入系统 Unload Me frmmain.ShowEnd SubPrivate Sub cmdcancel_Click() 退出系统EndEnd Sub2生成机器码函数Function GetSerialNumber(strDrive As String) As Long获取机器码函数,取硬盘的序列号 Dim SerialNum As Long Dim Res As Long Dim Temp1 As String D

16、im Temp2 As String Temp1 = String$(255, Chr(0) Temp2 = String(255, Chr(0)) Res = GetVolumeInformation(strDrive, Temp1, _ Len(Temp1), SerialNum, 0, 0, Temp2, Len(Temp2) GetSerialNumber = SerialNumEnd FunctionFunction getserialn() As String获取机器码对应的注册码,对硬盘的序列号(机器码)进行变换,转为注册码 Dim inputseial As String Di

17、m 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 p = 0 p1 = 0 p2 = 0 n = ” n1 = ” n2 = ” n = Str(GetSerialNumber(c:)) n1 = n n2 = n If Len(n) 20 Then n = Left(n, 20) n1 = Left(n1, 20) n2 = Left(n2, 20) End If For i = 1 To 20 p = p + Asc(Mid(n,

18、 i, 1)) 199 p1 = p1 + Asc(Mid(n1, i, 1) 179 p2 = p2 + Asc(Mid(n2, i, 1)) 109 Next inputseial = Format(p) + ” + Format(p1) + ”- + Format(p2) getserialn = inputseial End Function在GetSerialNumber()函数中需要调用API函数GetVolumeInformation()来获取盘区信息,其中卷序列号也就是磁盘每个分区的序列号,此函数需在用户登录窗体中申明,函数格式如下。Private Declare Functi

19、on GetVolumeInformation Lib _ kernel32。dll Alias GetVolumeInformationA (ByVal _ lpRootPathName As String, ByVal lpVolumeNameBuffer As _ String, ByVal nVolumeNameSize As Integer, _ lpVolumeSerialNumber As Long, lpMaximumComponentLength _ As Long, lpFileSystemFlags As Long, ByVal _ lpFileSystemNameBuf

20、fer As String, ByVal _ nFileSystemNameSize As Long) As Long 取硬盘卷信息的动态链接库此函数不需要手工输入,可通过VB工具“API文本浏览器”获取,在Windows桌面选择“开始程序 Microsoft Visual Basic 6.0中文版 Microsoft Visual Basic 6。0中文版工具API文本浏览器”选项,打开API阅览器如下图1418所示。从“文件”菜单中选择“加载文本文件”菜单项,加载WIN32API。TXT文本文件,此时在“可用项”中选择“GetVolumeInformation”并双击,则此函数的声明显示在

21、“选定项”文本框中,此时可将此函数复制用户管理窗体中。 图14-18 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

22、String 用来存放返回信息If Len(text2.Text) 20 Then MsgBox 您输入的注册码错误!” Exit SubEnd IfIf text2.Text getserialn() Then MsgBox ”注册码错误,请重新输入!” Exit SubEnd If注册码输入正确,写入数据库,同时显示进入按钮,隐藏注册对象。On Error GoTo err1txtsql = ”INSERT INTO userenroll_info (machine,decode) values (” text1。Text ,” & text2.Text & )”Set mrc = Exe

23、cuteSQL(txtsql, msgtext) 在用户注册表中查找机器码和注册码MsgBox ”注册成功! cmdok.Visible = True cmdenroll.Visible = False Label2.Visible = False Label3。Visible = False text1.Visible = False text2.Visible = FalseExit Suberr1:MsgBox 添加注册信息失败!”End Sub采购数据管理模块的实现采购数据管理模块主要实现如下功能:添加采购信息、修改采购信息、和查询采购信息。1添加采购信息窗体的创建选择“采购数据处理采

24、购数据添加菜单,将出现如图14-19所示的窗体. 图1419 添加采购数据窗体在窗体中放置了多个文本框,用来输入图书及采购信息;两个命令按钮用来确定添加采购信息和退出;加入多个标签用来提示文本框内容.这些控件的属性设置如表1413所示.表14-13 添加采购信息窗体中各控件的属性设置控件属性属性值说明Frmxjadd(Form)Namefrmxjadd当前窗体Caption采购数据添加Text1NameText1输入ISBN号文本框Text2NameText2输入书名文本框Text3NameText3输入分类文本框Text4NameText4输入出版社文本框Text5NameText5输入作者

25、文本框Text6NameText6输入价格文本框Text7NameText7输入出版年文本框Text8NameText8输入订购数量文本框Text9NameText9输入提供商文本框cmdxjaddNamecmdxjadd添加命令按钮cmdexitNamecmdexit退出命令按钮Label1CaptionISBN号:提示标签Label2Caption书名:Label3Caption分类:Label4Caption出版社:Label5Caption作者:Label6Caption价格:Label7Caption出版年:Label8Caption订购数:Label9Caption提供商:用户输入

26、完采购图书的基本信息后,单击“添加”按钮将触发cmdxjadd_Click事件,代码如下: Dim mrc As ADODB。Recordset 定义数据集对象 Dim txtsql As String 定义查询字符串变量 Dim msgtext As String 定义字符串变量,用来返回查询信息 判断是否输入了ISBN号 If Trim(Text1.Text) = ” Then MsgBox ”请输入ISBN号”, vbOKOnly, ”警告 Text1。SetFocus Exit Sub End If 判断是否输入了书名 If Text2.Text = ” Then MsgBox ”请输

27、入书名”, vbOKOnly, ”警告” Text2。SetFocus Exit Sub End If 判断是否输入了出版社 If Text4。Text = ” Then MsgBox 请输入出版社”, vbOKOnly, ”警告” Text4。SetFocus Exit Sub End If 判断是否输入了价格 If Text6。Text = Then MsgBox ”请输入订价, vbOKOnly, ”警告” Text6。SetFocus Exit Sub End If 判断输入的价格是不是数值 If Not IsNumeric(Text6.Text) Then MsgBox 价格输入不为

28、数字! Text6.SetFocus Exit SubEnd If 判断是否输入了订购数 If Text8。Text = ” Then MsgBox ”请输入订购数量, vbOKOnly, 警告 Text8.SetFocus Exit Sub End If 判断输入的订购数是不是数值 If Not IsNumeric(Text8.Text) Then MsgBox ”订购数输入不为数字! Text8。SetFocus Exit SubEnd If 添加数据到SQL Server 2000数据库中 txtsql = ”select * from bookseller_bookinfo Set m

29、rc = ExecuteSQL(txtsql, msgtext) 添加一条记录进入数据库中mrc.AddNew mrc.Fields(”isbn) = Trim(Text1。Text) mrc。Fields(”bookname”) = Trim(Text2。Text) mrc。Fields(”class_name”) = Trim(Text3。Text) mrc。Fields(”publisher) = Trim(Text4。Text) mrc.Fields(author”) = Trim(Text5。Text) mrc.Fields(book_price”) = Trim(Text6。Tex

30、t) mrc.Fields(publisher_date) = Val(Trim(Text7.Text)) mrc。Fields(”book_num) = Val(Trim(Text8。Text)) mrc。Fields(”provider”) = Trim(Text9.Text) mrc。Update MsgBox ”添加数据成功, vbOKOnly, 提示 mrc。CloseEnd Sub程序对是否输入了内容进行判断,同时进行了数值数据判断,使用了IsNumeric()函数,判断了价格和订购数量是不是数值。单击“退出按钮触发cmdexit_Click事件,代码如下:Private Sub

31、cmdexit_Click() Unload Me 卸载窗体End Sub2修改采购信息窗体的创建选择“采购数据处理采购数据修改”菜单,将出现如图14-20所示的窗体.这个窗体包括了采购信息的修改和删除,在上面用户管理和采购数据添加中对SQL Server 2000数据库的操作是通过ADO对象模型的引用来实现。下面在采购信息的修改中将采用ADO控件来实现。在修改采购信息窗体中所有控件的属性设置如表1414所示。 图14-20 修改采购信息窗体表1414 修改采购信息窗体中各个控件的属性设置控件名称属性属性值说明Frmxjmodify(form)namefrmxjmodify窗体caption修

32、改采购信息ADODC1nameADODC1ADO控件visibleFalse不可见CommandType2-adCmdTable表ConnectionStringProvider=SQLOLEDB。1;Persist Security Info=False;User ID=sa;Initial Catalog=pubs;Data Source=127。0.0。1数据库连接字符串RecordSourcebookseller_bookinfo采购数据表UserNamesaPasswordsaText1nameText1书名文本框DataSourceAdodc1数据源DataFieldbooknam

33、e字段名Text2nameText2ISBN文本框DataSourceAdodc1DataFieldisbnText3nameText3作者文本框DataSourceAdodc1DataFieldauthorText4nameText4出版社文本框DataSourceAdodc1DataFieldpublisherText5nameText5出版年文本框DataSourceAdodc1DataFieldPublisher_dateText6nameText6价格文本框DataSourceAdodc1DataFieldpriceText7nameText7分类文本框DataSourceAdodc

34、1DataFieldClass_nameText8nameText8选购数量文本框DataSourceAdodc1DataFieldBook_numText9nameText9提供商文本框DataSourceAdodc1DataFieldproviderCommand1NameCommand1第一条Command2NameCommand2上一条Command3NameCommand3下一条Command4NameCommand4最后一条Command5NameCommand5更新记录Command6NameCommand6取消更新Command7NameCommand7删除记录Command8

35、NameCommand8退出各命令按钮触发相应的事件,程序代码如下:Private Sub Command1_Click()指针移到第一条记录 Adodc1.Recordset。MoveFirstEnd SubPrivate Sub Command2_Click()指针移到上一条记录,如果记录指针移到BOF,则记录指针指到第一条,并给出提示 Adodc1.Recordset.MovePrevious If Adodc1.Recordset。BOF Then Adodc1.Recordset.MoveFirst MsgBox ”已到第一条记录! End IfEnd SubPrivate Sub

36、Command3_Click()指针移到下一条,如果记录指针移到EOF,则记录指针指到最后一条,并给出提示Adodc1。Recordset.MoveNextIf Adodc1.Recordset.EOF Then Adodc1。Recordset。MoveLast MsgBox 已到最后一条记录”End IfEnd SubPrivate Sub Command4_Click()记录指针指到最后一条Adodc1。Recordset。MoveLastEnd SubPrivate Sub Command5_Click()更新当前记录Dim bookmark As Variant 定义书签,记录当前记

37、录的位置bookmark = Adodc1。Recordset。bookmark If Trim(Text1。Text) = ” Then 判断修改后的书名是否为空 MsgBox ”书名不能为空!, vbOKOnly, ”警告 Adodc1。Refresh 数据库中的数据刷新文本框 Adodc1。Recordset。bookmark = bookmark 回到要修改记录位置 Text1.SetFocus Exit Sub End If If Trim(Text2。Text) = Then 判断修改后的ISBN信息是否为空 MsgBox ”ISBN信息不能为空!, vbOKOnly, ”警告 A

38、dodc1.Refresh Adodc1。Recordset.bookmark = bookmark Text2。SetFocus Exit Sub End If 判断输入的价格是不是数值 If Not IsNumeric(Text6.Text) Then MsgBox ”价格不为数字!” Text6。SetFocus Exit Sub End If 判断输入的订购数是不是数值 If Not IsNumeric(Text8。Text) Then MsgBox 订购数量修改不为数字!” Text8。SetFocus Exit Sub End If 更新当前记录 Adodc1。Recordset.

39、Update MsgBox ”当前记录已更新!, vbOKOnly, ”提示End SubPrivate Sub Command7_Click()删除当前记录 Adodc1。Recordset.Delete Adodc1.Recordset.MoveFirst MsgBox ”当前记录已删除!, vbOKOnly, 提示”End SubPrivate Sub Command8_Click()退出Unload MeEnd SubPrivate Sub Command6_Click() 取消更新 Dim bookmark As Variantbookmark = Adodc1。Recordset。

40、bookmark Adodc1.Refresh Adodc1。Recordset。bookmark = bookmarkEnd Sub3查询采购信息窗体的创建 选择“采购数据处理采购数据查询”菜单,进入如图14-21所示的窗体。可以按ISBN号、书名、作者、出版社、出版年、分类和提供商进行查询以及各字段的排序。 图1421 采购数据查询窗体在采购信息查询窗体中用到了一个DataGrid控件,需在VB中选择“工程部件”菜单打开的对话框中选择“MicroSoft DataGrid Controls 6.0 (OLEDB)”组件加入。查询窗体中所包含的控件及其属性如表1415。表1415 查询采购信

41、息窗体中各个控件及属性设置控件属性属性值说明Frmxjquery(Form)namefrmxjquery采购数据查询窗体Caption采购数据查询Adodc1nameAdodc1ADO数据连接控件ConnectionStringProvider=SQLOLEDB。1;Persist Security Info=False;User ID=sa;Initial Catalog=pubs;Data Source=127.0。0.1CommandType1-adCmdTextSQL语句RecordSourceselect from bookseller_infoUsernamesaPasswordsaDataGrid1NameDataGrid1数据网格控件DataSourceAdodc1Combo1Na

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 通信科技 > 数据库/数据算法

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服