数据库课程设计库存销售管理系统.docx
《数据库课程设计库存销售管理系统.docx》由会员分享,可在线阅读,更多相关《数据库课程设计库存销售管理系统.docx(21页珍藏版)》请在冰点文库上搜索。
数据库课程设计库存销售管理系统
数据库课程设计
实验报告
姓名:
黄世增
班级:
计算机1403
学号:
05
1.实验名称
使用VisualBasic和SQLServer2014开发库存销售管理系统
2.实验目的
使用VisualBasic开发工具开发一个库存销售管理系统,该系统采用SQLServer2014数据库保存库存货物信息,数据库中包括货物出入库信息和商品销售等信息。
该系统包括系统登录、货物出入库管理、商品销售管理和商品统计管理等功能,通过这些功能实现对库存中货物信息和销售信息进行管理。
系统主要实现以下目标:
实现系统登录及修改用户密码的功能。
对库存货物的出入库信息进行管理。
对商品的销售信息进行管理。
根据销售日期统计商品的销售数据。
3.实验步骤
设计数据库
建立一个名为“DB_KCGL”的数据库,根据前述的主要功能目标,需要建立3个数据表(关系):
(1)货物的出入库信息:
保存货物的出入库信息
id:
库存货物信息的编号,主码,建议长度为18的numeric类型。
tb_title:
库存货物的名称,建议长度为50的varchar类型。
tb_style:
库存货物的类型,建议长度为50的varchar类型。
tb_nums:
库存货物的数量,建议为整型int。
tb_values:
库存货物的价格,实数类型real。
tb_date:
库存货物的入库日期,时间日期类型datetime。
tb_mark:
库存货物的备注信息,建议长度为50的varchar类型。
(2)商品的销售信息:
保存商品的销售信息
id:
商品销售信息的编号,主码,建议长度为18的numeric类型。
tb_title:
销售商品的名称,建议长度为50的varchar类型。
tb_nums:
建议为整型int。
tb_values:
销售商品的总价,浮点类型float。
tb_date:
商品销售的日期,时间日期类型datetime。
(3)系统用户的信息:
保存系统用户的信息
id:
用户信息的编号,主码,建议长度为18的numeric类型。
tb_name:
用户名称,建议长度为50的varchar类型。
tb_pas:
用户的密码信息,建议长度为50的varchar类型。
设计连接数据库的模块
需要首先建立一个连接数据库的模块,这样应用程序才能与数据库中的数据表取得连接,将数据信息从数据表中读出到应用程序中或通过应用程序保存到数据表中。
为此,建立一个负责数据库连接的模块如下:
(1)选择“工程”菜单下的“添加模块”命令,在应用程序中添加一个模块Module1。
(2)Module1模块的实现如下:
'数据连接模块
PublicMyStrsAsString
PublicDB_AdoRsAsNew'后添加一个记录集对象
PublicDB_AdoRs1AsNew'后添加一个记录集对象
PublicDB_AdoRs2AsNew'后添加一个记录集对象
PublicFunctionCnn()As'定义连接字符串函数
SetCnn=New
"Provider=;IntegratedSecurity=SSPI;PersistSecurityInfo=False;InitialCatalog=DB_KCGL;DataSource=."
EndFunction
PublicSubMain()
MyStrs="Provider=;IntegratedSecurity=SSPI;PersistSecurityInfo=False;InitialCatalog=DB_KCGL;DataSource=."
'显示系统登录窗体
EndSub
(3)这里需要将程序的入口设置为模块中的Main()函数。
选择“工程”菜单下的“工程属性”命令,在“通用”标签中进行相应设置。
系统登陆模块设计
在本库存销售管理系统中,只有授权用户(管理员)可以登录并进行库存和销售信息管理与维护,因此需要一个系统登录界面,防止非法用户登录到系统中,从而保证了应用程序的安全性和可靠性。
登录窗体设计
设计如下的登录窗体,在窗体中要添加一个ADO控件,命名为Adodc1。
(1)登录窗体启动之后,需要将系统用户的信息数据表中的所有用户名称信息添加到窗体的ComboBox控件的Op_Name属性中,即实现在“操作员名称”下拉列表中可以出现系统当前的操作员信息,供登录用户选择。
PrivateSubForm_Load()
'使用代码连接数据库与数据表
=MyStrs
="select*from系统的用户信息"
If>0Then
'在添加数据时,首先清空控件中的内容
DoWhile=False'将操作员信息添加到下拉列表框控件当中
"tb_name"))
Loop
EndIf
EndSub
(2)当用户在“操作员名称”下拉列表中选择操作员的名称,并且在“操作员密码”文本框输入正确的密码之后,单击“确定”按钮将登录到系统中,否则将无法登录系统。
具体实现如下:
PrivateSubCmd_Ok_Click()
="select*fromTb_Userwheretb_name='"&&"'"
If>0Then
MPassword="tb_pas")
If=MPasswordThen'判断数据的密码是否正确
Name1=
="当前操作员:
"+"tb_name")
'通过身份验证则显示主窗体,登录到系统当中
UnloadMe
Else
MsgBox"密码不正确,请您确认后重新输入",,"提示信息"
=""
EndIf
Else
MsgBox"对不起没有此用户的信息",,"提示信息"
=""
=""
EndIf
EndSub
系统主界面的实现
主界面设计
(1)在工程中添加一个窗体,将窗体命名为Frm_main,将窗体Caption属性设置为“库存管理系统”。
(2)添加一个Toolbar控件,工具栏由“修改密码”、“库存管理”、“商品销售”、“销售统计”和“退出系统”5个按钮组成。
(3)添加一个StatusBar控件,使得状态栏中能够显示登录操作员姓名和当前系统时间等信息。
(4)在主窗体上添加一个时钟控件,用于显示系统当前日期和时间信息。
(5)在主窗体上添加一个Label标签控件,将其Caption属性设置为“库存管理系统”。
代码实现
(1)窗体启动时,在窗体的状态栏中将显示当前系统的日期信息:
PrivateSubForm_Load()
=Format(Now,"yyyy年mm月dd日")
EndSub
(2)单击窗口工具栏按钮时,将会调用系统的各个子功能模块:
PrivateSubToolbar1_ButtonClick(ByValButtonAs
SelectCase
Case1
'修改密码
Case2
'库存管理
Case3
'商品销售
Case4
'销售统计
Case5
End'退出系统
EndSelect
EndSub
(3)在时钟控件的Timer事件中添加如下代码,实现在状态栏中显示当前系统时间的功能:
PrivateSubTimer1_Timer()
=Time
EndSub
(4)再向状态栏中添加公司名称,操作员和公司网址信息。
系统主窗体的运行界面如下图所示:
出入库管理模块的设计与实现
该模块主要是记录和维护库存中的货物信息,其中包括对货物信息的删除、修改和保存等方面的功能。
窗体界面设计
(1)在工程中添加一个窗体,命名为Frm_Inout,将窗体Caption设置为“出入库管理”。
(2)在窗体上添加相应的控件,如下图所示。
(3)通过“工程”菜单下的“部件”命令将DataGrid数据表格控件添加到工具箱中,然后在窗体上添加1个数据表格控件DataGrid1。
(4)在窗体上添加一个ADO控件Adodc1,同时将DataGrid1的数据源属性DataSource设置为Adodc1。
程序代码实现
(1)窗口载入时,将数据库中商品表数据读出。
PrivateSubForm_Load()
=MyStrs
="select*from货物的出入库信息orderbyid"
AddTitle
EndSub
其中,AddTitle函数用于向DataGrid1添加表头,实现如下:
'添加数据库字段标题的事件过程
PrivateSubAddTitle()
="编号"
="名称"
="类型"
="数量"
="单价"
="入库日期"
="备注"
EndSub
(2)点击“添加”按钮,清空编辑框,让用户输入新的待添加内容
PrivateSubCommand1_Click()
'清空文本框中的内容
=""
=""
=""
=""
=""
=""
EndSub
(3)点击“删除”按钮,删除选中当前记录。
PrivateSubCommand2_Click()
'删除库存信息
c=MsgBox("确认要删除该信息吗",17,"提示信息")
Ifc=vbOKThen
'如果有错误则执行错误处理
OnErrorResumeNext
SetDB_AdoRs=("Deletefrom货物的出入库信息whereid='"++"'")
MsgBox"数据删除成功",64,"提示信息"
'删除后刷新数据信息
="select*from货物的出入库信息orderbyid"
AddTitle
EndIf
=""
=""
=""
=""
=""
=""
EndSub
(4)点击“修改”按钮,修改当前的记录信息。
PrivateSubCommand3_Click()
'修改库存信息
c=MsgBox("确认修改信息吗",33,"提示信息")
Ifc=vbOKThen
'OnErrorResumeNext
SetDB_AdoRs=("UPDATE货物的出入库信息SETtb_title='"+Text2+"',tb_style='"+Text3+"',tb_nums='"+Text4+"',tb_values='"_
+Text5+"',tb_mark='"+Text6+"'whereid='"++"'")
MsgBox"数据修改成功",64,"提示信息"
="select*from货物的出入库信息orderbyid"
AddTitle
EndIf
EndSub
(5)点击“保存”按钮,将保存文本框中输入的货物信息。
PrivateSubCommand4_Click()
If=""Or=""Or=""Or=""Or=""Or=""Then
MsgBox"保存的数据信息不能为空",48,"提示信息"
Else
"select*from货物的出入库信息wheretb_title='"++"'",Cnn,adOpenKeyset
If>0Then'判断要保存的信息是否已经存在
MsgBox"该货物信息信息已经存在",48,"提示信息"
Else
c=MsgBox("确认保存信息吗",33,"提示信息")
Ifc=vbOKThen'如果选择的是“确定”按钮则保存信息
SetDB_AdoRs=("insertinto货物的出入库信息values("&Text1&",'"&Text2&"','"&Text3&"',"&Text4&","_
&Text5&",'"&Date&"','"&Text6&"')")
MsgBox"信息保存成功",64,"提示信息"
Else
EndIf
'保存数据后刷新数据信息
="select*from货物的出入库信息orderbyid"
AddTitle
EndIf
EndIf
EndSub(6)点击退出,销毁当前窗口。
PrivateSubCommand6_Click()
UnloadMe
EndSub
(7)单击DataGrid1中的相应记录,会在窗体左侧的各个编辑框中显示相应的内容。
PrivateSubDataGrid1_Click()
'OnErrorResumeNext
If>0Then
======EndIf
EndSub
窗体的运行界面如下图所示:
商品销售模块的设计与实现
在“商品销售管理”窗口中的“销售商品”下拉列表中选择要销售的商品之后,该商品的基本信息将显示在窗体中相应的文本框中,在输入销售数量和实收金额后,单击“确认销售”按钮完成销售商品的操作。
窗体界面设计
(1)在工程中添加一个窗体,命名为Frm_Sale,将Caption属性设置为“商品销售管理”。
(2)在窗体上添加相应的控件,如下图所示。
(3)通过“工程”菜单下的“部件”命令将DataGrid数据表格控件添加到工具箱中,然后在窗体上添加1个数据表格控件DataGrid1。
(4)在窗体上添加2个ADO控件Adodc1和Adodc2,同时将DataGrid1的数据源属性DataSource设置为Adodc2。
程序代码实现
(1)窗体启动时,将商品库存中的货物名称信息添加到下拉列表中,然后再将商品销售的数据信息显示在DataGrid1控件中。
PrivateSubForm_Load()
=MyStrs
="select*from商品的销售信息orderbyid"
AddTitle
'使用代码连接数据库与数据表
=MyStrs
="select*from货物的出入库信息"
If>0Then
'在添加数据时,首先清空控件中的内容
DoWhile=False'将货物出入库信息添加到下拉列表框控件当中
"tb_title"))
Loop
EndIf
EndSub
PrivateSubAddTitle()
="编号"
="名称"
="销售数量"
="销售总价"
="销售日期"
EndSub
(2)选择下拉列表中的商品之后,该商品的详细信息将显示在窗体中相对应的文本框中。
'商品详细信息
PrivateSubCombo1_Click()
="select*from货物的出入库信息wheretb_title='"&&"'"
If>0Then
="id")
="tb_style")
="tb_nums")
="tb_values")
="tb_mark")
EndIf
'清空文本框中的内容
=""
=""
=""
=""
EndSub
(3)单击“确认销售”按钮,将完成销售商品的操作。
(4)当用户输入销售数量后并将输入焦点移开后,需要实时更新商品详细信息中的数量信息,即在原有数量的基础上减去用户输入的销售数量。
(3)和(4)的代码:
PrivateSubCommand1_Click()
=MyStrs
="select*from货物的出入库信息wheretb_title='"&&"'"
DimaAsInteger
DimbAsInteger
a=Val
b=Val*
If=""Or=""Then
MsgBox"请补全信息!
",64,"提示信息"
Else
IfaMsgBox"信息输入有误,请重新输入!
",64,"提示信息"
Else
=*
=-
=-
SetDB_AdoRs=("insertinto商品的销售信息values('"&+1&"','"&&"','"&Text6&"',"&Text8&",'"&Date&"')")
SetDB_AdoRs=("UPDATE货物的出入库信息SETtb_nums='"&Text3&"'whereid='"&Text1&"'")
MsgBox"销售成功!
",64,"提示信息"
="select*from商品的销售信息"
AddTitle
EndIf
EndIf
EndSub
窗体的运行结果如下图所示:
销售统计模块的设计与实现
该模块主要实现统计商品销售信息的功能。
选择商品的销售日期和销售商品的名称之后,在下面的DataGrid数据表格控件中就会显示查询的数据结果信息,同时统计出销售商品的总数量和总价格。
窗体界面设计
(1)添加一个窗体,命名为Frm_Stat,将窗体的Caption属性设置为“销售统计”。
(2)在窗体上添加控件情况如后图。
(3)在窗体上添加一个数据表格控件DataGrid1。
(4)在窗体上添加2个ADO控件Adodc1和Adodc2,同时将DataGrid1的数据源属性DataSource设置为Adodc2。
销售统计窗体的设计界面如下图所示。
程序代码实现
(1)在启动窗体时,将货物的名称信息添加到下拉列表控件中,然后再将商品销售的数据信息显示在表格控件中。
(2)在日期时间控件DTPicker1的Change事件下添加如下的程序代码,实现根据选择条件统计商品销售信息的功能。
(3)在日期Combo1控件的Click事件下添加如下的程序代码,实现根据选择条件统计商品销售信息的功能。
PrivateSubCombo1_Click()
="select*from商品的销售信息wheretb_title='"&&"'andtb_date='"&&"'"
AddTitle
Dimn,mAsInteger
n=0
m=0
DoWhileNotn=n+m=m+Loop
=n
=m
EndSub
PrivateSubDTPicker1_Change()
="select*from商品的销售信息wheretb_title='"&&"'andtb_date='"&&"'"
AddTitle
Dimn,mAsInteger
n=0
m=0
DoWhileNotn=n+m=m+Loop
=n
=m
EndSub
PrivateSubForm_Load()
=MyStrs
="select*from商品的销售信息wheretb_title='"&&"'andtb_date='"&&"'orderbyid"
AddTitle
'使用代码连接数据库与数据表
=MyStrs
="select*from货物的出入库信息"
If>0Then
'在添加数据时,首先清空控件中的内容
DoWhile=False'将商品销售信息添加到下拉列表框控件当中
"tb_title"))
Loop
EndIf
EndSub
PrivateSubAddTitle()
="编号"
="名称"
="销售数量"
="销售总价"
="销售日期"
EndSub
窗体的运行结果如下:
修改密码模块的设计与实现
窗体界面设计
(1)添加一个窗体,命名为Frm_Pas,将Caption属性设置为“密码修改”。
(2)在窗体上加入一个ADO控件Adodc1。
(3)设计窗体的界面如下图。
程序代码实现
(1)载入窗口时连接操作员信息数据表
PrivateSubForm_Load()
'使用代码连接数据库与数据表
=MyStrs
="select*from系统用户的信息"
EndSub
(2)当点击“确定”按钮时,首先判断用户输入的用户名和原密码信息是否正确,如果正确并且两次输入的新密码一致,就将用户密码修改为新密码。
PrivateSubCommand1_Click()
="select*from系统用户的信息wheretb_name='"&&"'"
If=""Then
MsgBox"请输入用户名!
",48,"提示信息"
Else
If=""Then
MsgBox"请输入旧密码!
",48,"提示信息"
Else
If=""Then
MsgBox"请输入新密码!
",48,"提示信息"
Else
If=""Then
MsgBox"请确认新密码!
",48,"提示信息"
Else
If>0Then
MPassword="tb_pas")
If=MPasswordAnd=Then'判断数据的密码是否正确
SetDB_AdoRs=("UPDATE系统用户的信息SETtb_pas='"++"'wheretb_name='"++"'")
MsgBox"密码已修改!
",48,"提示信息"
UnloadMe
Else
If<>MPasswordThen
MsgBox"密码不正确,请您确认后重新输入!
",64,"提示信息"
=""
=""
=""
Else
MsgBox"两次输入的新密码不一致,请重新输入!
",64,"提示信息"
=""
=""
EndIf
EndIf
Else
If<>""Then
MsgBox"对不起没有此用户的信息!
",64,"提示信息"
=""
=""
=""
=""
EndIf
EndIf
EndIf
End