收藏 分享(赏)

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

上传人:jinchen 文档编号:5666856 上传时间:2019-03-11 格式:DOC 页数:29 大小:304KB
下载 相关 举报
数据库应用系统开发_程序代码.doc_第1页
第1页 / 共29页
数据库应用系统开发_程序代码.doc_第2页
第2页 / 共29页
数据库应用系统开发_程序代码.doc_第3页
第3页 / 共29页
数据库应用系统开发_程序代码.doc_第4页
第4页 / 共29页
数据库应用系统开发_程序代码.doc_第5页
第5页 / 共29页
点击查看更多>>
资源描述

1、1数据库应用系统开发数据库系统开发案例图书现场采购系统系统主窗体的实现1数据表结构的实现经过前面的需求分析和概念结构设计以后,得到了数据库的逻辑结构。现在就可以在SQL Server 2000 数据库系统中实现该逻辑结构。可以直接在 SQL Server 2000 企业管理器中创建表,也可以在 SQL 查询分析器中创建。下面给出在查询分析器中创建这些表的 SQL语句,读者可以将这些表创建在系统的 pubs 数据库中。(1)创建书商图书基本信息表 bookseller_bookinfoCREATE TABLE bookseller_bookinfo(rec_id Bigint PRIMARY K

2、EY 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)创建图书馆图书馆藏基本信息表 library_bookinfoCREATE TA

3、BLE 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 0,provider varchar(50) nul

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

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

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

7、er=SQLOLEDB.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.RecordsetDim cnn As ADODB.ConnectionDim rst As ADODB.RecordsetDim sTokens() A

8、s StringOn Error GoTo ExecuteSQL_ErrorsTokens = Split(SQL)Set cnn = New ADODB.Connectioncnn.Open ConnectStringIf InStr(“INSERT,DELETE,UPDATE,EXECUTE“, UCase$(sTokens(0) Thencnn.Execute (SQL)MsgString = sTokens(0) Persist Security Info=False;User ID=sa;Initial Catalog=pubs;Data Source=127.0.0.1数据库连接字

9、符串RecordSource bookseller_bookinfo 采购数据表UserName saADODC1Password saname Text1 书名文本框DataSource Adodc1 数据源Text1DataField bookname 字段名name Text2 ISBN 文本框DataSource Adodc1Text2DataField isbnname Text3 作者文本框DataSource Adodc1Text3DataField authorname Text4 出版社文本框DataSource Adodc1Text4DataField publishern

10、ame Text5 出版年文本框DataSource Adodc1Text5DataField Publisher_datename Text6 价格文本框DataSource Adodc1Text6DataField pricename Text7 分类文本框DataSource Adodc1Text7DataField Class_namename Text8 选购数量文本框DataSource Adodc1Text8DataField Book_numname Text9 提供商文本框DataSource Adodc1Text9DataField providerCommand1 Nam

11、e Command1 第一条Command2 Name Command2 上一条Command3 Name Command3 下一条Command4 Name Command4 最后一条11Command5 Name Command5 更新记录Command6 Name Command6 取消更新Command7 Name Command7 删除记录Command8 Name Command8 退出各命令按钮触发相应的事件,程序代码如下:Private Sub Command1_Click()指针移到第一条记录Adodc1.Recordset.MoveFirstEnd SubPrivate S

12、ub Command2_Click()指针移到上一条记录,如果记录指针移到 BOF,则记录指针指到第一条,并给出提示Adodc1.Recordset.MovePreviousIf Adodc1.Recordset.BOF ThenAdodc1.Recordset.MoveFirstMsgBox “已到第一条记录!“End IfEnd SubPrivate Sub Command3_Click()指针移到下一条,如果记录指针移到 EOF,则记录指针指到最后一条,并给出提示Adodc1.Recordset.MoveNextIf Adodc1.Recordset.EOF ThenAdodc1.Rec

13、ordset.MoveLastMsgBox “已到最后一条记录“End IfEnd SubPrivate Sub Command4_Click()记录指针指到最后一条Adodc1.Recordset.MoveLastEnd SubPrivate Sub Command5_Click()更新当前记录Dim bookmark As Variant 定义书签,记录当前记录的位置bookmark = Adodc1.Recordset.bookmarkIf Trim(Text1.Text) = “ Then 判断修改后的书名是否为空MsgBox “书名不能为空!“, vbOKOnly, “警告“Adod

14、c1.Refresh 数据库中的数据刷新文本框Adodc1.Recordset.bookmark = bookmark 回到要修改记录位置Text1.SetFocusExit SubEnd IfIf Trim(Text2.Text) = “ Then 判断修改后的 ISBN 信息是否为空MsgBox “ISBN 信息不能为空!“, vbOKOnly, “警告“Adodc1.RefreshAdodc1.Recordset.bookmark = bookmark12Text2.SetFocusExit SubEnd If判断输入的价格是不是数值If Not IsNumeric(Text6.Text

15、) ThenMsgBox “价格不为数字!“Text6.SetFocusExit SubEnd If判断输入的订购数是不是数值If Not IsNumeric(Text8.Text) ThenMsgBox “订购数量修改不为数字!“Text8.SetFocusExit SubEnd If更新当前记录Adodc1.Recordset.UpdateMsgBox “当前记录已更新!“, vbOKOnly, “提示“End SubPrivate Sub Command7_Click()删除当前记录Adodc1.Recordset.DeleteAdodc1.Recordset.MoveFirstMsgB

16、ox “当前记录已删除!“, vbOKOnly, “提示“End SubPrivate Sub Command8_Click()退出Unload MeEnd SubPrivate Sub Command6_Click()取消更新Dim bookmark As Variantbookmark = Adodc1.Recordset.bookmarkAdodc1.RefreshAdodc1.Recordset.bookmark = bookmarkEnd Sub3查询采购信息窗体的创建选择“采购数据处理采购数据查询”菜单,进入如图 14-21 所示的窗体。可以按ISBN 号、书名、作者、出版社、出版

17、年、分类和提供商进行查询以及各字段的排序。图 14-21 采购数据查询窗体在采购信息查询窗体中用到了一个 DataGrid 控件,需在 VB 中选择“工程部件”菜单打开的对话框中选择“MicroSoft DataGrid Controls 6.0 (OLEDB)”组件加入。查询窗体中13所包含的控件及其属性如表 14-15。表 14-15 查询采购信息窗体中各个控件及属性设置控件 属性 属性值 说明name frmxjquery 采购数据查询窗体Frmxjquery(Form)Caption 采购数据查询name Adodc1 ADO 数据连接控件ConnectionString Provid

18、er=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=pubs;Data Source=127.0.0.1CommandType 1-adCmdText SQL 语句RecordSource select * from bookseller_infoUsername saAdodc1Password saName DataGrid1 数据网格控件DataGrid1DataSource Adodc1Name Combo1 检索字段下拉列表框Combo1Style 2-Dropdown ListCombo2 Nam

19、e Combo2 排序下拉列表框Style 2-Dropdown ListText1 Name text 检索词输入框Command1 Caption 查询 查询按钮Command2 Capton 退出 退出按钮程序代码如下:Private Sub Command1_Click()Dim searchfield As String 定义检索字段Dim sortfield As String 定义排序字段If Trim(Text1.Text) = “ ThenMsgBox “请输入检索词 “Exit SubEnd If取检索和排序字段If Combo1.Text = “书名“ Then sear

20、chfield = “bookname“If Combo1.Text = “作者“ Then searchfield = “author“If Combo1.Text = “ISBN“ Then searchfield = “isbn“If Combo1.Text = “出版社“ Then searchfield = “publisher“If Combo1.Text = “出版年“ Then searchfield = “publisher_date“If Combo1.Text = “分类“ Then searchfield = “class_name“If Combo1.Text = “

21、提供商“ Then searchfield = “provider“ 14If Combo2.Text = “书名“ Then sortfield = “bookname“If Combo2.Text = “作者“ Then sortfield = “author“If Combo2.Text = “ISBN“ Then sortfield = “isbn“If Combo2.Text = “出版社“ Then sortfield = “publisher“If Combo2.Text = “出版年“ Then sortfield = “publisher_date“If Combo2.Tex

22、t = “分类“ Then sortfield = “class_name“If Combo1.Text = “提供商“ Then sortfield = “provider“If Combo1.Text = “价格“ Then sortfield = “price“设置 ADO 控件的 RecordSource 参数Adodc1.RecordSource = “select * from bookseller_bookinfo where “ Persist Security Info=False;User ID=sa;Initial Catalog=pubs;Data Source=127

23、.0.0.1CommandType 1-adCmdTable 表RecordSource bookseller_bookinfoUsername saPassword saOption1 Caption 1、转入不作处理Option2 Caption 2、用 ISBN 查重转入Option3 Caption 3、用 ISBN、书名查重转入Option4 Caption 4、用 ISBN,书名和价格查重转入CommonDialog1 name CommonDialog1 通用对话框,用于选择磁盘文件DialogTitle 选择 MARC 文件Text1 Name text 文件输入文本框Comm

24、and1 Caption 请选择 MARC 文件 选择文件按钮Command2 Caption 转入 转入按钮Command3 Caption 退出 退出按钮(3)MARC 数据导入 SQL Server 2000 程序实现当单击“请选择 MARC 文件”按钮时触发 Command1_Click()事件,从通用对话框中找到磁盘上的 MARC 文件,文件名和路径放在 Text1 文本框中。单击“转入”按钮,触发command2_Click()事件,程序根据查重 Option 选项进行数据导入。Private Sub Command1_Click()CommonDialog1.ShowOpenTe

25、xt1.Text = CommonDialog1.filenameEnd SubPrivate Sub Command2_Click()Dim currecord As Long 当前记录号Dim loadrecord As Long 转入的记录数Dim recordno As Long 未转入的记录数Dim marcfile As String Marc 文件名Dim linestring As String 行字符串,用来读取 MARC 数据文件中的每一行Dim header As String MARC 头标区数据Dim mcq As String MARC 目次区数据Dim dataq

26、 As String MARC 数据区数据初始化变量 currecord = 0loadrecord = 0recordno = 0isbnstring = “17If Text1.Text = “ ThenMsgBox “请选择 MARC 文件!“Exit SubEnd Ifmarcfile = Text1.TextIf Not Filexists(isofile) ThenMsgBox “文件不存在,请重新输入。“Exit SubEnd IfMarc 数据转入预采库Open marcfile For Binary As #1 打开 MARC 文件Do Until EOF(1)Line In

27、put #1, linestring 每一行为一条 MARC 记录,读取每一行header = Left(linestring, 24) 从记录中取头标区数据mcleng = Mid(header, 13, 5) 目次区长度mcq = Mid(linestring, 25, Val(mcleng) - 24 - 1) 取目次区数据 bb = Len(mcq)aa = LenB(StrConv(linestring, vbFromUnicode)dataq = Mid(linestring, Val(mcleng) + 1, aa - Val(mcleng) 取数据区数据For i = 1 To

28、 bb / 12 读取每个字段的值zd = Mid(mcq, (i - 1) * 12 + 1, 12) first1 = Mid(zd, 1, 3) 字段名second1 = Mid(zd, 4, 4) 字符长度third1 = Mid(zd, 8, 5) 数据字段区开始的位置data11 为取得的字段值data11=MidB(StrConv(dataq,vbFromUnicode),Val(third1)+1, Val(second1)-1)data11 = StrConv(data11, vbUnicode)data11 = Replace(data11, Chr(31), “)读取:i

29、sbn(010a), 价格 010d,书名 (200a),作者(200f) ,出版社 210c,出版年 210d,复本数 905e,提供商 801b,分类 690a,If first1 = “010“ Thenisbn=“book_price=“isbn = Getfield(data11, “a“)book_price = Getfield(data11, “d“)End IfIf first1 = “200“ Thenbookname=“author=“bookname = Getfield(data11, “a“)author = Getfield(data11, “f“)End IfI

30、f first1 = “210“ Thenpublisher=“18publisher_date=“publisher = Getfield(data11, “c“)publisher_date = Getfield(data11, “d“)End If If first1 = “690“ Thenclass_name=“class_name = Getfield(data11, “a“)End If If first1 = “905“ Thenbook_num=“book_num = Getfield(data11, “e“) End If If first1 = “801“ Thenpro

31、vider = Getfield(data11, “b“)End IfNext i对数据进行查重后,如果未重,则写入数据库,否则不写If Option1.Value=True Then findstring=“ABCDEFGHIJKLMNOPQ“If Option2.Value=True Then findstring=“isbn=“ Persist Security Info=False;User ID=sa;Initial Catalog=pubs;Data Source=127.0.0.1CommandType 1-adCmdText SQL 语句RecordSource select

32、isbn,bookname,author, publisher,publisher_date,price,book_num from bookseller_info Where book_num0Username saAdodc1Password saName DataGrid1 数据网格控件DataGrid1DataSource Adodc1Text1 Name text 种显示框Text2 Name text 册Text3 Name text 金额Command1 Caption EXCEL 输出 按钮Command2 Caption 统计 按钮Command3 Caption 退出 按钮

33、当单击“EXCEL 输出”按钮时,触发 Command1_Click()事件,输出 EXCEL 格式的图书订货清单,当单击“统计”按钮时,触发 Command2_Click()事件,所订购图书的种、册和金额分别显示在文本框中,单击“退出”按钮,触发 Command3_Click()事件,退出程序。程序清单如下。Private Sub Command1_Click()28输出当前订购数据 EXCEL 清单Dim myExcel As Excel.ApplicationDim myBook As Excel.WorkbookDim mySheet As Excel.WorksheetDim row

34、num As LongDim colnum As Integerfilenam = “filenam = InputBox(“请输入 Excel 文件名:“)If filenam = “ ThenMsgBox “文件名未输入!“Exit SubEnd Iffilenam1 = “d:“ + filenamIf Dir(filenam1) = filenam ThenKill (filenam1)End Ifrownum = Adodc1.Recordset.RecordCountcolnum = Adodc1.Recordset.Fields.CountIf rownum 0“Set mrc = ExecuteSQL(txtsql, msgtext)Text1.Text = mrc.Fields(“种数“)ValueText2.Text = mrc.Fields(“册数“)ValueText3.Text = mrc.Fields(“金额“)Valuemrc.CloseEnd SubPrivate Sub Command3_Click()Unload MeEnd Sub

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 社会民生

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报