【javaweb+springboot】旅游网页面设计(主购物车功能)——前后端分离+服务端客户端增删改查(完整代码+文档)

news2024/11/28 10:55:59

一、项目背景
由于疫情原因,张家界旅游业受到很大的影响,为了促进旅游业的发展,吸引更多游客来到张家界旅游,帮助游客更好地了解张家界,创建张家界旅游网,推进旅游发展大会的开展,展示当地风土人情。景区推荐和酒店预定使得游客出行更加的方便,通过游客留言,增加与当地的互动性,将当地特产在网站上直接销售,提高经济收益,加强宣传效果。

二、业务概述
将系统分为普通用户操作和管理员后台管理。系统的最终用户是管理员和普通用户,具有一定的系统操作能力。管理员具有更新前台系统,管理后台系统的权限,而普通用户只能在前台界面进行操作。
三、详细需求
1.1 系统功能模块
在这里插入图片描述

管理员后台管理功能模块图
在这里插入图片描述

普通用户操作功能模块图
1.2功能需求
管理员后台管理实现管理员对用户信息、商品信息和网页内容信息操作。
(1)用户信息管理:管理员可见的用户信息为:用户id、用户姓名、用户性别、用户电话,可对用户信息进行删除,可根据用户姓名查询用户信息和对除id以外信息的修改。
(2)商品信息管理:可实现对商品名、商品单价和商品库存的增删改。
(3)页面内容管理:对主页面对用户浏览张家界介绍信息的增删改。
普通用户操作实现用户注册和登录、用户浏览、商品的展示和购买、商品订单中对商品数量的增减和删除操作、对订单金额统计的功能。
(1)注册功能:用户填写用户名、登录密码进行注册,当用户名已经存在时,注册失败。否侧注册成功,用户id自增。
(2)登录功能:用户填写用户名和密码或者手机号和密码或者用户通过扫码进行登录操作。 用户在进行操作之前,首先需要输入自己的信息包括帐号和密码,显示器将这些信息发送给数据库,在数据库中将用户的帐号和密码进行比对,进行身份验证,并将验证的结果(包括用户类型及是否登陆成功)返回给用户。如果身份验证成功则进入页面,反之登录失败。
(3)商品展示功能:用户对所有商品信息进行浏览,并且可以点击加入购物车中。
(4)购物车管理:主要包括用户对购物车全部商品的查看,商品数量的修改,商品的删除,结算。
1.3功能流程图

用户流程图

用户减少购物车中商品数量流程图
用户进入登录页面,当输入账号和密码后点击登录按钮,若输入为空时,弹出提示窗口,否则将数据传入后端进行判断,判断成功后进入旅游页面,浏览商品信息后可点击加入购物车,如果购物车中已经有该商品订单,则购物车中该商品数量加1,改变商品总价,否则将商品信息加入购物车中,商品数量为1,商品总价等于商品单价,最后计算所有商品的价格。
一、主要功能
1.用户信息管理功能
用户登录、用户注册、用户修改、用户删除
2.浏览查询功能
浏览(张家界地理环境、历史文化、地方特产、风景名胜、著名人物等介绍)
3.商品展示功能
景区售票、特产的购买
4.购物车功能
我的购物车里面查看订单详情,可以进行商品增加、商品减少、商品删除等功能
二、 概要设计
在这里插入图片描述

主要分为管理员、登录、首页、个人四个界面,在布局方面分为页眉、导航栏、主体部分、页脚,以html+css+js的模式进行编程。

ER图

用户表:用户id、用户名字、用户密码、用户性别、用户电话
商品表:商品id、商品名字、商品单价
购物车表:订单id、商品名字、商品单价、商品数量、商品总计

1.用户登录页面
以张家界风景照为背景,用表单标签实现的登录框在页面的中心位置,里面包括账号框和密码框,下面设置登录、注册、忘记密码按钮。如果登录成功就跳转到主页,登录失败时,在密码框显示“密码错误或账号不存在”。如果没有注册,点击注册按钮,弹出注册窗口,向用户名框、设置密码框输入后,点击确认按钮实现注册。
2.主题页面
2.1 首页设计
分为页眉、导航栏、主体、页脚四个部分,在页眉部分将网页名字放在左边四分之一处,在靠近右边的位置显示个人账号。导航栏有首页、出行预定、旅游论坛、个人账号四个内容,在导航栏下面有一个动态的、可点击的图片轮播板块,放上景区和特产等图片,在轮播图上有搜索栏,在页脚有“关于我们”的介绍。

2.2 首页内容
张家界简介包括地理环境、历史文化、地方特产、风景名胜、著名人物等介绍,点击后字体颜色有变化,并跳到相应的位置。
3.出行推荐

点击或鼠标移动到出行推荐后,出现二级导航栏,分为景区预定、酒店预定、特产购买。分为三个区域,每个区域都是一个列表,并用边框显示商品图片、介绍、价格,点击可查看更多。图片占边框的二分之一,在图片下面显示商品名,然后另起一行显示商品信息,左下显示商品的价格,右下显示购买按钮。
三、详细设计
1.用户登录页面login
在login.html上实现登录和注册功能,分成两个大的div区域,用a标签实现登录和注册功能的跳转,在login.css上使用overflow: hidden,将填写框溢出的部分隐藏,这样就不需要将登录和注册写成两个html文件了。

2.主题页面index
(1)搜索功能
可实现百度搜索,采用form表单的action属性将输入内容提交到指定的URL里面来实现
(2)轮播图
图片自动切换:用ul标签放入图片,在js中设置图片切换功能,设置引索,初始化使得当前图片透明,切换引索的值(累加),使得当前图片显现,当引索值大于图片数量时,使得值为0,当值小于0时,赋值为图片数量,用定时器实现。
左右健点击切换:设置左右按键的div,创建点击事件,获取左右健元素,点击左键,引索减一,右键,引索加一。
(3)下拉列表
采用:hover伪元素模仿悬停事件。先在html中创建二级菜单,将第二级菜单用dispaly none隐藏起来,当鼠标悬停在上面时,使得二级列表用display: block成为块级元素显示出来。注意display:none 和 visibility:hidden 的区别。前者元素隐藏后,占据的空间消失。
(4)浮动导航/导航栏
用无序列表,导航栏部分用display: inline-block;使得设置对象做为行内元素显示,浮动导航要用position:fixed 使得固定在页面上。
3.出行推荐chuxing
在这里插入图片描述

3.1 商品展示
(1)用数组输入商品信息。
(2)获取商品展示区域的节点元素对象,通过遍历数组,将商品信息输出。
3.2 购物功能
(1)购物车功能
① 获取“加入购物车”按钮元素节点的集合,初始化商品数量。
② 当发生点击事件时,创造div元素,将该商品信息输出到购物车展示区域,将购物车节点的子节点列表末尾添加新的子节点,商品数量加1,并进行结算。
(2)商品计算功能
① 商品删除:
a.获取“加入购物车”按钮元素节点的集合。
b.当发送点击事件时,删除该商品节点,即删除购物车节点的子节点,商品数量减1,并进行结算。
② 商品数量增减:
让商品的数量+1,点击加入购物车弹出提示窗口,判断是否第一个加入购物车,如果是,则在购物车界面加入商品列表,否则只能加商品的数量。这里把商品所有属性放进一个集合里面。
a.获取所有加、减号元素节点集合。
b.商品增加:对商品进行遍历,当点击加号时,获取上一个兄弟元素节点,即商品数量,将商品数量的值进行累加后输出。改变商品总计价格,并进行结算。
c.商品减少:对商品进行遍历,当点击减号时,获取下一个兄弟元素节点,即商品数量,判断商品数量是否小于1,如果商品小于1时,商品数量无法改变,否则使得商品数量的值减少后输出。改变商品总计价格,并进行结算。
③ 商品总计价格:
a.获取单价节点,此时的作用域是在加号或者减号按钮中,则父节点的父节点的上一个兄弟节点是单价节点,父节点的父节点的下一个兄弟节点是总计节点。
b.获取商品单价的值,总计价格的值等于商品数量的值乘以商品单价的值,输出商品总计,并进行结算。
④ 商品结算
a.获取购物车对象中孩子节点集合和总和对象的节点。
b.对所有商品进行遍历,获取每个商品的总计,并进行累加,最后输出总计。
在这里插入图片描述

4.个人中心页面:
右上角点击“个人中心”进去个人页面,导航栏显示账号设置、购物车等。

在这里插入图片描述

四、功能实现

1、登录、注册功能
(1)登录:
在这里插入图片描述

① 密码账号为空时,弹出警示窗口,提示密码或者账号为空

在这里插入图片描述

② 将输入的密码与账户密码比较,不相等时提示登录失败

在这里插入图片描述

③ 密码正确,提示登录成功,跳转到主页面

在这里插入图片描述

(2)注册:
① 设置验证码倒计时(当点击按钮后要将按钮设置成不可点击,直到倒计时为零)
在这里插入图片描述

② 提交后跳转到登录界面

2、主题页面index

(1)整体展现

在这里插入图片描述

在这里插入图片描述

3、出行推荐(购物功能)
(1)商品展示
在这里插入图片描述
在这里插入图片描述

(2)点击加入购物车
在这里插入图片描述

(3)商品数量增加
在这里插入图片描述

(4)商品数量减少
在这里插入图片描述

(5)商品输删除

在这里插入图片描述
在这里插入图片描述

(6)结算
在这里插入图片描述

4、论坛
在这里插入图片描述

5、管理员页面

(1)用户信息操作:能够修改、删除、查询用户
在这里插入图片描述

(2)商品信息操作:增加商品

在这里插入图片描述

在这里插入图片描述

完整代码+文档

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/646674.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

商城系统功能有哪些?

商城系统是一种以电子商务为基础的技术工具,为企业涉足电子商务提供了完整的解决方案。商城系统不仅可以帮助企业降低成本,提高效率,还可以实现全方位的在线营销,为企业争取更多的竞争优势,如SHOP、Magento等一系列成熟…

EBU5476 Microprocessor System Design 知识点总结_3 Assembly

Assembly 汇编语法。 顺序结构 label ; 可省略,用于跳转到此位置助记符 operand1, operand2, … ; CommentsMOV r1, #0x01 ; 数据0x01放入r1 MOV r1, #A ; 数据A的ascii码放入r1 MOV R0, R1 ; move R1 into R0 MOVS R0, R1 ; move R1 i…

当 GraphQL 遇上图数据库,便有了更方便查询数据的方式

人之初,性本鸽。 大家好,我叫储惠龙(实名上网),你可以叫我小龙人,00 后一枚。目前从事后端开发工作。 今天给大家带来一个简单的为 NebulaGraph 提供 GraphQL 查询支持的 DEMO,为什么是简单的…

职业教育机构转线上时,选择平台要注意哪些方面?

职业教育是提升技能和知识的重要途径,有效的职业教育能够帮助培养和发展人才,相比较线下面授课程相比,在线直播的教学,可以节省较大成本,那么在选型直播平台时,要注意哪些方面呢? 1.需要实现高清…

记录一次使用__dirname和./引出的bug

JS项目中 保存本地生成的图片时使用的路径:__dirname“/waitToFinishTask.png"。 但是在获取这张图片的时候我使用的是“./waitToFinishTask.png”。 从而抛出异常:Error: ENOENT, No such file or directory ./waitToFinishTask.png 找了好久都不知道为什么会…

【无标题】windows下使用cmake编译c++

好久没有更新博客了 最近在做c相关的,编译起来确实很痛苦。 所以心血来潮,继续更新一下 主要还是一些跨平台的库,比如zlib、libpng、opencv、ffmpeg 编译工具使用mingw作为主要编译环境支持,使用msys进行编译。 一、下载mingw…

利用etcd实现分布式锁

python etcd3模块的lock使用 观察lock的加解锁影响 在python中已经自带了分布式锁的实现方式,下面我们尝试一下加锁与解锁的流程 在运行该demo同时也对lock对应的key进行watch,观察其变化,注意python-etcd3在实现分布式锁的时候&#xff0…

前端终止请求的三种方式(ajax、axios)

一、原生ajax终止请求 1、abort() ​ XMLHttpRequest.abort() 方法用于终止 XMLHttpRequest 对象的请求,该方法没有参数,也没有返回值。当调用该方法时,如果对应 XMLHttpRequest 对象的请求已经被发送并且正在处理中,则会中止该…

一个专科生的 Python 转行之路,虽然很难,但如今月薪1w,一切值得

一个专科生的 Python 转行之路,虽然很难,但如今月薪1w,一切值得 相信每个转 IT 的人, 大部分是兴趣驱动。然而我并不是, 只能说是不反感。一开始接触编程, 是一位同事,他会 java ,也会一点前端。 印象最深刻的一次&…

前端如何处理「并发」问题?

🐱 个人主页:不叫猫先生,公众号:前端舵手 🙋‍♂️ 作者简介:2022年度博客之星前端领域TOP 2,前端领域优质作者、阿里云专家博主,专注于前端各领域技术,共同学习共同进步…

Avalon 学习系列(四)—— 循环遍历

Avalon2 的 ms-for 绑定集齐了 ms-repeat, ms-each, ms-with 的所有功能&#xff0c; 更加好用&#xff0c; 性能也提升了很多。 Avalon 不需要 vue 或 react 那样使用 key 属性来提高性能&#xff0c;内部已经帮你搞定了。 循环数组 ms-for 循环数组示例&#xff1a; <…

运维圣经:勒索病毒应急响应指南

目录 勒索病毒简介 常见勒索病毒种类 WannaCry Globelmposter Crysis/ Dharma 攻击特点 应急响应方法指南 一. 隔离被感染的服务器/主机 二. 排查业务系统 三. 确定勒索病毒种类&#xff0c; 进行溯源分析 四. 恢复数据和业务 五. 清理加固 病毒清理及加固 感染文…

零基础也能懂的python办公自动化教程,从此上班摸鱼轻轻松松

前言 如今Python在自动化办公领域的表现越来越亮眼&#xff0c;受到了很多非IT的职场人士的推崇&#xff0c;也引得更多的人去了解、学习Python。但是很多初学者都会面临这么一个困惑&#xff1a;想把Python应用在工作中&#xff0c;却不知从何下手&#xff01;&#xff08;资…

【音视频处理】音频编码AAC详解,低码率提高音质?

大家好&#xff0c;欢迎来到停止重构的频道。 本期我们介绍音频编码格式AAC。 AAC是音频最常用的编码格式之一&#xff0c;几乎所有的播放器都支持这个编码格式。 其他音频编码格式都是类似的&#xff0c;只是某些细节存在差别&#xff0c;如压缩算法、某些音频参数存在限制…

6个ChatGPT4的最佳用途

文章目录 ChatGPT 4’s Current Limitations ChatGPT 4 的当前限制1. Crafting Complex Prompts 制作复杂的提示2. Logic Problems 逻辑问题3. Verifying GPT 3.5 Text 验证 GPT 3.5 文本4. Complex Coding 复杂编码5.Nuanced Text Transformation 细微的文本转换6. Complex Kn…

100天精通Golang(基础入门篇)——第8天:Go语言程序的流程结构和条件语句

&#x1f337; 博主 libin9iOak带您 Go to Golang Language.✨ &#x1f984; 个人主页——libin9iOak的博客&#x1f390; &#x1f433; 《面试题大全》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &#x1f30a; 《I…

【Unity入门】25.零基础实现游戏Demo--神鸟大战怪兽

【Unity入门】零基础实现游戏Demo--神鸟大战怪兽 大家好&#xff0c;我是Lampard~~ 欢迎来到Unity入门系列博客&#xff0c;所学知识来自B站阿发老师~感谢 (一) 前言 经过了两个月的学习&#xff0c;我们也顺利的完成了入门课程&#xff0c;最后就用一个Demo作为我们的结课句…

动态规划算法(子序列专题1)

动态规划算法专辑之子序列问题&#xff08;1&#xff09; 本专栏将从状态定义、状态转移方程、初始化、填表顺序、返回值这五大细节来详细讲述动态规划的算法的解题思路及代码实现 一、什么是子序列 子数列&#xff0c;又称子序列&#xff0c;在数学中&#xff0c;某个序列的…

工时表:如何跟踪团队进度?

工时表可以记录考勤&#xff0c;但你知道它还能帮助你管理项目和监控团队绩效吗&#xff1f;在本文中&#xff0c;了解如何将在线时间跟踪与你的日常工作流程相结合&#xff0c;以调整你的团队并提高灵活性。 在线时间追踪与手动 传统上&#xff0c;工时表在每天或每周开始时…

基于Java企业办公自动化系统设计实现(源码+lw+部署文档+讲解等)

博主介绍&#xff1a; ✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战 ✌ &#x1f345; 文末获取源码联系 &#x1f345; &#x1f447;&#x1f3fb; 精…