资源描述
汽车销售管理系统设计实现与汽车4S店管理系统应用
一、绪论
摘要:
本系统是为解决汽车销售公司管理问题而设计。随着经济发展和国内汽车市场不断扩大,某汽车销售公司定单成倍增长,各项业务更加细化,各部门分工更加明确。而当前人工管理方式显然已是不符合当代公司管理规定。
基于整体考虑,本次课程设计任务就是设计一种管理系统,运用计算机来代替人工操作。减轻了员工劳动强度,提高了劳动质量和效率,减少了错误发生。
本次设计,从需求分析,概念设计,逻辑设计,物理设计,到数据库建立、运营,再到数据库安全维护等各个方面进行了详细分析设计。并且值得一提是,我认真分析了公司业务需求,公司重要职责和重要构造等信息,从而保证了设计出比较符合公司需要管理系统。
1.1 系统简介
《智百盛汽车销售管理系统》是针对汽车销售行业业务特点,专为汽车销售公司设计制作。咱们根据当代科学管理理念,集国内外先进管理思想,并结合自身近年积累开发经验和大量市场调研,在高度集成、操作简朴、以便管理、使用灵活等原则指引下精心研发一款软件。
该软件重要涉及客户关系管理、进车管理、库存管理、售车管理、代办管理、财务管理、报表分析、系统管理等模块。软件价格低廉,功能强大,维护简朴,无论中、小型公司,耗费很少投资,可以迅速得到公司全面信息化管理应用。
l 智百盛汽车销售管理系统7.5紧密结合当今汽销模式,为汽销公司提供了全面信息管理功能。是广大汽车经销商、汽车特许专营店等顾客先进计算机管理方案。满足各级部门对工作需求,如总经理、销售经理、销售人员、会计、出纳、筹划员、库管员等,是汽车销售公司最佳管理利器。
·集汽销公司进、销、存、财管理于一体。
·所有单据和报表均支持底盘号、发动机号、合格证号等显示、查询和打印。
·先进万能查询功能。
·支持顾客自定义报表。
·所有单据和表格可以导出至Excel、Word、HTML、TXT格式文献。
·严谨权限设立,不但可以定义菜单权限,还可以定义详细操作权限。
·实用多帐套管理。
·操作简朴、极易上手,不必专业培训,会用键盘鼠标即会使用。
《智百盛汽车销售管理系统》采用了大量最新技术,进一步完善了业务管理功能,整个产品在管理功能、易用性、数据容量、数据安全性等方面均有了很大提高。
二、系统需求分析
本系统设计模仿普通医院汽车销售管理系统内容,通过充分系统分析和调研,本系统重要涉及信息有3类:汽车商品信息、汽车进货信息以及汽车销售信息。
在老式销售管理工作中,往往是用人工清点方式来掌握仓库中汽车商品、使用手工记账方式来掌握商品进货和销售状况。这种方式在数量较少、库存变换少状况下,不失为一种好办法。但是,随着每天所发生进货和销售状况纷繁复杂,如果借助人工来记录和管理,将会耗费大量时间,并且容易浮现错误,导致管理上混乱。
详细而言,汽车销售管理系统需要实现一下需求:
(1) 可以对医院过拥有各种汽车基本信息进行维护和管理。汽车基本信息涉及:汽车顺序号、汽车名称、汽车规格、计量单位、备注信息、库存数量等。系统需要可以对汽车信息进行添加、修改和删除,也可以以图形方式显示浮现汽车库存数量比较。
(2) 跟踪各种汽车进货信息。汽车进货信息涉及顺序号、汽车名称、进货数量、进货价格、进货日期、备注等。系统还需要可以对进货信息进行添加、修改和删除,也可以按照一定条件来进行查询。
(3) 跟踪各种汽车销售信息。汽车销售信息涉及顺序号、汽车名称、顾客名称、购买数量、售出价格、销售日期、备注等。系统需要可以对销售信息进行添加、修改和删除,也可以按照一定条件来进行查询。
三、 界面设计
设计主界面美观,以便实用:
四、概念构造设计
本阶段重要任务是将需求分析得到顾客需求抽象为信息构造构造(即概念模型)
设计概念构造普通有四类办法:自顶向下、自底向上、逐渐扩张和混合方略。我在这里采用自底向上办法。
概念设计成果如下:
(某公司轿车销售管理系统基本E-R图)
五、逻辑构造设计
逻辑构造设计任务就是把概念构造设计阶段设计好基本E-R图转换为与sql所支持数据模型相符合逻辑构造。
1.E-R图向关系模型转换
由概念设计E-R图可得普通关系模型如下
厂商(厂商号,厂商名,地址,电话,信用度)
客户(客户号,客户名,地址,电话,信用度)
发货单(货单号,细节号,产品号,客户号,数量,日期,金额,折扣)
收款单(客户号,定单号,收据号,收款金额,收款日期)
定单(定单号,细节号,产品号,厂商号,数量,日期,金额)
付款(厂商号,定单号,发票号,支付金额,支付日期)
顾客(顾客ID,顾客名,密码,顾客类型,权限)
员工(员工号,姓名,性别,部门,职务,电话)
产品(产品号,产品名,厂商号,单价,库存量)
2.数据模型优化
数据库逻辑设计成果不是唯一.为进一步提高数据库应用系统性能,咱们还应当依照应用需要恰当修改,调节数据模型构造,这就是数据模型优化。
(1) 数据依赖举例
R厂商={厂商号->厂商名,厂商号->地址,厂商号->电话}
R顾客={顾客ID->顾客名,顾客ID->密码,顾客ID->顾客类型,顾客ID->权限,顾客类型->权限}
(2) 对数据依赖进行极小化解决,消除冗余联系举例
上述关系中,发货单中存在冗余联系(详细是细节号、折扣等),因而咱们可以增长一种发货细节单和折扣规则单。
(3) 按照数据依赖理论对关系模式逐个进行分析,考察与否存在某些函数依赖,传递函数依赖,多值依赖等,拟定各关系分别属于第几范式举例
上述关系中,顾客表存在非主属性传递依赖,因而顾客表属于2NF。咱们可以增长一种顾客权限表来消除该表中非主属性传递依赖。
3. 逻辑设计最后成果如下:
(UserType表)
(Users表)
(Staff表)
(共13个表,其她截图略)
六、系统构造设计
1.在关系模式存取办法选取之前,咱们一方面要对要运营事务进行详细分析,获得选取物理数据库设计所需要参数。同步,还要懂得每个事务在各关系上运营频率和性能规定。
(1) 对于数据库查询事务,咱们需要得到如下信息:查询关系、查询条件/连接条件涉及属性、查询投影属性
A、查询发货厂商名、产品、发货数量(>100)和日期事务
Ⅰ、查询关系:厂商表、发货单表、产品表
Ⅱ、查询条件所涉及属性:厂商号、发货数量、产品号
III、连接条件所涉及属性:厂商号、产品号
IV、查询投影属性:厂商名、产品名、发货数量、发货日期
(2) 对于数据更新事务,咱们需要得到如下信息:被更新关系、每个关系上更新操作条件涉及属性、修改操作要变化属性值
B、对发货事务
Ⅰ、被更新关系:发货表
Ⅱ、每个关系上更新操作条件所涉及属性:无
III、需要改属性值:货单号、产品号、发货数量、发货日期
2. 关系模式存取办法选取(即建立哪些存储途径)
C、对carsale建立索引
对厂商表上厂商号、发货表产品号、产品表产品号等建立索引,由于她们经常在查询条件和连接条件中浮现
依照事务查询中厂商表建立索引如下:
CREATE UNIQUE INDEX FaPa_no ON Factory(Fa_no);
D、对carsale建立聚簇索引
对产品表厂商号、付款表厂商号、收款表客户号等建立聚簇索引,由于她们在其关系表中值重复率很高
对产品表产品号、发货表产品号、订单表产品号等建立聚簇索引,由于她们经常出当前相等比较条件中
依照事务查询中产品表建立聚簇索引如下
CREATE CLUSTER INDEX ProFa_no ON Product(Fa_no);
E、对carsale拟定数据存储位置
为提高系统性能,咱们依照应用状况将数据易变某些和稳定某些、经常存取某些和存取频率较低某些分开存储。即咱们把表和索引放在不同磁盘上。
F、对carsale拟定系统配备
使用数据库顾客数(咱们只要设立比较少顾客数);
同步打开数据库对象数(顾客同步操作对象不超过3个);
内存分派参数(运营exe文献需要5M内存);
缓冲区别配参数(略);
数据库大小(预留500M数据存储空间)等。
G、对carsale物理构造评价
数据库物理设计过程中需要对时间效率、空间效率、维护代价和各种顾客规定进行权衡,其成果产生各种方案。通过咱们细致评价,得出上述系统配备作为carsale数据库物理构造。
七、详细设计
数据载入和应用程序调试
(1)由于该系统尚未投入使用,咱们仅象征性地载入少量数据
(轿车信息表导入实验数据)
(客户信息表导入实验数据)
(订单表导入实验数据)
(生产商表导入实验数据)
【应用程序调试】
数据库应用程序设计应当与数据库设计同步进行,鉴于VB简朴易用,咱们选取VB作为应用程序设计语言。因而在组织数据入库同步还要调试应用
某些代码:
某些代码
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
展开阅读全文