版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
江苏海事职业技术学院毕业设计(论文)江苏海事职业技术学院毕业设计(论文)第一章绪论1.1设计背景与意义1.1.1背景2012年7月19日,中国互联网络信息中心(CNNIC)在北京发布《第30次中国互联网络发展状况统计报告》。报告显示,截至2012年6月底,中国网民数量达到5.38亿,增长速度趋于平稳,网民数量居世界第一。众多商家把握时代的发展趋势,将原本刊登于报纸、杂志等媒介的高额广告转向价格低廉的网络平台,同时许多个体经营者及个人也将网络广告作为推广、宣传服务与产品的利器。二手商品即还存在利用价值的非全新商品,因为其并非全新特点,所以价格一般比较便宜,但是商品的主要功能基本还存在,所以存在较高的性价比。然而,二手商品的需求毕竟比较小,需求者一般为个人,商家可盈利空间较小,因此针对该类商品的网上信息发布系统很少。从而导致了有二手商品转让或购买意愿的用户可能要通过贴广告、参加跳蚤市场这样的传统途径来解决自己的需求。然而,粘贴广告的方式比较耗费精力和财力,并且收效甚微,所以许多人选择到集中展示二手商品的跳蚤市场来获得更大的选择,但是,我们不可能拥有一个每天都开放的二手市场,例如在大学中的一些社团每年会举办几次跳蚤市场,生意相当好,但是没有一个社团会选择天天去经营这样的一个市场,归根到底还是二手市场的开办成本和二手商品的需求量之间的经济矛盾不允许去做这样一个长期的经营活动。因为存在着以上的矛盾,许多用户选择将二手商品搁置或扔掉,极大的浪费了资源。我们迫切的需要一个平台来实现对二手商品信息的集中存放,满足更多人群对二手商品买卖的需求。1.1.2意义本次毕业设计的内容主要针对目前二手商品信息难以集中、信息获取渠道困难的特点,设计一个网上二手商品信息发布系统,为广大民众提供快捷高效的信息集中处理平台。具体意义如下:1)方便用户实时的查看最新的二手商品信息用户只需要一台电脑,一个可用的网络,一个友好的浏览器就可以到网络上查看自己需要的商品信息,因为网络的特殊的传输渠道,卖家发布的信息,用户可以立即查询到,为用户提供了更加及时的信息。2)扩大了选择范围传统意义上,我们可以在二手市场上看到很多商品,但是这些商品的来源受到地理范围的限制而只能是附近的一些卖家提供的商品,而且买家一般也都是附近的一些群体。网络的普及将世界变成了一个地球村,在这里你可以看到来自世界各地的商品信息,你的信息也可以被世界各地的人看到,无论是卖家还是买家,都扩大了选择范围。更庆幸的是,网上银行、快递公司的兴起也为用户提供了远程交易的可能。3)节约了人力和财力传统意义上的二手物品交易无外乎两种途径:一是四处散布广告;二是通过定期的二手市场集中展示。但是无论是出于哪种途径,卖家和买家都需要投入大量人力、财力和时间。而网络上的二手市场可以令卖家和买家足不出户的免费发布和接收二手物品信息。1.2研究内容及主要成果1.2.1主要研究内容 本次设计的内容为基于MVC模型的二手市场的设计与实现,系统设计以用户需求为起点,按照流程分为系统需求分析、系统功能分析、系统整体架构设计、系统局部功能的设计与实现。 1.系统需求分析,根据当下二手市场发展的不足,分析多数用户的主要需求。 2.系统功能分析,根据用户需求,分析系统需要实现的功能。 3.系统整体架构设计,在功能需求的基础上,考虑系统各个功能之间可能存在的关联,设计系统的整体组织结构。 4.系统局部功能的设计与实现,在对系统整体结构及功能作详细分析的基础上,研究系统各个模块的设计与实现方法。1.2.2主要成果介绍 本次设计通过参考资料、请教老师及同学完成了一个基于MVC模型的二手市场,该系统为典型的web系统,主要目标是为了解决传统二手商品信息传播困难的特点。 本系统完成了对二手商品信息的发布与检索功能,用户通过登录该系统即可浏览到来自世界各地的二手商品信息,系统设计中加入了二级检索功能,方便用户精确快速的查找到自己需要的信息。另外,本系统提供用户的注册与登录功能,主要目的在于对信息发布者做一个相关的信息存储,方便用户发布信息、管理信息。
第二章开发技术研究2.1B/S系统架构介绍 本设计主要是参考Web体系结构,采用现下常用的B/S(浏览器/服务器)模式,用户的所有操作都是通过浏览器完成和服务器的交互工作。该系统体系结构主要由前台页面显示、后台逻辑控制、数据库操作几个模块组成。用户能够直观的看到前台的页面显示,这也是用户的操作界面,用户通过页面操作将信息或命令传达到后台逻辑控制层,由逻辑层判定下一步操作内容,数据库用于负责数据的持久化问题。Web技术的发展,使得管理系统的开发更方便、功能更强大,在此系统的开发过程中,Web技术起了一个骨架式的支持作用;与此同时组件技术的发展为系统的开放性、集成性提供了便利,有效合理地引入组件技术是当前Web系统开发与发展的一个方向;通过对系统的开发进行建模,形象直观的图形化表示,可以显示系统的流程与功能。选择有效的建模方法,充分利用Web技术与组件技术,提高软件的开发效率,提高的软件的可靠性和可维护性,是每个软件开发人员所关心的问题。2.2MVC模型介绍MVC是三个单词的缩写,分别为:模型(Model),视图(View)和控制Controller)。MVC模式的目的就是实现Web系统的职能分工。Model层实现系统中的业务逻辑,通常可以用JavaBean或EJB来实现。View层用于与用户的交互,通常用JSP来实现。Controller层是Model与View之间沟通的桥梁,它可以分派用户的请求并选择恰当的视图以用于显示,同时它也可以解释用户的输入并将它们映射为模型层可执行的操作。MVC模型倡导2个独立的应用程序之间应该严格的隔离。这种隔离应该叫做概念上的隔离,或者,更加专业的术语叫做“松耦合”。MVC几乎所有的的方面都是受这个目标的驱动,应用程序之间互相保持隔离。松耦合的架构方式带来了许多短期和长期优势:1)易于开发个性化的组件之间不再依赖其他的组件,这就意味着他们能够更加容易的独立开发。组件能够容易的被替换掉,保护一个组件并发并不受与其交互的其他组件开发的影响。2)易于测试组件的松耦合允许测试站在“产品”组件的立场上进行充分的测试。也就是说,可以通过调用其他的组件返回一些数据从而很容易的避免直接调用数据库。组件之间和模拟呈现之间容易的交换大大方便了测试的进程,随着时间的流逝,它能极大的增加系统的可靠性。3)易于维护逻辑上隔离的组件意味着对于一些组件变化也是隔离的。因为风险往往是伴随着的一定范围的改变产生,因此,更少的修改是一件好事。在本次毕业设计中,MVC作为一个开发模型来实现对系统的松耦合,系统设计中Entity层基本对应MVC中的模型层,Action层基本对应MVC中的控制层,系统页面展示模块基本对应MVC中的视图层。2.3SSH2框架介绍框架,即Framework。其实就是某种应用的半成品,就是一组零件,供你选用完成你自己的系统。简单说就是使用前人提供的工具,来做你需要做的事情,这样的话使用者就可以使用现成的工具来完成自己的工作,大大提高了自己的工作效率。为什么要用框架?因为软件系统发展到今天已经很复杂了,特别是服务器端软件,涉及到的知识,内容,问题太多。在某些方面使用别人成熟的框架,就相当于让别人帮你完成一些基础工作,你只需要集中精力完成系统的业务逻辑设计。而且框架一般是成熟,稳健的,他可以处理系统很多细节问题,比如,事物处理,安全性,数据流控制等问题。还有,框架一般都经过很多人使用,所以结构很好,并且扩展性也很好,而且它是不断升级的,你可以直接享受别人升级代码带来的好处。框架一般处在低层应用平台(如J2EE)和高层业务逻辑之间的中间层。因为某种框架用的人多,而且项目比较大,采用以后熟悉该框架技术的人可以马上和开发团队紧密结合,从而大幅度的提升工作效率。Struts2+Spring+Hibernate是J2EE的最新流行框架。Spring是一个开源框架,它由RodJohnson创建。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。Struts2框架是以WebWork基础上发展起来的。从某种程度上来讲,Struts2没有继承Struts1的血统,而是继承WebWork的血统。或者说,WebWork衍生出了Struts2,因为Struts2是WebWork的升级,而不是一个全新的框架,因此稳定性、性能等各方面都有很好的保证:而且吸收了Struts1和WebWork两者的优势,因此,是一个非常优秀的框架。在本次系统设计中,hibernate的功能是实现对数据的操作,完成数据持久化任务;struts2主要功能是实现action的跳转;spring在此次系统中管理hibernate和struts,并提供容器作用,实现数据的一次加载,到处使用。2.4SQLServer2005介绍 SQLServer2005是一个全面的数据库平台,使用集成的商业智能(BI)工具提供了企业级的数据管理。SQLServer2005数据库引擎为关系型数据和结构化数据提供了更安全可靠的存储功能,使用户可以构建和管理用于业务的高可用和高性能的数据应用程序。与MicrosoftVisualStudio、MicrosoftOfficeSystem以及新的开发工具包(包括BusinessIntelligenceDevelopmentStudio)的紧密集成使SQLServer2005与众不同。无论是开发人员、数据库管理员、信息工作者还是决策者,SQLServer2005都可以为用户提供创新的解决方案,帮助用户从数据中更多地获益。SQLServer2005具有以下优势:1.企业数据管理SQLServer2005针对行业和分析应用程序提供了一种更安全可靠和更高效的数据平台。SQLServer的最新版本不仅是迄今为止SQLServer的最大发行版本,而且是最为可靠安全的版本。 2.开发人员生产效率SQLServer2005提供了一种端对端的开发环境,其中涵盖了多种新技术,可帮助开发人员大幅度提高生产效率。3.商业智能SQLServer2005的综合分析、集成和数据迁移功能使各个企业无论采用何种基础平台都可以扩展其现有应用程序的价值。构建于SQLServer2005的BI解决方案使所有用户可以及时获得关键信息,从而在更短的时间内制定更好的决策。2.5Ajax介绍Ajax并不是一种新的编程语言,而仅仅是一种新的技术,它可以创建更好、更快且交互性更强的web应用程序。Ajax使用JavaScript在web浏览器与web服务器之间来发送和接收数据。传统的web应用程序会把数据提交到web服务器(使用HTML表单)。在web服务器把数据处理完毕之后,会向用户返回一张完整的新网页。由于每当用户提交输入,服务器就会返回新网页,传统的web应用程序往往运行缓慢,且越来越不友好。通过Ajax,web应用程序无需重载网页,就可以发送并取回数据。完成这项工作,需要通过向服务器发送HTTP请求(在幕后),并通过当服务器返回数据时使用JavaScript仅仅修改网页的某部分。通过在幕后与web服务器交换数据,而不是每当用户做出改变时重载整个web页面,Ajax技术可以使网页更迅速地响应。本系统中涉及到的Ajax的应用主要体现在页面信息验证、下属城市的动态获取,通过该技术,系统在不发生页面跳转的情况下完成前后台的数据交互。2.6CSS介绍CSS是英语CascadingStyleSheets(层叠样式表单)的缩写,它是一种用来表现HTML或XML等文件样式的计算机语言。CSS目前最新版本为CSS3,是能够真正做到网页表现与内容分离的一种样式设计语言。相对于传统HTML的表现而言,CSS能够对网页中的对象的位置排版进行像素级的精确控制,支持几乎所有的字体字号样式,拥有对网页对象和模型样式编辑的能力,并能够进行初步交互设计,是目前基于文本展示最优秀的表现设计语言。CSS能够根据不同使用者的理解能力,简化或者优化写法,针对各类人群,有较强的易读性。CSS本身主要功能是完成对页面的布局与美化工作,在本系统的实现中,CSS主要完成页面整体框架布局、div层的嵌套布局、页面元素的属性设定。2.7开发和运行环境 本系统采用的是B/S架构,开发工具为Eclipse,开发语言为Java,由于Java的跨平台性,理论上该系统可以在任何操作系统上运行,以下为具体开发环境: 操作系统:MicrosoftWindowsXP 开发语言:Java+JavaScript 开发工具:Eclipse4.2.0 数据库系统:MicrosoftSQLServer2005 应用服务器软件:Tomcat6.0 图形编辑软件:美图秀秀系统开发流程 本次毕业设计主要按照以下流程进行实现:需求分析、系统功能分析、系统整体架构设计、系统细节设计与实现,如下图2.1所示:需求分析需求分析系统功能分析系统整体架构设计系统细节设计与实现 图2.1系统开发流程图 1.系统需求分析阶段,该阶段的内容主要是分析目前二手市场存在的不足,了解用户期望目标。 2.系统功能分析阶段,该阶段的主要内容是根据收集到的用户需求信息,分析该系统需要实现的功能。 3.系统整体架构设计阶段,该阶段的主要内容是根据系统各个功能的关联,设计系统架构,在此阶段对系统具体功能模块的设计不做考虑。 4.系统细节设计与实现阶段,该阶段是根据系统总体架构,对各个模块进行逐个分析并制定解决方案,参照方案完成该模块。
第三章需求分析3.1系统预期用户 本系统作为一个信息发布系统,所有用户都具有搜索信息的权限。具体划分,用户主要涉及商品信息发布者与商品信息接收者两种角色,对两种角色现做以下详细介绍: 1.商品信息发布者的存在是该系统存在的基础,商品信息发布者主要功能是发布自己的商品转让信息,因为涉及到个人信息的集中存放与辨识问题,商品信息发布者还拥有用户登录、用户个人信息修改、发布历史管理等功能,如下图3.1所示: 用户登录用户登录用户个人信息管理用户发布历史管理信息索引信息发布图3.1商品信息发布者功能图 2.商品信息接收者是指没有登录该系统的用户,对于该用户,由于没有登录系统,因此仅提供信息索引、用户注册、用户登录(已注册用户)功能,如下图3.2所示:用户登录用户登录用户注册信息索引图3.2商品信息接收者功能图3.2系统可行性分析 本次设计的主要影响因素为技术的运用。从技术本身来说,由于本系统的功能比较少,技术上主要涉及SSH2框架、JSP、Ajax和CSS技术,皆是当前的主流技术,因此有关查询资料比较丰富,可参考文件较多,为实现本系统提供了有力的保障;其次,本系统的设计中不涉及硬件及其他配套设备,基本上不需要投入其他资金,因此不存在经济上的困难;第三,本系统功能比较小,所有设计与制作均出自一人之手,后期维护也由同一人承担,不涉及相关技术不了解的情况,不存在管理上的难度。3.3系统功能性需求 针对目前二手商品信息汇集困难的特点,特设计本系统,因此,系统在功能上要做到以下几点: 1)用户方面 用户分为已注册用户与未注册用户,其两者的主要区别仅在于已注册用户拥有自己的账号,个人资料信息,商品发布功能,未注册用户仅享受系统提供的信息查询功能。 2)登陆方面 系统首页自动判定该用户是否已经登陆,对于已登陆用户,系统为其保存用户信息,用户可以通过右上角的快速链接查看个人信息,对于尚未登陆用户,系统右上角仅提供注册与登陆链接。 3)信息查询 系统页面上方提供一个大的搜索框供用户直接搜索商品关键字,在首页提供常见商品的快速链接,同时,系统在查询结果页面提供信息的更多约束条件的查询,方便用户缩小查询范围。另外,系统提供分类查询功能,方便用户按种类细化查询条件。 4)信息发布 系统为已登陆用户提供信息发布功能,用户在页面提交自己的信息表单,填写必要选项,选取商品种类,用户发布成功后即可在页面查看到该条记录。 5)个人信息用户个人信息是查询已登陆用户的个人相关信息,包括用户信息、发布信息等内容,在该页面可以完成用户个人信息的修改,以及已发布信息的修改和删除操作。
第四章系统设计4.1设计目标根据当前主流Web系统的设计模式,并参考其他类似服务类网上系统的特点,结合本系统自身的实际应用需求,在本系统的设计完成时将要实现以下的目标:1)基本功能实现。系统本身的出发点就是完成一项功能,所以,本条目标的实现代表着系统完成程度的关键评判因素。系统应该逐一实现功能需求中所述的各项功能。2)系统配置灵活。系统应该充分尊重用户的个性,允许用户对涉及自身的某些信息的选择性输出,对一些系统本身运行时不做强烈要求的内容,给予用户充分的自由做选择性填写。3)友好的操作界面。系统的基本功能完善的同时,尽量实现一个友好的操作界面,在不影响系统正常服务的情况下,还应做到为用户提供最方便的操作。4)易于日后维护。这主要是考虑到系统在建成之后可能涉及用户体验不佳、系统Bug逐渐显现、系统性能不稳定的情况下,方便系统维护人员能够对系统及时做出正确调整。5)易于升级。一个优秀的系统,一个具有活力的系统必然在一开始就考虑到随着系统的广泛应用,系统在很多地方需要增加或删减模块,这就要求本系统在开发时有着清晰的功能层次划分,能满足系统在需要升级或扩充时能够方便的做出调整。6)良好的纠错能力。纠错能力主要体现在对于用户的一些非法操作能够及时给出提示信息,方便用户改进。例如在登陆系统时用户名及密码错误、密码为空等常见用户误操作行为。4.2系统目录结构设计 系统在设计伊始就选择了使用MVC分层模型和SSH2框架,系统目录结构大致如图5.4所示。图4.1系统架构图系统为Eclipse建立的WebProject,src目录下存放action、dao、util、service、entity、test六个主文件夹,其中test文件夹仅用作部分代码测试使用。action文件夹存放控制层类、dao文件夹中存放系统与数据库之间的操作接口,另外,dao文件夹中还有impl文件夹,用于存放接口的实现类;、service文件夹存放服务层接口,service文件夹中还存在impl文件夹,其中存放service层接口的实现类、util提供系统组件的一些类的存放、entity主要存放实体类信息,包括表格的映射文件配置信息。系统WebContent目录下存放自定义文件夹imgs、css、js、pages、util和index.jsp页面,其中imgs文件夹主要是提供所需图片的调用,css文件中存放页面布局信息,供页面元素调用,js文件夹中为JavaScript信息,页面中的控件通过JavaScript脚本实现部分功能,pages存放多数页面,在本系统中其优势不明显,在大型系统中,分类的页面存储为日后的升级、维护提供了极大的方便,util文件夹主要存放一些组件页面,例如本系统中首页由header.jsp、footer.jsp、siderbar.jsp、content.jsp页面组成,页面组合的应用增强了代码的复用性,降低了资源浪费;index.jsp页面是系统的入口,它提供首页的跳转操作,解决系统首页直接加载时因为css文件名称的冲突而带来的页面非正常显示现象。4.3系统体系结构设计基于用户使用的便利性以及现今主流实现方式的考虑,二手市场系统采用现下比较流行的B/S体系架构。所谓B/S架构,就是浏览器/服务器模式,用户通过浏览器访问系统,通过对浏览器实现与后台服务的数据交互工作。相对于传统的C/S架构(客户端/服务器)架构,B/S架构机构的优势体现在以下几个方面:极大地降低了客户端计算机的运行负荷,减少了用户机器的资源消耗。有利于对系统的更改和维护,由于系统本身运行在服务器端,因此对服务器方的更改即可影响到所有客户端的访问数据。客户通过浏览器访问服务器系统,不涉及用户个人机器配置及操作环境的因素,极大地方便了系统开发人员的工作量。开发及设计时无需考虑跨平台的实现问题。4.4系统功能结构设计 通过对系统的深入分析与研究,总结出系统功能的几个主要功能模块,如图4.1所示。 基于MVC系统的二手市场基于MVC系统的二手市场用户个人中心模块用户登陆与注册模块用户信息索引模块用户信息发布模块数据库操作模块图4.2系统功能模块图以下是对各个模块的具体说明:1)用户登陆与注册模块,该模块负责用户账户的注册、登陆和修改功能,同时提供对已登陆用户名的保存功能,使用户在一次连接中不用再次登陆。2)用户个人中心模块,该模块的显示建立在用户具有账户和已登录情况下,对于已注册用户,个人账户信息保存在服务器中,只有在用户登陆的情况下,才会出现个人中心的连接,用户进入个人中心可以查看自己的相关信息,包括个人信息和已发布信息的修改。3)用户信息索引模块,该模块是本设计的主要体现模块,系统的主要服务主要都体现在该模块,用户能够通过系统提供的搜索框、城市选项框、时间选择、类型选择功能筛选自己需要的信息。为方便用户操作,系统首页面提供常用物品的分类链接,方便用户快速查询。4)用户信息发布模块,用户信息发布模块建立在用户具有用户账号和已登录的情况下,需要发布信息的用户必须拥有自己的账号来标示自己的信息,该功能模块下,用户可以选择自己要发布的商品信息的所属类别、设定商品的期望出售价格、填写自己的联系方式等。发布信息时用户要指定自己发布信息的所属类别,系统不提供物品类别的自动判定功能。5)数据库操作模块,该模块事实上对用户是透明的,但是涉及到整个系统数据的存储问题,关系到系统运行的操作性及顺畅性,因而不容忽视。数据库模块主要考虑数据表的设计,包括表间的关联问题,同时结合系统设计特点,设计表格使其最高效率的服务于系统。4.5数据库结构设计数据库用于存储系统中涉及到的数据,实现主要数据的持久化功能,另外,有些数据还用于页面的现实条用,例如城市表中的下属城市信息还用于页面的动态获取展示,这些信息在需要使用的时候从数据库查询调用,减少页面的加载负荷,保证了系统运行的顺畅。另外,选择用数据库存储数据能够方便的直观地看到系统的数据的格式化存储。本次设计采用的数据库软件为MicrosoftSQLServer2005,本次设计中主要有四个基表和一个视图,分表为user_tb(用户表)、type_tb(类型表)、city_tb(城市表)、info_tb(信息表)、info_view(用户视图),如下图4.3,为数据库中表之间的关联关系:图4.3系统表关联以下给出本次设计涉及的几个主要表格及其相关说明:1)用户表(user_tb)负责用户信息的存储,表结构如图4.4所示。图4.4用户表结构 user_id:用户唯一标识字段 user_name:用户名字段,即登陆账户名 password:用户密码,即登陆密码 sex:性别 age:年龄 address:用户所在地 mail:用户邮箱,用于验证信息(本次设计不做实现) real_name:用户真实姓名,用于实名认证(本次设计不做实现)2)类型表(type_tb) 描述发布商品的所属类型,类型表严格划分类型所属父阶类型。表结构如图4.5所示。图4.5类型表结构 type_id:所属类型标识 type_name:类型名称描述 super_type:上阶类型标识3)城市表(city_tb) 描述商品所在地信息,主要用于实现下拉框数据动态显示,城市设置等级划分,如:省、市、县三级管辖范围划分。同时,城市要有自己的隶属城市id属性。表结构如图4.6所示。图4.6城市表结构 city_id:城市标识字段 city_name:城市名称描述 city_level:城市等级划分,主要用户区分省、市、县等划分区域 super_city:城市所属城市标识4)信息表(info_tb) 负责信息存储,用于用户信息查询、筛选。信息表涉及对用户表id、类型表id、城市表id的关联,它外键关联其他三张表格,通过id的外键链接,能查询到任意一条信息,该表格提供一条信息的所有相关细节信息的查询功能。表结构如图4.7所示。图4.7信息表结构 info_id:信息唯一标识 user_id:该信息发布者的用户标识 type_id:用于标识物品所属类别 city_id:该信息发布商品所在城市标识 info_title:信息标题 info_content:信息主体,描述物品详细信息 img:物品图片展示(如果存在) price:信息发布者期望的出售价格 submit_date:提交日期,主要用于计算信息时效性 tel:信息发布者联系方式 5)信息视图(info_view) 信息表主要的功能是为查询操作提供更加便捷的操作,视图表中存放系统查询涉及的字段信息,另外写入了info_tb的id,便于用户实现对该条记录的信息信息查看。表结构如图4.8所示。图4.8信息视图 info_id:商品信息表id标识,用于系统查看商品详细信息时的检索 user_name:用户名,取自用户表 city_name:物品信息中city_id字段对应城市名 typy_name:物品所属类型 info_title:信息标题 price:用户预设出售价格 submit_date:信息提交时间数据库的设计主要考虑到系统数据存取的方便性以及系统部分功能的实现。用户表提供用户所有个人信息的存储;城市表事实上主要目的提供页面上城市选择的功能,因为城市选择设计三个等级,同一等级城市会有多个,一个城市下又会有多个城市,因此,如果单纯的通过页面来判断所选择的城市,并展示该城市的下属城市的话,那么该页面内容必然太过庞大,而且涉及逻辑判断较多,从而严重影响系统的运行速度,利用Ajax技术可以侦测到用户已经选择的城市,后台执行相关代码即可将该城市的下属城市显示到前台页面,从而大大减小了系统负荷,这也正是数据表设计隶属城市id的原因所在;类型表提供对信息所属类型的定义,同时也能够提供发布页面类型选择的动态传输,实现类似于下属城市动态加载的功能。信息表实际上关联了以上三张表格,通过它可以查到一条信息的完整相关信息,为了避免系统数据库存储的冗余,故将以上三张表格的标识符关联到此表中,信息表存储数据的除用户关系、发布所在地、所属类别之外的所有直接信息。因为信息表存储的内容较大,关联的信息较多,如果页面的每一次查询都是直接在信息表中查询的话,必然带来两个直接问题:一是查询一条信息所要检索的字段更多,对查询效率有一定影响;二是当查询一条信息时,页面上要显示物品所在地时,系统还需要通过信息表中的city_id字段去查询city_tb中的city_name字段,这样必然很麻烦,因此,再次引入info_view视图。视图因为是在数据库中存储的一个视图创建语句,因而其本身所占存储空间较小,而且执行效率更高。在info_view视图中,根据以上四张表格之间的关联,系统中查询出一条信息对应的用户名、城市名、类型名、价格、提交日期等字段,这些是可以直接显示在系统页面上的,因而比较方便使用,另外,这些字段和用户查询时传入的字段匹配,因此,查询时可以直接在视图中查询,避免类查询一条信息必须通过查询info_tb表的麻烦。江苏海事职业技术学院毕业设计(论文)江苏海事职业技术学院毕业设计(论文)第五章系统实现5.1系统界面设计5.1.1系统界面设计原则系统界面是用户与系统后台控制的中介,是用户唯一可以看到的模块,因此界面设计的原则是友好、大方,本系统的设计原则如下:1)页面设计要简洁实用。界面功能布局合理,操作方便,不奢求很炫的效果和华丽的外观。2)风格统一。系统界面最好保持风格的统一,避免风格的交叉和混杂给用户带来的视觉凌乱感。3)颜色搭配合理。本系统颜色的搭配原则是采用比较淡的颜色作为主色调,对其他一些模块的颜色,进行稍微加深或者减浅,尽量做到不给用户某一模块特别突兀的感觉。4)必要部位添加注释。对于类似于必填部位的说明,避免用户在最后提交时发生无法提交提醒,还需重新填写的现象。注解有助于减少用户的错误操作。5.1.2系统界面展示及相关实现代码 本系统涉及多个页面,本论文只选取几个主要页面作为展示说明:用户信息查询界面 用户查询界面主要按照系统分类提供常用搜索物品的超链接,用户在首页面就可以看到大多数常用商品的搜索链接;另外,系统搜索界面提供关键字搜索,用户可以在搜索框输入自己想要查询的物品的关键字,页面提交数据到指定Action,此时的Action指定类的指定方法是通过struts.xml中的映射文件来获得,该Action类调用Service层接口,Service类调用Dao层方法,Dao层访问数据库,实现对数据的持久化操作。系统展示页面如图5.1所示。图5.1用户信息查询界面图 本页面为系统首页,主要功能:通过搜索框的关键字查询相关信息、通过系统页面上的类型分类快速查询相关信息、用户登陆、用户注册,功能代码如下:通过关键字查询信息代码Jsp页面部分:<head>function<head>functionsearchKey(){ varkey=$('#searchText').val(); window.location.href='QueryInfoByKeyAction?key='+key;}</script></head><body> <divid="content"> <divid="header"> <jsp:includepage="../util/link.jsp"/> <imgsrc="imgs/logo.png"alt="二手市场"align="left"height="150px"> <divid="search"> <br><br> <inputtype="text"name="searchtext"id="searchText" class="textinput"><inputtype="button"name="search" value="搜素"onclick="searchKey()"class="searchButton"><br> </div> </div> <divid="upsidebar"> <jsp:includepage="../util/sidebar.jsp"/> </div> <divid="main"> <jsp:includepage="../util/main.jsp"/> </div> <divid="footer"> <jsp:includepage="../util/footer.jsp"/> </div> </div></body><action<actionname="QueryInfoByKeyAction"class="jmi.liujun.action.QueryInfoAction"method="queryByKey"> <resultname="success">/pages/result.jsp</result> <resultname="fail">/pages/error.jsp</result></action>publicpublicclassQueryInfoActionextendsActionSupport{ HttpServletRequestrequest=ServletActionContext.getRequest(); //根据关键字查询信息 publicStringqueryByKey()throwsUnsupportedEncodingException{ Stringkey=null; key=newString(request.getParameter("key").getBytes("ISO-8859-1"),"UTF-8"); infoList=queryInfoService.queryBykey(key); if(infoList.size()==0){ return"fail"; } return"success"; }} Service层实现执行操作:@Servicepublic@ServicepublicclassQueryInfoServiceImplimplementsQueryInfoService{ @Override publicList<InfoView>queryBykey(Stringkey){ infoList=queryInfoDao.queryByKey(key); returninfoList; }}Dao层执行方法:@RepositorypublicclassQueryInfoDaoImplextendsMyHibernateDaoSupportimplementsQueryInfoDao{ //关键字查询 StringHql; @SuppressWarnings("unchecked") publicList<InfoView>queryByKey(Stringkey){ Hql="fromInfoViewiwhereTitlelike'%"+key+"%'"; infoList=(List<InfoView>)this.getHibernateTemplate().find(Hql); returninfoList; }} 用户注册界面即为用户在系统注册自己的账号,拥有自己账号的用户享有信息发布功能,同时,在这项活动和这项功能基础上,系统还将提供个人信息查询功能,用户可以在登陆系统之后查看自己的个人信息和已经发布的信息。用户注册界面主要涉及的内容是对用户信息的持久化操作,另外,在此处提供用户注册时的必填信息验证功能。如图5.2所示。图5.2用户注册界面图 此模块是一个典型的SSH2框架完成的操作,其中,struts2的实现主要体现在struts.xml配置文件中,实现action位置及方法的定义,因为比较类似于web.xml文件且上文已做类似信息展示,因此不做展示;hibernate框架主要体现在它对数据库连接的获取,以及它提供一定的结构方便开发人员更加简便的实现数据操作;这里主要展示的是spring框架,在本系统中,hibernate和struts都被放到了spring框架中,由spring管理。Spring在此处提供了依赖注入功能,系统对象会被自动加载到spring容器,开发人员可以在action和jsp页面方便的获取系统中的对象及方法而不需重新new一个对象。 相关功能代码: JSP页面:<head><basehref="<head><basehref="<%=basePath%>"><title>用户注册</title><linkrel="stylesheet"type="text/css"href="css/styles.css"><linkrel="stylesheet"type="text/css"href="css/header.css"><scripttype="text/javascript"src="js/jquery-1.5.1.js"></script><scripttype="text/javascript"> functioncheck(){ varusername=$('#userName').val(); varpassword=$('#password').val(); varmail=$('#mail').val(); if(username.length<1||password.length<1||mail<1){ $('#show').html("<lablestyle='color:red'>遗失必填选项!</lable>"); returnfalse; }else{ returntrue; } }</script></head><body> <divid="content"> <divid="header"> <jsp:includepage="../util/link.jsp"/> <br><br><br><br> <h2> <fontcolor=red>欢迎来到二手市场!</font> </h2> <br><br> </div> <divid="upsidebar"></div> <divid="main"> <formaction="AddUserAction"method="post"name="form1"onsubmit="returncheck()"> *用户名:<inputtype="text"name=user.userNameid="userName"size=20><br><br> *密码 :<inputtype="password"name=user.passwordid="password"size=22><br><br> *邮箱 :<inputtype="text"name=user.mailsize=20id="mail"onblur='mail'><br><br> 地址 :<inputtype="text"name=user.addresssize=20><br><br> 姓名 :<inputtype="text"name=user.realNamesize=20><br><br> 性别 :<inputtype="text"name=user.sexsize=20><br><br> 年龄 :<inputtype="text"name=user.agesize=20><br><br><spanid="show"style="color:red;font-size:12px;"></span><br><br> <fontcolor="red">*标内容为必填项目!</font><inputtype="submit"name="submit"value="提交"/> <inputtype="reset"name="reset"value="重置"/></form> </div> <divid="footer"> <jsp:includepage="../util/footer.jsp"/> </div> </div></body></html>Action层:publicStringLogin(){ userList=userService.login(userName,password);publicStringLogin(){ userList=userService.login(userName,password); if(userList.size()==0){ return"fail"; }else{ user=userList.get(0); session.setAttribute("loginer",userName); session.setAttribute("user",user); return"success"; } } @Override @Override publicList<User>login(StringuserName,Stringpassword){ returnuserDao.login(userName,password); }Dao层: @Override publicList<User>login(StringuserName,Stringpassword){ StringHQL="fromUserwhereuserName=?andpassword=?"; returnthis.getHibernateTemplate().find(HQL,userName,password); }信息发布页面信息发布是一条信息的来源,信息发布页面允许已登录用户发布自己的二手商品信息,在信息发布时,用户需要为该条信息指定所属类别,需要为该条信息明确指定商品所在城市,这又助于其他用户更加方便、准确的找到该条信息。信息发布页面主要涉及的新知识是通过Ajax实现页面与后台数据的交互工作。页面上通过JavaScript控制触发事件的条件,Ajax技术提交数据给对应的Action层,由Action层调用Service层提供接口,Service层调用到层,到层对数据库操作获取数据并返回。页面效果如图5.3所示。图5.3信息发布页面图JSP页面(集中展示JavaScript获取下属城市部分):<script<scripttype="text/javascript"> functiongetCity(cityLevel){ varcityName=""; if("sheng"==cityLevel){ cityName=$('#sheng').val(); }elseif("shi"==cityLevel){ cityName=$('#shi').val(); } $.ajax({ type:'POST', url:'QueryCityAction', data:{ city:cityName }, success:function(xmlData){ varinnerHtmlVar=""; $("root>citys>city",xmlData).each(function(){ varcity=$(this).text(); if(city&&city!=""){ innerHtmlVar+="<option>"+city+"</option>"; } }); if("sheng"==cityLevel){ varlen1=document.getElementById("shi"); varlen2=document.getElementById("xian"); len1.length=1; len2.length=1; $('#shi').append(jQuery.trim(innerHtmlVar)); }elseif("shi"==cityLevel){ varlen=document.getElementById("xian"); len.length=1; $('#xian').append(jQuery.trim(innerHtmlVar)); } } }); }</script>*物品所在地: <selectid="sheng"name="sheng"onchange="getCity('sheng')"> <optionchecked=true>请选择</option> <option>江苏</option> <option>北京</option> </select> <selectid="shi"name="shi"onchange="getCity('shi')"> <optionchecked=true>请选择</option> </select> <selectid="xian"name="xian"> <optionchecked=true>请选择</option> </select>publicclasspublicclassQuerySelectActionextendsActionSupport{ HttpServletRequestrequest=ServletActionContext.getRequest(); HttpServletResponseresponse=ServletActionContext.getResponse(); publicvoidqueryCity(){ Stringcity=request.getParameter("city"); cityList=querySelectService.queryCity(city); StringBuffersb=newStringBuffer(); response.setContentType("text/xml;chartset=utf-8"); response.setCharacterEncoding("UTF-8"); response.setHeader("Cache-Control","no-cache"); try{ PrintWriterout=response.getWriter(); if(cityList.size()!=0){ sb.append("<?xmlversion='1.0'encoding='UTF-8'?><root><citys>"); for(inti=0;i<cityList.size();i++){ sb.append("<city><![CDATA["+cityList.get(i).getCityName()+"]]></city>"); } sb.append("</citys></root>"); out.print(sb.toString()); out.flush(); } out.close(); }catch(IOExceptione){ e.printStackTrace(); } }@Override public@Override publicList<City>queryCity(Stringcity){ cityList=querySelectDao.queryCity(city); returncityList; } @Override @Override publicList<City>queryCity(Stringcity){ id=queryCityIdByCityName(city); Hql="fromCitywheresuperCity=?"; cityList=this.getHibernateTemplate().find(Hql,id); returncityList; } publicIntegerqueryCityIdByCityName(Stringcity){ Hql="fromCitywherecityName=?"; id=((City)this.getHibernateTemplate().find(Hql,city).get(0)).getCityId(); returnid; }5.2输入数据的验证数据验证主要的作用是避免用户的误操作、符合数据库数据的存储原则。1)用户信息输入规范。信息验证常见于用户登陆名与密码错误,用户登陆信息填写不完整,这些信息的不完善势必会影响到用户的正常登陆,因此,在这种情况下,系统将提供错误操作提醒,提示用户操作的错误原因。以用户登录界面为例,用户在登录系统时如果遗漏用户名或密码的填写,系统将给出“遗失必填项”的警告,如下图5.5:图5.5用户登录界面信息验证图该页面通过在表单上添加onsubmit属性,在执行提交前通过onsubmit指定的JavaScript函数验证页面必填元素内容是否为空,如果为空则弹出提示信息。另外,页面中写入<span>标签作占位符,用于设定提示信息的现实位置。相关代码如下:Jsp页面:<form<formaction="LoginAction"method="post"name="form1"onsubmit="javascript:returncheck()"> *用户名:<inputtype=textid="userName"name="userName"size=20/><br></span> <br>*密码 : <inputtype=passwordid="password"name="password"size=22><br><br><spanid="show"style="color:red;font-size:12px;"></span><br><br> <fontcolor="red">*标内容为必填项目!</font> <inputtype=submitvalue="提交"/>JavaScript中相关函数:functioncheck(){ varusername=$('#userName').val(); varpassword=$('#password').val(); if(username.length<1||password.length<1){ $('#show').html("<lablestyle='color:red'>遗失必填选项!</lable>"); returnfalse; } }图5.6用户注册界面信息验证图 此项功能的实现主要是采用了Ajax技术,通过该技术将用户名传到后台服务器进行验证,并将验证结果返还到页面中,因为相关Ajax代码在前文查询下属城市时已经涉及,并且页面提醒输出在用户登录页面也已做解释,因此在此仅作实现流程介绍,如下图5.7,用户在页面中离开用户名填写框后执行onblur方法,页面执行script中的Ajax方法,这里采用Ajax技术将用户名信息传递到后台action,action对应类获取参数并与数据库交互并获得判断结果,这里用xml的数据格式返回数据到页面,Ajax获取数据流并解析得到数据,判断是否弹出提醒框。图5.7表单验证流程图数据库后台java类Jsp页面部分 数据库图5.7表单验证流程图数据库后台java类Jsp页面部分数据库页面执行onblur方法跳转到scriptAjax传递用户名信息到指定actionAction对应java类,获取参数、调用判断方法江苏海事职业技术学院毕业设计(论文)江苏海事职业技术学院毕业设计(论文)总结本次毕业设计选取了SSH2框架,希望通过一个项目来熟悉一个主流的框架,由于第一次开始使用,加之本次毕业设计制作期间时间比较紧,仓促完成,因此在某些方面简化了部分功能并降低了视觉效果。本次毕业设计主题是二手市场,该类系统在网络上并不少见,在许多方面希望去模仿这些优秀网站的设计思想,因此会有一些看腻了的地方出现,但个人认为,这些网站存在的共同的东西并不一定代表技术没有革新,或许是因为这是比较优秀的一种实现方式因而被广泛使用。本次设计的主要目的在于通过项目进行学习,由于本人希望日后的发展方向是软件方向,就必然要通过当下主流的技术来提升自己的技术水平。本次毕业设计学习到了许多未曾接触过的内容,例如:学会了通过Hibernate来进行数据操作,抛弃了传统的代码实现数据库操作的繁琐;学会了通过Struts来定义逻辑控制,使跳转操作更加方便、简洁;学会Spring的注入思想,通过这种方式在调用元素时不必重复生成,一次产生,到处使用,极大的提高了系统性能。另外,在某些地方尝试了使用Ajax实现表单提交,后台数据获取。本次系统设计伊始曾考虑过诸多功能,但是在实施过程中由于时间和技术的原因未能实现,希望能够在以后继续完成以下几项功能:电子交易功能。买家与卖家可以在沟通之后通过网上银行或者类似于支付宝的平台来完成支付功能。实名认证功能。实名认证是用户信息的一个认定,他可以防止很多欺诈手段和违法行为。以物易物功能。该功能实际上是要实现用户间如果各自持有商品刚好符合对方需求的情况下,双方可以约定以何种支出来完成该笔交易。致谢本次毕业设计的完成借助了大量的外在力量。首先,通过书籍、视频以及别人做过的项目源码学到了很多从未接触过的东西,感谢这些人对知识的慷慨传播;其次,网络对于我这次毕业设计的完成提供了巨大的帮助,在一些专门的论坛、贴吧,许多业内人士都给予了我宝贵的经验,感谢这些大神们耐心的讲解;第三,本次毕业设计在项目伊始,本人就希望通过自主学习的途径来完成这项任务,在本次毕业设计中,指导老师给我们制定了详细的工作流程及阶段目标,在论文提交之后很快给予了我们详细的论文更改思路,非常感谢老师的付出;第四,对本次毕业设计做出直接技术支持的是我目前的室友,因为书本上的理论在应用于实际项目中的时候会出现各种问题,而自己没有框架的使用经验,他在这方面提供了许多帮助。江苏海事职业技术学院毕业设计(论文)江苏海事职业技术学院毕业设计(论文)参考文献[1]孙卫琴、李洪成.Tomcat与JavaWeb开发技术详解[M].北京:电子工业出版社,2009年1月.[2]孙卫琴.精通Struts:基于MVC的JavaWeb设计与开发[M].北京:电子工业出版社,2004年8月.[3]孙卫琴.精通Hibernate[M].北京:电子工业出版社,2010年2月[4]杨学会.JSP编程技术[M].北京:清华大学出版社,2009年4月[5]李刚疯狂.java讲义[M].北京:
电子工业出版社,2012年1月[6]刘杰西、柳林
.HTML、CSS、JavaScript网页制作从入门到精通[M].北京:人民邮电出版社,2013年1月[7]Y.DanielLiang
.java程序设计[M].机械工业出版社,2011年6月基于C8051F单片机直流电动机反馈控制系统的设计与研究基于单片机的嵌入式Web服务器的研究MOTOROLA单片机MC68HC(8)05PV8/A内嵌EEPROM的工艺和制程方法及对良率的影响研究基于模糊控制的电阻钎焊单片机温度控制系统的研制基于MCS-51系列单片机的通用控制模块的研究基于单片机实现的供暖系统最佳启停自校正(STR)调节器单片机控制的二级倒立摆系统的研究基于增强型51系列单片机的TCP/IP协议栈的实现基于单片机的蓄电池自动监测系统基于32位嵌入式单片机系统的图像采集与处理技术的研究基于单片机的作物营养诊断专家系统的研究基于单片机的交流伺服电机运动控制系统研究与开发基于单片机的泵管内壁硬度测试仪的研制基于单片机的自动找平控制系统研究基于C8051F040单片机的嵌入式系统开发基于单片机的液压动力系统状态监测仪开发模糊Smith智能控制方法的研究及其单片机实现一种基于单片机的轴快流CO〈,2〉激光器的手持控制面板的研制基于双单片机冲床数控系统的研究基于CYGNAL单片机的在线间歇式浊度仪的研制基于单片机的喷油泵试验台控制器的研制基于单片机的软起动器的研究和设计基于单片机控制的高速快走丝电火花线切割机床短循环走丝方式研究基于单片机的机电产品控制系统开发基于PIC单片机的智能手机充电器基于单片机的实时内核设计及其应用研究基于单片机的远程抄表系统的设计与研究基于单片机的烟气二氧化硫浓度检测仪的研制基于微型光谱仪的单片机系统单片机系统软件构件开发的技术研究基于单片机的液体点滴速度自动检测仪的研制基于单片机系统的多功能温度测量仪的研制基于PIC单片机的电能采集终端的设计和应用基于单片机的光纤光栅解调仪的研制气压式线性摩擦焊机单片机控制系统的研制基于单片机的数字磁通门传感器基于单片机的旋转变压器-数字转换器的研究基于单片机的光纤Bragg光栅解调系统的研究单片机控制的便携式多功能乳腺治疗仪的研制基于C8051F020单片机的多生理信号检测仪基于单片机的电机运动控制系统设计Pico专用单片机核的可测性设计研究基于MCS-51单片机的热量计基于双单片机的智能遥测微型气象站MCS-51单片机构建机器人的实践研究基于单片机的轮轨力检测
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年内江客运从业资格证培训资料
- 2024年换向器购销合同样本
- 2024年怀化客运从业资格证模拟考试题库下载
- 义齿加工厂销售合同模板2024年
- 2024年驻马店客运资格证考试试题模拟
- 2024年白山道路运输客运从业资格证模拟考试
- 2024年施工协议之一
- 2024年货物运输合同范本(经典)
- 2024年沧州客运模拟考试
- 2024年入股经营协议书范本
- MOOC创新创业与管理基础(东南大学)
- 莱州市梁郭镇大郎家金矿矿山地质环境保护与土地复垦方案
- 人工成本对建筑工程造价影响因素分析
- XX医院高警示药品(高危药品)目录
- 拆除桥梁专项施工方案范本
- 新雳切割喷墨绘图机说明书
- 抗美援朝精神(教案)小学生主题班会通用版
- 集团公司五年战略发展规划
- 防造假管理程序文件
- 光的反射(课件)五年级科学上册(苏教版)
- 全面设备管理(TPM)培训课件
评论
0/150
提交评论