收藏 分享(赏)

数据库课程设计——库存销售管理系统.doc

上传人:精品资料 文档编号:10804537 上传时间:2020-01-10 格式:DOC 页数:21 大小:233KB
下载 相关 举报
数据库课程设计——库存销售管理系统.doc_第1页
第1页 / 共21页
数据库课程设计——库存销售管理系统.doc_第2页
第2页 / 共21页
数据库课程设计——库存销售管理系统.doc_第3页
第3页 / 共21页
数据库课程设计——库存销售管理系统.doc_第4页
第4页 / 共21页
数据库课程设计——库存销售管理系统.doc_第5页
第5页 / 共21页
点击查看更多>>
资源描述

1、 数据库课程设计实验报告姓名:黄世增班级:计算机 1403学号:1411640305第 0 页 共 21 页1.实验名称使用 Visual Basic 6.0 和 SQL Server 2014 开发库存销售管理系统2.实验目的使用 Visual Basic 6.0 开发工具开发一个库存销售管理系统,该系统采用 SQL Server 2014 数据库保存库存货物信息,数据库中包括货物出入库信息和商品销售等信息。该系统包括系统登录、货物出入库管理、商品销售管理和商品统计管理等功能,通过这些功能实现对库存中货物信息和销售信息进行管理。系统主要实现以下目标: 实现系统登录及修改用户密码的功能。 对库

2、存货物的出入库信息进行管理。 对商品的销售信息进行管理。 根据销售日期统计商品的销售数据。3.实验步骤3.1 设计数据库建立一个名为“DB_KCGL”的数据库,根据前述的主要功能目标,需要建立 3 个数据表(关系):(1)货物的出入库信息:保存货物的出入库信息 id:库存货物信息的编号,主码,建议长度为 18 的 numeric 类型。 tb_title:库存货物的名称,建议长度为 50 的 varchar 类型。 tb_style:库存货物的类型,建议长度为 50 的 varchar 类型。 tb_nums:库存货物的数量,建议为整型 int。 tb_values:库存货物的价格,实数类型

3、real。 tb_date:库存货物的入库日期,时间日期类型 datetime。 tb_mark:库存货物的备注信息,建议长度为 50 的 varchar 类型。(2)商品的销售信息:保存商品的销售信息 id:商品销售信息的编号,主码,建议长度为 18 的 numeric 类型。第 1 页 共 21 页 tb_title:销售商品的名称,建议长度为 50 的 varchar 类型。 tb_nums:建议为整型 int。 tb_values:销售商品的总价,浮点类型 float。 tb_date:商品销售的日期,时间日期类型 datetime。(3)系统用户的信息:保存系统用户的信息 id:用户

4、信息的编号,主码,建议长度为 18 的 numeric 类型。 tb_name:用户名称,建议长度为 50 的 varchar 类型。 tb_pas:用户的密码信息,建议长度为 50 的 varchar 类型。3.2 设计连接数据库的模块需要首先建立一个连接数据库的模块,这样应用程序才能与数据库中的数据表取得连接,将数据信息从数据表中读出到应用程序中或通过应用程序保存到数据表中。为此,建立一个负责数据库连接的模块如下:(1)选择“工程”菜单下的“添加模块”命令,在应用程序中添加一个模块Module1。(2)Module1 模块的实现如下:数据连接模块Public MyStrs As Strin

5、gPublic DB_AdoRs As New ADODB.Recordset 后添加一个记录集对象Public DB_AdoRs1 As New ADODB.Recordset 后添加一个记录集对象Public DB_AdoRs2 As New ADODB.Recordset 后添加一个记录集对象Public Function Cnn() As ADODB.Connection 定义连接字符串函数Set Cnn = New ADODB.ConnectionCnn.Open “Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Securi

6、ty Info=False;Initial Catalog=DB_KCGL;Data Source=.“End FunctionPublic Sub Main()第 2 页 共 21 页MyStrs = “Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=DB_KCGL;Data Source=.“显示系统登录窗体Form1.ShowEnd Sub(3)这里需要将程序的入口设置为模块中的 Main()函数。选择 “工程”菜单下的“工程属性”命令,在“通用”标签中进行相

7、应设置。3.3 系统登陆模块设计在本库存销售管理系统中,只有授权用户(管理员)可以登录并进行库存和销售信息管理与维护,因此需要一个系统登录界面,防止非法用户登录到系统中,从而保证了应用程序的安全性和可靠性。3.3.1 登录窗体设计设计如下的登录窗体,在窗体中要添加一个 ADO 控件,命名为 Adodc1。(1)登录窗体启动之后,需要将系统用户的信息数据表中的所有用户名称信息添加到窗体的 ComboBox 控件的 Op_Name 属性中,即实现在“操作员名称”下拉列表中可以出现系统当前的操作员信息,供登录用户选择。Private Sub Form_Load()使用代码连接数据库与数据表Adodc

8、1.ConnectionString = MyStrsAdodc1.RecordSource = “select * from 系统的用户信息“Adodc1.RefreshIf Adodc1.Recordset.RecordCount 0 ThenAdodc1.Recordset.MoveFirstOp_Name.Clear 在添加数据时,首先清空控件中的内容Do While Adodc1.Recordset.EOF = False 将操作员信息添加到下拉列表框控件当中第 3 页 共 21 页Op_Name.AddItem (Adodc1.Recordset.Fields(“tb_name“)

9、Adodc1.Recordset.MoveNextLoopEnd IfEnd Sub(2)当用户在“操作员名称”下拉列表中选择操作员的名称,并且在“操作员密码”文本框输入正确的密码之后,单击“确定”按钮将登录到系统中,否则将无法登录系统。具体实现如下:Private Sub Cmd_Ok_Click()Adodc1.RecordSource = “select * from Tb_User where tb_name =“ & Op_Name.Text & “Adodc1.RefreshIf Adodc1.Recordset.RecordCount 0 ThenMPassword = Adod

10、c1.Recordset.Fields(“tb_pas“)If Txt_Password.Text = MPassword Then 判断数据的密码是否正确Name1 = Op_Name.TextFrm_Main.StatusBar1.Panels.Item(2).Text = “当前操作员: “ + Adodc1.Recordset.Fields(“tb_name“)Frm_Main.Show 通过身份验证则显示主窗体,登录到系统当中Unload MeElseMsgBox “密码不正确,请您确认后重新输入“, , “提示信息“Txt_Password.Text = “Txt_Password

11、.SetFocusEnd IfElseMsgBox “对不起 没有此用户的信息“, , “提示信息“Op_Name.Text = “Txt_Password.Text = “End IfEnd Sub3.4 系统主界面的实现3.4.1 主界面设计(1)在工程中添加一个窗体,将窗体命名为 Frm_main,将窗体 Caption 属性设置为“库存管理系统”。(2)添加一个 Toolbar 控件,工具栏由“修改密码”、“库存管理”、“商品销售”、“销售统计”和“退出系统”5 个按钮组成。(3)添加一个 StatusBar 控件,使得状态栏中能够显示登录操作员姓名和当前系统时间等第 4 页 共 21

12、 页信息。(4)在主窗体上添加一个时钟控件,用于显示系统当前日期和时间信息。(5)在主窗体上添加一个 Label 标签控件,将其 Caption 属性设置为“库存管理系统”。3.4.2 代码实现(1)窗体启动时,在窗体的状态栏中将显示当前系统的日期信息:Private Sub Form_Load()StatusBar1.Panels.Item(3).Text = Format(Now, “yyyy 年 mm 月 dd 日“)End Sub(2)单击窗口工具栏按钮时,将会调用系统的各个子功能模块:Private Sub Toolbar1_ButtonClick(ByVal Button As M

13、SComctlLib.Button)Select Case Button.IndexCase 1Frm_Pas.Show 修改密码Case 2Frm_Inout.Show 库存管理Case 3Frm_Sale.Show 商品销售Case 4Frm_Stat.Show 销售统计Case 5End 退出系统End SelectEnd Sub(3)在时钟控件的 Timer 事件中添加如下代码,实现在状态栏中显示当前系统时间的功能:Private Sub Timer1_Timer()StatusBar1.Panels.Item(4).Text = TimeEnd Sub(4)再向状态栏中添加公司名称,

14、操作员和公司网址信息。系统主窗体的运行界面如下图所示:第 5 页 共 21 页3.5 出入库管理模块的设计与实现该模块主要是记录和维护库存中的货物信息,其中包括对货物信息的删除、修改和保存等方面的功能。3.5.1 窗体界面设计(1)在工程中添加一个窗体,命名为 Frm_Inout,将窗体 Caption 设置为“出入库管理”。(2)在窗体上添加相应的控件,如下图所示。第 6 页 共 21 页(3)通过“工程”菜单下的“部件”命令将 DataGrid 数据表格控件添加到工具箱中,然后在窗体上添加 1 个数据表格控件 DataGrid1。(4)在窗体上添加一个 ADO 控件 Adodc1,同时将

15、DataGrid1 的数据源属性 DataSource 设置为 Adodc1。3.5.2 程序代码实现(1)窗口载入时,将数据库中商品表数据读出。Private Sub Form_Load()Adodc1.ConnectionString = MyStrsAdodc1.RecordSource = “select * from 货物的出入库信息 order by id“Adodc1.RefreshAddTitleEnd Sub其中,AddTitle 函数用于向 DataGrid1 添加表头,实现如下:添加数据库字段标题的事件过程Private Sub AddTitle()DataGrid1.C

16、olumns.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(5).Caption = “入库日期“DataGrid1.Columns.Item(6).Caption = “备注“第 7 页 共 21 页End Sub(2)点击“添加”按

17、钮,清空编辑框,让用户输入新的待添加内容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, “提示信息“)If c = vbOK Then如果有错误则执行错误处理On Error Resume Nex

18、tSet DB_AdoRs = Cnn.Execute(“Delete from 货物的出入库信息 where id=“ + Text1.Text + “)MsgBox “数据删除成功 “, 64, “提示信息“删除后刷新数据信息Adodc1.RecordSource = “select * from 货物的出入库信息 order by id“Adodc1.RefreshAddTitleEnd IfText1.Text = “Text2.Text = “Text3.Text = “Text4.Text = “Text5.Text = “Text6.Text = “End Sub(4)点击“修改

19、”按钮,修改当前的记录信息。Private Sub Command3_Click()修改库存信息c = MsgBox(“确认修改信息吗 “, 33, “提示信息“)If c = vbOK Then第 8 页 共 21 页 On Error Resume NextSet DB_AdoRs = Cnn.Execute(“UPDATE 货物的出入库信息 SET tb_title=“ + Text2 + “,tb_style=“ + Text3 + “,tb_nums=“ + Text4 + “,tb_values=“ _+ Text5 + “,tb_mark=“ + Text6 + “ where

20、id=“ + Text1.Text + “)MsgBox “数据修改成功“, 64, “提示信息“Adodc1.RecordSource = “select * from 货物的出入库信息 order by id“Adodc1.RefreshAddTitleEnd IfEnd Sub(5)点击“保存”按钮,将保存文本框中输入的货物信息。Private Sub Command4_Click()If Text1.Text = “ Or Text2.Text = “ Or Text3.Text = “ Or Text4.Text = “ Or Text5.Text = “ Or Text6.Text

21、 = “ ThenMsgBox “保存的数据信息不能为空“, 48, “提示信息“ElseDB_AdoRs.Open “select * from 货物的出入库信息 where tb_title=“ + Text2.Text + “, Cnn, adOpenKeysetIf DB_AdoRs.RecordCount 0 Then 判断要保存的信息是否已经存在MsgBox “该货物信息信息已经存在“, 48, “提示信息“DB_AdoRs.CloseElseDB_AdoRs.Closec = MsgBox(“确认保存信息吗 “, 33, “提示信息“)If c = vbOK Then 如果选择的

22、是“确定”按钮则保存信息Set DB_AdoRs = Cnn.Execute(“insert into 货物的出入库信息 values(“ & Text1 & “,“ & Text2 & “,“ & Text3 & “,“ & Text4 & “,“ _& Text5 & “,“ & Date & “,“ & Text6 & “)“)MsgBox “信息保存成功“, 64, “提示信息“ElseEnd If保存数据后刷新数据信息Adodc1.RecordSource = “select * from 货物的出入库信息 order by id“Adodc1.RefreshAddTitleEnd

23、IfEnd IfEnd Sub(6)点击退出,销毁当前窗口。Private Sub Command6_Click()Unload MeEnd Sub第 9 页 共 21 页(7)单击 DataGrid1 中的相应记录,会在窗体左侧的各个编辑框中显示相应的内容。Private Sub DataGrid1_Click()On Error Resume NextIf Adodc1.Recordset.RecordCount 0 ThenText1.Text = Adodc1.Recordset.Fields(0)Text2.Text = Adodc1.Recordset.Fields(1)Text3

24、.Text = Adodc1.Recordset.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 商品销售模块的设计与实现在“商品销售管理”窗口中的“销售商品”下拉列表中选择要销售的商品之后,该商品的基本信息将显示在窗体中相应的文本框中,在输入销售数量和实收金额后,单击“确认销售”按钮完成销售商品的操作。第 10 页 共 21 页3.

25、6.1 窗体界面设计(1)在工程中添加一个窗体,命名为 Frm_Sale,将 Caption 属性设置为“商品销售管理”。(2)在窗体上添加相应的控件,如下图所示。(3)通过“工程”菜单下的“部件”命令将 DataGrid 数据表格控件添加到工具箱中,然后在窗体上添加 1 个数据表格控件 DataGrid1。(4)在窗体上添加 2 个 ADO 控件 Adodc1 和 Adodc2,同时将 DataGrid1 的数据源属性DataSource 设置为 Adodc2。3.6.2 程序代码实现(1)窗体启动时,将商品库存中的货物名称信息添加到下拉列表中,然后再将商品销售的数据信息显示在 DataGr

26、id1 控件中。Private Sub Form_Load()Adodc2.ConnectionString = MyStrs第 11 页 共 21 页Adodc2.RecordSource = “select * from 商品的销售信息 order by id“Adodc2.RefreshAddTitle使用代码连接数据库与数据表Adodc1.ConnectionString = MyStrsAdodc1.RecordSource = “select * from 货物的出入库信息“Adodc1.RefreshIf Adodc1.Recordset.RecordCount 0 ThenAd

27、odc1.Recordset.MoveFirstCombo1.Clear 在添加数据时,首先清空控件中的内容Do While Adodc1.Recordset.EOF = False 将货物出入库信息添加到下拉列表框控件当中Combo1.AddItem (Adodc1.Recordset.Fields(“tb_title“)Adodc1.Recordset.MoveNextLoopEnd IfEnd SubPrivate Sub AddTitle()DataGrid1.Columns.Item(0).Caption = “编号“DataGrid1.Columns.Item(1).Caption

28、 = “名称“DataGrid1.Columns.Item(2).Caption = “销售数量“DataGrid1.Columns.Item(3).Caption = “销售总价“DataGrid1.Columns.Item(4).Caption = “销售日期“End Sub(2)选择下拉列表中的商品之后,该商品的详细信息将显示在窗体中相对应的文本框中。商品详细信息Private Sub Combo1_Click()Adodc1.RecordSource = “select * from 货物的出入库信息 where tb_title =“ & Combo1.Text & “Adodc1.

29、RefreshIf Adodc1.Recordset.RecordCount 0 ThenText1.Text = Adodc1.Recordset.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.T

30、ext = “Text7.Text = “Text8.Text = “第 12 页 共 21 页Text9.Text = “End Sub(3)单击“确认销售”按钮,将完成销售商品的操作。(4)当用户输入销售数量后并将输入焦点移开后,需要实时更新商品详细信息中的数量信息,即在原有数量的基础上减去用户输入的销售数量。(3)和(4)的代码:Private Sub Command1_Click()Adodc1.ConnectionString = MyStrsAdodc1.RecordSource = “select * from 货物的出入库信息 where tb_title =“ & Combo

31、1.Text & “Adodc1.RefreshDim a As IntegerDim b As Integera = Val(Text7.Text)b = Val(Text4.Text * Text6.Text)If Text6.Text = “ Or Text7.Text = “ ThenMsgBox “请补全信息!“, 64, “提示信息“ElseIf a 0 ThenAdodc1.Recordset.MoveFirstCombo1.Clear 在添加数据时,首先清空控件中的内容Do While Adodc1.Recordset.EOF = False 将商品销售信息添加到下拉列表框控件

32、当中Combo1.AddItem (Adodc1.Recordset.Fields(“tb_title“)Adodc1.Recordset.MoveNextLoopEnd IfEnd SubPrivate Sub AddTitle()第 16 页 共 21 页DataGrid1.Columns.Item(0).Caption = “编号“DataGrid1.Columns.Item(1).Caption = “名称“DataGrid1.Columns.Item(2).Caption = “销售数量“DataGrid1.Columns.Item(3).Caption = “销售总价“DataGr

33、id1.Columns.Item(4).Caption = “销售日期“End Sub窗体的运行结果如下:3.8 修改密码模块的设计与实现3.8.1 窗体界面设计(1)添加一个窗体,命名为 Frm_Pas,将 Caption 属性设置为“密码修改”。(2)在窗体上加入一个 ADO 控件 Adodc1。(3)设计窗体的界面如下图。第 17 页 共 21 页3.8.2 程序代码实现(1)载入窗口时连接操作员信息数据表Private Sub Form_Load()使用代码连接数据库与数据表Adodc1.ConnectionString = MyStrsAdodc1.RecordSource = “s

34、elect * from 系统用户的信息“Adodc1.RefreshEnd Sub(2)当点击“确定”按钮时,首先判断用户输入的用户名和原密码信息是否正确,如果正确并且两次输入的新密码一致,就将用户密码修改为新密码。Private Sub Command1_Click()Adodc1.RecordSource = “select * from 系统用户的信息 where tb_name =“ & Text1.Text & “Adodc1.RefreshIf Text1.Text = “ ThenMsgBox “请输入用户名!“, 48, “提示信息“Text1.SetFocusElseIf

35、Text2.Text = “ ThenMsgBox “请输入旧密码!“, 48, “提示信息“Text2.SetFocusElseIf Text3.Text = “ ThenMsgBox “请输入新密码!“, 48, “提示信息“Text3.SetFocus第 18 页 共 21 页ElseIf Text4.Text = “ ThenMsgBox “请确认新密码!“, 48, “提示信息“Text4.SetFocusElseIf Adodc1.Recordset.RecordCount 0 ThenMPassword = Adodc1.Recordset.Fields(“tb_pas“)If

36、Text2.Text = MPassword And Text3.Text = Text4.Text Then 判断数据的密码是否正确Set DB_AdoRs = Cnn.Execute(“UPDATE 系统用户的信息 SET tb_pas=“ + Text3.Text + “ where tb_name=“ + Text1.Text + “)MsgBox “密码已修改!“, 48, “提示信息“Unload MeElseIf Text2.Text “ ThenMsgBox “对不起 没有此用户的信息!“, 64, “提示信息“Text1.Text = “Text2.Text = “Text3.Text = “Text4.Text = “Text1.SetFocusEnd IfEnd IfEnd IfEnd IfEnd IfEnd IfEnd Sub第 19 页 共 21 页(3)当用户点击“取消”时,关闭密码修改对话框。Private Sub Command2_Click()EndEnd Sub窗体的运行结果如下:4.实验总结通过这两星期的学习,加深了我对数据库的认识,懂得了如何去应用数据库,也对 Visual Basic 有了一定的了解了,虽然设计的过程中并不是那么的顺利,但经过查找相关的资料后,问题一步一步地解决了,相信对我以后的学习有一定的帮助。

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

当前位置:首页 > 企业管理 > 管理学资料

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


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

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

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