1、 汽车销售管理系统设计实现与汽车4S店管理系统应用一、绪论摘要:本系统是为解决汽车销售公司管理问题而设计。随着经济发展和国内汽车市场不断扩大,某汽车销售公司定单成倍增长,各项业务更加细化,各部门分工更加明确。而当前人工管理方式显然已是不符合当代公司管理规定。基于整体考虑,本次课程设计任务就是设计一种管理系统,运用计算机来代替人工操作。减轻了员工劳动强度,提高了劳动质量和效率,减少了错误发生。本次设计,从需求分析,概念设计,逻辑设计,物理设计,到数据库建立、运营,再到数据库安全维护等各个方面进行了详细分析设计。并且值得一提是,我认真分析了公司业务需求,公司重要职责和重要构造等信息,从而保证了设计
2、出比较符合公司需要管理系统。1.1 系统简介智百盛汽车销售管理系统是针对汽车销售行业业务特点,专为汽车销售公司设计制作。咱们根据当代科学管理理念,集国内外先进管理思想,并结合自身近年积累开发经验和大量市场调研,在高度集成、操作简朴、以便管理、使用灵活等原则指引下精心研发一款软件。该软件重要涉及客户关系管理、进车管理、库存管理、售车管理、代办管理、财务管理、报表分析、系统管理等模块。软件价格低廉,功能强大,维护简朴,无论中、小型公司,耗费很少投资,可以迅速得到公司全面信息化管理应用。l 智百盛汽车销售管理系统7.5紧密结合当今汽销模式,为汽销公司提供了全面信息管理功能。是广大汽车经销商、汽车特许
3、专营店等顾客先进计算机管理方案。满足各级部门对工作需求,如总经理、销售经理、销售人员、会计、出纳、筹划员、库管员等,是汽车销售公司最佳管理利器。集汽销公司进、销、存、财管理于一体。所有单据和报表均支持底盘号、发动机号、合格证号等显示、查询和打印。先进万能查询功能。支持顾客自定义报表。所有单据和表格可以导出至Excel、Word、HTML、TXT格式文献。严谨权限设立,不但可以定义菜单权限,还可以定义详细操作权限。实用多帐套管理。操作简朴、极易上手,不必专业培训,会用键盘鼠标即会使用。 智百盛汽车销售管理系统采用了大量最新技术,进一步完善了业务管理功能,整个产品在管理功能、易用性、数据容量、数据
4、安全性等方面均有了很大提高。 二、系统需求分析 本系统设计模仿普通医院汽车销售管理系统内容,通过充分系统分析和调研,本系统重要涉及信息有3类:汽车商品信息、汽车进货信息以及汽车销售信息。 在老式销售管理工作中,往往是用人工清点方式来掌握仓库中汽车商品、使用手工记账方式来掌握商品进货和销售状况。这种方式在数量较少、库存变换少状况下,不失为一种好办法。但是,随着每天所发生进货和销售状况纷繁复杂,如果借助人工来记录和管理,将会耗费大量时间,并且容易浮现错误,导致管理上混乱。 详细而言,汽车销售管理系统需要实现一下需求:(1) 可以对医院过拥有各种汽车基本信息进行维护和管理。汽车基本信息涉及:汽车顺序
5、号、汽车名称、汽车规格、计量单位、备注信息、库存数量等。系统需要可以对汽车信息进行添加、修改和删除,也可以以图形方式显示浮现汽车库存数量比较。(2) 跟踪各种汽车进货信息。汽车进货信息涉及顺序号、汽车名称、进货数量、进货价格、进货日期、备注等。系统还需要可以对进货信息进行添加、修改和删除,也可以按照一定条件来进行查询。(3) 跟踪各种汽车销售信息。汽车销售信息涉及顺序号、汽车名称、顾客名称、购买数量、售出价格、销售日期、备注等。系统需要可以对销售信息进行添加、修改和删除,也可以按照一定条件来进行查询。三、 界面设计设计主界面美观,以便实用:四、概念构造设计本阶段重要任务是将需求分析得到顾客需求
6、抽象为信息构造构造(即概念模型)设计概念构造普通有四类办法:自顶向下、自底向上、逐渐扩张和混合方略。我在这里采用自底向上办法。概念设计成果如下:(某公司轿车销售管理系统基本ER图)五、逻辑构造设计 逻辑构造设计任务就是把概念构造设计阶段设计好基本E-R图转换为与sql所支持数据模型相符合逻辑构造。1E-R图向关系模型转换由概念设计E-R图可得普通关系模型如下厂商(厂商号,厂商名,地址,电话,信用度)客户(客户号,客户名,地址,电话,信用度)发货单(货单号,细节号,产品号,客户号,数量,日期,金额,折扣)收款单(客户号,定单号,收据号,收款金额,收款日期)定单(定单号,细节号,产品号,厂商号,数
7、量,日期,金额)付款(厂商号,定单号,发票号,支付金额,支付日期)顾客(顾客ID,顾客名,密码,顾客类型,权限)员工(员工号,姓名,性别,部门,职务,电话)产品(产品号,产品名,厂商号,单价,库存量) 2数据模型优化数据库逻辑设计成果不是唯一.为进一步提高数据库应用系统性能,咱们还应当依照应用需要恰当修改,调节数据模型构造,这就是数据模型优化。(1) 数据依赖举例R厂商厂商号-厂商名,厂商号-地址,厂商号-电话R顾客顾客ID顾客名,顾客ID密码,顾客ID顾客类型,顾客ID权限,顾客类型权限(2) 对数据依赖进行极小化解决,消除冗余联系举例 上述关系中,发货单中存在冗余联系(详细是细节号、折扣等
8、),因而咱们可以增长一种发货细节单和折扣规则单。(3) 按照数据依赖理论对关系模式逐个进行分析,考察与否存在某些函数依赖,传递函数依赖,多值依赖等,拟定各关系分别属于第几范式举例上述关系中,顾客表存在非主属性传递依赖,因而顾客表属于2NF。咱们可以增长一种顾客权限表来消除该表中非主属性传递依赖。3. 逻辑设计最后成果如下:(UserType表)(Users表)(Staff表)(共13个表,其她截图略)六、系统构造设计1在关系模式存取办法选取之前,咱们一方面要对要运营事务进行详细分析,获得选取物理数据库设计所需要参数。同步,还要懂得每个事务在各关系上运营频率和性能规定。(1) 对于数据库查询事务
9、,咱们需要得到如下信息:查询关系、查询条件/连接条件涉及属性、查询投影属性A、查询发货厂商名、产品、发货数量(100)和日期事务、查询关系:厂商表、发货单表、产品表、查询条件所涉及属性:厂商号、发货数量、产品号 III、连接条件所涉及属性:厂商号、产品号 IV、查询投影属性:厂商名、产品名、发货数量、发货日期(2) 对于数据更新事务,咱们需要得到如下信息:被更新关系、每个关系上更新操作条件涉及属性、修改操作要变化属性值B、对发货事务、被更新关系:发货表、每个关系上更新操作条件所涉及属性:无III、需要改属性值:货单号、产品号、发货数量、发货日期2. 关系模式存取办法选取(即建立哪些存储途径)C
10、、对carsale建立索引对厂商表上厂商号、发货表产品号、产品表产品号等建立索引,由于她们经常在查询条件和连接条件中浮现依照事务查询中厂商表建立索引如下:CREATE UNIQUE INDEX FaPa_no ON Factory(Fa_no);D、对carsale建立聚簇索引 对产品表厂商号、付款表厂商号、收款表客户号等建立聚簇索引,由于她们在其关系表中值重复率很高 对产品表产品号、发货表产品号、订单表产品号等建立聚簇索引,由于她们经常出当前相等比较条件中 依照事务查询中产品表建立聚簇索引如下 CREATE CLUSTER INDEX ProFa_no ON Product(Fa_no);E
11、、对carsale拟定数据存储位置 为提高系统性能,咱们依照应用状况将数据易变某些和稳定某些、经常存取某些和存取频率较低某些分开存储。即咱们把表和索引放在不同磁盘上。F、对carsale拟定系统配备使用数据库顾客数(咱们只要设立比较少顾客数);同步打开数据库对象数(顾客同步操作对象不超过3个);内存分派参数(运营exe文献需要5M内存);缓冲区别配参数(略);数据库大小(预留500M数据存储空间)等。G、对carsale物理构造评价 数据库物理设计过程中需要对时间效率、空间效率、维护代价和各种顾客规定进行权衡,其成果产生各种方案。通过咱们细致评价,得出上述系统配备作为carsale数据库物理构
12、造。七、详细设计数据载入和应用程序调试(1)由于该系统尚未投入使用,咱们仅象征性地载入少量数据(轿车信息表导入实验数据) (客户信息表导入实验数据)(订单表导入实验数据)(生产商表导入实验数据)【应用程序调试】数据库应用程序设计应当与数据库设计同步进行,鉴于VB简朴易用,咱们选取VB作为应用程序设计语言。因而在组织数据入库同步还要调试应用某些代码:某些代码 A 进货信息列表窗体代码 Private Sub cmdAdd_Click()frmStock.mbAddMode = TruefrmStock.Show vbModalEnd SubPrivate Sub cmdDelete_Click(
13、)On Error GoTo errHandlerDim l As Longl = grdList.TextMatrix(grdList.Row,1)gConn.Execute delete from stock where 顺序号= & lUnload MeLoad MeMe.SQL = select * from stockMe.ShowExit SuberrHandler: MsgBox Err.Description,vbCritical,错误End SubPrivate Sub cmdEdit_Click()frmStock.mnSerial = CLng(grdList.TextM
14、atrix(grdList.Row,1)frmStock.mbAddMode = TruefrmStock.Show vbModalEnd SubPrivate Sub cmdFind_Click()frmFind.SQL = mRs.SourcefrmFind.Show vbModalUnload MeLoad MeIf Trim(frmFind.msResultSQL) Then Me.SQL = select * from stock where & frmFind.msResultSQLEnd IfMe.ShowUnload frmFindEnd SubPrivate Sub cmdS
15、howAll_Click()Unload MeLoad MeMe.SQL = select * from stockMe.ShowEnd SubPrivate Sub Form_Load()Dim i As IntegerWith grdList .Cols = 8 .TextMatrix(0,1) = .TextMatrix(0,2) = 汽车名称 .TextMatrix(0,3) = 供应商名称 .TextMatrix(0,4) = 进货数量 .TextMatrix(0,5) = 商品单价 .TextMatrix(0,6) = 进货日期 .TextMatrix(0,7) = 备注 .Fix
16、edRows = 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 .ColW
17、idth(7) = 1000 .Row = 1End WithSet mRs = New ADODB.RecordsetEnd SubPrivate Sub Form_Resize()fraManage.Left = (Me.ScaleWidth - fraManage.Width) / 2fraManage.Top = Me.ScaleHeight - 200 - fraManage.HeightgrdList.Top = 200grdList.Width = Me.ScaleWidth - 200grdList.Left = Me.ScaleLeft + 100grdList.Height
18、 = Me.ScaleHeight - fraManage.Height - grdList.Top - 200End SubPrivate Sub Form_Unload(Cancel As Integer)If mRs.State adStateClosed Then mRs.CloseEnd Sub B 进货信息编辑窗体代码 Private Sub cmdCancel_Click()If mbChange Then If MsgBox(保存当前记录变化吗?,vbOKCancel + vbExclamation,警告) = vbOK Then Call cmdOK_Click End If
19、End IfUnload MeUnload frmStockListLoad frmStockListfrmStockList.SQL = select * from stockfrmStockList.ShowEnd SubPrivate Sub cmdOK_Click()On Error GoTo errHandlerIf txtIntem(3).Text = Then MsgBox 字段不能为空,并且只能输入数字,vbCritical,错误End IfIf txtIntem(4).Text = Then MsgBox 字段不能为空,并且只能输入数字,vbCritical,错误End If
20、If Trim(cboItem) = Then MsgBox 必要选取汽车名称,vbCritical,错误 cboItem.SetFocus Exit SubEnd IfIf Not IsDate(Trim(txtIntem(5) Then MsgBox 请输入对的日期格式!,vbOKOnly + vbExclamation,警告 txtIntem(5).SetFocus Exit SubEnd IfIf Not mbAddMode Then gConn.Execute delete from stock where 顺序号= & mnSerial & End IfDim rs As New
21、ADODB.Recordsetrs.Open select * from stock,gConn,adOpenDynamic,adLockOptimisticrs.AddNewrs(汽车名称) = cboItem.TextDim i As IntegerFor i = txtIntem.LBound To txtIntem.UBound rs.Fields(i).Value = txtIntem(i)Next irs.Updaters.ClosemnQuantity = CInt(txtIntem(3) - mnQuantitygConn.Execute update products set
22、 库存数量=库存数量+ & mnQuantity & where 汽车名称= & cboItem.Text & If mbAddMode Then mbChange = True MsgBox 添加进货信息成功!继续添加下一条进货信息,vbOKOnly + vbExclamation,添加进货信息 Unload Me Me.Show vbModalElse Unload Me frmStockList.SQL = select * from stock frmStockList.ShowEnd IfExit SuberrHandler: MsgBox Err.Description,vbCri
23、tical,错误End SubPrivate Sub Form_Load()On Error GoTo errHandlerDim rs As New ADODB.Recordsetrs.Open select distinct 汽车名称 from products,gConn,adOpenKeysetIf Not rs.EOF Then cboItem.Clear Do While Not rs.EOF cboItem.AddItem rs(汽车名称) rs.MoveNext LoopElse MsgBox 当前数据库不包括任何汽车信息。请先设立汽车信息!,vbOKOnly + vbExcl
24、amation,警告 Exit SubEnd Ifrs.CloseIf mbAddMode Then Me.Caption = Me.Caption & 添加 txtIntem(5) = Format(Date,yyyy-mm-dd) txtIntem(3) = 0 txtIntem(4) = 10 mnQuantity = 0Else Me.Caption = Me.Caption & 修改 rs.Open select * from stock where 顺序号= & mnSerial If Not rs.EOF Then cboItem.Text = rs(汽车名称) Dim i As
25、 Integer For i = txtIntem.LBound To txtIntem.UBound txtIntem(i) = rs.Fields(i).Value Next i End If mnQuantity = rs(进货数量) rs.CloseEnd IfmbChange = FalseExit SuberrHandler: MsgBox Err.Description,vbCritical,错误End SubPrivate Sub txtIntem_Change(Index As Integer)mbChange = TrueEnd SubPrivate Sub txtIntem_GotFocus(Index As Integer)txtIntem(Index).SelStart = 0txtIntem(Index).SelLength = Len(txtIntem(Index)End Sub