《数据库课程设计——库存销售管理系统.pdf》由会员分享,可在线阅读,更多相关《数据库课程设计——库存销售管理系统.pdf(22页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、数据库课程设计数据库课程设计实验报告实验报告姓名:黄世增姓名:黄世增班级:计算机班级:计算机 14031403学号:学号:141164030514116403051.1.实验名称实验名称使用 Visual Basic 6.0 和 SQL Server 2014 开发库存销售管理系统2.2.实验目的实验目的使用Visual Basic 6.0开发工具开发一个库存销售管理系统,该系统采用SQL Server 2014数据库保存库存货物信息,数据库中包括货物出入库信息和商品销售等信息。该系统包括系统登录、货物出入库管理、商品销售管理和商品统计管理等功能,通过这些功能实现对库存中货物信息和销售信息进行
2、管理。系统主要实现以下目标:实现系统登录及修改用户密码的功能。对库存货物的出入库信息进行管理。对商品的销售信息进行管理。根据销售日期统计商品的销售数据。3.3.实验步骤实验步骤3.13.1 设计数据库设计数据库建立一个名为“DB_KCGL”的数据库,根据前述的主要功能目标,需要建立3 个数据表(关系):(1)货物的出入库信息:保存货物的出入库信息id:库存货物信息的编号,主码,建议长度为18 的 numeric 类型。tb_title:库存货物的名称,建议长度为50 的 varchar 类型。tb_style:库存货物的类型,建议长度为50 的 varchar 类型。tb_nums:库存货物的
3、数量,建议为整型int。tb_values:库存货物的价格,实数类型real。tb_date:库存货物的入库日期,时间日期类型datetime。tb_mark:库存货物的备注信息,建议长度为50 的 varchar 类型。第1页 共 22 页(2)商品的销售信息:保存商品的销售信息id:商品销售信息的编号,主码,建议长度为18 的 numeric 类型。tb_title:销售商品的名称,建议长度为50 的 varchar 类型。tb_nums:建议为整型 int。tb_values:销售商品的总价,浮点类型float。tb_date:商品销售的日期,时间日期类型datetime。(3)系统用户
4、的信息:保存系统用户的信息id:用户信息的编号,主码,建议长度为18 的 numeric 类型。tb_name:用户名称,建议长度为50 的 varchar 类型。tb_pas:用户的密码信息,建议长度为50 的 varchar 类型。3.23.2 设计连接数据库的模块设计连接数据库的模块需要首先建立一个连接数据库的模块,这样应用程序才能与数据库中的数据表取得连接,将数据信息从数据表中读出到应用程序中或通过应用程序保存到数据表中。为此,建立一个负责数据库连接的模块如下:(1)选择“工程”菜单下的“添加模块”命令,在应用程序中添加一个模块 Module1。(2)Module1 模块的实现如下:数
5、据连接模块Public MyStrs As StringPublic 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定义连接字符串函数第2页 共 22 页Set Cnn=New ADODB.ConnectionCnn.OpenProvider=SQLOLEDB.1;IntegratedS
6、ecurity=SSPI;PersistSecurityInfo=False;Initial Catalog=DB_KCGL;Data Source=.End FunctionPublic Sub Main()MyStrs=Provider=SQLOLEDB.1;IntegratedSecurity=SSPI;PersistSecurityInfo=False;Initial Catalog=DB_KCGL;Data Source=.显示系统登录窗体Form1.ShowEnd Sub(3)这里需要将程序的入口设置为模块中的Main()函数。选择“工程”菜单下的“工程属性”命令,在“通用”标签中
7、进行相应设置。3.33.3 系统登陆模块设计系统登陆模块设计在本库存销售管理系统中,只有授权用户(管理员)可以登录并进行库存和销售信息管理与维护,因此需要一个系统登录界面,防止非法用户登录到系统中,从而保证了应用程序的安全性和可靠性。3.3.13.3.1 登录窗体设计登录窗体设计设计如下的登录窗体,在窗体中要添加一个ADO 控件,命名为 Adodc1。(1)登录窗体启动之后,需要将系统用户的信息数据表中的所有用户名称信息添加到窗体的 ComboBox 控件的 Op_Name 属性中,即实现在“操作员名称”下拉列表中可以出现系统当前的操作员信息,供登录用户选择。Private Sub Form_
8、Load()使用代码连接数据库与数据表Adodc1.ConnectionString=MyStrs第3页 共 22 页Adodc1.RecordSource=select*from 系统的用户信息Adodc1.RefreshIf Adodc1.Recordset.RecordCount 0 ThenAdodc1.Recordset.MoveFirstOp_Name.Clear在添加数据时,首先清空控件中的内容Do While Adodc1.Recordset.EOF=False将操作员信息添加到下拉列表框控件当中Op_Name.AddItem(Adodc1.Recordset.Fields(t
9、b_name)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=Adodc1.Reco
10、rdset.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.SetFocusEnd IfElseMsgBox 对不起
11、没有此用户的信息,提示信息Op_Name.Text=Txt_Password.Text=End IfEnd Sub第4页 共 22 页3.43.4 系统主界面的实现系统主界面的实现3.4.13.4.1 主界面设计主界面设计(1)在工程中添加一个窗体,将窗体命名为Frm_main,将窗体 Caption 属性设置为“库存管理系统”。(2)添加一个 Toolbar控件,工具栏由“修改密码”、“库存管理”、“商品销售”、“销售统计”和“退出系统”5 个按钮组成。(3)添加一个 StatusBar 控件,使得状态栏中能够显示登录操作员姓名和当前系统时间等信息。(4)在主窗体上添加一个时钟控件,用于显示
12、系统当前日期和时间信息。(5)在主窗体上添加一个Label 标签控件,将其 Caption 属性设置为“库存管理系统”。3.4.23.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 MSComctlLib.Button)Select
13、 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=Time第5页 共 22 页End Sub(4)再向状态栏中添加公司名称,操作员和公司网址信息。系统主窗体的运行界面如
14、下图所示:3.53.5 出入库管理模块的设计与实现出入库管理模块的设计与实现该模块主要是记录和维护库存中的货物信息,其中包括对货物信息的删除、修改和保存等方面的功能。3.5.13.5.1 窗体界面设计窗体界面设计(1)在工程中添加一个窗体,命名为Frm_Inout,将窗体 Caption 设置为“出入库管理”。(2)在窗体上添加相应的控件,如下图所示。第6页 共 22 页(3)通过“工程”菜单下的“部件”命令将DataGrid 数据表格控件添加到工具箱中,然后在窗体上添加 1 个数据表格控件 DataGrid1。(4)在窗体上添加一个 ADO 控件 Adodc1,同时将 DataGrid1 的
15、数据源属性 DataSource 设置为 Adodc1。3.5.23.5.2 程序代码实现程序代码实现(1)窗口载入时,将数据库中商品表数据读出。Private Sub Form_Load()Adodc1.ConnectionString=MyStrsAdodc1.RecordSource=select*from 货物的出入库信息 order by idAdodc1.RefreshAddTitleEnd Sub其中,AddTitle函数用于向 DataGrid1 添加表头,实现如下:添加数据库字段标题的事件过程Private Sub AddTitle()DataGrid1.Columns.It
16、em(0).Caption=编号DataGrid1.Columns.Item(1).Caption=名称DataGrid1.Columns.Item(2).Caption=类型DataGrid1.Columns.Item(3).Caption=数量第7页 共 22 页DataGrid1.Columns.Item(4).Caption=单价DataGrid1.Columns.Item(5).Caption=入库日期DataGrid1.Columns.Item(6).Caption=备注End Sub(2)点击“添加”按钮,清空编辑框,让用户输入新的待添加内容Private Sub Command
17、1_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 NextSet DB_AdoRs=Cnn.Execute(Delete from 货物的出入库信息where id=+Text1.Text+)
18、MsgBox 数据删除成功,64,提示信息删除后刷新数据信息Adodc1.RecordSource=select*from 货物的出入库信息 order by idAdodc1.RefreshAddTitleEnd IfText1.Text=Text2.Text=Text3.Text=Text4.Text=Text5.Text=Text6.Text=End Sub第8页 共 22 页(4)点击“修改”按钮,修改当前的记录信息。Private Sub Command3_Click()修改库存信息c=MsgBox(确认修改信息吗,33,提示信息)If c=vbOK ThenOn Error Res
19、ume NextSet DB_AdoRs=Cnn.Execute(UPDATE 货物的出入库信息 SET tb_title=+Text2+,tb_style=+Text3+,tb_nums=+Text4+,tb_values=_+Text5+,tb_mark=+Text6+where id=+Text1.Text+)MsgBox 数据修改成功,64,提示信息Adodc1.RecordSource=select*from 货物的出入库信息 order by idAdodc1.RefreshAddTitleEnd IfEnd Sub(5)点击“保存”按钮,将保存文本框中输入的货物信息。Privat
20、e Sub Command4_Click()If Text1.Text=Or Text2.Text=Or Text3.Text=Or Text4.Text=Or Text5.Text=OrText6.Text=ThenMsgBox 保存的数据信息不能为空,48,提示信息ElseDB_AdoRs.Open select*from 货物的出入库信息 where tb_title=+Text2.Text+,Cnn,adOpenKeysetIf DB_AdoRs.RecordCount 0 Then判断要保存的信息是否已经存在MsgBox 该货物信息信息已经存在,48,提示信息DB_AdoRs.Clo
21、seElseDB_AdoRs.Closec=MsgBox(确认保存信息吗,33,提示信息)If c=vbOK Then如果选择的是“确定”按钮则保存信息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第9页 共 22 页Adodc1.Refr
22、eshAddTitleEnd IfEnd IfEnd Sub(6)点击退出,销毁当前窗口。Private Sub Command6_Click()Unload MeEnd Sub(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.
23、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窗体的运行界面如下图所示:第10页 共 22 页3.63.6 商品销售模块的设计与实现商品销售模块的设计与实现在“商品销售管理”窗口中的“销售商品”下拉列表中选择要销售的商品之后,该商品的基本信息将显示在窗体中相应的文本框中,在输入销售数量和实收金额后,单击“确认销售”按钮完成销售商品的操
24、作。3.6.13.6.1 窗体界面设计窗体界面设计(1)在工程中添加一个窗体,命名为Frm_Sale,将Caption 属性设置为“商品销售管理”。(2)在窗体上添加相应的控件,如下图所示。(3)通过“工程”菜单下的“部件”命令将DataGrid 数据表格控件添加到工具箱中,然后在窗体上添加 1 个数据表格控件 DataGrid1。第11页 共 22 页(4)在窗体上添加 2 个 ADO 控件 Adodc1 和 Adodc2,同时将 DataGrid1 的数据源属性DataSource 设置为 Adodc2。3.6.23.6.2 程序代码实现程序代码实现(1)窗体启动时,将商品库存中的货物名称
25、信息添加到下拉列表中,然后再将商品销售的数据信息显示在 DataGrid1 控件中。Private Sub Form_Load()Adodc2.ConnectionString=MyStrsAdodc2.RecordSource=select*from 商品的销售信息 order by idAdodc2.RefreshAddTitle使用代码连接数据库与数据表Adodc1.ConnectionString=MyStrsAdodc1.RecordSource=select*from 货物的出入库信息Adodc1.RefreshIf Adodc1.Recordset.RecordCount 0 T
26、henAdodc1.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=名称Dat
27、aGrid1.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&第12页 共 22 页Adodc1.RefreshIf Adodc1.Record
28、set.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.Text=Text7.Text=Text8.Text=Text9.Text=End Su
29、b(3)单击“确认销售”按钮,将完成销售商品的操作。(4)当用户输入销售数量后并将输入焦点移开后,需要实时更新商品详细信息中的数量信息,即在原有数量的基础上减去用户输入的销售数量。(3)和(4)的代码:Private Sub Command1_Click()Adodc1.ConnectionString=MyStrsAdodc1.RecordSource=select*from 货物的出入库信息where tb_title=&Combo1.Text&Adodc1.RefreshDim a As IntegerDim b As Integera=Val(Text7.Text)b=Val(Text
30、4.Text*Text6.Text)If Text6.Text=Or Text7.Text=ThenMsgBox 请补全信息!,64,提示信息ElseIf a 0 ThenAdodc1.Recordset.MoveFirstCombo1.Clear空控件中的内容Do While Adodc1.Recordset.EOF=False拉列表框控件当中Combo1.AddItem(Adodc1.Recordset.Fields(tb_title)Adodc1.Recordset.MoveNextLoopEnd IfEnd SubPrivate Sub AddTitle()DataGrid1.Colu
31、mns.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窗体的运行结果如下:第17页 共 22 页在添加数据时,首先清将商品销售信息添加到下3.83.8 修改密码模块的设计与实现修改密码模块的设计与实现3.8.13.8.1 窗体界面设计窗体界面设计(1)添加一个窗体,命名为Frm_Pas,将 Ca
32、ption 属性设置为“密码修改”。(2)在窗体上加入一个ADO 控件 Adodc1。(3)设计窗体的界面如下图。第18页 共 22 页3.8.23.8.2 程序代码实现程序代码实现(1)载入窗口时连接操作员信息数据表Private Sub Form_Load()使用代码连接数据库与数据表Adodc1.ConnectionString=MyStrsAdodc1.RecordSource=select*from 系统用户的信息Adodc1.RefreshEnd Sub(2)当点击“确定”按钮时,首先判断用户输入的用户名和原密码信息是否正确,如果正确并且两次输入的新密码一致,就将用户密码修改为新密
33、码。Private Sub Command1_Click()Adodc1.RecordSource=select*from 系统用户的信息 where tb_name=&Text1.Text&Adodc1.RefreshIf Text1.Text=ThenMsgBox 请输入用户名!,48,提示信息Text1.SetFocusElseIf Text2.Text=ThenMsgBox 请输入旧密码!,48,提示信息Text2.SetFocusElse第19页 共 22 页If Text3.Text=ThenMsgBox 请输入新密码!,48,提示信息Text3.SetFocusElseIf Te
34、xt4.Text=ThenMsgBox 请确认新密码!,48,提示信息Text4.SetFocusElseIf Adodc1.Recordset.RecordCount 0 ThenMPassword=Adodc1.Recordset.Fields(tb_pas)If 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 密码已修改!,
35、48,提示信息Unload MeElseIf Text2.Text MPassword ThenMsgBox 密码不正确,请您确认后重新输入!,64,提示信息Text2.Text=Text3.Text=Text4.Text=Text2.SetFocusElseMsgBox 两次输入的新密码不一致,请重新输入!,64,提示信息Text3.Text=Text4.Text=Text3.SetFocusEnd IfEnd IfElseIf Text1.Text ThenMsgBox 对不起 没有此用户的信息!,64,提示信息Text1.Text=Text2.Text=Text3.Text=Text4.
36、Text=Text1.SetFocusEnd If第20页 共 22 页End IfEnd IfEnd IfEnd IfEnd IfEnd Sub(3)当用户点击“取消”时,关闭密码修改对话框。Private Sub Command2_Click()EndEnd Sub窗体的运行结果如下:4.4.实验总结实验总结通过这两星期的学习,加深了我对数据库的认识,懂得了如何去应用数据库,也对 Visual Basic有了一定的了解了,虽然设计的过程中并不是那么的顺利,但经过查找相关的资料后,问题一 步 一 步 地 解 决 了,相 信 对 我 以 后 的 学 习 有 一 定 的 帮 助。第21页 共 22 页