




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目录基于SSM的众筹平台设计与实现摘要随着经济的不断发展,创业人群也随之增加,然而由于创业初期人力、物力和资源等的紧缺,导致许多没有足够资金的创业者最终以失败告终,为了能够让更多的人完成创业目标,同时能够提供更多就业机会和就业岗位,因此,本设计基于SSM框架开发了一个众筹平台系统。本设计以SSM框架为软件开发框架,选用Java作为开发语言,软件开发工具采用IntelliJIDEA,后台数据存储分别使用关系型数据库MySQL和键值型非关系型数据库Redis,前端页面的数据和样式展示运用HTML、CSS、JavaScript、JQuery等技术完成。本众筹平台系统功能完善,主要分为前台和后台两个部分,由用户注册、用户登录、项目发布、项目展示和项目支持等功能构成前台模块,而后台模块主要由管理员登录、信息维护、角色维护、菜单维护和权限控制等功能构成。关键词:众筹平台;SSM;Java;MySQL;Redis;JavaScript目录26601绪论 1116331.1选题背景 12891.2国内外研究现状及应用前景 1309031.3论文研究内容及结构安排 2323721.3.1论文研究内容 267741.3.2论文结构安排 299082技术简介 4269712.1SSM框架 447822.2MVC模式 432162.3MySQL数据库 582632.4Web前端开发技术 5307822.5Redis缓存数据库 6126622.6Ajax异步交互 649052.7章末小结 651023众筹平台的分析与设计 7302553.1系统需求分析 7243633.2系统总体设计 7319163.2.1系统功能设计 7173383.2.2系统运行流程设计 8217783.3数据库结构设计 9240523.3.1概念结构设计 9315463.3.2逻辑结构设计 10285643.4章末小结 1246594众筹平台的开发与实现 13160614.1众筹平台开发环境 134154.2众筹平台前台功能实现 1336924.2.1用户注册功能的实现 1368744.2.2用户登录功能的实现 148924.2.3发布项目功能的实现 14277804.2.4展示项目功能的实现 1788524.2.5支持项目功能的实现 19243524.3众筹平台后台功能实现 20140094.3.1管理员登录功能的实现 21194294.3.2管理员信息维护功能的实现 21116224.3.3角色维护功能的实现 2317924.3.4菜单维护功能的实现 2472454.3.5权限控制功能的实现 25247744.4章末小结 2615815众筹平台的运行测试 27321775.1测试环境搭建 27244265.2众筹平台前台运行测试 2789945.2.1用户注册运行测试 2762115.2.2用户登录运行测试 28182275.2.3用户发布项目运行测试 28250515.2.4用户查看项目运行测试 29256375.2.5用户支持项目运行测试 30195745.3众筹平台后台运行测试 30215455.3.1管理员登录运行测试 3042375.3.2管理员信息维护运行测试 31247315.3.3角色维护运行测试 3186245.3.4菜单维护运行测试 32184065.3.5权限控制运行测试 32249115.3章末小结 32224396总结与展望 33145526.1总结 33258026.2展望 3331160参考文献 351绪论1.1选题背景随着社会经济的不断发展和创新、创业的提倡,创业人群不断的增多,但广大的创业人群多为大学毕业生,虽有新颖的想法和创新项目,但创业需要大量的启动资金以及人力资源,这些原因使得许多创业者的创意和项目落空不得实现。同样社会和经济不断发展,一部分人已积累了较多财富,但已没有劳动能力和新颖的创意,主要以投资他人项目为主获取更长期的回报,但消息闭塞、调研情况与实际情况不符等,导致投资者亏损严重或找不到心怡的项目及合作伙伴。众筹平台的运营和开发主要目的就是为了帮助筹资者和融资人搭建“方便,及时,快捷”的共享平台。对于创业者来说,除了自己筹集的资金以外,也更加期待自己可以通过相对公开的众筹服务平台进行筹人、募智,同时还希望自己有机会能够从中汲取到与其他创业者一起交流成功失败经验、与投资方进行有效地沟通提出项目整改的方案和建议等。做好了融资方与发起方“筹钱”沟通的的渠道和平台,对于项目的进行查核与辨别,既是对项目的挑选,同时,也给创业者指出了前行的方向;对于创业者来说,“筹钱”是一方面,“募智”也是相当重要的。选择众筹集资和投资者挑选项目的过程中,抛开经济因素以外,在众筹平台上的各类优质资源,如网络媒体宣传、经销商的供货、销售资源、各家投资机构的加盟等等,都是是否选择众筹平台的重要的决定因素。[1]随着网络时代的迅速发展,软件开发相应的技术也不断的进步,SSM框架被认为是当前国际市场上应用范围比较广泛,且最为主流的软件系统轻量级开源框架,主要应用于各类大型企业级软件系统开发的设计和构建,SSM框架由Spring、SpringMVC和MyBatis框架整合而成,整个系统被划分为四层,分别是:表现层、controller层、service层和dao层。SSM框架在配置方面越来越轻量级,同时也将注解功能在开发中发挥到了极致,并且更加灵活的实现了ORM,同时操作简单也便于SQL优化。应用众筹的模式,对即将发布的商品或技术首先进行推广宣传,获得未来客户的支持。通过这种方式降低企业的风险,推动创业型和技术型公司的稳步发展,为筹资者和投资者相互了解及支持提供帮助,本课题针对创业中筹资人和投资人各自需求问题,设计并实现了基于SSM的众筹平台系统。1.2国内外研究现状及应用前景美国的众筹项目kickstarter正是由一个网络众筹项目发展而来,它通过自己搭建的网络众筹服务平台来直接面向普通大众进行集资,让所有能力强、思维活跃的年轻人,可以直接通过这种众筹方式从普通人那里获得自己所需要的资源和人力,为他们每一个项目的顺利实现和任务完成提供了条件。在国内,类似于国外这一类的产品也很少见,例如:追梦网、众筹网、点名时间等等。众筹的模式大致分为以下四类:股权、债权、回报和捐赠[2]。但由于国内外的经济模式有很大的差异,所以国内的创意众筹网站仍然存在一些问题:网络平台成规模的少,平台上常驻用户少、资金短缺、实际发布创新项目少。反而,股权模式的众筹在中国很受追捧。我国自引进众筹模式以来,通过不断地发展成长,与我国的实际经济法律相结合,不同的领域中得到了运用。许多企业也开始借助不同的众筹模式来进行融资,但线上众筹多以捐赠模式为主,软件的功能主要是项目发布,用户支付等功能,其余多种众筹模式都为线下集资,线上众筹模式较为单一,不能满足集资者的多种需求,且网络众筹安全性较低,人们认可度不高。众筹强大的市场前景使其拥有良好的未来,且刺激金融发展,引导民间经济走向正规化,同时还创造了许多就业岗位,促进技术革新。众筹在国内已然初具规模,但还是存在一定的风险和缺点,作为网络经济的发展的手段,在未来的发展中其一定会不断地完善,形成独特的中国众筹模式,促进中国经济的快速稳定增长。1.3论文研究内容及结构安排1.3.1论文研究内容本文从现如今大多数创业者起步时面临的困境出发,详细阐述了一个基于SSM框架开发的众筹平台系统的设计与实现全过程,平台相关数据的存储使用MySQL数据库和Redis数据库。众筹平台的开发主要基于SSM、MySQL、Redis、HTML、Ajax等技术实现了用户的注册、登录和项目的发布、展示支持功能以及管理员的登录、信息维护、角色维护、菜单维护和权限控制功能。1.3.2论文结构安排本文拟使用SSM框架设计并完成一个网络众筹平台,通过对类似系统的对比分析,得出本文的设计需求,将论文的结构做如下安排:第一部分,绪论,简要介绍本文的选题背景和国内外现状研究以及应用前景,详细了解国内外现有的众筹产品,分析其缺点和优势得出本文研究的主要内容和论文结构的基本安排。第二部分,技术简介,是众筹平台系统使用技术的理论支持,分别介绍了SSM框架、MVC模式、MySQL数据库、Web前端开发技术、Redis数据库、Ajax等主要技术。第三部分,众筹平台的分析与设计,对众筹平台系统进行了应用需求分析和系统总体设计,得出系统的具体功能模块和运行流程,然后通过将系统E-R图转换为关系型表结构,完成对系统数据库的具体设计。第四部分,众筹平台的开发与其功能实现,通过从功能实现流程、使用技术和关键代码三个方面介绍了众筹平台开发和功能实现的详细过程。第五部分,众筹系统的运行效果,众筹系统各项功能的实现,通过具体的测试检验其功能的完善程度,并对各个功能运行效果进行展示。第六部分,总结与展望,总结和分析论文中存在的问题和不足,对未来的改进提出意见和建议。
2技术简介2.1SSM框架SSM框架,是Spring+SpringMVC+MyBatis框架整合的简称,是标准的MVC模式。在SSM框架中,Spring通过IOC容器的装载bean机制实现业务对象的管理,使用AOP来管理事务;SpringMVC通过DispatcherServlet接收客户端请求并根据注解或配置文件信息找到相应的Controller,然后通过调用业务逻辑返回到视图界面,从而完成对客户端的请求处理和视图的管理;MyBatis实际是通过对JDBC进行封装,从而保护了JDBCAPI访问底层的细节,进而完成了数据库的持久化操作。[3]Spring是一个应用于Java企业级应用开发的开源框架,它主要是用来简化应用的开发,IOC(控制反转)和AOP(面向切面编程)是Spring主要的核心;Spring中的IOC容器可以很好的帮助我们管理对象与对象之间的依赖关系,这样就使得对象与对象之间的耦合度降低,方便代码的维护;Spring中的IOC容器还负责生成和管理AOP代理,同时IOC也负责管理AOP的依赖关系,使用AOP可以管理事务、日志和权限等。[4]SpringMVC是Spring框架中的的一个模块,属于Spring家族的一份子,并且它还是是一个基于MVC模式的轻量级Web框架;SpringMVC负责请求和视图的管理,它通过前端控制器接收客户端请求从而响应结果,而且还大幅度的减少了其他组件之间的耦合性,从而实现了对请求的管理;通过视图解析器对视图进行解析,再进一步对逻辑图名进行解析得到真正的视图返回给客户端,进而实现视图管理。[5]MyBatis框架也被成为ORM(Object/RelationalMapping)框架。MyBatis框架的内部实际上是封装了JDBC,所以使用者只需要编写SQL语句即可,并不需要对加载驱动、创建连接等过程进行处理;MyBatis框架通过使用xml或者注解的形式,把需要执行的statement进行配置,并通过将statement中SQL的动态参数与Java对象映射起来,然后生成实际要执行的SQL语句,进而MyBatis框架执行实际SQL语句,并将最终的结果映射成Java对象返回。MyBatis框架的SQL语句依赖于数据库,所以导致数据库一致性差,不能随意更换数据库。[6]2.2MVC模式MVC是一种耦合性低、重用性高、部署快、可维护性高的软件架构模式,它将软件系统分为Model层、View层和Controller层三部分,其中Model层用于封装与业务逻辑相关的数据以及实现功能的具体方法;View层负责数据在页面上的显示;Controller层起到不同层之间的组织作用,用于程序流程的控制。2.3MySQL数据库顾名思义数据库就是用来存储数据的一个仓库,其本质就相当于一个文件系统。数据库主要分为:关系型数据库(SQL)和非关系型数据库(NoSQL),而MySQL数据库则属于中型的关系型数据库,关系型数据库是通过利用关系模型将复杂的数据转换成了二维表来完成对数据的存储功能;进而解决了关系型数据库的数据管理和持久化存储问题。[7]SQL语句是针对关系型数据库的一种标准化特殊的编程语言,用来实现用户对数据库的查询和程序数据库设计。SQL语言的主要功能包括以下5个部分:(1)DQL,数据查询语言主要用于查询和检索数据;(2)DML,数据操作语言主要用于数据的写操作(增、删、改);(3)DDL,数据定义语言主要用于创建数据结构;(4)DCL,数据控制语言主要用于用户的权限管理;(5)TCL,事务处理语言主要用于协助数据操作语言进行事务操作。2.4Web前端开发技术HTML被称为超文本标记语言,是一种用来描述网页的语言。它其实是一套标记标签,通过标记和标签对网页进行描述;HTML标签是由一对尖括号(<>)和标签名组成的,标签则分为“起始标签”和“结束标签”。CSS(CascadingStyleSheets)层叠样式表,层叠是指多个样式可以同时生效在同一个HTML元素上;CSS通过内联样式、内部样式和外部样式三种方式与HTML相结合,CSS主要通过选择器找到HTML上的元素,选择器主要分为基础选择器和扩展选择器,基础选择又分为:元素选择器、类选择器和id选择器;CSS通过选择器筛选具有相似特征的元素。JavaScript是一种弱类型的脚本语言,同时也是一种轻量级的编程语言。它是可以直接插入HTML页面的编程代码,插入到HTML页面之后,可由浏览器执行,JavaScript可以改变HTML页面的元素、属性,也可以更改页面中所有的CSS样式,同时也可以在页面添加各种事件。JQuery是JavaScript一个的库,它封装了原生的JavaScript函数、CSS、DOM和Ajax等功能,它可以达到使用少量代码完成复杂困难功能的目的;它具有访问和操作DOM、控制页面外观、简化JS代码、处理事件更容易、动画效果使用方便、Ajax技术更完善、可以自行扩展功能插件等特点,从提高使用效率。[8]2.5Redis缓存数据库Redis又被称为远程数据服务,是一款用C语言开发的开源高速缓存数据库。Redis数据库为非关系型数据库(NoSQL),非关系型数据库是一种非关系型的数据存储方式,它主要解决了高并发和低效率的问题。Redis的主要特点包括以下几个方面:(1)执行速度快,每秒大约可执行110000条设置操作或81000条读取操作;(2)支持多种数据类型,如:字符串、哈希、列表、集合和有序集合等五种数据类型;(3)原子性操作,为了确保两个用户同时访问Redis服务器时能够获得更新后的最新值,所以Redis操作都是原子性的。2.6Ajax异步交互Ajax(AsynchronousJavascriptAndXML),它等于异步的JavaScript和XML,通过使用Ajax技术可以创建一个快速动态网页,Ajax不是新的编程语言,而是根据现有标准使用的一种新方法,Ajax可以在不重新加载整个页面的情况下与服务器交换数据,并修改部分网页的信息。Ajax的同步与异步:Ajax异步通常是面向字符的数据传输,它的单位一般是字符,而Ajax同步的传输一般是面向比特的传输,它的单位一般情况是bit。Ajax的优点:(1)可以不重启服务器或在不刷新的情况下跟服务器进行数据的交互;(2)Ajax在使用异步方式的情况下与服务器交互,用户的操作不会被打断,并且响应能力更加迅速;(3)Ajax技术的应用在很大的程度上可以减少服务器上冗余请求的负担;(4)Ajax是根据现有标准化新的使用方法,并且被广泛支持的技术,所以不需要其他插件和程序的支持。[9]2.7章末小结众筹平台系统主要分为两个模块:前台模块和后台模块。本章简要介绍了设计中所使用的关键技术,包括SSM框架,MVC模式,MySQL数据库,Web前端开发技术如HTML、CSS、JavaScript和JQuery,以及Redis键值型非关系型数据库和Ajax。通过对技术的介绍为系统的实现打下了牢固的理论基础。
3众筹平台的分析与设计3.1系统需求分析该众筹平台系统以SSM作为开发框架,开发工具使用IntelliJIDEA,网站的数据库采用了关系数据库MySQL和键值型非关系数据Redis。系统基于SSM框架进行开发,利用SSM框架将页面渲染、逻辑代码、数据操作中繁琐的过程进行了简化,提高了开发效率。[10]该众筹平台系统主要分为前台模块和后台模块,前台对应平台普通注册用户,后台模块对应工作人员或者管理人员,前台功能模块主要实现了用户注册、登录、项目发布、项目展示和项目支持等功能;后台功能模块主要实现了工作人员对众筹平台系统数据的管理,其中包括登录、信息维护、角色维护、菜单维护和权限管理等功能。根据上述功能需求分析可以初步确定系统的UML用例图如图3-1所示。图31系统UML用例图3.2系统总体设计3.2.1系统功能设计(1)前台功能模块前台功能模块包五个个功能实现:用户注册、用户登录、项目发布、项目展示和项目支持。(2)后台功能模块后台功能模块包含五个功能实现:管理员登录、信息维护、角色维护、菜单维护和权限控制。该众筹平台的系统功能模块图如图3-2所示。图32系统功能模块图3.2.2系统运行流程设计本众筹平台系统由项目展示页做为主页,打开即可浏览感兴趣的项目,支持项目时必须登录个人账号,登录时需要判断是否用户身份,用户身份如果为管理员则进入管理员登录界面,账号和密码输入成功后进入管理员系统主界面,管理员可以进行相应的操作(角色维护、菜单维护、权限控制),用户如果没有账号可以在登录界面点击注册,在注册界面进行注册,已经拥有账号的用户可以直接进行登录。在注册界面中用户需输入账号、密码、邮箱、手机号和验证码,注册成功,则进入登录界面。在登录界面中,输入账号和密码,登录成功后进入主界面。在主界面中,用户可以进行相应的项目操作(项目发布、项目展示、项目支持),使用结束后退出登录关闭系统。该众筹平台系统的系统运行流程图,如图3-3所示。图33系统运行流程图3.3数据库结构设计3.3.1概念结构设计数据库概念结构设计的原理就是将系统需求分析中设计的功能抽象为数据结构和具体的实体类,方便更快、更好的完成系统的需求功能。(1)根据系统分析,初步确定三个实体类和各自的属性。用户:{用户id,登录账号,密码,真实姓名,电子邮箱}项目产品:{项目id,项目名称,项目描述,筹集金额,筹集时间,发起时间,支持人数,已筹金额}管理员:{管理员id,账号,密码,姓名,邮箱,创建时间}确定实体之间的关系,系统总E-R图,如图3-4所示。图34系统总E-R图3.3.2逻辑结构设计针对上文的系统总E-R图转换为关系模型:用户表、产品项目表、管理员表、支持回报表,其表结构如下所示。用户表结构关系模型,如表3-1所示。表3-1用户表字段数据类型主键是否为空注释idint是否用户idloign_acctvarchar(30)否否登录账号user_pswdchar(30)否否登录密码realnamevarchar(30)否是真实姓名emailvarchar(30)否是电子邮箱产品项目表结构关系模型,如表3-2所示。表3-2产品项目表字段数据类型主键是否为空注释idint是否项目iduser_idvarchar(30)否是项目名称project_idvarchar(30)否是项目描述moneybigint否是筹集金额dayint否是筹集天数deploydatevarchar(10)否是发起时间supportmoneybigint否是已筹金额supporterint否是支持人数管理员表结构关系模型,如表3-3所示。表3-3管理员表字段数据类型主键是否为空注释idint是否管理员idlogin_acctvarchar(25)否否账号passwordvarchar(25)否否密码usernamevarchar(25)否是姓名emailvarchar(25)否是邮箱create_timevarchar(25)否是创建时间支持回报表结构关系模型,如表3-4所示。表3-4支持回报表字段数据类型主键是否为空注释idint是否回报iduser_idint否是用户idproject_idint否是项目idreturn_typeint否是返回类型supportmoneyint否是支持金额return_contentvarchar(255)否是回报内容3.4章末小结本章对众筹平台进行了系统需求分析、系统总体设计和数据库设计,系统需求分析使用系统UML图初步确定了系统的功能需求,系统总体设计利用系统功能模块图和系统流程图完成了系统的功能和流程设计,数据库的设计采用系统E-R图和关系模型表完成数据的概念结构和逻辑结构设计。
4众筹平台的开发与实现4.1众筹平台开发环境后端开发:使用Maven作为构建管理和依赖管理工具。使用SpringMVC作为Web层框架,普通请求:返回响应体通常为一个页面;Ajax请求:返回响应体通常为一个JSON数据。使用MyBatis作为持久化层框架,利用MyBatis的PageHelper插件实现数据的分页显示。使用Spring提供的容器管理项目中的组件。[11]前端开发:CSS和JQuery作为前端样式框架;借助SpringMVC提供的异常映射机制实现项目中错误消息的统一管理,并且基于注解和XML通过对请求消息头信息的判断在给出异常处理结果时实现了普通请求和Ajax请求的兼容。[12]4.2众筹平台前台功能实现本系统前台功能主要面向普通用户,为用户提供友好的界面展示以及简单易懂的操作流程,前台功能模块除了实现基本的用户注册和登录功能之外也实现了用户在平台主界面中项目的发布、查看及支持等功能。4.2.1用户注册功能的实现当用户登录没有账号时进行注册,注册页面主要实现流程和功能如下:(1)按要求输入界面相应的字段信息。(2)点击注册后,会提示用户注册成功或失败。(3)当提示用户注册成功后,页面跳转至登录界面,与此同时系统会将用户信息保存后台数据库中。注册页面实现流程,如图4-1所示。图41用户注册流程图4.2.2用户登录功能的实现用户系统后可以游客身份进行项目浏览,当发布项目和支持项目时必须进行登录,登录界面可以实现如下功能:(1)用户名和密码的输入和校验。(2)查询账号是否存在,不存在则进行错误提示并提醒用户注册。(3)用户名、密码与数据库信息的校验,不正确则进行错误提示,继续登录。(4)当用户名和密码都正确时,提示登录成功,进入个人信息界面。登录页面实现流程,如图4-2所示。图42用户登录流程图4.2.3发布项目功能的实现用户登录成功后,可以在用户的个人界面可以点击“我的众筹”,然后在我的众筹界面中点击“发起众筹”,将自己的项目发布到众筹平台上,进行募集资金。实现过程是:利用Ajax请求将前端页面的数据返回给后端进行处理先保存相应的对象中,然后分别存储进相对应的数据库表中。实现用户发布项目功能的流程,如图4-3所示。图43用户项目发布流程图实现用户发布项目功能的关键代码如下:@Transactional(readOnly=false,propagation=Propagation.REQUIRES_NEW,rollbackFor=Exception.class)publicvoidsaveProject(ProjectVOprojectVO,IntegermemberId){//1.保存项目对象ProjectPOprojectPO=newProjectPO();BeanUtils.copyProperties(projectVO,projectPO);projectPO.setMemberid(memberId);Stringcreatedate=newSimpleDateFormat("yyyy-MM-dd").format(newDate());projectPO.setCreatedate(createdate);projectPO.setDeploydate(createdate);projectPO.setStatus(0);ProjectPOExampleexample=newProjectPOExample();ProjectPOExample.Criteriacriteria=example.createCriteria();criteria.andProjectNameEqualTo(projectVO.getProjectName());List<ProjectPO>projectPOList=projectPOMapper.selectByExample(example);if(projectPOList==null||projectPOList.size()==0){return;}IntegerprojectId=projectPOList.get(0).getId();//2.保存项目、分类的关联关系信息List<Integer>typeIdList=projectVO.getTypeIdList();projectPOMapper.insertTypeRelationship(typeIdList,projectId);//3.保存项目、标签的关联关系信息List<Integer>tagIdList=projectVO.getTagIdList();projectPOMapper.insertTagRelationship(tagIdList,projectId);//4.保存项目中详情图片路径信息List<String>detailPicturePathList=projectVO.getDetailPicturePathList();projectItemPicPOMapper.insertPathList(projectId,detailPicturePathList);//5.保存项目发起人信息MemberLaunchInfoVOmemberLaunchInfoVO=projectVO.getMemberLaunchInfoVO();System.out.println(memberLaunchInfoVO);MemberLaunchInfoPOmemberLaunchInfoPO=newMemberLaunchInfoPO();BeanUtils.copyProperties(memberLaunchInfoVO,memberLaunchInfoPO);memberLaunchInfoPO.setMemberid(memberId);memberLaunchInfoPOMapper.insert(memberLaunchInfoPO);//6.保存项目汇报信息List<ReturnVO>returnVOList=projectVO.getReturnVOList();List<ReturnPO>returnPOList=newArrayList<ReturnPO>();for(ReturnVOreturnVO:returnVOList){ReturnPOreturnPO=newReturnPO();BeanUtils.copyProperties(returnVO,returnPO);returnPOList.add(returnPO);}returnPOMapper.insertReturnPOBatch(returnPOList,projectId);//7.保存项目确认信息MemberConfirmInfoVOmemberConfirmInfoVO=projectVO.getMemberConfirmInfoVO();MemberConfirmInfoPOmemberConfirmInfoPO=newMemberConfirmInfoPO();BeanUtils.copyProperties(memberConfirmInfoVO,memberConfirmInfoPO);memberConfirmInfoPO.setMemberid(memberId);memberConfirmInfoPOMapper.insert(memberConfirmInfoPO);}4.2.4展示项目功能的实现用户登录成功后,点击返回主界面,在主界面中选择相应的项目产品进行查看,显示项目详细信息,实现过程是:通过前端页面返回相应的项目id,再通过产品id进行查找返回项目数据。实现用户展示项目功能的流程,如图4-4所示。图44用户项目展示流程图实现用户展示项目功能的关键代码如下:publicProjectgetProject(IntegerId){//1.查询得到Project对象Projectproject=projectMapper.selectProject(Id);//2.根据stat确定StatTextIntegerstatus=project.getStatus();switch(status){case0:project.setStatText("审核中...");break;case1:project.setStatText("众筹中...");break;case2:project.setStatText("总筹成功...");break;case3:project.setStatText("已结束...");break;default:break;}catch(ParseExceptione){}returnProject;}4.2.5支持项目功能的实现用户在主界面,点击感兴趣的项目在项目详情页面中点击“立即支持”并选择相应的支持金额或直接在下方选择对应支持金额点击支持进行支付,在支付前需要填写个人信息、邮寄地址等回报信息;实现过程是:从session域中读取之前缓存的ProjectVO对象,判断ProjectVO是否为null即用户是否登录,然后将回报信息处理后存入该用户的数据库回报表中。实现用户支持项目功能的关键代码如下:@RequestMapping("save/order/remote")publicResultEntity<String>saveOrderRemote(@RequestBodyOrderVOorderVO){try{orderService.saveOrder(orderVO);returnResultEntity.successWithoutData();}catch(Exceptione){e.printStackTrace();returnResultEntity.failed(e.getMessage());}}@RequestMapping("save/address/remote")publicResultEntity<String>saveAddressRemote(@RequestBodyAddressVOaddressVO){try{orderService.saveAddress(addressVO);returnResultEntity.successWithoutData();}catch(Exceptione){e.printStackTrace();returnResultEntity.failed(e.getMessage());}}用户支持项目功能的实现流程,如图4-5所示。图45用户项目支持流程图4.3众筹平台后台功能实现本系统后台功能主要面向系统管理员,便于工作人员对平台数据进行修改和维护,后台功能模块主要实现了系统管理员登录、信息维护功能和管理员在平台主界面中对角色和菜单的维护功能以及权限控制功能。4.3.1管理员登录功能的实现管理员为内部工作人员,账号密码由内部相关人员分配给相应的人账号,进行登录进入管理员后台界面。登录界面实现了以下几个工能:(1)用户名和密码的输入和校验。(2)查询账号是否存在,不存在则进行错误提示并提醒用户注册。(3)用户名、密码与数据库信息的校验,不正确则进行错误提示,继续登录。(4)当用户名和密码都正确时,提示登录成功,进入管理界面。管理员登录界面的实现流程,如图4-6所示。图46管理员登录流程图4.3.2管理员信息维护功能的实现管理员登录成功之后,在菜单栏中点击“权限管理”,在权限管理中点击“用户维护”,右侧会出现管理员列表,在列表中选择相应要修改的人员信息点击数据栏后对应的修改图标跳转至信息修改界面,对管理员的登录账号、用户名称以及邮箱地址进行修改;实现过程是:由前端返回修改过后的管理员对象,然后利用MyBatis框架修改数据库中保存的数据。管理员信息维护功能的实现流程,如图4-7所示。图47管理员信息维护流程图实现管理员信息维护功能的关键代码如下:@Overridepublicvoidupdate(Adminadmin){try{adminMapper.updateByPrimaryKeySelective(admin);}catch(Exceptione){e.printStackTrace();("异常全类名="+e.getClass().getName());if(einstanceofDuplicateKeyException){thrownewLoginAcctAlreadyInUserException(CrowdConstant.MESSAGE_LOGIN_ACCT_ALREADY_IN_USE);}}}4.3.3角色维护功能的实现管理员登录成功后,在后台主界面菜单栏中点击“权限管理”,在权限管理中点击“角色维护”,右侧会出现角色列表,在列表中可进行角色的增删改查,选择相应要修改的角色点击角色对应的修改图标跳转至信息修改界面,对角色的权限进行修改;实现过程是:由前端发送Ajax请求,根据发送的数据进行保存为新的角色对象,然后利用MyBatis框架修改数据库中保存的数据。角色维护功能的实现流程,如图4-8所示。图48管理员角色维护流程图实现角色维护功能的关键代码如下:@RequestMapping("/role/update.json")publicResultEntity<String>updateRole(Rolerole){roleService.updateRole(role);returnResultEntity.successWithoutData();}@RequestMapping("/role/save.json")publicResultEntity<String>saveRole(Rolerole){roleService.saveRole(role);returnResultEntity.successWithoutData();}4.3.4菜单维护功能的实现管理员登录成功后,在后台主界面菜单栏中点击“权限管理”,在权限管理中点击“菜单维护”,右侧会出现权限菜单列表,在列表中可对相应菜单进行修改,选择相应要修改的菜单名称点击菜单后对应的修改图标跳转至信息修改界面,对菜单的信息进行修改;实现过程是:由前端发送Ajax请求,根据发送的数据进行保存为新的菜单对象,然后利用MyBatis框架修改数据库中保存的数据。菜单维护功能的实现流程,如图4-9所示。图49管理员菜单维护流程图实现菜单维护功能的关键代码如下:@RequestMapping("/menu/remove.json")publicResultEntity<String>removeMenu(@RequestParam("id")Integerid){menuService.removeMenu(id);returnResultEntity.successWithoutData();}@RequestMapping("/menu/update.json")publicResultEntity<String>updateMenu(Menumenu){menuService.updateMenu(menu);returnResultEntity.successWithoutData();}@RequestMapping("/menu/save.json")publicResultEntity<String>saveMenu(Menumenu)throwsInterruptedException{menuService.saveMenu(menu);returnResultEntity.successWithoutData();}4.3.5权限控制功能的实现在用户维护界面中,右侧为管理员列表,在操作栏中点击角色维护图标,进入角色维护界面,可根据界面中显示对管理员的角色进行调整,通过对管理员角色调整实现权限的控制;实现过程是:通过对管理员对象的查询在角色维护界面中显示已拥有角色和未拥有角色,通过前端的调整完成后点击“保存”,将已拥有栏中的角色保存到管理员对象中。权限控制功能的实现流程,如图4-10所示。图410管理员权限控制流程图实现权限控制功能的关键代码如下:@RequestMapping("/assign/do/role/assign.html")publicStringsaveAdminRoleRelationship(@RequestParam("adminId")IntegeradminId,@RequestParam("pageNum")IntegerpageNum,@RequestParam("keyword")Stringkeyword,//允许用户在页面上取消所有分配角色再提交表单,所以可以不提供roleIdList请求参数//设置required=false表示这个参数不是必须的@RequestParam(value="roleIdList",required=false)List<Integer>roleIdList){adminService.saveAdminRoleRelationship(adminId,roleIdList);return"redirect:/admin/get/page.html?pageNum="+pageNum+"&keyword="+keyword;}4.4章末小结根据系统的设计与分析,将系统分为前台功能模块和后台功能模块,本章首先简要介绍了系统的开发环境,其次详细介绍了前台和后台各个功能具体的实现流程,并展示了功能实现的关键代码。5众筹平台的运行测试5.1测试环境搭建测试环境硬件使用Windows系统,PC机内存8G及以上,硬盘内存50G及以上,软件环境使用开发工具IntelliJIDEA,MySQL5.6.24数据库,Navicat客户端JDK8开发工具包,Tomcat8服务器,Chrome浏览器。5.2众筹平台前台运行测试5.2.1用户注册运行测试表5-1用户注册功能测试用例测试用例编号用例描述操作过程预期结果Register-0正确注册输入正确格式且未注册的账号信息提示注册成功,跳转至登录界面Register-1字段格式错误分别输入错误格式的账号、密码、邮箱号和手机号点击注册分别提示账号、密码、邮箱和手机号格式错误Register-2字段信息为空将账号、密码、邮箱或手机号其中一项置为空,点击注册提示账号、密码、邮箱或手机号不能为空Register-3验证码错误输入错误的验证码提示验证输入错误系统前台用户注册功能的测试结果,如图5-1所示。图51用户注册5.2.2用户登录运行测试表5-2用户登录功能测试用例测试用例编号用例描述操作过程预期结果Login-1登录成功测试输入正确的账号和密码提示登录成功,跳转至用户主界面Login-2账号输入错误输入错误或未注册的账号提示账号未注册或账号输入错误,请重新登录Login-3密码输入错误输入错误或格式不正确的密码提示密码错误系统前台用户登录界面运行测试结果,如图5-2所示。图52用户登录界面5.2.3用户发布项目运行测试表5-3用户项目发布功能测试用例测试用例编号用例描述操作过程预期结果Publish-0正确发布输入正确格式的字段信息,图片成功上传提示发布成功,点击返回首页查看Publish-1字段格式错误输入错误的字段信息提示相应字段输入错误Publish-2字段信息为空将某一个或多个字段置为空或不填写提示相应字段不能为空Publish-3图片上传错误上传错误格式或数量的图片提示图片上传错误错误系统前台用户发布项目功能的运行测试结果,如图5-3所示。图53用户发布项目5.2.4用户查看项目运行测试系统前台用户查看项目功能的运行测试结果,如图5-4所示。图54系统用户查看项目5.2.5用户支持项目运行测试表5-4用户项目支持功能测试用例测试用例编号用例描述操作过程预期结果Publish-0正确项目支持输入设置范围内的回报数量直接跳转至支付界面Publish-1回报数量错误输入大于设置的回报数量提示回报数量大于商家设置回报数量系统前台用户支持项目功能的运行测试结果,如图5-5所示。图55系统用户支持项目5.3众筹平台后台运行测试5.3.1管理员登录运行测试表5-5管理员登录功能测试用例测试用例编号用例描
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论