资源描述:
《基于BS模式的汽车销售管理系统的设计与实现毕业论文.doc》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
基于B/S模式的汽车销售管理系统的设计与实现毕业论文目录摘要IABSTRACTII1第一章引言11.1背景11.2未来发展及意义12第二章需求分析22.1功能需求分析22.1.1操作员登陆22.1.2基本信息的管理22.1.3进货管理22.1.4销售管理22.1.5查询分析32.1.6系统管理32.1.7财务管理32.2数据分析32.2.1系统模块结构图32.2.2数据库分析43第三章系统设计63.1系统结构63.1.1概念结构设计83.2系统流程153.3系统实现工具163.4系统实现技术163.4.1jsp技术173.4.2Struts介绍17 3.4.3JavaBean介绍183.4.4jQuery介绍184第四章系统的具体实现194.1数据库的模块设计194.1.1数据库的建立194.2系统开发平台的建立204.3系统具体模块功能和页面204.3.1网站主页204.3.2采购管理模块224.3.3财务管理模块224.3.4销售管理模块234.3.5仓库管理模块244.3.6系统管理员模块244.4系统流程的代码实现254.4.1代码部分和简介255第五章系统测试和发布305.1系统测试305.1.1测试方法的介绍305.1.2链接测试305.1.3测试结果315.2结论31结束语33致谢34参考文献35 第一章引言1.1背景目前,我国的汽车业销售管理大多沿用旧的管理模式,无论在仓储管理,还是在销售管理方面以及其他方面都存在一些问题,这些无疑制约了汽车业的发展和腾飞。在传统的汽车业管理模式中,纸单据及手工管理是其主流方式。这种方式具有数据可靠性差,运行效率低下,统计分析难度大的缺点,快速抽取对企业有用的统计信息的可能性很小。这种传统的管理模式已不能适应当今汽车企业的发展趋势,全球经济一体化的形成,国内外汽车销售业的竞争日趋激烈,这无疑对寻求生存和发展的汽车销售企业形成巨大压力。然而管理技术上的差距,汽车行业普遍存在的与商业协作伙伴的沟通不及时,不到位,都严重影响了企业的竞争力。因此,这是能够高效率的管理汽车销售和降低成本的等现代化,科学化的管理的汽车销售管理系统就显得尤为重要了。1.2未来发展及意义未来汽车销售主要是如何适应快速发展和变化多端的市场,如何运用高新技术手段和现代化管理来降低成本,提高企业的竞争力。信息技术和网络技术的广泛应用和发展成为企业降低成本,优化库存结构,拓展销售渠道,提高服务效率等提供了便利、这是汽车企业增强自身竞争力的必经之路.汽车销售管理系统是汽车销售企业的重要组成部分,本系统的开发加强了对汽车销售企业对销售的管理,提高了综合管理能力,促进了汽车企业的快速发展。本系统的开发对汽车产业树立对客户信息为企业战略资源的策略,建立了以客户对中心的管理理念以及规范化,信息化汽车销售进程,都具有实际的意义。35 第二章需求分析2.1功能需求分析汽车销售管理系统涉及到车辆采购,存库信息,公司收益,客户厂商的信息,还要有一定的管理者来管理这个系统,能够对系统内容进行更新,修改和删除.2.1.1操作员登陆因为操作员有权限之分,不同权限的操作员对系统能够进行的操作不同.1级操作员可以对系统进行全部操作,而2级以上的就有限制了.2.1.2基本信息的管理包括对厂商、客户、汽车的基本信息的管理。对厂商的基本信息的查询,修改,增加.操作员在需要对厂商信息进行更新的时候可以对它进行操作.汽车销售公司的厂商基本上是固定的,所以经常使用的是对厂商信息的查询,这个操作属于公司内部人员操作的范围。销售汽车需要各种类型的车,来适应不同使用人群.车型信息包括对车的基本信息的描述.作为管理员要定时的对车型信息进行添加.公司需要对购买车辆的用户进行基本信息的登记和定时的更新,这项工作对于汽车销售的售后服务有重要作用.公司可以对客户进行产品使用情况跟踪.此项功能应该包括对客户信息的添加,修改和不需要的资料的删除.2.1.3进货管理汽车进货需要登记进货的价格,日期,厂家编号和车的基本信息.进货操作应该是进货管理者应该进行的管理.车辆采购:进货需要跟厂家进货,所以需要跟厂家打交道.采购时不仅应该记录车辆的型号等基本信息,还要记录厂家的信息.车辆退货:对有质量问题的汽车向厂家退货.2.1.4销售管理汽车销售时的基本信息管理车辆销售:35 要包括对汽车主要信息的记录,如成交价,客户的编号,名称.车辆销售出去后,还要对销售信息进行复查,防止出现帐目不准确的情况.2.1.5查询分析可以查询基本信息,比如:汽车销售数量,员工业绩,进出库数量,进退货查询。2.1.6系统管理系统管理员增加本系统的角色,包括角色添加,删除,查看。系统管理员添加用户,删除某些不合法用户,修改用户信息。每一个角色都有系统管理员为其分配权限2.1.7财务管理总的管理所有的财务方面,包括客户的付款和退款,付厂商款及厂商退款。2.2数据分析汽车销售管理系统中涉及的数据主要包括员工的基本信心、汽车的基本信息、厂商的基本信息、客户的基本信息、财务账单的信息等,需要有严格的设计要求。系统管理员:对厂商,车型信息,客户信息的查询,添加,删除等操作,并且可以对普通操作员的权限进行设置.该操作员拥有的权限是最高的。普通管理员:对该管理员对应的职能进行相应的维护,更改,删除等操作.定期对所管理的事务进行检查。2.2.1系统模块结构图根据系统的数据流程画出系统的模块结构图如图2.1.1所示35 汽车销售管理系统基础信息管理进货管理销售管理仓库管理系统维护财务管理查询统计客户信息管理管理管理汽车信息管理供应商信息管理入库出库查询进货退货查询销售单退货单操作员管理管理更改密码权限管理收客户款管理客户退货退款退款付供应商款厂商退回的货款入库单出库单采购计划汽车销售排行员工业绩查询退款销售查询销售统计查询进货表退货表图2.1.1系统模块结构图2.2.2数据库分析35 数据库是一个系统的灵魂,合理的数据库设计对整个系统项目的开发变得更加高效灵活,因此根据之前的分析,我们对整个系统的实体以及联系进行了一下总结规划:该数据库有六个实体(汽车实体、员工实体、部门实体、仓库实体、厂商实体、客户实体)以及几种主要联系(采购联系、存入联系、取出联系、收款联系、销售联系等)。在设计完成之后,对数据库的建立以及连接也很重要,一个系统只有正确的设计、建立及连接数据库之后才能真正实现所谓的交互,让整个系统焕发生机。数据项和数据结构大体如下:1.员工信息:员工号、员工姓名、员工性别、员工年龄、员工联系电话;2.客户信息:客户号、客户姓名、客户联系电话、客户所购买的车号、客户住址、客户购车时间、客户购车时的销售人员号;3.销售信息:表单号、车型号、厂商号、出售车辆数、出售车的时间、出售车时的销售人员号;4.厂商信息:厂商号、厂商名称、厂商地址、厂商联系电话;35 第三章系统设计总体设计的任务是要概要地给出系统的实现方法,划分组成系统的物理元素,确定系统的软件结构,即组成系统的各个模块及模块之间的关系。在总体设计中,主要采用面向数据流的设计方法,结构化设计(SD)方法是一种典型的面向数据流的软件总体设计方法。结构化设计方法主要是根据系统分析过程中所得到的数据流的不同结构特征,映射为软件的初始结构图,再根据模块设计的基本原则和启发式规则进行软件结构的优化。在需求分析中得到的数据流图所表示的系统结构特征,可以归纳为两种典型的形式:变换型和事务型两种结构类型。在实际问题中,系统的DFD图可能比较复杂,往往同时存在着变换型和事务型两类结构。1.面向数据流的SD方法的主要步骤为:2.复审需求分析阶段所得到的详细DFD图,必要时再次进行修改和细化;3.鉴别软件系统的结构特征是变换型还是事务型;4.根据软件系统的结构特征,按照从DFD图到SC图的不同映射规则和步骤,映射为初始的SC图。首先把数据流图映射到软件结构上去,建立软件的基本框架结构,再把所得到的基本框架结构做进一步分解;变换分析事务分析变换型DFD图初始SC图事务型DFD图初始SC图5.按优化规则优化所得到的初始结构图。3.1系统结构系统基于B/S结构设计。如图3.1.1所示是B/S的结构图,B/S模式,是随着Internet技术的兴起,对C/S模式的一种变化或者改进的模式。在这种模式下,用户界面完全通过浏览器实现,一部分事务逻辑在前端实现,但是主要事务逻辑在服务器端实现。B/S模式利用不断成熟和普及的浏览器技术实现原来需要复杂专用软件才能实现的强大功能,井节约了开发成本,是一种全新的软件系统构造技术。它具有界面统一、流程简单、操作方便的优点。35 图3.1.1B/S三层体系结构图B/S模式的前端是以TCP/IP协议为基础的,企业内部的万维网服务器可以接受安装有Web浏览程序的Internet终端的访问,作为最终用户,只要通过Web浏览器,各种处理任务都可以调用系统资源来完成,用户只要拥有一台计算机就能方便的进行相关的操作,而不需要下载任何客户端程序。这样大大简化了客户端,方便了用户。同时,减轻了系统维护与升级的成本和工作量,降低了总体成本,也是汽车销售管理系统能真正成为现实的基础。目前大多数使用的Client/Server方式,虽然起到一定的作用,但由于当修改和增强数据应用时,需要开发客户端应用程序。进行服务器端更改或客户端服务器端同时更新,由此带来的工作量是巨大的。另外,客户端/服务器端方式中的数据库系统之间的数据库结构和数据类型不一致,导致数据库系统之间的转换困难。再有,数据库应用系统是基于特定硬件平台和应用平台,这对数据库应用的移动带来困难。而基于Web方式访问数据库,此问题就迎刃而解。客户端无论是何种平台,只要具有浏览器就可以通过Web页面访问到数据库的内容,这大大降低了对客户平台的要求,而且无论是数据或应用程序都存放与服务器,开发人员可以非常方便地对系统进行更新和维护。免去了针对不同应用平台编写不同前端应用程序。本系统主要是在浏览器上实现对汽车销售的管理的,这里根据需求分析所得到的汽车销售管理系统数据流图,将其优化、求精后,得到系统的详细DFD,采用面向数据流的分析方法,由于系统是事务型的模式特征,因此按照事务分析的映射规则把数据流图映射到软件结构上,建立起系统的框架结构如图3-1所示:35 用户层Jsp页面、Jsp技术业务层控制组件、业务逻辑数据层JDBC、数据增改删图3-1系统框架结构图1>用户层该层是一些JSP页面,主要是利用JSP技术来实现,同时还运用了JavaScript脚步,对一些数据进行页面上的计算,对一些参数和逻辑进行了校验。2>业务层该层是由控制ActionServlet,Action和业务逻辑类JavaBean来实现的。JavaBean里面封装了与数据层的交互关系,以实现所有的业务逻辑。该层通过面向方面编程、面向接口编程,来降低业务之间的耦合度、提高代码的重用性和增强系统拓展性。3>数据层开发中与数据库进行数据交互主要可以归为添加、读取、修改、删除,这些操作占据了系统开发中的大部分时间,同时还需要考虑与数据库交互的性能问题。数据层主要设计目标是为了整个项目提供一个高层、统一、安全和并发的数据持久机制。3.1.1概念结构设计概念结构设计是将需求分析得到的用户需求抽象为信息结构即概念模型的过程,是数据库设计的关键。概念结构是各种数据模型的共同基础,它比数据模型更独立于机器,更抽象,从而更加稳定。汽车销售管理35 系统的概念结构设计中,采用E-R模型来描述,采用自底向上方法。首先利用分类、聚集等数据抽象机制对需求分析阶段收集到的数据进行分类、组织(聚集)、形成实体、实体的属性、标示实体的码,确定实体之间的联系类型(1:1,1:N,M:N)设计出分E-R图,解决各分E-R图之间的属性、命名等冲突,再采用分析法,利用规范化理论消除冗余,经过修改和重构,生成基本E-R图,在合并的过程中,并不是所有的冗余数据和冗余联系都必须加以消除,有时为了提高效率,不得不以冗余信息为代价。经分析,得到系统的基本E-R图如图3-2所示:客户汽车厂商员工仓库购买销售属部门属存入采购取出收款图3.4数据库的E-R图模型图汽车实体E-R图如3-3图所示:汽车型号车名进价出价库存数汽车厂商号图3.3汽车实体E-R图员工实体E-R图如3-4图所示:员工员工号员工密码姓名员工单位号图3-4员工实体E-R图部门实体E-R图如3-5图所示:35 部门部门编号部门名称图3.5部门实体E-R图仓库实体E-R图如图3-6所示:仓库仓库号仓库工作者号仓库名称图3.6仓库实体E-R图厂商实体E-R图如图3-7所示:厂商厂商号厂商名字厂商电话图3.7仓库实体E-R图客户实体E-R图如图3-8所示:35 客户客户号客户姓名联系电话所购汽车号购车时间客户地址图3.8客户实体E-R图2.逻辑结构设计逻辑结构设计的任务就是把概念结构设计好的基本E-R图转换为与选用DBMS产品所支持的数据模型相符合的逻辑结构设计。在汽车销售管理系统中,所选用的DBMS产品为SQLServer2000,因此应将概念模型转换为关系数据模型,关系模型的逻辑结构是一组关系模式的集合。E-R图则是由实体、实体属性和实体之间的联系三个要素组成的。所以将E-R图转换为关系模型实际上是要将实体、实体的属性和实体之间的联系转换为关系模式。根据数据库设计的理论和方法,新闻发布系统的数据模型经过转换和优化,并结合系统的实际处理需求,得到系统的全局逻辑模型,各关系模式如下:1.汽车信息(汽车型号,汽车名称,汽车进价,汽车出价,库存数,厂商号)2.员工信息(员工号,员工姓名,员工单位号,员工密码)3.部门信息(部门编号,部门名称)4.仓库信息(仓库号,仓库员工号,仓库名称)5.厂商信息(厂商号,厂商名字,厂商电话)6.客户信息(客户号,姓名,联系电话,所购汽车号,购车时间,客户地址)7.采购联系(采购单号,采购人员号,采购厂商号,采购时间,采购汽车数量,购车价格)8.存入联系(入库号,入库人员号,入库时间,入库数量,付款单号)9.取出联系(出库号,出库人员号,出库时间,入账单号)10.收款联系(付账单号,付账操作人员号,付账时间,金额,所购汽车号,所购汽车仓库号)11.销售联系(销售单号,销售人员号,购车客户号,销售时间,售价)数据库css包含以下11个表:汽车信息表、员工信息表、部门信息表、仓库信息表、厂商信息表、客户信息表、采购表、入库表、出库表、入帐表、销售表。这些数据表用SQLServer2005实现的,其中所有字段名都用英语单词或其缩写来命名。所有表的结构如下:35 表3.1.1汽车信息表css_car字段名数据类型长度说明Car_noVarchar50汽车号主键Car_nameVarchar50汽车名字Car_priceinint20汽车进价Car_priceoutint20汽车售价Car_storenoVarchar50存放汽车仓库号Car_factorynoVarchar50汽车厂商号此表记录汽车产品的基本信息。其表的名称叫做css_car,汽车号这一属性作为其主键是独一无二的。建立的这个表中包含六个属性,其中有四个数据类型为Varchar而进价和售价则设定为int类型。表3.1.2员工信息表css_worker字段名数据类型长度说明Worker_noVarchar50员工号主键Worker_nameVarchar50员工姓名Worker_deptnoVarchar50员工单位号Worker_passwordtVarchar50员工密码此表记录员工的基本信息。其表的名称叫css_worker,在建立这个表的时候将员工号这一独一无二的属性作为其主键,所有属性都是用长度为50的varchar类型。表3.1.3部门信息表css_dept字段名数据类型长度说明Dept_noVarchar50部门编号主键Dept_nameVarchar50部门名称此表记录员工的基本信息。这个表的名称设为css_dept,部门编号则作为其主键,这个表所包含的属性项很简单,并且都为长度50的varchar类型。表3.1.4仓库信息表css_store字段名数据类型长度说明Store_noVarchar50仓库号主键Store_nameVarchar50仓库名称Store_workernoVarchar50仓库员工号35 此表记录仓库的基本信息。此表的名称建立为css_store,其包含三种属性,仓库号作为其唯一的主键来方便与其他表进行关联,其所有的属性类型都设定为长度50的varchar类型。表3.1.5厂商信息表css_factory字段名数据类型长度说明Factory_noVarchar50厂商号主键Factory_nameVarchar50厂商名称Factory_phoneVarchar50联系电话此表记录厂商的基本信息。这个表的名称设为css_factory,它包含三个属性,这些属性中只有厂商号是其独一无二的代表,因此作为其主键,三个都使用长度50的varchar类型。表3.1.6客户信息表css_customer字段名数据类型长度说明customer_noVarchar50客户号主键customer_nameVarchar50客户姓名customer_phoneVarchar50联系电话customer_addressVarchar50地址customer_carnoVarchar50所购汽车号customer_timeDatatime50购车时间此表记录客户的基本信息。该表中包含六个属性,每个客户都设定其单独的客户号,因此将客户号作为其主键。其中的购车时间是时间属性因此其设为特殊的长为50的Datatime属性,其他的属性都设为长50的varchar类型。表3.1.7采购表css_buy字段名数据类型长度说明Buy_noVarchar50采购单号主键Buy_workernoVarchar50采购人员号Buy_timeDatatime50采购时间Buy_factorynoVarchar50采购汽车厂商号Buy_countint20所购汽车数量Buy_priceinint20购车价格Buy_processVarchar50是否采购35 此表记录采购的基本信息。这个表是一个员工实体和汽车实体之间的联系所对应的表,他所记录的是采购员工采购汽车时必须记录的一些重要信息,它的名称设为css_buy,采购员工的每一次采购都会有其唯一的采购单号,因此这个属性作为其主键。表3.1.8入库表css_in字段名数据类型长度说明In_noVarchar50入库单号主键In_workerNoVarchar50入库人员号customer_timeDatatime50入库时间customer_countint20入库数量customer_paynoVarchar50付款单号此表记录存入的基本信息。这个表反映的是汽车存入仓库时所形成的仓库与汽车之间的存入联系,它记录的是汽车存入仓库时由入库人员记录的汽车入库的重要信息,其名称设为css_in,每次存入仓库时所填的入库单所记录的入库单号作为其标记的主键,而每次入库还得记录下其他以下几种重要信息,也就是其属性:此次进行入库的入库人员号、入库时间、入库的汽车数量以及此次入库存入的汽车在其购买时所填的付款单号,其中入库时间使用长度50的Datatime类型、入库数量使用长20的int型,其他的均使用长50的varchar型。表3.1.9出库表css_out字段名数据类型长度说明Out_noVarchar50出库号主键Out_workerNoVarchar50出库人员号Out_timeDatatime50出库时间Out_recorednoVarchar50入账单号此表记录取出的基本信息。这个表所反映的是仓库的汽车出库时的仓库和汽车之间的取出联系,该表所记录的则是汽车出库时有仓库员工记录的一些重要信息,其名称设为css_out,这个表中的出库号是每次出库时所填写的出库单的出库号,所以作为出库单的唯一标记要设定为主键,这个出库单还得包含其他几种必填的信息:此次出库时进行记录的仓库人员号、出库时间以及这次出库时的车辆卖出时所记录的入库单号,其中出库时间用长50的Datatime型,其他使用长50的varchar型。表3.1.10付账表css_pay字段名数据类型长度说明Pay_noVarchar50付账单号主键Pay_workernoVarchar50付账操作人员号35 Pay_timeDatatime50付账时间Pay_moneyint20金额Pay_storeNoVarchar50所购汽车仓库号Pay_carnoVarchar50付款所购汽车号此表记录收款的基本信息。其反映的是客户给收银员工付款时形成的客户与员工之间的收款联系,其记录的也是收款时需要记录的一些信息,将其名称设为css_pay,此表中独一的付账单号作为其主键,当然还有其他在记录是必须详细记录的信息:此次收款的员工的员工号、付款的时间、本次付款所付的金额、所购买的汽车号以及此车在公司仓库存放的仓库号,其中付账时间用长度为50的Datatime型,付款金额为长度20的int型,其他属性使用长为50的varchar型。表3.1.11销售表css_sell字段名数据类型长度说明sell_noVarchar50销售单号主键sell_workernoVarchar50销售人员号sell_customernoVarchar50购车客户号sell_timeDatatime50销售时间sell_priceint20售价sell_timeDatatime50购车时间此表记录销售的基本信息。这个表同样是联系的表,它反映的是销售员工在销售汽车给客户时客户和销售员工之间的销售联系,这个表记录的则是销售时所必须的一些重要信息,该表名称设为css_sell,在销售人员记录时所填写的销售单号作为其标记的主键,这张记录中还包含其他五种记录时所必须的一些重要信息,也是该表的重要属性:成功完成此次销售的销售人员的编号、为此次交易中购买车辆的客户所设定的编号,销售时间、该客户购买的车辆的售价以及客户购车时的时间,这些重要属性中销售时间和购车时间用长为50的Datatime型,售价使用长20的int型,其他都使用长50的varchar型。3.2系统流程系统流程是在使用系统时的工作过程。由于安全性考虑,本系统的操作要求用户在登录后才能进行。用户登录时,将进行用户身份的判断。一般工作人员和管理由于权限不同,可以实现的功能也不相同,在登录后,系统将限制他们只能操作本身权限所能操作的页面。35 用户登录后,可以对系统进行一些常用的业务操作。对与一般工作人员,比如销售工作人员,可以在汽车信息管理、客户信息管理、销售信息管理进行相关操作,但对修改权限、添加新员工就无法接触了。具体流程如图3.2所示图3.2系统总体流程图3.3系统实现工具汽车销售管理系统在设计中,以windowsxp为开发环境,采用了Eclipse作为开发工具,以Apache下的tomcat为JAVA为服务器,SQLServer2005作为后台数据库,开发了基于浏览器/服务器(Browser/Server,B/S)模式的应用程序。3.4系统实现技术主要使用开发语言和技术为:Jsp/Servlet+JavaBean+Struts+SQLServer2005。本系统使用Java开发语言,以Struts2为基础的MVC大框架。用Struts的controller进行流转的控制,用JSP进行页面显示,在页面中使用jQuery实现在页面上检查是否重复,是否上下一致,并且运用Spring实现了各层的解耦,大大提高了程序的可扩展性,并且易于维护。35 数据库使用微软下的SQLServer2005来存储数据。3.4.1jsp技术JSP技术使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑。网页还能通过tags和scriptlets访问存在于服务端的资源的应用逻辑。JSP将网页逻辑与网页设计和显示分离,支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易。 Web服务器在遇到访问JSP网页的请求时,首先执行其中的程序段,然后将执行结果连同JSP文件中的HTML代码一起返回给客户。插入的Java程序段可以操作数据库、重新定向网页等,以实现建立动态网页所需要的功能。 JSP与JavaServlet一样,是在服务器端执行的,通常返回给客户端的就是一个HTML文本,因此客户端只要有浏览器就能浏览。 JSP的1.0规范的最后版本是1999年9月推出的,12月又推出了1.1规范。目前较新的是JSP1.2规范,JSP2.0规范的征求意见稿也已出台。 JSP页面由HTML代码和嵌入其中的Java代码所组成。服务器在页面被客户端请求以后对这些Java代码进行处理,然后将生成的HTML页面返回给客户端的浏览器。JavaServlet是JSP的技术基础,而且大型的Web应用程序的开发需要JavaServlet和JSP配合才能完成。JSP具备了Java技术的简单易用,完全的面向对象,具有平台无关性且安全可靠,主要面向因特网的所有特点。 自JSP推出后,众多大公司都支持JSP技术的服务器,如IBM、Oracle、Bea公司等,所以JSP迅速成为商业应用的服务器端语言。JSP可用一种简单易懂的等式表示为:HTML+Java=JSP。3.4.2Struts介绍Struts是一个为开发基于模型(Model)-视图(View)-控制器(Controller)(MVC)模式的应用架构的开源框架,是利用JavaServlet和JSP构建Web应用的一项非常有用的技术。由于Struts能充分满足应用开发的需求,简单易用,敏捷迅速,因而吸引了众多的开发人员的关注。35 首先事件是指从客户端页面(浏览器)由用户操作触发的事件,Struts使用Action来接受浏览器表单提交的事件,这里使用了Command模式,每个继承Action的子类都必须实现一个方法execute。Struts重要的表单对象ActionForm是一种对象,它代表了一种应用,这个对象中至少包含几个字段,这些字段是JSP页面表单中的input字段,因为一个表单对应一个事件,所以,当我们需要将事件粒度细化到表单中这些字段时,也就是说,一个字段对应一个事件时,单纯使用Struts就不太可能,当然通过结合JavaScript也是可以转弯实现的。Struts是一个基于SunJ2EE平台的MVC框架,主要是采用Servlet和JSP技术来实现的。Struts把Servlet、JSP、自定义标签和信息资源(messageresources)整合到一个统一的框架中,开发人员利用其进行开发时不用再自己编码实现全套MVC模式,极大的节省了时间,所以说Struts是一个非常不错的应用框架。3.4.3JavaBean介绍JavaBean是一种JAVA语言写成的可重用组件。为写成JavaBean,类必须是具体的和公共的,并且具有无参数的构造器。JavaBean通过提供符合一致性设计模式的公共方法将内部域暴露称为属性。众所周知,属性名称符合这种模式,其他Java类可以通过自省机制发现和操作这些JavaBean属性。 用户可以使用JavaBean将功能、处理、值、数据库访问和其他任何可以用java代码创造的对象进行打包,并且其他的开发者可以通过内部的JSP页面、Servlet、其他JavaBean、applet程序或者应用来使用这些对象。用户可以认为JavaBean提供了一种随时随地的复制和粘贴的功能,而不用关心任何改变。3.4.4jQuery介绍query是继prototype之后又一个优秀的Javascrīpt框架。它是轻量级的js库(压缩后只有21k),它兼容CSS3,还兼容各种浏览器(IE6.0+,FF1.5+,Safari2.0+,Opera9.0+)。jQuery使用户能更方便地处理HTMLdocuments、events、实现动画效果,并且方便地为网站提供AJAX交互。jQuery还有一个比较大的优势是,它的文档说明很全,而且各种应用也说得很详细,同时还有许多成熟的插件可供选择。jQuery能够使用户的html页保持代码和html内容分离,也就是说,不用再在html里面插入一堆js来调用命令了,只需定义id即可。35 第四章系统的具体实现4.1数据库的模块设计数据库的概念结构设计完毕后,现在可以将上面的数据库概念结构转化为某种数据库系统所支持的实际数据模型,也就是数据库的逻辑结构。根据数据量的大小不同,系统可以使用不同的数据库。本系统使用的是SQLServer2005数据库。SQLServer2005数据库使用方便,数据存储量也比较大,是比较适合中小型网站开发的数据库。对于大数据量的网站,可以使用Oracle数据库。4.1.1数据库的建立启动SqlServer2005,输入正确的用户名字和密码,要确保用户名和密码与系统中的配置文件的userName,password相同,建立数据库css,然后依次建立相关表,在表中记得添加主键,系列号主动生成,如图4.1所示:图4.135 表结构的设计完全是按照逻辑结构设计中为各表设计的结构来实现的,各字段的设置在逻辑结构设计中也有详细说明。这里仅以-----表为例,展示表的设计结果如图4-2所示。图4.24.2系统开发平台的建立以Java为主流开发语言进行程序设计,应用Web、Jsp、Servlet、JavaBean等J2EE技术和以Struts为框架实现系统的开发。在J2EE体系中,用Servlet控制,用JSP变现,而业务层用JavaBean实现。开发环境选择Windowxp,开发工具使用Eclipse,JDK为1.6,以Apache下Tomcat作为J2EE服务器,系统的数据库平台选用SQLServer2005系统。硬件开发环境为1G内存以上pc。4.3系统具体模块功能和页面4.3.1网站主页用户在浏览器输入网址,会出现一个login的登录界面,员工需要输入用户名和密码进入不同的界面,并进行相关操作。以下以管理员身份登录并进入管理员首页,如图4.3.1.1和4.3.1.2所示:35 图4.3.1.1登录界面图4.3.1.2网站首页管理员首页主要展示所有模块的基本信息列表,并通过首页上的标注可以连接到二级页面,进行操作。严格权限限制,除管理员之外,任何角色都只能进入自己的模块,互不干涉。35 4.3.2采购管理模块以采购人员身份进入到采购管理模块,查看库存信息,然后填写采购计划,接着查看新的采购单,也就是被财务部门审批后的采购单,并可以对过期的采购单进行管理,如图4..3.2.1所示:图4.3.2.1制定采购计划采购计划主要是需要采购的产品的相关信息,是否处理默认是“N”,并通过提交,传给财务部。4.3.3财务管理模块以财务人员的身份进入财务管理模块,查看库存信息和销售信息,核对采购部门提交的采购单,然后点击修改进行处理,是否处理一栏则自动将“N”变为“Y”,然后返回给采购部门,如图4.3.3.1所示:35 图4.3.3.1处理采购单4.3.4销售管理模块以销售人员身份进入销售管理模块,填写销售信息,提交给财务部。并对客户进行信息注册,以方便售后服务和长远发展。如图4.3.4.1所示:图4.3.4.1销售信息录入35 4.3.5仓库管理模块以仓库人员身份进入仓库管理模块,根据采购计划填写入库单,根据销售信息填写出库单,以入库和出库信息来统计仓库存储信息,并将存储信息提交给各部门。如图4.3.5.1所示:图4.3.5.1仓库信息列表4.3.6系统管理员模块系统管理员主要包括对公司员工、部门、产品以及客户等所有信息的相关操作。如图4.3.6.1所示:35 图4.3.6.1员工信息列表4.4系统流程的代码实现4.4.1代码部分和简介当系统在Tomcat中发布后,首次接受到来自浏览器的访问要求时,系统首先会完成自身的初始化,加载解析系统的配置文件,如data_sources.xml、bean.xml等。如代码:packagecom.softstone.mvc.db;importjava.io.*;importjava.net.*;importjava.util.*;importjavax.sql.DataSource;importorg.dom4j.*t;publicclassDataSourceFactory{privatestaticfinalStringDEFAULT_DATA_SOURCE_NAME="data-sources.xml";privatestaticDataSourceFactoryfactory=newDataSourceFactory();privateMapdataSources;privateDataSourceFactory(){}publicvoidinit()throwsDataSourceInitException{init(this.getClass().getResourceAsStream(DEFAULT_DATA_SOURCE_NAME));}35 @SuppressWarnings("unchecked")publicvoidinit(InputStreamin)throwsDataSourceInitException{if(dataSources!=null){thrownewDataSourceInitException("不能重复初始化");}else{dataSources=newHashMap();}//解析SAXReadersaxReader=newSAXReader();try{Documentdoc=saxReader.read(in);Elementroot=doc.getRootElement();Iteratoriterator=root.elementIterator("data-source");while(iterator.hasNext()){Elementelt=iterator.next();Stringkey=elt.attributeValue("name");DataSourceImpldataSourceImpl=newDataSourceImpl();dataSources.put(key,dataSourceImpl);dataSourceImpl.setDriverClassName(elt.elementTextTrim("driverClassName"));dataSourceImpl.setUrl(elt.elementTextTrim("url"));dataSourceImpl.setUsername(elt.elementTextTrim("username"));dataSourceImpl.setPassword(elt.elementTextTrim("password"));}}catch(DocumentExceptione){thrownewDataSourceInitException("解析配置文件出现异常");}}publicvoidinit(URLurl)throwsFileNotFoundException,URISyntaxException,DataSourceInitException{init(newFile(url.toURI()));}publicvoidinit(Filefile)throwsFileNotFoundException,DataSourceInitException{35 init(newFileInputStream(file));}publicstaticDataSourceFactorygetDataSourceFactory(){returnfactory;}publicDataSourcegetDataSource(StringdataSourceName){if(dataSources==null){try{init();}catch(DataSourceInitExceptione){e.printStackTrace();}}returndataSources.get(dataSourceName);}}系统解析请求中request中的url,然后对照相应的配置文件中的所要访问的action从而转发给该action去处理请求,action再根据所处理的结果是success还fail来给系统转发相应的页面。如出库的action:packagecom.car.cjz.action.impl;importjava.util.List;importcom.car.bean.ChuKu;importcom.car.cjz.action.ChuKuAction;importcom.car.cjz.dao.ChuKuDao;importcom.car.cjz.sort.Add;importcom.softstone.mvc.ActionSupport;importcom.softstone.mvc.PagerImpl;publicclassChuKuActionImplextendsActionSupportimplementsChuKuAction{privateChuKuchuKu;privateChuKuDaochuKuDao;publicvoidsetChuKuDao(ChuKuDaochuKuDao){this.chuKuDao=chuKuDao;}@Override35 publicvoidinitModel(){chuKu=newChuKu();chuKu.setChuKuNo(request.getParameter("chuKuNo"));chuKu.setNumber(request.getParameter("number"));chuKu.setConactPerson(request.getParameter("conactPerson"));chuKu.setNewDate(request.getParameter("newDate"));}@Overridepublicvoidvalidate(){//TODOAuto-generatedmethodstub}@OverridepublicStringchuKuById(){ChuKuku=chuKuDao.chuKuById(chuKu.getChuKuNo());request.setAttribute("chuKu",ku);returnSUCCESS;}@OverridepublicStringchuKuDelete(){if(chuKuDao.chuKuDelete(chuKu.getChuKuNo())>0)returnSUCCESS;returnERROR;}@OverridepublicStringchuKuInput(){request.setAttribute("chuKus",chuKuDao.chuKuList());if(chuKu.getChuKuNo()!=null||!"".equals(chuKu.getChuKuNo())){request.setAttribute("chuKuNo",request.getParameter("chuKuNo"));}returnSUCCESS;}@OverridepublicStringchuKuInsert(){if(chuKuDao.chuKuInsert(chuKu)>0)35 returnSUCCESS;returnERROR;}@OverridepublicStringchuKuList(){PagerImplpagerImpl=newPagerImpl();intpageNo,pageSize;try{pageNo=Integer.parseInt(request.getParameter("pageNo"));}catch(Exceptione){pageNo=1;}try{pageSize=Integer.parseInt(request.getParameter("pageSize"));}catch(Exceptione){pageSize=7;}pagerImpl.setPageNo(pageNo);pagerImpl.setPageSize(pageSize);ListchuKus=chuKuDao.chuKuList(pagerImpl);request.setAttribute("chuKus",chuKus);request.setAttribute("idNo",Add.add_i("tb_chuku"));request.setAttribute("pager",pagerImpl);returnSUCCESS;}@OverridepublicStringchuKuUpdate(){if(chuKuDao.chuKuUpdate(chuKu)>0)returnSUCCESS;returnERROR;}}35 第五章系统测试和发布5.1系统测试软件测试就是利用测试工具按照测试方案和流程对产品进行功能和性能测试,甚至根据需要编写不同的测试工具,设计和维护测试系统,对测试方案可能出现的问题进行分析和评估。执行测试用例后,需要跟踪故障,以确保开发的产品适合需求。进入系统登陆界面选择性输入用户名和密码,前台验证程序执行是否为空的验证,输入管理的用户名和密码,进入管理员页面,执行增删查改操作成功。分别输入其他部门的用户名和密码,进入各部门相关模块,执行增删查改操作成功。测试结果证明,各功能均已实现,暂未发现漏洞,整个系统业务流程顺利执行,项目通过。5.1.1测试方法的介绍软件测试一般分为静态测试和动态测试两大类,而动态测试方法中又根据测试用例设计方法不同,分为白盒测试和黑盒测试。1.静态测试静态测试是指测试程序不在机器上运行,而是采用人工检测和计算机辅助静态分析的手段对程序进行检测。2.动态测试动态测试是指通过运行程序而发现的错误。动态测试又可以分为黑盒测试和白盒测试两种。(1)黑盒测试黑盒测试也称为功能测试。这种方法将软件看成是一个黑盒子,在完全不考虑软件的内部结构和特性的情况下,测试软件的外部特性。利用黑盒测试设计测试用例的方法主要有:等价类划分法、边界值分析法、错误推测法和因果图法。(2)白盒测试白盒测试也称为结构测试。这种方法将软件看成是透明的盒子。根据程序的内部结构和逻辑来设计测试用例。白盒测试的主要方法有:逻辑覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖、路径覆盖。5.1.2链接测试在编译完成后,就要对每个组件进行测试。本系统一共有DaoImpl、actionImpl、configImpl等包链接是Web应用系统的一个主要特征,它是在页面之间切换和指导用户去一些不知道地址的页面的主要手段。链接测试可分为三个方面:1.测试所有链接是否按指示的那样确实链接到了该链接的页面;35 1.测试所链接的页面是否存在;2.保证Web应用系统上没有孤立的页面,所谓孤立页面是指没有链接指向该页面,只有知道正确的URL地址才能访问。链接测试可以自动进行,现在已经有许多工具可以采用。链接测试必须在集成测试阶段完成,也就是说,在整个Web应用系统的所有页面开发完成之后进行链接测试。该阶段测试主要检查各个网页中是否存在超级链接掉链的问题,包括页面、图片、CGI程序等的链接。如果是图片掉链,那么页面中该图片的位置可能出现一个带叉标记的空框。遇到这种情况,需要检查文件名及文件路径是否正确。在此阶段,我在认真分析、理清各模块、各页面关系的基础上,针对模块之间相互调用时接口会出现的问题,测试各模块接口及各页面中超链接页面中链接的准确性,测试结果是所有链接接口都能正确接入相连页面。5.1.3测试结果(1)用户登陆测试,系统为不同的用户设置不同的管理权限。分部以不同的身份进行登录,都能按规定权限进入不同的界面。(2)数据查询测试,数据查询时系统的一个主要功能。在查询界面下,输入各种可能的查询条件,查询都能讲符合条件的记录显示在页面上。(3)数据输入、修改、删除已经更新以及更新测试,在数据录入界面上,输入一条记录并对数据库进行更新,通过查询检测到数据已经记录到数据库中。输入不符合规定的数据时,有效性验证控件能验证出数据的错误,要求用户重新输入。数据修改和删除测试与录入测试相似,修改或删除后检测数据库的数据都发生相应的改变。汽车销售管理系统实现了汽车信息管理、客户信息管理、销售信息管理、报表信息管理等功能。无论是录入、修改、删除还是查询、统计等功能都符合系统设计的要求。实现了汽车销售管理系统的简洁化,方便信息交流。汽车销售管理系统操作界面简单容易,人机交互方便快捷,使原先复杂、易出错的操作变得非常简单迅速,大大缩短了业务处理流程,提高了工作效率。经过测试,本汽车销售管理信息系统已经满足了汽车销售企业信息化的要求。5.2结论随着计算机技术的不断发展,企业信息化成了企业在竞争中处于不败地位的有效手段之一。而管理信息系统能够及时全面地提供信息和数据,简化统计工作。在汽车销售管理系统设计和开发实践中,主要进行下列工作:35 详细了解汽车销售对软件的要求、工作环境、开发的目的已经该系统应达到的效果,对系统进行大模块进行开发,保证了系统开发的效率。根据模块化得构思,对该系统进行总体设计,包括系统的框架设计、结构设计、组件设计等、并分配模块中的功能和所应达到的效果。以模块为单位,介绍了每个模块的详细设计与具体实现。采用黑盒测试完成系统的单元测试和功能测试。并对其测试出现的问题及时反馈并做以及时的处理。所开发的汽车销售管理系统功能相对而言比较集中,而且各个功能模块中重复交叉的应用逻辑较多。在这种环境下应用组件技术进行系统开发极大的方便了软件的二次开发和代码重用,可以大大提高软件跨系统平台和软件平台的通过性并缩短开发周期、提高开发效率,并减少了后期维护工作量。经过测试和使用结果表明,系统稳定可靠,满足了系统处设想的要求。35 结束语到此项目完成,虽然把握了大体上的主要业务,但是其中隐藏的业务联系,如果不实际的去了解整个业务流程,是很难把握的。尤其是财务当面,因为一个公司最重要的就是财务,所有的业务都要围绕着财务去运转。由于未进行实际的调研和深入的考察,本系统忽略了较多实际的东西,这些处理起来异常困难。这个项目,让我初步了解了汽车销售与管理所牵扯的大体流程,也明白了为什么需求分析会在软件开发中占据那么重要的地位,这对于以后我们进行开发提供有力帮助。还有就是团队了,虽然开发这个系统只有两个人,但是缺少任何一方,这个项目就无法完成,它集聚了两个人的知识,特长和宝贵的时间精力。这些所有心得对于我以后做开发会有很大帮助。由于由于受自身水平和能力的限制,因此对于有些问题可能考虑的不是非常的全面,存在一定的问题。对于系统的测试还不够完善,所以还需要通过不断的学习与实践对此系统进行改进与总结。今后还要根据该系统运行出现的问题及提出的要求,对系统进行进一步的改进和完善,恳请老师和同学予以批评指正。35 致谢现在,大学生活即将结束。回首这段时光有很多值得回忆的东西。自己的每一点进步都是和老师、同学真诚的关怀和帮助分不开的。在这里,我要感谢每一位教导过我的老师,是他们的谆谆教导,使我顺利的完成了大学的学业。特别要感谢肖敏老师在这半年中对我的指导。没有肖敏的指导,我现在恐怕还没有完成毕业设计。再次谢谢肖敏老师的每次抽出休息的时间帮我指导毕业设计。感谢我的爸爸妈妈,是他们给与我这一切。可是,我们从来没有向爸爸妈妈说过一句感谢的话。我们成长的过程中遗忘了太多。父母就是我们最容易遗忘的人,也是我们最应该感谢的人。而我现在能做的,也仅仅是在这里说句感谢的话。感谢所有帮助和关心过我的同学、朋友,是他们和我一起渡过了这段难忘的时光。虽然本文经过我多次修改,但由于我的知识水平有限,仍然存在这许多不足之处,敬请各位老师指正并提出宝贵意见。最后感谢在百忙之中审阅我论文的老师和参加答辩会的全体老师和同学。35 参考文献[1]王珊,萨师煊.数据库系统概论[M].北京:高等教育出版社,2004[2]张建伟,梁树军.数据库技术与应用—SQLServer[M].北京:人民邮电出版社,2008[3]程志艳,张亮,马建红.JSP使用简明教程[M].北京:清华大学出版社,2008[5]叶核亚.Java2程序设计实用教程[M].北京:电子工业出版社,2007[4]邬继承.Struts与Hibernate使用教程[M].北京:电子工业出版社,2008[6]文俊郝.安全增强的数据库系统的模型构建[J].计算机应用2005第8期1734-1736[7]陈佳.信息系统开发方法教程[M].北京:清华大学出版社,2000[8]VenkataSR,Rchaganti.ActiveServerPages[M].西安:电子工业出版社,2000[9]StephenWalther.ActiveServerPages210Unleashed揭密[M].北京:北京希望电子出版社,2000.11[10]MarkSpenik.Access2000数据库管理员指南[M].北京:机械工业出版社2001[11]藏杨,秦冬,李育龙.ASP软件工程案例精解[M].北京:电子工业出版社,2005[12]汤代禄、韩建俊.ASP案例开发集锦[M].北京:电子工业出版社,2004[13]BruceEckel.ThinkingInJava.America:electronicbooks,2004:41~56.[14]季久峰、李志等.ASP办公自动化系统开发实例导航[M].北京:人民邮电出版社,2003[15]TimothyCLethbridge,RobertLaganiere.Object-OrientedSoftwareEngineering[M].北京:机械工业出版社,2003[16]Tonks,A.,Smith,R[J].Informationinpractice[J].BMJ313:438-438(1996)35