




免费预览已结束,剩余21页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据库系统概论课程设计 汽车销售管理系统班级:学号: 姓名:日期:数据库课程设计任务书课程名称汽车销售管理系统指导教师学号姓名班级任务内容调查本地从事汽车销售的企业,根据该企业的具体情况,设计用于汽车销售管理系统。主要功能有:(1)基础信息管理:厂商信息、车型信息和客户信息等。(2)进货管理:车辆采购、车辆入库。(3)销售管理:车辆销售、收益统计。(4)仓库管理:库存车辆、仓库明细、进销存统计。(5)系统维护:操作员管理、权限设置等。实现步骤第一步,需求分析第二步,概要设计第三步,详细设计第四步,代码编写与调试指导教师意见备注目录一、系统分析1.1需求分析-41.2用户需求 -41.3系统功能需求-4二、系统设计 2.1系统功能-52.1数据字典-52.3系统业务流程图-7三、数据库设计 3.1概要设计-7 3.2逻辑设计-9四、详细设计 4.1主模块设计-13 4.2数据库的运行于维护-25五、总结-25六、参考文献-26摘要:随着人们生活水平的不断提高,人们对汽车的消费和需求也越来越旺盛。很多汽车销售公司的业务环节仍然运用人工记账的传统方法,既容易出错又会导致账目混乱,查询和统计起来也非常不方便,费时又费力,严重时会给公司造成难以挽回的损失。如何管理好这些,使整个公司协调一致、高效率地运转,是各公司急待解决的问题。 汽车销售管理系统不但能使各业务环节协调一致,而且操作简单,账目清晰。通过账目查询,公司能在最短的时间内获得市场信息,从而制订相应的决策。因此,该系统主要根据实际需求,划分了售前管理、车辆管理、订货管理、查询管理、售后管理和系统设定六大模块,并选用visualstudio.net2008开发工具和sqlserver2005数据库,采用c/s模式实现了从客户来访、报价、订购等多个环节数据的跟踪管理服务,基本上满足了汽车销售管理流程。 关键词:销售管理;c/s模式;数据库;一、系统分析1.1需求分析本系统的开发宗旨,以及总体任务是实现汽车管理的自动化、规范化和系统化。所以为了实现这个目标,需求分析是必不可少的。需求分析是数据库系统开发的第一步,也是至关重要的一步。通过对系统的终端用户和客户进行详细调研后,了解到系统主要有一下要求:可以进行最基本的库存登记,如填制入库单、出库单、盘点单等;可以通过对各种物品当前库存量和安全库存量的对比分析,对超过或低于安全库存量的物品进行报警,并可查询当前库存量等于安全库存量的物品;系统通过对各种物品当前库存量和最低库存量对比分析,当前库存量低于最低库存量的物品表示短缺物品。短缺物品查询输出的内容包括物品、各物品的最低库存量、当前库存量及短缺量;操作员可以设置每一物品的最低周转率,低于此周转率的物品就是呆滞积压的物品,系统自行进行呆滞积压物品的周转率分析,并可查询此类呆滞积压物品;可以对仓库各物品各种收发类别的入库或出库的情况进行统计,方便管理人员不定期查阅;可以对仓库各物品各种收发类别的收入、发出及结存情况进行统计,方便管理人员不定期查阅;方便数据查询,支持多条件查询;在相应的权限下,登记、修改数据方便简单,数据安全且稳定性好;系统可以提供数据库维护功能;系统应该有很好的扩展性。1.2用户需求用户解决问题或达到目标所需的条件或功能;系统或系统部件要满足合同、标准,规范或其它正式规定文档所需具有的条件或权能。 需求分析:包括提炼,分析和仔细审查已收集到的需求,以确保所有的风险承担者都明其含义并找出其中的错误,遗憾或其它不足的地方。 模块的独立性:是指软件系统中每个模块只涉及软件要求的具体的子功能,而和软件系统中其他的模块的接口是简单的。1.3系统功能需求本软件可对登录的用户类型权限进行分类,不同的用户的类型对应的操作功能不同。车辆采购部门: 可实现对车辆的采购入库单,车辆附加单的添加,对以存在的入库单可根据车辆采购时间,车辆入库编号,车辆编号和采购业务员查询;可对已采购的车辆进行统计,统计的方式分为按采购日期统计和采购业务员统计。仓库管理部门: 可对所有当前在库的车辆信息进行查询查看,查看移库单和入库单的信息,并可查询当前在库的车辆信息,对车辆可进行进销存统计,并可对库存的车辆进行移库处理,并进行保存。销售管理部门: 查看当前仓库中的所有库存车辆信息,供用户选择要购买的车辆,操作员可对新售出的车辆售出信息添加至车辆售出信息表中;当仓库中没有客户所要求的汽车时,销售人员可将客户要求的车辆信息和客户信息添加至预售信息表中;在该模块,操作员可已销售的车辆信息进行统计,销售统计的方式分为按业务员统计和按销售日期统计,分别统计出销售的车辆数目,采购总额,销售总额和利润.销售人员在该模块可对库存的车辆按厂商编号进行统计.对于销售单信息可按业务员和销售时间的方式进行统计。人员管理模块:查看销售公司中的员工信息,按部门进行分类;并可按员工姓名,员工编号,员工身份证号的方式分别对员工得分信息进行查询.同时可对员工的信息进行添加,更新,注销的操作。系统管理模块:可对登录系统的用户进行添加,用户根据不同的用户类型赋予不同的操作权限,分为:采购部门,仓库部门,销售部门,系统管理。在该模块可查看当前所有的用户名和用户类型,并可按照用户类型的统计方式对当前的所有用户进行统计.系统管理员并可在知道用户密码的情况下对用户进行修改密码和删除用户的操作。2.系统设计2.1系统功能汽车销售管理系统功能结构图汽车销售管理系统基本信息管理销售管理进货管理仓库管理查询统计基本信息删除基本信息修改基本信息录入日进货单车辆入库、浏览库存车辆销售出库统计进货入库统计 计计销售日记录销售浏览销售出货进销存统计采购计划、添购2.2数据字典1、数据项编号数据项名称说 明 部 分编号数据项名 称说 明 部 分1客户姓名文本类型 长度为20字符2工作单位文本类型 长度为20字符3性别字符串类型 男、女4客户类型文本类型 长度为20字符5顾客编号字符串类型 有唯一性6联系电话整数类型 7车型号字符串类型 有唯一性8交易额浮点型9供商编号字符串类型 有唯一性10供商简称文本类型 有唯一性11生产车辆总数整数类型12家庭住址文本类型 长度为30字符13订单号整数类型 订单所属的类别14订货日期时间类型 */*15进货日期时间类型 */*16仓库号字符串类型 有唯一性17进货车辆数整数类型 18出货车辆数整数类型19库存车辆总数整数类型20出售车辆数整数类型21车辆总成本整数类型 22获取总金额整数类型23利润整数类型 24买车时间时间类型25车辆名称字符串类型 长度为20字符26备注文本类型2、数据结构编号数据结构名属 性1客户客户姓名、性别、年龄、客户号、工作单位、联系电话2车辆车辆号、车辆名称、厂商名、价格 3厂商厂商名、厂商号、地址、生产车辆总数、厂商状态、备注4订单订单号、客户号、订货日期、交货日期、地址、是否存有、是否已订5仓库仓库号、地址、进货车辆数、出货车辆数、库存车辆总数、6车辆销售车型号、厂商号、出售车辆数、车辆总成本、获取总金额、利润7订货客户、厂商、车辆、买车时间 3、数据流编号数 据 流 名输 入输 出1变更客户变更信息客户信息2客户信息一览客户号客户信息3变更供商变更信息供商信息4供商信息一览供商号供商信息5变更车辆变更信息车辆信息6车辆信息车型规格车辆信息7变更订单变更信息订单信息8查询订单订单号订单信息9变更仓库变更信息仓库信息10仓库仓库号地址11变更车辆销售变更信息车辆销售信息12统计车辆销售车辆销售数利润13结账车型规格购买信息14获得订货 订货信息车型号、供商号、客户号15订单信息车型规格、供商号订单信息18变更供商分工信息供商号、车型号供商分工信息19预采购车辆货品编号车辆信息20付款货品编号车辆信息、供商信息2.3系统业务流程图(e-r图)汽车销售管理系统流程图3.数据库设计3.1概要设计3.1.1.任务根据需求分析的结果:数据流图和数据字典来设计出汽车销售管理系统的分e-r图和基本e-r图,为下一步的逻辑设计阶段提供素材.3.1.2. 各个具体的实体1、顶层进程销售管理子系统第一层数据流图2、系统的层次结构3.2逻辑设计3.2.1、实体的关系模式:1、采购供商(厂商号,厂商名)从厂商基本表导出2、进销存统计(仓库号,进货车辆数,出货车辆数)从仓库基本表导出3、所有车辆销售信息(车型号,厂商号,车辆状态)从车辆和供商基本表导出4、付款(车型号,厂商号,车辆名,价格)从车辆表、供商表导出5、订单生成视图订单(订单号,客户号,订货日期,交货日期,地址,是否存有,是否已订)从订单表、客户表导出6、收益统计信息(车型号,出售车辆数,车辆总成本,获取总金额,利润)从车辆表、车辆销售表导出3.2.2基本表1基本表1、客户基本表 2、车辆基本表3、供商基本表4.仓库基本表5、车辆销售基本表6、订单表四.详细设计4.1主界面模块4.2部分界面以及主要生成代码4.2.1进货入库主要实现代码:public partial class 进货入库 : form gysbll gysbll = new gysbll(); list listgys = new list(); list gysid = new list(); list gysjc = new list(); public 进货入库() initializecomponent(); centertoscreen(); initstate(); private void btnexit_click(object sender, eventargs e) this.dispose(); private void btnok_click(object sender, eventargs e) list stock = new list(); if (txtorderid.text != & double.parse(txtfactsum.text) != 0) for (int i = 0; i dgvorder.rows.count; i+) if (dgvorder.rowsi.cells1.value = null) continue; stock newstock = new stock(); newstock.order = txtorderid.text; newstock.supplierid = int.parse(txtsupplierid.text); newstock.suppliername = txtsuppliername.text; newstock.sum = double.parse(txtsum.text); newstock.discount = didiscount.value; newstock.factsum = double.parse(txtfactsum.text); newstock.defary = didefray.value; newstock.undefary = diundefray.value; newstock.goodsid = int.parse(dgvorder.rowsi.cells1.value.tostring(); newstock.counts = int.parse(dgvorder.rowsi.cells7.value.tostring(); stock.add(newstock); goodsbll gbll = new goodsbll(); sumrusult(stock); foreach (stock s in stock) try gbll.addstock(s); catch (system.exception ) messagebox.show(error!); return; messagebox.show(添加成功!); else messagebox.show(请正确填写表单!, 提示, messageboxbuttons.ok, messageboxicon.error); 4.2.2销售出货public partial class 销售出货 : form list client = new list(); list clientid = new list(); list clientname = new list(); list ctype = new list(); public 销售出货() initializecomponent(); centertoscreen(); private void 销售出货_load(object sender, eventargs e) stockbll stock = new stockbll(); client = stock.bindingclient(); foreach (client c in client) clientid.add(c.khbh); clientname.add(c.khxm); ctype.add(c.khlx); cbcoustomer.datasource = clientname; tbsaletime.text = datetime.now.tostring(d); cbstorage.datasource = stock.bindstoage(); string datasouce = 现金, 银行 ; cbcount.datasource = datasouce; didiscount.value = 1; for(int i=1;i6;i+) dgvorder.columnsi.readonly = true; private void btnok_click(object sender, eventargs e) if (!judge() list sale = new list(); for (int i = 0; i dgvorder.rows.count; i+) if (dgvorder.rowsi.cells1.value = null) continue; sale s = new sale(); s.order = tborder.text; s.cid = int.parse(tbcustomid.text); s.addtime = datetime.now; s.stroage = cbstorage.selecteditem.tostring(); s.payment = cbcount.selecteditem.tostring(); s.discount = didiscount.value; s.sum = diinput.value; s.factsum = difactsum.value; s.receive = direceivables.value; s.chang = digivechang.value; s.saleprice = double.parse(dgvorder.rowsi.cells6.value.tostring(); s.counts = int.parse(dgvorder.rowsi.cells7.value.tostring(); s.goodsid = int.parse(dgvorder.rowsi.cells1.value.tostring(); sale.add(s); sumrusult(sale); stockbll sbll = new stockbll(); foreach (sale s in sale) try if (!sbll.judgestorage(s.goodsid, s.counts) messagebox.show(库存不够!); return; catch (system.exception ex) messagebox.show(error); foreach (sale s in sale) try sbll.salegoods(s); catch (system.exception ex) messagebox.show(ex.tostring(), error); return; messagebox.show(成功!); 4.2.4库存盘点4.2.5 进库统计private void btncount_click(object sender, eventargs e) datetime starttime = dtimestart.value; datetime endtime = dtimeend.value; datetime valuetime; if (panduan = 查询) double insum = 0; double defray = 0; double unfray = 0; double sumcount = 0; for (int i = 0; i = starttime & valuetime = endtime) / insum += double.parse(dt.rowsi5.tostring(); defray += double.parse(dt.rowsi8.tostring(); unfray += double.parse(dt.rowsi9.tostring(); sumcount += double.parse(dt.rowsi2.tostring(); / lbin.text = 该段时间的进货金额为: + insum; lbdefary.text = 该段时间已付金额为: + defray; /lbundefary.text = 该段时间的未付金额为: + unfray; lbl_sumcout.text = 该段时间的进仓车辆总数为: + sumcount; else if (starttime = datetime.minvalue | endtime = datetime.minvalue) messagebox.show(请正确选择时间!); return; double insum = 0; double defray = 0; double unfray = 0; double sumcount = 0; for (int i = 0; i = starttime & valuetime = endtime) insum += double.parse(dtsum.rowsi6.tostring(); defray += double.parse(dtsum.rowsi7.tostring(); unfray += double.parse(dtsum.rowsi8.tostring(); sumcount += double.parse(dtsum.rowsi2.tostring(); lbin.text = 该段时间的进货金额为: + insum; lbdefary.text = 该段时间已付金额为: + defray; /lbundefary.text = 该段时间的未付金额为: + unfray; lbl_sumcout.text = 该段时间的进仓车辆总数为: + sumcount; private void but_search_click(object sender, eventargs e) panduan = 查询; datetime starttime = dtimestart.value; datetime endtime = dtimeend.value; /datetime valuetime; if (starttime = datetime.minvalue|endtime = datetime.minvalue) messagebox.show(请正确选择时间!); return; string cmdstr = select * from stock where stocktime between + starttime + and + endtime + ; sqlconnection conn = new sqlconnection(integrated security=sspi;persist security info=false;initial catalog=carsell;data source=.sql2005); conn.open(); sqldataadapter sda = new sqldataadapter(cmdstr, conn); sda.fill(dt); conn.close(); datagridview1.datasource=dt; 4.2.6 出库统计public partial class 销售出库统计 : form datatable dt; public 销售出库统计() initializecomponent(); centertoscreen(); initload(); private void initload() dgvsale.readonly = true; stockbll sbll = new stockbll(); dt = sbll.salestatistic(); dgvsale.datasource = dt; private void btnquit_click(object sender, eventargs e) this.dispose(); private void btncounts_click(object sender, eventargs e) datetime starttime = dtistart.value; datetime endtime = dtiend.value; datetime valuetime; if (starttime = datetime.minvalue | endtime = datetime.minvalue) messagebox.show(请正确选择时间!); return; double total = 0; double profit = 0; for(int i=0;i=starttime&valuetime=endtime) total += double.parse(dt.rowsi8.tostring(); profit += double.parse(dt.rowsi9.tostring(); lbprofit.text = 销售盈利额为:+profit.tostring(); lbtotal.text = 销售总额为: + total.tostring(); 4.2.7 出库统计public partial class 销售浏览 : form private datatable dt; public 销售浏览() initializecomponent(); centertoscreen(); private void 销售浏览_load(object sender, eventargs e) dgvsalescan.readonly = true; stockbll sbll = new stockbll(); dt = sbll.salescan(); dgvsalescan.datasource = dt; private void btexit_click(object sender, eventargs e) this.dispose(); /5-1-a-s-p-x private void btprintpreview_click(object sender, eventargs e) savefiledialog sfd = new savefiledialog(); sfd.filter = xlsx files (*.xlsx)|*.xlsx|all files(*.*)|*.*; sfd.showdialog(); string filepath = sfd.filename; if (filepath=|filepath.substring(filepath.lastindexof(.)+1).tolower()!=xlsx) return; else try excelhelper.export(dt, filepath); messagebox.show(导出成功!, 提示); catch (exception ex) messagebox.show(ex.message); 4.2.8进货浏览public partial class 进货浏览 : form datatable dt; public 进货浏览() initializecomponent(); centertoscreen(); initialstate(); private void btexit_click(object sender, eventargs e) this.close(); /初始化信息 private void initialstate() stockbll sbll = new stockbll(); dt = sbll.stockskan(); dgvstockscan.datasource = dt; /创建代码: private void btprintpreview_click(object sender, eventargs e) excelhelper.exporttoexcel(dt); private void dgvstockscan_celldoubleclick(object sender, datagridvie
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 药店日常活动方案
- 构造艺术考试题及答案
- 高中水平考试题及答案
- 幼儿园教学教案设计:病菌快走开卫生习惯情景模拟课
- 妇幼健康考试题及答案
- 物流运输计划模板含成本分析与时间规划
- 企业安全培训计划实施与记录表单安全生产标准规范版
- (正式版)DB15∕T 3666-2024 《灌木发酵饲料生产技术规程》
- (正式版)DB15∕T 3400-2024 《沿黄灌区盐碱地种植耐盐碱植物技术规程》
- (正式版)DB15∕T 3360-2024 《饲草大麦裹包青贮技术规程》
- 2025年社工工作者考试真题及答案
- 同城理发店转租合同范本
- 2021-2025年高考地理真题知识点分类汇编之地球的运动
- 医院反诈宣传课件
- 2025年日本n4试题及答案
- 2025年秋期人教版3年级上册数学核心素养教案(第2单元)(教学反思有内容+二次备课版)
- 2025乡村医生培训考试试题库及参考答案
- 智慧工业园区AI大模型数字化平台建设方案
- 雨水监测管理办法
- 驾驶员职业健康管理制度
- 腺样体肥大切除病例分析
评论
0/150
提交评论