基于JavaWeb的网上销售系统设计与实现

news2024/12/24 3:03:14

项目描述

临近学期结束,还是毕业设计,你还在做java程序网络编程,期末作业,老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下,你想解决的问题,今天给大家介绍一篇基于JavaWeb的网上销售系统设计与实现。

功能需求

本网上销售系统通过分析和确定系统的角色和功能划分,按照业务合理区分为不同的菜单功能模块。从用户角度出发,对每个功能的需求实现点进行人性化详细的构思。对每个功能的细节点进行分析设计整合完成整个网上销售系统的设计。这两类的主要功能如下:
(1)前端网页:
1、网站首页
2、用户登录注册
3、全部商品
4、新闻公告
5、咨询客服
6、详情下单
7、个人中心
(2)后台管理
1、后台主页
2、购物车管理
3、订单信息管理
4、留言管理
5、个人中心
6、商品信息管理
7、管理员登录

部分效果图

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

在这里插入图片描述

在这里插入图片描述

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

部分代码


/**
 * 前台、后台、登录。
 * 和修改密码项
 */
public class LoginCtrl extends HttpServlet {

    // 构造函数
    public LoginCtrl() {
        super();
    }

    // 析构函数
    public void destroy() {
        super.destroy(); // Just puts "destroy" string in log
        // Put your code here
    }

    // get 访问得时候运行这个方法
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 将get 方法得内容运行到Post 方法中
        this.doPost(request, response);
    }

    // 输出弹出框、并跳转到指定页面
    public void go(String url, HttpServletRequest request, HttpServletResponse response) {
        try {
            // 获取输出流
            PrintWriter out = response.getWriter();
            // 输出到控制台
            System.out.println(request.getAttribute("error"));
            // 判断有没有错误、有得话就输出弹出框
            if (request.getAttribute("error") != null) {
                out.println("<script>alert('" + request.getAttribute("error") + "');location.href='" + url + "'</script>");
                out.close();
                return;
            }
            // 加载指定jsp 页面、
            request.getRequestDispatcher(url).forward(request, response);
        } catch (ServletException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    // 跳转到某个页面
    public void gor(String url, HttpServletRequest request, HttpServletResponse response) {
        try {
            // 执行页面跳转
            response.sendRedirect(url);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    // 执行post 方法
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 设定编码为 utf-8
        response.setContentType("text/html;charset=utf-8");
        // 获取输出流
        PrintWriter out = response.getWriter();
        // 判断执行那个 if 判断内容
        String ac = request.getParameter("ac");
        if (ac == null) ac = "";
        // 生成数据库查询对象
        CommDAO dao = new CommDAO();
        // 获取当前时间
        String date = Info.getDateStr();
        // 获取当前日期
        String today = date.substring(0, 10);
        // 获取当前年月
        String tomonth = date.substring(0, 7);

        // 前台登录代码
        if (ac.equals("login")) {
            // 获取前台填写得账号
            String username = request.getParameter("username");
            // 获取前台填写得密码
            String password = request.getParameter("pwd");
            // 判断页面上选择的权限
            String utype = request.getParameter("cx");
            // 获取填写得验证码
            String pagerandom = request.getParameter("pagerandom") == null ? "" : request.getParameter("pagerandom");
            // 获取生成验证码时保存在session 中得验证码
            String random = (String) request.getSession().getAttribute("random");
            // 对比验证码是否正确、不正确则输出验证码错误
            if (!pagerandom.equals(random) && request.getParameter("a") != null) {
                request.setAttribute("error", "验证码错误");
                go("index.jsp", request, response);
            } else {
                String sql1 = "";
                if (utype.equals("用户")) {
                    sql1 = "select * from yonghu where yonghuming='" + username + "' and mima='" + password + "' ";
                }

                // 查询数据库中得信息判断账号密码得正确性
                Map map = dao.find(sql1);
                // map 不为空则是登录成功
                if (!map.isEmpty()) {
                    // 获取数据循环
                    Iterator iter = map.keySet().iterator();
                    // 设置session
                    request.getSession().setAttribute("username", username);
                    request.getSession().setAttribute("login", utype);
                    request.getSession().setAttribute("cx", utype);

                    while (iter.hasNext()) {
                        // 这个循环设置用户得信息进session 中
                        String key = (String) iter.next();
                        String val = (String) map.get(key);
                        request.getSession().setAttribute(key, val);
                    }
                    // 跳转到index.jsp
                    gor("index.jsp", request, response);
                } else {
                    // 否则提示账号或密码错误
                    request.setAttribute("error", "账号或密码错误");
                    go("index.jsp", request, response);
                }
            }
        }
        // 后台登录
        if (ac.equals("adminlogin")) {
            // 后台管理员登录
            // 获取前台填写得账号
            String username = request.getParameter("username");
            // 获取前台填写得密码
            String password = request.getParameter("pwd");
            // 判断页面上选择的权限
            String utype = request.getParameter("cx");
            // 获取填写得验证码
            String pagerandom = request.getParameter("pagerandom") == null ? "" : request.getParameter("pagerandom");
            // 获取生成验证码时保存在session 中得验证码
            String random = (String) request.getSession().getAttribute("random");
            // 对比验证码是否正确、不正确则输出验证码错误
            if (!pagerandom.equals(random) && request.getParameter("a") != null) {
                request.setAttribute("error", "验证码错误");
                go("login.jsp", request, response);
            } else {
                String sql1 = "";

                if (utype.equals("管理员")) {
                    sql1 = "select * from admins where username='" + username + "' and pwd='" + password + "' ";
                }

                // 查询数据库中得信息判断账号密码得正确性
                Map map = dao.find(sql1);
                // map 不为空则是登录成功
                if (!map.isEmpty()) {
                    // 获取数据循环
                    Iterator iter = map.keySet().iterator();
                    // 设置session
                    request.getSession().setAttribute("username", username);
                    request.getSession().setAttribute("cx", utype);
                    request.getSession().setAttribute("login", utype);
                    while (iter.hasNext()) {
                        // 这个循环设置用户得信息进session 中
                        String key = (String) iter.next();
                        String val = (String) map.get(key);
                        request.getSession().setAttribute(key, val);
                    }
                    // 跳转到main.jsp
                    gor("main.jsp", request, response);
                } else {
                    // 否则提示账号或密码错误
                    request.setAttribute("error", "账号或密码错误");
                    go("login.jsp", request, response);
                }
            }
        }

        //修改密码
        if (ac.equals("adminuppass")) {
            // 获取前台填写得原密码
            String olduserpass = request.getParameter("ymm");
            // 获取前台填写得新密码
            String userpass = request.getParameter("xmm1");
            // 获取前台填写得确认密码
            String copyuserpass = request.getParameter("xmm2");
            //  println(Info.getUser(request).get("id").toString());
            // 判断当前权限p
            String cx = (String) request.getSession().getAttribute("login");
            //String oldPassword = "";
            // 获取当前登录用户的账号
            String username = request.getSession().getAttribute("username").toString();
            Map m = null;
            String biao = "";
            if (cx.equals("管理员")) {
                biao = "admins";
                m = Query.make(biao).where("username", username).where("pwd", olduserpass).find();
                // dao.getmaps("username", (String) request.getSession().getAttribute("username"), "admins");
            }
            if (cx.equals("用户")) {
                biao = "yonghu";
                m = Query.make(biao).where("yonghuming", username).where("mima", olduserpass).find();
                // dao.getmaps("yonghuming", (String) request.getSession().getAttribute("username"), "yonghu");
            }

            // 尝试登录一下原密码、如果为null  或 空map则提示原密码错误
            if (m == null || m.isEmpty()) {
                // 提示原密码错误
                request.setAttribute("error", "原密码错误");
                go("mod.jsp", request, response);
            } else {
                //String id = (String)user.get("id");
                // 否则更新成新密码
                String sql = "";
                if (cx.equals("管理员")) {
                    sql = "UPDATE admins SET pwd='" + userpass + "' WHERE username='" + username + "'";
                }
                if (cx.equals("用户")) {
                    sql = "UPDATE yonghu SET mima='" + userpass + "' WHERE yonghuming='" + username + "'";
                }

                //执行更新密码
                dao.commOper(sql);
                //  提示密码修改成功
                request.setAttribute("error", "密码修改成功");
                go("mod.jsp", request, response);
            }
        }

        dao.close();
        out.flush();
        out.close();
    }

    public void init() throws ServletException {
        // Put your code here
    }
}

安装部署需求

eclipse运行启动

系统部署

系统开发后,在生产环境配置项目运行环境,具体步骤如下:
安装linux或者windows10操作系统;
安装JDK1.8并配置环境变量;
安装MySQL5.7版本以上版本数据库,创建数据库并执行脚本创建表;
在eclipse中运行打包;

本项目用到的技术和框架

1.开发语言:Java
2.开发模式:B/S
3.数据库:MySQL5.7
4.框架:Servlet+JSP

本项目中的关键点

此系统的开发采用java语言开发,基于B/S结构,这些开发环境使系统更加完善。使用到的工具和技术都是开源免费的。

环境工具

开发工具 Eclipse
语言 JDK1.8 、Servlet+JDBC+JSP
硬件:笔记本电脑;
软件:Tomcat8.0 Web服务器、Navicat数据库客户端、MySQL;
操作系统:Windows 10;
其它软件:截图工具、常用浏览器;
以上是本系统的部分功能展示,如果你的选题正好相符,那么可以做毕业设计或课程设计使用。

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

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

相关文章

基于OCC+OSG集成框架下的GMSH之二阶网格划分探索

二阶网格相对于一阶网格&#xff0c;其计算节点数量更多&#xff0c;具体表现在一个一阶网格下的三角形中的每个边的中点构建一个点&#xff0c;对一阶三角形网格划分成四个三角形。gmsh提供了网格阶数设置&#xff0c;一般默认是一阶网格&#xff0c;本人根据gmsh文档&#xf…

To create the 45th Olympic logo by using CSS

You are required to create the 45th Olympic logo by using CSS. The logo is composed of five rings and three rectangles with rounded corners. The HTML code has been given. It is not allowed to add, edit, or delete any HTML elements. 私信完整源码 <!DOCT…

浅析Python数据处理的相关内容及要点

文章目录 前言一、Numpy1.Numpy属性2.Numpy创建3.Numpy运算4.Numpy索引5.Numpy其他 二、Pandas1.Pandas数据结构2.Pandas查看数据3.Pandas选择数据4.Pandas处理丢失数据5.Pandas合并数据6.Pandas导入导出 三、Matplotlib关于Python技术储备一、Python所有方向的学习路线二、Pyt…

单病种上报系统如何促进医院单病种质控管理

米软单病种上报系统自面市以来&#xff0c;一直以产品实力取胜&#xff0c;在助力医院实现病例数据快速、准确上报后&#xff0c;米软将自我优化重心投向了单病种医疗质量控制。 从填报过程监管&#xff0c;到结果分析、预警整改&#xff0c;米软重视质控的数据管理及应用。通过…

电机控制::理论分析::延迟环节对系统的影响

控制工程与理论 - 知乎 (zhihu.com) 浅论控制器的增益大小 (上) - 知乎 (zhihu.com) 浅论控制器的增益大小 (下) - 知乎 (zhihu.com) 延迟环节对控制系统的影响_延时环节的传递函数-CSDN博客

springboot 项目升级 2.7.16 踩坑

记录一下项目更新版本依赖踩坑 这个是项目最早的版本依赖 这里最初是最初是升级到 2.5.7 偷了个懒 这个版本的兼容性比较强 就选了这版本 也不用去修改就手动的去换了一下RabbitMQ的依赖 因为这边项目有AMQP 风险预警 1.spring-amqp版本低于2.4.17的用户应升级到2.4.17 2.spri…

C++ [继承]

本文已收录至《C语言和高级数据结构》专栏&#xff01; 作者&#xff1a;ARMCSKGT 继承 前言正文继承的概念及定义继承的概念继承的定义重定义 基类和派生类对象赋值转换派生类中的默认成员函数隐式调用显示调用 继承中的友元与静态成员友元静态成员 菱形继承概念 虚继承原理继…

C++|前言

c|前言 一、什么是C二、C发展史三、C的重要性3.1语言的使用广泛度3.2工作领域3.3校招领域 四、如何学习C4.1别人怎么学4.2自己怎么学 一、什么是C 在上回书已经学习了C语言&#xff0c;我们知道C语言是面向过程语言&#xff0c;C语言是结构化和模块化的语言&#xff0c;适合处理…

适合汽车音频系统的ADAU1977WBCPZ、ADAU1978WBCPZ、ADAU1979WBCPZ四通道 ADC,24-bit,音频

一、ADAU1977WBCPZ 集成诊断功能的四通道ADC&#xff0c;音频 24 b 192k IC&#xff0c;SPI 40LFCSP ADAU1977集成4个高性能模数转换器(ADC)&#xff0c;其直接耦合输入具有10 V rms性能。该ADC采用多位Σ-Δ架构&#xff0c;其连续时间前端能够实现低EMI性能。它可以直接连接…

vue3 开启 https

1、安装mkcert证书创建器 npm i mkcert -g 2、检验是否安装成功 mkcert --version 有版本好出现则成功 3、创建证书颁发机构 mkcert create-ca 会在当前目录生成&#xff0c;ca.crt 和 ca.key 两个文件 4、创建证书 mkcert create-cert 会在当前目录生成&#xff0c;…

ElementUI之el-progress动态修改进度条里面文本颜色与进度条色块统一

1.效果&#xff1a; 2.实现方式 通过行内style样式动态给整个progress赋颜色 再在样式里给进度条文字单独设置颜色为默认继承父级颜色就ok啦 <el-progress class"custom-progress" stroke-linecap"square" :style"{color:item.color}" :colo…

BAM(Bottleneck Attention Module)

BAM&#xff08;Bottleneck Attention Module&#xff09;是一种用于计算机视觉领域的深度学习模型结构&#xff0c;它旨在提高神经网络对图像的特征提取和感受野处理能力。BAM模块引入了通道注意力机制&#xff0c;能够自适应地加强或减弱不同通道的特征响应&#xff0c;从而提…

【斗破年番】彩鳞默认火火碰自己香肩,提其他女人,女王表示妒忌

Hello,小伙伴们&#xff0c;我是小郑继续为大家深度解析国漫资讯。 深度爆料&#xff0c;《斗破苍穹》年番国漫第69话最新剧情解析&#xff0c;主角萧炎来到了蛇人族的新部落。美杜莎是蛇人族的女王&#xff0c;她的威严和力量使她在族中拥有极高的地位。 在部落中&#xff0c…

通过创建自定义标签来扩展HTML

使用HTML时&#xff0c;例如&#xff0c;使用<b>标记显示粗体文本。 如果需要列表&#xff0c;则对每个列表项使用<ul>标记及其子标记<li> 。 标签由浏览器解释&#xff0c;并与CSS一起确定网页内容的显示方式以及部分内容的行为。 有时&#xff0c;仅使用一…

集合框架:Set集合的特点、HashSet集合的底层原理、哈希表、实现去重复

Set集合的特点 Set&#xff08;集合&#xff09;是一种无序的、不重复的数据结构&#xff0c;它的特点如下&#xff1a; 1. 集合中的元素是无序的&#xff1a;Set 中的元素没有顺序&#xff0c;无法通过索引来访问。 2. 集合中的元素是唯一的&#xff1a;Set 中不允许有重复…

SQL必知会(二)-SQL查询篇(1)-检索数据

第2课、检索数据 SELECT&#xff1a;查询 从一个或多个表中检索信息。 1&#xff09;检索单个列 需求&#xff1a;从 Products 表中查询所有行的产品名称。 SElECT prod_name FROM Products;输出结果&#xff1a; 2&#xff09;检索多个列 需求&#xff1a;从 Products 表…

Msa类处理多序列比对数据

同源搜索&#xff0c;多序列比对等都是常用的方式&#xff0c;但是有很多的软件可以实现这些同源搜索和多序列比对&#xff0c;但是不同的软件输出的文件格式却是不完全一致&#xff0c;有熟悉的FASTA格式的&#xff0c;也有A2M, A3M,stockholm等格式。 详细介绍&#xff1a; …

算法进阶指南图论 通信线路

通信线路 思路&#xff1a;我们考虑需要升级的那条电缆的花费&#xff0c;若其花费为 w &#xff0c;那么从 1 到 n 的路径上&#xff0c;至多存在 k 条路径的价值大于 w &#xff0c;这具有一定的单调性&#xff0c;当花费 w 越大&#xff0c;我们路径上价值大于 w 的花费会越…

Spring笔记(一)(黑马)(Ioc基础容器)

01、传统Javaweb开发的困惑 1.1 传统Javaweb开发困惑及解决方案 &#x1f616;问题一&#xff1a;层与层之间紧密耦合在了一起&#xff0c;接口与具体实现紧密耦合在了一起 解决思路&#xff1a;程序代码中不要手动new对象&#xff0c;第三方根据要求为程序提供需要的Bean对象…

SQL Server SSIS的安装

标题SQL SERVER 安装 下载SQL SERVER数据库&#xff1a;&#xff08;以SQL SERVER 2022 Developer版本&#xff09;(https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads?rtc1) 以administrator权限安装&#xff1a; 下载完成后&#xff0c;会出现以下界面&a…