手机商品销售网站

1 手机商品销售网站概述

1.1 课题简介

在手机商城的构建与运营过程中,HTML、CSS、JSP、Java、JDBC等各类技术均发挥了至关重要的作用,它们各司其职、协同配合,为电子设备爱好者提供了一个规范、专业且高效的 手机选购平台。

HTML与CSS以其卓越的性能,共同打造出一个规范、美观的前端界面,为用户带来优质的视觉体验;JSP则充分发挥其技术优势,将手机详情等关键信息准确、全面地展示给用户,使用户能够深入了解手机的特点与优势。

Java技术以其强大的处理能力,承担着商城中交易处理、订单管理等一系列核心业务,确保了商城运营的平稳与顺畅;而JDBC则负责数据存储与管理工作,确保了商城数据的准确性、完整性和安全性。

在MVC架构的指导下,Servlet发挥着关键的调控作用,它协调各个组件的协同工作,确保了商城系统的高效有序运行。

手机商城的设立,不仅推动了电子设备文化的普及与发展,更为广大电子设备爱好者提供了一个专业、可靠的选购平台。通过该平台,电子设备爱好者可以便捷地浏览各类手机信息,选择心仪的手机,满足对电子设备的热爱与追求。同时,手机商城的运营也促进了电子设备产业的繁荣与发展,为电子设备文化的传承与创新作出了积极贡献。

1.2 设计目的

本手机商品销售网站的设计目的在于为用户提供一个便捷、高效的手机购物平台,满足用户对于手机购买的需求。通过该网站,用户可以轻松浏览各类手机产品的详细信息,包括型号、配置、价格等,并能够根据自己的需求进行筛选和比较。

1.3 系统开发所采用的技术

1.3.1 开发工具

本系统使用idea作为开发工具,它提供了丰富的功能和插件,方便进行代码编写、调试和项目管理。

1.3.2 开发使用的数据库系统

使用MySQL数据库系统,版本为8.0。MySQL具有稳定性高、性能优越、易于使用等优点,能够满足本系统对数据存储和管理的需求。

1.3.3 系统环境

操作系统为Windows 10。

1.4 系统功能模块

首页:展示手机分类和推荐手机,包括上新品、特惠、热销榜等。

分类:按照手机类型进行分类,方便用户浏览和筛选。

购物车:用户可以将感兴趣的手机添加到购物车中,进行结算和购买。

搜索栏:用户可以通过输入关键词搜索手机。

登录功能:用户需要登录才能进行购买和管理订单等操作。

注册功能:新用户可以注册账号。

分页查询所有商品功能:可以分页查看所有手机商品信息。

分页条件查询商品功能:支持按照条件进行分页查询,如价格区间、品牌等。

购物车功能:用户可以对购物车中的商品进行管理,如修改数量、删除等。

订单管理功能:用户可以查看订单状态、交易详情等。

图1-1功能图

2 数据库设计

2.1 建立的数据库名称

本系统建立的数据库名称为"phoneshop"。

2.2 所使用的表

手机表(s_phone)

字段名

类型

约束

介绍

phoneId

INT

主键,自增

手机的唯一标识符

catalogId

INT

外键,关联s_catalog表的catalogId

手机所属的分类ID

phoneName

VARCHAR(50)

手机的名称

author

VARCHAR(50)

手机的作者

press

VARCHAR(50)

手机的出版社

price

DECIMAL(10, 2)

手机的价格

description

VARCHAR(200)

手机的描述

imgId

INT

手机图片的ID

addTime

DATETIME

手机的添加时间

用户表(s_user)

字段名

类型

约束

介绍

userId

INT

主键,自增

用户的唯一标识符

userName

VARCHAR(50)

唯一约束

用户名

passWord

VARCHAR(50)

密码

email

VARCHAR(50)

邮箱

购物车表(s_cart)

字段名

类型

约束

介绍

cartId

INT

主键,自增

购物车的唯一标识符

userId

INT

外键,关联s_user表的userId

购物车所属的用户ID

订单表(s_order)

字段名

类型

约束

介绍

orderId

INT

主键,自增

订单的唯一标识符

orderNum

VARCHAR(50)

订单号

userId

INT

外键,关联s_user表的userId

订单所属的用户ID

orderDate

DATETIME

订单日期

money

DECIMAL(10, 2)

交易金额

orderStatus

INT

订单状态

订单详情表(s_orderitem)

字段名

类型

约束

介绍

itemId

INT

主键,自增

订单详情的唯一标识符

phoneId

INT

外键,关联s_phone表的phoneId

订单中手机的ID

orderId

INT

外键,关联s_order表的orderId

订单的ID

quantity

INT

手机的数量

3 手机商品销售网站设计与实现

3.1系统管理首页

系统根据用户选择的每页数量和当前页码,从数据库中查询相应的商品信息。

将查询结果返回给用户,并显示在页面上。

3.1.1模块视图

图3-1 首页

图3-2 查询

3.1.2模块模型 

    DAO:

 package dao;

import bean.phone;

import bean.PageBean;

public interface phoneDao {

    // 获取手机总数

    long phoneReadCount();

    // 获取手机分页列表(视图)

    List<phone> phoneList(PageBean pageBean);

    // 按分类获取手机数量

    long phoneReadCount(int catalogId);

    // 按关键字获取手机数量

    long phoneReadCount(String phoneName);

    // 按分类获取手机分页列表(视图)

    List<phone> phoneList(PageBean pageBean, int catalogId);

    // 按分类获取手机分页列表(视图)

    List<phone> phoneList2(PageBean pageBean, String phoneName);

    // 增加手机

    boolean phoneAdd(phone phone);

    // 根据手机 id 查找手机信息(视图)

    phone findphoneById(int phoneId);

    // 根据手机名称查找手机是否存在

    boolean findphoneByphoneName(String phoneName);

    // 更新手机信息

    boolean phoneUpdate(phone phone);

    // 根据 id 删除手机

    boolean phoneDelById(int phoneId);

    // 根据 id 串查询图片 id 串

    String findimgIdByIds(String ids);

    // 批量删除手机

    boolean phoneBatDelById(String ids);

    // 随机获取指定数量手机

    List<phone> phoneList(int num);

    // 获取指定数量新添加的手机

    List<phone> newphones(int num);

}

3.1.3模块控制器

Servlet:

 @WebServlet("/phoneList")

public class phoneList extends HttpServlet {

    private static final long serialVersionUID = 1L;

    private static final int MAX_LIST_SIZE = 12;

    private static final String phoneLIST_PATH = "jsp/phone/phonelist.jsp";

    /**

     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)

     */

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        String action = request.getParameter("action");

        if (action == null) {

            action = "list";

        }

        switch (action) {

            case "d":

                break;

            case "list":// 默认全部手机列表

                phoneList(request, response);

                break;}}

3.2.会员登录功能:

用户输入用户名和密码后,系统验证用户名和密码是否匹配。

如果匹配,将用户信息存储在 session 中,并跳转到首页。

如果不匹配,提示用户用户名或密码错误。

3.2.1模块视图

图3-3 登录

3.2.2模块模型 

DAO:

      package dao;

      import bean.User;

      import bean.PageBean;

      public interface UserDao {

          // 获取总记录数

          long phoneReadCount();

          // 获取用户列表(分页显示)

          List<User> userList(PageBean pageBean);

          // 查找用户名是否存在

          boolean findUser(String userName);

          // 根据 id 获取一个用户的信息

          User findUser(Integer id);

          // 增加用户

          boolean userAdd(User user);

          // 更新用户

          boolean userUpdate(User user);

          // 根据 id 删除一个用户

          boolean delUser(int id);

          // 根据一组 id 字符串批量删除用户

          boolean batDelUser(String ids);

          // 登陆

          User userLogin(User user);

      }

3.2.3模块控制器

Servlet:      @WebServlet("/LoginServlet")

      public class LoginServlet extends HttpServlet {

          private static final long serialVersionUID = 1L;

          private static final String LOGIN_PATH = "jsp/phone/reg.jsp?type=login";

          private static final String REG_PATH = "jsp/phone/reg.jsp?type=reg";

          private static final String INDEX_PATH = "jsp/phone/index.jsp";

          private static final String LANDING = "landing"; // 前台用户 session 标识

          /**

           * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)

           */

          protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

              doPost(request, response);}

          /**

           * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)

           */

          protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

              String action = request.getParameter("action");

              switch (action) {

                  case "login":

                      login(request, response);

                      break;

                  case "off":

                      offlogin(request, response);

                      break;

                  case "ajlogin":

                      ajlogin(request, response);

                      break;

                  case "reg":

                      reg(request, response);

                      break;

                  case "landstatus":

                      landstatus(request, response);

                      break;}}

3.3.会员注册功能:

用户输入用户名、密码、邮箱等信息后,系统验证用户名是否已存在。

如果不存在,将用户信息存储到数据库中,并提示注册成功。

如果已存在,提示用户用户名已存在。

3.3.1模块视图

图3-4注册

3.3.2模块模型 

DAO:

package dao;

import bean.User;

import bean.PageBean;

public interface UserDao {

    // 获取总记录数

    long phoneReadCount();

    // 获取用户列表(分页显示)

    List<User> userList(PageBean pageBean);

    // 查找用户名是否存在

    boolean findUser(String userName);

    // 根据 id 获取一个用户的信息

    User findUser(Integer id);

    // 增加用户

    boolean userAdd(User user);

    // 更新用户

    boolean userUpdate(User user);

    // 根据 id 删除一个用户

    boolean delUser(int id);

    // 根据一组 id 字符串批量删除用户

    boolean batDelUser(String ids);

    // 登陆

    User userLogin(User user);}

3.3.3模块控制器

Servlet:

@WebServlet("/UserServlet")

public class UserServlet extends HttpServlet {

    private static final long serialVersionUID = 1L;

    private static final String LOGIN_PATH = "jsp/phone/reg.jsp?type=login";

    private static final String REG_PATH = "jsp/phone/reg.jsp?type=reg";

    private static final String INDEX_PATH = "jsp/phone/index.jsp";

    private static final String LANDING = "landing"; // 前台用户 session 标识

    /**

     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)

     */

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        doPost(request, response); }

    /**

     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)

     */

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        String action = request.getParameter("action");

        switch (action) {

            case "login":

                login(request, response);

                break;

            case "off":

                offlogin(request, response);

                break;

            case "ajlogin":

                ajlogin(request, response);

                break;

            case "reg":

                reg(request, response);

                break;

            case "landstatus":

                landstatus(request, response);

                break;} }

3.4.购物车功能:

用户可以将商品添加到购物车中。

用户可以在购物车中修改商品数量、删除商品等。

用户可以结算购物车中的商品,生成订单。

3.4.1模块视图

图3-5购物车

3.4.2模块模型 

DAO:

package dao;

import bean.Cart;

import bean.CartItem;

import bean.phone;

import bean.PageBean;

public interface CartDao {

    // 添加商品到购物车

    boolean addTOCart(CartItem cartItem);

    // 根据购物车 ID 获取购物车

    Cart getCartById(int cartId);

    // 更新购物车商品数量

    boolean updateCartItemQuantity(CartItem cartItem);

    // 删除购物车商品

    boolean delCartItem(CartItem cartItem);

    // 清空购物车

    boolean delAllCartItems(int cartId);

}

3.4.3模块控制器

Servlet:

@WebServlet("/CartServlet")

public class CartServlet extends HttpServlet {

    private static final long serialVersionUID = 1L;

    /**

     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)

     */

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        doPost(request, response);

    }

    /**

     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)

     */

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        String action = request.getParameter("action");

        switch (action) {

            case "add":

                addTOCart(request, response);

                break;

            case "changeIn":

                changeIn(request, response);// 更改购物车商品数量

                break;

            case "delItem":

                delItem(request, response);

                break;

            case "delAll":

                delAll(request, response);

        }

    }

3.5.订单管理功能:

用户可以查看自己的订单信息,包括订单状态、交易详情等。

用户可以对订单进行管理,如取消订单、确认收货等。

3.5.1模块视图

图3-6 订单

3.5.2模块模型  

package service;

import bean.Order;

import bean.OrderItem;

import bean.PageBean;

import bean.User;

import dao.phoneDao;

import dao.OrderDao;

import dao.OrderItemDao;

import dao.UserDao;

import java.util.Collections;

import java.util.List;

public class OrderService {

    OrderDao dao = new OrderDao() {

        @Override

        public boolean orderAdd(Order order) {

            return false;

        }

        @Override

        public int findOrderIdByOrderNum(String orderNum) {

            return 0;

        }

        @Override

        public long orderReadCount() {

            return 0;

        }

        @Override

        public long orderReadCount(int userId) {

            return 0;

        }

        @Override

        public long orderReadCountByStatus(int status) {

            return 0;

        }

        @Override

        public List<Order> orderList(PageBean pageBean) {

            return Collections.emptyList();

        }

        @Override

        public List<Order> orderList(PageBean pageBean, int userId) {

            return Collections.emptyList();

        }

        @Override

        public List<Order> orderListByStatus(PageBean pb, int status) {

            return Collections.emptyList();

        }

        @Override

        public Order findOrderByOrderId(int orderId) {

            return null;

        }

        @Override

        public boolean orderStatus(int orderId, int status) {

            return false;

        }

}

3.5.3模块控制器

Servlet:@WebServlet("/OrderManageServlet")

public class OrderManageServlet extends HttpServlet {

    private static final long serialVersionUID = 1L;

    private static final String ORDERLIST_PATH = "orderManage/orderlist.jsp";

    private static final String ORDERDETAIL_PATH = "orderManage/orderDetail.jsp";

    private static final String ORDEROP_PATH = "orderManage/orderOp.jsp";

    /**

     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)

     */

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        doPost(request, response);

    }

    /**

     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)

     */

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        String action = request.getParameter("action");

        switch (action) {

            case "list":

                orderList(request, response);

                break;

            case "detail":

                orderDetail(request, response);

                break;

            case "processing":

                orderProcessing(request, response);

            case "ship":

                orderShip(request, response);

        }

    }


4 课程设计总结

通过本次课程设计,我对JavaWeb应用开发有了更深入的理解和认识。在开发手机商品销售网站的过程中,我学到了很多知识和技能。

首先,我熟悉了整个项目的开发流程,从需求分析、数据库设计到系统实现和测试,每一个环节都需要认真对待。在需求分析阶段,我充分了解了用户的需求,明确了系统的功能和目标,为后续的开发工作奠定了基础。在数据库设计阶段,我合理地设计了数据库表结构,确保了数据的完整性和一致性。

其次,我掌握了JavaWeb开发中的一些关键技术,如Servlet、JSP、JDBC等。通过使用这些技术,我能够实现用户登录、注册、商品查询、购物车管理、订单管理等功能。同时,我还学会了如何使用MVC架构来组织代码,提高了代码的可读性和可维护性。

此外,在开发过程中,我也遇到了一些问题和挑战。例如,在实现购物车功能时,如何处理商品数量的修改和删除操作;在进行订单管理时,如何确保订单状态的准确更新等。通过查阅资料、请教老师和同学,我最终解决了这些问题,提高了自己的解决问题的能力。

总的来说,本次课程设计让我受益匪浅。我不仅学到了专业知识,还提高了自己的实践能力和团队合作能力。我相信,这些经验和技能将对我今后的学习和工作产生积极的影响。

  • 14
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值