🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。
- 代码可以私聊博主获取。🌹
- 赠送计算机毕业设计600个选题excel文件,帮助大学选题。
- 赠送开题报告模板,帮助书写开题报告。
作者完整代码目录供你选择:
- 《Springboot网站项目》400套
- 《ssm网站项目》800套
- 《小程序项目》300套
- 《App项目》500套
- 《python网站项目》600套
⚡感兴趣大家可以点点关注收藏,后续更新更多项目资料。⚡
项目演示
摘 要
本论文主要是针对品牌银饰售卖而开发进行概述,主要包括对研究的背景和研究现状,以及研究目的等的阐述,也对该系统的各种功能要求,对系统结构,数据库的设计等进行讨论。随着科技与技术的发展,利用计算机以及网络来提高工作效率已是大势所趋,希望该系统能有所帮助。本论文讨论的是品牌银饰售卖平台,此系统运用了B/S结构(浏览器/服务器),同时加上动态网页开发技术Java语言以及mysql数据库一起开发完成的。该系统能完成的主要功能分为管理员和用户两个用户角色。主要功能包括首页、个人中心、用户管理、促销活动管理、饰品管理、我的收藏管理、系统管理、订单管理等。而用户登入系统也可以对自己的信息以及修改个人资料进行查看等功能。该系统在完成设计以及测试之后,运行稳定且操作方便快捷,能满足设计开发之初的要求。
关键词:品牌银饰售卖;java;mysql数据库
1 引言
1.1 课题的任务与目的
网上品牌银饰售卖平台应当怎样建设、管理,是很多希望从事和已经开始从事品牌银饰售卖需要了解和对待的问题。本论文所介绍的品牌银饰售卖平台旨在改善品牌银饰售卖信息的管理,现在很多品牌银饰售卖的信息处理基本还停留在手工方式的状况,开发本系统是为了降低使用者劳动强度,提高工作效率。适用于品牌银饰售卖的管理业务,也适用于具体的品牌银饰售卖业务。同时保证品牌银饰售卖的经济利益,从而使品牌银饰售卖能够以少的投入获得更好的经济效益。
1.2 系统研究现状
在国外很多发达国家,软件产业早已得到全面普及,但我国经济已不断发展,不断引进国外信息化建设,使国内软件行业得以不断发展,在摸索中进步,最终也得到一些成果,我国的管理系统迎来了高速的发展,使更多的管理系统得以开发出来,从此逐渐地改变人们的生活工作方式。但是,对于信息化的建设,与很多发达国家相比,由于信息化程度的落后以及经费的不足,我国的线上管理开发方面还是相对落后的,因此,要不断的努力探索,争取开发出一个实用的信息化的品牌银饰售卖平台,来实现品牌银饰售卖管理的信息化。因此本课题以品牌银饰售卖为例,目的是开发一个实用的品牌银饰售卖平台。
品牌银饰售卖平台的开发运用java技术,MIS的总体思想,以及MYSQL等技术的支持下共同完成了该系统的开发,实现了品牌银饰售卖管理的信息化,使用户体验到更优秀的品牌银饰售卖平台,管理员管理操作将更加方便,实现目标。
1.3 论文各章简介
第1章引言部分,引言主要叙述课题的任务与目的,对系统研究现状进行分析。
第2章主要内容是:开发技术。系统主要使用了java开发语言,java技术、ssm框架、b/s模式和myspl数据库,并对此做了介绍。
第3章主要内容是:系统需求分析,主要包括可行性分析;系统流程分析;数据字典。
第4章主要内容是:系统设计,对系统功能以图形表现出来和对数据库进行详细设计。
第5章主要内容是:系统总体设计;对系统管理员和用户的功能进行描述。
第6章主要内容是:对系统进行测试。
最后还有结论、致谢、参考文献等等内容的介绍。
2 相关技术概述
本系统使用java编程语言,采用B/S模式,使用mysql数据库管理数据。
2.1 Java语言简介
Java是由SUN公司推出,该公司于2010年被oracle公司收购。Java本是印度尼西亚的一个叫做爪洼岛的英文名称,也因此得来java是一杯正冒着热气咖啡的标识。Java语言在移动互联网的大背景下具备了显著的优势和广阔的前景,它是面向对象的,分布式的,动态的,具有平台无关性、安全性、健壮性。Java语言的基本语句语法和C++一样,但是它面向对象的技术更加彻底,因为Java要求将所有的内容都必须封装成类,把类作为程序的基本单位。由于不允许类外有变量、方法。 Java语言的分布式体现在数据分布和操作分布,它是面向网络的语言,可以处理TCP/IP协议,它也支持客户机/服务器的计算模式。Java语言的动态性是指类在运行时是动态安装的,使得Java可以动态的维护程序。Java不支持指针,对内存访问的所有操作都是通过对象实例化实现的,这样就避免了指针操作中易产生的错误,同时也预防了病毒对系统的破坏和威胁。
Java语言的编程风格与C语言非常接近,它继承了C++面向对象技术的核心,它面世之后发展迅速,非常流行,对高级C语言形成了很大的冲击。业内人士称之为“一次编译、到处执行”。当然java也有缺点,在每次执行编译后,字节码都需要消耗一定的时间,在某些程度上降低了性能。但是这并不影响java成为此次设计语言的选择。Java语言简单易学,使用它的编程时间短,功能性强,开发者学习起来更简便、更快。Java的主要特性有以下几个:
1.面向对象
面向对象有四个特点:封装、继承、多态、抽象。抽象是指忽略一个问题中的次要部分,关注主要部分。多态是指对同一种消息做出的不同反应。继承是指在原有的父类方法基础上增加自己独有的方法,而不改变原来父类。
2.平台无关性、
Java编译出来的是字节码,直接由虚拟机执行。在任何平台上,只要有Java虚拟机,Java代码都能运行。
3.可靠性和安全性
Java对内存的访问都必须通过对象的实例变量来实现,避免了指针中出现的错误。
4. 多线程
Java提供了多线程功能,利用编程实现同一时间同时工作的功能。
2.2 Vue介绍
前端框架介绍
A)前端框架有: React/ Facebook/Angular/Google/Vue全世界
B)Angular、Vue、React的区别
Vue与React
React与Vue 都采用虚拟DOM.核心功能都在核心库中,其他类似路由这样的功能则由其他库进行处理React的生态系统更庞大,由ReactNative来进行混合App开发; Vue更轻量. React由独特的JSX语法; Vue是基于传统的Web计数进行扩展(HTML、CSS、NodejsScript),更容易学习.
Vue与Angular
Angular1和Angular2以后的版本 是完全不同的两个框架; 一般Angular1被称作Angular.js, Angular之后的版本被称作 Angular, Vue与Angular的语法非常相似, Vue没有像Angular一样深入开发,只保证了基本功能。 Angular过于笨重, Vue的运行速度比Angular快得多, Angular的脏检查机制带来诸多性能问题。
2.3 B/S结构
B/S结构是目前使用最广泛的结构模式,它不但能让系统的开发更加的简单,易操作,而且还能够对其进行维护。在使用B/S结构时只要在计算机中安装好数据库和一些很常用的浏览器就行了。数据库和浏览器就会进行信息连接,能实现很多功能,此结构通过能上网的电脑是可以直接进行使用,而且在使用中极大的减少了工作的维护。基于B/S的软件数据库之间都是独立使用的,因此是非常可靠的。因为基于此结构可以清晰的看到系统正在处理的所有业务,还能够及时的让管理人员根据当时的实际情况做出相应的对策,这样能避免用户的损失。B/S结构的管理模式是集中式的,用户使用此系统在生成数据后就可以将这此数据存储到系统的数据库中,方便以后使用满足人们的所有的需求。
图2-1 三层结构图
2.4 MySql数据库
数据库(Database)是按照数据结构来组织、存储和管理数据的建立在计算机存储设备上的仓库。简单来讲,存储粮食的仓库叫粮仓存储数据的仓库就叫数据库。数据库在软件项目中扮演着操作管理数据的角色同时还能够保证数据的独立性、一致性和安全性,并为系统访问数据提供有效方式不仅如此数据库还能大大减少程序员开发程序时间。在日常能够接触实用的一般有两类数据库,一类是以(Oracle,DB2,SQL Server,MySQL )为代表的关系型数据库和以(NoSql、MongeDB)为代表的非关系型数据库,两类数据库各有各的优缺点。其中非关系型数据库又分为网络数据库和层级数据库。-网络数据库是指在计算机网络系统中应用数据库技术然后借助网络技术将存储于数据库中的大量信息及时发布出去;在成熟的数据库技术的帮助下,计算机网络实现了对网络中的各种数据的有效管理,用户与网络中的数据库数据交互也借此得以进行。作为最成功的典型层次模型数据库系统,IMS是最早研制成功的数据库系统。1970年由埃德加·科德于首先提出的关系模型融合了“科德十二定律”。现如今即使很多人仍旧不看好这个模型,但它依旧是数据存储的传统标准。关系数据结构、关系操作集合、关系完整性约束构成了关系模型。作为数据库另外一种区分方式的存储介质被大家分为磁盘和内存这 两种。例如:关系型数据库就存储在磁盘中,非关系型数据库则存储在内存中。典型的关系型数据库有:Oracle、DB2、Microsoft SQL Server、Microsoft Access、MySQL、SQLite。小型关系型数据库:Microsoft Access,SQLite;中型关系型数据库:SQL Server,Mysql;大型关系型数据库:Oracle,DB2。
大家常用的其他关系形数据库系统大多是MySQL AB公司开发的,其中MySQL也是由这家开发的,所应用的分布式数据库管理系统是客户机/服务器体系结构得益于此结构,而且用这个系统建造的数据库具有很强的适用性,用C和C++编写的系统让他拥有很强的适用性所以他可以在大部分操作系统上使用并能和php结合。不同的API函数针对不同的语言(C,C++,JAVA等)来处理不同数据;为了更好地支持多CPU多线程通过使用核心线程来实现;提供的存储机制分为事务和非事务存储机制;MySQL采用双重许可,不管是从MySQL AB公司获得正式的商业许可又或是许可条款下以免费软件或开放源码软件的方式使用MySQL软件都是被允许的。
MySQL作为数据库拥有很多优点,其中由于是开放源码,所以使用成本特别低,而它体积小的特点决定了速度快的特性。因此,My Sql具有开放性,多线程支持多种API,可跨数据库连接,国际化,数据库体积巨大等特点。简单的来说 ,MySql是一个开放的、快速的、多线程的、多用户的数据库服务器。
选用MySQL作为数据库的其中一个原因就是支持多线程,支持多线程的特点为利用系统资源提供了便捷并因此大大提高了系统运行速度和效率,而且连接数据库的方式多样包括但不局限于TCP/IP、ODBC和JDBC等途径;但是没有东西是完美无缺的,即便MySQL也如此,虽说它有着众多优点但其功能不够强大,规模也相对较小,无法应对大型数据哭的处理。但是对于本系统来说,选用MySQL作为数据库,其功能性能已绰绰有余,如果要进行二次开发的数据库表结构空间的扩展也是完全可行的。综上所述,MySQL是作为本系统数据库的最优选择。
图2-2 数据库管理系统和接口的原理
2.5 SSM框架
开发信息管理系统的主流框架是SSM(Spring + Spring MVC + MyBatis),SSM框架web层使用Spring MVC框架,使传输前后端数据变得简单;对于业务层使用Spring作为轻量级控制反转和面向切面的容器框架;对于相关SQL操作,采用Mybatis作为持久层框架,对JDBC进行封装,使得数据库的底层面向开发者操作处于一种透明状态。
3需求分析
3.1可行性分析
进行可行性分析的目的是对于品牌银饰售卖平台的问题进行细节分析,并且根据对所选择的开发工具的了解,分析自己能否开发设定的品牌银饰售卖平台,且是一个功能齐全,维护简便,操作方便上手的系统,以便可以更好地完成任务避免开发过程中一些不必要的错误:
3.1.1 经济可行性
由于本次系统开发为本人毕业设计,所以经济方面的投资较小,研发、运行主要费用包含:硬件设备,软件开发和人员费用等
3.1.2 技术可行性
系统开发工具:Windows操作系统、java技术,环境和数据库采用Eclipse和mysql数据库,Eclipse和mysql数据库都是非常成熟的开发工具,无论从安全性,可用性还是可靠性等方面都毫无置疑,因此软件方面是可行的。
技术要求:熟悉软件项目开发流程,具有扎实的Java语言编程功底,能撰写需求分析文档,对大数据的基本概念有一定了解,能够体现大数据的风格。
3.1.3 法律可行性
该平台是由本人亲自开发,文献资料都是通过学校图书馆借阅,而不会的代码是同学和老师指导的,所以没有任何侵权的行为,在法律上是可行的。
3.1.4 操作可行性
现在随着科技的飞速发展,计算机早已经进入了人们的日常生活中,人们的工作环境也不像以前有那么多的要求,需要工作人员一定要到公司办公,有的工作在家也可以完成。这使得人们的工作效益有了很大的提高。操作的多样性也变高了。因此,管理的计算机化,智能化是社会发展而带来的必然趋势,各种智能的软件层出不穷,不同的软件能完成用户不同的需求,这不仅提高了工作效率还能完成一些客户特定的一些需求。本系统不仅界面简洁明了还采用可视化界面,用户只要用鼠标和键盘就可以完成对相关信息的修改,删除,添加等操作。因为这个系统的操作十分简单,方便上手,对于第一次使用系统的人,只需要很少的时间就可以上手操作。由此可见,本系统在操作上是可行的。
3.2系统流程的分析
运行的主要流程为,登入管理员用户名,因为只有管理员才有权限进行该操作,然后查看所有注册用户的信息,选中需要删除的用户信息,然后确认删除,即为完成,系统将修改的数据更新至数据库,主要过程如图3-1所示:
图3-1删除用户管理流程图
运行流程主要为输入用户名密码,并且不能为空,若为空则提示不能为空,用户名和密码全部输对即可登入成功,主要流程如图3-2。
图3-2 系统登录流程图
品牌银饰售卖平台工作流程为:系统启动,进入登录界面,登录系统后可浏览主页面。通过权限判断,普通用户只能浏览、阅读和查询信息,注册用户还可以进行资料的录入、修改和删除自己注册资料等操作,管理员可以对系统管理的所有功能进行操作,比如添加、修改和删除信息等。所有用户均可以实现查询功能。主要流程图如图3-3所示:
图3-3 系统业务流程图
3.3 数据字典
数据字典是关于数据的信息的集合,也就是对数据流图中包含的所有元素的定义的集合。数据流图和数据字典共同构成系统的逻辑模型。
本品牌银饰售卖平台提供管理员和用户两个用户角色,主要包括首页、个人中心、用户管理、促销活动管理、饰品管理、我的收藏管理、系统管理、订单管理等功能。
1管理员模块
管理员可以查询、编辑、管理每个用户的信息和系统管理员自己的信息,同时还可以编辑、修改、查询用户账户和密码,以及对系统模块的增删改查。
2用户模块
用户主要包括首页、个人中心、促销活动管理、饰品管理等功能。可以对自己的个人账户信息进行查看和修改、删除等。
结果形式:本系统是以网站形式运行使用的,可以提供一个专门的服务器,申请一个网上域名,最后同过输入特定网址,搜索到本网站,浏览网页并进行在线管理。
解决的问题:避免传统的管理复杂性,节省了时间,提高了效益,操作简单方便,减少了人力消耗,大大的方便了用户。进一步推进了系统的发展。
4系统设计
4.1系统功能模块
根据系统功能分析,可以画出系统的功能模块图,系统总体功能如下图所示:
图 4-1 系统总体功能模块图
4.2数据库设计
4.2.1 数据库需求分析
管理员:具有最高的管理权限,支持后台管理,对用户信息进行增删改查,对处方信息进行及时更新,还可以管理留言信息,删除一些不健康的留言。
4.2.2 数据库概念结构设计
概念模型是对现实中的问题出现的事物的进行描述,ER图是由实体及其关系构成的图,通过E-R图可以清楚地描述系统涉及到的实体之间的相互关系。
饰品管理实体图如图4-2所示:
图4-2饰品管理实体图
订单管理实体图如图4-3所示:
图4-3订单管理实体图
个人中心实体图如图4-4所示:
图4-4个人中心实体图
4.2.3 数据库逻辑结构设计
根据上诉的逻辑模型设计,下面给出物理模型的设计,设计每张表的变量名,变量的类型及主键等如下表:
表4-1:地址
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
userid | bigint | 用户id | |||
address | varchar | 200 | 地址 | ||
name | varchar | 200 | 收货人 | ||
phone | varchar | 200 | 电话 | ||
isdefault | varchar | 200 | 是否默认地址[是/否] |
表4-2:token表
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
userid | bigint | 用户id | |||
username | varchar | 100 | 用户名 | ||
tablename | varchar | 100 | 表名 | ||
role | varchar | 100 | 角色 | ||
token | varchar | 200 | 密码 | ||
addtime | timestamp | 新增时间 | CURRENT_TIMESTAMP | ||
expiratedtime | timestamp | 过期时间 | CURRENT_TIMESTAMP |
表4-3:收藏表
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
userid | bigint | 用户id | |||
refid | bigint | 收藏id | |||
tablename | varchar | 200 | 表名 | ||
name | varchar | 200 | 收藏名称 | ||
picture | varchar | 200 | 收藏图片 | ||
type | varchar | 200 | 类型(1:收藏,21:赞,22:踩) | 1 | |
inteltype | varchar | 200 | 推荐类型 |
表4-4:饰品
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
shipinbianhao | varchar | 200 | 饰品编号 | ||
shipinmingcheng | varchar | 200 | 饰品名称 | ||
shipinleixing | varchar | 200 | 饰品类型 | ||
tupian | varchar | 200 | 图片 | ||
shuliang | int | 数量 | |||
fabushijian | date | 发布时间 | |||
thumbsupnum | int | 赞 | 0 | ||
crazilynum | int | 踩 | 0 | ||
reversetime | datetime | 倒计结束时间 | |||
clicknum | int | 点击次数 | 0 | ||
price | float | 价格 |
表4-5:订单
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
orderid | varchar | 200 | 订单编号 | ||
tablename | varchar | 200 | 商品表名 | shipin | |
userid | bigint | 用户id | |||
goodid | bigint | 商品id | |||
goodname | varchar | 200 | 商品名称 | ||
picture | varchar | 200 | 商品图片 | ||
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 | 收货人 | ||
logistics | longtext | 4294967295 | 物流 |
表4-6:新闻资讯
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
title | varchar | 200 | 标题 | ||
introduction | longtext | 4294967295 | 简介 | ||
picture | varchar | 200 | 图片 | ||
content | longtext | 4294967295 | 内容 |
表4-7:饰品评论表
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
refid | bigint | 关联表id | |||
userid | bigint | 用户id | |||
nickname | varchar | 200 | 用户名 | ||
content | longtext | 4294967295 | 评论内容 | ||
reply | longtext | 4294967295 | 回复内容 |
表4-8:促销活动评论表
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
refid | bigint | 关联表id | |||
userid | bigint | 用户id | |||
nickname | varchar | 200 | 用户名 | ||
content | longtext | 4294967295 | 评论内容 | ||
reply | longtext | 4294967295 | 回复内容 |
表4-9:促销活动
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
biaoti | varchar | 200 | 标题 | ||
fengmian | varchar | 200 | 封面 | ||
neirongxiangqing | longtext | 4294967295 | 内容详情 | ||
fabushijian | date | 发布时间 | |||
thumbsupnum | int | 赞 | 0 | ||
crazilynum | int | 踩 | 0 |
表4-10:配置文件
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
name | varchar | 100 | 配置参数名称 | ||
value | varchar | 100 | 配置参数值 |
表4-11:用户
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
yonghuzhanghao | varchar | 200 | 用户账号 | ||
yonghuxingming | varchar | 200 | 用户姓名 | ||
mima | varchar | 200 | 密码 | ||
xingbie | varchar | 200 | 性别 | ||
lianxifangshi | varchar | 200 | 联系方式 | ||
touxiang | varchar | 200 | 头像 | ||
money | float | 余额 | 0 |
表4-12:客服聊天表
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
userid | bigint | 用户id | |||
adminid | bigint | 管理员id | |||
ask | longtext | 4294967295 | 提问 | ||
reply | longtext | 4294967295 | 回复 | ||
isreply | int | 是否回复 |
表4-13:用户表
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
username | varchar | 100 | 用户名 | ||
password | varchar | 100 | 密码 | ||
role | varchar | 100 | 角色 | 管理员 | |
addtime | timestamp | 新增时间 | CURRENT_TIMESTAMP |
系统详细设计
本系统的总功能分为两个模块:用户模块和管理员模块。通过这两个功能模块完整的实现了本管理系统的具体内容。同时,为用户提供了一个功能基本完善的管理平台,方便了用户的需求。
5.1前台功能模块
品牌银饰售卖平台,在系统首页可以查看首页、促销活动、饰品、新闻资讯、个人中心、后台管理、客服等内容进行详细操作,如图5-1所示。
图5-1系统首页界面图
促销活动,在促销活动页面可以查看饰品标题、饰品图片、发布时间、内容详情等详细内容,并进行收藏或评论操作,如图5-2所示。
图5-2促销活动界面图
饰品,在饰品页面可以查看饰品名称、限时秒杀、价格、饰品编号、饰品类型、数量、发布时间、点击次数、饰品图片等详细内容,并进行立即购买、评论、点赞或收藏操作,如图5-3所示。
图5-3饰品界面图
用户注册,在用户注册页面通过填写用户账号、用户姓名、密码、确认密码、联系电话等信息完成注册操作,如图5-4所示。
图5-4用户注册界面图
个人中心,在个人中心页面通过填写用户账号、用户姓名、密码、性别、联系方式、上传图片、余额等内容进行更新信息,根据需要对我的订单、我的地址或我的收藏进行相对应操作,如图5-5所示。
图5-5个人中心界面图
5.2后台功能模块
管理员和用户进行登录,进入系统前在登录页面根据要求填写用户名、密码,选择角色等信息,点击登录进行登录操作,如图5-6所示。
图5-6管理员和用户登录界面图
5.2.1管理员功能模块
管理员登录系统后,可以对首页、个人中心、用户管理、促销活动管理、饰品管理、我的收藏管理、系统管理、订单管理等功能进行相应的操作管理,如图5-7所示。
图5-7管理员功能界面图
饰品管理,在饰品管理页面可以对索引、饰品编号、饰品名称、饰品类型、图片、数量、发布时间、价格等内容进行详情、修改、查看评论和删除等操作,如图5-8所示。
图5-8饰品管理界面图
订单管理,在已支付订单页面可以对索引、订单编号、商品名称、商品图片、购买数量、价格/积分、折扣价格、总价格/总积分、折扣总价格、支付类型、状态、地址、电话、收货人、下单时间等内容进行详情、发货或删除等操作,并根据需要已取消订单、已退款订单、已完成订单、已发货订单、未支付订单进行详细操作,如图5-9所示。
图5-9订单管理界面图
5.2.2用户功能模块
用户登录进入品牌银饰售卖平台可以对首页、个人中心、促销活动管理、饰品管理等功能进行相应操作,如图5-10所示。
图5-10用户功能界面图
6 系统测试
系统测试是软件开发过程中最后一步,但也是不可或缺的重要的一步,没有人可以保证一次性编写完成的系统不会出错,而系统测试就是将自己开发的系统成为成品前的最后一步。在测试过程中需要进行严谨细致的测试,要尽可能全面地在不同情况下运行该系统,排除一切出现错误的可能。
该系统的测试主要有对功能的测试,可用性测试,维护测试,性能测试等部分,测试结果如下:
6.1 功能测试
功能测试包含了适用性,准确性,可操作性,依从性,安全性等五个项目。本系统功能测试如表6.1所示:
表6.1 系统功能测试
内容 | 结果 |
依从性 | 正常 |
安全性 | 正常 |
可操作性 | 正常 |
适用性 | 正常 |
准确性 | 正常 |
6.2 可用性测试
可用性测试用于检测系统的可操作性,可理解性,可学习性等方面内容。具体测试方面如表6.2所示。
可用性测试是用来检测系统的操作性,理解性,学习性等方面内容。如下表所示。
表6.2可用性测试
测试项 | 测试人员的评价 |
操作流程是否合理 | 是 |
所需数据项是否正确显示 | 是 |
模块布局是否协调,合理 | 是 |
模块、提示内容等文字描述是否正确 | 是 |
对选中项能否发生对应切换 | 是 |
操作方式是否简单 | 是 |
操作是否流畅 | 是 |
6.3 性能测试
性能测试主要通过模拟系统运行环境来测试该系统是否能达到用户期待。他的重要技术指标是系统的运行速度、网络的响应时间和支持并发节点数。
1)系统运行速度:得益于B/S架构,该系统能在不同配置电脑上运行并无明显卡顿,滞后,完全符合客户要求。
2)网络响应时间:网络响应时间主要包括网络最小响应时间、平均响应时间、最大响应时间两个参数。经过测试,在正常网络运营状态下,局域网内响应时间三参数为:1/2/5s,外网响应时间三参数为3/7/12s,符合用户需求,属于用户心理可承受范围。
3)支持并发节点数:经过模拟环境测试,本系统在并发节点达45个时,网络运营速度会发生较大波动,延迟时间10秒左右,符合用户需求。
6.4 测试结果分析
经过以上测试的结果进行分析,本系统能够在不同电脑上使用运行,具备一定安全性,用户信息不易泄露,能够日后再增删功能,能够实现所有功能,产品运行性能良好,能达到毕业设计要求。
结 论
“品牌银饰售卖平台”项目除了能够使用户体验到网络带来的方便,能浏览系统前台首页、个人中心、用户管理、促销活动管理、饰品管理、我的收藏管理、系统管理、订单管理等信息,还增加了后台管理,方便查询。
该项目功能模块基本齐全,界面优美,操作简单。用户不需要注册登录就可以对系统首页进行信息浏览。在用户登录之后,还可以进行后台的操作功能。
后台管理系统能够方便的使管理员对所有的信息进行浏览和编辑。在管理系统首页,通过图表的形式,对各种类型的数据进行统计。在每个菜单选项下,都有可以模糊搜索的输入框,在数据记录量比较大的情况下,可以使用该搜索功能。
项目选择使用Tomcat服务器。Tomcat是一个轻量级的应用服务器,优点是较为轻便,性能稳定,启动较快,因此比较适合项目完成初期用户数量较少的时候使用,后期用户数量较多时很容易出现性能问题。
系统仍然需要进一步的完善,可以增加一些项目的功能,提升用户的体验。例如,在用户登录时添加七天免登录的功能,方便下一次登录时的操作。使用聊天的形式,多个用户之间可以进行私信聊天等功能。
致 谢
行文至此,致谢的开始,也就意味着四年本科生涯即将画上句号。纵有万般的不舍,但仍然心怀感激。
正所谓,大学者,非谓有大楼之谓也,有大师之谓也。首先,我要感谢我的指导老师。在项目编写的道路上,指导老师给了我很多十分有用的见解。同时,在项目编写的道路上,一定会遇到各种各样的问题,包括知识点、各种功能等,此时也要致谢的是一些有用的参考文献。
父母之爱子,则为之计深远。在此,也提别感谢我的父母家人。二十余载的求学之路,全是父母在我的背后积极默默付出和支持。
最后,感谢我的全体同学,感谢大家在大学四年一千多个日子中的相互陪伴。每个太阳落山时,温暖的阳光都撒在我们的纸上、笔上,我会永远怀念大家,愿大家的前程都可奔赴,岁月亦可共回首。
在准备毕业工作期间,深感祖国之强大,为祖国骄傲,感谢在这场疫情中无私奉献的逆行者们!祝愿祖国繁荣昌盛,国泰民安。
参考文献
[1]汪晓平、钟军.JSP网络开发技术[M].北京:人民邮政出版社,2003年12月第二版.
[2] 张一鸣、桂林、张家祥.个人网站组建实用教程[M].西安:电子科技大学出版社,2004年1月第一版.
[3] 龙马工作室.JSP+ mysql组建动态网站[M].北京:人民邮电出版社,2004年8月第一版.
[4] 林佳,任明武.JSP编程从入门到精通.第2版.北京:人民邮电出版社,2001
[5] 陈秋江,朱海东.网页设计制作与上级指导.第1版.北京:清华大学出版社,2003
[6] 范乐,于强.基于Web的编程技术.第1版.北京:铁道电出版社,2003
[7] 杨文龙,姚淑珍,吴芸.软件工程.北京:电子工业出版社,2002.7
[8] 薛华成.管理信息系统.第3版.北京:清华大学出版社,1999
[9] 蔡翠平、尚俊杰.网络程序设计—JSP[M].北京:清华大学出版社,2002年1月第一版.
[10] 姚国章.中国企业电子商务发展战略[M].北京:北京大学出版社,2001.
[11] 黄平主编.数据库技术.北京:机械工业出版社,2002.
[12] 袁玫等编著.网络数据库应用教程.北京:人民邮电出版社,2002.
[13] 郭瑞军、李杰、初晓璐.JSP数据库开发精粹.电子工业出版社,2005年2月第一版.
核心代码展示
/**
* 公告通知
* 后端接口
* @author
* @email
* @date 2021-03-09 11:33:59
*/
@RestController
@RequestMapping("/news")
public class NewsController {
@Autowired
private NewsService newsService;
/**
* 后端列表
*/
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params,NewsEntity news, HttpServletRequest request){
EntityWrapper<NewsEntity> ew = new EntityWrapper<NewsEntity>();
PageUtils page = newsService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, news), params), params));
return R.ok().put("data", page);
}
/**
* 前端列表
*/
@IgnoreAuth
@RequestMapping("/list")
public R list(@RequestParam Map<String, Object> params,NewsEntity news, HttpServletRequest request){
EntityWrapper<NewsEntity> ew = new EntityWrapper<NewsEntity>();
PageUtils page = newsService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, news), params), params));
return R.ok().put("data", page);
}
/**
* 列表
*/
@RequestMapping("/lists")
public R list( NewsEntity news){
EntityWrapper<NewsEntity> ew = new EntityWrapper<NewsEntity>();
ew.allEq(MPUtil.allEQMapPre( news, "news"));
return R.ok().put("data", newsService.selectListView(ew));
}
/**
* 查询
*/
@RequestMapping("/query")
public R query(NewsEntity news){
EntityWrapper< NewsEntity> ew = new EntityWrapper< NewsEntity>();
ew.allEq(MPUtil.allEQMapPre( news, "news"));
NewsView newsView = newsService.selectView(ew);
return R.ok("查询公告通知成功").put("data", newsView);
}
/**
* 后端详情
*/
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") Long id){
NewsEntity news = newsService.selectById(id);
return R.ok().put("data", news);
}
/**
* 前端详情
*/
@IgnoreAuth
@RequestMapping("/detail/{id}")
public R detail(@PathVariable("id") Long id){
NewsEntity news = newsService.selectById(id);
return R.ok().put("data", news);
}
/**
* 后端保存
*/
@RequestMapping("/save")
public R save(@RequestBody NewsEntity news, HttpServletRequest request){
news.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
//ValidatorUtils.validateEntity(news);
newsService.insert(news);
return R.ok();
}
/**
* 前端保存
*/
@RequestMapping("/add")
public R add(@RequestBody NewsEntity news, HttpServletRequest request){
news.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
//ValidatorUtils.validateEntity(news);
newsService.insert(news);
return R.ok();
}
/**
* 修改
*/
@RequestMapping("/update")
public R update(@RequestBody NewsEntity news, HttpServletRequest request){
//ValidatorUtils.validateEntity(news);
newsService.updateById(news);//全部更新
return R.ok();
}
/**
* 删除
*/
@RequestMapping("/delete")
public R delete(@RequestBody Long[] ids){
newsService.deleteBatchIds(Arrays.asList(ids));
return R.ok();
}
/**
* 提醒接口
*/
@RequestMapping("/remind/{columnName}/{type}")
public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request,
@PathVariable("type") String type,@RequestParam Map<String, Object> map) {
map.put("column", columnName);
map.put("type", type);
if(type.equals("2")) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar c = Calendar.getInstance();
Date remindStartDate = null;
Date remindEndDate = null;
if(map.get("remindstart")!=null) {
Integer remindStart = Integer.parseInt(map.get("remindstart").toString());
c.setTime(new Date());
c.add(Calendar.DAY_OF_MONTH,remindStart);
remindStartDate = c.getTime();
map.put("remindstart", sdf.format(remindStartDate));
}
if(map.get("remindend")!=null) {
Integer remindEnd = Integer.parseInt(map.get("remindend").toString());
c.setTime(new Date());
c.add(Calendar.DAY_OF_MONTH,remindEnd);
remindEndDate = c.getTime();
map.put("remindend", sdf.format(remindEndDate));
}
}
Wrapper<NewsEntity> wrapper = new EntityWrapper<NewsEntity>();
if(map.get("remindstart")!=null) {
wrapper.ge(columnName, map.get("remindstart"));
}
if(map.get("remindend")!=null) {
wrapper.le(columnName, map.get("remindend"));
}
int count = newsService.selectCount(wrapper);
return R.ok().put("count", count);
}
}