图书现场采购系统实现过程
采用 SQL SERVER2005+VB.NET2005 开发工具,体系结构是
基于 C/S 的。
系统要完成的主要功能模块:
(1)用户管理
包括用户登录以及用户基本信息的管理。
(2)数据导入导出
EXCEL 或 MARC 格式导入导出功能。
(3)采购数据管理
主要实现对采购基本信息的录入、修改/删除和查询等操作。
(4)图书采购管理
包括:批查重、查询选购和现场扫描选购。
(5)统计输出管理
对当前选购好的图书统计其种类、册数和金额,并输出订购清
单。
13.1 系统主窗体的实现
1. 数据库设计:
书商图书、馆藏图书、用户实体,其对应数据库中 3 个数据表。
2. 系统主窗体的创建
1)创建工程。
在 VB.NET2005 创建项目模板为“Windows 应用程序”项目,命名
为 BookCG_MIS。
2)系统主窗体的创建
采用 MDI 多文档界面。主界面采用菜单的操作方式。
将其窗体 Form1 命名为 MdiForm,属性 IsMdiContainer 设置为
True,修改 Text 属性为“图书现场采购管理系统”,并将其对应的文
件 form1.vb 重命名为 midform.vb。
3)创建主窗体菜单
从工具栏拖放 MenuStrip(菜单)控件到主窗体中,设置菜单
项名称及标题如表 13-6(教材 P322)。
4)引入命名空间
引入命名空间,以便在代码中使用来自该命名空间的原始,而
不用完全限定该元素。
本系统因为每项功能都要用到 SQL SERVER 数据库,因此需要
为项目引入 System.Data.SqlClient 命名空间。以便整个系统在代码编
写中可以直接使用 System.Data.SqlClient 下的类。
引入命名空间的方法是:选择“项目”/“××属性”,在打开的窗口
中选择“引用”选项卡,在“导入命名空间”中选择 System.Data.SqlClient
并保存。
5)创建公用模块
在 VB.NET 中可以用公用模块来存放整个工程项目公用的函数
全局变量等。便于各窗体模块调用公用模块中的函数、变量,以提
高代码的重用性及执行效率。
使用“项目/添加模块”添加一个 Module,命名为 Module_db.vb 保
存。此公用模块中主要完成数据库的链接以及 T-SQL 语句执行函数
的创建。代码如下:
'SQL Server 2005服务器连接字符串函数
Public Function ConnectString() As String
ConnectString = "Data Source=PC2011070315PRF;Initial
Catalog=books_cg;Integrated Security=True"
'设置SQL Server2005数据库链接字符串,此字符串也可保存在目录文件中
End Function
'SQL命令执行函数
Public txtSQL As String '存放SQL语句
Public DBSet As DataSet '查询得到的记录集
Public ErrorMsg As String '存放错误信息
Public Function ExecuteSQL(ByVal strSQL As String, ByRef errMsg As String)
As Integer
'函数执行SQL的INSERT、DELETE、UPDATE和SELECT语句
'对于INSERT、DELETE、UPDATE语句,ExecuteSQL返回更新的记录数:-1表示
程序异常;表示更新失败;大于表示操作成功,更新的记录数
'对于SELECT语句:DBSet为返回的数据集;ExecuteSQL为返回的查询记录数。
Dim cnn As SqlClient.SqlConnection
Dim cmd As New SqlClient.SqlCommand()
Dim adpt As SqlClient.SqlDataAdapter
Dim rst As New DataSet()
Dim SplitSQL() As String
errMsg = ""
Try
SplitSQL = Split(strSQL)
cnn = New SqlClient.SqlConnection(ConnectString())
If InStr("INSERT,DELETE,UPDATE", UCase$(SplitSQL(0))) Then
cmd.Connection = cnn
cmd.Connection.Open()
cmd.CommandText = strSQL
ExecuteSQL = cmd.ExecuteNonQuery() '返回更新数据记录条数
Else
adpt = New SqlClient.SqlDataAdapter(strSQL, cnn)
adpt.Fill(rst)
ExecuteSQL = rst.Tables(0).Rows.Count '返回查询记录条数
DBSet = rst
End If
Catch ex As Exception
errMsg = ex.Message
ExecuteSQL = -1 '表示执行SQL失败
Finally
rst = Nothing
cnn = Nothing
End Try
End Function
'启动函数SubMain
Sub main()
'Dim mf As New Register
' mf.ShowDialog()
Register.Show()
End Sub
13.2 用户管理模块的实现
1.“登录”窗体的实现
1)设计界面
界面如图所示:
窗体的 Name 属性为:Register,密码文本框的 PassWordChar 属性为
*。
2)窗体功能实现
主要实现功能是:在进入命名按钮的 Click 事件完成,获取窗体
中两个文本框输入的用户名和密码,从数据库中匹配记录是否成功。
具体代码如下:
Private Sub cmdok_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles cmdok.Click
If TextBox1.Text = "" Or TextBox2.Text = "" Then
MsgBox("请输入用户名或密码!")
Exit Sub
End If
Dim cnn As New SqlConnection()
Dim Mycommand As SqlCommand
cnn.ConnectionString = ConnectString()
cnn.Open()
txtSQL = "select count(*) from userenroll_info where user_name='" &
TextBox1.Text & "' and user_password='" & TextBox2.Text & "'"
Mycommand = New SqlCommand(txtSQL)
Mycommand.Connection = cnn
Dim Recordcount = CInt(Mycommand.ExecuteScalar()) '返回记录条数
If Recordcount = 1 Then '如找到用户名和密码相匹配的记录则登录成功
MdiForm.Show() '显示主窗体
Finalize() '释放登录窗体的资源
Else
MsgBox("用户名或密码错误!")
Exit Sub
End If
End Sub
Private Sub cmdcancel_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles cmdcancel.Click
Application.Exit() '退出应用程序
End Sub
2.“用户新增”窗体的实现
1)设计界面
界面如图所示: