javaweb(jsp)-课程设计-图书购物网站


javaweb(jsp)-课程设计-图书购物网站 本项目完成于2021年12月29日,仅供参考。

github项目链接:

https://github.com/yosoroQ/javaweb-jsp--CourseDesign

课程设计题目:图书购物网站

课程设计目的:

(1)掌握Web 项目开发环境的搭建;
(2)加深对Web 程序设计技术基本理论、方法的理解和巩固;
(3)掌握基于JSP的web应用程序设计开发的基本方法和整体流程;
(4)熟悉JSP中MVC模式和通过JDBC操作MySQL数据库和SQL的应用
(5)提高运用基于JSP的web技术及数据库解决实际问题的能力。

课程设计内容要求:

(1)完成基于JSP和mysql的网上图书购物系统(或某某图书购物网站)项目的WEB应用程序开发。
(2)完成项目的需求分析,系统设计,数据库设计和实现。
(3)完成项目功能模块编码调试和连试、测试
(4)按格式要求完成课程设计报告的撰写。
(5)小组展示课设成果和答辩。
(6)代码要加注释,截图要突出重点内容,尽量避免全屏截图。
(7)提交:课程设计报告,项目的导出文件(含源码),项目展示视频。

课程设计报告:

目 录

一、概述-----------------------------------------------------———7
1.课程设计目的-----------------------------------------------------7
2.课程设计内容-----------------------------------------------------7
3.小组成员分工-----------------------------------------------------7
4.开发环境——-----------------------------------------------------7

二、系统需求分析---------------------------------------------------7
1.网站设计的特点----------------------------------------------——-7
2.系统分析----------------------------------------------------——-7
2.1总体需求———————————————————————————--8
2.2功能需求———————————————————————————--8
2.3性能需求———————————————————————————--8
2.4信息需求———————————————————————————--8

三、系统设计---------------------------------------------------——8
1.数据库设计--------------------------------------------------——-8
2.数据库结构设计---------------------------------------------------9
2.1图书信息表——————————————————————————--9
2.2图书分类信息表—————————————————————————9
2.3订单信息表——————————————————————————--9
2.4购物车信息表——————————————————————————9
2.5用户信息表——————————————————————————--10
3.创建数据库脚本文件———————————————————————-10
4.功能设计----------------------------------------------------——-12
4.1用户注册------------------------------------------------------- 12
4.2用户登录------------------------------------------------------- 12
4.3系统首页------------------------------------------------------- 12
4.4关于网站------------------------------------------------------- 12
4.5商品分类浏览----------------------------------------------------13
4.6商品查询------------------------------------------------------- 13
4.7购物车--------------------------------------------------------- 13
4.8订单查看------------------------------------------------------- 13

四、系统实现和测试-------------------------------------------------13
1.系统首页---------------------------------------------------------13
2.浏览图书---------------------------------------------------------14
3.用户注册,登录---------------------------------------------------16
4.关于网站---------------------------------------------------------18
5.查询图书---------------------------------------------------------19
6.查看购物车------------------------------------------------------20
7.查看订单--------------------------------------------------------21
8.退出页面--------------------------------------------------------23

五、总结----------------------------------------------------------23
1.遇到问题--------------------------------------------------------23
2.解决方法--------------------------------------------------------23
3.系统不足--------------------------------------------------------23
4.总结经验--------------------------------------------------------23
5.心得体会--------------------------------------------------------24

六、参考文献------------------------------------------------------24

课程设计报告:

一、概述

  1. 课程设计目的
    在这课程设计中我们要掌握Web 项目开发环境的搭建,加深对Web 程序设计技术基本理论、方法的理解和巩固,掌握基于JSP的web应用程序设计开发的基本方法和整体流程,熟悉JSP中MVC模式和通过JDBC操作MySQL数据库和SQL的应用和提高运用基于JSP的web技术及数据库解决实际问题的能力。
  2. 课程设计内容
    在这课程设计中我们要完成基于JSP和mysql的网上图书购物系统项目的WEB应用程序开发。

主要完成内容有数据库设计和功能设计(注册登录模块、首页模块、分类浏览模块、查询模块、购物车模块和订单模块)

  1. 小组成员分工
    本组成员构成:

(1)同学负责总体设计,包括代码的编写修改,资料的筛查,校对小组所编写代码以及课设报告的撰写。
(2)同学负责搜索资料,寻找合适的范例做参考以及数据库结构设计。
(3)同学负责部分功能模块开发,如注册登录或查询等模块。

  1. 开发环境
    jdk-15.0.1、apache-tomcat-9.0.41、mysql-8.0.22-winx64、Eclipse-IDE和JDBC-mysql连接器。

二、系统需求分析
在当今世界,书籍的流通日益增大,随着网络技术的不断发展壮大,线下书店的人流量逐渐变少,但人们对于书籍的需求不会改变,只不过现在是将流通方式从线下转为线上了,那么,我们的图书购物网站也正是基于这个机遇诞生。

  1. 网站设计的特点
    本网上书店平台采用Javaweb技术,并采用MySQL数据库技术来实现动态网站开发。

它的主要设计规则有:
简单性:在实现平台的功能的同时,尽量让平台操作简单易懂,这对于一个网站来说是非常重要的。
针对性:该平台设计是网上书店系统的定向开发设计,所以具有专业突出和很强的针对性。
实用性:该平台能完成图书展示和购买的基本信息,具有良好的实用性。

  1. 系统分析
    通过对网上书店系统分析,制订整个系统框架,主要需求有如下:

2.1 总体需求
 建立对图书提供全面管理的信息系统;
 对所有的图书、客户提供全面管理;
 对图书详细信息提供管理。
2.2 功能需求
 在联网状态下,客户可通过浏览器浏览书目信息;
 在完成注册登录后的状态下,可进行加入购物车,提交订单;
 客户能通过书名或价格区间来检索书籍;
 客户可在网上进行注册,成为会员;
 客户能查看当前订单和以往订单;
 书店员工能查找客户联系信息。
2.3 性能需求
 系统可以对图书的库存进行统计;
 易于维护和扩充;
 系统界面设计友好,操作方便、灵活;
 具有高可靠性和冗错能力,不允许系统在工作时间停机,不允许系统丢失图书信息,不允许在运行期间出现故障和错误;
 具有安全检查机制,非法用户不能使用系统,不能偷看系统信息,不能修改图书,防止随意删改,同时提供信息备份的服务﹔
 具有保密机制,各级使用者只能看到允许查看的系统信息。
2.4信息需求
 在信息需求中,本图书购物网站系统管理的实体对象有“图书、用户、购物车、订单、图书类别实体”;
 在图书实体中,它的属性主要有“ISBN(编号)、书名、出版社、价格、出版日期、配图及编号”;
 在用户实体中,它的属性主要有“用户名称、密码、电话号码、地址和真实姓名”;
 在购物车实体中,它的属性主要有“顺序编号、用户名称、商品名称及单价、总价”;
 在订单实体中,它的属性主要有“订单编号、用户名称和商品信息”;
 图书类别实体中,它的属性主要有“编号和书名类别”。

三、系统设计

  1. 数据库设计
    数据库表的结构设计是应用软件中的重要部分,数据库必须能充分满足各种信息的输入和输出,为了设计出适合的数据库,必须遵循以下数据库设计原则:

(1)减少冗余
系统中,各个应用程序都有自己的专用文件,这样就常常会导致存储数据的冗余,给数据维护上带来了很大的麻烦,虽然不能根除冗余,但应尽量减少。
(2)数据共享
就是说所有的应用程序都能共享数据库的数据,不管是现有的程序,还是新的应用程序都可以使用数据库中的数据。
(3)保存完整性
完整性也就是说数据库中数据必须是正确的,例如:同样的物品信息两条记录却不一致。这就是完整性存在问题。
(4)增强安全性
数据的安全是十分重要的,我们可以定义安全性约束,当别人访问这些加入约束的数据时,就要通过这些约束才可以继续进行。

  1. 数据库结构设计
    经过系统需求分析,网上书店需将图书信息、用户信息、订单信息等进行分析,本数据库设计如下数据项和数据结构:

2.1图书信息表:包括编号、书名、出版社、价格、出版日期、配图及外键识别的ID。
序号 字段名称 中文含义 数据类型 可否为空 长度 主/外键
1 ISBN 编号 char No 255 主键
2 book_name 书名 char YES 255
3 book_publish 出版社 char YES 255
4 book_price 价格 float YES 10
5 book_publishDate 出版日期 char YES 255
6 book_pic 配图 char YES 255
7 id 编号 int No 1 外键
2.1图书信息表

2.2图书分类信息表:包括书本ID和书名类别。
序号 字段名称 中文含义 数据类型 可否为空 长度 主/外键
1 id 编号 int No 1 主键
2 name 书名类别 char YES 255
2.2图书分类信息表

2.3订单信息表:包括订单编号、用户名称和商品信息。
序号 字段名称 中文含义 数据类型 可否为空 长度 主/外键
1 orderNumber 订单编号 int No 1 主键
2 logname 用户名称 char YES 255
3 mess 商品信息 char YES 5000
2.3订单信息表

2.4购物车信息表:包括顺序编号,用户名称,商品名称,商品价格和总价。
序号 字段名称 中文含义 数据类型 可否为空 长度 主/外键
1 goodsId 顺序编号 char No 30
2 logname 用户名称 char No 255
3 goodsName 商品名称 char YES 50
4 goodsPrice 商品单价 float YES 10
5 goodsAmount 总价 int YES 10
2.4购物车信息表

2.5用户信息表:包括用户名称,密码,电话号码,地址和真实姓名。
序号 字段名称 中文含义 数据类型 可否为空 长度 主/外键
1 logname 用户名称 char No 30 主键
2 password 密码 char NO 30
3 phone 电话号码 char YES 20
4 addess 地址 char YES 50
5 realname 真实姓名 char YES 60
2.5用户信息表

  1. 创建数据库脚本文件(本脚本文件转储自Navicat)

    -- ----------------------------
    -- Table structure for mobileclassify
    -- ----------------------------
    DROP TABLE IF EXISTS `mobileclassify`;
    CREATE TABLE `mobileclassify`  (
      `id` int(0) NOT NULL,
      `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
      PRIMARY KEY (`id`) USING BTREE,
      INDEX `id`(`id`, `name`) USING BTREE,
      INDEX `name`(`name`) USING BTREE
    ) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
    
    -- ----------------------------
    -- Table structure for mobileform
    -- ----------------------------
    DROP TABLE IF EXISTS `mobileform`;
    CREATE TABLE `mobileform`  (
      `ISBN` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
      `book_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
      `book_publish` char(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
      `book_price` float(10, 2) NULL DEFAULT NULL,
      `book_publishDate` char(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
      `book_pic` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
      `id` int(0) NOT NULL,
      PRIMARY KEY (`ISBN`) USING BTREE
    ) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
    
    -- ----------------------------
    -- Table structure for orderform
    -- ----------------------------
    DROP TABLE IF EXISTS `orderform`;
    CREATE TABLE `orderform`  (
      `orderNumber` int(0) NOT NULL AUTO_INCREMENT,
      `logname` char(30) CHARACTER SET gb2312 COLLATE gb2312_chinese_ci NULL DEFAULT NULL,
      `mess` varchar(5000) CHARACTER SET gb2312 COLLATE gb2312_chinese_ci NULL DEFAULT NULL,
      PRIMARY KEY (`orderNumber`) USING BTREE
    ) ENGINE = InnoDB AUTO_INCREMENT = 16 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
    
    -- ----------------------------
    -- Table structure for shoppingform
    -- ----------------------------
    DROP TABLE IF EXISTS `shoppingform`;
    CREATE TABLE `shoppingform`  (
      `goodsId` char(30) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
      `logname` char(30) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
      `goodsName` varchar(50) CHARACTER SET gb2312 COLLATE gb2312_chinese_ci NULL DEFAULT NULL,
      `goodsPrice` float NULL DEFAULT NULL,
      `goodsAmount` int(0) NULL DEFAULT NULL,
      INDEX `logname`(`logname`) USING BTREE,
      CONSTRAINT `shoppingform_ibfk_1` FOREIGN KEY (`logname`) REFERENCES `user` (`logname`) ON DELETE RESTRICT ON UPDATE RESTRICT
    ) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
    
    -- ----------------------------
    -- Table structure for user
    -- ----------------------------
    DROP TABLE IF EXISTS `user`;
    CREATE TABLE `user`  (
      `logname` char(30) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
      `password` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
      `phone` char(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
      `addess` char(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
      `realname` char(60) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
      PRIMARY KEY (`logname`) USING BTREE
    ) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
    
  2. 功能设计
    在功能设计中,本图书购物系统共有八大功能模块,分别是用户注册,登录,系统首页,关于网站,分类浏览,查询,购物车和查看订单等功能模块。

4.1 用户注册
在用户注册时,该模块要求用户需要输入用户名,密码信息,否则注册失败,用户在注册模块中所填的信息都将存入用户信息表中。
该模块由MVC模式实现(视图,模型,控制器),在视图——jsp页面上输入注册信息,并请求注册的servlet,该servlet将所填的信息都将存入用户信息表中。
在模型——Javabean中存储用户注册的信息,由servlet负责创建和更新。
在控制器——servlet中,其创建registerServlet,将用户信息写入到数据库中,并将注册反馈信息存储到Javabean中,再转发到注册页面。

4.2 用户登录
用户在注册完成后,即可进入登录页面登录,用户输入反馈成功的用户名和密码,系统与数据库的用户信息表配对,如有误,则提示“用户名或密码不正确”,如正确,则显示登录成功。
该模块同样由MVC模式实现(视图,模型,控制器),在视图——jsp页面上输入用户名和密码,并在下方反馈信息。
在模型——Javabean中记录用户填入的信息,由servlet负责创建和更新。
在控制器——servlet中,其创建loginServlet,他与数据库连接,验证是否是已注册的用户,并将注册反馈信息存储到Javabean中,再转发到登录页面。

4.3 系统首页
在系统首页中,我们组将它命名为“欢迎页”,用户在搜索引擎中进入的话,首先看到的就是本欢迎页。
在此欢迎上,我们采用了上中下结构,上有顶栏,中间是标题,标语和两个可互动的按钮,在最下方则是标明作者的底栏(19信管2班)。
顶栏在本页面最上方,通过logo+文字(超链接)的方式来实现整个网站的导航功能。
同时为了保证整个页面样式更加美观,我们引入css来丰富界面样式,例如在中间的内容充分利用css,做了多个椭圆状框,使得整个页面更加圆润,不会过于死板。

4.4关于网站
在关于网站中,我们希望这个网站需要一点人情味,而不是冰冷冷的页面,所以我们组在本图书购物网站中新建了“关于网站”模块页面,在这里面,我们编写了我们对图书购物的一种愿景:“书店所营造的气场,似乎并不该是一个商业场所,更应倾向于是一个人的书房……”,以及附上我们现实在校的地址(宿舍号)。
为了让这地址更加生动可信,我们引入了百度地图在文段下方,用户可通过此动态地图来找到我们所在的位置,这或许是一种有趣的做法。
引入的动态地图仅适用于联网状态。在机房无网状态下,我们可通过地图截图来代替实现此效果,但失去了动态效果。

4.5商品分类浏览
在分类浏览中,用户在该页面上选择书籍分类后,该模块可以用分页的方式显示数据库图书信息表里的内容。
该模块同样由MVC模式实现(视图,模型,控制器),在视图——jsp页面上选择书籍分类,进入另一个JSP页面,显示数据库图书信息表里的内容。在该页面中,提供两个选项供用户选择(图书详情和添加购物车),点击“图书详情”则跳入另一jsp页面,显示图书详细信息。
在模型——Javabean中用于存储数据库中的记录。
在控制器——servlet中,在本模块中有两个servlet,一个将数据库的信息存放到Javabean中,然后再将信息重定向到jsp页面中;另一个servlet则是关于购物车的,用户在点击添加购物车后,系统向数据库购物车信息表中插入记录。

4.6商品查询
在商品查询页面中,查询时可以通过图书名称及价格区间来查询,图书名称同时支持模糊查询。
该模块同样由MVC模式实现(视图,模型,控制器),在视图——jsp页面上输入图书名称或者价格区间,提交到servlet控制器,将查询结果存放到到databean中,并跳转到另一个页面负责显示databean中的数据。
在模型——Javabean中用于存储数据库中的记录。
在控制器——servlet中,将数据库图书信息表中查询到的记录存到databean中,然后将用户重定向到jsp页面。

4.7购物车
在浏览图书后,用户将书籍添加到购物车,如果用户未登录,则会重定向到登录页面。
该模块同样由MVC模式实现(视图,模型,控制器),在视图——jsp页面上负责显示购物车里的书籍,并提供修改购物车功能和生成订单的表单。
在模型——Javabean中用于是否为登录用户。
在控制器——servlet中,在本模块中有三个servlet,更新,删除和生成订单。

4.8订单查看
用户在经过购物车之后,则生成订单。
在视图——jsp页面上负责显示用户的订单信息。
在模型——Javabean中用于是否为登录用户。

<!--系统实现和测试暂时不上传-->

五、总结

  1. 遇到问题:更多的是与数据库的问题,如数据库连接不上,需要数据库的页面提示“(Public Key Retrieval is not allowed)”,注册的数据存不入数据库,在查询页面出现游标不能按要求动(“ResultSet.TYPE_FORWARD_ONLY.”)或者说插入的为空值。
  2. 解决方法:通过“面向百度”的方法,找到及补充学习了很多jsp的高效知识。比如在“查询页面”中会出现的““ResultSet.TYPE_FORWARD_ONLY.”,我一直不理解,在百度上多次寻找就是没有符合的解决方法,后来在stackoverflow和CSDN网站上找到了解决方法。
    将原先的“Statement sql=con.createStatement();”在括号里加入“queryCondition,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY”即可解决问题。
  3. 系统不足:在“浏览图书页面”中,未能实现像老师那般框格显示的页面,曾想实现,但一直解决不了其中的bug,最后不了了之;
    后台管理因技术和时间原因未能上线。
  4. 总结经验:“纸上得来终觉浅,绝知此事要躬行!”在短暂的课程设计课程中,让我深深的感觉到自己在实际运用中的专业知识的匮乏。让我们真正领悟到“学无止境”的含义。在进行课设的过程中,通过多次翻阅书籍和百度,真的十分有利于巩固课本上的知识,又能在修改bug中学习到新的知识。
    此外,在此次课设的过程中,即使做这么个小型网站,在带一个小组去完成,你不能保证所有的成员都在同一条水平线上,这是一个十分困难的事情,不断的磨合,教学,尽量让小组成员有事可做,有功而返,最终也算是圆满完成,也可以说是锻炼了个人的总体指挥能力,也锻炼了小组成员的实际开发能力和协作能力。
  5. 心得体会:通过此次课程设计,巩固了书本上的知识和在改BUG过程中学习到了很多未在课本上所教的知识,受益匪浅。
    小组成员的相互配合,增强了小组成员的协作能力。JSP虽老,但却对于回顾Java基础和进一步的Java语言的学习更进一步。

六、参考文献
[1] JSP实用教程 第四版 耿祥义 张跃平主编 清华大学出版社
[2] HTML+CSS 实现顶部导航栏菜单制作 —— 脚本之家
[3]游标不能按要求动的解决办法 —— CSDN网站
[4]ResultSet.TYPE_FORWARD_ONLY how does it actually work? ——stackoverflow

声明:三二一的一的二|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接 - javaweb(jsp)-课程设计-图书购物网站


三二一的一的二