《汽车销售管理系统(含代码).docx》由会员分享,可在线阅读,更多相关《汽车销售管理系统(含代码).docx(68页珍藏版)》请在三一办公上搜索。
1、汽车销售系统设计 【摘 要】本系统是为解决汽车销售公司的管理问题而设计。随着经济的发展和国内汽车市场的不断扩大,某汽车销售公司定单成倍增加,各项业务更加细化,各部门分工更加明确。而目前的人工管理方式显然已是不符合现代企业的管理要求。基于整体考虑,本次课程设计任务就是设计一个管理系统,利用计算机来代替人工操作。减轻了员工的劳动强度,提高了劳动质量和效率,减少了错误的发生。本次设计,从需求分析,概念设计,逻辑设计,物理设计,到数据库的建立、运行,再到数据库的安全维护等各个方面进行了详细的分析设计。并且值得一提的是,我认真分析了企业的业务需求,公司的主要职责和主要结构等信息,从而保证了设计出比较符合
2、公司需要的管理系统。【关键词】数据库;课程设计;轿车销售管理 JAVACar sales system 【Abstract】 This system is to address the management of car sales company designed. With economic development and the domestic auto market continues to expand, an automobile sales company orders multiplied, the business is more refined, more explici
3、t division of labor. The current manual management is not clearly meet therequirements of modern enterprise management.Based on overall consideration, this task is to design a curriculum management system, using computer to replace manual operation. Reduce the labor intensity of the employees, impro
4、ve labor quality and efficiency, reduced errors.The design, from requirements analysis, conceptual design, logical design, physical design, to database development, operation, maintenance, security of the databaseand then to various aspects of the detailed analysis of the design. And worth mentionin
5、g is that I carefully analyzed the companys business needs, the companysmain responsibilities and main structure information, thus ensuring the need to designmore in line with the companys management system. 【Keywords】Database; curriculum design; car sales management JAVA 目 录第一章绪论11.1 课题来源11.2 国内现状1
6、1.3 研究意义1第二章需求分析32.1 系统定义32.2 功能需求32.3 数据需求3第三章数据库设计43.1 数据库的概念43.2 数据库的选择43.3 数据库表的描述4第四章技术介绍114.1 JAVA开发语言的选择114.2 MVC设计模式124.3 Struts,Hibernate,Spring技术134.4 SQL语言154.5 开发环境15第五章系统实现165.1网站总体架构及实现165.2 查看公司信息185.3 投递简历205.4 查看个人简历225.5 求职者查看来自公司的回复245.6 其他功能26第六章结论31致 谢32参考文献33附录一 数据库连接34附录二 声明式事
7、务管理35第一章 绪论1.1 1.1 课题来源汽车产业的兴旺发展带动顾客对于汽车类型选择的大步前进,目前大多数汽车销售连锁店的销售管理是用简易进行的。随着汽车款式的不断更新,汽车各项功能配置会不断的增多,简易工作已不能适应时代的发展需求,由于各销售店每天的销售量很大,难免会在业务方面及财务方面出现漏洞,给企业的经营带来种种弊端,有时还会带给客户不必要的麻烦。要想解决这些难题,就必须有一套科学、高效、严密汽车销售管理系统作为依托进行和客户的交易。当今的中小企业,一般应具有产品开发、生产、销售、服务的能力,为此企业都设有相应的机构,以管理各个环节的业务。以此前提作为系统设计的基础,开发一个更适合客
8、户和销售人员交流的这样一个汽车销售系统,来满足日益发展的汽车销售业.的要求。 1.2 国内现状汽车产业的兴旺发展带动顾客对于汽车类型选择的大步前进,目前大多数汽车销售连锁店的销售管理是用简易进行的。随着汽车款式的不断更新,汽车各项功能配置会不断的增多,简易工作已不能适应时代的发展需求,由于各销售店每天的销售量很大,难免会在业务方面及财务方面出现漏洞,给企业的经营带来种种弊端,有时还会带给客户不必要的麻烦。要想解决这些难题,就必须有一套科学、高效、严密汽车销售管理系统作为依托进行和客户的交易。当今的中小企业,一般应具有产品开发、生产、销售、服务的能力,为此企业都设有相应的机构,以管理各个环节的业
9、务。以此前提作为系统设计的基础,开发一个更适合客户和销售人员交流的这样一个汽车销售系统,来满足日益发展的汽车销售业.的要求。 1.2 1.3 研究意义为了更好的适应汽车销售管理市场发展的不平衡性,更好的为客户在选择汽车类型方面便利,为更多不了解汽车的客户提供一个交流平台,我们选择这样一个信息管理系统来进行。 第二章 需求分析1.3 2.1 系统定义 汽车销售系统的出现代替了人工记录。那么本系统作为汽车销售行业的一个系统,为公司和客户双方都提供了方便。1.4 2.2 功能需求汽车销售系统一个最主要的目的就是为销售公司和客户提供方便快捷的双向选择服务,因此其主要的使用者有两类,即客户和汽车销售公司
10、,并且其功能主要实现双方交易的透明化和人性化。一、从信息需求的角度分析信息注册主要包括客户个人信息的采集和公司现有信息情况的采集。信息交互管理,主要包括客户向公司下订单过程的记录和公司对客户对车辆要求的满足。二、从用户的角度分析客户首次买车要注册个人信息。系统管理员要赋予部门管理员的一定权限才能方便各个模块的管理。子管理员在得到系统管理员的授权后可以对所负责部门实行所有的操作1.5 2.3 数据需求一、 客户的个人信息客户要在首次购车时注册个人信息(姓名、性别、身份证号、联系方式、学历、家庭住址等)二、 供货商的详细信息供货商信息包括供货商的自然信息(公司名称、公司地址、联系方式等)三、 单辆
11、车的基本信息单辆车的基本信息包括汽车的(发动机编号,汽车类型,汽车价格,汽车外观,汽车排量,供应商等)四、 仓库的基本信息 仓库的基本信息包括(仓库编号,仓库最大库存量,现存量等)第三章 数据库设计1.6 3.1 数据库的概念当人们从不同的角度来描述这一概念时就有不同的定义。例如,称数据库是一个“记录保存系统”(该定义强调了数据库是若干记录的集合)。又如称数据库是“人们为解决特定的任务,以一定的组织方式存储在一起的相关的数据的集合”(该定义侧重于数据的组织)。更有甚者称数据库是“一个数据仓库”。当然,这种说法虽然形象,但并不严谨。严格地说,数据库是“按照数据结构来组织、存储和管理数据的仓库”。
12、本系统将使用一直以来使用都最为广泛的关系模型作为数据库的建设依据。在用户的观点下,关系模型中数据的逻辑结构是一张二维表,一个关系对应通常说的一张表,并且关系的每一个分量必须是一个不可分的数据项。而一个基于关系模型的数据库则是由若干个二维表组成的。对于一些大型和中型的数据库,如Oracle,SQL Server 2005等都属于关系型数据库,同时它们所带有的数据库管理工具是其他小型数据库所没有的,而同时这些工具又为管理员的工作节省了很多的时间和财力。1.7 3.2 数据库的选择本系统使用SQLserver2005实现关系型数据库。SQL Server 2005 是一个全面的数据库平台,使用集成的
13、商业智能 (BI) 工具提供了企业级的数据管理。SQL Server 2005 数据库引擎为关系型数据和结构化数据提供了更安全可靠的存储功能,使您可以构建和管理用于业务的高可用和高性能的数据应用程序。SQL Server 2005 数据引擎是本企业数据管理解决方案的核心。此外 SQL Server 2005 结合了分析、报表、集成和通知功能。这使您的企业可以构建和部署经济有效的 BI 解决方案,帮助您的团队通过记分卡、Dashboard、Web services 和移动设备将数据应用推向业务的各个领域。与 Microsoft Visual Studio、Microsoft Office Sys
14、tem 以及新的开发工具包(包括 Business Intelligence Development Studio)的紧密集成使 SQL Server 2005 与众不同。无论您是开发人员、数据库管理员、信息工作者还是决策者,SQL Server 2005 都可以为您提供创新的解决方案,帮助您从数据中更多地获益。 3.3 数据库表的描述概念模型是对信息世界建模,其表示方法有很多,其中最为常用的是实体联系模型,即ER模型,它是用ER图来描述现实世界的概念模型。 3.3.1进货订单表(汽车4s店向厂商进货)(stockList_table)该表主要完成公司向供应商进货的基本清单录入等功能。在此表中
15、定义了9个字段来进行进货清单的信息存储。见表31。表31字段英文名类型是否主键外键关联长度备注清单编号stockIdIntYes无汽车类型carTypevarcharNo关联汽车信息表255汽车数量caiSumintNo无 只能大于零进货单价stockPriceIntNo无只能大于零进货日期stockTimedateTimeNo无进货总价stockSumintNo无由单价和数量计算入库状态enterEstvarcharNo无255默认未入库供应厂商facIdVarchar No关联厂商表255进货管理员staIdintNo关联员工表255 3.3.2仓库表(汽车4s店的仓库)(depot_ta
16、ble)该表主要完成求公司仓库添加功能。在此表中定义了4个字段来进行仓库信息的存储。见表32。表32字段英文名类型是否主键外键关联长度备注仓库编号depotIdIntYes 无仓库管理员staIdvarcharNo关联员工表255现存量liveSumintNo无不能小于零最大库存量maxSumintNo无不能小于等于零 3.3.3财务支出表(汽车4s店进货的花费)(payout_table)该表主要完成公司财务的支出功能。在此表中定义了5个字段来进行财务的信息存储。见表33。字段英文名类型是否主键外键关联长度备注支出编号payIdInt Yes无进货订单号:stockIdintNo关联进货订单
17、表支出总额payCouintNo无由进货单得到支出时间payTimevarcharNo无255财务管理员staIdintNo关联员工表 3.3.4财务收入表(每完成一次交易所得金额 非利润)(income_table)该表主要完成公司财务的收入功能。在此表中定义了6个字段来进行财务的信息存储。见表34。字段英文名类型是否主键外键关联长度备注收入编号incomeIdIntYes客户订单编号orderIdintNo关联汽车信息表应收金额accMoneyintNo关联汽车信息表从汽车信息表中能到实收金额factMoneyIntNo收款时间receTimedateTimeNo收款人staIdintNo
18、关联员工表 3.3.5厂商信息表(汽车4s店进车所选厂商)(factory_table)该表主要对供应商信息的管理。在此表中定义了4个字段来进行信息存储。见表35。表35字段英文名类型是否主键外键关联长度备注厂商编号facIdIntYes无厂商名称facNamevarcharNo无255厂商地址facAddrvarcharNo无255厂商联系方式facTelvarcharNo无255 3.3.6汽车基本信息表表(本4s店所经营的汽车信息)(car_table)该表主要记录对汽车的基本信息进行录入和修改功能。在此表中定义了9个字段来进行信息存储。见表36。表36字段英文名类型是否主键外键关联长度
19、备注发动机编号engineIdvarcharYes无255汽车类型carTypeVarcharNo无255汽车外观carShowVarcharNo无255汽车售价carPriceIntNo无汽车排量carPaivarcharNo无255供应商facIdintNo关联与厂商信息表进货订单号stockIdintNo关联与进货订单表仓库编号depotIdintNo关联与仓库表出售状态 carStatevarcharNo255默认未售出 3.3.7客户信息表(凡是来本店买车或有买车意向的都成为客户)(client_table)该表的主要功能是对客户的基本信息进行登记。在此表中定义了7个字段来进行信息存
20、储。见表37。表37字段英文名类型是否主键外键关联长度备注客户身份证号cliCardVarcharYes无50客户姓名cliNameVarcharNo无255客户性别cliSexVarcharNo无50客户联系方式cliTelVarcharNo无255客户住址cliAddVarcharNo无255客户职业cliWorkVarcharNo无255客户学历cliXueliVarcharNo无255 3.3.8客户订单表(客户下的买车订单)(orderList_table)该表的主要功能是记录客户下订单表的信息。在此表中定义了8个字段来进行信息存储。 见表38。表38字段英文名类型是否主键外键关联长
21、度备注订单编号orderIdIntYes客户身份证号:cliCardvarcharNo关联客户表50销售人员:staIdintNo关联员工表汽车类型:carTypeVarcharNo关联汽车信息表255汽车数量:carSumIntNo只能为1订单时间:orderTimedateTimeNo订单状态:orderEstVarcharNo50默认未交易发动机编号3.3.9角色表(公司的职位有哪些)(role_table)该表的主要功能是记录公司职位的信息。在此表中定义了2个字段来进行信息存储。 见表39。表39字段英文名类型是否主键外键关联长度备注角色编号rIdIntYes无角色名rNameVarc
22、harNo无2553.3.10员工表(公司员工)(staff_table)该表的主要功能是记录公司员工的信息。在此表中定义了5个字段来进行信息存储。 见表310。表310字段英文名类型是否主键外键关联长度备注员工编号staIdIntYes员工登录密码staPassVarcharNo255员工姓名staNameVarcharNo255员工性别staSexVarcharNo50联系方式staTelVarcharNo2553.3.11权限表(对表的操作)(power_table)该表的主要功能是记录管理员权限的信息。在此表中定义了3个字段来进行信息存储。 见表311。表311字段英文名类型是否主键外
23、键关联长度备注权限编号pId IntYes无权限名pNameVarcharNo无255权限路径pURIVarcharNo无2553.3.12角色权限对应表(不同职位只能操纵相应表)(power_table)该表的主要功能是记录角色对应权限的信息。在此表中定义了2个字段来进行信息存储。 见表312。表312字段英文名类型是否主键外键关联长度备注角色编号rIdIntyes关联角色表权限编号rIdIntyes关联权限表1. 3.3.13角色员工对应关系表(power_table)该表的主要功能是记录员工与角色对应关系的信息。在此表中定义了2个字段来进行信息存储。 见表313。表313字段英文名类型是
24、否主键外键关联长度备注角色编号ridIntYes关联角色表员工编号staIdIntyes关联员工表第四章 技术介绍4.1 JAVA开发语言的选择现在,市场上可以选购的应用开发产品很多,流行的也有数十种。目前在我国市场上最为流行,使用最多,最为先进的可用作企业级开发语言的产品有:SUN公司的JavaMicrosoft公司的Visual BasicMicrosoft公司的Visual CBorland公司的DelphiPowersoft公司的PowerBulider在目前市场上这些众多的程序开发工具中,有些强调语言的弹性与执行效率;有些偏重于可视化程序开发工具所带来的便利性与效率的提高,各有各的优
25、点和特色,也满足了不同用户的不同需求。我的网站选择Java语言开发,其原因基于以下几点:Java是一种简单的、面向对象的、分布式的、健壮的、安全的、结构中立的、可移植的、性能很优异的、多线程的、动态的语言。 一、简单 Java的风格类似于C+,并且摒弃了C+中容易引发程序错误的地方,如指针和内存管理。 此外Java提供了丰富的类库。 二、面向对象 面向对象可以说是Java最重要的特性。Java语言的设计完全是面向对象的。Java支持静态和动态风格的代码继承及重用。 三、分布式 Java包括一个支持HTTP和FTP等基于TCP/IP协议的子库。因此,Java应用程序可凭借URL打开并访问网络上的
26、对象,其访问方式与访问本地文件系统几乎完全相同。四、健壮 Java致力于检查程序在编译和运行时的错误。Java自己操纵内存减少了内存出错的可能性。Java提供Null指针检测数组边界、检测异常出口、字节代码校验。 五、安全 Java的安全性可从两个方面得到保证。一方面,在Java语言里,像指针和释放内存等C+功能被删除,避免了非法内存操作。另一方面,当Java用来创建浏览器时,语言功能和浏览器本身提供的功能结合起来,使它更安全。六、结构中立 为了建立Java作为网络的一个整体,Java将它的程序编译成一种结构中立的中间文件格式。只要有Java运行系统的机器都能执行这种中间代码。Java源程序被
27、编译成一种高层次的与机器无关的byte-code格式语言,这种语言被设计在虚拟机上运行,由机器相关的运行调试器实现执行。 七、可移植的 Java的可移植性一直是Java程序设计师们的精神指标,也是Java之所以能够受到程序设计师们喜爱的原因之一,最大的功臣就是JVM的技术。JAVA编译器产生的目标代码(J-Code) 是针对一种并不存在的CPU-JAVA虚拟机(JAVA Virtual Machine),而不是某一实际的CPU。JAVA虚拟机能掩盖不同CPU之间的差别,使J-Code能运行于任何具有JAVA虚拟机的机器上。 八、高性能 Java可以在运行时直接将目标代码翻译成机器指令。Sun用
28、直接解释器一秒钟内可调用300,000个过程。翻译目标代码的速度与C/C+的性能没什么区别。 九、多线程 Java支持多线程,多线程功能使得在一个程序里可同时执行多个小任务。线程,有时也称小进程,是一个大进程里分出来的小的独立的进程。十、动态 Java的动态特性是其面向对象设计方法的发展。它允许程序动态地装入运行过程中所需要的类,这是C+语言进行面向对象程序设计所无法实现的。Java编译器不是将对实例变量和成员函数的引用编译为数值引用,而是将符号引用信息在字节码中保存下传递给解释器,再由解释器在完成动态连接类后,将符号引用信息转换为数值偏移量。1.8 4.2 MVC设计模式MVC是Model-
29、View-Controller的简称,它是一种设计模式,它把应用程序分成三个核心模块:模型、视图、控制器,它们各自处理自己的任务。视图是用户看到并与之交互的界面,作用包括向用户显示相关的数据、接受用户的输入、向模型查询业务状态、接受模型发出的数据更新事件,从而对用户界面进行同步更新。模型表示业务数据和业务逻辑,是应用程序的主体部分。一个模型能为多个视图提供数据,因此提高了代码的可重用性。控制器接受用户的输入并调用模型和视图去完成用户的需求。当Web用户单击Web页面中的递交按钮来发送HTML表单时,控制器本身不输出任何东西和做任何处理。控制器接收请求并决定调用哪个模型组件去处理请求,然后决定调
30、用哪个视图来显示模型处理返回的数据。MVC的优点表现在如下几个方面:一、 首先,最重要的一点是多个视图能共享一个模型。同一个模型可以被不同的视图重用,大大提高了代码的可重用性。二、 由于MVC的三个模块相互独立,改变其中一个不会影响其他两个,所以依据这种设计思想能构造良好的松偶合的构件。三、 此外,控制器提高了应用程序的灵活性和可配置性。控制器可以用来联接不同的模型和视图去完成用户的需求,这样控制器可以为构造应用程序提供强有力的手段。MVC处理过程的结构图,见图41。图411.9 4.3 Struts,Hibernate,Spring技术 4.3.1 StrutsStruts 是目前JavaW
31、ebMVC框架中不争的王者。Struts由一组相互协作的类(组件)、Serlvet以及jsptaglib组成。由于Struts 实质上就是在JSP Model2的基础上实现的一个MVC框架,所以基于struts构架的web应用程序基本上符合JSPModel2即MVC的设计标准。其中的模型是JavaBean,控制器是ActionServlet、Action,视图是JSP、Struts客户化标签。Struts 控制器组件主要包括:充当Struts框架的中央控制器的ActionServlet组件、充当每个子应用模块的请求处理器的RequestProcessor组件、负责处理一项具体的业务的Actio
32、n组件。其工作流程如图42图42Struts的另一特点是使用ActionForm Bean,ActionForm Bean也是一种JavaBean,除了具有一些JavaBean的常规方法,还包含一些特殊的方法,用于验证HTML表单数据以及将其属性重新设置为默认值。Struts框架利用ActionForm Bean来进行View组件和Controller组件之间表单数据的传递。JSP文件使用Struts标签读取修改后的ActionForm Bean的信息,重新设置HTML表单。 4.3.2 HibernateHibernate是连接Java应用程序和关系数据库的中间件,它封装了JDBC,实现了J
33、ava对象的持久化;封装了所有数据访问细节,使业务逻辑层专注于业务逻辑。并且通过对象关系映射(Object Relational Mapping,简称ORM)解决了面向对象与关系数据库之间存在的互不匹配的现象。如图43 4.3.3 SpringSpring是为了降低企业应用开发的复杂性而创建的。Spring只使用基本的JavaBeans就能完成以前必须通过EJB来完成的事情,而与EJB是相比,Spring 的核心是个轻量级的容器,它是实现IoC(Inversion of Control控制反转)容器,是非侵入性的框架,并提供AOP(Aspect-oriented programming面向方面
34、编程)概念的实现方式,提供对持久层和事务的支持,提供MVC Web 框架的实现,并对一些常用的企业服务API提供一致的模型封装,是一个全方位的应用程序框架。图431.10 4.4 SQL语言SQL(Structure Query Language结构化查询语言)自1974年被提出,至今已经是世界上最流行的关系数据库的标准语言。SQL语言的分类一、DDL(Data Definition Language)数据定义语言,其作用包括创建数据库对象、删除数据库对象、修改数据库对象(create、drop、alter)。二、DML(Data Manipulation Language)数据操纵语言,其作
35、用包括查找数据信息、插入数据信息、删除数据信息、更改数据信息(select、 insert、 delete、 update)。三、DCL(Data Control Language)数据控制语言,作用主要对是授权数据库对象(grant, revoke)。1.11 4.5 开发环境操作系统:WINDOWS XP;运行工具:IE 7.0开发工具:Eclipse 数据库:MySQL 5.12服务器: Tomcat 6.0辅助工具:Adobe Photoshop CS, Flash V8.0第五章 系统实现1.12 5.1系统总体架构及实现 5.1.1系统总体结构图图51 5.1.2 用户首页界面风格
36、汽车销售系统的主页面可以4大管理模块,如果想了解具体的信息或进行相对的操作,就必须具有相应的权限。通过身份登录以后,可以实现相关的功能的操作。对于没有权限的用户,本系统将不提供任何服务。1.13 5.2 进货管理 5.2.1 功能描述进货管理只有进货管理员才可以登录在登录后可显示“进货管理” ,选择“查看进货订单”“增加进货订单”“查看汽车基本信息”“查看供应商信息”“添加厂商信息”等操作,可以对相应的功能进行操作。 5.2.2 模块流程图进货管理流程图汽车信息增查改厂商信息增查改进货订单表厂商信息表汽车信息表仓库模块财务模块进货单信息增查改 提交数据是否实现否是数据库图53 5.2.3 界面
37、风格 5.2.4 代码实现(部分) DAO实现方法:package com.csms.stock.dao.impl;import java.sql.SQLException;import java.util.HashMap;import java.util.List;import java.util.Map;import com.csms.stock.bean.CarDTO;import com.csms.stock.bean.FactoryDTO;import com.csms.stock.bean.StockListDTO;import com.csms.stock.dao.StockLi
38、stDAO;import com.softstone.mvc.dao.DAOFactory;import com.softstone.mvc.dao.DaoSupport;import com.softstone.mvc.dao.DefaultParams;import com.softstone.mvc.model.Paging;public class StockListDaoImpl extends DaoSupport implements StockListDAO private static final String SQL_insert=insert into stockList
39、_table( carType, carSum,stockPrice,stockSum,stockTime,facId,enterEst,staId) values(?,?,?,?,?,?,?,?);private static final String SQL_select=select stockId,carType,carSum,stockPrice,stockSum,stockTime,facId,enterEst,staId from stockList_table;private static final String SQL_selectById=select * from st
40、ockList_table where stockId=?;private static final String SQL_update=update stockList_table set carType=?,enterEst=?,stockTime=?,carSum=?,facId=?,stockPrice =?,stockSum=? where stockId=?;private static final String SQL_selectFactory=select facId from factory_table;private static final String SQL_sel
41、StaId=select staId from staff_table;private static final String SQL_FindId=select stockId,carType,carSum,stockPrice,stockSum,stockTime from stockList_table where enterEst=未入库;private static final String SQL_Findengine = select * from car_table where stockId=?;private static final String SQL = select
42、 * from stockList_table where enterEst=未入库;private int ret=0;DefaultParams params=new DefaultParams();public List SQL(Paging paging) try return this.queryForList(SQL, StockListDTO.class,paging); catch (SQLException e) e.printStackTrace();return null;public int insert(StockListDTO stockList) try para
43、ms.addParam(stockList.getCarType();params.addParam(stockList.getCarSum();params.addParam(stockList.getStockPrice();params.addParam(stockList.getStockSum();params.addParam(stockList.getStockTime();params.addParam(stockList.getFacId();params.addParam(stockList.getEnterEst();params.addParam(stockList.getStaId();ret=this.execute(SQL_insert, params);