基于WEB的网上书城管理系统的设计与实现_第1页
基于WEB的网上书城管理系统的设计与实现_第2页
基于WEB的网上书城管理系统的设计与实现_第3页
基于WEB的网上书城管理系统的设计与实现_第4页
基于WEB的网上书城管理系统的设计与实现_第5页
已阅读5页,还剩70页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘要本课题搭建了皖北书城的网络管理平台,它集销售与管理于一体,共分七个模块,实现功能如下:销售管理,主要进行前台的用户管理和图书销售工作,采购管理,主要是对货物进行采集,继而对定单进行各个方式的查询,财务管理,主要是负责员工工资的发放,人员管理,主要是负责公司内部人员的考勤,工资信息计算以及基本信息的操作,客服管理,主要负责处理用户的留言工作,库存管理,主要是用于存放各类图书,进行入库和出库操作,系统管理,主要用于数据库的恢复与备份。该系统采用基于JAVA开发的WEB平台,后台数据库采用MySQL。本系统严格的按照MVC开发模式,使各个层面相互独立,便于系统的维护以及以后系统的业务修改。本文主要介绍使用JAVA语言构建皖北书城网络管理平台的详细过程,包括可行性研究、需求分析、总体设计、详细设计、测试五个阶段。重点介绍MVC开发的具体操作方式及其思想。。关键词:B/S、JAVA、MVC、MySQL

Abstract

ThesubjectofWanbeiBookstorebuiltanetworkmanagementplatform,itsetsalesandmanagementinone,consistsofsevenmodules,andfunctionsasfollows:salesmanagement,theprospectsforthemainusermanagementandbooksales,procurementmanagement,themainAcquisitionofgoods,thentheordersforallmannerofenquiries,financialmanagement,ismainlyresponsibleforthewagesofemployees,personnelmanagement,ismainlyresponsibleforthecompany'sinternalstafftimeandattendance,wagecalculationandbasicinformationofinformationoperations,customerservicemanagement,Isresponsibleforhandlingtheuser'smessages,inventorymanagement,ismainlyusedforstoringallkindsofbooks,alibraryandstorageoperations,systemsmanagement,mainlyfortherehabilitationanddatabasebackup.

ThesystemisbasedontheJAVAplatformforthedevelopmentoftheWEB,backgrounddatabaseusingMySQL.ThissystemstrictlyinaccordancewiththeMVCdevelopmentmodel,sothatalllevelsofmutualindependence,forthemaintenanceandoperationsafterthemodifiedsystem.ThispaperdescribestheuseoflanguageJAVAConstructionofWanbeiBookstorenetworkmanagementplatformforthedetailedprocess,includingfeasibilitystudies,needsanalysis,design,detaileddesign,testingfivestages.MVCfocusonthedevelopmentofspecificoperationsandtheirthinking..Keywords:B/S,JAVA,MVC,MySQL目录TOC\o"1-3"\h\u1开发背景 11.1课题的目的及意义 11.2现状分析 12.可行性研究 22.1功能需求 22.2可行性研究 22.2.1技术可行性 22.2.2操作可行性 22.2.3经济可行性 23相关知识和开发工具简介 33.1JAVA的面向对象特性 33.2Hibernate技术介绍 33.3Struts技术介绍 33.4开发工具的选择 43.4.1应用程序开发环境—Eclipse3.2.2+MyEclipse5.5.1 43.4.2Tomcat应用服务器 43.4.3MySQL数据库 43.5MVC开发模式介绍 53.5.1为什么要用MVC 54需求分析 64.1运行环境的配置 64.2MVC开发模式定位 64.3系统流程设计 64.3.1系统模块划分 64.3.2功能模型分析(DFD) 74.3.3书城管理系统E-R图 105总体设计 135.1总体功能模块图 135.2业务总体设计 155.2.1业务总体设计用例 155.2.2模块总体设计 165.3数据库逻辑设计 166详细设计 186.1Model层设计 186.1.1采购管理 186.1.2财务管理 186.1.3客服管理 196.2View层设计 206.2.1登陆管理 206.2.2采购管理 236.1.2财务管理 246.1.3客服管理 256.3Contoller层设计 256.4数据库表结构设计 277软件测试 297.1什么是软件测试 307.2软件测试的规则 307.3软件测试的对象 307.4单元测试 307.4.1登陆测试 307.4.2采购管理测试测试 317.4.3财务管理测试测试 337.4.4客服管理测试测试 347.5集成测试 357.5.1测试流程图 357.5.2集成测试 36结论 37致谢 39参考文献 40附录1主要代码部分 41附录2中英文资料翻译部分 49绪论

自从1946年世界上第一台电子计算机旦生,70年代第一个计算机网络ARPANET实现互联;随后在计算机技术与网络技术发展的基础上,根据人们信息交换的需要,产生了Internet,从此标志着人类进入了电子信息化时代。九十年代后期计算机与Internet的普及逐渐进入了企业、普通百姓家庭;企业为了探求新的管理及经营模式,在企业内部建立起自己的网络并与Internet互联起来,实现了同外界信息交换,同时创造了网络营销模式;人们对信息与新产品的需求促使了他们网上购物的欲望。由于网络市场存在着需求与供给关系,第一代的电子商务模式——-企业对消费者(BtoC)随即产生。电子商务出现初期存在着许多制约其发展的因素,如安全保障、支付手段与法律保障等,但今天网络信息技术不断发展与法律法规不断完善、人们教育水平提高与传统经济观念向新网络经济的转变,制约网络商务活动的因素得到了有效解决,从而促使电子商务逐步走向成熟,并出现了多种新的发展模式,包括企业间营销(BtoB)模式等。在传统经济模式里,人们购物跑商场,为了购得心愉的商品不得不累半天;企业为了赢得合同不得不围在谈判桌上群雄论战。如今人们可以通过网络坐在家中浏览网上商店,选择合适的产品,还可以货比三家,自已完成购物过程,进入自由轻松购物新时代;企业通过网络洽谈业务,网上采购与接受定单,企业在网上设置了商店,不由得会发现世界就像在面前。企业与客户通过网上订购,电子支付等,使他们的关系变得如此贴近,从而使商务活动发生深刻变革。改变企业的生产与经营活动,也带来了人们的生活方式、文化教育、政府职能等的转变,电子商务的出现将真正把人类带入信息社会。1开发背景1.1课题的目的及意义就书城系统而言,由于网络已经覆盖全球,信息量大而独具优势。售书的理念也很简单,就是读者可以自己寻找自己的所爱。换句话说,网上书城近在咫尺,并且永不下班关门,读者可以随时随地自由地查询和订购图书,读者无需亲临书城,一档一档地找,一本一本地翻,只要坐在电脑前,开机上网即可买到所需书籍,而且读者的挑选余地也大多了,检索也很方便。另外,我们应该感受的到,图书选购必得翻阅详看,耗时费力,特别是热衷于图书的朋友,大多的爱好者还是奋力开拓事业或者苦心求学的深造者,时间对他们而言无比宝贵,网上书城节省了大量时间,这对于那些没有时间经常逛传统书城或其住所离传统书城较远的读者来说,具有实际意义。因此网上售书必将有长足的发展。开办网上书城系统也可以为在校大学生提供方便、廉价、高效的服务,促进文化传播,帮助国家和学校培养优秀的人才,具有长远的社会效益和经济效益。本次毕业设计所从事的课题题目是基于WEB的网上书城管理系统的设计与实现。课题的目的:应用当前高速发展的计算机技术,组建网上书城管理系统。随着计算机及网络技术的飞速发展,Internet/Intranet应用在全球范围内日益普及,当今社会正快速向信息化社会前进,信息自动化的作用也越来越大。从而使我们从繁杂的事务中解放出来,提高了我们的工作效率。

计算机信息化管理有着储存量大,速度快等许多优点,提供给我们的处理信息及时快捷,因此我们利用计算机提供给我们的信息对在线网上购书进行管理,经过对多个开发软件及数据库软件的优越性进行评估之后,最终选择MVC架构,Java+MySQL+Hibernate+Struts开发一个B/S结构的皖北书城管理系统。1.2现状分析网上书城是随着网络技术的发展而出现的一种新型图书销售渠道。它通过人与电子通信方式的结合,依靠计算机网络,以通讯技术为基础,实现图书销售的网上交易。网上书城同传统的店面书城相比,网上书城的经营方式和销售渠道是全新的;它24小时的全天候和全方位服务是店面书城所不能比及的;成本低廉更是开设网上书城的主要原因。而与其他商品相比,书籍运送几乎不怕碰撞碎裂,不具时效性;同时书本具有功能单一,形式简单,易于判断和选择而独具优势,最适合于网上交易;再次是单价低,降低了消费者第一次在网络购物的门槛。由于电子商务的迅猛发展,功能集中于一体化似乎越来越方便,前台用于销售,后台用于服务的各个管理,无需办公室,无需担心喧闹的环境,一台电脑,一个浏览器外加一个工作密码,便可以将大家集中到同一个管理平台中,避免了现实中各个方面带来的不便,工作效率也会大大的得到提高。2.可行性研究2.1功能需求皖北书城管理系统,同时为客户和服务人员服务,在前台,用户可以通过注册信息而登陆到本系统中进行图书的采购,在后台,通过人员管理模块可以分配用户名与密码,然后各个模块的服务人员通过自己的密码和用户名登陆,进而在自己所管辖的管理模块中进行业务的相关操作。2.2可行性研究可行性研究分为技术可行性研究、操作可行性研究、经济可行性研究。2.2.1技术可行性该系统选择主体语言为Java,因为学习这门语言已经有了相当长的一段时间,对于语言上的一般问题都能够解决,并且电子购物的资源在网络上相当的丰富,当遇到困难时,我们可以向网络寻求帮助.本系统采用的数据库是MYSQL,该数据库简单实用,书写SQL语言方便易行,是我们该系统的最佳选择,在业务层与控制层我们选用Hibernate和Struts,这两门技术我们的培训课程都有涉及到,因此在整体部署上面应该不存在问题,通过以上的理论分析,可得知完成此系统的开发在记述上是可行的.2.2.2操作可行性本书城管理系统的开发环境为Linux,在业务需求中我们只是实现大体的基本业务操作,对于普通业务的增,删,改,查,我们有了一定的理论和实践基础,因此在实现该系统的业务方面,操作是可行的2.2.3经济可行性虽然该系统用于毕业设计课题,不应考虑经济可行性问题,,但从理论上看,该系统功能简单,实现了销售管理一体化服务,业务操作也只是基本的数据库操作而已,成本的花费应该不会过高,并且若该书城实现了该平台的开发,可省去大量现实销售管理中的好多开销,更有甚于提高赢利额度和业务范围,因此该系统在网络上是现实可行的.

3相关知识和开发工具简介3.1JAVA的面向对象特性Java吸取了C++面向对象的概念,它主要具有四个显著特点:封装,抽象,继承和多态。封装,它是指隐藏对象的属性和实现细节,仅仅对外公开接口,这样做的优点是便于使用者正确,方便地理解和使用系统,防止使用者错误的修改系统的属性。降低各个系统之间的松藕合关系,提高软件的可重用性。抽象,是指从特定角度出发,从现实存在的一些事物中抽取我们所关注的特性,形成一个新的事物的思维过程。在JAVA中抽象体现在三个方面,从问题领域的事物到软件模型中对象的抽象,从对象到类的抽象和从子类到父类的抽象。继承,是指子类和父类之间存在的扩展关系,子类继承了父类的属性和方法,同时,子类还可以扩展出新的属性和方法,并且还可以覆盖父类中方法的实现方式。JAVA力求简单,只实现单继承,但是可通过接口实现不同的方法,继承提高了系统的可重用性和可扩展性,现在社会上流行的所谓开源框架便是利用了代码的可重用,可扩展这一特性。多态,是指当系统A访问系统B的服务时,系统B可以通过多种实现方式来提供服务,而着一切对系统A是透明的,它实现了方法的动态绑定。3.2Hibernate技术介绍Hibernate是一种Java语言下的对象关系映射解决方案。它是一种自由、开源的软件。它用来把对象模型表示的对象映射到基于SQL的关系模型结构中去,为面向对象的领域模型到传统的关系型数据库的映射,提供了一个使用方便的框架。Hibernate不仅管理Java类到数据库表的映射(包括从Java数据类型到SQL数据类型的映射),还提供数据查询和获取数据的方法,可以大幅度减少开发时人工使用SQL和JDBC处理数据的时间。它的设计目标是将软件开发人员从大量相同的数据持久层相关编程工作中解放出来.它的优点是:

a.Hibernate使用Java反射机制而不是字节码增强程序来实现透明性。

b.Hibernate的性能非常好,因为它是个轻量级框架。映射的灵活性很出色。

c.它支持各种关系数据库,从一对一到多对多的各种复杂关系3.3Struts技术介绍Struts是在JSPModel2的基础实现了MVC设计模式的WEBFramework。基于Struts构架的WEB应用程序基本上符合JSPModel2的设计标准,可以说是MVC设计模式的一种变化类型。它的目的是为了减少在运用MVC设计模型来开发Web应用的时间,它将可以完成其中一些繁重的工作。如果想混合使用Servlets和JSP的优点来建立可扩展的应用,Struts是一个不错的选择。Struts由一组相互协作的类、Serlvet以及丰富的标记库(jsptaglib)和独立于该框架工作的实用程序类(Validator)组成。

Struts有其自己的控制器(Controller),同时整合了其他的一些技术去实现模型层(Model)和视图层(View)。在模型层,Struts可以很容易的与数据访问技术相结合,包括EJB,JDBC和ObjectRelationBridge。在视图层,Struts能够与JSP,VelocityTemplates,XSL等等这些表示层组件想结合。3.4开发工具的选择3.4.1应用程序开发环境—Eclipse3.2.2+MyEclipse5.5.1 Eclipse是一个开放源代码的,基于Java的可扩展开发平台。就其本身而言,他只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse附带了一个标准的插件集,其中就包括Java开发工具(JavaDevelopmentTools,JDT).Eclipse3.2.2是目前的最新版,我们可以在其官方网站/eclipse/downloads/index.php上下载,。MyEclipse是Eclipse的插件,集成了对Spring,Struts,Hibernate等主流JavaEE组件开发插件的支持,大大简化了JavaEE应用的开发。不同版本的MyEclipse都要求与特定版本的Eclipse配合,这在下载MyEclipse时都能看到,与Eclipse3.2.2配套使用的是MyEclipse5.5.1,Eclipse5.5.1的试用版本可以在其官方网站上下载。3.4.2Tomcat应用服务器目前支持JSP的应用服务器是较多的,Tomcat是其中较为流行的一个Web服务器,Tomcat是一个免费的开源的Serlvet容器,在Tomcat中,应用程序的部署很简单,你只需将你的WAR放到Tomcat的webapp目录下,Tomcat会自动检测到这个文件,并将其解压。你在浏览器中访问这个应用的Jsp时,通常第一次会很慢,因为Tomcat要将Jsp转化为Servlet文件,然后编译。编译以后,访问将会很快。Tomcat也具有传统的Web服务器的功能:处理Html页面。但是与Apache相比,它的处理静态Html的能力就不如Apache。我们可以将Tomcat和Apache集成到一块,让Apache处理静态Html,而Tomcat处理Jsp和Servlet。Tomcat是一个很好的工具,不仅仅因为其免费,功能强大,更因为其开放性,越来越受到人们的重视。3.4.3MySQL数据库MySQL是由MySQLAB公司开发,发布并支持的全世界最流行的开源SQL数据库管理系统,MySQL5.0较以前的版本有了很大的改进,对存储过程,触发器和视图有了很好的支持,成为开源数据库之首选。3.5MVC开发模式介绍 MVC是一个设计模式,它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型(Model)、视图(View)、控制器(Contoller)。它们各自处理自己的任务.3.5.1为什么要用MVC在MVC模式以前,WEB程序开发都是将像数据库查询语句这样的数据层代码和像HTML这样的表示层代码混在一起。经验比较丰富的开发者会将数据从表示层分离开来,但这通常不是很容易做到的,它需要精心的计划和不断的尝试。MVC从根本上强制性的将它们分开。尽管构造MVC应用程序需要一些额外的工作,但是它给我们带来的好处是无庸质疑的。首先,最重要的一点是多个视图能共享一个模型,随着业务的发展,现在需要用越来越多的方式来访问你的应用程序。对此,其中一个解决之道是使用MVC,无论你的用户想要Flash界面或是WAP界面;用一个模型就能处理它们。由于你已经将数据和业务规则从表示层分开,所以你可以最大化的重用你的代码了。因为模型是自包含的,并且与控制器和视图相分离,所以很容易改变你的应用程序的数据层和业务规则。如果你想把你的数据库从MySQL移植到Oracle,只需改变你的模型即可。一旦你正确的实现了模型,不管你的数据来自数据库或是LDAP服务器,视图将会正确的显示它们。由于运用MVC的应用程序的三个部件是相互独立,改变其中一个不会影响其它两个,所以依据这种设计思想你能构造良好的松藕合的构件。4需求分析4.1运行环境的配置硬件需求:PIII/256M/10G及以上配置,要求为皖北管理系统分配足够内存空间。操作系统需求:Windows2000及以上操作系统(推荐),也可以使用SunSolaris等Linux操作系统数据库软件需求:MySQL中文版数据库(推荐)中间件软件需求:tomcat系列服务器(本系统采用5.X版本为宜)4.2MVC开发模式定位本系统采用B/S设计模式,利用Java语言开发Web应用程序,提供JSP+Struts+Hibernate框架对系统的程序代码结构进行分层。分层的策略如下:service表示层service表示层StrutsStrutsAction,ActionForm,Jsp,Struts-config.xml,etc.DAO业务层HibernatesessionManagement持久层HibernateDataSource/ConnectionPoolTransactionsBusinessServiceClassesQueryLanguageSupportandotherHibernateServicesJSP--Struts—Hibernate架构系统流程图如图4-14.3系统流程设计4.3.1系统模块划分本系统由七个模块组成,分别为销售管理,系统管理(陶金负责),人事管理,库存管理(黄修海负责),采购管理,财务管理,客服管理(邢阿亮负责)。如下图所示.客服管理财务管理皖北书城管理系统客服管理财务管理皖北书城管理系统系统管理采购管理系统管理采购管理库存管理销售管理销售管理库存管理销售管理销售管理人事管理人事管理图4-1系统模块图4.3.2功能模型分析(DFD)绘制数据流图的基本要求:系统的顶层图使用来表示整个系统的功能结构。随着需求分析活动的逐渐深入,较高抽象级别上的复杂转换可以精化为一系列的相互关联的数据流和子转换。数据流图描述系统的逻辑模型,在设计数据流图只需考虑系统必须完成的基本逻辑功能,完全不需要考虑如何具体的实现这些,该系统的数据流程图可确定如下:系统顶层图如图4-2所示:第0第0层皖北书城管理管理员管理事务管理事务回应更改信息业务操作图4-2数据流图——顶层图系统一层图如图4-3所示:皖北书城管理1皖北书城管理1销售管理2人员管理3库存管理4采购管理5财务管理6客服管理人员信息等库存信息财务信息部门信息采购信息客服信息销售事务流人员事务流库存事务流采购事务流财务事务流客服事务流销售信息人员信息库存信息采购信息财务信息客服信息考勤专员考勤信息7系统管理系统管理事务流系统管理信息系统信息图4-3数据流图——一层图系统二层图如图4-4至图4-6所示:处理1采购管理细化如图4-4采购管理4采购管理4.1定单添加4.2定单删除4.3定单查询定单信息图4-4数据流图——二层图处理2财务管理细化如图4-5财务管理5财务管理5.1帐号添加5.2帐号查询5.3帐号修改银行帐号图4-5数据流图——二层图处理3客服管理细化如图4-6客服管理6客服管理6.1添加留言6.2查看留言6.4回复留言6.3删除留言留言信息图4-6数据流图——二层图4.3.3书城管理系统E-R图图书定单实体如图4-7:图书定单编号图书定单编号图书订单图书订单信息采购总额图书类型负责人定单ID采购时间图4-7图书定单实体E-R图价钱总额图书单价图书实体如图4-8:价钱总额图书单价图书名称所属定单ID图书名称所属定单ID图书编号负责人图书编号负责人图书ID图书描述图书ID图书描述图书信息图书信息图书数量图书出版社图书数量图书出版社作者出版日期作者出版日期图4-8图书实体E-R图管理员实体如图4-9:密码用户名密码用户名IDID部门ID管理员信息部门ID管理员信息图4-9管理员实体E-R图

留言实体如图4-10:昵称留言ID留言时间昵称留言ID留言时间回复时间回复时间邮箱邮箱留言内容留言内容回复内容回复内容留言信息留言信息留言实体图4-10金额流动资金帐号实体如图4-11:金额帐号ID流动资金帐号帐号ID流动资金帐号图4-11流动资金帐号实体E-R图员工银行帐号实体如图4-11:用户帐号持有者用户帐号持有者余额帐号ID余额帐号ID员工银行帐号员工银行帐号图4-11员工银行帐号实体E-R图

5总体设计经过需求分析阶段的工作,系统必须“做什么”已经清楚了,现在是决定“怎样做”的时候。总体设计的基本目的就是回答“从总体上说,系统应该如何实现?”这个问题,因此,总体设计又称为概要设计或初步设计。通过这个阶段的工作将划分出组成系统的物理元素程序、文件、数据库、人工过程和文档等等,但是每个物理元素仍然处于黑盒子级,这些黑盒子里的具体内容将在以后进行详细的设计。总体设计阶段的另一项重要任务是设计软件的结构,也就是要确定系统中每个程序是由哪些模块组成的,以及这些模块相互间的关系。总体设计是软件设计阶段的第一步,在软件开发时期中,设计阶段是最富有活力,最需要发挥创造精神的阶段。在本阶段,主要就是得用面向对象分析方法把分析阶段产生的软件需求说明转换为用适当手段表示的软件概要设计文档,从而得出本模块的具体实现方案与总体结构以及各组成部分之间的关系。5.1总体功能模块图系统功能模块图如图5-1:皖北书城管理系统皖北书城管理系统销售管理人员管理库存管理采购管理财务管理系统设置客服管理图5-1系统功能模块图

采购管理模块细化如图5-2:采购管理采购管理个体图书信息录入成组图书信息录入图书定单录入定单信息查询管理人员登录定单信息删除图5-2采购管理模块细化图财务管理模块细化如图5-3:财务管理财务管理管理人员登录员工工资发放流动帐号资金查询流动帐号资金转存工资发放设置图5-3财务管理模块细化图

客服管理模块细化如图5-4:客服管理客服管理管理人员登录删除留言签写留言回复留言查看留言图5-4客服管理模块细化图5.2业务总体设计5.2.1业务总体设计用例从客户角度来说,有以下功能:用户注册→用户登陆→用户查询图书→购买图书→退出登陆 从管理员的角度:有以下功能:管理员登陆→业务管理(包括采购管理,财务管理,客服管理,人员管理,销售管理,库存管理,系统管理).5.2.2模块总体设计a)采购管理功能:能进行图书的个体添加,删除和成组添加,删除,以及对图书定单的添加,删除和各种查询(可根据定单编号,负责人,采购单位,日期,价格)并支持模糊查询b)财务管理功能: 通过流动资金帐号对员工工资进行发放,可设置工资发放额度和发放时间,并且可以将发放余额转存其他流动资金帐号c)客服管理功能: 对于客户来说,可以直接进行匿名留言签写,对于管理员来说,可以进行留言的签写,删除以及回复操作5.3数据库逻辑设计图书定单表: Xal_Order(Order_ID,type,collectiedName,priceTotal,collectiedTime,dutyPeople,booksOrderNo,bankOrderNo,rate,examine,userOrderNo);图书表:Xal_books(Book_ID,bookNo,bookName,bookNum,bookPrice,bookTotal,boolPrint,bookIntroduce,author,printDate,salename,fid,uid);等待确认定单表Nocheck_xal_Order(Order_ID,type,collectiedName,priceTotal,collectiedTime,dutyPeople,booksOrderNo,bankOrderNo,rate,examine,userOrderNo公司流动资金帐号表Bank_account(aid,TotalAccount);公司员工帐号表Employee_bank_account(eid,actNo,owner,balance);管理员列表admin(id,username,password,deptid);留言列表Liuyan_temp(id,ip,email,sj,content,restore,restore_time.xm,ts);6详细设计总体设计阶段以比较抽象概括的方式提出了解决问题的办法。详细设计是软件开发时期的第三个阶段,也是软件设计的第二步。其任务就是把解法具体化,也就是回答下面这个关键的问题:“应该怎样具体地实现这个系统呢?”,通过详细设计应该得出对目标系统的精确描述,给出各个模块的详细过程性描述。从而在编码阶段可以把这个描述直接翻译成用某种程序设计语言书写的程序。6.1Model层设计6.1.1采购管理在该个管理模块中主要用到了三个类的实体,它们是整个业务流程的关键,图书定单继承于普通定单,在图书定单中存在着图书对象的集合6.1.2财务管理该模块中的主要实体类是员工的工资帐户储存,除了系统调用的GET()和SET()方法外,该实体还应具有存款,取款的功能,便于工资的变更。其业务图如下:6.1.3客服管理该模块的功能是管理员正确登陆后,对留言实体进行业务操作,包括留言的添加,删除,修改和查询等功能,业务图如下:6.2View层设计6.2.1登陆管理采购部门的管理员通过系统分配的用户名与密码进入系统,当部门管理员成功登录后,方可对采购业务进行管理,通过树型控制来显示该部门的业务信息,.采购管理登录信息流程图如6-1:Index.jspIndex.jsp输入部门输入部门用户名和密码(系统默认输入该部门的部门号) N是不是和该部门相符合?N是不是和该部门相符合?YY进入业务主界面进入业务主界面结束结束图6-1采购管理登录信息流程图登录截面流程控制的主要代码(check_admin.java):packagecom.wbStore.message.servlet;importjava.io.*;importjavax.servlet.*;importjavax.servlet.http.*;importcom.wbStore.message.bean.messFun;publicclasscheckin_adminextendsHttpServlet{ publicvoidinit()throwsServletException{} publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException { messFunMF=newmessFun();response.setContentType("text/html;charset=GBK"); HttpSessionsession=request.getSession(); Stringyhm1=request.getParameter("yhm"); Stringyhmm1=request.getParameter("yhmm"); Stringdeptid=request.getParameter("deptid"); //读取session的值 Stringrand=(String)session.getAttribute("rand"); Stringcode=request.getParameter("rand"); Stringmsg=""; if(yhm1=="") msg+="<li>用户名不能为空</li>"; if(yhmm1=="") msg+="<li>密码不能为空</li>"; if(!rand.equals(code)) msg+="<li>验证码不正确</li>"; if(msg.equals("")) { booleanresult=MF.checkLogin(yhm1,yhmm1,deptid); if(result==true) { session.setAttribute("login","1"); response.sendRedirect("index.jsp"); } else { msg+="<li>用户名或密码不对</li>"; request.setAttribute("msg",msg);RequestDispatcherwm=request.getRequestDispatcher("common.jsp"); wm.forward(request,response); } } else { request.setAttribute("msg",msg); RequestDispatcherwm=request.getRequestDispatcher("common.jsp"); wm.forward(request,response); } } publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException { doGet(request,response); } publicvoiddestroy() { }}6.2.2采购管理采购部门的管理员通过系统分配的用户名与密码进入系统,当部门管理员成功登录后采购管理业务信息流程图如6-2开始开始在定单编号,负责人,采购单位,日期,价格中任选一个输入进行查询在定单编号,负责人,采购单位,日期,价格中任选一个输入进行查询添加新帐单 添加新帐单 个体添加图书成组添加图书个体添加图书成组添加图书是否合法是否合法Error.jspError.jspNNYY进入添加定单界面进入历史定单界面进入添加定单界面进入历史定单界面选择删除帐单通过负责人查询帐单通过采购单位查询帐单通过采购单编号查询帐单选择删除帐单通过负责人查询帐单通过采购单位查询帐单通过采购单编号查询帐单删除图书添加图书删除图书添加图书定单进入历史定单界面进入历史定单界面返回主界面返回主界面图6-2采购管理业务信息流程图6.1.2财务管理该部门服务人员通过用户名与密码验证登陆后,根据分配的流动资金帐号可对员工的工资进行发放。在选择流动资金帐号时需手动设置发放额度和发放时间财务管理业务流程图6-3开始开始是否登录进入员工工资发放设置界面工资处理页面返回主界面是否发放结束YNNYY进入员工帐号和工资生成界面进入员工工资发放界面余额充足?N图6-3财务管理业务信息流程图:6.1.3客服管理 该部门负责人成功登陆后,可对留言进行签写,删除和回复,并且可以直接进入客户端的留言本界面客服管理业务流程图6-4开始开始是否登录进入服务器端留言主界面返回主界面YN签写留言回复留言查看留言删除留言进入客户端图6-4客服管理业务信息流程图:6.3Contoller层设计 在该层主要应用到了Struts结构的MappingDispatchAction首先将表现层的数据通过post或者get方法传送过来,在传送数据的同时,*.do经过web.xml中的过滤器过滤,进入Contoller层数据的处理,最后通过Mapping.forword方法跳转到表现层。下面通过一个业务的流程演示该过程.(以用户存取图书为例):首先,页面通过web.xml中的下面代码进行过滤:web.xml中部分代码:<servlet><servlet-name>ActionServlet</servlet-name><servlet-class>org.apache.struts.action.ActionServlet</servlet-class><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>ActionServlet</servlet-name><url-pattern>*.do</url-pattern></servlet-mapping>经过该过滤器之后,进入Struts-configure.xmlStruts-configure.xml相关代码:<actionpath="/collect/booksOrderList_save"type="com.wbStore.collect.web.action.BookOrderAction"parameter="add"><forwardname="addNewOrderList"path="/collect/addNewOrderList.jsp"/><forwardname="error"path="/collect/error.jsp"/></action>通过该配置文件,程序执行到BookOrderAction中的add();相关代码见下:BookOrderAction相关代码:publicclassBookOrderActionextendsMappingDispatchAction{ /** *向预定表单中个体添加图书 */ publicActionForwardadd(ActionMappingmapping,ActionFormform, HttpServletRequestrequest,HttpServletResponseresponse) throwsException{ try{ StringbookNo=request.getParameter("bookNo"); StringbookName=request.getParameter("bookName"); intbookNumInteger.parseInt(request.getParameter("bookNum")); doublebookPrice=Double.parseDouble(request.getParameter("bookPrice")); doublebookTotal=bookNum*bookPrice; StringbookPrint=request.getParameter("bookPrint"); Stringauthor=request.getParameter("author"); StringprintDate=request.getParameter("printDate"); StringbookIntroduce=request.getParameter("bookIntroduce"); Stringsalename=request.getParameter("salename"); Booksbook=newBooks(bookNo,bookName,bookNum,bookPrice, bookTotal,bookPrint,salename,author,printDate, bookIntroduce); list.add(book); total+=bookTotal; request.setAttribute("total",total); request.setAttribute("list",list); returnmapping.findForward("addNewOrderList"); }catch(RuntimeExceptione){ returnmapping.findForward("error"); } } 若业务没有运行时异常,则通过returnmapping.findForward("addNewOrderList");跳转至正常页面,否则执行CATCH代码块,跳转至错误页面.6.4数据库表结构设计(1)定单表如表1表1定单表(2)图书表如表2表2图书表(3)管理员表如表3 表3管理员表(4)用户留言表如表4 表4用户留言表表(5)公司流动帐号表如表5 表5公司流动帐号表(6)员工银行帐户表如表6表6员工银行帐户表7软件测试在开发软件的过程中,人们使用了许多保证软件质量的方法分析、设计和实现软件,但难免还会在工作中犯错误。这样,在软件产品中就会隐藏许多错误和缺陷,尤其是对规模大、复杂性高的软件更是如此。所以,必须进行认真、计划、彻底的软件测试。7.1什么是软件测试软件测试就是在软件投入运行前,对软件需求分析、设计规格说明书和编码的最终复审,是软件质量保证的关键步骤。确切的说,软件测试就是为了发现错误而执行的过程。一般分为两个阶段:(1)单元测试:在编完某一模块后进行测试(2)综合测试:在开发完软件后进行系统测试。即使经过最严格的测试之后,仍然可能还有没被发现的错误隐藏在程序中。测试只能查找程序中的错误,不能证明程序中没有错误。7.2软件测试的规则软件测试的目的是想以最少的时间和人力找出软件中潜在的错误和缺陷。一个成功的软件应该不怕挑剔的用户进行测试。如果成功的实施了测试,就能够发现软件存在的错误。根据这样的测试目的,软件测试的规则应该是:1.应该把“尽早地和不断地进行软件测试”作为软件开发者的座右铭。2.测试用例应由测试输入数据和与之对应的预期输出结果两部分组成。3.程序员应避免检查自己的程序。4.在设计测试用例时,应当包括合理的输入条件和不合理的输入条件。5.充分注意测试中的群集现象。6.严格执行测试计划,排除测试的随意性。7.应当对每一个测试结果做全面检查。8.妥善保存测试计划,测试用例,出错统计和最终分析报告。7.3软件测试的对象软件测试不等于程序测试。软件测试应贯穿于软件定义与开发的整个周期。所以,需求分析、概要设计、详细设计以及程序编码等各阶段所得到的文档都应该是软件测试的对象。7.4单元测试本程序的测试在Linux环境下进行。7.4.1登陆测试测试用例:1)用户名:xingal密码:123456属于正确的所属部门验证通过2)用户名:xingal密码:123456属于不正确的所属部门验证不通过 3)用户名:密码:123456用户名为空验证不通过 4)用户名:xingal密码:123密码或用户名错误验证不通过 7.4.2采购管理测试个体添加图书测试用例:1)个体添加:正常操作验证通过2)个体添加:数量输入字母:操作失败,页面跳转至错误页面 3)个体添加,输入空字段弹出不能为空提示窗口.7-2个体添加图书界面成组添加图书界面图测试用例:1)成组添加:正常操作验证通过2)成组添加:数量输入字母:操作失败,页面跳转至错误页面 3)成组添加,输入空字段弹出不能为空提示窗口. 添加订单图书界面图测试用例:1)添加订单:正常操作验证通过,数据正常插入2)添加订单,输入空字段弹出不能为空提示窗口. 3)删除图书正常操作验证通过,图书被删除7-4添加订单图书界面7.4.3财务管理测试图7-5流动工资帐号的选择及设置界面员工工资发放界面图测试用例:1)工资发放正常操作,页面跳转至“确认发放页面” 2)让余额小于某一员工工资,跳转至“余额不足页面”7-6员工工资发放界面图7-7员工工资发放确认界面7.4.4客服管理测试测试用例:1)单击“回复”,跳转至“留言”界面,正确输入则可进行留言 2)单击”删除”,跳出信息提示框,正确操作则可删除留言.图7-8查看留言界面签写留言界面测试用例:1)正确输入昵称和邮箱,操作成功,跳转至[查看页面] 2)呢称为空,操作失败,跳转至[查看页面],但看不到信息 3)邮箱输入不合法,操作失败,跳转至[查看页面],但看不到信息图7-9签写留言界面至此,单元测试完毕。7.5集成测试本程序的测试在Linux环境下进行。7.5.1测试流程图YYYY系统主界面(1)系统初始化初始化系统模块主界面成功登录成功开始结束NNYN图7-10集成测试流程图7.5.2集成测试测试用例:1)用户名:xingal密码:123456属于正确的所属部门验证通过2)用户名:xingal密码:123456属于不正确的所属部门验证不通过 3)用户名:密码:123456用户名为空验证不通过 4)用户名:xingal密码:123密码或用户名错误验证不通过图7-11系统初始化设置界面系统安装好之后,所有的一切都如单元测试所料。故系统测试省略。结论经过三个多月的努力,对JAVA一系列的东西有了进一步的认识,可谓收获颇丰,在最后的两个星期时间里,对毕业的课题进行了代码的编写,当真正把技术应用于实践时,才发现昔日的好多知识点已经忘记的差不多了,这才意识到,如果不能将理论应用于实践,那些知识永远不会成为自己头脑中知识体系的一部分。最后的这两个星期里,日子是痛苦的,每天从早上到晚上,不停的敲击着键盘,但是到最后当我们看到毕业设计课题完成的那一刻,我们是欣慰的,想想两个星期里,我们把学到的理论知识应用在了我们的课题中,我们更加深刻的理解了WEB开发中的MVC模式,我们更多的体会到了面向对象的魅力。两个星期的时间让我真正的明白了为什么应聘时,有工作经验者悠闲,因为这就是财富,就是自身从理论上永远无法领悟的知识。在做毕业设计的过程中,我切身感受了软件开发设计的全过程。从最底层的实体类到最表面的JSP,严格按照软件开发中MVC模式的三层结构的要求一步步设定目标,完成了毕业设计,这为今后的工作学习提供了宝贵的经验。由于时间仓促,设计中难免不尽人意,因此本系统中还存在很多不足的地方。但是,与毕业设计结果相比,设计的过程更使我受益匪浅,因为毕业设计就是要求我们将所学的理论知识融会贯通并加以应用的过程。就我个人来说,大学阶段所学的是理论知识,从未真正将它们付诸实践。因此,为了很好地完成毕业设计,其中的艰难相信大家都能体会出来。在做毕业设计期间,遇到了很多问题,比如说:数据的转换异常,配置文件的读取错误以及对象结构的传递等。皖北书诚管理系统是由陶金,黄修海,和我,共同完成的。通过对皖北书城管理系统的设计和开发,锻炼了我的实际动手能力,和团队合作精神,这次的毕业设计,使我的计算机水平又上了新的台阶,使我受益匪浅。总之,多学习,多思考,多练习,多敲代码,一定会提高自己水平的。

致谢论文工作即将结束,我在安徽工业大学的学习也近四年了,回首这四年的日子,我深刻感受到老师、同学给予我的真诚的关心,正是在他们的帮助下我顺利完成了学业和论文工作。在本次毕业设计过程中,首先要特别感谢我的指导老师叶红老师,在整个设计过程中对我们要求很严格,从而能顺利完成系统的设计以及论文的书写。每次在遇到问题时,她都会及时地提出我们设计过程中的不足,指导我们如何去解决问题,从中我们也学到了解决问题的方法。设计过程中老师教授的知识,我们将终身受用。其次,要感谢的是我的校外指导老师战文备工程师,在毕业设计期间,他给予了我很多技术方面的支持,并再三嘱咐我们,需求分析,ER图和系统功能描述是软件开发中最重要的环节,同时建议系统要有错误处理机制等等。在此表示感谢。再次,要感谢的是我的好同学们,他们把学校的信息第一时间转达给我,在此表示感谢。同时还要感谢我的同事们,和他们的探讨使我对问题的看法更加深入,向我提出了许多建设性的意见。同时也帮助我做了很多实际的工作。最后,要感谢安徽工业大学这个大家庭,谢谢她给了我一个良好的学习环境,我在学校阶段的任何成绩,任何荣誉都与这个大家庭分不开。在此表示感谢。再次向所有帮助过我的人表示我最诚挚的谢意!

参考文献1.《数据库系统概论(第三版)》萨师煊,王珊,北京:高等教育出版杜2002.22.《数据库应用系统开发案例与实践教程》潘文林,清华大学出版社,2005年3.《Java面向对象编程》孙卫琴电子工业出版社2007.94.《Java办公自动化项目方案精解》邢素萍航空工业出版社2006.95《TomcatWeb开发及整合应用[M]》张洪伟清华大学出版社.2007.96(displaytag官方网站)7(Apache软件Jakarta项目组官方网站)8(hibernate官方网站)9《Servlet与JSP权威指南[M]》.(美)MartyHall机械工业出版社2007.510

Mcleod.ManagementInformationsystem.ManagementinPractice,PrenticeHall,11

CassidyA.InformationsystemsstrategicPlanning.Bocaraton.Florida,St.luicePress,12.达内科技相关教材

附录1主要代码部分HibernateUtil的实现:packagecom.wbStore.collect.util;importorg.hibernate.HibernateException;importorg.hibernate.Session;importorg.hibernate.SessionFactory;importorg.hibernate.cfg.Configuration;publicclassHibernateUtil{ privatestaticSessionFactorysf; static{ Configurationcfg=null; try{ cfg=newConfiguration().configure(); sf=cfg.buildSessionFactory(); }catch(HibernateExceptione){ e.printStackTrace(); } } publicstaticSessiongetCurrentSession(){ Sessions=(Session)sf.getCurrentSession(); returns; } }图书定单业务的实现:packagecom.wbS;importjava.util.List;importorg.hibernate.HibernateException;importorg.hibernate.Session;importorg.hibernate.Transaction;importcom.wbStore.collect.dao.OrderDAO;importcom.wbStore.collect.dao.Impl.OrderDAOImplement;importcom.wbStore.collect.entity.Order;importcom.wbStore.collect.util.HibernateUtil;publicclassBookOrderServiceImplimplementsOrderService{ privatestaticOrderDAOdao=newOrderDAOImplement(); /** *查询历史帐单 */ publicListHistoryOrder(Orderorder){ Sessionsession=null; Transactiontran=null; ListOrder=null; try{ session=HibernateUtil.getCurrentSession(); dao.setSession(session); tran=session.beginTransaction(); Order=dao.find(order); mit(); }catch(HibernateExceptione){ tran.rollback(); e.printStackTrace(); } returnOrder; } /** *添加新帐单 */ publicvoidaddNewOrder(Orderorder){ Sessions=null; Transactiontran=null; try{ s=HibernateUtil.getCurrentSession(); dao.setSession(s); tran=s.beginTransaction(); dao.save(order); mit(); }catch(HibernateExceptione){ tran.rollback(); e.printStackTrace(); } } /** *通过ID进行查询 */ publicOrderHistorOrderById(Orderorder){ Sessionsession=null; Transactiontran=null; Orderorders=null; try{ session=HibernateUtil.getCurrentSession(); dao.setSession(session); tran=session.beginTransaction(); orders=dao.findById(order); mit(); }catch(HibernateExceptione){ tran.rollback(); e.printStackTrace(); } returnorders; } /** *字段模糊查询 */ publicListHistoryOrderLike(Orderorder,Stringstr2){ Sessionsession=null; Transactiontran=null; ListOrder=null; try{ session=HibernateUtil.getCurrentSession(); dao.setSession(session); tran=session.beginTransaction(); Order=dao.likeFind(order,str2); mit(); }catch(HibernateExceptione){ tran.rollback(); e.printStackTrace(); } returnOrder; }/**通过日期进行查询*/ publicListHistoryOrderByDate(Orderorder,Stringstart,Stringend){ Sessionsession=null; Transactiontran=null; ListOrder=null; try{ session=HibernateUtil.getCurrentSession(); dao.setSession(session); tran=session.beginTransaction(); Order=dao.findByDate(order,start,end); mit(); }catch(HibernateExceptione){ tran.rollback(); e.printStackTrace(); } returnOrder; } /**通过价格进行查询*/ publicListHistoryOrderByPrice(Orderorder,doublestart,doubleend){ Sessionsession=null; Transactiontran=null; ListOrder=null; try{ session=HibernateUtil.getCurrentSession(); dao.setSession(session); tran=session.beginTransaction(); Order=dao.findByPrice(order,start,end); mit(); }catch(HibernateExceptione){ tran.rollback(); e.printStackTrace(); } returnOrder; }/**删除订单*/ publicvoidremoveOrder(Orderorder){ Sessionsession=null; Transactiontran=null; Orderorders=null; try{ session=HibernateUtil.getCurrentSession(); dao.setSession(session); tran=session.beginTransaction(); orders=dao.findById(order); dao.delete(orders); mit(); }catch(HibernateExceptione){ tran.rollback(); e.printStackTrace(); } }}

员工工资发放业务的实现:packagecom.wbS;importjava.util.ArrayList;importjava.util.List;importorg.hibernate.HibernateException;importorg.hibernate.Session;importorg.hibernate.Transaction;importcom.wbStore.collect.dao.AccountDAO;importcom.wbStore.collect.dao.Impl.AccountDAOImplement;importcom.wbStore.collect.entity.Account;importcom.wbStore.collect.entity.employeeAccount;importcom.wbStore.collect.util.HibernateUtil;publicclassemployeeAccountServiceImplimplementsAccountService{ privatestaticAccountDAOdao=newAccountDAOImplement(); /** *添加帐户 */ publicvoidaddAccount(employeeAccountact){ Sessionsession=null; Transactiontran=null; try{ session=HibernateUtil.getCurrentSession(); dao.setSession(session); tran=session.beginTransaction(); dao.save(act); mit(); }catch(HibernateExceptione){ tran.rollback(); e.printStackTrace(); } } /***存款*/ publicdoubledespoint(doublemoney,longaid){ Sessionsession=null; Transactiontran=null; doublebalance=0; try{ session=HibernateUtil.getCurrentSession(); dao.setSession(session); tran=session.beginTransaction(); employeeAccountact=dao.findById(aid); balance=act.getBalance(); balance=balance+money; act.setBalance(balance); dao.update(act); mit(); }catch(HibernateExceptione){ tran.rollback(); e.printStackTrace(); } returnbalance; }/***通过ID查找员工帐号*/ publicemployeeAccountfindById(longeid){ Sessionsession=null; Transactiontran=null; employeeAccountacct=newemployeeAccount(); try{ session=HibernateUtil.getCurrentSession(); dao.setSession(session); tran=session.beginTransaction(); acct=dao.findById(eid); mit(); }catch(HibernateExceptione){ tran.rollback(); e.printStackTrace(); } returnacct; }/***查找所有员工帐号*/ publicListfindacount(){ Sessionsession=null; Transactiontran=null; Listlist=newArrayList(); try{ session=HibernateUtil.getCurrentSession(); dao.setSession(session); tran=session.beginTransaction(); list=dao.findAccount(); mit(); }catch(HibernateExceptione){ tran.rollback(); e.printStackTrace(); } returnlist; }}附录2中英文资料翻译部分英文一:AnetizeninJavaEyeaskedabouttheWebsystemofalarge-scalestructureandthedeploymentofselectionproblemsinthehopeofimprovingtheexistingJava-basedWebapplicationoftheservicecapacity.AsframeworkandthedeploymentoftuninghasbeenahottopicintheJavacommunity,thisissuecausedalotofenthusiasticnetizendiscussions,includingsomeoftheviewsofotherlargeW

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论