版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于SSM+Erupt框架的网上书店设计与实现摘 要进入二十一世纪以来,我国经济飞速发展的同时电子商务愈加在我们每个人的生活中扮演者更重要的角色。经过二十年来的发展,我国的网上购物环境已经发展的十分成熟,上到大型家用电器,下到零碎小物品甚至于蛋奶肉菜皆可在网上买到。尤其是在新冠疫情期间,更加促进了网上购物在中老年人群中的普及。网上书店是随着电子商务的发展必然出现的一个重要应用。书籍是人类进步的阶梯,网上书店有助于人们足不出户即可挑选适合自身兴趣或有助于自己发展的书籍。本次设计凡清书舍是基于Springboot技术构建一个网上书店,使得用户可以不用专程前往线下书店即可满足自身对书籍的需求。本文先从电商行业的相关发展开始介绍,并列举国内外相关网络书店的营销情况,再论述当今社会生活中建立适合全年龄段的网络书店的必要性与可行性。本文就凡清书舍的整个开发流程结合商品销售做了系统性的分析,针对一个网上书店应具备的功能进行以下分析与设计,包括了:需求分析、数据库设计、网站用户管理设计、管理员后台设计、用户页面设计、购物车系统设计等。并在各个功能模块的实现中展现了详细的设计与流程图。最后,作者分别对各个模块以及整体系统进行测试,用户界面简洁明了,买卖操作流畅,适用于各个年龄段的用户操作。在技术方面本系统以开源架构Springboot+MySQL为基础,MD5算法保障密码安全,Shiro进行权限控制,前端使用Bootstrap框架使得Web开发更加快捷且简洁灵活又不失美观。再加上使用了Springboot官方文档中推荐的Thymeleaf模板引擎。用Tomcat服务器实现服务端与客户端间的实时交互。关键词:网上书店,Springboot,MySQL,Thymeleaf目录第1章绪论 11.1项目开发背景与意义 11.1.1研究背景 11.1.2研究意义 21.2国内外网上书店发展研究比较 31.3研究内容及方法 5第2章可行性分析 82.1市场可行性 82.2经济可行性 82.3技术可行性 82.4社会可行性 9第3章需求分析 93.1系统总体需求结构 93.2系统各个功能模块的需求分析 10第4章总体设计 154.1开发所用技术简介 154.2系统架构图 154.2.1系统的逻辑架构 154.2.2系统的物理架构 164.3系统功能图 174.4系统流程图分析 184.5数据库设计 194.5.1数据库E-R图设计 204.5.2关系表设计 244.5.3数据分析 284.5.4系统安全体系设计 32第5章系统详细设计与实现 345.1注册登录模块的实现 345.1.1注册登录模块流程图 345.1.2工具类简介与代码实现 355.1.3界面展示 365.2书籍资料信息模块的实现 375.2.1图书详细信息管理流程图 375.2.2代码实现 385.2.3图书详情界面展示 395.3购物车模块的实现 395.3.1购物车模块流程图 395.3.2购物车实体类的设计 405.3.3购物车详情页面展示 415.4权限控制的代码实现 425.4.1核心的代码设计 425.4.2界面的展示及效果 435.5订单信息管理模块实现 445.5.1订单模块流程图 445.5.2核心代码示例 455.5.3效果展示 465.6系统管理模块实现 475.6.1核心代码示例 475.6.2管理员界面展示 47第6章凡清书舍网上书店系统测试 536.1系统测试 536.1.1测试环境简介 536.1.2硬件配置与人员表 536.1.3软件配置详情表 546.1.4测试用例 546.2接口测试 586.2.1接口测试工具简介 586.2.2接口测试结果分析 596.3单元测试 596.3.1单元测试工具介绍 596.3.2单元测试用例设计 606.4系统性能测试 616.4.1性能测试工具简介 616.4.2性能测试报告分析 626.5凡清书舍系统测试小结 63第7章全文总结与展望 647.1总结 647.2本次设计展望 64参考文献 67PAGEPAGE39第1章绪论1.1项目开发背景与意义因为疫情期间的冲击,本就蓬勃发展的电子商务变得更加普及。由于其能24小时运转并且有着较为低的成本且可跨越地域处理不同区域用户的需求,提供各种技术层面上的支持,以其更优质的服务使得电子商务以更加迅猛的姿态改变着传统商务活动的运作模式,有效地推动了疫情后期整个社会的经济复苏,使各个阶层以及年龄段的人们日常生活愈加与时俱进并极大地促进了消费再生产,且蒸蒸日上的网上购物环境也促进了人们消费的欲望。消费者又在因特网提供的一个舒适的消费环境里,可以在短时间内货比三家,自由选择最舒服的平台或者商品进行交易。尤其是针对于老年人或者残疾人群体来说,网上购物可以选择的送货上门服务是其选择网购的又一个巨大吸引力。1.1.1研究背景后疫情时代带来的网上经济发展红利孕育出更加丰富的网络产品以及更多的用户。由于我国几十年来的长足发展,我国网络覆盖全国绝大多数地区,使得信息量大且独具优势。对于网络书店系统,售卖图书商品的概念也十分简单,用户可以通过计算机或者任何可以联通网络的设备登陆网站便可寻找到自己所需要的书籍,不受时间地域以及封城的限制,想你所想,买你所需。随时随地联通网络即可实时购买自己所需要的货物,而且消费者在购买心仪的货物时也会更隐私。如国内的最大的当当网上书店对比传统的线下实体书店,后者在运营过程中根本无法做到同时向不同需求的用户同时销售上万种图书,但是前者就可轻易做到。对于平时工作繁重或者根本出不了家门的读者来说,网上书店的出现给他们带来了极大的便利。而对于线下书店的店主们来说,建立或者加入网络书店模式将大大减少其中间过程的支出。随着近些年来电子商务行业顺风顺水地发展,各个电商平台营业额也年年屡创新高,且国家也陆续出台了相应的电子商务领域的法律法规以保障消费者的权益,并对网络交易行为做了有效的规范及监管。在国内后疫情时代网络经济必将与传统模式携手向前共同发展,并将为祖国经济腾飞添砖加瓦。而网上书店作为电子商务领域中的一员也会得到进一步的发展与机遇。结合当今社会时代背景以及线下书店存在的诸多问题,本人从传统书店和网上书店两个角度,对两种书店模式经行了对比分析,二者对比图如图1.1所示。图1.1传统书店与网上书店对比图采用雷达图对比两种书店模式可以清晰地看出传统书店在当今时代的局限性。网上书店在隐私、互动、效率等方面都远胜于传统的线下书店。尤其是在出现疫情的情况下,线下书店作为公共场所更容易产生安全隐患。1.1.2研究意义近几十年来的信息革命为电子经济创造了良好的环境,各个模块利用Internet平台将物资、用户、商家、技术等整合在一起,使得这项新兴产业飞速增长。高效率以及低价格和更加隐私的优点使其获得了无数消费者以及商家的认可,同时成为了更多人的首选消费方式。传统商业被这新兴产业潜移默化的改变着。如今,根据中国互联网络信息中心(CNNIC)在2020年十二月发布的第47次《中国互连网络发展统计报告》显示,我国能够上网的民众(俗称网民)的规模已经达到了9.89亿,这个数字比2020年3月,仅仅从年初到年末就增长了8540万人,我国的互联网普及率更是达到了70.4%,甚至超过了欧洲总人口。互联网的普及与迅速发展使我们的传统买卖活动面临前所未有的机遇与挑战,网上购书便是其中之一。当今社会发展迅速,每个人的想要舒适的生活都需要求有更加高的知识水平,而书籍自古以来就是人们获取知识的重要途径。日益增加的人们对图书的需求使得这一领域在电子商务上也有极大的发展空间。如国外的亚马逊图书这种很早便抢占了大多资源的网络书店,其发展之迅猛让人瞠目。电子商务越来越流行是时代发展所必须的潮流。这会推动整个社会各个产业链的一齐向前发展。并且大大提高人们的生活水平。网上书店也会在此次潮流中有更好的发展。1.2国内外网上书店发展研究比较从20世纪90年代左右开始,欧美各国开始兴起电子商务,虽然还只是雏形,网上买卖图书便已普及开来。且各运营主体开始向境外展开推销并逐步发展到现今。随着其运营的慢慢成熟,逐渐演化为各种盈利组织和企业。在线书城的前台部分和其他的组成成分一齐作用,在互联网上完成了多项经营过程。比如:网上书店是基于网络服务的供应商提供支持,电子商务的种种服务基础都是基于线下可部署的服务脱胎而成。如今,随着互联网革命进一步发展,各种辅助系统一应俱全,才能够真正做到令人舒适的网上购物。从1995年7月成立的Amazon是目前欧美市场上最大的网上书店平台,同时也是最大的网上商务平台。其创始人贝佐斯也常年位居全球首富的位置。在二十一世纪二十年代,亚马逊网上书店是互联网上最大的网上书店网站。而我国的网上书店虽然几乎与美国同时起步,但无论在规模或数量上,国内外依然有很大的差距。近些年来,经过激烈的市场竞争后我国目前网上图书营销逐渐形成了如当当、天猫、京东等为主的形势。以最早成立的当当为例,其不仅是全球首屈一指的中文网上书店,还逐步渗透进了上游的出版社,线下也有自己的实体书店,形成了互联网+的营销模式。为我国广大的读者提供了实实在在的便利。目前国内网上书店发展虽然已有一定基础,但是还存在着诸多不足,与国外行业标杆的差距如图1.2。图1.2国内网上书店差距图(1)书店本身能提供的正版书籍品种少,体量小比诸国外经营许久的大型网站来说,我国一些网上书店虽然宣传有10万余种正版图书,但是实际上,正版授权等问题由于需要耗费巨量版权费,不少小书店都选择了发行国内小作坊生产的盗版图书,这导致了创作者与读者的权益都受到了不同程度的损失。(2)服务不完善相较于国外发达国家,我国第三产业起步较晚,尤其是在配套电子商务来说,国外有更完善的服务体系,再者,国内的受众量广而服务人员少,更容易降低消费者的满意度。结合我国目前的实际情况,若使我国的网络书店行业长久健康的发展,就必须:(1)宣传正版,加强人民反对盗版的意识提升人群素质才能使网上书城有健康的发展。从根源打击盗版书,抑制盗版书商。(2)增加书本的种类并拓宽信息体量书本虽然属于小商品,但是其种类繁多,用户需求基数大。在Amazon网站,图书书单已达到300多万种,反观即使是我国最大的网上书店当当网也只有不到百万种。达不到用户对大大小小类型的图书需求是我国网上书店业务面临的重要阻碍之一。(3)加强与出版方的合作意识,积极与多方合作线下实体书店、物流公司、出版社等都是与网上书店发展所必备的相关产业。协调好各方关系并且建立良好合作关系才能扩大网上书店的市场,使之长久健康发展。1.3研究内容及方法本系统以开源架构Springboot+MySQL为基础,实现用户初次注册、登陆、浏览、查询、购买书籍,购物车中进行增、删、改、查操作,用户订单生成等功能。系统的管理员拥有管理网站的所有用户、所有图书、全部订单以及设置初始首页的轮播展示图和每日推荐的购买尾货。本系统页面直观简洁又不失美观,适合全年龄段的用户使用。开发前端人们可以见到的页面时所用到的是Bootstrap框架。因为Bootstrap是基于Html、CSS及Js的,用此框架使得Web开发更加快捷且简洁灵活又不失美观。在加上使用了Springboot官方文档中推荐的Thymeleaf模板引擎,其可以支持多种格式的内容,且在动态渲染方面功能非常强大,而且天然与Html相融合,所以对于前端工程师来说其本质也是易于理解的。本文从绪论开始,首先分析了经历疫情后网上书店对比传统书店的优势,再结合全球网络环境探讨了国内网上书店目前的不足与缺陷以及解决办法。第二章结合市场情况、经济、完成项目所需技术及社会环境给出了凡清书舍网上书店系统的可行性分析。在第三章中,分别给出了系统总体需求分析和各个主要模块的需求分析。第四章是凡清书舍的中体设计,列举了主要使用到的技术以及数据库的设计与数据表。还列出了凡清书舍的逻辑架构和物理架构并作图。第五章是凡清书舍的具体实现,针对具体的功能模块给出了设计思路与实现代码以及相关界面的图片展示。第六章则是通过一系列测试分析出凡清书舍可以在正常情况下安全且稳定地运行。最后第七章对全篇经行总结并对开发过程中存在的不足之处以及未来网上书店的发展经行展望与探讨,具体研究路线如图1.3所示。图1.3研究路线图
第2章可行性分析2.1市场可行性网上的书店管理系统可以节省传统线下书店的店面投入,大大的减少了成本。在物流配送上,采用与第三方公司签订物流配送的合同,通过建立物流配送的体系,用以解决配送方案。在结算收益的这一领域模块,凡清书舍采取了货到付款或是线上就支付的办法,省去了专门的收银员等职位,又降低了人力和经营成本。2.2经济可行性经济可行性指的是本系统在投入使用后,盈利大于本身的开发成本。由于是在网络平台上经营,大大减少了店面成本、办公等费用。而本系统的成本和预期经济收益主要如下:(1)网站测试时不用被收取过多费用,因为是个人毕业设计开发。(2)收益含线上赚的钱以及线下盈利,取决于进货商与市场情况。2.3技术可行性Web技术在当今时代迅速发展不断地推动因特网上信息服务的进步,给人们带来更多的便利和高品质服务。从十年前寥寥几个框架字符干巴巴的网页和十分缓慢的加载速度,到现在五花八门的网页内容以及流畅的载入速度,制作网页的技术要求也水涨船高。凡清书舍网上书店系统在技术上的可行性方面主要如下:(1)Spring、MySQL技术在多年的使用中已相当成熟。(2)学校内开设了近年来新兴技术课程,并由经验丰富,教学水平极高的老师教导。因此受到了良好的相关专业课教育,有着坚实的技术基础。(3)在学校开设的软件测试课程中学到了相关测试方法。2.4社会可行性社会可行性是指本系统在开发时是否会产生侵权行为或承担责任。从凡清书舍的完善度出发来看,本次项目的社会可行性如下:(1)本系统无软件权归属的问题。(2)本系统不存在任何的与国家政策或法规相冲突之处。第3章需求分析3.1系统总体需求结构凡清书舍网上书店系统分为首页展示、图书具体信息、购物车、用户自我管理、管理员5个模块,图3.1为结构图。图3.1凡清书舍网上书店系统需求结构图如图所示,首页展示模块包含了用户一进入网站看见的网页界面;图书集体信息模块包含了管理员对图书的管理;购物车模块包括了管理员对订单的管理以及用户对订单的管理;用户自我管理模块包含了用户对自我账号的管理;管理员模块包含了管理员对各个模块的管理。3.2系统各个功能模块的需求分析(1)首页展示模块:首页展示模块是凡清书舍的核心模块之一,其主要功能是展示商城书籍以及轮播图和推荐书籍,管理员需要在后台设置推荐和轮播展示图并可以对此项配置从本地进行增添新的展示图片、删除已有的展示图或对其进行修改。对于用户,在其进入凡清书舍系统首页时虽然可以不经登录就可以拥有浏览首页的功能,但是在查看具体商品信息时就需要先登录或者注册自己的账号才能查看,具体用例图如图3.2。图3.2首页模块用例图(2)图书具体信息模块:此模块主要提供了用户可以在登录后具体查看想要点击查看的图书具体信息。管理员则须在后台将具体的书本信息录入,并可以在数据库中或管理员后台界面中对其进行修改或删除,具体用例图如图3.3所示。图3.3图书具体信息模块用例图(3)购物车模块:用户在精心挑选后可以将心仪的图书加入购物车,并在购物车界面中对其进行增添数目、删除所选书籍、修改数目和查询已在购物车中的书籍等操作,然后可以单击支付按钮进入订单界面。管理员在后台确认订单并选择发货以及终止交易或完成交易。购物车模块用例图如图3.4。图3.4购物车模块用例图(4)用户自我管理模块:在用户完成注册账号后,用户可以通过首页进入自我账号管理界面,进行修改自己的账户密码以及管理自己的收货地址等操作,这些数据在保存后会上传至数据库,并展现在管理员后台界面,具体用例图如图3.5所示。图3.5用户自我管理模块用例图示(5)管理员模块:管理员可以管理用户信息,包括设置其账号权限或是删除改账户,用户原有的账号被删除后需要重新注册才能正常使用。此外还要对书籍信息、首页轮播图、推荐书籍、订单处理等方面进行管理,其具体用例图如图3.6所示。图3.6管理员模块用例图
第4章总体设计4.1开发所用技术简介本系统设计时所用到的技术主要包括:(1)前端BootStrap框架;(2)后端Springboot;(3)Thymeleaf模板引擎;(4)MyBatis数据库操作;(5)Docker容器开发环境:Windows10、IntelliJIDEA、MySQL。4.2系统架构图4.2.1系统的逻辑架构凡清书舍网上书店系统的整体逻辑架构上分为Model层、Service层、Controller层、View层及Dao层共五层架构。其中View层主要是Web展现给用户看的网页界面,其代码主由Html、CSS、Js构成。Controller层是接口的编写代码,其数据是.json格式。业务逻辑层就是正常的网上售卖东西的网站应该包含的模块化的具体应用分类,比如首页、购物车、用户自我信息管理、管理员、图书具体信息模块。实体类的编写位于数据访问层。持久层里存放着SpringBoot内置的功能进行数据库操作。如图4.6所示。图4.6凡清书舍的逻辑架构4.2.2系统的物理架构凡清书舍网上书店系统的物理架构由管理端和用户端构成。管理端是基于Springboot,用户端则是基于BootStrap搭建而成的前端界面,用户可以在移动设备或是PC上自由登录浏览凡清书舍,整体系统的物理架构具体如图4.7所示。图4.7凡清书舍网上书店系统的物理架构图4.3系统功能图凡清书舍网上书店系统由Web用户端以及管理端,两者都是基于网页服务器ApacheTomcat和MySQL数据库的子系统所构成。二者间通过http协议的.request请求以及.request响应并且通过.json文件形式进行数据交互,共同完成了凡清书舍的构建。根据用户端和管理端共同具体实现的功能又可细分为五大功能模块:用户自我管理、首页展示、购物车、图书具体信息和管理员模块。其中管理员模块又分为管理员登录、管理用户账号、对订单的管理、轮播图展示的管理等细节功能。首页展示模块包含了轮播图、系统推荐以及图书分类等具体实现功能。购物车模块中需要实现支付以及用户在支付前对购物车中具体书籍数目的增删改等操作,还要能实时显示当前购物车内用户勾选书籍的总价格。用户注册或修改自己账号的功能以及反馈对凡清书舍的意见则对应自我管理模块。最后,书籍具体信息的展示,包括对一本书籍的名称定义、定价和简介在图书模块中实现。这些一个个细小模块从下而上逐步实现就形成了完整的凡清书舍系统功能,凡清书舍具体功能模块如图4.8所示。图4.8凡清书舍网上书店功能结构图4.4系统流程图分析图4.9凡清书舍用户操作流程图4.5数据库设计数据库方面的设计是凡清书舍开发过程中十分重要的环节。优秀的数据库设计可以使后续开发过程中发事倍功半。本次设计选用了MySQL进行数据库开发与设计,因为其与其他数据库比较有以下主要优点:MySQL是一个关系型DBMS,它将相互关联的信息数据储存与不同的表中,这些表格见可以参考彼此,可以实现完全网络化且跨平台地对数据进行维护和对网页中已经设置好的数据进行快速、准确地访问。MySQL作为一款开源的数据库系统,可以根据使用中的具体情况对其进行适当修改,这大大降低了开发和维护成本。MySQL被广泛使用多年,常见问题可快速在网络上找到解决方案,提升了开发效率。4.5.1数据库E-R图设计E-R图的相关设计是数据库设计中的一个具体且重要的组成部分。在凡清书舍系统中,根据需要实现的主题内容,包括书籍类型、书籍资料、订单、订单详情、用户以及管理员等。以下为各个实体E-R图的详细介绍与展示。书籍类型这里对每本书籍进行分类与描述,具体如图4.10所示。图4.10书籍类型E-R图书籍资料书籍资料包括了书籍上架日期、ID、图片URL、名称、原价、现价、作者、出版社等信息,具体E-R图如图4.11所示。图4.11书籍资料E-R图订单这里包括了订货人、订单ID、收货地址、价格、订单状态、订单时间、联系方式等信息数据,具体E-R图如图4.12.图4.12订单E-R图订单详情包括了订单ID、图书ID、数量等信息,具体如图4.13所示。图4.13订单详情E-R图用户包括用户的收货地址、个性签名、密码等,如图4.14所示。图4.14用户E-R图管理员包括ID、密码、权限等,具体如图4.15所示。图4.15管理员E-R图4.5.2关系表设计1.分类表基本信息:InnoDB,utf8_general_ci,具体如表4.1所示。表4.1书籍分类表序列列名类型可空默认值注释1idbigint(20)NOTNULL主键,分类ID2leveltinyint(4)NULL分类级别3Parent_idbigintNULL父分类4namevarchar(255)NULL分类名称5rankint(20)NULL排序值6deletedtinyint(4)NULL删除标识字段2.管理员表基本信息:InnoDB,utf8_general_ci,具体如表4.2所示。表4.2管理员表序列列名类型可空默认值注释1Admin_idint(20)NULL管理员id2NameVarchar(99)NULL管理员登陆名称3passwordVarchar(99)NULL登陆密码4Nick_nameVarchar(99)NULL昵称5lockedTinyint(4)NULL非0锁定,无法登陆3.轮播图活动表基本信息:InnoDB,utf8_general_ci,具体如表4.3所示。表4.3轮播图表序列列名类型可空默认值注释1Carousel_idint(20)NULL首页轮播图主键id2Carousel_urlVarchar(99)NULL轮播图3Redirect_urlVarchar(99)NULL点击后跳转地址4Carousel_rankInt(20)NULL排序值5Is_deletedInt(10)NULL非0删除4.书籍具体信息表基本信息:InnoDB,utf8_general_ci,具体如表4.4所示。表4.4书籍表序列列名类型可空默认值注释1idint(20)NOTNULL主键,ID2namevarchar(255)NOTNULL书名3Introvarchar(255)NULL书籍简介4Category_idbigint(255)NULL关联分类id5imgvarchar(255)NULL书封面6carouselvarchar(255)NULL轮播图7detailtextNULL详情8originalInt(20)NULL原价格9Selling_priceInt(20)NULL实际价格10Stock_numInt(20)NULL库存数量序列列名类型可空默认值注释11tagvarchar(255)NULL标签12Sell_statusTinyint(4)NULL为0则下架5.首页配置表基本信息:InnoDB,utf8_general_ci,具体如表4.5所示。表4.5首页配置表序列列名类型可空默认值注释1Config_idint(20)NULL首页配置主键id2namevarchar(255)NULL显示字符3typeTinyint(4)NULL1搜索热搜2热销商品34Goods_idInt(20)NULL书籍id5Redirect_urlvarchar(255)NULL点击后跳转地址6rankInt(20)NULL排序值7Is_deletedTinyint(4)NULL非0删除6.订单表基本信息:InnoDB,utf8_general_ci,具体如表4.6所示。表4.6订单表序列列名类型可空默认值注释1idint(20)NOT主键,订单ID2Order_novarchar(255)NULL订单号3User_idvarchar(255)NULL用户主键id4Total_priceint(255)NULL订单总价5statusint(20)NULL支付状态0未支付6typeTinyint(4)NULL支付方式序列列名类型可空默认值注释7timedatetimeNULL支付时间8Order_statusTinyint(4)NULL订单状态9infovarchar(255)NULL订单信息10namevarchar(255)NULL收货人姓名11Phonevarchar(255)NULL收货人手机号12addressvarchar(255)NULL收货地址13Is_deletedTinyint(4)NULL非0删除订单7.购物车表基本信息:InnoDB,utf8_general_ci,具体如表4.7所示。表4.7购物车表序列列名类型可空默认值注释1idint(20)NOTNULL主键,订单关联ID2Order_idint(20)NULL订单主键id3Goods_idint(20)NULL关联商品id4namevarchar(255)NULL下单时商品名5imgvarchar(255)NULL下单商品图片6priceint(20)NULL下单时商品价格7countint(20)NULL购买数量8timedatetimeNULL创建订单的时间8.单次订单表基本信息:InnoDB,utf8_general_ci,具体如表4.8所示。表4.8单次订单表序列列名类型可空默认值注释1idint(20)NOTNULL主键,购物项ID2User_idint(20)NULL用户id3Goods_idint(20)NULL关联商品id4countint(20)NULL数量5Is_deletedint(20)NULL非0删除6timedatetimeNULL创建时间9.用户表基本信息:InnoDB,utf8_general_ci,具体如表4.9所示。表4.9用户表序列列名类型可空默认值注释1idint(20)NOTNULL主键,用户ID2keywordsvarchar(255)NULL用户昵称3loginvarchar(255)NULL登录名称4passwordvarchar(255)NULL密码5signvarchar(255)NULL个性签名6addressvarchar(255)NULL收货地址7Is_deletedTinyint(4)NULL非0删除8flagTinyint(4)NULL非0锁定9timedatetimeNULL注册账户的时间4.5.3数据分析用户具体基本信息属性图包含用户ID、昵称、手机号码、收货地址、权限、在凡清书舍注册的时间以及备注等,以此构成了用户实体对象,其属性图如图4.16所示。图4.16用户属性图书籍类型的实体对象,其数据应包含大类编号、本身编号、类型名、是否被禁用、创建时间、备注等,具体基本类型属性图如图4.17所示。图4.17书籍类型属性图书籍具体信息中,应包含编号、作者、出版社、书名、简介、原价、现价、是否推荐、推荐的话图片上添加的标签、添加时间等等。由图表以及E-R图得出的实体属性图如图4.18所示。图4.18书籍信息属性图书籍订单基本信息中的数据项与书籍信息中的数据项间有一定的联系,这是整个系统中最主要的数据信息之一,其数据项包括了编号、订单时间、收货地址、联系电话、订单总价、收货人姓名等等,具体属性图如图4.19所示。图4.19订单信息属性图购物车实体对象的数据项包含了书籍类别编号、书籍单价、购买数量、所有物品的总金额等,具体属性图如图4.20所示。图4.20购物车属性图通过对凡清书舍全部数据项的分析,可以得出系统中不同实体之间的关系,进而有效地建立系统静态数据Model,各个独立实体之间的关系见图4.21所示。图4.21系统实体关系图4.5.4系统安全体系设计凡清书舍网上书店系统是一个基础为电子商务技术的网站,在设计过程中运用了基本的防火墙技术保障网页顺利运行以及数据库的安全。在此过程中,在系统自身、数据、网络、交易以及传送数据的安全性方面严格按照了现代大型电商网站的制定的安全需求以展开具体设计,尽可能的满足用户隐私方面的需求以及安全上的保障。本系统由防火墙在内的多级安全体系进行开发,具体安全体系架构图如图4.22所示。图4.22系统安全体系图
第5章系统详细设计与实现一个好的网站设计应该遵循用户对美的需求同时,又要兼顾不同人群对相关操作的需求,比如老年用户或残疾用户就会希望系统有着足够简洁的界面的同时有着容易上手的用户体验。凡清书舍就是这样一款兼顾不同人群需求的网上书店系统,从页面布局到色彩搭配,再到推荐书籍、购物车等模块都秉持简洁又不失美观的原则。本章就主要介绍了凡清书舍网上书店系统的设计与实现。通过相关模块的核心代码、系统运行流程图对凡清书舍网上书店系统的用户、购物车、书籍信息、订单、管理员五大模块进行展示。并且对Dao层数据的增添、修改、删除、查询的相关基本操作以购物车模块进行充分展示。5.1注册登录模块的实现用户注册过后可以正常使用登录模块,当用户输入不存在于数据库中的账号或密码时会报错,提示用户找回密码或是再次注册。验证码使用Springboot中的Kaptcha工具实现。同样的,管理员登录也需要输入验证码的操作。5.1.1注册登录模块流程图本系统登录模块流程为:当用户进入首页时,点击按钮或在未登录状态下浏览任何商品都会跳转到登录界面,若无账号则可进行注册。在注册界面输入合法的账号以及密码后,向后台传送数据,并提示用户注册成功,跳转至登录界面。输入已有的账号密码和验证码后,应角色信息数据存入Shiro框架下的Session30重新登录,该模块的流程图如下图5.2所示:图5.1注册登陆流程图5.1.2工具类简介与代码实现本系统在登陆模块以及注册模块中使用了Kaptcha工具中的Stringbuffer、Bufferedimage以及Graphics这三个工具类生成验证码,并将其存在.img图片中然后再发送回到页面中。再通过IP地址类Jsoup对第三方的网站IP地址解析并进行使用,用爬虫的办法来解析管理员的登录地点以及其运营商信息,这样又降低了开发的成本。实现关键代码如下:
graphic.setColor(Color.LIGHT_GRAY);
graphic.fillRect(0,
0,
WIDTH,
HEIGHT);
Random
ran
=
new
Random();
for
(int
i
=
0;
i
<
SIZE;
i++)
{
int
n
=
ran.nextInt(chars.length);
graphic.setColor(getRandomColor());
graphic.setFont(new
Font(
null,
Font.BOLD
+
Font.ITALIC,
FONT_SIZE));
graphic.drawString(
chars[n]
+
"",
i
*
WIDTH
/
SIZE,
HEIGHT
*
2
/
3);
ster.append(chars[n]);
}
for
(int
i
=
0;
i
<
LINES;
i++)
{
graphic.setColor(getRandomColor());
graphic.drawLine(ran.nextInt(WIDTH),
ran.nextInt(HEIGHT),
ran.nextInt(WIDTH),
ran.nextInt(HEIGHT));
}
return
new
Object[]{ster.toString(),
image};
}
public
static
Color
getRandomColor()
{
Random
ran
=
new
Random();
Color
color
=
new
Color(ran.nextInt(256),
ran.nextInt(256),
ran.nextInt(256));
return
color;
}
}
5.1.3界面展示本系统在登陆页使用了Bootstrap前端UI框架,以提供更美观简洁的操作界面。当用户输入不在存放系统数据的数据库中对应的自己注册时自己设定的对应的账户的密码时会出现页面报错,若是某个用户输入了不存在与存放数据的数据库中的用户名账号的时候亦会提示该用户不存在,输入验证码错误也会有相应的反馈,效果如图5.1所示。图5.2登陆页面展示5.2书籍资料信息模块的实现在用户浏览图书商品的过程中,看见心仪的书籍时,会进一步展示图书详情信息页面,在goodsdetail界面中存放通过数据库查询到的书籍信息。管理员可以进入管理图书界面操作管理全部图书信息。用户也可以根据所需直接搜索想要的书籍。实现此界面时,使用分页和复选控件以控制图书资料信息记录。5.2.1图书详细信息管理流程图用户点击首页的书本后跳转至此界面,或者通过搜索功能进入此界面。管理员需要在后台进行图书管理以及设置图书基本信息等操作。具体流程图如下图5.4图5.3图书信息管理流程图5.2.2代码实现本系统将书籍封装后再回调至前端界面显示书籍信息,保障了用户信息安全,也使用户查询或浏览时更方便操作。其核心代码如下:public
String
searchPage(@RequestParam
Map<String,
Object>
params,
HttpServletRequest
request)
{
if
(StringUtils.isEmpty(params.get("page")))
{
params.put("page",
1);
}
params.put("limit",
Constants.GOODS_SEARCH_PAGE_LIMIT);
//封装分类数据
if
(params.containsKey("goodsCategoryId")
&&
!StringUtils.isEmpty(params.get("goodsCategoryId")
+
""))
{
Long
categoryId
=
Long.valueOf(params.get("goodsCategoryId")
+
"");
SearchPageCategoryVO
searchPageCategoryVO
=
CategoryService.getCategoriesForSearch(categoryId);
if
(searchPageCategoryVO
!=
null)
{
request.setAttribute("goodsCategoryId",
categoryId);
request.setAttribute("searchPageCategoryVO",
searchPageCategoryVO);
}
}
5.2.3图书详情界面展示书籍详细信息中包含了图书的封面图片、书籍名称、原价、现价、简介等数据,点击立即选购按钮可以直接跳转到订单界面,对这单个商品进行支付购买。而点击加入购物车按钮则会向购物车中添加数据,用户确定后继续呆在该界面,具体展示如图5.3。图5.4图书详细界面展示图5.3购物车模块的实现在用户下定决心想要购买书籍时,可以进入书籍详情界面把目标书籍加入购物车一栏,并跳转至购物车界面结算。在界面上方点击购物车这个每个页面都有的按钮后即可跳转到可以显示点击了想要购买的书籍的想买多少本和总体的价格。为了更好的用户体验,还设计了能使用户可以在购物车界面再次进行进行增添自己想要买的东西的数量、删除手误或者不想要了的书籍、修改等操作功能。5.3.1购物车模块流程图用户首先经过主页筛选分类、查看价格或直接查询进入图书详情界面后,点击加入购物车按钮将心仪书籍添加进购物车后,可在该界面对已选中的书籍进行增加购书数目、删除已加入的书籍、改变数量等操作,也可以查询位某书本是否位于此购物车界面中,避免漏选、错选书籍。购物车界面会实时反馈总计价格情况,并支持用户预览书籍。当用户点击去结算后,可以跳转到订单界面,具体流程图如图5.6图5.5购物车模块流程图5.3.2购物车实体类的设计购物车中用户可随意增减想要购买书籍的数量。同时可以自由选择支付方式。当用户提交订单后,支付完成可以在用户中心看见订单详细信息。
public
Result
updateMallShoppingCartItem(@RequestBody
NewBeeMallShoppingCartItem
MallShoppingCartItem,HttpSession
httpSession)
{
MallUserVO
user
=
(MallUserVO)
httpSession.getAttribute(Constants.MALL_USER_SESSION_KEY);
MallShoppingCartItem.setUserId(user.getUserId());
//todo
判断数量
String
updateResult
=
MallShoppingCartService.updateMallCartItem(MallShoppingCartItem);
//修改成功
if
(ServiceResultEnum.SUCCESS.getResult().equals(updateResult))
{
return
ResultGenerator.genSuccessResult();
}
//修改失败
return
ResultGenerator.genFailResult(updateResult);
}
@DeleteMapping("/shop-cart/{MallShoppingCartItemId}")
@ResponseBody
public
Result
updateMallShoppingCartItem(@PathVariable("MallShoppingCartItemId")
Long
MallShoppingCartItemId,HttpSession
httpSession)
{
MallUserVO
user
=
(MallUserVO)
httpSession.getAttribute(Constants.MALL_USER_SESSION_KEY);
Boolean
deleteResult
=
MallShoppingCartService.deleteById(MallShoppingCartItemId);
//删除成功
if
(deleteResult)
{
return
ResultGenerator.genSuccessResult();
}
//删除失败
return
ResultGenerator.genFailResult(ServiceResultEnum.OPERATE_ERROR.getResult());
}
5.3.3购物车详情页面展示用户在这个简洁明了易操作的由表单组成的一个名叫购物车的界面可以查看自己选中的书籍价格方面的信息,在删除时会弹窗提醒用户确认,并可进行调整数量和删除所选以及提交订单去结算的功能,具体展示图5.5。图5.6购物车界面5.4权限控制的代码实现Apache的Shiro进入网页会有不同权限,如此便实现了菜单上的级别的权限控制。5.4.1核心的代码设计先须将菜单的URL添加至Shiro过滤器中,之后的每次登录时都会从后台数据库中智能判断该任务权限,管理员可以通过后台管理界面中的权限设置进而管理每个账号当前的状态以及权限。
@Bean(name
=
"securityManager")
public
DefaultWebSecurityManager
getDefaultWebSecurityManager(@Qualifier("adminRea
lm")
AdminRealm
adminRealm)
{
DefaultWebSecurityManager
securityManager
=
new
DefaultWebSecurityManager();
//关联
realm
securityManager.setRealm(adminRealm);
return
securityManager;
}
/**
*
Realm
*/
@Bean(name
=
"adminRealm")
public
AdminRealm
getRealm()
{
return
new
AdminRealm();
}
5.4.2界面的展示及效果凡清书舍的管理员选择角色管理,可以对系统中已有的账号进行角色解封或者封禁功能。点击确认后就完成对每个角色的权限管理。页面的展示如下图5.7所示。图5.7权限模块界面5.5订单信息管理模块实现当在购物车页面点完成操作后,用户可跳转到详细订单界面。订单界面通过表单实现,从而使得整个界面简洁不繁杂,利用Bootstrap的UI又确保了整个页面的美观。用户确认支付后将表单中的信息数据传至后台,整体页面布局与购物车界面相似。5.5.1订单模块流程图用户将购物车中的书籍确认无误后进入订单界面,可以再次修改订单信息,包括用户的收货地址、联系方式和订单中书籍数量等。一切完备后可以点击支付按钮进而跳转到支付界面。这一切都是设置在表单界面中进行,当用户确认支付完成后传值回后台,管理员可以核查或是删除该订单,确认无误后可以选择出货,用户也会收到反馈,该模块的详细流程图如图5.8所示。图5.8订单流程图5.5.2核心代码示例
params.put("limit",
Constants.ORDER_SEARCH_PAGE_LIMIT);
//封装订单数据
PageQueryUtil
pageUtil
=
new
PageQueryUtil(params);
request.setAttribute("orderPageResult",
MallOrderService.getMyOrders(pageUtil));
request.setAttribute("path",
"orders");
return
"mall/my-orders";
}
@GetMapping("/saveOrder")
public
String
saveOrder(HttpSession
httpSession)
{
MallUserVO
user
=
(NewBeeMallUserVO)
httpSession.getAttribute(Constants.MALL_USER_SESSION_KEY);
List<MallShoppingCartItemVO>
myShoppingCartItems
=
MallShoppingCartService.getMyShoppingCartItems(user.getUserId());
if
(StringUtils.isEmpty(user.getAddress().trim()))
{
//无收货地址
MallException.fail(ServiceResultEnum.NULL_ADDRESS_ERROR.getResult());
}
if
(CollectionUtils.isEmpty(myShoppingCartItems))
{
//购物车中无数据则跳转至错误页
MallException.fail(ServiceResultEnum.SHOPPING_ITEM_ERROR.getResult());
}
//保存订单并返回订单号
String
saveOrderResult
=
MallOrderService.saveOrder(user,
myShoppingCartItems);
//跳转到订单详情页
return
"redirect:/orders/"
+
saveOrderResult;}
public
String
payOrder(HttpServletRequest
request,
@RequestParam("orderNo")
String
orderNo,
HttpSession
httpSession,
@RequestParam("payType")
int
payType)
{
MallUserVO
user
=
(MallUserVO)
httpSession.getAttribute(Constants.MALL_USER_SESSION_KEY);
MallOrder
nMallOrder
=
MallOrderService.getMallOrderByOrderNo(orderNo);
//todo
判断订单userId
//todo
判断订单状态
request.setAttribute("orderNo",
orderNo);
request.setAttribute("totalPrice",
newBeeMallOrder.getTotalPrice());
if
(payType
==
1)
{
return
"mall/alipay";
}
else
{
return
"mall/wxpay";
5.5.3效果展示用户目前订单情况,用户可以点击修改,可以最后确认自己的信息,无误后点击提交可以进入支付界面,具体展示如图5.9所示。图5.9订单界面效果图5.6系统管理模块实现5.6.1核心代码示例public
String
passwordUpdate(HttpServletRequest
request,
@RequestParam("originalPassword")
String
originalPassword,
@RequestParam("newPassword")
String
newPassword)
{
if
(StringUtils.isEmpty(originalPassword)
||
StringUtils.isEmpty(newPassword))
{
return
"参数不能为空";
}
Integer
loginUserId
=
(int)
request.getSession().getAttribute("loginUserId");
if
(adminUserService.updatePassword(loginUserId,
originalPassword,
newPassword))
{
//修改成功后清空session中的数据,前端控制跳转至登录页
request.getSession().removeAttribute("loginUserId");
request.getSession().removeAttribute("loginUser");
request.getSession().removeAttribute("errorMsg");
return
ServiceResultEnum.SUCCESS.getResult();
}
else
{
return
"修改失败";
}
}
5.6.2管理员界面展示管理员界面包括了凡清书舍介绍、轮播图配置、热销商品推荐配置、新品配置、为你推荐配置以及对书籍的分类管理、用户权限管理、订单管理等操作,可以在此界面对凡清书舍整个系统全面设置。轮播图可以在首页往复展示,当用户点击图片后可以跳转到指定的界面,其配置界面如图5.10所示。图5.10轮播图配置图推荐书籍需要在相应界面由管理员进行设置,推荐书籍中的排序值决定了书籍在页面中的相对位置,对应的标签可以在数据库中配置,其展示界面如图5.11所示。图5.11推荐配置图管理员还须对书籍进行分类管理,根据排序值的不同在首页的相对位置也不同,通过AJAX实时与数据库中的信息数据交互,页面展示如图5.12。图5.12分类管理展示图采用主流网站使用的三级分类法,最下层的分类名不区别顺序,首页展示图及管理图如图5.13、5.14。图5.13首页分类图图5.14三级分类配置图订单管理是管理员最重要的功能之一,可在此界面查看用户的订单信息,以及对已完成支付的订单发货等操作,订单管理界面展示如图5.15。图5.15订单管理界面展示书籍管理中,管理员可以修改已有图书信息如:修改封面、数量、名称、上架状态等,也可以进行新增书籍或是删除操作,具体页面如图5.16所示。图5.16书籍信息管理界面增添书籍方面使用了富文本编辑器,以方便对书籍详情进行描述,具体如图5.17所示。图5.17增加图书界面
第6章凡清书舍网上书店系统测试6.1系统测试凡清书舍网上输电系统整体代码编写完成后,正式上线面向用户使用前还需要对整个系统进行完善的测试,才能保证在实际操作中正常完成应该达到的功能。本章内容就是确保凡清书舍网上书店系统能够正确有效的被用户使用。通过测试实现的过程完善了整个系统,修复了些许错误,为之后的发展打下基础。6.1.1测试环境简介凡清书舍网上书店系统的测试分为服务端和客户端测试。两者有着不同的环境配制。(1)服务器端的相应环境操作系统:凡清书舍运行环境部署在Windows10环境下数据库:采用了广为大众所使用的MySQL8.0版本支持软件:IntelliJIDEA(2)客户端的相应环境操作系统:常见操作系统即可浏览器:各种常见的浏览器,如Chrome、IE、火狐等6.1.2硬件配置与人员表本次测试的硬件基础以及人员配置如表6.1所示。表6.1测试硬件配置与参与人员关键项数量性能要求客户端PC 2 无特殊需求关键项数量性能要求Web服务器 1应用程序Server内存4G以上数据库服务器 1应用程序Server内存4G以上系统环境配置2 构建B/S架构环境硬件环境测试2 成立测试团队,分别进行测试6.1.3软件配置详情表本次测试软件配置需求如表6.2所示。资源名称/类型具体的配置前端软件(浏览器)Chrome、火狐等浏览器皆可负载性能测试的工具功能测试的工具Winrunner管理测试的工具RationalTestmanager软件测试小组软件测试小队表6.2测试软件配置6.1.4测试用例用例的设计系统是判断本次测试是否有效的重要依据,而采用什么方法进行测试更是关键中的关键。黑盒测试又被叫作功能测试或是数据驱动测试,这种测试方法是最广为人们使用的测试方法之一,而黑盒测试法中最常用的测试方法为等价类划分法。使用此种方法进行的测试能够使输入数据检测可能会出现的错误以便即时修复。凡清书舍的部分用例为:用户注册功能上的测试、登陆测试、显示书籍信息测试、购物车测试以及凡清书舍性能测试。注册功能采用了黑盒测试的方法进行检测,这属于基本事件的例子测试类型。注册时依据团队队员输入的测试数据对整个过程进行详细测试。判断结果是否与预期相符,注册功能测试如图6.1所示。图6.1注册功能测试输入正确格式的账号密码以及验证码后,测试结果如图6.2所示。图6.2注册测试结果后台管理员界面用户管理模块中出现了刚刚测试的账号,具体如图6.3所示。图6.3用户管理界面测试时注册成功的账号直接显示进了管理员界面中,并且测试账号可以正常登录进凡清书舍系统,证明本系统注册、登录功能能够正常使用。购物车与订单模块的测试需要在正常登录后,选购书籍并支付,一切顺利则会在管理员界面中生成最新订单信息,购物车功能具体测试情况如图6.4所示。图6.4购物车测试点击结算后,跳转到订单详情,在这个界面用户应可以修改个人信息中的收货地址,即使离开此页面也可通过我的订单界面重新支付订单,并且进度条能正常显示用户此时进程,订单详情界面测试如图6.5所示。图6.5订单详情界面在此界面用户有30分钟决定时间,并可查看历史订单,本次测试离开此页面后从我的订单界面重新支付如图6.6所示。图6.6我的订单测试测试时完成支付后,管理员订单管理界面如图6.7所示。图6.7订单测试结果经过测试,用户在正常环境下,挑选书籍加入购物车并提交订单后能够正常在管理员界面中显示与交互。6.2接口测试6.2.1接口测试工具简介凡清书舍系统与客户端的数据访问都是通过API接口进行,因此接口测试为整个测试流程中最重要的部分。此系统使用了Swagger服务框架实现接口测试。Swagger是一个专门为API文档及测试的框架文件。在如今主流互联网公司逐步演变为前后端分离的技术栈的情况下。网页前端更专注于页面的渲染实现和美化并简化开发,后端就专攻服务器及接口的开发,二者间是通过API进行数据交接的接口。因而API接口测试变得十分重要甚至必不可少。6.2.2接口测试结果分析由Swagger的可视化测试界面,选择相应测试的接口,加入对应参数,就可获得返回数据,,体测试结果如图6.8所示。图6.8响应结果根据结果可得出凡清书舍系统接口处理无误。6.3单元测试6.3.1单元测试工具介绍本次测试在单元测试中,使用了IDEA自带的代码覆盖率工具,对每个细小功能模块都设计了测试用例,对测试类右键选择Run—>’MyClassTestwithCoverage’以进一步搜集测试所用例子的覆盖信息。如图6.9所示,点击RunTest后可以在傍边的框中查看到Coverage的结果。图6.9单元测试IDEA有完善的测试内容,图中绿色部分为已覆盖的代码块,红色部分则表示单元测
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 护理教育中的学生支持服务
- 医院感染预防的绩效评估
- 护理礼仪与特殊患者护理
- 护理课件制作工具使用指南
- 护理风险:持续质量改进动力
- 护理带教中的沟通艺术
- 呼吸衰竭的护理科研思路
- 零售业商品管理经理面试要点
- 旅游景点规划与开发实务
- 零售业实体店长应掌握的店铺管理技能及培训要点
- 2024年芜湖职业技术学院单招职业适应性测试试题库 附答案(精练)
- 2024届高考英语一轮复习2023全国乙卷词汇短语积累 长难句分析 课件
- 手术室利用PDCA循环降低手术室病理标本管理缺陷发生率品管圈QCC成果汇报
- 健康体检主检报告的内涵
- 第四章-古印度与古代美洲的城市教材课件
- 新生儿锁骨骨折的原因分析及对策
- 脉冲整流器主电路及其控制(由于公式编辑器版本问题不能保存为PPT格式)课件
- GB/T 13462-2008电力变压器经济运行
- GB 7912-2010食品安全国家标准食品添加剂栀子黄
- 品质工程监理实施方案
- 2023年汉字听写大赛题库全部词语拼音解释
评论
0/150
提交评论