汽车销售管理系统的设计实现与汽车4S店销售管理软件的应用.docx
《汽车销售管理系统的设计实现与汽车4S店销售管理软件的应用.docx》由会员分享,可在线阅读,更多相关《汽车销售管理系统的设计实现与汽车4S店销售管理软件的应用.docx(14页珍藏版)》请在冰豆网上搜索。
汽车销售管理系统的设计实现与汽车4S店销售管理软件的应用
汽车销售管理系统的设计实现与汽车4S店管理系统应用
一、绪论
摘要:
本系统是为解决汽车销售公司的管理问题而设计。
随着经济的发展和国内汽车市场的不断扩大,某汽车销售公司定单成倍增加,各项业务更加细化,各部门分工更加明确。
而目前的人工管理方式显然已是不符合现代企业的管理要求。
基于整体考虑,本次课程设计任务就是设计一个管理系统,利用计算机来代替人工操作。
减轻了员工的劳动强度,提高了劳动质量和效率,减少了错误的发生。
本次设计,从需求分析,概念设计,逻辑设计,物理设计,到数据库的建立、运行,再到数据库的安全维护等各个方面进行了详细的分析设计。
并且值得一提的是,我认真分析了企业的业务需求,公司的主要职责和主要结构等信息,从而保证了设计出比较符合公司需要的管理系统。
1.1系统简介
《智百盛汽车销售管理系统》是针对汽车销售行业的业务特点,专为汽车销售的公司设计制作。
我们依据现代科学管理理念,集国内外先进管理思想,并结合自身多年积累的开发经验和大量的市场调研,在高度集成、操作简单、方便管理、使用灵活等原则的指导下精心研发的一款软件。
该软件主要包括客户关系管理、进车管理、库存管理、售车管理、代办管理、财务管理、报表分析、系统管理等模块。
软件价格低廉,功能强大,维护简单,无论中、小型企业,花费很少投资,可以迅速得到企业全面信息化管理应用。
●智百盛汽车销售管理系统7.5紧密结合当今汽销模式,为汽销企业提供了全面的信息管理功能。
是广大汽车经销商、汽车特许专营店等用户优秀的计算机管理方案。
满足各级部门对工作的需求,如总经理、销售经理、销售人员、会计、出纳、计划员、库管员等,是汽车销售企业最佳管理利器。
·集汽销企业的进、销、存、财管理于一体。
·所有单据和报表均支持底盘号、发动机号、合格证号等显示、查询和打印。
·先进的万能查询功能。
·支持用户自定义报表。
·所有单据和表格可以导出至Excel、Word、HTML、TXT格式文件。
·严谨的权限设置,不仅可以定义菜单权限,还可以定义具体操作权限。
·实用的多帐套管理。
·操作简单、极易上手,无须专业培训,会用键盘鼠标即会使用。
《智百盛汽车销售管理系统》采用了大量的最新技术,进一步完善了业务管理功能,整个产品在管理功能、易用性、数据容量、数据安全性等方面都有了很大的提高。
二、系统需求分析
本系统的设计模拟一般医院的汽车销售管理系统内容,经过充分的系统分析和调研,本系统主要包括的信息有3类:
汽车商品信息、汽车进货信息以及汽车销售信息。
在传统的销售管理工作中,往往是用人工清点的方式来掌握仓库中的汽车商品、使用手工记账的方式来掌握商品的进货和销售情况。
这种方式在数量较少、库存变换少的情况下,不失为一种好的方法。
但是,随着每天所发生的进货和销售情况纷繁复杂,如果借助人工来记录和管理,将会耗费大量的时间,而且容易出现错误,造成管理上的混乱。
具体而言,汽车销售管理系统需要实现一下的需求:
(1)能够对医院过拥有的各种汽车的基础信息进行维护和管理。
汽车的基础信息包括:
汽车的顺序号、汽车名称、汽车规格、计量单位、备注信息、库存数量等。
系统需要能够对汽车信息进行添加、修改和删除,也可以以图形的方式显示出现汽车的库存数量的比较。
(2)跟踪各种汽车的的进货信息。
汽车的进货信息包括顺序号、汽车名称、进货数量、进货价格、进货日期、备注等。
系统还需要能够对进货信息进行添加、修改和删除,也可以按照一定的条件来进行查询。
(3)跟踪各种汽车的销售信息。
汽车的销售信息包括顺序号、汽车名称、顾客名称、购买数量、售出价格、销售日期、备注等。
系统需要能够对销售信息进行添加、修改和删除,也可以按照一定的条件来进行查询。
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)和日期事务
Ⅰ、查询的关系:
厂商表、发货单表、产品表
Ⅱ、查询条件所涉及的属性:
厂商号、发货数量、产品号
、连接条件所涉及的属性:
厂商号、产品号
、查询的投影属性:
厂商名、产品名、发货数量、发货日期
(2)对于数据更新事务,我们需要得到如下信息:
被更新的关系、每个关系上的更新操作条件涉及的属性、修改操作要改变的属性值
B、对发货事务
Ⅰ、被更新的关系:
发货表
Ⅱ、每个关系上的更新操作条件所涉及的属性:
无
、需要改的属性值:
货单号、产品号、发货数量、发货日期
2.关系模式存取方法选择(即建立哪些存储路径)
C、对carsale建立索引
对厂商表上的厂商号、发货表的产品号、产品表的产品号等建立索引,因为他们经常在查询条件和连接条件中出现
根据事务查询中的厂商表建立索引如下:
CREATEUNIQUEINDEXFaPa_noONFactory(Fa_no);
D、对carsale建立聚簇索引
对产品表的厂商号、付款表的厂商号、收款表的客户号等建立聚簇索引,因为他们在其关系表中的值重复率很高
对产品表的产品号、发货表的产品号、订单表的产品号等建立聚簇索引,因为他们经常出现在相等比较条件中
根据事务查询中产品表建立聚簇索引如下
CREATECLUSTERINDEXProFa_noONProduct(Fa_no);
E、对carsale确定数据的存放位置
为提高系统性能,我们根据应用情况将数据的易变部分和稳定部分、经常存取部分和存取频率较低部分分开存放。
即我们把表和索引放在不同的磁盘上。
F、对carsale确定系统配置
使用数据库的用户数(我们只要设置比较少的用户数);
同时打开的数据库对象数(用户同时操作对象不超过3个);
内存分配参数(运行exe文件需要5M内存);
缓冲区分配参数(略);
数据库的大小(预留500M数据存储空间)等。
G、对carsale物理结构的评价
数据库物理设计过程中需要对时间效率、空间效率、维护代价和各种用户要求进行权衡,其结果产生多种方案。
经过我们的细致评价,得出上述系统配置作为carsale的数据库物理结构。
七、详细设计
数据的载入和应用程序的调试
(1)由于该系统尚未投入使用,我们仅象征性地载入少量数据
(轿车信息表导入实验数据)
(客户信息表导入实验数据)
(订单表导入实验数据)
(生产商表导入实验数据)
【应用程序的调试】
数据库应用程序的设计应该与数据库设计同时进行,鉴于VB简单易用,我们选择VB作为应用程序的设计语言。
因此在组织数据入库的同时还要调试应用
部分代码:
部分代码
A进货信息列表窗体代码
PrivateSubcmdAdd_Click()
frmStock.mbAddMode=True
frmStock.ShowvbModal
EndSub
PrivateSubcmdDelete_Click()
OnErrorGoToerrHandler
DimlAsLong
l=grdList.TextMatrix(grdList.Row,1)
gConn.Execute"deletefromstockwhere顺序号="&l
UnloadMe
LoadMe
Me.SQL="select*fromstock"
Me.Show
ExitSub
errHandler:
MsgBoxErr.Description,vbCritical,"错误"
EndSub
PrivateSubcmdEdit_Click()
frmStock.mnSerial=CLng(grdList.TextMatrix(grdList.Row,1))
frmStock.mbAddMode=True
frmStock.ShowvbModal
EndSub
PrivateSubcmdFind_Click()
frmFind.SQL=mRs.Source
frmFind.ShowvbModal
UnloadMe
LoadMe
IfTrim(frmFind.msResultSQL)<>""Then
Me.SQL="select*fromstockwhere"&frmFind.msResultSQL
EndIf
Me.Show
UnloadfrmFind
EndSub
PrivateSubcmdShowAll_Click()
UnloadMe
LoadMe
Me.SQL="select*fromstock"
Me.Show
EndSub
PrivateSubForm_Load()
DimiAsInteger
WithgrdList
.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
Fori=0To.Cols-1
.ColAlignment(i)=0
Nexti
.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
EndWith
SetmRs=NewADODB.Recordset
EndSub
PrivateSubForm_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
EndSub
PrivateSubForm_Unload(CancelAsInteger)
IfmRs.State<>adStateClosedThenmRs.Close
EndSub
B进货信息编辑窗体代码
PrivateSubcmdCancel_Click()
IfmbChangeThen
IfMsgBox("保存当前记录的变化吗?
",vbOKCancel+vbExclamation,"警告")=vbOKThen
CallcmdOK_Click
EndIf
EndIf
UnloadMe
UnloadfrmStockList
LoadfrmStockList
frmStockList.SQL="select*fromstock"
frmStockList.Show
EndSub
PrivateSubcmdOK_Click()
OnErrorGoToerrHandler
IftxtIntem(3).Text=""Then
MsgBox"字段不能为空,而且只能输入数字",vbCritical,"错误"
EndIf
IftxtIntem(4).Text=""Then
MsgBox"字段不能为空,而且只能输入数字",vbCritical,"错误"
EndIf
IfTrim(cboItem)=""Then
MsgBox"必须选择汽车名称",vbCritical,"错误"
cboItem.SetFocus
ExitSub
EndIf
IfNotIsDate(Trim(txtIntem(5)))Then
MsgBox"请输入正确的日期格式!
",vbOKOnly+vbExclamation,"警告"
txtIntem(5).SetFocus
ExitSub
EndIf
IfNotmbAddModeThen
gConn.Execute"deletefromstockwhere顺序号='"&mnSerial&"'"
EndIf
DimrsAsNewADODB.Recordset
rs.Open"select*fromstock",gConn,adOpenDynamic,adLockOptimistic
rs.AddNew
rs("汽车名称")=cboItem.Text
DimiAsInteger
Fori=txtIntem.LBoundTotxtIntem.UBound
rs.Fields(i).Value=txtIntem(i)
Nexti
rs.Update
rs.Close
mnQuantity=CInt(txtIntem(3))-mnQuantity
gConn.Execute"updateproductsset库存数量=库存数量+"&mnQuantity&"where汽车名称='"&cboItem.Text&"'"
IfmbAddModeThen
mbChange=True
MsgBox"添加进货信息成功!
继续添加下一条进货信息",vbOKOnly+vbExclamation,"添加进货信息"
UnloadMe
Me.ShowvbModal
Else
UnloadMe
frmStockList.SQL="select*fromstock"
frmStockList.Show
EndIf
ExitSub
errHandler:
MsgBoxErr.Description,vbCritical,"错误"
EndSub
PrivateSubForm_Load()
OnErrorGoToerrHandler
DimrsAsNewADODB.Recordset
rs.Open"selectdistinct汽车名称fromproducts",gConn,adOpenKeyset
IfNotrs.EOFThen
cboItem.Clear
DoWhileNotrs.EOF
cboItem.AddItemrs("汽车名称")
rs.MoveNext
Loop
Else
MsgBox"当前数据库不包含任何的汽车信息。
请先设置汽车信息!
",vbOKOnly+vbExclamation,"警告"
ExitSub
EndIf
rs.Close
IfmbAddModeThen
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*fromstockwhere顺序号="&mnSerial
IfNotrs.EOFThen
cboItem.Text=rs("汽车名称")
DimiAsInteger
Fori=txtIntem.LBoundTotxtIntem.UBound
txtIntem(i)=rs.Fields(i).Value
Nexti
EndIf
mnQuantity=rs("进货数量")
rs.Close
EndIf
mbChange=False
ExitSub
errHandler:
MsgBoxErr.Description,vbCritical,"错误"
EndSub
PrivateSubtxtIntem_Change(IndexAsInteger)
mbChange=True
EndSub
PrivateSubtxtIntem_GotFocus(IndexAsInteger)
txtIntem(Index).SelStart=0
txtIntem(Index).SelLength=Len(txtIntem(Index))
EndSub