Springboot阶段项目---《书城项目》

一 项目介绍

   本项目采用集成开发平台IntelliJ IDEA开发了在线作业成绩统计系统的设计与实现,实现了图书商城系统的综合功能和图形界面的显示,可以根据每个用户登录系统后,动态展示书城首页图书,实现了分类还有分页查询,还有用户可以添加图书到购物车,可以查看图书详情等基本功能。Springboot,SpringMVC,Mybatis等技术。

二 功能详细描述

该系统总共分为书城首页展示功能、书本详情功能,购物车功能,页面动态渲染功能,具体功能如下介绍:

(1) 书城首页展示功能:当用户访问首页时,我们会根据书本类型,书本价格,书本上架时间等对从数据库查询到的数据进行一个分页查询。

(2) 书本详情功能:当用户进入首页看见展示的图书后,用户可以通过点击书本从而进入该书本的详情页面,该页面包括了书本所有的详细信息。

(3) 购物车功能:该功能是一个较为核心的功能,首先用户在进入购物车功能之前,我们会先判断用户是否已经登录,我们使用的springMVC提供的拦截器进行实现,因为查询购物车的信息需要使用用户id。在进入购物车之后,首先我们会根据用户的id和购物车信息进行多表联查,将查询到的数据同样根据图书的分类,价格已经上架时间使用分页查询进行动态展示。同时,购物车也提供了对物品基本的删除,价格统计等功能。

(4) 页面动态渲染。该功能前端主要是使用jQuery来写的前端页面,然后通过ajax与后端进行交互,得到动态数据渲染在前端页面。

三 数据库表的设计

     本项目主要四张表,分别是用户信息表,用于存储用户的基本信息;图书信息表,用于展示图书的基本信息;图书分类表,用于后续对图书进行分类展示;购物车信息表,用于表示每个用户收藏购物车图书的信息。

     下面将分别展示每一张表的设计:

 

 

四 技术实现和难点 

 4.1 登录注册功能

        该功能没有什么特别大的难点,主要需要注意两点,第一点就是我们需要使用自定义全局异常处理器,对用户名和密码的正确性进行一个自定义的异常信息抛出。另外一点就是,为了方便后面业务逻辑的进行,我们在登录成功后,需要把用户的信息存入Session中,后面需要用的时候可以随时取。

4.2 书城首页功能

       该功能是比较核心的功能,它几乎包揽了我们平时使用的curd,但是稍微复杂一点的就是,我们需要根据前端数据动态查询sql。比如我们需要进行图书的分类查询,也可能需要根据价格或者上架时间来查询。另外一点就是分页查询,这个也是我们必须要掌握的。

4.3 购物车功能

       该功能和首页类型,也是对图书进行curd,但是他有一点需要注意,就是我们在进入购物车功能之前需要先进行判断用户是否已经登录,如果没有登录是不能进入购物车功能的,因为购物车的数据需要使用已经登录用户的uid进行数据库查询。所以这里就需要使用拦截器,对购物车请求进行拦截,先判断用户是否登录,如果登录了拦截器才会放行该请求。

4.4 浏览历史功能

       该功能暂未实现。因为我有一种思路就是再建一个表,然后根据该表中的时间字段进行排序查找,只根据最近时间展示前两本书数据,但是因为项目并没有给我们这个表,所以有点不科学。然后又想到了第二种方法,就是把游览的书本数据存入到前端的cookie或者Session中,然后再去里面拿,但是因为还没有试过,不知道怎么解决拿到最近两本书的信息,后面会再进行功能补充。

五 基本页面运行展示

5.1登录注册页面

5.2书城首页页面 

 

5.3购物车页面

 六 设计感言

作为计算机学院的学生,我觉得能做类似的课程设计是十分有意义,而且十分必要的。经过一周的课程设计,我成功的实现了成绩导入,数据查询,统计,删改等基本功能。

本次的课程提高了我编辑代码的能力和分析问题的能力,让我充分利用专业课程所学的知识来解决问题。也解决了我平时拖沓这种不好的学习习惯,增强了学习兴趣。学习的过程有乐趣也有困难,通过查阅课本,参考了网上的设计流程还有老师的讲解逐渐完成了本次任务。

写完运行时出现了很多问题,通过请教老师讲解不会的难点,解决了哈夫曼树如何打印在文档中的问题。并且与同学们的与分享解决了很多的基本问题。最后本次的课程设计使我学到了很多有用的东西,对今后的学习也有了很多帮助。

此次课程设计给我印象最深的就是通过对这个课题的训练,使我基本掌握了Java编程的基础知识,主体模块与功能模块的结合技巧、方法,让我发现了自己的不足之处而且学会了如何查找资料,提高了我的自学能力,也锻炼了我分析问题、解决问题的能力!边学边用这样才会提高效率,也提高了自己对专业的兴趣!

最后该项目的源码我已经放在了我主页的资源里面,名字叫做《书城项目》,另外如果有需要交课设的同学,可以找我拿项目文档。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MySQL -- 相关知识点

1.数据库相关介绍 数据库的选择通常取决于具体的应用需求,如性能、扩展性、数据一致性和易用性等因素。 1. 关系型数据库(RDBMS) MySQL: 广泛使用的开源数据库,支持大多数操作系统。强调易用性、灵活性和广泛的社区支…

Flutter Text导致A RenderFlex overflowed by xxx pixels on the right.

使用Row用来展示两个Text的时候页面出现如下异常,提示"A RenderFlex overflowed by xxx pixels on the right." The following assertion was thrown during layout: A RenderFlex overflowed by 4.8 pixels on the right.The relevant error-causing widget was:…

ClickHouse课件

列式存储数据库:hbase clickhouse 简介 ClickHouse入门 ClickHouse是俄罗斯的Yandex于2016年开源的列式存储数据库(DBMS),使用C语言编写,主要用于在线分析处理查询(OLAP),能够使用…

K8S中YAML案例

目录 案例:自主式创建service并关联上面的pod 案例:部署redis 案例:部署myapp 案例:部署MySQL数据库 总结 1.K8S集群中访问流向 K8S集群外部:客户端——nodeIP:nodeport——通过target port——podIP…

【排序算法】堆排序(Heapsort)

✨✨✨专栏:排序算法 🧑‍🎓个人主页:SWsunlight 目录 ​编辑 前言: 一、堆排序: 时间复杂度: 空间复杂度: 算法稳定性: 二、升序的实现:通过建大堆实…

find 几招在 Linux 中高效地查找目录

1. 介绍 在 Linux 操作系统中,查找目录是一项常见的任务。无论是系统管理员还是普通用户,都可能需要查找特定的目录以执行各种操作,如导航文件系统、备份数据、删除文件等。Linux 提供了多种命令和工具来帮助我们在文件系统中快速找到目标目…

百度软件测试面试经历,期望薪资27K

一面 1、 请为百度搜索框设计测试用例? 2、百度设计框上线前需要进行那些测试? 界面测试,功能测试,性能测试,安全性测试,易用性测试,兼容性测试,UI测试。 3、如何查看http状态码…

高通 Android 12/13冻结屏幕

冻结屏幕很多第一次听到以为是Android一种异常现象,实则不然,就是防止用户在做一些非法操作导致问题防止安全漏洞问题。 1、主要通过用户行为比如禁止下拉状态栏和按键以及onTouch事件拦截等,不知道请看这篇文章(Touch事件传递流…

WPF模板样式Style用法

在Windows Presentation Foundation (WPF) 中,样式(Style)和模板(Template)是创建丰富且可重用的UI元素的强大工具。样式允许你定义一组属性设置,这些设置可以应用于一个或多个控件,而模板则允许…

Flink-cdc更好的流式数据集成工具

What’s Flink-cdc? Flink CDC 是基于Apache Flink的一种数据变更捕获技术,用于从数据源(如数据库)中捕获和处理数据的变更事件。CDC技术允许实时地捕获数据库中的增、删、改操作,将这些变更事件转化为流式数据,并能够…

正反向shell

正反向shell 在实际的应用场景中一般是先找到可以命令执行的漏洞,如果目标主机没有ncat我们要先执行下载ncat命令在被控的服务器上 正向shell 应用场景:在被控端的访问没有限制的时候,控制端向被控端发起了链接,控制端可以是公…

在aspNetCore中 使用System.Text.Json的定制功能, 将定制化的json返回给前端

C# 默认大写, 而大部分的前端默认小写, 这时候可以如此配置: builder.Services.AddControllers().AddJsonOptions((opt) > {opt.JsonSerializerOptions.PropertyNamingPolicy System.Text.Json.JsonNamingPolicy.CamelCase;opt.JsonSerializerOptions.WriteIndented true…

InfLLM的笔记

文件中提供的代码是一个Python函数chat_loop,它是聊天系统的核心循环。以下是对这段代码逻辑的梳理: 函数定义与参数 chat_loop函数接收多个参数,用于配置聊天模型和聊天环境。参数包括模型路径、设备类型、GPU数量、最大GPU内存、数据类型…

安装测缝计安装事项详解

在建筑和工程领域,测量缝隙和裂缝的准确性对于工程质量和安全性至关重要。测缝计作为一种专业的测量工具,能够帮助工程师和施工人员准确测量和监测建筑结构的缝隙情况,进而采取合适的修复和加固措施,保证建筑物的稳定性和安全性。…

Covalent的CQT质押迁移比率在以太坊上升至13%,超Moonbeam记录

Covalent Network(CQT)作为领先的结构化模块化数据基础设施层,目前其在以太坊上的 CQT 质押比率已超过之前在 Moonbeam 上达到的历史最高水平。自从将质押合约迁移到以太坊不到一个月的时间里,超过总供应量的 13% 的 CQT 代币已被…

Unity中计数器的实现

Unity中计数器的实现 一、前言二、效果与逻辑(一) 实现效果(二)功能逻辑 三、功能代码四、应用实现五、结语 一、前言 最近在开发中用到计数器,但是unity自带的UI组件中没有,所以只好自己手撸了一个&#x…

2024电工杯数学建模选题建议及各题思路来啦!

大家好呀,2024电工杯数学建模竞赛开始了,来说一下初步的选题建议吧: 首先定下主基调, 本次电工杯建议选B。A题目难度较高,只建议有相关专业知识和优化经验的队伍选择,小白队伍无脑选B即可。是比较经典的数…

Python数字比大小获取大的数

目录 一、引言 二、数字比较的基本语法 三、获取较大的数 使用条件语句 使用内置函数 四、处理特殊情况 比较非数字类型 处理无穷大和NaN 五、应用实例 在游戏开发中比较分数 在数据分析中找出最大值 六、优化与性能 七、总结 一、引言 在Python编程的广阔天地中…

JS 实现鼠标框选(页面选择)时返回对应的 HTML 或文案内容

JS 实现鼠标框选(页面选择)时返回对应的 HTML 或文案内容 一、需求背景 1、项目需求 当用户进行鼠标框选选择了页面上的内容时,把选择的内容进行上报。 2、需求解析 虽然这需求就一句话的事,但是很显然,没那么简单…

如何使用maven运行SpringBoot程序?

目录 一、什么是maven 二、什么是SpringBoot 三、如何使用maven运行SpringBoot程序? 一、什么是maven Maven:简化Java项目构建的自动化工具 在软件开发的世界里,Maven以其强大的项目管理和构建自动化功能,为Java开发者提供了…