• ssm手机销售网站的设计与实现毕业设计-附源码


    摘 要

    近年来,随着移动互联网的快速发展,电子商务越来越受到网民们的欢迎,电子商务对国家经济的发展也起着越来越重要的作用。简单的流程、便捷可靠的支付方式、快捷畅通的物流快递、安全的信息保护都使得电子商务越来越赢得网民们的青睐。现今,大量的计算机技术应用于商业领域,包括软件技术、网络技术、硬件技术等。越来越多的企业使用计算机来开展业务、销售、购买和宣传各种商品。各种商业系统和软件已经解放了企业的双手,并使企业能够最大限度地获得利益。因此,计算机技术在商业领域占有非常重要的地位。

    本文主要通过对系统的前台系统和后台管理系统进行了功能性需求分析,对系统的安全性和可扩展性进行了非功能性需求分析。在详细的需求分析的基础上,根据系统的功能设计确定了数据库结构,实现完整的代码编写。手机销网站使用Eclipse、MyEclipse代码编辑器、Tomcat服务器等开发工具,完成了系统的主要模块的页面设计和功能实现。本文展示了首页页面的实现效果图,并通过代码和页面介绍了用户注册功能、手机搜索功能、加入购买订单和查看购买订单功能、意见反馈和查看我的订单功能、在线付款功能以及手机推荐功能的实现过程。

    关键词:手机销售;MyEclipse代码编辑器;

    Design and implementation of SSM mobile sales website

    Abstract

    In recent years, with the rapid development of mobile Internet, e-commerce is more and more welcomed by Internet users. E-commerce also plays a more and more important role in the development of national economy. Simple process, convenient and reliable payment method, fast and smooth logistics express and safe information protection all make e-commerce more and more popular with Internet users. Nowadays, a large number of computer technologies are used in commercial fields, including software technology, network technology, hardware technology and so on. More and more enterprises use computers to carry out business, sell, buy and publicize all kinds of mobile phones. Various business systems and software have liberated the hands of enterprises and enabled enterprises to maximize benefits. Therefore, computer technology plays a very important role in the commercial field.

    This paper mainly analyzes the functional requirements of the foreground system and background management system, and analyzes the non functional requirements of the security and scalability of the system. Based on the detailed requirement analysis, the database structure is determined according to the functional design of the system to realize the complete coding. The mobile sales website uses eclipse, MyEclipse code editor, Tomcat server and other development tools to complete the page design and function implementation of the main modules of the system. This paper shows the implementation effect diagram of the home page, and introduces the implementation process of user registration function, mobile phone search function, adding purchase order and viewing purchase order function, opinion feedback and viewing my order function, online payment function and mobile phone recommendation function through code and page.

    Key words: Mobile phone sales; MyEclipse code editor;

    目  录

    第1章 绪论

    1.1 研究背景与意义

    1.2 开发现状

    1.3 论文组成结构

    第2章 开发工具及相关技术介绍

    2.1开发技术

    2.2 MVVM模式 3

    2.3 Mysql数据库 3

    2.4 B/S结构 3

    2.5 SSM框架介绍 4

    第3章 系统分析 5

    3.1 可行性分析 5

    3.1.1 经济可行性 5

    3.1.2 技术可行性 5

    3.1.3 操作可行性 5

    3.2 功能性需求分析

    3.3 非功能性需求分析 9

    第4章 系统设计

    4.1 功能模块设计

    4.2 数据库设计

    4.2.1 概念模型设计

    4.2.2 数据库逻辑设计

    4.2.3 数据库表设计

    第5章 系统实现

    5.1 用户登录的实现

    5.2 系统前台主要功能实现

    5.2.1 首页的实现

    5.2.2 用户注册的实现

    5.2.3 手机展示的实现 21

    5.2.4 订单的实现 22

    5.3 系统后台主要功能实现

    5.3.1 用户管理的实现

    5.3.2 订单列表管理的实现

    5.3.3手机销量管理的实现

    5.3.4 订单销量管理的实现

    第6章 系统测试

    6.1 系统可靠性测试

    6.2 系统功能性测试

    6.3 系统合格性测试

    6.4 测试结果

    第7章 总结与展望 29

    参考文献

    致谢

    1. 绪论
      1. 研究背景与意义

    近年来,随着移动互联网的迅速发展,除了传统的网页浏览、资料搜索、发送电子邮件等基本应用外,国内大多数网民已经渐渐习惯了通过网络接受购物、通讯、旅游、娱乐等传统功能之外的新服务模式,其中利用网络购物也日益成为人们生活中一种重要的购物形式。互联网的快速发展为手机销售网站发展提供了强大保障和支撑,另外,在线网上购物的外部环境也逐渐得到了改善,移动互联网终端(手机、平板)使得网民结构变得越来越大众化,网上支付结算手段越来越便捷,快递物流越来越畅通,相应的法规政策也越来越完善。现如今,在线网上购物对人们的吸引力越来越大,人们对网上购物的看法也从一开始的不了解到了解,从怀疑到逐渐信任,从拒绝到慢慢接受并习惯。在线网上购物的观念已经越来越深入人心,促使人们在线网上购物的主要因素有:

    (1)方便快捷。网上购物可全天 24 小时营业,人们不需要奔赴到商店就可进行购物,购买的商品也可以直接送达到家。这样就使得消费者即使足不出户,也能买到来自世界各地得喜爱商品。

    (2)信息量大。相比于传统的购物的方式,电子商务所能容纳的信息量非常大,既包括现实产品也包括虚拟产品。另外,还可以提供一些比较特殊的产品,既能保护消费者的个人隐私,又能满足消费者不同的心理需求。

    (3)私密性强。消费者有时候在购买一些不愿意让别人知道的商品时,利用网上购物,卖家和快递物流都可以保护好用户的隐私,这样就可以避免一些不必要的麻烦。

      1. 开发现状

    由于近年来在线销售行业的兴起,也了解了一些相关信息。在中国,以前的销售只是传统销售,而在线销售似乎满足了市场需求。到目前为止,有一些家喻户晓的名字,如淘宝和天猫。然而,这种在线销售也有一些缺点:户不能在下订单并付款后立即提货,他们还应该考虑货物是否受损。该系统是根据手机网络上的销售情况开发的。

    经过几年的发展,许多被消费者认可的网上购物中心已经出现在国内外。这些网上购物中心的内容是多样化的,它们包含的功能相对完善,包括注册用户、搜索手机、管理订单、介绍手机细节以及在线留言。如今,互联网的广泛使用在一定程度上导致了国内外在线购物中心的发展,只要企业通过这个平台在线打字,就可以随时管理系统的内容。通过展示手机内容和发布公告,鼓励消费者购买和进行在线交易。

      1. 论文组成结构

    根据市场调研得到的信息数据,结合国内外前沿研究,利用相关系统开发和设计方法,最终设计出手机销售网站。

    本文共有七章,如下所示。

    第一章概述了手机销售网站的研究目的和意义;精炼地总结了国内外在内的领域研究情况和未来的研究趋势,最后给出了论文的组成结构。

    第二章简要概述了本文所用的开发技术和工具。

    第三章简要对系统各业务流程进行需求分析、可行性分析。

    第四章对手机销售网站进行设计。

    第五章对手机销售网站进行实现,并贴出相关页面截图,语言描述出具体功能实现的操作方法。

    第六章对手机销售网站采用测试用例的方式来对一些主要功能模块测试,最后得出测试结果。

    第七章总结全文并对未来的研究做出展望。

    1. 开发工具及相关技术介绍

    2.1开发技术

    本系统前端框架采用了比较流行的渐进式JavaScript框架Vue.js。使用Vue-Router和Vuex实现动态路由和全局状态管理,Ajax实现前后端通信,Element UI组件库使页面快速成型。后端部分:采用SSM作为开发框架,同时集成MyBatis、Redis等相关技术。

    2.2 MVVM模式

    MVVM是Model-View-ViewModel的简写。它本质上就是MVC 的改进版。MVVM 就是将其中的View 的状态和行为抽象化,让我们将视图 UI 和业务逻辑分开。当然这些事 ViewModel 已经帮我们做了,它可以取出 Model 的数据同时帮忙处理 View 中由于需要展示内容而涉及的业务逻辑。微软的WPF带来了新的技术体验,如Silverlight、音频视频3D动画……,这导致了软件UI层更加细节化、可定制化。同时,在技术层面,WPF也带来了 诸如Binding、Dependency Property、Routed Events、Command、DataTemplate、ControlTemplate等新特性。MVVM(Model-View-ViewModel)框架的由来便是MVP(Model-View-Presenter)模式与WPF结合的应用方式时发展演变过来的一种新型架构框架。它立足于原有MVP框架并且把WPF的新特性糅合进去,以应对客户日益复杂的需求变化。

      1.  Mysql数据库

    科技的进步,给日常带来许多便利:教室的投影器用到了虚拟成像技术,数码相机用到了光电检测技术,比如超市货物进出库的记录需要一个信息仓库。这个信息仓库就是数据库,而这次的产品裂变管理系统 也需要这项技术的支持。

    用MySQL这个软件,是因为它能接受多个使用者访问,而且里面存在Archive等。它会先把数据进行分类,然后分别保存在表里,这样的特别操作就会提高数据管理系统自身的速度,让数据库能被灵活运用。MySQL的代码是公开的,而且允许别人二次编译升级。这个特点能够降低使用者的成本,再搭配合适的软件后形成一个良好的网站系统。虽然它有缺点,但是综合各方面来说,它是使用者的主流运用的对象。

      1. B/S结构

    B/S(Browser/Server)比前身架构更为省事的架构。它借助Web server完成数据的传递交流。只需要下载浏览器作为客户端,那么工作就达到“瘦身”效果, 不需要考虑不停装软件的问题。

    2.5 SSM框架介绍

    1.Spring的优势:

    通过Spring的IOC特性,将对象之间的依赖关系交给了Spring控制,方便解耦,简化了开发

    2.Spring MVC的优势:

    SpringMVC是使用了MVC设计思想的轻量级web框架,对web层进行解耦,使我们开发更简洁

    3.Mybatis的优势:

    数据库的操作(sql)采用xml文件配置,解除了sql和代码的耦合提供映射标签,支持对象和和数据库orm字段关系的映射,支持对象关系映射标签,支持对象关系的组建提供了xml标签,支持动态的sql

    1. 系统分析
      1. 可行性分析

    本系统将在经济、技术、操作这三个角度上进行可行性分析。

        1. 经济可行性

    整个系统从设计到开发以及测试过程严谨步骤齐全,所有工作任务全部由本人完成,并未获取外部技术支持,节约了一切服务成本开销以及人工成本,在硬件方面,为节约成本使用一台二手移动工作站作为项目部署服务器以及数据库服务器,成本在一万元一下,真个网络部署也是由本人独立完成不涉及到其他人工费用,整个开发过程本着低成本,低消耗的原则。

        1. 技术可行性

    技术可行性分析的目的是确认该系统能否利用现有技术实现,并评估开发效率和完成情况。技术的可行性是指在当前的技术条件下,计算机软件和硬件的开发是否能够满足发展的要求。因为该系统的开发基于SSM语言,所以开发该系统所需的软件和硬件条件可以在普通计算机上满足。因为它占用的内存相对较少,所以用Mysql数据库开发和设计软件理论上没有问题,因为它占用的内存太少。上述技术可以有效地保证系统的成功和高效开发。

        1. 操作可行性

    手机销售网站的使用界面简单易于操作,采用常见的界面窗口来登录界面,通过电脑进行访问操作,用户只要平时使用过电脑都能进行访问操作。此系统的开发采用SSM技术开发,人性化和完善化是B/S结构开发比较显要的特点使得用户操作相比较其他更加简洁方便。易操作、易管理、交互性好在本系统操作上体现得淋漓尽致。

      1.        功能性需求分析

    前台需求:

    (1)用户模块:主要包括用户的注册和登陆、用户个人信息管理和用户帐单查询等功能。

    (2)手机资讯模块:主要包括手机商城、手机信息展示、手机搜索、手机购买等功能。

    (3)个人信息:主要包括个人信息修改、查看我的购买订单和删除购买订单等功能。

    (4)订单模块:主要包括生成订单、我的订单、查看订单详细信息、在线支付等功能。

    (5)公告栏模块:提供公告列表向商家公告信息。

    (3)购买订单模块:主要包括生成订单、我的订单、查看订单详细信息、在线支付、确认收货等功能。

    后台需求:

    后台需求:

    (1)用户管理:主要包括用户列表、用户等级管理等功能。

    (2)手机销量管理:主要包括手机名称、统计数额、统计日期等功能。

    (3)订单销量管理:主要包括统计名称、支付查看等功能。

    (4)订单管理:主要包括订单审核、订单确认、订单删除等功能。

    用户用例图如下所示。

     

    图1用户用例图

    管理员用例图如下所示。

     

              图2 管理员用例图

    手机添加用例描述如下表所示。

    表3-1手机添加用例描述

    用例名称

    添加新手机

    参与者

    管理员

    用例概述

    本用例用于管理员进行添加新手机操作

    前置条件

    管理员添加新手机前必须登录系统

    后置条件

    系统中添加一个新手机

    基本事件流

    参与者动作

    系统响应

    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、系统验证用户输入的字段为空,则提示“*购买数量不能为空!”。

      1.     非功能性需求分析 

    随着用户量的增加,系统可能会需要同时服务上千、上万个页面,服务器需要同时响应大量用户的操作,这就要求系统需要有良好的可扩展性,否则系统会出现延迟,卡顿甚至服务器崩溃的问题。高扩展性可以使软件保持旺盛的生命力,同时也能够使系统更好的适应用户增加、提高性能需求、增加应用功能等改变。

    系统中保存了大量用户和管理员的个人信息,因此,保证系统服务器和数据安全是在开发过程中需要考虑的重要问题。安全性包括服务器安全、操作系统安全、数据库安全、程序代码安全以及用户个人信息和支付安全等,系统可以通过采用防火墙技术、加密技术、认证技术等来增强其安全性,只有一个健壮安全的系统才能具有长久的生命力。

    1. 系统设计
      1. 功能模块设计

    通过软件的需求分析已经获得了系统的基本功能需求。根据各大功能模块的不同,将系统分为各种功能大块。系统功能结构如下图所示。

     

    图4-2系统功能结构图

    注册/登录

    游客(未进行注册或登陆的用户)可以浏览、搜索商品,但不能进行收藏和购买。用户注册首先需要进行表单验证,来验证用户名和手机号码是否合法,然后验证用户名和手机号是否已经存在,验证通过即可注册。

    注册成功后,用户可以通过输入用户名来登录系统,输入密码后进行验证。登录成功后,用户可以使用商品收藏、商品购买、查看我的订单、个人信息管理等功能。

    个人信息管理

    用户登录系统后,在账户设置中,可以修改昵称、头像、手机号、登陆密码、收货地址等个人基本信息。

    手机搜索

    系统首页展示了手机搜索输入框,用户在输入框内输入与手机名称相关的关键字,系统通过模糊查询搜索到用户需要的手机并展示。

    手机资讯信息展示

    用户在浏览手机时,点击某一个手机,跳转到该手机的信息展示页。在手机信息页面展示了手机的详情信息,比如手机名称、手机销量等,用户通过浏览信息了解手机的主要功能和用途,最终决定是否购买。

    手机购买

    在手机信息页面,用户可以通过点击“购买”进行购买手机,点击后跳转到订单生成页面。订单生成页面会展示手机信息,收货地址,优惠信息等,用户确认后信息无误点击“提交”生成订单,订单生成后跳转到支付页面,支付完成则购买成功。

    查看订单详情

    用户在查看我的订单列表时,可以点击某一个订单来查看该订单的详细信息,主要包括订单编号、订单状态、订单日期、订单中的手机、交易金额等。订单详情还可以查看手机物流信息,用户通过能够物流信息了解所购买手机的发货状态。

    手机列表

    管理员可以在“手机列表”中展示商城中需要销售的手机,包含手机名称,手机属性以及类目等手机信息。管理员可以对手机进行搜索,按分类查询手机。

    手机添加

    添加手机首先需要输入手机基本信息,如手机名称、手机数量、手机分类等;然后需要编辑手机信息详情,如手机规格,手机描述,手机图片等。管理员也可以删除已添加的手机。

    资讯管理

    系统首页可以放置资讯。管理员可以添加、修改资讯的信息,如资讯名称,资讯图片,资讯链接地址等信息。

      1. 数据库设计
        1. 概念模型设计

    概念设计包括实体和联系两部分,如该系统中,用户是一个实体,其属性包括用户 ID 标识、用户名、密码、电话、地址等属性。联系是指实体之间有意义的关联,包括一对一、一对多、多对多三种类型。

    系统E-R图如下所示。

     

    图4-3系统E-R图

    在图中,用户购买商品,关系为1:N,管理员管理商品的关系为1:N,用户和订单的关系为1:N。

        1. 数据库逻辑设计

    针对系统的实体和属性,结合数据设计思想,对系统的逻辑设计的内容进行如下描述。

    订单销量(统计名称、统计数额、统计日期、审核状态)。

    手机销量(手机名称、手机销量、审核状态)。

        1. 数据库表设计

    数据库表是设计和实现系统的一个重要基础。以下列出了该购物系统几个重要的数据库表。

    cart表:

    名称

    类型

    长度

    不是null

    主键

    注释

    cart_id

    int

    11

    购物车ID

    title

    varchar

    64

    标题

    img

    varchar

    255

    图片

    user_id

    int

    10

    用户ID

    create_time

    timestamp

    0

    创建时间

    update_time

    timestamp

    0

    更新时间

    state

    int

    1

    状态

    price

    double

    8

    单价

    price_ago

    double

    8

    原价

    price_count

    double

    10

    总价

    num

    int

    8

    数量

    goods_id

    mediumint

    8

    商品id

    type

    varchar

    64

    商品分类

    description

    varchar

    255

    描述

    notice表:

    名称

    类型

    长度

    不是null

    主键

    注释

    notice_id

    mediumint

    8

    公告id

    title

    varchar

    125

    标题

    content

    longtext

    0

    正文

    create_time

    timestamp

    0

    创建时间

    update_time

    timestamp

    0

    更新时间

    mobile_phone_sales表:

    名称

    类型

    长度

    不是null

    主键

    注释

    mobile_phone_sales_id

    int

    11

    手机销量ID

    phone_name

    varchar

    64

    手机名称

    mobile_phone_sales

    int

    11

    手机销量

    examine_state

    varchar

    16

    审核状态

    recommend

    int

    11

    智能推荐

    create_time

    datetime

    0

    创建时间

    update_time

    timestamp

    0

    更新时间

    order_sales表:

    名称

    类型

    长度

    不是null

    主键

    注释

    order_sales_id

    int

    11

    订单销量ID

    statistical_name

    varchar

    64

    统计名称

    statistical_amount

    int

    11

    统计数额

    statistical_date

    date

    0

    统计日期

    examine_state

    varchar

    16

    审核状态

    recommend

    int

    11

    智能推荐

    create_time

    datetime

    0

    创建时间

    update_time

    timestamp

    0

    更新时间

    ordinary_users表:

    名称

    类型

    长度

    不是null

    主键

    注释

    ordinary_users_id

    int

    11

    普通用户ID

    gender

    varchar

    64

    性别

    examine_state

    varchar

    16

    审核状态

    recommend

    int

    11

    智能推荐

    user_id

    int

    11

    用户ID

    create_time

    datetime

    0

    创建时间

    update_time

    timestamp

    0

    更新时间

    shopping_mall表:

    名称

    类型

    长度

    不是null

    主键

    注释

    shopping_mall_id

    int

    11

    商城ID

    remarks

    varchar

    64

    备注

    examine_state

    varchar

    16

    审核状态

    recommend

    int

    11

    智能推荐

    cart_title

    varchar

    125

    标题

    cart_img

    text

    0

    封面图

    cart_description

    varchar

    255

    描述

    cart_price_ago

    double

    8

    原价

    cart_price

    double

    8

    卖价

    cart_inventory

    int

    11

    商品库存

    cart_type

    varchar

    64

    商品分类

    cart_content

    longtext

    0

    正文

    cart_img_1

    text

    0

    主图1

    cart_img_2

    text

    0

    主图2

    cart_img_3

    text

    0

    主图3

    cart_img_4

    text

    0

    主图4

    cart_img_5

    text

    0

    主图5

    create_time

    datetime

    0

    创建时间

    update_time

    timestamp

    0

    更新时间

    1. 系统实现
      1. 用户登录的实现

    用户注册完成后,点击“登陆”进入到登陆页面,输入用户名和密码,点击“登陆”按钮,对用户名和密码进行验证,根据传入的用户名和密码在数据库中是否能查询到一条用户信息,若不能返回用户信息则登陆失败,页面提示用户名或密码错误。

    登录界面如下图所示。

     

    图5-1登录界面

    登录系统主要代码如下。

    /**

         * 登录

         * @param data

         * @param httpServletRequest

         * @return

         */

        @PostMapping("login")

        public Map login(@RequestBody Map 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;

            QueryWrapper wrapper = new QueryWrapper();

            Map map = new HashMap<>();

            if(username != null && "".equals(username) == false){

                map.put("username", username);

                resultList = service.selectBaseList(service.select(map, new HashMap<>()));

            }

            else if(email != null && "".equals(email) == false){

                map.put("email", email);

                resultList = service.selectBaseList(service.select(map, new HashMap<>()));

            }

            else if(phone != null && "".equals(phone) == false){

                map.put("phone", phone);

                resultList = service.selectBaseList(service.select(map, new HashMap<>()));

            }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 groupMap = new HashMap<>();

            groupMap.put("name",byUsername.getUserGroup());

            List groupList = userGroupService.selectBaseList(userGroupService.select(groupMap, new HashMap<>()));

            if (groupList.size()<1){

                return error(30000,"用户组不存在");

            }

            UserGroup userGroup = (UserGroup) groupList.get(0);

            //查询用户审核状态

            if (!StringUtils.isEmpty(userGroup.getSourceTable())){

                String res = service.selectExamineState(userGroup.getSourceTable(),byUsername.getUserId());

                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, "账号或密码不正确");

            }

    }

        public String select(Map query,Map config){

            StringBuffer sql = new StringBuffer("select ");

            sql.append(config.get(FindConfig.FIELD) == null || "".equals(config.get(FindConfig.FIELD)) ? "*" : config.get(FindConfig.FIELD)).append(" ");

            sql.append("from ").append("`").append(table).append("`").append(toWhereSql(query, "0".equals(config.get(FindConfig.LIKE))));

            if (config.get(FindConfig.GROUP_BY) != null && !"".equals(config.get(FindConfig.GROUP_BY))){

                sql.append("group by ").append(config.get(FindConfig.GROUP_BY)).append(" ");

            }

            if (config.get(FindConfig.ORDER_BY) != null && !"".equals(config.get(FindConfig.ORDER_BY))){

                sql.append("order by ").append(config.get(FindConfig.ORDER_BY)).append(" ");

            }

            if (config.get(FindConfig.PAGE) != null && !"".equals(config.get(FindConfig.PAGE))){

                int page = config.get(FindConfig.PAGE) != null && !"".equals(config.get(FindConfig.PAGE)) ? Integer.parseInt(config.get(FindConfig.PAGE)) : 1;

                int limit = config.get(FindConfig.SIZE) != null && !"".equals(config.get(FindConfig.SIZE)) ? Integer.parseInt(config.get(FindConfig.SIZE)) : 10;

                sql.append(" limit ").append( (page-1)*limit ).append(" , ").append(limit);

            }

            log.info("[{}] - 查询操作,sql: {}",table,sql);

            return sql.toString();

    }

        public List selectBaseList(String select) {

            List> mapList = baseMapper.selectBaseList(select);

            List list = new ArrayList<>();

            for (Map map:mapList) {

                list.add(JSON.parseObject(JSON.toJSONString(map),eClass));

            }

            return list;

    }

      1. 系统前台主要功能实现 
        1. 首页的实现

    用户界面要尽量简洁大方,使用户能够方便找到需要的功能入口,浏览、购买手机,且要易于修改和维护,同时还要保证用户合法和系统安全。

    首页界面如下图所示。

    图5-2首页界面

        1. 用户注册的实现

    用户进入系统首页后,点击“注册”链接进入到注册页面,按照页面提示输入用户名、密码和手机号,页面进行表单验证,验证输入的用户名和手机号是否合法,表单验证通过后,点击“立即注册”按钮,利用 Ajax 技术,对用户名和手机号实现页面无刷新验证,检测数据库中是否已经存在该用户名或手机号,若数据库中不存在,则注册成功,注册成功后,自动跳转到登录页面。

    用户注册界面如下所示。

     

     

    图5-3用户注册界面

    用户注册关键代码如下。

    /**

         * 注册

         * @return

         */

        @PostMapping("register")

        public Map signUp(HttpServletRequest request) throws IOException {

            // 查询用户

            Map query = new HashMap<>();

            Map map = service.readBody(request.getReader());

            query.put("username",String.valueOf(map.get("username")));

            List list = service.selectBaseList(service.select(query, new HashMap<>()));

            if (list.size()>0){

                return error(30000, "用户已存在");

            }

            map.put("password",service.encryption(String.valueOf(map.get("password"))));

            service.insert(map);

            return success(1);

    }

        public Map 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 body){

            E entity = JSON.parseObject(JSON.toJSONString(body),eClass);

            baseMapper.insert(entity);

            log.info("[{}] - 插入操作:{}",entity);

    }

        1. 手机展示的实现

    手机展示页是展示系统手机的页面,通过sql语句:"select shangpinxinximingcheng,id,tupian,jiage,addtime from shangpinxinxi order by addtime desc",将所有是商品按商品编号降序排列。

    手机展示页面,如下图所示。

     

    图5-4手机展示页面

    手机展示主要代码如下。

      @PostMapping("/add")

        @Transactional

        public Map add(HttpServletRequest request) throws IOException {

            Map paramMap = service.readBody(request.getReader());

            this.addMap(paramMap);

            return success(1);

    }

        @Transactional

        public Map addMap(Map map){

            service.insert(map);

            return success(1);

    }

        1. 订单的实现

    用户在浏览手机时,对于心仪的想要购买的手机,可以将该手机添加到购买订单中。点击“添加购买订单”按钮,页面将该手机的数据传递到后台,首先查询数据库购买订单表中是否已经存在该手机,若存在直接将手机数量加一,若不存在则创建一个新的购买订单对象,添加购买订单成功,数据库中的购买订单表添加一条信息。用户还可以点击“我的购买订单”查看添加到购买订单的手机,系统通过读取 session获取到用户 ID,将用户 ID 传递到后台,在购买订单表中查询该用户的所有购买订单信息,返回数据到我的购买订单页面。

    订单界面如下图所示。

     

    图5-5订单界面

      1. 系统后台主要功能实现 
        1. 用户管理的实现

    管理员对系统用户的管理,在yhzhgl. ssm实现管理员用户的管理,包括录入、删除、修改,修改密码通过SESSION获取用户名,然后输入新密码,提交到mod. ssm中,使用sql命令更新密码。

    用户管理界面如下图所示。

    图5-6用户管理界面

     

        1. 订单列表管理的实现

    管理员在后台管理界面点击到所有订单列表界面dingdan_list.jsp,向控制层dingdanAction发送请求,搜索当前所有订单信息,dingdanAction向dingdanDAOImp调用搜索全部订单的请求,向数据库的订单表搜索当前所有订单并将订单信息以对象的形式层层返回到dingdan_list.jsp界面,显示出当前所有订单信息。同时可以删除过期订单,确认已有订单,进行发货处理。

    订单管理界面如下图所示。

     

    图5-7订单列表管理界面

    订单列表管理主要代码如下。

    @RequestMapping("/get_list")

        public Map getList(HttpServletRequest request) {

            Map map = service.selectToPage(service.readQuery(request), service.readConfig(request));

            return success(map);

        }

        1. 手机销量管理的实现

    管理员可以获取系统中所有手机销量的列表并对其进行编辑。管理员在添加手机时,需要输入手机基本信息,如手机名称、手机销量等,还需要输入手机详情描述,包括对手机功能的描述以及展示图片等。添加手机完成,数据库手机销量表添加一条信息。管理员可以搜索手机销量,同时可以对已经添加的手机销量进行编辑。

    手机销量管理界面如下图所示。

     

    图5-8手机销量管理界面

    手机销量管理主要代码如下。

    $sql="select * from tesechanpin where 1=1";

    if ($["chanpindaima"]!=""){$nreqchanpindaima=$["chanpindaima"];$sql=$sql." and chanpindaima like '%$nreqchanpindaima%'";} if ($["mingcheng"]!=""){$nreqmingcheng=$["mingcheng"];$sql=$sql." and mingcheng like '%$nreqmingcheng%'";} if ($["leixing"]!=""){$nreqleixing=$["leixing"];$sql=$sql." and leixing like '%$nreqleixing%'";} if ($["shengchanriqi1"]!=""){$nreqshengchanriqi1=$["shengchanriqi1"];$sql=$sql." and shengchanriqi >= '$nreqshengchanriqi1'";} if ($["shengchanriqi2"]!=""){$nreqshengchanriqi2=$["shengchanriqi2"];$sql=$sql." and shengchanriqi <= '$nreqshengchanriqi2'";}

      $sql=$sql." order by id desc";

    $query=mysql_query($sql);

      $rowscount=mysql_num_rows($query);

        1. 订单销量管理的实现

    管理员在后台管理界面点击到所有订单销量界面dingdan_list.php,向控制层dingdanAction发送请求,搜索当前所有订单销量信息,dingdanAction向订单数据访问层调用搜索全部订单的请求,向数据库的订单销量表搜索当前所有订单并将订单销量信息以对象的形式层层返回到dingdan_list.php界面,显示出当前所有订单信息。同时可以删除过期订单,确认已有订单,进行发货处理。

    订单销量管理界面如下图所示。

     

    图5-9订单销量管理界面

    订单销量管理关键代码:

    @PostMapping("/add")

        @Transactional

        public Map add(HttpServletRequest request) throws IOException {

            service.insert(service.readBody(request.getReader()));

            return success(1);

        }

        @Transactional

        public Map addMap(Map map){

            service.insert(map);

            return success(1);

    }

    1. 系统测试
      1. 系统可靠性测试

    以进入系统首页的访问速度为例展示系统的性能测试;系统的主要用户群体是购物理念较为先进的消费者,系统要在3秒钟内响应;需要完成页面的菜单栏、首页轮播图片、类目及商品列表、商品评价以及各功能模块入口等元素的显示。

      1. 系统功能性测试

    功能性测试是指执行指定的工作流程,通过对一个系统的所有特性和功能都进行测试确保符合需求和规范。

    系统功能性测试表如下表所示。

    表6-1系统功能性测试表

    编号

    测试功能

    测试内容

    测试结果

    1

    用户登录

    1.验证用户名与密码的正确性。

    2.验证密码是否可见。

    通过

    2

    首页展示

    1.首页数据是否成功加载。

    2.验证搜索功能的准确性。

    3.验证是否可以异步加载。

    4.验证导航栏按钮。

    通过

    3

    个人信息修改

    1.验证登录名是否可以正常更改。

    2.验证联系方式是否可以更改。

    3.验证收货地址可以正常修改。

    4.验证密码是否可以修改。

    通过

    7

    手机类目管理

    1.验证类目新增是否可以成功。

    2.验证类目删除是否可以成功。

    通过

    8

    手机管理

    1.手机信息是否与上传一致。

    2.是否能完成价格修改。

    3.验证库存信息修改。

    通过

    9

    订单处理

    1.能否正常上传单号完成发货。

    2.验证数据准确性。

    通过

    10

    添加手机

    1.上传商品是否添加验证。

    2.图片是否成功上传。

    3.验证表单是否提交成功。

    通过

    11

    用户管理

    1.验证用户录入功能。

    2.验证用户违规清理功能。

    通过

      1. 系统合格性测试

    集成测试后,所有的模块已经全部连接完毕,形成了一个完整的系统。合格性测试是在集成测试完毕后,进一步对系统进行综合性的检测。经过合格性测试,可以检查出系统是否符合系统的设计,能够完成需求的所有功能。本系统经过最后的测试,所有模块功能都能按预定要求工作。

      1. 测试结果

    在实际测试中,经过一系列系统性的测试,使我们能够及时发现一些系统在设计中出现的疏忽和漏洞。经过严密的测试,不仅发现了模块内部的错误,也查找到模块连接后产生的错误。经过测试,对系统产生错误的地方进行优化、修改和完善,使得系统能够实现最初设计的基本功能。

    1. 总结与展望

    随着计算机互联网技术的迅猛发展,各行各业都已经实现采用计算机相关技术对日益放大的数据进行管理。该课题是手机销售网站管理系统为核心展开的,主要是为了实现手机销量信息化管理和用户在线预订手机的需求。

    手机销售网站管理系统的开发是以SSM框架作为基础,系统整体为B/S架构,数据库系统使用MySQL。文中详细分析了手机销售网站管理系统的研究背景、研究目的和意义、开发工具和相关技术以及系统需求、系统详细设计和系统测试等等一系列内容。系统实现了手机销售网站管理系统所需的一些基本功能,并通过测试对这些实现的功能进行了完善,进而提高了系统整体的实用性。系统投入运行时,各功能均运行正常。系统的每个界面的操作符合常规逻辑,对使用者来说操作简单,界面友好。整个系统的各个功能设计合理,体现了人性化。

    但是由于自己在系统开发过程中对一些用到的相关知识和技术掌握不够牢固,再加上自身开发经验欠缺,因此系统在有些方面的功能还不够完善,考虑的不够全面,因此整个系统还有待日后逐步完善。

    参考文献

    [1]曹裕,杨熙龙,吴堪.手机与电信服务捆绑销售供应链运营决策研究[J].系统工程理论与实践,2021,41(04):919-931.

    [2]常文丽.手机销售管理系统的分析与设计[J].无线互联科技,2021,18(05):45-46.

    [3]曹盼盼. 基于网络搜索指数的手机行业需求预测研究[D].北京化工大学,2020.

     [4]Zihan Wei, Lina Fang. Analysis of the Influence of Online Public Opinions on Consumers' Consumption Choices--Taking the Mobile Phone Sales Evaluation of Jingdong Mall as an Example[J]. International Journal of Science,2020,7(1):

    [5]萌萌 佟. Mathematical Model of Mobile Phone Sales Forecast[J]. Advances in Applied Mathematics,2020,09(07):

    [6]利用手机直播方式销售农产品、宣传家乡美食美景[J].农业工程技术,2019,39(30):58+65.

     [7]刘红霞,刘羊,陈炜伟,高敬.头条 1月全球手机销售华为坐稳冠军 前10名6个是中国品牌[J].中国外资,2019(20):32-33.

    [8]三星索尼瓜分智能手机图像传感器市场[J].传感器世界,2019,25(10):43.

    [9]野泽纪元. 销售促进系统[P]. 日本:CN108665338B,2019-10-11.

    [10]刘怡,耿纯,张宁川.电子商务下的销售新格局与增值税地区间分享[J].税务研究,2019(09):25-34.

    [11]张嘉琛. 手机翻新销售行为的法律定性[D].重庆大学,2019.

     [12]许秋伊. 基于在线手机销售数据的顾客满意度研究[D].吉林财经大学,2019.

     [13]杨俊升. 手机销售网站设计与实现[D].电子科技大学,2019.

    [14]何悦,李兆欣. 试论手机内嵌黄色网站链接之产品质量责任[C]//全国律协经济专业委员会2019论坛(成都)论文集.,2010:90-93.

    [15]胡诗云. 上海网上销售后浪推前浪[N]. 中国邮政报,201905-08(005).

    致谢

    时光飞逝,转眼间我在学校的这些年生活即将结束,回顾这几年的学习生活,收获良多,既有幸福也有难过,学校生活的结束对于我来说也是一个新的开始。论文即将完成,在此,我心中有许多想要感谢的人。首先感谢我的导师,不仅在学习研究方面加以指导,也在生活和为人处世上给予帮助。还要感谢授课老师,你们严谨的学术精神和积极向上的工作态度都在激励我的成长和进步。感谢多年来一直生活在一起的室友,谢谢你们多年来的陪伴和照顾。最后,要感谢各位论文评审老师,感谢您们在百忙之中抽空评阅本论文并给出宝贵的意见和建议。

                                                                    点赞+收藏+关注    私信领取本源代码、数据库 

  • 相关阅读:
    机器学习课程复习——隐马尔可夫
    前端React项目的Next.js项目通过CSS引入自定义字体文件
    [Python]Django 数据库数据的增删改查
    egg(二十):fs读取本地的txt文件
    DevOps jenkins实现持续集成、持续部署
    354. 俄罗斯套娃信封问题
    RNA核糖核酸修饰RNA-HiLyte FluorTM 405荧光染料|RNA-HiLyte FluorTM 405
    【Ne4j图数据库入门笔记1】图形数据建模初识
    Linux下分布式端口扫描工具DNmap下载安装及使用、流量抓取(更新ing)
    RabbitMQ-全面详解(学习总结---从入门到深化)
  • 原文地址:https://blog.csdn.net/DZBS2000/article/details/126544132