基于座位预约管理系统的设计与实现

news2024/11/14 18:14:16

前言:
各位小伙伴儿们端午节快乐,本篇文章为大家带来一份基于ssm技术搭建的项目,正在学习这块技术的童靴们可以体验一下哦,在资源中可获取源码 ~
在这里插入图片描述
以下正文开始:

文章目录

  • 需求分析
  • 功能模块
  • 项目架构图
  • 首页部分
  • Controller层
  • Service层
  • Mapper层

需求分析

随着社会的进步,信息化已成为整个社会发展的趋势。基于ssm的座位预约管理系统不仅具有传统管理系统的大部分功能,而且能够满足管理员的常规与特殊需求,而且操作快捷,实现技术又比较成熟,因此受到人们的喜爱。座位预约系统是具有统计,管理用户和各种座位预约相关信息的功能,方便管理人员对于图书馆和自习室座位的统一管理的系统。管理员可以在该系统上对座位进行具体操作管理,座位用户群体很大,有条理的记录座位预约的信息就能让系统在当下的座位预约管理中更加突出,因此本系统提供了多个管理员对座位信息进行管理操作的具体要求。

功能模块

本预约座位管理系统为管理者提供了一个非常方便快捷的平台。管理者可以登录本系统进行用户信息的查找以及座位预约业务的办理。
系统应该实现的功能如下:

  1. 登录模块:需要输入用户的用户名和密码,进入系统。
  2. 系统设置模块:
    (1)用户管理:该模块可以提供给管理者用户列表,用户详细信息,并对用户的信息进行增加、查找、修改、删除等操作。
    (2)座位管理:该模块可以提供给管理员座位列表,座位详细信息,并对座位的信息进行增加、查找、修改、删除等操作
    (3)预约管理:该模块可以提供给管理员增加预约座位订单,查询用户使用座位的情况和详细信息,删除预约订单等操作。
    (4).修改密码设置:进行用户登陆密码的修改。

项目架构图

座位预约系统的功能模块分为四个大的部分,系统的使用对象包括系统管理员,教师,学生三重身份,首先进行身份验证,相应管理进入系统后,系统管理员登录系统后可以管理学生的信息,管理教师的信息,管理类每学期各个班级的必修课程信息,各个课程的教师信息,各个课程的学生信息;而教师登录系统可以查询自己所授课程信息;学生用户登录系统后可以进行选课,以及查看课程信息等等。系统的功能模块图如下图所示。

在这里插入图片描述

首页部分

以下是登录的首页部分,可以进行登录功能,源码如下:
在这里插入图片描述

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%--
    格式化的标签库
--%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ page language="java" contentType="text/html; charset=UTF-8"
         pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title>座位预约管理系统</title>
    <link rel="stylesheet" href="${pageContext.request.contextPath}/static/css/public.css"/>
    <link rel="stylesheet" href="${pageContext.request.contextPath}/static/css/style.css"/>
</head>
<body>
<!--头部-->
<header class="publicHeader">
    <h1>座位预约管理系统</h1>

    <div class="publicHeaderR">
        <p><span>下午好!</span><span style="color: #fff21b"> ${loginUser.username}</span> , 欢迎你!</p>
        <a href="${pageContext.request.contextPath}/toLogin">退出</a>
    </div>
</header>
<!--时间-->
<section class="publicTime">
    <span id="time">2028年1月1日 11:11  星期一</span>
    <a href="#">温馨提示:为了能正常浏览,请使用高版本浏览器!(IE10+)</a>
</section>
<!--主体内容-->
<section class="publicMian">
    <div class="left">
        <h2 class="leftH2"><span class="span1"></span>功能列表 <span></span></h2>
        <nav>
            <ul class="list">
                <li ><a href="${pageContext.request.contextPath}/bill/list">预约管理</a></li>
                <li><a href="${pageContext.request.contextPath}/provider/list">座位管理</a></li>
                <li><a href="${pageContext.request.contextPath}/user/list">用户管理</a></li>
                <li><a href="${pageContext.request.contextPath}/user/toUpdatePwd">密码修改</a></li>
                <li><a href="${pageContext.request.contextPath}/toLogin">退出系统</a></li>
            </ul>
        </nav>
    </div>
    <div class="right">
        <div class="location">
            <strong>你现在所在的位置是:</strong>
            <span>用户管理页面 >> 用户信息查看页面</span>
        </div>
        <div class="providerView">
            <p><strong>用户名:</strong><span>${user.username}</span></p>
            <p><strong>真实姓名:</strong><span>${user.realName}</span></p>
            <p>
                <strong>用户性别:</strong>
                <span>
                    <c:if test="${user.gender == 1}"></c:if>
                    <c:if test="${user.gender == 2}"></c:if>
                </span>
            </p>
            <p><strong>出生日期:</strong>
                <span>
                <fmt:formatDate value="${user.birthday}" pattern="yyyy-MM-dd"></fmt:formatDate>
                </span>
            </p>
            <p><strong>用户类别:</strong>
                <span>
                    <c:if test="${user.userType == 1}">管理员</c:if>
                    <c:if test="${user.userType == 2}">经理</c:if>
                    <c:if test="${user.userType == 3}">普通用户</c:if>
                </span>
            </p>
            <a onclick="history.back(-1)" href="#">返回</a>
        </div>
    </div>
</section>
<footer class="footer"><div style="text-align:center;">	<p><a href="http://#/" target="_blank">Bill #</a> 版权所有</p></div></footer>

<script src="js/time.js"></script>


</body>
</html>

Controller层

在这里插入图片描述

controller层主要调用service层的服务来完成增删改查url的访问与映射,部分详细代码如下:

package com.rg.controller;

import com.rg.entity.Bill;
import com.rg.entity.Provider;
import com.rg.entity.User;
import com.rg.service.BillService;
import com.rg.service.ProviderService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

import java.util.List;mapper

@Controller
@RequestMapping("/bill")
public class BillController {

    @Autowired
    BillService billService;

    @Autowired
    ProviderService providerService;

    @RequestMapping("/list")
    public String billList(Model model){
        //bill列表
        List<Bill> billList = billService.billList();
        //供应商的列表
        List<Provider> providerList = providerService.providerList();

        model.addAttribute("providerList",providerList);
        model.addAttribute("billList",billList);
        return "bill/list";
    }

    //条件查询
    @RequestMapping("/queryBill")
    public String queryBill(Bill bill,Model model){
        System.out.println("=================================");
        System.out.println("bill = " + bill);

        //bill列表
        List<Bill> billList = billService.queryBill(bill);

        //供应商的列表
        List<Provider> providerList = providerService.providerList();

        //条件回显
        model.addAttribute("bill",bill);

        model.addAttribute("providerList",providerList);
        model.addAttribute("billList",billList);
        return "bill/list";
    }

    //findBillById

    //findBillById
    @RequestMapping("/findBillById")
    public String findBillById(int bid,Model model,String type){
        //查询数据库
        Bill bill = billService.findBillById(bid);

        //供应商的列表
        List<Provider> providerList = providerService.providerList();
        model.addAttribute("providerList",providerList);

        model.addAttribute("bill",bill);

        if("view".equals(type)){
            return "bill/view";
        }
        return "bill/update";
    }

    //更新操作
    @RequestMapping("/updateBill")
    public String updateBill(Bill Bill,Model model){

        int row = billService.updateBill( Bill);
        if(row == 1){
            //更新成功重定向到list页面
            return "redirect:list";
        }
        model.addAttribute("errorMsg","更新失败");
        return "bill/update";
    }
    /*
     * 跳转到添加页面
     * */
    @RequestMapping("/toAddBill")

    public String toAddBill(Model model){
        List<Provider> providerList = providerService.providerList();
        model.addAttribute("providerList",providerList);
        return "bill/add";
    }

    /*
     * 添加预约
     * */
    @RequestMapping("/addBill")
    public String addBill(Bill bill, Model model){
        int row = billService.addBill(bill);

        if(row==1){
            //插入成功 重定向到list页面,
            // 相对路径 当前路径 /user/addUser  list路径为 /user/list
            return "redirect:list";
        }
        //添加失败 重新回到添加页面
        model.addAttribute("errorMsg","添加失败!!!");
        return "bill/add";
    }

    //删除操作
    @RequestMapping("/deleteBillById")
    public String deleteBillById(int bid,Model model){
        int row = billService.deleteBillById( bid);
        return "redirect:list";
    }

}

Service层

在这里插入图片描述

Service层主要对应和调用mapper层的方法,部分源码如下:

@Service
public class BillService {

    @Autowired
    BillMapper billMapper;

    public List<Bill> billList() {
        return billMapper.billList();
    }

    public List<Bill> queryBill(Bill bill) {
        return billMapper.queryBill(bill);
    }

    public Bill findBillById(int bid) {
        return billMapper.findBillById(bid);
    }

    public int addBill(Bill bill) {
        return billMapper.addBill(bill);
    }

    public int updateBill(Bill bill) {
        return billMapper.updateBill(bill);
    }

    public int deleteBillById(int bid) {
        return billMapper.deleteBillById(bid);
    }
}

Mapper层

在这里插入图片描述

Mapper层主要用于和数据库进行交互,以及编写对应的SQL语句等,部分源码如下:

public interface BillMapper {
    List<Bill> billList();

    List<Bill> queryBill(Bill bill);

    Bill findBillById(int bid);

    int addBill(Bill bill);

    int updateBill(Bill bill);

    int deleteBillById(int bid);
}
<mapper namespace="com.rg.mapper.BillMapper">

    <resultMap id="billProviderMap" type="bill">
        <id property="bid" column="bid"></id>
        <result property="billCode" column="bill_code"></result>
        <result property="billName" column="bill_name"></result>
        <result property="billCom" column="bill_com"></result>
        <result property="billNum" column="bill_num"></result>
        <result property="money" column="money"></result>
        <result property="pay" column="pay"></result>
        <result property="createDate" column="create_date"></result>
        <!--
            一对一关系的标签:
        -->
        <association property="provider" javaType="Provider">
            <id property="pid" column="pid"></id>
            <result property="providerName" column="providerName"></result>
        </association>
    </resultMap>
    <select id="billList" resultMap="billProviderMap">
        select bill.*,provider.providerName
        from bill,provider
        where bill.pid = provider.pid
    </select>

    <!--条件查询-->
    <select id="queryBill" resultMap="billProviderMap" parameterType="bill">
        select bill.*,provider.providerName
        from bill,provider
        where bill.pid = provider.pid
        <if test="billName != null and billName !='' ">
            and  bill_name like '%${billName}%'
        </if>

        <if test="provider != null and provider.pid !=null and provider.pid !=''">
            and  provider.pid = #{provider.pid}
        </if>
        <if test=" pay!= 3">
            and  pay = #{pay}
        </if>
    </select>

    <!--通过id查询-->
    <select id="findBillById" resultMap="billProviderMap" >
        select bill.*,provider.providerName
        from bill,provider
        where bill.pid = provider.pid and bid =#{bid}
    </select>
    <!--
            添加预约
        -->
    <insert id="addBill" parameterType="bill">
        INSERT INTO `bill` ( `bill_code`, `bill_name`, `bill_com`, `bill_num`, `money`, `pay`,`pid`)
        VALUES (#{billCode}, #{billName}, #{billCom}, #{billNum}, #{money}, #{pay},#{provider.pid})
    </insert>
    <!--更新-->
    <update id="updateBill" parameterType="bill">
        UPDATE `bill`
        SET  `bill_code`=#{billCode}, `bill_name`=#{billName},
             `bill_com`=#{billCom}, `bill_num`=#{billNum}, `money`=#{money},
              `pay`=#{pay}, `pid`= #{provider.pid}
        WHERE bid=#{bid};
    </update>

    <!--删除-->
    <delete id="deleteBillById">
        delete from bill where bid = #{bid}
    </delete>

</mapper>

同时,管理员还拥有修改用户管理部分的权限:
在这里插入图片描述
文章到这里就先结束了,感兴趣的大佬可以下载资源尝试学习哦,后续会继续分享相关的知识点。

在这里插入图片描述

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

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

相关文章

存储笔记 - 整理

文章目录 第一章 存储系统introlesson 1何为数据&#xff1f;类型与关系 lesson 2 存储系统环境lesson 1lesson 2 Disk Drive 数据保护 RAIDlesson 1 智能存储lesson 第二章 存储网络技术与虚拟化DAS 直连式存储与 SCSIlesson 直连存储lesson&#xff1a; SCSI简介summary SANl…

长尾关键词有什么作用?要怎么用?

长尾关键词很多的网站都会忽略其存在&#xff0c;其实你不要小看长尾关键词&#xff0c;他将带给网站的流量也是极其可观的&#xff0c;所说比不上那些重点关键词的流量&#xff0c;但是对提升网站的权重还是有着重要的作用。 长尾关键词有什么用&#xff1f;长尾关键词的3…

基于spss的多元统计分析 之 因子分析(4/8)

实验目的&#xff1a; 1&#xff0e;掌握因子分析的基本思想&#xff1b; 2&#xff0e;熟悉掌握SPSS软件进行因子分析的基本操作&#xff1b; 3&#xff0e;利用实验指导的实例数据&#xff0c;上机熟悉因子分析方法。 实验内容&#xff1a; 附表的数据来自一次对液晶电视的调…

English Learning - L3 作业打卡 Lesson7 Day48 2023.6.21 周三

English Learning - L3 作业打卡 Lesson7 Day48 2023.6.21 周三 引言&#x1f349;句1: I thought the worst was over until weeks later when I saw my new legs for the first time.成分划分弱读连读爆破语调 &#x1f349;句2: I didn’t know what to expect but I wasn‘…

【C++】 Qt-认识Qt

文章目录 Qt简介Qt建立工程准备建立控制台程序建立桌面窗口程序 Qt简介 Qt&#xff08;官方发音[kju:t]&#xff0c;同音cute&#xff09;是一个跨平台的C开发库&#xff0c;主要用来开发图形用户界面&#xff08;Graphical User Interface&#xff0c;GUI&#xff09;程序&am…

Android之 日历单选多选控件

一&#xff0c;效果图 1.1 单选 2.2 多选 二 实现思路 2.1 数据来源&#xff0c;利用原生日历Calendar&#xff0c;获取从本月开始的往后一年的日期&#xff0c;遍历月数添加全部天数据 private void initCalendarData() {Calendar calendar Calendar.getInstance();year …

Chrome(Manifest Version 3) 浏览器扩展插件基础教程

文章目录 一、简介二、核心介绍三、自定义页面背景色三、设置页面背景图&#xff08;web_accessible_resources&#xff09;四、设置徽章&#xff08;Badge&#xff09;五、桌面通知六、消息通信七、自定义右键菜单&#xff08;添加、更新、删除&#xff09;八、Omnibox九、浏览…

网安笔记--整合

文章目录 1 intro威胁因素 2 加密密码体制分类安全性 3 DESDES工作模式多重DES和安全性加密策略 4 RSA PKCS保密系统体制分类单向函数用处 RSAElgamal 5 SHAHASHSHA-1SHA-2 6 数字签名基本概念签名体系MAC 消息认证码 7 密码协议协议距离协议分类密钥建立协议认证建立协议认证的…

云原生监控平台 Prometheus 的相关概念及部署

1 Prometheus简介 Prometheus 是一个开源的系统监控和报警系统&#xff0c;在 2012 年由 SoundCloud 公司创建&#xff0c;并于 2015 年正式发布。2016 年&#xff0c;Prometheus 正式加入 CNCF (Cloud Native Computing Foundation)&#xff0c;成为继kubernetes之后第二个在C…

Redis---集群

目录 一、集群的介绍 1.1 为什么需要集群呢&#xff1f; 1.2 什么是集群&#xff1f; 1.2 集群能干什么呢&#xff1f; 二、集群的算法之分片&槽位slot 2.1 什么是槽位slot&#xff1f; 2.2 分片 2.3 使用槽位和分片的优势 2.4 slot 槽位映射的三种算法 1、哈…

postgresql 从应用角度看快照snapshot使用,事务隔离控制不再神密

​专栏内容&#xff1a;postgresql内核源码分析 个人主页&#xff1a;我的主页 座右铭&#xff1a;天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物. 快照使用 快照是事务中使用&#xff0c;配合事务的隔离级别&#xff0c;体现出不同的可见性。…

端午节粽子(python)

目录 前言 正文 粽叶绘制 粽叶绳绘制 祝福语绘制 源代码 总结 前言 今天端午节&#xff0c;然后昨天也学习一下绘图的相关知识&#xff0c;然后就想看一下能不能画一下&#xff0c;结果还是有点困难的&#xff0c;用CharAI生成简直一言难尽了。后面是找了一个改了一下。 …

MicroBlaze Processor hello world实验

MicroBlaze Processor hello world实验 实验目的 搭建microblaze工程&#xff0c;通过串口打印hello world&#xff0c;了解microblaze的使用&#xff0c;加深对FPGA硬件和软件开发的理解。 实验原理 MicroBlaze Processor是xilinx提供的一个软核处理器&#xff08;使用FPGA…

Delta型腿机器狗全动作展示

1. 功能说明 本文示例将实现R322样机Delta型腿机器狗维持身体平衡、原地圆形摆动、原地踏步、蹲起、站立、前进、后退、转向、横向移动、斜向移动等功能。 2. 电子硬件 本实验中采用了以下硬件&#xff1a; 主控板 Basra主控板&#xff08;兼容Arduino Uno&#xff09;‍ 扩展…

追寻技术巅峰:开发者的端午征途

近年来&#xff0c;随着信息技术的飞速发展&#xff0c;开发者们以前所未有的速度和规模推动着技术的进步。而正如端午节的文化内涵所体现的那样&#xff0c;我们以屈原名言为指引&#xff0c;勉励着广大开发者在技术征途上不断追求极致&#xff0c;勇往直前。 一、端午节与技术…

macOS Sonoma 14 beta 2 (23A5276g) Boot ISO 原版可引导镜像

macOS Sonoma 14 beta 2 (23A5276g) Boot ISO 原版可引导镜像 本站下载的 macOS 软件包&#xff0c;既可以拖拽到 Applications&#xff08;应用程序&#xff09;下直接安装&#xff0c;也可以制作启动 U 盘安装&#xff0c;或者在虚拟机中启动安装。另外也支持在 Windows 和 …

【Flume】高级组件之Sink Processors及项目实践(Sink负载均衡和故障转移)

文章目录 1. 组件简介2. 项目实践2.1 负载均衡2.1.1 需求2.1.2 配置2.1.3 运行 2.2 故障转移2.2.1 需求2.2.2 配置2.2.3 运行 1. 组件简介 Sink Processors类型包括这三种&#xff1a;Default Sink Processor、Load balancing Sink Processor和Failover Sink Processor。 Defa…

AIGC连续内容生成几种方案

背景 从AI可以画图到现在各家都在功课的连续性内容的输出&#xff0c;正在AI画图进入到大众圈其实也不过1年左右时间。对于单图的研究已经逐渐完善&#xff0c;单图理论上讲&#xff0c;只要你能按要求做promt的设计出图率应该是比较高的。但是对于要生成连续的图或者要生成连…

推荐 5 个 火火火 的 GitHub 项目

推荐 5 个开源项目&#xff0c;前两个是 AI 相关&#xff0c;后面 3 个为逛逛GitHub 的读者推荐&#xff0c;如果你挖掘到了很棒的开源项目&#xff0c;可以给老逛投稿。 本期推荐开源项目目录&#xff1a; 1. SuperAGI&#xff08;AI&#xff09; 2. 一键换脸&#xff08;AI&a…

macOS Monterey 12.6.7 (21G651) Boot ISO 原版可引导镜像

macOS Monterey 12.6.7 (21G651) Boot ISO 原版可引导镜像 本站下载的 macOS 软件包&#xff0c;既可以拖拽到 Applications&#xff08;应用程序&#xff09;下直接安装&#xff0c;也可以制作启动 U 盘安装&#xff0c;或者在虚拟机中启动安装。另外也支持在 Windows 和 Lin…