ssm项目——教务系统

使用ssm搭建简易教务系统,使用mybatisplus简化操作数据库代码,前端使用thymeleaf进行数据回显,后端返回json数据,与前端ajax进行数据交互,实现页面异步刷新

登陆界面

format,png

点击没有账号,则进入注册界面,对学号进入重复检测,使用ajax更新红字部分

format,png

点击登录进入首页

format,png

信息查询功能包括个人信息查看以及修改

format,png

format,png

课程信息部分分三个功能

1.课程查询,通过使用mybatisplus插件进行分页

format,png

2.教材查询,通过学生所选课程匹配对应的教材,加入购物车功能通过controller返回json数据,前端ajax进行异步刷新,同时使用mybatisplus进行分页

format,png

format,png

format,png

教材查询中点击购物车,则进入购物车界面,该界面可以对订单删除,单个订单支付以及一次支付所有

format,png

format,png

format,png

3.选修课选取部分,通过其数据库保存的上课时间,前端进行判断,打印到相应位置上,同时使用ajax异步刷新选取选修课

format,png

format,png

 点击已选选修课查询,进入选修课查询界面

format,png

部分代码展示

购物车代码controller层功能

package com.controller;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.pojo.Cart;
import com.service.BookService;
import com.service.CartService;
import org.apache.ibatis.type.Alias;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.filter.OncePerRequestFilter;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

@RestController
public class CartController {
    @Autowired
    private CartService cartService;

    @Autowired
    private BookService bookService;

    //加入购物车操作
    @RequestMapping (value = "/add",produces = "text/html;charset=UTF-8")
    public String add(Integer bookId,Integer stuId,Integer count){
        if (count==null){
            return "添加失败,请输入数量";
        }
        //通过bookid查找book
        String bookName = bookService.queryById(bookId).getBookName();
        //查询所有购物车订单
        for (Cart cart : cartService.getCarts(stuId)) {
            //判读订单是否支付,0未支付
            if (cart.getState()==0){
                if (cart.getBookName().equals(bookName)){
                    //修改该订单数量
                    cart.setNumber(cart.getNumber()+count);
                    cartService.updateCart(cart);
                    return cart.getBookName();
                }
            }
        }
        cartService.insertCart(stuId,bookId,count);
        return bookName;
    }

    //从购物车删除
    //返回map时,produces中不能设置为text/html
    @RequestMapping(value = "/deleteCart",produces = "application/json;charset=UTF-8")
    public Map<String, Object> deleteCart(Integer id, Integer stuId, Integer pageNow){
        //创建结合存放键值对返回前端
        Map<String, Object> map=new HashMap<>();
        //获取删除书名
        String bookName="";
        if (id!=null){
            bookName = cartService.queryCartById(id).getBookName();
        }
        //删除书本信息
        cartService.deleteCart(id);
        //获该学生取所订单数据,并分页
        Page<Cart> all = cartService.getAll(stuId, pageNow);
        //查询订单总数量
        Integer count = cartService.getCount(stuId);
        //计算所有订单总金额
        int priceTotal=0;
        List<Cart> carts = cartService.getCarts(stuId);
        for (Cart record : carts) {
            if(record.getState()!=1){
                priceTotal=priceTotal+record.getPrice()*record.getNumber();
            }
        }
        map.put("bookName",bookName);
        map.put("cart",all.getRecords());
        map.put("count",count);
        map.put("priceTotal",priceTotal);
        map.put("stuId",stuId);
        return map;
    }

    //单个订单支付功能
    @RequestMapping(value = "/pay",produces = "application/json;charset=UTF-8")
    public Map<String, Object> pay(Integer id, Integer stuId, Integer pageNow){
        //查找要修改的订单
        Cart cart = cartService.queryCartById(id);
        //根据时间生成支付编号
        Long l = System.currentTimeMillis();
        //将stat改为1,表示已经支付
        cart.setState(1);
        //添加支付订单号
        cart.setOrderId((int) -l);
        //修改订单信息
        cartService.updateCart(cart);
        //查询订单总数量
        Integer count = cartService.getCount(stuId);
        //计算所有订单总金额
        int priceTotal=0;
        List<Cart> carts = cartService.getCarts(stuId);
        for (Cart record : carts) {
            if(record.getState()!=1){
                priceTotal=priceTotal+record.getPrice()*record.getNumber();
            }
        }
        //获该学生取所订单数据,并分页
        Page<Cart> all = cartService.getAll(stuId, pageNow);
        Map<String,Object> maps=new HashMap<>();

        maps.put("cart",all.getRecords());
        maps.put("count",count);
        maps.put("priceTotal",priceTotal);
        maps.put("bookName",cart.getBookName());
        maps.put("orderId",(int) -l);
        return maps;
    }

    //支付所有订单
    @RequestMapping("/payAll")
    public List<Cart> payAll(Integer stuId,Integer pageNow){
        //将该学生所有订单的state赋值为1,并添加orderId
        for (Cart cart : cartService.getCarts(stuId)) {
            if(cart.getState()!=1){
                cart.setState(1);
                long l = System.currentTimeMillis();
                cart.setOrderId((int) -l);
                cartService.updateCart(cart);
            }
        }
        //获该学生取所订单数据,并分页
        List<Cart> records = cartService.getAll(stuId, pageNow).getRecords();
        return records;
    }

}

购物车模块前段代码

<!DOCTYPE html>
<html lang="cn" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link rel="stylesheet" type="text/css" th:href="@{/static/bookstrap/css/bootstrap.min.css}">
    <script type="text/javascript" th:src="@{/static/js/jquery-3.6.0.js}"></script>
    <script th:inline="javascript">
        function deleteCart(id,stuId,current) {
            $.post("http://localhost:8080/ssm_studentPlus/deleteCart",{"id":id,"stuId":stuId,"pageNow":current},function (data) {
              if(data.toString()!=null){
                  var bookName=data["bookName"]
                  var count=data["count"]
                  var priceTotal=data["priceTotal"]
                  $("#div2").html("成功删除"+bookName+"商品")
                  $("#div").html("未支付订单数量共"+count+"单,总价格为"+priceTotal+"元")
                  //更新订单信息
                  var cart=data["cart"]
                  var html=""
                  for(var i in cart){
                      if(cart[i].state==1){
                          html+="<tr>\n" +
                              "       <td class="td" >"+cart[i].bookName+"</td>\n" +
                              "       <td class="td" >"+cart[i].number+"本</td>\n" +
                              "       <td class="td">"+cart[i].price+"元</td>\n" +
                              "       <td class="td">"+cart[i].number*cart[i].price+"元</td>\n" +
                              "       <td class="td">"+cart[i].orderId+"</td>\n" +
                              "  </tr>"
                      }else{
                          html+="<tr>\n" +
                              "       <td class="td" >"+cart[i].bookName+"</td>\n" +
                              "       <td class="td" >"+cart[i].number+"本</td>\n" +
                              "       <td class="td">"+cart[i].price+"元</td>\n" +
                              "       <td class="td">"+cart[i].number*cart[i].price+"元</td>\n" +
                              "       <td class="td"><button class="btn btn-outline-secondary"  onclick="deleteCart("+cart[i].id+","+stuId+","+current+")">删除</button>&nbsp;<button class="btn btn-outline-secondary">支付</button> </td>\n" +
                              "  </tr>"
                      }

                  }
                  $("#context").html(html)
              }
            })
        }

        //支付功能
        function pay(id,stuId,current) {
            $.post("http://localhost:8080/ssm_studentPlus/pay",{"id":id,"stuId":stuId,"pageNow":current},function (data) {
                if(data.toString()!=null){
                    var cart=data["cart"]
                    var orderId=data["orderId"]
                    var count=data["count"]
                    var priceTotal=data["priceTotal"]
                    var  bookName=data["bookName"]
                    $("#div2").html("成功支付"+bookName+"商品")
                    $("#div").html("未支付订单数量共"+count+"单,总价格为"+priceTotal+"元")
                    var html=""
                    for (var i in cart){
                        if (cart[i].state==1){
                            html+="<tr>\n" +
                                "      <td class="td">"+cart[i].bookName+"</td>\n" +
                                "      <td class="td">"+cart[i].number+"本</td>\n" +
                                "      <td class="td">"+cart[i].price+"元</td>\n" +
                                "      <td class="td">"+cart[i].number*cart[i].price+"元</td>\n" +
                                "      <td class="td">"+cart[i].orderId+"</td>\n" +
                                "    </tr>"
                        }else {
                            html+="<tr>\n" +
                                "      <td class="td">"+cart[i].bookName+"</td>\n" +
                                "      <td class="td">"+cart[i].number+"本</td>\n" +
                                "      <td class="td">"+cart[i].price+"元</td>\n" +
                                "      <td class="td">"+cart[i].number*cart[i].price+"元</td>\n" +
                                "      <td class="td"><button class="btn btn-outline-secondary"  onclick="deleteCart("+cart[i].id+","+stuId+","+current+")">删除</button>&nbsp;<button onclick="pay("+cart[i].id+","+stuId+","+current+")" class="btn btn-outline-secondary">支付</button> </td>\n" +
                                "  </tr>"
                        }
                    }
                    $("#context").html(html)
                }
            })
        }

        $(function () {
            //支付所有订单
            $("#payall").click(function () {
                $.post("http://localhost:8080/ssm_studentPlus/payAll",{"stuId":$("#stu").val(),"pageNow":$("#current").val()},function (data) {
                    var html=""
                    for (var i=0;i<data.length;i++){
                        html+="<tr>\n" +
                            "      <td class="td">"+data[i].bookName+"</td>\n" +
                            "      <td class="td">"+data[i].number+"本</td>\n" +
                            "      <td class="td">"+data[i].price+"元</td>\n" +
                            "      <td class="td">"+data[i].number*data[i].price+"元</td>\n" +
                            "      <td class="td">"+data[i].orderId+"</td>\n" +
                            "    </tr>"
                    }
                    $("#context").html(html)
                    $("#div2").html("成功支付所有商品")
                    $("#div").html("未支付订单数量共0单,总价格为0元")
                })
            })
        })
    </script>
    <style>
        body{
            background-image: url("http://localhost:8080/ssm_studentPlus/static/img/school.jpg");
            background-size: 100% 100%;
            background-attachment: fixed;
        }
        #box1{
            background: rgba(255,255,255,0.8);
            width: 100%;
            height: 100vh;
            position: absolute;
            top: 0;
            left: 0;
        }
        #box2{
            background:lightgray;
            box-shadow: 5px 5px 10px gray;
            width: 80%;
            height: 80vh;
            position: absolute;
            top: 10%;
            left: 10%;
        }
        .td{
            width: 170px;
            height: 50px;
            text-align: center;
            font-size: 1.2pc;
            border: 1.3px black solid;
        }
        #box3{
            position: absolute;
            top: 90%;
            left: 38%;
        }
        #div{
            position: absolute;
            top: 73%;
            left: 3%;
            font-size: 1.5pc;
            color: red;
        }
        #div2{
            position: absolute;
            top: 73%;
            left: 76%;
            font-size: 1.5pc;
            color: red;
        }
    </style>
</head>
<body>
<div id="box1">
    <div id="box2">
        <div style="font-size: 1.8pc;text-align: center">购物车</div>
        <table border="1" cellspacing="0" align="center" style="margin-top: 2%;">
            <tr>
                <td class="td">书名</td>
                <td class="td">数量</td>
                <td class="td">单价</td>
                <td class="td">总价</td>
                <td class="td">操作</td>
            </tr>
            <tbody id="context">
                <tr th:each="cart:${page.records}">
                    <td class="td" th:text="${cart.bookName}"></td>
                    <td class="td" >[[${cart.number}]]本</td>
                    <td class="td">[[${cart.price}]]元</td>
                    <td class="td">[[${cart.number*cart.price}]]元</td>
                    <td class="td" th:if="${cart.state==1}">[[${cart.orderId}]]</td>
                    <td class="td" th:if="${cart.state==0}"><button class="btn btn-outline-secondary"  th:onclick="deleteCart([[${cart.id}]],[[${stuId}]],[[${page.current}]])">删除</button>&nbsp;<button th:onclick="pay([[${cart.id}]],[[${stuId}]],[[${page.current}]])" class="btn btn-outline-secondary">支付</button> </td>
                </tr>
            </tbody>


            <tr>
                <td class="td"  colspan="5"><button id="payall"  class="btn btn-outline-secondary">支付所有订单</button> </td>
            </tr>
        </table>
        <input type="hidden" th:value="${stuId}" id="stu">
        <input type="hidden" th:value="${page.current}" id="current">
        <div id="div">未支付订单数量为[[${count}]]单,总价格为[[${totalPrice}]]元</div>

        <div id="div2"></div>
        <!--        分页-->
        <div th:replace="common::#box3"></div>

    </div>
</div>
</body>
</html>

购物车sevice层代码

package com.service;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.mapper.BookMapper;
import com.mapper.CartMapper;
import com.mapper.CoursesMapper;
import com.pojo.Book;
import com.pojo.Cart;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
@Service
public class CartServiceImpl implements CartService{
    @Autowired
    private BookMapper bookMapper;

    @Autowired
    private CartMapper cartMapper;

    @Override
    public Page<Cart> getAll(Integer id,Integer pageNow) {
        QueryWrapper<Cart> cartQueryWrapper = new QueryWrapper<>();
        cartQueryWrapper.eq("stuId",id);
        if (pageNow==null){
            pageNow=1;
        }
        Page<Cart> cartPage = new Page<>(pageNow,3);
        Page<Cart> cartPage1 = cartMapper.selectPage(cartPage, cartQueryWrapper);
        return cartPage1;
    }

    @Override
    public Integer getCount(Integer id) {
        QueryWrapper<Cart> cartQueryWrapper = new QueryWrapper<>();
        cartQueryWrapper.eq("stuId", id);
        cartQueryWrapper.eq("state",0);
        return cartMapper.selectCount(cartQueryWrapper);
    }

    @Override
    public List<Cart> getCarts(Integer stuId) {
        QueryWrapper<Cart> wrapper = new QueryWrapper<>();
        wrapper.eq("stuId",stuId);
        return cartMapper.selectList(wrapper);
    }

    @Override
    public void insertCart(Integer stuId, Integer bookId, Integer count) {
        Book book = bookMapper.selectById(bookId);
        Cart cart = new Cart(null, book.getBookName(), count, book.getPrice(), 0, stuId, 0);
        cartMapper.insert(cart);//自动生成id
    }

    //修改订单
    @Override
    public void updateCart(Cart cart) {
        cartMapper.updateById(cart);
    }

    @Override
    public void deleteCart(Integer id) {
        cartMapper.deleteById(id);
    }

    @Override
    public Cart queryCartById(Integer id) {
        Cart cart = cartMapper.selectById(id);
        return cart;
    }
}

购物车实体类

package com.pojo;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;

public class Cart {

    @TableId(type = IdType.AUTO)
    private Integer id;
    private String bookName;
    private Integer number;
    private Integer price;
    private Integer state;//支付状态,0表示未支付,1表示已支付
    private Integer stuId;
    private Integer orderId;//支付成功的订单号

    public Cart(Integer id, String bookName, Integer number, Integer price, Integer state, Integer stuId, Integer orderId) {
        this.id = id;
        this.bookName = bookName;
        this.number = number;
        this.price = price;
        this.state = state;
        this.stuId = stuId;
        this.orderId = orderId;
    }

    @Override
    public String toString() {
        return "CartController{" +
                "id=" + id +
                ", bookName='" + bookName + ''' +
                ", number=" + number +
                ", price=" + price +
                ", state=" + state +
                ", stuId=" + stuId +
                ", orderId=" + orderId +
                '}';
    }

    public Integer getOrderId() {
        return orderId;
    }

    public void setOrderId(Integer orderId) {
        this.orderId = orderId;
    }

    public Integer getStuId() {
        return stuId;
    }

    public void setStuId(Integer stuId) {
        this.stuId = stuId;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getBookName() {
        return bookName;
    }

    public void setBookName(String bookName) {
        this.bookName = bookName;
    }

    public Integer getNumber() {
        return number;
    }

    public void setNumber(Integer number) {
        this.number = number;
    }

    public Integer getPrice() {
        return price;
    }

    public void setPrice(Integer price) {
        this.price = price;
    }

    public Integer getState() {
        return state;
    }

    public void setState(Integer state) {
        this.state = state;
    }

    public Cart() {
    }

}

购物车mapper层

package com.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.pojo.Cart;
import org.springframework.stereotype.Repository;

@Repository
public interface CartMapper extends BaseMapper<Cart> {
}

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
教务系统是一个管理学生、教师、课程等信息的系统,它是现代高校管理的重要工具之一。基于SSM框架的教务系统项目,主要包括以下几个模块: 1. 用户管理模块:包括管理员、教师、学生等用户的注册、登录、修改密码、个人信息管理等功能。 2. 课程管理模块:包括课程的添加、修改、删除、查询等功能。 3. 学生管理模块:包括学生的添加、修改、删除、查询、选课等功能。 4. 教师管理模块:包括教师的添加、修改、删除、查询、授课等功能。 5. 成绩管理模块:包括成绩的录入、查询、统计等功能。 6. 系统管理模块:包括系统参数设置、日志管理、数据备份等功能。 在实现教务系统项目时,需要使用SSM框架进行开发。SSM框架是Spring、SpringMVC和MyBatis三个框架的结合,它们分别负责业务逻辑、Web层和数据访问层的处理,通过整合这三个框架,可以提高开发效率,降低系统复杂度。 在使用SSM框架开发教务系统项目时,需要按照以下步骤进行: 1. 构建Maven项目:使用Maven构建一个基于SSM框架的Web项目。 2. 配置Spring:在项目中配置Spring框架,包括配置数据源、事务管理器、数据访问层等。 3. 配置SpringMVC:在项目中配置SpringMVC框架,包括配置控制器、视图解析器、拦截器等。 4. 配置MyBatis:在项目中配置MyBatis框架,包括配置DAO层、映射文件、SQL语句等。 5. 开发业务逻辑:根据教务系统的需求,开发相应的业务逻辑,包括用户管理、课程管理、学生管理、教师管理、成绩管理等。 6. 开发前端页面:根据教务系统的需求,开发相应的前端页面,包括登录页面、注册页面、个人信息管理页面、课程管理页面、学生管理页面、教师管理页面、成绩管理页面等。 7. 调试测试:在开发完毕后,对系统进行调试测试,确保系统正常运行。 总之,基于SSM框架的教务系统项目开发需要综合运用Spring、SpringMVC和MyBatis三个框架,同时需要根据教务系统的需求,开发相应的业务逻辑和前端页面,最终确保系统正常运行。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

swttws.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值