1、 数据库课程设计 试验汇报 姓名:黄世增 班级:计算机1403 学号:1. 试验名称 使用Visual Basic 6.0和SQL Server 开发库存销售管理系统2.试验目标使用Visual Basic 6.0开发工具开发一个库存销售管理系统,该系统采取SQL Server 数据库保留库存货物信息,数据库中包含货物出入库信息和商品销售等信息。该系统包含系统登录、货物出入库管理、商品销售管理和商品统计管理等功效,经过这些功效实现对库存中货物信息和销售信息进行管理。系统关键实现以下目标:l 实现系统登录及修改用户密码功效。l 对库存货物出入库信息进行管理。l 对商品销售信息进行管理。l 依据销
2、售日期统计商品销售数据。3.试验步骤3.1 设计数据库建立一个名为“DB_KCGL”数据库,依据前述关键功效目标,需要建立3个数据表(关系):(1) 货物出入库信息:保留货物出入库信息l id:库存货物信息编号,主码,提议长度为18numeric类型。l tb_title:库存货物名称,提议长度为50varchar类型。l tb_style:库存货物类型,提议长度为50varchar类型。l tb_nums:库存货物数量,提议为整型int。l tb_values:库存货物价格,实数类型real。l tb_date:库存货物入库日期,时间日期类型datetime。l tb_mark:库存货物备注
3、信息,提议长度为50varchar类型。 (2) 商品销售信息:保留商品销售信息l id:商品销售信息编号,主码,提议长度为18numeric类型。l tb_title:销售商品名称,提议长度为50varchar类型。l tb_nums:提议为整型int。l tb_values:销售商品总价,浮点类型float。l tb_date:商品销售日期,时间日期类型datetime。 (3) 系统用户信息:保留系统用户信息l id:用户信息编号,主码,提议长度为18numeric类型。l tb_name:用户名称,提议长度为50varchar类型。l tb_pas:用户密码信息,提议长度为50varc
4、har类型。 3.2 设计连接数据库模块需要首先建立一个连接数据库模块,这么应用程序才能和数据库中数据表取得连接,将数据信息从数据表中读出到应用程序中或经过应用程序保留到数据表中。为此,建立一个负责数据库连接模块以下:(1) 选择“工程”菜单下“添加模块”命令,在应用程序中添加一个模块Module1。(2) Module1模块实现以下:数据连接模块Public MyStrs As StringPublic DB_AdoRs As New ADODB.Recordset 后添加一个统计集对象Public DB_AdoRs1 As New ADODB.Recordset 后添加一个统计集对象Pub
5、lic DB_AdoRs2 As New ADODB.Recordset 后添加一个统计集对象Public Function Cnn() As ADODB.Connection 定义连接字符串函数 Set Cnn = New ADODB.Connection Cnn.Open Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=DB_KCGL;Data Source=.End FunctionPublic Sub Main() MyStrs = Provider=SQL
6、OLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=DB_KCGL;Data Source=. 显示系统登录窗体 Form1.ShowEnd Sub(3) 这里需要将程序入口设置为模块中Main()函数。选择“工程”菜单下“工程属性”命令,在“通用”标签中进行对应设置。3.3 系统登陆模块设计在本库存销售管理系统中,只有授权用户(管理员)能够登录并进行库存和销售信息管理和维护,所以需要一个系统登录界面,预防非法用户登录到系统中,从而确保了应用程序安全性和可靠性。3.3.1 登录窗体设计设计以下
7、登录窗体,在窗体中要添加一个ADO控件,命名为Adodc1。(1) 登录窗体开启以后,需要将系统用户信息数据表中全部用户名称信息添加到窗体ComboBox控件Op_Name属性中,即实现在“操作员名称”下拉列表中能够出现系统目前操作员信息,供登录用户选择。Private Sub Form_Load()使用代码连接数据库和数据表 Adodc1.ConnectionString = MyStrs Adodc1.RecordSource = select * from 系统用户信息 Adodc1.Refresh If Adodc1.Recordset.RecordCount 0 Then Adodc
8、1.Recordset.MoveFirst Op_Name.Clear 在添加数据时,首先清空控件中内容 Do While Adodc1.Recordset.EOF = False 将操作员信息添加到下拉列表框控件当中 Op_Name.AddItem (Adodc1.Recordset.Fields(tb_name) Adodc1.Recordset.MoveNext Loop End IfEnd Sub(2) 当用户在“操作员名称”下拉列表中选择操作员名称,而且在“操作员密码”文本框输入正确密码以后,单击“确定”按钮将登录到系统中,不然将无法登录系统。具体实现以下:Private Sub C
9、md_Ok_Click() Adodc1.RecordSource = select * from Tb_User where tb_name = & Op_Name.Text & Adodc1.Refresh If Adodc1.Recordset.RecordCount 0 Then MPassword = Adodc1.Recordset.Fields(tb_pas) If Txt_Password.Text = MPassword Then 判定数据密码是否正确 Name1 = Op_Name.Text Frm_Main.StatusBar1.Panels.Item(2).Text =
10、 目前操作员: + Adodc1.Recordset.Fields(tb_name) Frm_Main.Show 经过身份验证则显示主窗体,登录到系统当中 Unload Me Else MsgBox 密码不正确,请您确定后重新输入, , 提醒信息 Txt_Password.Text = Txt_Password.SetFocus End If Else MsgBox 对不起 没有此用户信息, , 提醒信息 Op_Name.Text = Txt_Password.Text = End IfEnd Sub3.4 系统主界面实现3.4.1 主界面设计(1) 在工程中添加一个窗体,将窗体命名为Frm_
11、main,将窗体Caption属性设置为“库存管理系统”。(2) 添加一个Toolbar控件,工具栏由“修改密码”、“库存管理”、“商品销售”、“销售统计”和“退出系统”5个按钮组成。(3) 添加一个StatusBar控件,使得状态栏中能够显示登录操作员姓名和目前系统时间等信息。(4) 在主窗体上添加一个时钟控件,用于显示系统目前日期和时间信息。(5) 在主窗体上添加一个Label标签控件,将其Caption属性设置为“库存管理系统”。3.4.2 代码实现(1) 窗体开启时,在窗体状态栏中将显示目前系统日期信息:Private Sub Form_Load() StatusBar1.Panels
12、.Item(3).Text = Format(Now, yyyy年mm月dd日)End Sub(2)单击窗口工具栏按钮时,将会调用系统各个子功效模块:Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button) Select Case Button.Index Case 1 Frm_Pas.Show 修改密码 Case 2 Frm_Inout.Show 库存管理 Case 3 Frm_Sale.Show 商品销售 Case 4 Frm_Stat.Show 销售统计 Case 5 End 退出系统 End SelectE
13、nd Sub(3) 在时钟控件Timer事件中添加以下代码,实现在状态栏中显示目前系统时间功效:Private Sub Timer1_Timer() StatusBar1.Panels.Item(4).Text = TimeEnd Sub(4) 再向状态栏中添加企业名称,操作员和企业网址信息。系统主窗体运行界面以下图所表示:3.5 出入库管理模块设计和实现该模块关键是统计和维护库存中货物信息,其中包含对货物信息删除、修改和保留等方面功效。3.5.1 窗体界面设计(1) 在工程中添加一个窗体,命名为Frm_Inout,将窗体Caption设置为“出入库管理”。(2) 在窗体上添加对应控件,以下图
14、所表示。(3) 经过“工程”菜单下“部件”命令将DataGrid数据表格控件添加到工具箱中,然后在窗体上添加1个数据表格控件DataGrid1。(4) 在窗体上添加一个ADO控件Adodc1,同时将DataGrid1数据源属性DataSource设置为Adodc1。3.5.2 程序代码实现(1) 窗口载入时,将数据库中商品表数据读出。Private Sub Form_Load() Adodc1.ConnectionString = MyStrs Adodc1.RecordSource = select * from 货物出入库信息 order by id Adodc1.Refresh AddT
15、itleEnd Sub其中,AddTitle函数用于向DataGrid1添加表头,实现以下:添加数据库字段标题事件过程Private Sub AddTitle() DataGrid1.Columns.Item(0).Caption = 编号 DataGrid1.Columns.Item(1).Caption = 名称 DataGrid1.Columns.Item(2).Caption = 类型 DataGrid1.Columns.Item(3).Caption = 数量 DataGrid1.Columns.Item(4).Caption = 单价 DataGrid1.Columns.Item(
16、5).Caption = 入库日期 DataGrid1.Columns.Item(6).Caption = 备注End Sub(2)点击“添加”按钮,清空编辑框,让用户输入新待添加内容Private Sub Command1_Click()清空文本框中内容 Text1.Text = Text2.Text = Text3.Text = Text4.Text = Text5.Text = Text6.Text = Text1.SetFocusEnd Sub(3)点击“删除”按钮,删除选中目前统计。Private Sub Command2_Click()删除库存信息 c = MsgBox(确定要删除
17、该信息吗, 17, 提醒信息) If c = vbOK Then 假如有错误则实施错误处理 On Error Resume Next Set DB_AdoRs = Cnn.Execute(Delete from 货物出入库信息 where id= + Text1.Text + )MsgBox 数据删除成功, 64, 提醒信息 删除后刷新数据信息 Adodc1.RecordSource = select * from 货物出入库信息 order by id Adodc1.Refresh AddTitle End If Text1.Text = Text2.Text = Text3.Text =
18、Text4.Text = Text5.Text = Text6.Text = End Sub(4)点击“修改”按钮,修改目前统计信息。Private Sub Command3_Click()修改库存信息 c = MsgBox(确定修改信息吗, 33, 提醒信息) If c = vbOK Then On Error Resume Next Set DB_AdoRs = Cnn.Execute(UPDATE 货物出入库信息 SET tb_title= + Text2 + ,tb_style= + Text3 + ,tb_nums= + Text4 + ,tb_values= _ + Text5 +
19、 ,tb_mark= + Text6 + where id= + Text1.Text + ) MsgBox 数据修改成功, 64, 提醒信息 Adodc1.RecordSource = select * from 货物出入库信息 order by id Adodc1.Refresh AddTitle End IfEnd Sub(5)点击“保留”按钮,将保留文本框中输入货物信息。Private Sub Command4_Click()If Text1.Text = Or Text2.Text = Or Text3.Text = Or Text4.Text = Or Text5.Text = O
20、r Text6.Text = Then MsgBox 保留数据信息不能为空, 48, 提醒信息 Else DB_AdoRs.Open select * from 货物出入库信息 where tb_title= + Text2.Text + , Cnn, adOpenKeyset If DB_AdoRs.RecordCount 0 Then 判定要保留信息是否已经存在 MsgBox 该货物信息信息已经存在, 48, 提醒信息 DB_AdoRs.Close Else DB_AdoRs.Close c = MsgBox(确定保留信息吗, 33, 提醒信息) If c = vbOK Then 假如选择
21、是“确定”按钮则保留信息 Set DB_AdoRs = Cnn.Execute(insert into 货物出入库信息 values( & Text1 & , & Text2 & , & Text3 & , & Text4 & , _ & Text5 & , & Date & , & Text6 & ) MsgBox 信息保留成功, 64, 提醒信息 Else End If 保留数据后刷新数据信息 Adodc1.RecordSource = select * from 货物出入库信息 order by id Adodc1.Refresh AddTitle End If End IfEnd Su
22、b(6)点击退出,销毁目前窗口。Private Sub Command6_Click() Unload MeEnd Sub(7) 单击DataGrid1中对应统计,会在窗体左侧各个编辑框中显示对应内容。Private Sub DataGrid1_Click()On Error Resume Next If Adodc1.Recordset.RecordCount 0 Then Text1.Text = Adodc1.Recordset.Fields(0) Text2.Text = Adodc1.Recordset.Fields(1) Text3.Text = Adodc1.Recordset.
23、Fields(2) Text4.Text = Adodc1.Recordset.Fields(3) Text5.Text = Adodc1.Recordset.Fields(4) Text6.Text = Adodc1.Recordset.Fields(6) End IfEnd Sub 窗体运行界面以下图所表示: 3.6 商品销售模块设计和实现在“商品销售管理”窗口中“销售商品”下拉列表中选择要销售商品以后,该商品基础信息将显示在窗体中对应文本框中,在输入销售数量和实收金额后,单击“确定销售”按钮完成销售商品操作。3.6.1 窗体界面设计(1) 在工程中添加一个窗体,命名为Frm_Sale,将
24、Caption属性设置为“商品销售管理”。(2)在窗体上添加对应控件,以下图所表示。 (3)经过“工程”菜单下“部件”命令将DataGrid数据表格控件添加到工具箱中,然后在窗体上添加1个数据表格控件DataGrid1。(4)在窗体上添加2个ADO控件Adodc1和Adodc2,同时将DataGrid1数据源属性DataSource设置为Adodc2。3.6.2 程序代码实现(1) 窗体开启时,将商品库存中货物名称信息添加到下拉列表中,然后再将商品销售数据信息显示在DataGrid1控件中。Private Sub Form_Load() Adodc2.ConnectionString = My
25、Strs Adodc2.RecordSource = select * from 商品销售信息 order by id Adodc2.Refresh AddTitle 使用代码连接数据库和数据表 Adodc1.ConnectionString = MyStrs Adodc1.RecordSource = select * from 货物出入库信息 Adodc1.Refresh If Adodc1.Recordset.RecordCount 0 Then Adodc1.Recordset.MoveFirst Combo1.Clear 在添加数据时,首先清空控件中内容 Do While Adodc
26、1.Recordset.EOF = False 将货物出入库信息添加到下拉列表框控件当中 Combo1.AddItem (Adodc1.Recordset.Fields(tb_title) Adodc1.Recordset.MoveNext Loop End IfEnd SubPrivate Sub AddTitle() DataGrid1.Columns.Item(0).Caption = 编号 DataGrid1.Columns.Item(1).Caption = 名称 DataGrid1.Columns.Item(2).Caption = 销售数量 DataGrid1.Columns.I
27、tem(3).Caption = 销售总价 DataGrid1.Columns.Item(4).Caption = 销售日期End Sub(2) 选择下拉列表中商品以后,该商品具体信息将显示在窗体中相对应文本框中。商品具体信息Private Sub Combo1_Click()Adodc1.RecordSource = select * from 货物出入库信息 where tb_title = & Combo1.Text & Adodc1.Refresh If Adodc1.Recordset.RecordCount 0 Then Text1.Text = Adodc1.Recordset.
28、Fields(id) Text2.Text = Adodc1.Recordset.Fields(tb_style) Text3.Text = Adodc1.Recordset.Fields(tb_nums) Text4.Text = Adodc1.Recordset.Fields(tb_values) Text5.Text = Adodc1.Recordset.Fields(tb_mark) End If 清空文本框中内容 Text6.Text = Text7.Text = Text8.Text = Text9.Text = End Sub(3) 单击“确定销售”按钮,将完成销售商品操作。(4
29、) 当用户输入销售数量后并将输入焦点移开后,需要实时更新商品具体信息中数量信息,即在原有数量基础上减去用户输入销售数量。(3)和(4)代码:Private Sub Command1_Click() Adodc1.ConnectionString = MyStrs Adodc1.RecordSource = select * from 货物出入库信息 where tb_title = & Combo1.Text & Adodc1.Refresh Dim a As Integer Dim b As Integer a = Val(Text7.Text) b = Val(Text4.Text * T
30、ext6.Text) If Text6.Text = Or Text7.Text = Then MsgBox 请补全信息!, 64, 提醒信息 Else If a 0 Then Adodc1.Recordset.MoveFirst Combo1.Clear 在添加数据时,首先清空控件中内容 Do While Adodc1.Recordset.EOF = False 将商品销售信息添加到下拉列表框控件当中 Combo1.AddItem (Adodc1.Recordset.Fields(tb_title) Adodc1.Recordset.MoveNext Loop End IfEnd SubPr
31、ivate Sub AddTitle() DataGrid1.Columns.Item(0).Caption = 编号 DataGrid1.Columns.Item(1).Caption = 名称 DataGrid1.Columns.Item(2).Caption = 销售数量 DataGrid1.Columns.Item(3).Caption = 销售总价 DataGrid1.Columns.Item(4).Caption = 销售日期End Sub窗体运行结果以下: 3.8 修改密码模块设计和实现3.8.1 窗体界面设计(1) 添加一个窗体,命名为Frm_Pas,将Caption属性设置为
32、“密码修改”。(2)在窗体上加入一个ADO控件Adodc1。(3)设计窗体界面以下图。 3.8.2 程序代码实现(1) 载入窗口时连接操作员信息数据表Private Sub Form_Load()使用代码连接数据库和数据表 Adodc1.ConnectionString = MyStrs Adodc1.RecordSource = select * from 系统用户信息 Adodc1.RefreshEnd Sub(2) 当点击“确定”按钮时,首先判定用户输入用户名和原密码信息是否正确,假如正确而且两次输入新密码一致,就将用户密码修改为新密码。Private Sub Command1_Clic
33、k()Adodc1.RecordSource = select * from 系统用户信息 where tb_name = & Text1.Text & Adodc1.Refresh If Text1.Text = Then MsgBox 请输入用户名!, 48, 提醒信息 Text1.SetFocus Else If Text2.Text = Then MsgBox 请输入旧密码!, 48, 提醒信息 Text2.SetFocus Else If Text3.Text = Then MsgBox 请输入新密码!, 48, 提醒信息 Text3.SetFocus Else If Text4.Text = Then