基于JavaWeb实现智慧菜市场系统的设计与实现程序

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 基于JavaWeb实现智慧菜市场系统的设计与实现程序

项目编号:BS-SC-056

一,环境介绍

语言环境:Java:  jdk1.8

数据库:Mysql: mysql5.7

应用服务器:Tomcat:  tomcat8.5.31

开发工具:IDEA或eclipse

开发技术:JavaWeb开发技术(JSP,SERVLET,JDBC)

二,项目简介

本项目基于JavaWeb技术开发实现一个智慧菜市场系统。主要完成对菜市场的摊位展示和管理,商品展示和管理,相关通知通告,在线留言,在线购物等相关操作。系统用户包含前端注册用户和后台管理用户。管理用户主要实现用户管理、难位管理、商品分类管理、商品管理、公告管理、订单管理、轮播图管理、友情连接管理等。前端用户可以在线浏览菜市场摊位信息,摊位所经营的产品信息,在线添加购物车,在线购买生成订单,浏览公告信息等等。

三,系统展示

前台页面展示

商品信息查询

摊位信息展示

公告 信息展示

在线留言展示

用户注册

后台管理员管理功能

管理员管理

注册用户管理

农户管理

摊位管理

商品管理

订单管理

公告管理

系统管理

四,核心代码展示

package dao;
import com.jntoo.db.utils.StringUtil;
import java.sql.*;
import java.util.*;
import javax.servlet.http.HttpServletRequest;
import util.Info;
/**
 * 数据库连接类
 */
public class CommDAO {
    // 数据库名称
    public static final String database = "jspm12545zhcscxtdsjysx";
    // 数据库账号
    public static final String username = "root";
    // 数据库密码
    public static final String pwd = "root";
    // 是否为 mysql8.0及以上、如果是则把 false 改成 true
    public static final boolean isMysql8 = false; // 是否为mysql8
    public static Connection conn = null;
    /**
     * 创建类时即连接数据库
     */
    public CommDAO() {
        conn = this.getConn();
    }
    /**
     * 数据库链接类
     * @return
     */
    public static Connection getConn() {
        try {
            if (conn == null || conn.isClosed()) {
                String connstr = getConnectString();
                conn = DriverManager.getConnection(connstr, username, pwd);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return conn;
    }
    public static String getConnectString() {
        try {
            String connstr;
            if (!isMysql8) {
                Class.forName("com.mysql.jdbc.Driver");
                connstr = String.format("jdbc:mysql://localhost:3306/%s?useUnicode=true&characterEncoding=UTF-8&useOldAliasMetadataBehavior=true", database);
            } else {
                Class.forName("com.mysql.cj.jdbc.Driver");
                connstr =
                    String.format(
                        "jdbc:mysql://localhost:3306/%s?useUnicode=true&characterEncoding=UTF-8&useSSL=FALSE&serverTimezone=UTC&useOldAliasMetadataBehavior=true",
                        database
                    );
            }
            return connstr;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return "";
    }
    /**
     * 根据表ID 获取数据
     * @param id   数值
     * @param table 表名称
     * @return
     */
    public HashMap getmap(String id, String table) {
        List<HashMap> list = new ArrayList();
        try {
            Statement st = conn.createStatement();
            //System.out.println("select * from "+table+" where id="+id);
            ResultSet rs = st.executeQuery("select * from " + table + " where id=" + id);
            ResultSetMetaData rsmd = rs.getMetaData();
            while (rs.next()) {
                HashMap map = new HashMap();
                int i = rsmd.getColumnCount();
                for (int j = 1; j <= i; j++) {
                    if (!rsmd.getColumnName(j).equals("ID")) {
                        String str = rs.getString(j) == null ? "" : rs.getString(j);
                        if (str.equals("null")) str = "";
                        map.put(rsmd.getColumnName(j), str);
                    } else map.put("id", rs.getString(j));
                }
                list.add(map);
            }
            rs.close();
            st.close();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return list.get(0);
    }
    /**
     * 根据sql 语句获取一行数据
     * @param sql
     * @return
     */
    public HashMap find(String sql) {
        HashMap map = new HashMap();
        //List<HashMap> list = new ArrayList();
        try {
            Statement st = conn.createStatement();
            System.out.println(sql);
            ResultSet rs = st.executeQuery(sql);
            ResultSetMetaData rsmd = rs.getMetaData();
            while (rs.next()) {
                //HashMap map = new HashMap();
                int i = rsmd.getColumnCount();
                for (int j = 1; j <= i; j++) {
                    if (!rsmd.getColumnName(j).equals("ID")) {
                        String str = rs.getString(j) == null ? "" : rs.getString(j);
                        if (str.equals("null")) str = "";
                        map.put(rsmd.getColumnName(j), str);
                    } else map.put("id", rs.getString(j));
                }
                //list.add(map);
                break;
            }
            rs.close();
            st.close();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            //e.printStackTrace();
            int code = e.getErrorCode();
            String message = e.getMessage();
            System.err.println("SQL execute Error");
            System.err.println("code:" + code);
            System.err.println("Message:" + message);
        }
        return map;
    }
    /**
     * 根据某字段的值获取一行数据
     * @param nzd  字段名称
     * @param zdz  条件值
     * @param table  表
     * @return
     */
    public HashMap getmaps(String nzd, String zdz, String table) {
        List<HashMap> list = new ArrayList();
        try {
            Statement st = conn.createStatement();
            //System.out.println("select * from "+table+" where "+nzd+"='"+zdz+"'");
            ResultSet rs = st.executeQuery("select * from " + table + " where " + nzd + "='" + zdz + "'");
            ResultSetMetaData rsmd = rs.getMetaData();
            while (rs.next()) {
                HashMap map = new HashMap();
                int i = rsmd.getColumnCount();
                for (int j = 1; j <= i; j++) {
                    if (!rsmd.getColumnName(j).equals("ID")) {
                        String str = rs.getString(j) == null ? "" : rs.getString(j);
                        if (str.equals("null")) str = "";
                        map.put(rsmd.getColumnName(j), str);
                    } else map.put("id", rs.getString(j));
                }
                list.add(map);
            }
            rs.close();
            st.close();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return list.get(0);
    }
    /**
     * 获取前台提交的数据将数据写成Map<String , String> 形式,方便写入数据库
     * @param request
     * @return 返回值类型为Map<String, String>
     */
    public static HashMap getParameterStringMap(HttpServletRequest request) {
        Map<String, String[]> properties = request.getParameterMap(); //把请求参数封装到Map<String, String[]>中
        HashMap returnMap = new HashMap<String, String>();
        String name = "";
        String value = "";
        for (Map.Entry<String, String[]> entry : properties.entrySet()) {
            name = entry.getKey();
            String[] values = entry.getValue();
            if (null == values) {
                value = "";
            } else {
                value = StringUtil.join(",", values); //用于请求参数中请求参数名唯一
            }
            returnMap.put(name, value);
        }
        return returnMap;
    }
    /**
     * 插入数据库
     * @param request
     * @param tablename
     * @param extmap
     * @return
     */
    public String insert(HttpServletRequest request, String tablename, HashMap extmap) {
        extmap.put("addtime", Info.getDateStr()); // 设置添加时间为当前时间
        Query query = new Query(tablename); // 新建查询模块
        HashMap post = getParameterStringMap(request); // 获取前台提交的数据将数据写成Map对象
        post.putAll(extmap); //  扩展的数据以覆盖方式写到提交的数据中
        return query.add(post); // 将数据生成sql insert语句,并执行,可以查看输出控制台中执行的SQL语句
    }
    /**
     * 删除数据
     * @param request
     * @param tablename 表名称
     */
    public void delete(HttpServletRequest request, String tablename) {
        int i = 0;
        try {
            String did = request.getParameter("did");
            if (did == null) did = request.getParameter("scid");
            if (did == null) did = request.getParameter("id");
            if (did != null) {
                if (did.length() > 0) {
                    Statement st = conn.createStatement();
                    System.out.println("delete from " + tablename + " where id=" + did);
                    st.execute("delete from " + tablename + " where id=" + did);
                    st.close();
                }
            }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            //e.printStackTrace();
            int code = e.getErrorCode();
            String message = e.getMessage();
            System.err.println("SQL execute Error");
            System.err.println("code:" + code);
            System.err.println("Message:" + message);
        }
    }
    /**
     * 获取某表一列数据
     * @param table
     * @return
     */
    public String getCols(String table) {
        String str = "";
        Connection conn = this.getConn();
        try {
            Statement st = conn.createStatement();
            ResultSet rs = st.executeQuery("select * from " + table);
            ResultSetMetaData rsmd = rs.getMetaData();
            int i = rsmd.getColumnCount();
            for (int j = 2; j <= i; j++) {
                str += rsmd.getColumnName(j) + ",";
            }
        } catch (SQLException e) {
            int code = e.getErrorCode();
            String message = e.getMessage();
            System.err.println("SQL execute Error");
            System.err.println("code:" + code);
            System.err.println("Message:" + message);
            //e.printStackTrace();
        }
        str = str.substring(0, str.length() - 1);
        return str;
    }
    /**
     * 更新数据
     * @param request
     * @param tablename
     * @param extmap
     * @return
     */
    public String update(HttpServletRequest request, String tablename, HashMap extmap) {
        Query query = new Query(tablename);
        HashMap post = getParameterStringMap(request);
        post.putAll(extmap);
        if (query.save(post)) {
            return String.valueOf(post.get("id"));
        }
        return "";
    }
    /**
     * 执行sql 语句
     * @param sql
     * @return
     */
    public long commOper(String sql) {
        System.out.println(sql);
        long autoInsertId = -1;
        try {
            Statement st = conn.createStatement();
            st.executeUpdate(sql, Statement.RETURN_GENERATED_KEYS);
            ResultSet rs = st.getGeneratedKeys();
            while (rs.next()) {
                autoInsertId = rs.getLong(1);
            }
            rs.close();
            st.close();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            //e.printStackTrace();
            int code = e.getErrorCode();
            String message = e.getMessage();
            System.err.println("SQL execute Error");
            System.err.println("code:" + code);
            System.err.println("Message:" + message);
        }
        return autoInsertId;
    }
    /**
     * 执行多条SQL语句
     * @param sql
     */
    public void commOperSqls(ArrayList<String> sql) {
        try {
            conn.setAutoCommit(false);
            for (int i = 0; i < sql.size(); i++) {
                Statement st = conn.createStatement();
                System.out.println(sql.get(i));
                st.execute(sql.get(i));
                st.close();
            }
            conn.commit();
        } catch (SQLException e) {
            try {
                conn.rollback();
            } catch (SQLException e1) {
                //e1.printStackTrace();
                int code = e1.getErrorCode();
                String message = e1.getMessage();
                System.err.println("SQL execute Error");
                System.err.println("code:" + code);
                System.err.println("Message:" + message);
            }
            e.printStackTrace();
        } finally {
            try {
                conn.setAutoCommit(true);
            } catch (SQLException e) {
                int code = e.getErrorCode();
                String message = e.getMessage();
                System.err.println("SQL execute Error");
                System.err.println("code:" + code);
                System.err.println("Message:" + message);
                //e.printStackTrace();
            }
        }
    }
    /**
     * 根据SQL语句获取数据行
     * @param sql
     * @return
     */
    public List select(String sql) {
        System.out.println(sql);
        List<HashMap> list = new ArrayList();
        try {
            Statement st = conn.createStatement();
            ResultSet rs = st.executeQuery(sql);
            ResultSetMetaData rsmd = rs.getMetaData();
            while (rs.next()) {
                HashMap map = new HashMap();
                int i = rsmd.getColumnCount();
                for (int j = 1; j <= i; j++) {
                    if (!rsmd.getColumnName(j).equals("ID")) {
                        String str = rs.getString(j) == null ? "" : rs.getString(j);
                        if (str.equals("null")) str = "";
                        map.put(rsmd.getColumnName(j), str);
                    } else map.put("id", rs.getString(j));
                }
                list.add(map);
            }
            rs.close();
            st.close();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            if (sql.equals("show tables")) list = select("select table_name from   INFORMATION_SCHEMA.tables"); else {
                int code = e.getErrorCode();
                String message = e.getMessage();
                System.err.println("SQL execute Error");
                System.err.println("code:" + code);
                System.err.println("Message:" + message);
            }
            //e.printStackTrace();
        }
        return list;
    }
    public void close() {}
    /**
     * 执行一条查询sql,以 List<hashmap> 的形式返回查询的记录,记录条数,和从第几条开始,由参数决定,主要用于翻页
     * pageno 页码  rowsize 每页的条数
     */
    public List select(String sql, int pageno, int rowsize) {
        List<HashMap> list = new ArrayList();
        List<HashMap> mlist = new ArrayList();
        try {
            list = this.select(sql);
            int min = (pageno - 1) * rowsize;
            int max = pageno * rowsize;
            for (int i = 0; i < list.size(); i++) {
                if (!(i < min || i > (max - 1))) {
                    mlist.add(list.get(i));
                }
            }
        } catch (RuntimeException re) {
            re.printStackTrace();
            throw re;
        }
        return mlist;
    }
    public static void main(String[] args) {}
}

五,相关作品展示

基于Java开发、Python开发、PHP开发、C#开发等相关语言开发的实战项目

基于Nodejs、Vue等前端技术开发的前端实战项目

基于微信小程序和安卓APP应用开发的相关作品

基于51单片机等嵌入式物联网开发应用

基于各类算法实现的AI智能应用

基于大数据实现的各类数据管理和推荐系统


相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
1月前
|
消息中间件 Java Kafka
Java 事件驱动架构设计实战与 Kafka 生态系统组件实操全流程指南
本指南详解Java事件驱动架构与Kafka生态实操,涵盖环境搭建、事件模型定义、生产者与消费者实现、事件测试及高级特性,助你快速构建高可扩展分布式系统。
144 7
|
2月前
|
存储 Java 数据库连接
java 初学者必看的系统知识结构图详解
本文详解Java知识结构图,涵盖Java语言基础、JVM原理、集合框架、并发编程、网络通信及主流框架(如Spring Boot、MyBatis),并结合学生信息管理系统实例,帮助初学者构建完整知识体系,提升实战开发能力。
76 0
|
1月前
|
安全 Oracle Java
JAVA高级开发必备·卓伊凡详细JDK、JRE、JVM与Java生态深度解析-形象比喻系统理解-优雅草卓伊凡
JAVA高级开发必备·卓伊凡详细JDK、JRE、JVM与Java生态深度解析-形象比喻系统理解-优雅草卓伊凡
154 0
JAVA高级开发必备·卓伊凡详细JDK、JRE、JVM与Java生态深度解析-形象比喻系统理解-优雅草卓伊凡
|
3月前
|
NoSQL Java Shell
2025服务端java搭建篇:蜻蜓I即时通讯系统私有化部署深度指南-优雅草卓伊凡|麻子|贝贝
2025服务端java搭建篇:蜻蜓I即时通讯系统私有化部署深度指南-优雅草卓伊凡|麻子|贝贝
141 8
2025服务端java搭建篇:蜻蜓I即时通讯系统私有化部署深度指南-优雅草卓伊凡|麻子|贝贝
|
4月前
|
JavaScript Java 关系型数据库
家政系统源码,java版本
这是一款基于SpringBoot后端框架、MySQL数据库及Uniapp移动端开发的家政预约上门服务系统。
146 6
家政系统源码,java版本
|
3月前
|
NoSQL Java Redis
推荐一款好用的开源免费Java CMS内容管理站群系统
Java开源内容管理系统(JProcms),基于SpringCloud、SpringBoot、MyBatisPlus、Vue3等技术构建,采用Apache-2.0协议,支持免费商用。系统具备自定义字段存储与可视化设计、API制作网站群页面等功能,强调简单灵活的设计理念,降低二次开发成本。支持多种数据库、消息队列和认证方式,提供SaaS多租户、动态权限菜单、工作流配置等强大功能,同时集成阿里云、腾讯云服务,适用于高效建站与内容管理。
647 4
|
2月前
|
存储 Java 关系型数据库
Java Swing 开发的五星级酒店客房预订与管理系统源码
本文介绍了基于Java Swing的酒店管理系统开发方案。系统采用Java Swing构建GUI界面,结合MySQL数据库,实现预订管理、前台服务、客房管理、客户关系维护等功能模块。文章详细展示了登录界面、开房操作等核心功能的代码实现,包括数据验证和业务逻辑处理。该系统具有跨平台性,能有效提升酒店运营效率,为开发者提供GUI设计和数据库开发的实践案例。技术方案涵盖IntelliJ IDEA开发环境、Jform Designer插件辅助设计等工具链,适合中小型酒店管理需求。
129 0
|
3月前
|
Java 调度 流计算
基于Java 17 + Spring Boot 3.2 + Flink 1.18的智慧实验室管理系统核心代码
这是一套基于Java 17、Spring Boot 3.2和Flink 1.18开发的智慧实验室管理系统核心代码。系统涵盖多协议设备接入(支持OPC UA、MQTT等12种工业协议)、实时异常检测(Flink流处理引擎实现设备状态监控)、强化学习调度(Q-Learning算法优化资源分配)、三维可视化(JavaFX与WebGL渲染实验室空间)、微服务架构(Spring Cloud构建分布式体系)及数据湖建设(Spark构建实验室数据仓库)。实际应用中,该系统显著提升了设备调度效率(响应时间从46分钟降至9秒)、设备利用率(从41%提升至89%),并大幅减少实验准备时间和维护成本。
240 0
|
3月前
|
监控 安全 Java
现代 Java 技术开发宠物管理系统实操案例解析
本文通过一个宠物管理系统项目,深入讲解Java中的封装、继承和多态特性。系统基于Java 8+开发,结合Stream API与Lambda表达式,展示现代Java技术的实际应用。封装部分使用Record类简化数据模型,继承设计通过抽象类与接口实现代码复用,多态则通过统一接口处理不同宠物行为。案例涵盖模板方法模式、策略模式等设计思想,并提供最佳实践建议,解决常见问题如继承滥用和类型转换异常。资源地址:[https://pan.quark.cn/s/14fcf913bae6](https://pan.quark.cn/s/14fcf913bae6)。
100 0
|
传感器 分布式计算 安全
Java 大视界 -- Java 大数据在智能安防入侵检测系统中的多源数据融合与分析技术(171)
本文围绕 Java 大数据在智能安防入侵检测系统中的应用展开,剖析系统现状与挑战,阐释多源数据融合及分析技术,结合案例与代码给出实操方案,提升入侵检测效能。

热门文章

最新文章