汽车销售管理系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录
汽车销售管理系统 .................................. 错误!未定义书签。
一、课程设计的目的和意义 ................... 错误!未定义书签。
二、需求分析 (1)
三、模块设计 (1)
四、创建数据库 (2)
五、创建登录窗口 (4)
六、主窗体的设计 (6)
七、用户管理模块 (9)
八、汽车信息管理模块 (15)
九、进货信息模块 ................................... 错误!未定义书签。
十、销售信息管理模块 ........................... 错误!未定义书签。
十一、查找窗体模块 . (36)
十二、结果分析 (38)
十三、参考文献 (38)
汽车销售管理系统
1.课程设计的目的和意义
高效的汽车销售管理系统是当前信息化汽车公司管理系统之需要。
面对庞大的汽车销售和库存信息,就需要有汽车管理系统来提高管理工作的效率。
通过建立这样的系统,可以做到汽车信息的规范管理、快速查询和科学统计,从而减少管理方面的工作量。
系统开发环境为一台安装windows xp的个人计算机作为客户机,其上安装了SQL Server 2000,本系统使用Visual Basic 6.0来开发,系统设计与运行均可在客户机上进行。
2.需求分析
本系统的设计模拟一般医院的汽车销售管理系统内容,经过充分的系统分析和调研,本系统主要包括的信息有3类:汽车商品信息、汽车进货信息以及汽车销售信息。
在传统的销售管理工作中,往往是用人工清点的方式来掌握仓库中的汽车商品、使用手工记账的方式来掌握商品的进货和销售情况。
这种方式在数量较少、库存变换少的情况下,不失为一种好的方法。
但是,随着每天所发生的进货和销售情况纷繁复杂,如果借助人工来记录和管理,将会耗费大量的时间,而且容易出现错误,造成管理上的混乱。
具体而言,汽车销售管理系统需要实现一下的需求:
(1)能够对医院过拥有的各种汽车的基础信息进行维护和管理。
汽车的基础信息包括:汽车的顺序号、汽车名称、汽车规格、计量单位、备注信息、库存数
量等。
系统需要能够对汽车信息进行添加、修改和删除,也可以以图形的方
式显示出现汽车的库存数量的比较。
(2)跟踪各种汽车的的进货信息。
汽车的进货信息包括顺序号、汽车名称、进货数量、进货价格、进货日期、备注等。
系统还需要能够对进货信息进行添加、
修改和删除,也可以按照一定的条件来进行查询。
(3)跟踪各种汽车的销售信息。
汽车的销售信息包括顺序号、汽车名称、顾客名称、购买数量、售出价格、销售日期、备注等。
系统需要能够对销售信息进
行添加、修改和删除,也可以按照一定的条件来进行查询。
3.模块设计
根据需求分析的结果,本系统主要划分为4个子模块:用户管理、汽车信息管理、进货信息管理、销售信息管理。
汽车销售管理系统不同类型的用户在系统中有不同的权限,主要有以下3种用户:
(1)管理人员本系统的管理人员可以使用本系统的所有功能,包括用户管理、汽车信息管理、进货信息管理和销售信息管理功能。
(2)仓管人员仓管人员负责管理仓库中的汽车数量,主要负责汽车的每次的进货情况。
其只能使用系统中的进货信息管理功能模块,对每次进货的信息进
行记录,并且可以查询当前仓库中的汽车库存数量。
(3)销售人员销售人员负责汽车的日常销售工作,需要掌握各种汽车的各次的销售情况。
其只能使用本系统的汽车销售信息管理模块,贵每次汽车的销售
情况进行记录。
整个系统的结构模块如图1所示。
一下分别介绍系统中的各个系统4个子模块
A.用户管理模块
用于管理汽车销售系统中的各种类型的用户。
只有具有管理人员身份的人才能
使用本模块,管理人员可以添加或者删除相应的用户,可以改变用户的身份,
也可以改变某个用户的秘密。
B . 汽车信息管理模块
图1 系统模块分析
用来多医院所拥有的各种汽车的基础信息进行维护和管理。
在系统中,需要对汽车信息进行添加、修改和删除,也可以按照一定的条件进行查询,并且不要将汽车的库存数量以图形的方式显示出来。
C . 进货信息管理模块
用来跟踪汽车每一次进货的信息。
该模块需要能够对进货信息进行添加、修改和删除,也可以按照一定的条件来进行查询。
只有管理人员和仓管人员才能使用本模块。
D . 销售信息管理模块
用来跟踪汽车每一次售货的信息。
该模块需要能够对销售信息进行添加、修改和删除,也可以按照一定的条件来进行查询。
只有管理人员和销售人员才能使用本模块。
4.创建数据库
在本系统中,需要掌握汽车的基本信息、每次汽车进货信息、每次汽车销售信息,此外,由于要进行用户管理,还需要掌握使用本系统的用户,各种数据表如图2,3,4,5所示
图2 用户信息表-userlist
汽车销售管理系统 用户登录
管理人员 仓管人员
销售人员
用户管理模块 销售信息管理模块 汽车信息管理模块 进货信息管理模块
图3 汽车信息表-products
图4 销售信息表-sell
图5 进货信息表-stock
为了数据库的规范化的设计理念,3个表之间的关系如图6所示的关系图。
·products表中的“汽车名称”字段和sell表中的“商品名称”形成一对多的参照完整性
·products表中的“商品名称”字段和stock表中的“商品名称”字段形成一对多的参照完整性
图6 表之间的关系
5.创建登录窗体模块
5.1窗体模块的功能
该系统是一个基于不同用户的系统,在本系统中有3类不同的用户:管理人员、仓管人员、销售人员。
因此,在系统启动时,需要一个登录窗口,已选择不同的身份登录,然后根据不同的身份来显示不同的功能。
5.2 主界面的设计
图7 主界面
5.3 工作流程或者方式
系统运行时,首先出现主界面。
当点击“登录”按钮后,出现登录窗体。
由于登录窗体时一个面向多用户的系统,不同的用户在使用系统时,将会拥有不同的功能。
登录窗体的作用就是确定当前使用系统的用户类型。
当窗体运行时,用户首先要在用户名和密码这两个文本框中输入相应的用户名和密码,然后在身份组合框中选择不同的身份。
单击“确定”按钮即可进入主窗体。
登录界面如图8所示。
图8 登录界面
5.4 部分代码如下:
“确定”按钮的部分代码:
Private Sub cmdOK_Click()
On Error GoTo errHandler
Set gConn = New ADODB.Connection
gConn.Open "yyxs", "teamo"
Dim user As String, pwd As String
user = txtUser
pwd = txtPwd
gnUserType = cboUserType.ListIndex
gsUserName = user
Dim strSQL As String
strSQL = "select * from userlist where 用户名='" & user & "'and 用户密码='" & pwd & "'and 用户类型=" & gnUserType
Dim r As New ADODB.Recordset
r.Open strSQL, gConn, adOpenStatic
Static nTryCount As Integer
If r.EOF Then
MsgBox "对不起,无此用户或者密码不正确!请重新输入!!!", vbCritical, "错误"
txtUser.SetFocus
txtUser.SelStart = 0
txtUser.SelLength = Len(txtUser)
nTryCount = nTryCount + 1
If nTryCount >= 3 Then
MsgBox "您无权操作本系统!再见!", vbCritical, "无权限"
Unload Me
gConn.Close
End If
Else
Unload Me
frmMain.Show
End If
r.Close
Exit Sub
errHandler:
MsgBox Err.Description, vbCritical, "错误"
End Sub
身份选择组合框的代码如下:
Private Sub Form_Load()
cboUserType.Clear
cboUserType.AddItem "管理人员", 0
cboUserType.AddItem "仓管人员", 1
cboUserType.AddItem "销售人员", 2
cboUserType.ListIndex = 0
End Sub
6.主窗体的设计
6.1 窗体模块的功能
如果用户通过登录窗体登录了本系统,将会出现如图9,10,11所示的主窗体界面。
该窗体是为整个系统中的窗体提供一个统一管理的环境。
其中设计了菜单,不同的菜单对应不同的系统功能;根据不同的用户身份,将会显示不同的菜单,这样就实现了使功能随用户的不同而不同的设计思路。
6.2 工作流程
该窗体被作为系统中众多窗体的父窗体,其主要功能是提供用户所要使用的菜单项,不同身份的用户,其所能使用的菜单项也是不同的。
(1)以管理人员登录的界面显示,如图9所示
图9
(2)以仓管人员登录的界面显示,如图10所示
图10
(3)以销售人员登录的界面显示,如图11所示
图11
(4)密码或用户名输入错误的界面如图12所示
图12
6.3 部分代码
(1)主窗体Load事件的代码
Private Sub Form_Load()
On Err GoTo errHandler
Me.Left = GetSetting(App.Title, "Settings", "MainLeft", 1000) Me.Top = GetSetting(App.Title, "Settings", "MainTop", 1000) Me.Width = GetSetting(App.Title, "Settings", "MainWidth", 6500) Me.Height = GetSetting(App.Title, "Settings", "MainHeight", 6500)
Select Case gnUserType
Case 0:
mnuSystem.Visible = True
mnuProduct.Visible = True
mnuStock.Visible = True
mnuSell.Visible = True
mnuHelp.Visible = True
Case 1:
mnuSystem.Visible = False
mnuProduct.Visible = False
mnuStock.Visible = True
mnuSell.Visible = False
mnuHelp.Visible = True
Case 2:
mnuSystem.Visible = False
mnuProduct.Visible = False
mnuStock.Visible = False
mnuSell.Visible = True
mnuHelp.Visible = True
End Select
Exit Sub
errHandler:
MsgBox Err.Description, vbCritical, "错误"
End Sub
(2)各菜单项的代码
Private Sub mnuProductAdd_Click()
frmProduct.mbAddMode = True
frmProduct.Show vbModal
End Sub
Private Sub mnuProductChart_Click()
Dim rs As New ADODB.Recordset
rs.Open "select * from products", gConn, adOpenStatic
Load frmChart
frmChart.Caption = "当前汽车的库存状态"
Dim arr()
ReDim arr(1 To rs.RecordCount, 1 To 2)
Dim i As Integer
i = 1
rs.MoveFirst
Dim str As String
While Not rs.EOF
str = Trim(rs("汽车名称"))
arr(i, 1) = "" & str & ""
arr(i, 2) = rs("库存数量")
i = i + 1
rs.MoveNext
Wend
With frmChart.charReport
.Title = "当前汽车的库存状态"
.ChartData = arr
End With
rs.Close
frmChart.Show vbModal
End Sub
Private Sub mnuProductFind_Click() mnuProductList_Click
frmProductList.cmdFind.Value = True
End Sub
Private Sub mnuProductList_Click()
Load frmProductList
frmProductList.SQL = "select * from products" frmProductList.Show
End Sub
Private Sub mnuSellAdd_Click()
frmSell.mbAddMode = True
frmSell.Show vbModal
End Sub
Private Sub mnuSellFind_Click() mnuSellList_Click
frmSellList.cmdFind.Value = True
End Sub
Private Sub mnuSellList_Click()
Load frmSellList
frmSellList.SQL = "select * from sell"
frmSellList.Show
End Sub
Private Sub mnuStockAdd_Click()
frmStock.mbAddMode = True
frmStock.Show vbModal
End Sub
Private Sub mnuStockFind_Click()
mnuStockList_Click
frmStockList.cmdFind.Value = True
End Sub
Private Sub mnuStockList_Click()
Load frmStockList
frmStockList.SQL = "select * from stock"
frmStockList.Show
End Sub
Private Sub mnuSystemExit_Click()
Unload Me
End Sub
Private Sub mnuSystemLogin_Click()
Unload Me
frmLogin.Show
End Sub
Private Sub mnuSystemUser_Click()
frmUser.Show
End Sub
7.用户管理模块
7.1 窗体模块的功能
用户管理模块有3个窗体组成:用户管理主窗体、密码窗体和用户身份选择窗体。
用户管理主窗体用于显示用户列表,供用户选择下一步操作;密码窗体用于添加用户时输入用户密码,或者用于变更当前用户的秘密;用户身份选择窗体用于添加用户时选择用户身份,或用于变更当前的用户身份。
7.2 窗体工作流程
用户管理模块有几个窗体所共同组成,其流程如图13所示
图13 用户管理模块的流程
7.3 窗体显示界面
(1)用户管理界面如图14所示
图14
(2)密码窗体如图15 显示用户列表 输入用户名 选择用户类型 更改用户类型
输入密码 添加用户 删除用户 选择用户
修改用户 添加用户成功
图15 图16(3)用户类型窗体如图16
7.4 部分代码
a 用户管理代码
Private Sub cboUserType_Click()
On Error GoTo errHandler
lstUser.Clear
Dim str As String
Select Case cboUserType.ListIndex
Case 0, 1, 2:
str = "select * from userlist where 用户类型=" & cboUserType.ListIndex Case Else:
str = "select * from userlist"
End Select
Dim rs As New ADODB.Recordset
rs.Open str, gConn, adOpenStatic
While Not rs.EOF
lstUser.AddItem rs("用户名"), 0
lstUser.ItemData(0) = rs("用户类型")
rs.MoveNext
Wend
rs.Close
Exit Sub
errHandler:
MsgBox Err.Description, vbCritical, "错误"
End Sub
Private Sub cmdAddUser_Click()
On Error GoTo errHandler
Dim strUser As String
Dim strPwd As String
Dim nType As Integer
getUser:
strUser = InputBox("请输入所要新建的用户的名称:", "用户名")
If strUser = "" Then Exit Sub
Dim rs As New ADODB.Recordset
rs.Open "select * from userlist where 用户名='" & strUser & "'", gConn, adOpenStatic
If Not rs.EOF Then
MsgBox "该用户名已经存在!", vbCritical, "用户名重复"
GoTo getUser
End If
rs.Close
getPwd:
frmPassword.Show vbModal
strPwd = frmPassword.txtPwd(0).Text
Unload frmPassword
If strPwd = "" Then
MsgBox "必须输入密码!", vbCritical, "需要密码"
GoTo getPwd
End If
getType:
frmUserType.Show vbModal
nType = frmUserType.mmUserType
Unload frmUserType
If nType < 0 Then
MsgBox "必须选择用户类型!", vbCritical, "选择用户类型"
GoTo getType
End If
gConn.Execute "insert into userlist(用户名,用户密码,用户类型) values('" & strUser & "','" & strPwd & "'," & nType & ")"
Exit Sub
errHandler:
MsgBox Err.Description, vbCritical, "错误"
End Sub
Private Sub cmdChangePwd_Click()
On Error GoTo errHandler
If lstUser.Text = "" Then Exit Sub
frmPassword.Show vbModal
If frmPassword.txtPwd(0).Text <> "" Then
gConn.Execute "update userlist set 用户密码='" & frmPassword.txtPwd(0).Text & "' where 用户名='" & lstUser.Text & "'"
End If
Unload frmPassword
Exit Sub
errHandler:
MsgBox Err.Description, vbCritical, "错误"
End Sub
Private Sub cmdChangeType_Click()
On Error GoTo errHandler
If lstUser.Text = "" Then Exit Sub
Load frmUserType
frmUserType.optUserType(lstUser.ItemData(lstUser.ListIndex)).Value = True
frmUserType.Show vbModal
If frmUserType.mnUserType >= 0 Then
gConn.Execute "update userlist set 用户类型=" & frmUserType.mnUserType & "where 用户名='" & lstUser.Text & "'"
End If
Unload frmUserType
Exit Sub
errHandler:
MsgBox Err.Description, vbCritical, "错误"
End Sub
Private Sub cmdClose_Click()
Unload Me
End Sub
Private Sub cmdDeleteUser_Click()
On Error GoTo errHandler
If lstUser.Text = "" Then Exit Sub
If lstUser.Text = gsUserName Then
MsgBox "不能删除当前记录!", vbCritical, "删除用户错误"
Exit Sub
End If
gConn.Execute "delete from userlist where 用户名='" & lstUser.Text & "'"
lstUser.RemoveItem lstUser.ListIndex
Exit Sub
errHandler:
MsgBox Err.Description, vbCritical, "错误"
End Sub
b 密码窗体代码
c 用户身份选择窗体代码
Private Sub cmdCancel_Click()
mnUserType = -1
Me.Hide
End Sub
Private Sub cmdOK_Click()
Me.Hide
End Sub
Private Sub Form_Load()
optUserType(0).Value = True
mnUserType = -1
End Sub
Private Sub optUserType_Click(Index As Integer)
mnUserType = Index
End Sub
8. 汽车信息管理模块
8.1 窗体模块的功能
在汽车信息管理模块中,包含3个窗体:汽车信息列表窗体、汽车信息编辑窗体和显示库存数量的窗体。
汽车信息列表窗体以表格的形式列出当前系统中的汽车信息,并且为用户提供了进行各种操作的接口;汽车信息编辑窗体用于显示某一个汽车的基本信息,借助该窗体可以对某个汽车信息进行编辑,也可以向数据库增加一个汽车信息;显示库存数量的窗体主要是借助图形方式显示出汽车当前的数量。
8.2 窗体工作流程
图17 汽车信息管理模块的子功能
8.3 窗体界面显示
(1)汽车信息列表窗体
图18 (2)汽车信息编辑窗体
图19
(3)显示库存数量窗体
图20
8.4 部分代码
A 汽车信息列表窗体代码
Private Sub cmdDelete_Click()
On Error GoTo errHandler
Dim l As Long
l = grdList.TextMatrix(grdList.Row, 1)
gConn.Execute "delete from products where 顺序号=" & l
Unload Me
Load Me
Me.SQL = "select * from products"
Me.Show
Exit Sub
errHandler:
MsgBox Err.Description, vbCritical, "错误"
End Sub
Private Sub cmdEdit_Click()
On Error GoTo errHandler
frmProduct.mnSerial = CLng(grdList.TextMatrix(grdList.Row, 1)) frmProduct.mbAddMode = False
frmProduct.Show
Exit Sub
errHandler:
MsgBox Err.Description, vbCritical, "错误"
End Sub
Private Sub cmdFind_Click()
frmFind.SQL = mRs.Source
frmFind.Show vbModal
If Trim(frmFind.msResultSQL) = "" Then Exit Sub
Unload Me
Load Me
Me.SQL = "select * from products where" & frmFind.msResultSQL Me.Show
Unload frmFind
End Sub
Private Sub cmdReport_Click()
If mRs.EOF And mRs.EOF Then
MsgBox "当前没有任何记录!", vbExclamation, "错误"
Exit Sub
End If
Load frmChart
frmChart.Caption = "当前汽车的库存状态"
Dim arr()
ReDim arr(1 To mRs.RecordCount, 1 To 2)
Dim i As Integer
i = 1
mRs.MoveFirst
Dim str As String
While Not mRs.EOF
str = Trim(mRs("汽车名称"))
arr(i, 1) = "" & str & ""
arr(i, 2) = mRs("库存数量")
i = i + 1
mRs.MoveNext
Wend
With frmChart.charReport
.Title = "当前的库存汽车的剩余价值"
.ChartData = arr
End With
frmChart.Show vbModal
End Sub
Private Sub cmdShowAll_Click()
Unload Me
Load Me
Me.SQL = "select * from products"
Me.Show
End Sub
Private Sub Form_Load()
Set mRs = New ADODB.Recordset
Dim i As Integer
With grdList
.Cols = 7
.TextMatrix(0, 1) = ""
.TextMatrix(0, 2) = "汽车名称"
.TextMatrix(0, 3) = "汽车规格"
.TextMatrix(0, 4) = "汽车单位"
.TextMatrix(0, 5) = "备注信息"
.TextMatrix(0, 6) = "库存数量"
.FixedRows = 1
For i = 0 To .Cols - 1
.ColAlignment(i) = 0
Next i
.FillStyle = flexFillRepeat
.Col = 0
.Row = 0
.RowSel = 1
.ColSel = .Cols - 1
.CellAlignment = 4
.ColWidth(0) = 100
.ColWidth(1) = 0
.ColWidth(2) = 1000
.ColWidth(3) = 1000
.ColWidth(4) = 1000
.ColWidth(5) = 1000
.ColWidth(6) = 1000
.Row = 1
End With
End Sub
(2)汽车信息编辑窗体代码
Private Sub cmdCancel_Click()
If mbChange And cmdOK.Enabled Then
If MsgBox("保存当前记录的变化吗?", vbOKCancel + vbExclamation, "警告") = vbOK Then Call cmdOK_Click
End If
End If
Unload Me
Unload frmProductList
Load frmProductList
frmProductList.SQL = "select * from products"
frmProductList.Show
End Sub
Private Sub cmdOK_Click()
Dim strMsg As String
Dim rs As ADODB.Recordset
Dim strSQL As String
Dim i As Integer
For i = 0 To 2
If Trim(txtIntem(i) & "") = "" Then
Select Case i
Case 0
strMsg = "汽车名称"
Case 1
strMsg = "汽车规格"
Case 2
strMsg = "计量单位"
End Select
strMsg = strMsg & "不能为空!"
MsgBox strMsg, vbOKOnly + vbExclamation, "警告"
txtIntem(i).SetFocus
Exit Sub
End If
Next i
Set rs = New ADODB.Recordset
If mbAddMode Then
strSQL = "select * from products where 汽车名称='" & Trim(txtIntem(0)) & "'and 汽车规格='" & Trim(txtIntem(i)) & "'"
rs.Open strSQL, gConn, adOpenStatic
If Not rs.EOF Then
MsgBox "已经存在相同内容的记录!", vbOKOnly + vbExclamation, "警告"
txtIntem(0).SetFocus
rs.Close
Exit Sub
End If
rs.Close
Else
strSQL = "delete from products where 顺序号=" & Trim(mnSerial)
gConn.Execute strSQL
End If
strSQL = "select * from products"
rs.Open strSQL, gConn, adOpenDynamic, adLockOptimistic
rs.AddNew
For i = 0 To rs.Fields.Count - 2
rs.Fields(i + 1) = txtIntem(i)
Next i
rs.Update
rs.Close
If mbAddMode Then
mbChange = False
MsgBox "添加汽车信息成功!继续添加下一条汽车信息", vbOKOnly + vbExclamation, "添加汽车信息"
Unload Me
Me.Show vbModal
Else
Unload Me
frmProductList.SQL = "select * from products"
frmProductList.Show
End If
End Sub
Private Sub Form_Load()
Dim strSQL As String
Dim i As Integer
Dim rs As New ADODB.Recordset
If mbAddMode Then
Me.Caption = Me.Caption & "添加"
Else
strSQL = "select * from products where 顺序号='" & Trim(frmProductList.grdList.TextMatrix(frmProductList.grdList.Row, 1)) & "'"
rs.Open strSQL, gConn, adOpenKeyset
If rs.EOF = False Then
With rs
mnSerial = .Fields(0)
For i = 0 To .Fields.Count - 2
If Not IsNull(.Fields(i + 1)) Then
txtIntem(i) = .Fields(i + 1)
End If
Next i
End With
End If
rs.Close
Me.Caption = Me.Caption & "修改"
End If
mbChange = False
End Sub
Private Sub txtIntem_Change(Index As Integer)
mbChange = True
End Sub
Private Sub txtIntem_GotFocus(Index As Integer)
txtIntem(Index).SelStart = 0
txtIntem(Index).SelLength = Len(txtIntem(Index))
End Sub
(3)显示库存数量的窗体代码
Private Sub Form_Resize()
charReport.Left = 0
charReport.Top = 0
charReport.Height = Me.ScaleHeight
charReport.Width = Me.ScaleWidth
End Sub
9. 进货信息管理模块
9.1 窗体模块的功能
在该模块中,包含两个窗体:进货信息列表窗体和进货信息编辑窗体。
进货信息列表窗体以表格形式列出当前系统中的进货信息,并且提供了进行各种操作的接口;进货信息编辑窗体用于显示某一次进货的信息,借助该窗体可以对某次进货的信息进行编辑,也可以向数据库增加进货信息。
9.2 工作流程
该模块所包含的功能如图21所示。
图21 进货信息管理模块的子功能
9.3 窗体界面设计
(1)进货信息列表窗体,如图22
图22
查找 删除 进货信息列表
编辑 添加 进货信息编辑窗体
(2)进货信息编辑窗体,如图23
图23
9.4 部分代码
A 进货信息列表窗体代码
Private Sub cmdAdd_Click()
frmStock.mbAddMode = True
frmStock.Show vbModal
End Sub
Private Sub cmdDelete_Click()
On Error GoTo errHandler
Dim l As Long
l = grdList.TextMatrix(grdList.Row, 1)
gConn.Execute "delete from stock where 顺序号=" & l Unload Me
Load Me
Me.SQL = "select * from stock"
Me.Show
Exit Sub
errHandler:
MsgBox Err.Description, vbCritical, "错误"
End Sub
Private Sub cmdEdit_Click()
frmStock.mnSerial = CLng(grdList.TextMatrix(grdList.Row, 1)) frmStock.mbAddMode = True
frmStock.Show vbModal
End Sub
Private Sub cmdFind_Click()
frmFind.SQL = mRs.Source
frmFind.Show vbModal
Unload Me
Load Me
If Trim(frmFind.msResultSQL) <> "" Then
Me.SQL = "select * from stock where" & frmFind.msResultSQL End If
Me.Show
Unload frmFind
End Sub
Private Sub cmdShowAll_Click()
Unload Me
Load Me
Me.SQL = "select * from stock"
Me.Show
End Sub
Private Sub Form_Load()
Dim i As Integer
With grdList
.Cols = 8
.TextMatrix(0, 1) = ""
.TextMatrix(0, 2) = "汽车名称"
.TextMatrix(0, 3) = "供应商名称"
.TextMatrix(0, 4) = "进货数量"
.TextMatrix(0, 5) = "商品单价"
.TextMatrix(0, 6) = "进货日期"
.TextMatrix(0, 7) = "备注"
.FixedRows = 1
For i = 0 To .Cols - 1
.ColAlignment(i) = 0
Next i
.FillStyle = flexFillRepeat
.Col = 0
.Row = 0
.RowSel = 1
.ColSel = .Cols - 1
.CellAlignment = 4
.ColWidth(0) = 100
.ColWidth(1) = 0
.ColWidth(2) = 1000
.ColWidth(3) = 1000
.ColWidth(4) = 1000
.ColWidth(5) = 1000
.ColWidth(6) = 1000
.ColWidth(7) = 1000
.Row = 1
End With
Set mRs = New ADODB.Recordset
End Sub
Private Sub Form_Resize()
fraManage.Left = (Me.ScaleWidth - fraManage.Width) / 2
fraManage.Top = Me.ScaleHeight - 200 - fraManage.Height
grdList.Top = 200
grdList.Width = Me.ScaleWidth - 200
grdList.Left = Me.ScaleLeft + 100
grdList.Height = Me.ScaleHeight - fraManage.Height - grdList.Top - 200
End Sub
Private Sub Form_Unload(Cancel As Integer)
If mRs.State <> adStateClosed Then mRs.Close
End Sub
B 进货信息编辑窗体代码
Private Sub cmdCancel_Click()
If mbChange Then
If MsgBox("保存当前记录的变化吗?", vbOKCancel + vbExclamation, "警告") = vbOK Then Call cmdOK_Click
End If
End If
Unload Me
Unload frmStockList
Load frmStockList
frmStockList.SQL = "select * from stock"
frmStockList.Show
End Sub
Private Sub cmdOK_Click()
On Error GoTo errHandler
If txtIntem(3).Text = "" Then
MsgBox "字段不能为空,而且只能输入数字", vbCritical, "错误"
End If
If txtIntem(4).Text = "" Then
MsgBox "字段不能为空,而且只能输入数字", vbCritical, "错误"
End If
If Trim(cboItem) = "" Then
MsgBox "必须选择汽车名称", vbCritical, "错误"
cboItem.SetFocus
Exit Sub
End If
If Not IsDate(Trim(txtIntem(5))) Then
MsgBox "请输入正确的日期格式!", vbOKOnly + vbExclamation, "警告"
txtIntem(5).SetFocus
Exit Sub
End If
If Not mbAddMode Then
gConn.Execute "delete from stock where 顺序号='" & mnSerial & "'" End If
Dim rs As New ADODB.Recordset
rs.Open "select * from stock", gConn, adOpenDynamic, adLockOptimistic
rs.AddNew
rs("汽车名称") = cboItem.Text
Dim i As Integer
For i = txtIntem.LBound To txtIntem.UBound
rs.Fields(i).Value = txtIntem(i)
Next i
rs.Update
rs.Close
mnQuantity = CInt(txtIntem(3)) - mnQuantity
gConn.Execute "update products set 库存数量=库存数量+" & mnQuantity & "where 汽车名称='" & cboItem.Text & "'"
If mbAddMode Then
mbChange = True
MsgBox "添加进货信息成功!继续添加下一条进货信息", vbOKOnly + vbExclamation, "添加进货信息"
Unload Me
Me.Show vbModal
Else
Unload Me
frmStockList.SQL = "select * from stock"
frmStockList.Show
End If
Exit Sub
errHandler:
MsgBox Err.Description, vbCritical, "错误"
End Sub
Private Sub Form_Load()
On Error GoTo errHandler
Dim rs As New ADODB.Recordset
rs.Open "select distinct 汽车名称from products", gConn, adOpenKeyset
If Not rs.EOF Then
cboItem.Clear
Do While Not rs.EOF
cboItem.AddItem rs("汽车名称")
rs.MoveNext
Loop
Else
MsgBox "当前数据库不包含任何的汽车信息。
请先设置汽车信息!", vbOKOnly + vbExclamation, "警告"
Exit Sub
End If
rs.Close
If mbAddMode Then
Me.Caption = Me.Caption & "添加"
txtIntem(5) = Format(Date, "yyyy-mm-dd")
txtIntem(3) = 0
txtIntem(4) = 10
mnQuantity = 0
Else
Me.Caption = Me.Caption & "修改"
rs.Open "select * from stock where 顺序号=" & mnSerial
If Not rs.EOF Then
cboItem.Text = rs("汽车名称")
Dim i As Integer
For i = txtIntem.LBound To txtIntem.UBound
txtIntem(i) = rs.Fields(i).Value
Next i
End If
mnQuantity = rs("进货数量")
rs.Close
End If
mbChange = False
Exit Sub
errHandler:
MsgBox Err.Description, vbCritical, "错误"
End Sub
Private Sub txtIntem_Change(Index As Integer)
mbChange = True
End Sub
Private Sub txtIntem_GotFocus(Index As Integer)
txtIntem(Index).SelStart = 0
txtIntem(Index).SelLength = Len(txtIntem(Index))
End Sub
10. 销售信息管理模块
10.1窗体模块的功能
在该模块中,包含两个窗体:销售信息列表窗体、销售信息编辑窗体。
销售信息列表窗体以表格的形式列出系统中的销售信息,并且为用户提供了进行各种操作的接口;销售信息编辑窗体用于某一次销售的信息,借助该窗体可以对某次销售的信息进行编辑,也可以向数据库增加一个销售信息。
10.2 工作流程
该模块所包含的功能如图24所示。
图24 销售信息管理模块的子功能
10.3 窗体界面设计
(1)销售信息列表窗体,如图25
图25
(2)销售信息编辑窗体如图26
10.4 窗体设计代码
A 销售信息列表窗体代码
销售信息编辑窗体 编辑 添加 销售信息列表 删除 查找
图26
Private Sub cmdAdd_Click()
frmSell.mbAddMode = True
frmSell.Show vbModal
End Sub
Private Sub cmdDelete_Click()
On Error GoTo errHandler
Dim l As Long
l = grdList.TextMatrix(grdList.Row, 1)
gConn.Execute "delete from sell where 顺序号=" & l Unload Me
Load Me
Me.SQL = "select * from sell"
Me.Show
Exit Sub
errHandler:
MsgBox Err.Description, vbCritical, "错误"
End Sub
Private Sub cmdEdit_Click()
frmSell.mnSerial = CLng(grdList.TextMatrix(grdList.Row, 1))
frmSell.mbAddMode = True
frmSell.Show vbModal
End Sub
Private Sub cmdFind_Click()
frmFind.SQL = mRs.Source
frmFind.Show vbModal
Unload Me
Load Me
If Trim(frmFind.msResultSQL) <> "" Then
Me.SQL = "select * from sell where" & frmFind.msResultSQL End If
Me.Show
Unload frmFind
End Sub
Private Sub cmdShowAll_Click()
Unload Me
Load Me
Me.SQL = "select * from sell"
Me.Show
End Sub
Private Sub Form_Load()
Dim i As Integer
With grdList
.Cols = 8
.TextMatrix(0, 1) = ""
.TextMatrix(0, 2) = "汽车名称"
.TextMatrix(0, 3) = "顾客名称"
.TextMatrix(0, 4) = "购买数量"
.TextMatrix(0, 5) = "售出价格"
.TextMatrix(0, 6) = "销售日期"
.TextMatrix(0, 7) = "备注"
.FixedRows = 1
For i = 0 To .Cols - 1
.ColAlignment(i) = 0
Next i
.FillStyle = flexFillRepeat
.Col = 0
.Row = 0
.RowSel = 1
.ColSel = .Cols - 1
.CellAlignment = 4
.ColWidth(0) = 100
.ColWidth(1) = 0
.ColWidth(2) = 1000
.ColWidth(3) = 1000
.ColWidth(4) = 1000
.ColWidth(5) = 1000
.ColWidth(6) = 1000
.ColWidth(7) = 1000
.Row = 1
End With
Set mRs = New ADODB.Recordset
End Sub
Private Sub Form_Resize()
fraManage.Left = (Me.ScaleWidth - fraManage.Width) / 2
fraManage.Top = Me.ScaleHeight - 200 - fraManage.Height
grdList.Top = 200
grdList.Width = Me.ScaleWidth - 200
grdList.Left = Me.ScaleLeft + 100
End Sub
Private Sub Form_Unload(Cancel As Integer)
If mRs.State <> adStateClosed Then mRs.Close
End Sub
(2)销售信息编辑窗体代码
Private Sub cmdCancel_Click()
If mbChange Then
If MsgBox("保存当前记录的变化吗?", vbOKCancel + vbExclamation, "警告") = vbOK Then
Call cmdOK_Click
End If
End If
Unload Me
Unload frmSellList
Load frmSellList
frmSellList.SQL = "select * from sell"
frmSellList.Show
End Sub
Private Sub cmdOK_Click()
On Error GoTo errHandler
If txtIntem(3).Text = "" Then
MsgBox "字段不能为空,而且只能输入数字", vbCritical, "错误"
End If
If txtIntem(4).Text = "" Then
MsgBox "字段不能为空,而且只能输入数字", vbCritical, "错误"
End If
If Trim(cboItem) = "" Then
MsgBox "必须选择汽车名称", vbCritical, "错误"
cboItem.SetFocus
Exit Sub
End If
If Not IsDate(Trim(txtIntem(5))) Then
MsgBox "请输入正确的日期格式!", vbOKOnly + vbExclamation, "警告"
txtIntem(5).SetFocus
Exit Sub
End If
If Not mbAddMode Then
gConn.Execute "delete from sell where 顺序号='" & mnSerial & "'"
End If
Dim rs As New ADODB.Recordset
rs.Open "select * from sell", gConn, adOpenDynamic, adLockOptimistic
rs.AddNew
rs("汽车名称") = cboItem.Text
Dim i As Integer
For i = txtIntem.LBound To txtIntem.UBound
rs.Fields(i).Value = txtIntem(i)
Next i
rs.Update
rs.Close
mnQuantity = CInt(txtIntem(3)) - mnQuantity
gConn.Execute "update products set 库存数量=库存数量-" & mnQuantity & " where 汽车名称='" & cboItem.Text & "'"
If mbAddMode Then
mbChange = False
MsgBox "添加进货信息成功!继续添加下一条进货信息", vbOKOnly + vbExclamation, "添加进货信息"
Unload Me
Me.Show vbModal
Else
Unload Me
frmSellList.SQL = "select * from sell"
frmSellList.Show
End If
Exit Sub
errHandler:
MsgBox Err.Description, vbCritical, "错误"
End Sub
Private Sub Form_Load()
On Error GoTo errHandler
Dim rs As New ADODB.Recordset
rs.Open "select distinct 汽车名称from products", gConn, adOpenKeyset
If Not rs.EOF Then
cboItem.Clear
Do While Not rs.EOF
cboItem.AddItem rs("汽车名称")
rs.MoveNext
Loop
Else
MsgBox "当前数据库不包含任何的汽车信息。
请先设置汽车信息!", vbOKOnly + vbExclamation, "警告"
Exit Sub
End If
rs.Close
If mbAddMode Then
Me.Caption = Me.Caption & "添加"
txtIntem(5) = Format(Date, "yyyy-mm-dd")
txtIntem(3) = 0
txtIntem(4) = 10
mnQuantity = 0
Else
Me.Caption = Me.Caption & "修改"
rs.Open "select * from sell where 顺序号=" & mnSerial
If Not rs.EOF Then
cboItem.Text = rs("汽车名称")。