摘 要
计算机技术、网络通信技术、多媒体技术及数据存储技术的飞速发展,对人类的生产和生活方式产生了很大影响。电脑类型推荐系统以其特有的快速、高效、便捷的方式被人们所接受。随着多媒体数据的存储、传播和应用技术的不断成熟,以及网络的不断发展,我们相信电脑交易商城一定会成为网络内容创新的重头戏和未来生活的新空间,逐渐成为网络发展的必然趋势之一。
本文主要通过对电脑类型推荐的前台系统和后台管理系统进行了功能性需求分析,对系统的安全性和可扩展性进行了非功能性需求分析。在详细的需求分析的基础上,根据系统的功能设计确定了数据库结构,实现完整的代码编写。电脑类型推荐使用技术主要是采用springboot技术、mysql数据库和HTML5前端技术来完成对系统的设计。完成了系统的主要模块的页面设计和功能实现。本文展示了首页页面的实现效果图,并通过代码和页面介绍了用户注册功能、首页、电脑信息、电脑资讯、个人中心、购物车、在线客服功能以及商品发货的实现过程。
关键词:电脑; HTML;MySQL数据库
HTML based computer type recommendation system
Abstract
The rapid development of computer technology, network communication technology, multimedia technology, and data storage technology has had a significant impact on human production and lifestyle. The computer type recommendation system is widely accepted by people for its unique fast, efficient, and convenient way. With the continuous maturity of multimedia data storage, dissemination, and application technology, as well as the continuous development of the internet, we believe that computer trading malls will become a key player in network content innovation and a new space for future life, gradually becoming one of the inevitable trends in network development.
This paper mainly analyzes the functional requirements of the foreground system and background management system recommended by the computer type, and analyzes the non-functional requirement of the security and scalability of the system. On the basis of detailed requirements analysis, the database structure was determined based on the functional design of the system, achieving complete code writing. The computer mall mainly uses spring boot technology, MySQL database, and HTML5 front-end technology to complete the system design. Completed the page design and functional implementation of the main modules of the system. This article shows the implementation effect of the homepage page, and introduces the user registration function, homepage, computer information, computer information, personal center, shopping cart, online customer service function, and the implementation process of product shipment through the code and page.
Key words:computer; HTML; MySQL database
目 录
致谢 40
在线购物可以被认为是电子商务的一部分。从广义上讲,电子商务是指一种依托现代信息技术和网络技术,集金融电子化,管理信息化,商贸信息网络化为一体,旨在实现物质流,资金流,与信息流和谐统一的新型贸易方式,是贸易过程的电子化,网络化。
在线购物也已经成为一种时尚,它为人们提供了真正足不出户就可以购买任何需要的东西的可能性,因此得到越来越多消费者的接纳和认同,尤其是成长在网络时代的年轻人。当然,成功的电子商务并不是简单的编写一套程序就能完成的,它不仅需要与金融系统紧密联系在一起,还要有完善的物流系统作为支撑。另外还要有良好的美誉度、强大的前期宣传,以及完善售后服务。国内就有很多成功的在线电脑购物网站,无论哪个方面,都是值得学习的榜样。
虽然我国的在线购物体系还不够成熟,还存在这样那样的问题,但它的发展符合经济学原理和人们的需要,只要对症下药,一定可以逐渐发展完善,在竞争激烈的现代商务竞争中占据稳固地位。
商品管理系统的开发,主要是用来帮助商家实现对商品的管理,同时满足消费者在最短的时间内通过商品参数的比较,找到自己需要的商品,并使用系统提供的在线购买功能,实现整个购物流程。
目前,商品管理系统已经越来越多的应用到了大型的电子商务解决方案之中,起到了良好的效果。在当当网(http://www.dangdang.com/)、淘宝网(http://www.taobao.com)等国内著名的商品信息网都提供了强大的商品管理功能。
-
- 开发现状
本系统主要实现传统在线购物和电脑信息管理的结合。一方面用户可以使用该系统对电脑电脑信息进行多重搜索,对搜索结果检阅,最后提交订单并完成整个在线购买流程,实现购物车的功能。管理员在后台设置电脑信息的品牌、型号、报价、图片、上市时间、处理器、核心架构、处理器等信息进行属性修改,提供功能完善的编辑器,方便地编辑丰富的商品信息。
不同类型的行业有自己的特点,对于销售行业而言,是一个成本敏感,同时具有大规模的分布性和灵活多变的特点。因此,如何处理好在一个高度分布的网络环境中,多种软硬件平台的管理、部署和升级,适应实际的需求变化,为用户提供一种可靠的低成本运作模式,成为商品解决方案成功的关键。
针对这一情况,希望研究出一套有效电脑类型推荐系统,用来对电脑销售情况,商品的基本配置信息情况等信息进行系统高效的管理。降低甚至消除不必要的成本和费用,给用户带来更大效益。
本系统的开发,将信息化的管理带入到电脑电脑销售业,在一定程度上,优化资源配置, 提高商品经济效益;降低市场交易风险, 提高商品市场流通效率;同时本系统的开发将解决传统人工进行商品管理的弊病,在一定程度上缩短用户在商品选择和购物的中间环节,简化购物流程,提高效率。为用户节省大量的时间。通过对新注册用户的审核,来建立一个安全可靠的购物环境,解决传统电子商务存在的诚信度问题。
根据市场调研得到的信息数据,结合国内外前沿研究,利用相关系统开发和设计方法,最终设计出电脑类型推荐系统。
本文共有七章,如下所示。
第一章概述了电脑类型推荐的研究目的和意义;精炼地总结了国内外在内的领域研究情况和未来的研究趋势,最后给出了论文的组成结构。
第二章简要概述了本文所用的开发技术和工具。
第三章简要对系统各业务流程进行需求分析、可行性分析。
第四章对电脑类型推荐进行设计。
第五章对电脑类型推荐进行实现,并贴出相关页面截图,语言描述出具体功能实现的操作方法。
第六章对电脑类型推荐采用测试用例的方式来对一些主要功能模块测试,最后得出测试结果。
第七章总结全文并对未来的研究做出展望。
SSM即SpringMVVM+Spring+MySQL,这三个框架有各自最独有的优势,那么将它们组合在一起能够碰撞出很强的火花。设计者在不需消耗大量功夫,能做出Web应用程序,而且这个程序还具有层次清晰、升级更新操作不影响正常使用的、允许多次使用的特点。这个复合框架形成一个有着结构完整、功能强大和结构良好的体系:SpringMVVM使各板块分离,Spring使开发更灵活方便,让开发者直接对对象进行操纵,各层次分工明细,并实现各个层次间的解耦,让代码更加的灵活精简。这个框架使程序员能够规避在开发时期避免个别错误导致整体被破坏,也能在后期应对客户对产品提出的新需求。
Java主要采用CORBA技术和安全模型,可以在互联网应用的数据保护。它还提供了对EJB(Enterprise JavaBeans)的全面支持,java servlet API,springboot(java server pages),和XML技术。Java是一种计算机编程语言,具有封装、继承和多态性三个主要特性,广泛应用于企业Web应用程序开发和移动应用程序开发。Java语言和一般编译器以及直译的区别在于,Java首先将源代码转换为字节码,然后将其转换为JVM的可执行文件,JVM可以在各种不同的JVM上运行。因此,实现了它的跨平台特性。虽然这使得Java在早期非常缓慢,但是随着Java的开发,它已经得到了改进。
(1)首先介绍一下web数据库搜索网络上的基本步骤:
第一步:检查消费者的数据,
第二步:你必须建立与数据库的连接;
第三步:搜索数据库;
第四步:数据的结构;
第五步:该商品的结果被示出。
(2)系统,直到我MYSQL5.0 PHP集成开发环境,如使用WAMP服务器处于开机状态,并且更容易访问数据库的报告开发环境:
一个连接到MySQL数据库服务器Mysql_connect-;
语法:资源的mysql_connect(主机,商品名,密码);
请选择数据库:mysql_select_db(数据库链接标识的名称);
关闭数据库:则mysql_close();
Mysql的语言是非结构化的,商品可以在数据上进行工作。因为Mysql的语言和结构比较简单,但是功能和存储信息量很强大,其速度、可靠性和适应性而备受关注并得到了普遍的应用。Mysql数据库在编程过程中的作用是很广泛的,为商品进行数据查询带来了方便。Mysql数据库的应用特点:灵活性强,功能强大,语言相对要简洁很多。
数据流程分析主要就是数据存储的储藏室,它是在计算机上进行的,而不是现实中的储藏室。数据库管理主要是数据存储、修改和增加以及数据表的建立。数据表的建立,可以对数据表中的数据进行调整,数据的重新组合及重新构造,保证数据的安全性。介于数据库的功能强大等特点,本系统的开发主要应用了Mysql进行对数据的管理。
HTML的全称为超文本标记语言,是一种标记语言。它包括一系列标签.通过这些标签可以将网络上的文档格式统一,使分散的Internet资源连接为一个逻辑整体。HTML文本是由HTML命令组成的描述性文本,HTML命令可以说明文字,图形、动画、声音、表格、链接等。
超文本是一种组织信息的方式,它通过超级链接方法将文本中的文字、图表与其他信息媒体相关联。这些相互关联的信息媒体可能在同一文本中,也可能是其他文件,或是地理位置相距遥远的某台计算机上的文件。这种组织信息方式将分布在不同位置的信息资源用随机方式进行连接,为人们查找,检索信息提供方便。
本系统将在经济、技术、操作这三个角度上进行可行性分析。
整个系统从设计到开发以及测试过程严谨步骤齐全,所有工作任务全部由本人完成,并未获取外部技术支持,节约了一切服务成本开销以及人工成本,在硬件方面,为节约成本使用一台电脑移动工作站作为项目部署服务器以及数据库服务器,成本在一万元一下,真个网络部署也是由本人独立完成不涉及到其他人工费用,整个开发过程本着低成本,低消耗的原则。
技术可行性分析的目的是确认该系统能否利用现有技术实现,并评估开发效率和完成情况。技术的可行性是指在当前的技术条件下,计算机软件和硬件的开发是否能够满足发展的要求。因为该系统的开发基于HTML技术,所以开发该系统所需的软件和硬件条件可以在普通计算机上满足。因为它占用的内存相对较少,所以用Mysql数据库开发和设计软件理论上没有问题,因为它占用的内存太少。上述技术可以有效地保证系统的成功和高效开发。
电脑类型推荐的使用界面简单易于操作,采用常见的界面窗口来登录界面,通过电脑进行访问操作,用户只要平时使用过电脑都能进行访问操作。此系统的开发采用Django框架开发,人性化和完善化是B/S结构开发比较显要的特点使得用户操作相比较其他更加简洁方便。易操作、易管理、交互性好在本系统操作上体现得淋漓尽致。
前台需求:
(1)个人中心:主要包括用户的注册和登陆、用户个人信息管理和用户订单查询等功能。
(2)电脑信息模块:主要包括电脑信息类型、信息展示、商品购买等功能。
(3)电脑资讯模块:用户可以了浏览电脑资讯信息。
(4)在线客服:用户可在线与客服进行交流。
(5)购买车模块:主要包括添加生成订单、查看订单详细信息和在线支付等功能。
后台需求:
- 用户管理:主要对普通用户管理的功能。
- 电脑信息管理:主要用于发布电脑信息,电脑类型、商品库存统计等管理。
- 促销活动管理:管理员开业发布促销活动,包括促销产品、类型、内容活动时间等内容进行管理。
- 在线客服管理:主要对用户的留言进行回复或删除等
- 系统管理:包括电脑资讯、轮播图、在线客服、电脑资讯、系统简介的管理
- 订单管理:主要查看订单状态,包括发货和配送管理、退货退款管理等功能。
系统用例图如下所示。
图3-1系统用例图
电脑信息添加用例描述如下表所示。
表3-1电脑信息用例描述
用例名称 | 添加新电脑信息 | |
参与者 | 管理员 | |
用例概述 | 本用例用于管理员进行添加新电脑信息操作 | |
前置条件 | 管理员添加新电脑信息前必须登录系统 | |
后置条件 | 系统中添加一个新电脑信息 | |
基本事件流 | 参与者动作 | 系统响应 |
4、管理员填写新电脑信息,点击“添加”按钮。 | 2、系统打开添加新电脑信息界面。 3、系统检查管理员输入的电脑信息是正确有效的。 5、系统将电脑信息添加到数据库中。 6、系统提示“操作成功”。 7、系统跳转到电脑信息管理界面。 | |
其他事件流 | 1、系统验证管理员输入的商品名为空,则提示“*请填写电脑信息名称!”。 2、系统验证管理员输入的价格不是货币格式,则提示“*价格必须是货币格式!” |
商品删除用例描述如下表所示。
表3-2电脑信息删除用例描述
用例名称 | 删除电脑信息 | |
参与者 | 管理员 | |
用例概述 | 本用例用于管理员进行删除电脑信息操作 | |
前置条件 | 管理员删电脑信息品前必须登录系统 | |
后置条件 | 系统中删除一个电脑信息 | |
基本事件流 | 参与者动作 | 系统响应 |
1、管理员在后台主界面选择“电脑信息”。 4、管理员选择一个电脑信息,点击“删除”按钮。 6、管理员点击“确定”按钮。 | 2、系统从数据库中获取电脑信息列表 3、系统打开电脑信息列表界面。 5、系统提示“你确定要删除吗?”。 7、系统将电脑信息从数据库中删除。 8、系统提示“删除成功”。 9、系统跳转到电脑信息管理界面。 | |
其他事件流 | 无 |
用户编辑用例描述如下表所示。
表3-3用户编辑用例描述
用例名称 | 修改用户 | |
参与者 | 管理员 | |
用例概述 | 本用例用于管理员进行修改用户信息操作 | |
前置条件 | 管理员已经登录系统 | |
后置条件 | 系统中更新一条用户记录 | |
基本事件流 | 参与者动作 | 系统响应 |
1、管理员在后台主界面选择“用户管理”。 4、管理员在用户列表中选择一个用户,点击“编辑”按钮。 6、管理员填写用户信息,点击“保存修改”按钮。 | 2、系统从数据库中获取用户信息。 3、系统打开用户列表界面。 5、系统打开修改用户信息界面。 7、系统将更改后的添加到数据库中。 8、系统提示“操作成功”。 9、系统跳转到用户管理界面。 | |
其他事件流 | 无 |
电脑购买用例描述如下表所示。
表3-5电脑购买用例描述
用例名称 | 电脑购买 | |
参与者 | 用户 | |
用例概述 | 本用例用于用户进行对电脑购买操作 | |
前置条件 | 用户已经登录系统 | |
后置条件 | 系统中增加一条用户购买记录 | |
基本事件流 | 参与者动作 | 系统响应 |
1、用户在前台首页选择任意一个电脑信息分类。 4、管理员在用户列表中选择一个电脑信息。 7、用户填写购买订单,点击“购买”按钮。 | 2、系统从数据库中获取电脑信息商品列表信息。 3、系统打开电脑信息列表界面。 5、系统从数据库中获取电脑信息。 6、系统打开电脑信息及购买界面。 8、系统检查用户输入的信息是正确有效的。 9、系统将购买记录添加到数据库中。 | |
其他事件流 | 1、系统验证用户输入的字段为空,则提示“*购买数量不能为空!”。 |
随着用户量的增加,系统可能会需要同时服务上千、上万个页面,服务器需要同时响应大量用户的操作,这就要求系统需要有良好的可扩展性,否则系统会出现延迟,卡顿甚至服务器崩溃的问题。高扩展性可以使软件保持旺盛的生命力,同时也能够使系统更好的适应用户增加、提高性能需求、增加应用功能等改变。
系统中保存了大量用户和管理员的个人信息,因此,保证系统服务器和数据安全是在开发过程中需要考虑的重要问题。安全性包括服务器安全、操作系统安全、数据库安全、程序代码安全以及用户个人信息和支付安全等,系统可以通过采用防火墙技术、加密技术、认证技术等来增强其安全性,只有一个健壮安全的系统才能具有长久的生命力。
电脑类型推荐的前台中,用户模块和电脑信息模块进行数据交互,实现购买的功能。前台的功能主要包括用户模块、商品模块、购买记录模块和订单模块。
电脑类型推荐的后台中,管理员对用户在前台提交申请产生的数据进行处理,以满足用户的需求。前台系统和后台系统有数据交互,整个系统各个部分相互独立又密不可分。后台的功能主要包括用户管理、商品管理、订单管理。
系统业务流程图如下所示。
图3-2系统业务流程图
通过软件的需求分析已经获得了系统的基本功能需求。根据各大功能模块的不同,将系统分为各种功能大块。系统功能结构如下图所示。
图4-2系统功能结构图
注册/登录
游客(未进行注册或登陆的用户)可以浏览、搜索商品,但不能进行收藏和购买。用户注册首先需要进行表单验证,来验证用户名和手机号码是否合法,然后验证用户名和手机号是否已经存在,验证通过即可注册。
注册成功后,用户可以通过输入用户名来登录系统,输入密码后进行验证。登录成功后,用户可以进行商品购买、查看我的订单、个人信息管理等功能。
个人信息管理
用户登录系统后,在账户设置中,可以修改昵称、头像、手机号、登陆密码、收货地址等个人基本信息。
电脑信息商品搜索
系统首页展示了商品搜索输入框,用户在输入框内输入与商品名称相关的关键字,系统通过模糊查询搜索到用户需要的商品并展示。
电脑信息商品展示
用户在浏览电脑信息商品时,点击某一个电脑信息,跳转到该电脑信息的信息展示页。在电脑信息信息页面展示了电脑信息的详情信息,比如电脑信息介绍,电脑信息详情等,用户通过浏览信息了解电脑信息的主要功能和评价,最终决定是否购买。
电脑购买
在电脑信息页面,用户可以通过点击“购买”进行购买电脑,点击后跳转到订单生成页面。订单生成页面会展示电脑信息,收货地址,优惠信息等,用户确认后信息无误点击“提交”生成订单,订单生成后跳转到支付页面,支付完成则购买成功。
电脑资讯
在资讯信息页面,用户可以通过点击“资讯浏览”,查看系统发布得电脑资讯信息。管理员对资讯数据进行维护管理。
生成订单
用户在购买电脑时,点击电脑信息页面的“立即购买”或购买记录页面的“去结算”,跳转到订单生成页面,在订单生成页面用户需要确认收货地址、收货人手机号、收货人姓名等信息,确认无误后点击“提交订单”,订单提交成功,生成一条订单信息。
查看订单详情
用户在查看我的订单列表时,可以点击某一个订单来查看该订单的详细信息,主要包括订单编号、订单状态、订单日期、订单中的商品、交易金额等。订单详情还可以查看商品物流信息,用户通过能够物流信息了解所购买商品的发货状态。
概念设计包括实体和联系两部分,如该系统中,用户是一个实体,其属性包括用户 ID 标识、用户名、密码、电话、地址等属性。联系是指实体之间有意义的关联,包括一对一、一对多、多对多三种类型。
系统E-R图如下所示。
图4-3系统E-R图
在图中,用户购买商品,关系为1:N,用户申请退货的关系为1:1,用户和订单的关系为1:N。
数据库表是设计和实现系统的一个重要基础。以下列出了该购物系统几个重要的数据库表。
功能:在线客服
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
userid | bigint | 用户id | |||
adminid | bigint | 管理员id | |||
ask | longtext | 4294967295 | 提问 | ||
reply | longtext | 4294967295 | 回复 | ||
isreply | int | 是否回复 |
表名:users
功能:用户表
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
username | varchar | 100 | 用户名 | ||
password | varchar | 100 | 密码 | ||
role | varchar | 100 | 角色 | 管理员 | |
addtime | timestamp | 新增时间 | CURRENT_TIMESTAMP |
表名:cart
功能:购物车表
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
tablename | varchar | 200 | 商品表名 | diannaoshangpin | |
userid | bigint | 用户id | |||
goodid | bigint | 商品id | |||
goodname | varchar | 200 | 商品名称 | ||
picture | longtext | 4294967295 | 图片 | ||
buynumber | int | 购买数量 | |||
price | float | 单价 | |||
discountprice | float | 会员价 |
表名:yonghu
功能:用户
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
zhanghao | varchar | 200 | 账号 | ||
mima | varchar | 200 | 密码 | ||
xingming | varchar | 200 | 姓名 | ||
xingbie | varchar | 200 | 性别 | ||
youxiang | varchar | 200 | 邮箱 | ||
shoujihaoma | varchar | 200 | 手机号码 | ||
touxiang | longtext | 4294967295 | 头像 | ||
money | float | 余额 | 0 |
表名:shangpinleixing
功能:商品类型
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
shangpinleixing | varchar | 200 | 商品类型 |
表名:orders
功能:订单
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
orderid | varchar | 200 | 订单编号 | ||
tablename | varchar | 200 | 商品表名 | diannaoshangpin | |
userid | bigint | 用户id | |||
goodid | bigint | 商品id | |||
goodname | varchar | 200 | 商品名称 | ||
picture | longtext | 4294967295 | 商品图片 | ||
buynumber | int | 购买数量 | |||
price | float | 价格 | 0 | ||
discountprice | float | 折扣价格 | 0 | ||
total | float | 总价格 | 0 | ||
discounttotal | float | 折扣总价格 | 0 | ||
type | int | 支付类型 | 1 | ||
status | varchar | 200 | 状态 | ||
address | varchar | 200 | 地址 | ||
tel | varchar | 200 | 电话 | ||
consignee | varchar | 200 | 收货人 | ||
remark | varchar | 200 | 备注 | ||
logistics | longtext | 4294967295 | 物流 |
表名:news
功能:电脑资讯
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
title | varchar | 200 | 标题 | ||
introduction | longtext | 4294967295 | 简介 | ||
picture | longtext | 4294967295 | 图片 | ||
content | longtext | 4294967295 | 内容 |
表名:diannaoshangpin
功能:电脑信息
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
shangpinmingcheng | varchar | 200 | 商品名称 | ||
shangpinleixing | varchar | 200 | 商品类型 | ||
shangpintupian | longtext | 4294967295 | 商品图片 | ||
shangpinguige | varchar | 200 | 商品规格 | ||
shangpinjianjie | longtext | 4294967295 | 商品简介 | ||
shangpinxiangqing | longtext | 4294967295 | 商品详情 | ||
pinpai | varchar | 200 | 品牌 | ||
shengchanshang | varchar | 200 | 生产商 | ||
yuancailiao | varchar | 200 | 原材料 | ||
shangjiariqi | date | 上架日期 | |||
onelimittimes | int | 单限 | |||
alllimittimes | int | 库存 | |||
clicktime | datetime | 最近点击时间 | |||
price | float | 价格 |
表名:config
功能:配置文件
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
name | varchar | 100 | 配置参数名称 | ||
value | varchar | 100 | 配置参数值 |
用户注册完成后,点击“登陆”进入到登陆页面,输入用户名和密码,点击“登陆”按钮,对用户名和密码进行验证,根据传入的用户名和密码在数据库中是否能查询到一条用户信息,若不能返回用户信息则登陆失败,页面提示用户名或密码错误。
登录流程图如下所示。
图5-1登录流程图
登录界面如下图所示。
图5-2登录界面
用户登录的逻辑代码如下所示。
/**
* 登录
* @param data
* @param httpServletRequest
* @return
*/
@PostMapping("login")
public Map<String, Object> login(@RequestBody Map<String, String> data, HttpServletRequest httpServletRequest) {
log.info("[执行登录接口]");
String username = data.get("username");
String email = data.get("email");
String phone = data.get("phone");
String password = data.get("password");
List resultList = null;
Map<String, String> map = new HashMap<>();
if(username != null && "".equals(username) == false){
map.put("username", username);
resultList = service.select(map, new HashMap<>()).getResultList();
}
else if(email != null && "".equals(email) == false){
map.put("email", email);
resultList = service.select(map, new HashMap<>()).getResultList();
}
else if(phone != null && "".equals(phone) == false){
map.put("phone", phone);
resultList = service.select(map, new HashMap<>()).getResultList();
}else{
return error(30000, "账号或密码不能为空");
}
if (resultList == null || password == null) {
return error(30000, "账号或密码不能为空");
}
//判断是否有这个用户
if (resultList.size()<=0){
return error(30000,"用户不存在");
}
User byUsername = (User) resultList.get(0);
Map<String, String> groupMap = new HashMap<>();
groupMap.put("name",byUsername.getUserGroup());
List groupList = userGroupService.select(groupMap, new HashMap<>()).getResultList();
if (groupList.size()<1){
return error(30000,"用户组不存在");
}
UserGroup userGroup = (UserGroup) groupList.get(0);
//查询用户审核状态
if (!StringUtils.isEmpty(userGroup.getSourceTable())){
String sql = "select examine_state from "+ userGroup.getSourceTable() +" WHERE user_id = " + byUsername.getUserId();
String res = String.valueOf(service.runCountSql(sql).getSingleResult());
if (res==null){
return error(30000,"用户不存在");
}
if (!res.equals("已通过")){
return error(30000,"该用户审核未通过");
}
}
//查询用户状态
if (byUsername.getState()!=1){
return error(30000,"用户非可用状态,不能登录");
}
String md5password = service.encryption(password);
if (byUsername.getPassword().equals(md5password)) {
// 存储Token到数据库
AccessToken accessToken = new AccessToken();
accessToken.setToken(UUID.randomUUID().toString().replaceAll("-", ""));
accessToken.setUser_id(byUsername.getUserId());
tokenService.save(accessToken);
// 返回用户信息
JSONObject user = JSONObject.parseObject(JSONObject.toJSONString(byUsername));
user.put("token", accessToken.getToken());
JSONObject ret = new JSONObject();
ret.put("obj",user);
return success(ret);
} else {
return error(30000, "账号或密码不正确");
}
}
用户界面要尽量简洁大方,使用户能够方便找到需要的功能入口,浏览、购买商品,且要易于修改和维护,同时还要保证用户合法和系统安全。
首页载入流程图如下所示。
图5-3首页载入流程
首页界面如下图所示。
图5-4首页界面
用户进入系统首页后,点击“注册”链接进入到注册页面,按照页面提示输入用户名、密码和手机号,页面进行表单验证,验证输入的用户名和手机号是否合法,表单验证通过后,点击“立即注册”按钮,利用 Ajax 技术,对用户名和手机号实现页面无刷新验证,检测数据库中是否已经存在该用户名或手机号,若数据库中不存在,则注册成功,注册成功后,自动跳转到登录页面。
用户注册流程图如下所示。
图5-5用户注册流程图
用户注册界面如下所示。
图5-6用户注册界面
用户注册逻辑代码如下:
/**
* 注册
* @param user
* @return
*/
@PostMapping("register")
public Map<String, Object> signUp(@RequestBody User user) {
// 查询用户
Map<String, String> query = new HashMap<>();
query.put("username",user.getUsername());
List list = service.select(query, new HashMap<>()).getResultList();
if (list.size()>0){
return error(30000, "用户已存在");
}
user.setUserId(null);
user.setPassword(service.encryption(user.getPassword()));
service.save(user);
return success(1);
}
/**
* 用户ID:[0,8388607]用户获取其他与用户相关的数据
*/
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "user_id")
private Integer userId;
/**
* 账户状态:[0,10](1可用|2异常|3已冻结|4已注销)
*/
@Basic
@Column(name = "state")
private Integer state;
/**
* 所在用户组:[0,32767]决定用户身份和权限
*/
@Basic
@Column(name = "user_group")
private String userGroup;
/**
* 上次登录时间:
*/
@Basic
@Column(name = "login_time")
private Timestamp loginTime;
/**
* 手机号码:[0,11]用户的手机号码,用于找回密码时或登录时
*/
@Basic
@Column(name = "phone")
private String phone;
/**
* 手机认证:[0,1](0未认证|1审核中|2已认证)
*/
@Basic
@Column(name = "phone_state")
private Integer phoneState;
/**
* 用户名:[0,16]用户登录时所用的账户名称
*/
@Basic
@Column(name = "username")
private String username;
/**
* 昵称:[0,16]
*/
@Basic
@Column(name = "nickname")
private String nickname;
/**
* 密码:[0,32]用户登录所需的密码,由6-16位数字或英文组成
*/
@Basic
@Column(name = "password")
private String password;
/**
* 邮箱:[0,64]用户的邮箱,用于找回密码时或登录时
*/
@Basic
@Column(name = "email")
private String email;
/**
* 邮箱认证:[0,1](0未认证|1审核中|2已认证)
*/
@Basic
@Column(name = "email_state")
private Integer emailState;
/**
* 头像地址:[0,255]
*/
@Basic
@Column(name = "avatar")
private String avatar;
/**
* 创建时间:
*/
@Basic
@Column(name = "create_time")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Timestamp createTime;
@Basic
@Transient
private String code;
}
电脑资讯展示页是展示系统最新资讯信息的页面,
电脑资讯展示页面,如下图所示。
图5-7电脑资讯展示页面
系统首页提供了搜索电脑信息产品的输入框,用户在输入框内输入想要查找电脑信息产品的关键字,点击搜索按钮,系统将用户输入的关键字传递到后台。首先创建一个实体类 PageBean,该实体类的属性包括页码 pageCode、每页记录数 pageSize、总记录数 totalRecord 和一个 List 集合 beanList,利用输入的关键字对数据库进行模糊查询,将得到的结果存入 PageBean 中,返回PageBean 跳转到 goodList.php 页面,在 goodList.php 页面,使用循环将搜索到的结果分页展示。
如下图所示为电脑信息产品搜索流程图。
图5-8电脑信息搜索流程图
电脑信息产品搜索界面如下图所示。
图5-9电脑信息产品搜索界面
用户在浏览电脑信息产品时,对于心仪的想要购买的电脑信息产品,可以将该电脑信息添加到购买记录中。点击“添加购买记录”按钮,页面将该电脑信息的数据传递到后台,首先查询数据库购买记录表中是否已经存在该电脑信息,若存在直接将商品产品数量加一,若不存在则创建一个新的购买记录对象,添加购买记录成功,数据库中的购买记录表添加一条信息。用户还可以点击“我的购买记录”查看添加到购买记录的商品产品,系统通过读取 session获取到用户 ID,将用户 ID 传递到后台,在购买记录表中查询该用户的所有购买记录信息,返回数据到我的购买记录页面。
如下图所示为电脑购买流程图。
图5-10电脑信息购买流程图
电脑购买界面如下图所示。
图5-11电脑购买界面
电脑购买的逻辑代码如下:
@PostMapping("/add")
@Transactional
public Map<String, Object> add(HttpServletRequest request) throws IOException {
service.insert(service.readBody(request.getReader()));
return success(1);
}
@Transactional
public Map<String, Object> addMap(Map<String,Object> map){
service.insert(map);
return success(1);
}
public Map<String,Object> readBody(BufferedReader reader){
BufferedReader br = null;
StringBuilder sb = new StringBuilder("");
try{
br = reader;
String str;
while ((str = br.readLine()) != null){
sb.append(str);
}
br.close();
String json = sb.toString();
return JSONObject.parseObject(json, Map.class);
}catch (IOException e){
e.printStackTrace();
}finally{
if (null != br){
try{
br.close();
}catch (IOException e){
e.printStackTrace();
}
}
}
return null;
}
public void insert(Map<String,Object> body){
StringBuffer sql = new StringBuffer("INSERT INTO ");
sql.append("`").append(table).append("`").append(" (");
for (Map.Entry<String,Object> entry:body.entrySet()){
sql.append("`"+humpToLine(entry.getKey())+"`").append(",");
}
sql.deleteCharAt(sql.length()-1);
sql.append(") VALUES (");
for (Map.Entry<String,Object> entry:body.entrySet()){
Object value = entry.getValue();
if (value instanceof String){
sql.append("'").append(entry.getValue()).append("'").append(",");
}else {
sql.append(entry.getValue()).append(",");
}
}
sql.deleteCharAt(sql.length() - 1);
sql.append(")");
log.info("[{}] - 插入操作:{}",table,sql);
Query query = runCountSql(sql.toString());
query.executeUpdate();
}
管理员对系统用户的管理,在yhzhgl.php实现管理员用户的管理,包括录入、删除、修改,修改密码通过SESSION获取用户名,然后输入新密码,提交到mod.php中,使用sql命令更新密码。
用户管理流程图如下所示。
图5-12用户管理流程图
用户管理界面如下图所示。
图5-13用户管理界面
管理员可以获取系统中所有电脑信息的列表并对其进行编辑。管理员在添加电脑信息时,需要输入电脑信息基本信息,如名称、价格、类型等,还需要输入电脑信息详情描述,包括对电脑信息功能的描述以及展示图片等。添加电脑信息完成,数据库电脑信息表添加一条信息。管理员可以搜索电脑信息,同时可以对已经添加的电脑信息进行编辑。
电脑信息管理流程图如下所示。
图5-14电脑信息管理流程图
电脑信息管理界面如下图所示。
图5-15电脑信息管理流程图
电脑信息管理的逻辑代码如下:
@RequestMapping("/get_list")
public Map<String, Object> getList(HttpServletRequest request) {
Map<String, Object> map = service.selectToPage(service.readQuery(request), service.readConfig(request));
return success(map);
}
管理员在后台管理界面点击到所有订单界面dingdan_list.php,向控制层dingdanAction发送请求,搜索当前所有订单信息,dingdanAction向订单数据访问层调用搜索全部订单的请求,向数据库的订单表搜索当前所有订单并将订单信息以对象的形式层层返回到dingdan_list.php界面,显示出当前所有订单信息。同时可以删除过期订单,确认已有订单,进行发货处理。
订单审核流程图如下所示。
图5-16订单审核流程图
订单管理界面如下图所示。
图5-17订单管理界面
订单管理的逻辑代码如下:
@RequestMapping("auth")
public class AuthController extends BaseController<Auth, AuthService> {
/**
* 服务对象
*/
@Autowired
public AuthController(AuthService service) {
setService(service);
}
以进入系统首页的访问速度为例展示系统的性能测试;系统的主要用户群体是购物理念较为先进的消费者,系统要在3秒钟内响应;需要完成页面的菜单栏、首页轮播图片、类目及电脑类型列表、电脑信息以及各功能模块入口等元素的显示。
功能性测试是指执行指定的工作流程,通过对一个系统的所有特性和功能都进行测试确保符合需求和规范。
系统功能性测试表如下表所示。
表6-1系统功能性测试表
编号 | 测试功能 | 测试内容 | 测试结果 |
1 | 用户登录 | 1.验证用户名与密码的正确性。 2.验证密码是否可见。 | 通过 |
2 | 首页展示 | 1.首页数据是否成功加载。 2.验证搜索功能的准确性。 3.验证是否可以异步加载。 4.验证导航栏按钮。 | 通过 |
3 | 个人信息修改 | 1.验证登录名是否可以正常更改。 2.验证联系方式是否可以更改。 3.验证收货地址可以正常修改。 4.验证密码是否可以修改。 | 通过 |
4 | 购买记录管理 | 1.购买记录清单是否可以生成。 2.验证消费信息是否准确。 | 通过 |
7 | 电脑类型管理 | 1.验证类目新增是否可以成功。 2.验证类目删除是否可以成功。 | 通过 |
8 | 电脑信息管理 | 1.电脑信息信息是否与上传一致。 2.是否能完成价格修改。 3.验证库存信息修改。 | 通过 |
9 | 订单处理 | 1.能否正常上传单号完成发货。 2.验证数据准确性。 | 通过 |
10 | 添加商品 | 1.上传商品是否添加验证。 2.图片是否成功上传。 3.验证表单是否提交成功。 | 通过 |
11 | 用户管理 | 1.验证用户录入功能。 2.验证用户违规清理功能。 | 通过 |
集成测试后,所有的模块已经全部连接完毕,形成了一个完整的系统。合格性测试是在集成测试完毕后,进一步对系统进行综合性的检测。经过合格性测试,可以检查出系统是否符合系统的设计,能够完成需求的所有功能。本系统经过最后的测试,所有模块功能都能按预定要求工作。
在实际测试中,经过一系列系统性的测试,使我们能够及时发现一些系统在设计中出现的疏忽和漏洞。经过严密的测试,不仅发现了模块内部的错误,也查找到模块连接后产生的错误。经过测试,对系统产生错误的地方进行优化、修改和完善,使得系统能够实现最初设计的基本功能。
本文针对电脑类型推荐的特点和用户需求,利用 HTML+MySQL技术,通过详细的需求分析、页面设计和功能设计,最终实现了一个电脑类型推荐。实现了包括用户模块、电脑信息模块、电脑资讯模块和订单模块的前台系统以及包括用户管理模块、电脑信息管理模块、订单管理模块的后台系统。另外,系统还进行了数据安全设计,并添加了用户的访问控制,建立了一个完整、健壮、安全稳定的电脑类型推荐。
该系统的特点有:
(1)简单大方,易于操作的 Web 页面;
(2)利用 Ajax 技术使页面进行无刷新更新;
(4)系统具有商品搜索功能,使用户能够简单方便的找到自己心仪的商品;
(5)评论功能可以帮助用户更全面的了解商品信息,用户可以发表自己对已购买商品的评价;
(6)有良好的安全性和可扩展性,增强了系统的可靠性,使系统保持持久的生命力。
由于时间限制和本人能力条件有限,该系统还存在一些不足,今后也会出现许多新的开发技术,未来还可以对系统做出如下改进:
(1)优化系统页面,使页面更加美观且方便操作;
(2)优化商品搜索功能,提供多条件选择查询搜索;
(4)优化在线支付功能,提供更多支付接口,使用户付款更加方便;
(5)进一步提高系统的安全性,使系统更加健壮;
(6)优化数据和代码,提升软件效率,方便系统维护和扩展。
参考文献
- 简工博. 电脑信息交易成“80后”“90后”时尚生活方式[N]. 解放日报,2022-01-31(004).
- 丁雨晴. 中国电脑市场正蓬勃发展[N]. 环球时报,2021-09-22(006).
[3]赵琳琳. 新政鼓励下 我国“互联网+电脑”模式迎来发展新契机[N]. 中国产经新闻,2021-07-14(002).
[4]杨文豪. 基于微服务的网上商城系统的设计与实现[D].北京邮电大学,2021.
[5]王娟.基于Android系统的手机网上商城设计与实现[J].电子技术与软件工程,2021(03):43-44.
[6]袁江琛.Ajax+jQuery在网上商城购物车模块中的设计与实现[J].电脑编程技巧与维护,2020(10):34-35+68.
[7]王柯梦,王瑞平.基于B2C网上商城前台系统数据库设计与实现[J].广西质量监督导报,2020(09):70-71.
[8]朱袁健. C2C电脑交易平台用户管理研究[D].天津大学,2020.
[9]张宇. 电脑信息线上交易信用管理研究[D].北京化工大学,2020.
[10]孙建英.分布式、集中式、区块链技术在网上商城中的应用[J].商场现代化,2020(01):13-15.
[11]徐连霞.基于SSM的校园电脑信息交易系统设计与实现[J].中外企业家,2019(36):69.
[12]宁克南. 基于lightGBM的电子商城电脑信息价格推荐分析[D].天津财经大学,2019.
[13]邵蓝洁,陈克远,吴文治.互联网上的消费新时尚[J].康颐,2018(07):42-45.
[14]白忠军. 基于云平台的校园电脑信息交易系统的设计与实现[D].贵州大学,2018.
[15]刘子才. 网络电脑市场“柠檬”问题研究[D].四川省社会科学院,2018.
[16]赵佳. 基于web的跳蚤市场网络交易平台的开发与设计[D].吉林大学,2018.
[17]张蕾.基于J2EE技术的网上电脑类型推荐的设计[J].软件导刊,2018,10(07):127-128.
[15]Ni Kadek Yuni Ristyawati , I Ketut Adi Purnawan , Gusti Made Arya Sasmita. The Implementation of Enterprise Resource Planning ERP on Sales Management Module using Odoo 11[J]. Journal of Trend in Scientific Research and Development,2020,4(4):
[18]Katarzyna Midor. New technologies and quality of customer service – case study[J]. Multidisciplinary Aspects of Production Engineering,2019,2(1):
[20]Yi Wang,Jian Ming Zhang,Jian Rong Hu. Application of Ontology Technology in Building Knowledge Base of E-Commerce System in Direct Selling Clothing Network[J]. Advanced Materials Research,2018,3245(952-952):
致谢
时光飞逝,转眼间我在学校的这些年生活即将结束,回顾这几年的学习生活,收获良多,既有幸福也有难过,学校生活的结束对于我来说也是一个新的开始。论文即将完成,在此,我心中有许多想要感谢的人。首先感谢我的导师,不仅在学习研究方面加以指导,也在生活和为人处世上给予帮助。还要感谢授课老师,你们严谨的学术精神和积极向上的工作态度都在激励我的成长和进步。感谢多年来一直生活在一起的室友,谢谢你们多年来的陪伴和照顾。最后,要感谢各位论文评审老师,感谢您们在百忙之中抽空评阅本论文并给出宝贵的意见和建议。
点赞+收藏+关注 →私信领取本源代码、数据库
关注博主下篇更精彩
一键三连!!!
一键三连!!!
一键三连!!!
感谢一键三连!!!