购物车项目+EL表达式+JSTL+数据库

简介: 购物车项目+EL表达式+JSTL+数据库

什么是EL表达式


什么是EL:EL即Expression Language(表达式语言)

EL的功能:替代JSP页面中的复杂代码

EL的语法:

${  EL exprission }
${ bean.name } 或 ${ bean['name'] }


EL的特点


自动转换类型:EL得到某个数据时可以自动转换类型,对于类型的限制更加宽松,使用简单,相比较在JSP中嵌入Java代码,EL应用更简单


EL的语法


EL语法:

以“${”作为开始,以“}”作为结束

直接使用变量名获取值$

${  username }

变量属性范围名称

属性范围

EL中的名称

page

pageScope,例如${pageScope.username},表示在page范围内查找username变量,找不到返回Null

request

requstScope

session

sessionScope

application

applicationScope


EL中的运算符


EL运算符 :运算符”[ ]” 运算符”.”

作用: 获取对象属性

获取对象集合中的数据: 在Session中保存了一个(list)集合users

EL表达式的简单应用:先给大家演示一下简单的代码效果


EL隐式对象



EL隐式对象介绍


对象名称

说  明

pageScope

返回页面范围的变量名,这些名称已映射至相应的值

requestScope

返回请求范围的变量名,这些名称已映射至相应的值

sessionScope

返回会话范围的变量名,这些名称已映射至相应的值

applicationScope

返回应用范围内的变量,并将变量名映射至相应的值

param

返回客户端的请求参数的字符串值

paramValues

返回映射至客户端的请求参数的一组值

pageContext

提供对用户请求和页面信息的访问


什么是JSTL


什么是JSTL :JSTL(JavaServerPages Standard Tag Library)

                       JSP标准标签库

                       JSTL通常会与EL表达式合作实现JSP页面的编码

                       使用JSTL实现JSP页面中逻辑处理

JSTL的优点:

                      提供一组标准标签

                      可用于编写各种动态JSP页面


为什么使用JSTL?


虽然EL表达式可以访问JavaBean的属性,但是并不能实现在JSP中进行逻辑判断,因而要使用JSTL标签。

JSTL的环境搭建

使用JSTL的步骤:

               在JSP页面添加taglib指令

               使用JSTL标签

JSTL标准标签库介绍


通用标签的使用:

        set:设置指定范围内的变量值

        out:计算表达式并将结果输出显示

        remove:删除指定范围内的变量


条件标签


条件标签的使用:

        if:if标签用于判断条件是否成立,与Java中的If语句作用相同

语法:

迭代标签 :实现对集合中对象的遍历

语法:


以上所写的知识就是下面购物车项目要运用到的知识点

下面这张图就是购物车版本以及现在给你们介绍的就是gwc3里面用到了css、js、fonts


这个购物车我改了字段,在下面列出来了

用户表user:int uuid-编号,String uname-名字,String upwd-密码,String uinfo-备注,这里面有两个方法

商品表goods: int bid-编号,String bname-名称,double bprice-价格,String binfo-简介,String bface-图片,你们需要哪些方法就写那些

订单表orderitem: int oid-订单标号,int uuid-用户编号,int bid-商品编号,String bname-商品名称,double bprice-商品价格,String binfo-商品简介,String bface-商品图片,int gnumber-订单数量,double gprice-订单总价,方法依据自己的想法


下面就是代码了

首先是登录页面login.jsp和dologin.jsp注册页面register.jsp和doregister.jsp

其次是主页面index.jsp和doindex.jsp

第三是购物车页面gwc.jsp和dogwc.jsp

第四是一些其他的小页面

最后是支付页面sfk.jsp


login.jsp


<%@ page language="java" contentType="text/html; charset=UTF-8"
  pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>用户登录</title>
<style>
 #a {
    width:50%;
    height:200px;
    border: 1px dashed ;
    background-color:lightyellow;
    text-align:center;
}
body{
background-color:lightblue;
}
</style>
<script type="text/javascript">
  var str = "qwertyupasdfghjkzxcvbnmQWERTYUPASDFGHJKLZXCVBNM23456789";
  function yz() {
  //随机出4个0-字符串长度之间的数字 做为下标
  yzmStr="";
  for(var i=1;i<=4;i++){
    yzmStr+=str.substr(Math.round(Math.random()*(str.length-1)),1);
  }
  //把验证码赋值到页面
  document.getElementById("syzm").innerHTML=yzmStr;
  }
  function $(id) {
  return document.getElementById(id);
  }
  function login_yz() {
  //验证 用户名 和 密码不能为空 
  //获取用户名
  var uname = $("uname").value; 
  if(uname.length==0){
    alert("用户名不能为空");
    return false;
  }
  //获取密码
  var upwd = $("upwd").value;
  if(upwd.length==0){
    alert("密码不能为空");
    return false;
  }
  //获取验证码:判断和电脑的验证码是否相等
  //PS:自己实现-输入的验证码不区分大小写-大小写转换
  var yzm = $("uyzm").value;
  if(yzm!=yzmStr){
    alert("验证码输入错误,请重新输入");
    //清空输入的验证码
    $("uyzm").value="";
    //重新生成验证码
    yz();
    return false;
  }
  }
</script>
</head>
<body onload="yz()" >
  <div id="login" align="center">
  <div id="center">
    <div id="center_left"></div>
    <div id="center_middle">
    <form action="dologin.jsp" onsubmit="return login_yz()">
    <div id="user">
      用 户 <input type="text" id="uname" name="textfield" />
    </div>
    <div id="password">
      密 码 <input type="password" id="upwd" name="textfield2" />
    </div>
    <div id="yzm">
      验证码 <input id="uyzm" style="width: 50px;" type="text" name="textfield3" />
      <span id="syzm" onclick="yz()"></span>
    </div>
    <div id="btn">
      <input type="submit" value="登录">
      <input type="button" value="注册" onclick="javascript:location.href='register.jsp'">
    </div>
    </form>
    </div>
    <div id="center_right"></div>
  </div>
  </div>
</body>
</html>


dologin.jsp


<%@page import="com.zking.entity.User"%>
<%@page import="com.zking.biz.imp.Imp_Userbiz"%>
<%@page import="com.zking.biz.IUserbiz"%>
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.Connection"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
  //乱码
  request.setCharacterEncoding("utf-8");
  String uname = request.getParameter("textfield");
  String jks=request.getParameter("jk");
  int jk=0;
  String upwd = request.getParameter("textfield2");
  IUserbiz iub=new Imp_Userbiz();
  User T=iub.login(uname, upwd);
  if(T!=null){//成功就跳转到主页面
    session.setAttribute("a", T.getUuid());
    request.getRequestDispatcher("doindex.jsp").forward(request, response);
  }else{//错误就回到登录页面
    out.print("<script>alert('用户名或密码错误,请重新登录');location.href='login.jsp'</script>");
  }
%>


register.jsp


<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>用户注册</title>
<style>
 #a {
    width:50%;
    height:200px;
    border: 1px dashed ;
    background-color:lightyellow;
    text-align:center;
}
body{
background-color:lightblue;
}
</style>
</head>
<body>
  <form action="doregister.jsp" method="post" align="center">
  用户名:<input type="text" name="uname"><br>
  密码:<input type="password" name="upwd"><br>
  备注:<textarea rows="" cols="" name="uinfo">
  </textarea><br>
  <input type="submit" value="注册">
  <input type="reset" value="重置">
  </form>
</body>
</html>


doregister.jsp


<%@page import="com.zking.biz.imp.Imp_Userbiz"%>
<%@page import="com.zking.biz.IUserbiz"%>
<%@page import="com.zking.entity.User"%>
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.Connection"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
  //设置编码-设置请求对象的编号
  request.setCharacterEncoding("utf-8");
  //接收注册页面传递的数据
  String uname = request.getParameter("textfield");
  String upwd = request.getParameter("textfield2");
  String uinfo = request.getParameter("uinfo");
  IUserbiz df=new Imp_Userbiz();
  User T=new User(uname,upwd,uinfo);
  //执行sql语句
  if(T!=null){//成功就跳转到主页面
    session.setAttribute("a", T.getUuid());
    request.getRequestDispatcher("login.jsp").forward(request, response);
  }else{//错误就回到登录页面
    out.print("<script>alert('用户名或密码错误,请重新登录');location.href='register.jsp'</script>");
  }
%>


index.jsp


<%@page import="com.zking.util.DBHelper"%>
<%@page import="com.zking.entity.OrderItem"%>
<%@page import="com.zking.biz.imp.Imp_orderItembiz"%>
<%@page import="com.zking.biz.IorderItembiz"%>
<%@page import="com.zking.biz.imp.Imp_Goodsbiz"%>
<%@page import="com.zking.dao.imp.Imp_GoodsDao"%>
<%@page import="com.zking.biz.IGoodsbiz"%>
<%@page import="com.zking.entity.Goods"%>
<%@page import="java.util.ArrayList"%>
<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Insert title here</title>
<script type="text/javascript" src="js/jquery-3.3.1.js"></script>
<script type="text/javascript" src="js/bootstrap.js"></script>
<link rel="stylesheet" type="text/css" href="css/bootstrap.min.css"/>
<script type="text/javascript">
  function gm(bid){
  location.href="dogwc.jsp?bid="+bid;
  }
</script>
</head>
<body>
  <table class="table table-hover">
  <tr>
    <td>商品编号</td>
    <td>商品名称</td>
    <td>商品单价</td>
    <td>商品介绍</td>
    <td>商品图片</td>
    <td>操作一下</td> 
  </tr>
  <c:forEach items="${glist }" var="g">
  <tr>
    <td>${g.bid }</td>
    <td>${g.bname }</td>
    <td>${g.bprice }</td>
    <td>${g.binfo }</td>
    <td>
    <img src="${g.bface }">
    </td>
    <td>
    <button onclick="gm(${g.bid })" class="btn btn-success">添加到购物车</button>
    </td>
  </tr>
  </c:forEach>
  </table>
</body>
</html>


doindex.jsp


<%@page import="com.zking.biz.imp.Imp_Goodsbiz"%>
<%@page import="com.zking.entity.Goods"%>
<%@page import="java.util.ArrayList"%>
<%@page import="com.zking.biz.IGoodsbiz"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
IGoodsbiz igb=new Imp_Goodsbiz();
ArrayList<Goods> glist=igb.getAll();
request.setAttribute("glist", glist);
request.getRequestDispatcher("index.jsp").forward(request, response);
%>
gwc.jsp
<%@page import="com.zking.dao.IorderItemDao"%>
<%@page import="com.zking.biz.imp.Imp_orderItembiz"%>
<%@page import="com.zking.biz.IorderItembiz"%>
<%@page import="com.zking.entity.OrderItem"%>
<%@page import="java.util.ArrayList"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <%@  taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript" src="js/jquery-3.3.1.js"></script>
<script type="text/javascript" src="js/bootstrap.js"></script>
<link rel="stylesheet" type="text/css" href="css/bootstrap.min.css"/>
<script type="text/javascript">
function xx() {
  //跳转到支付页面
  location.href="sfk.jsp";
}
function $(id) {
  return document.getElementById(id);
}
function xg(obj,bid){
  var gnumber=obj.value;
  //alert(gnumber);
  location.href="dogwc.jsp?bid="+bid+"&gn="+gnumber;
}
function bbb(oid,a){
  if(a=='-'){
  var gnumber=parseInt($("text").value)-1;
  if(gnumber==0){
    location.href="sc.jsp?bid="+bid;
  }else{
  location.href="doxg.jsp?oid="+oid+"&aa="+1;
  }
  }else if(a=='+'){
  location.href="doxg.jsp?oid="+oid+"&aa="+2;
  } 
}
function sc(oid){
  location.href="sc.jsp?oid="+oid;
}
</script>
</head>
<body>
<table class="table table-hover">
<tr>
  <td>商品名称</td>
  <td>商品单价</td>
  <td>商品信息</td>
  <td>商品图片</td>
  <td>商品数量</td>
  <td>总价</td>
  <td>操作一下</td>
</tr>
<c:forEach items="${oslist }" var="d">
<tr>
  <td>${d.bname}</td>
  <td>${d.bprice}</td>
  <td>${d.binfo }</td>
  <td>
  <img src="${d.bface} ">
  </td>
  <td>
  <button class="btn" onclick="bbb(${d.oid },'+')">+</button>
  <input id="text"  type="text" style="width:40px;text-align:center" value="${d.gnumber } "/>
  <button class="btn" onclick="bbb(${d.oid },'-')">-</button>
  </td>
  <td>${d.gprice }</td>
  <td>
  <button onclick="sc(${d.oid })" class="btn btn-danger">删除</button>
  </td>
</tr>
    <c:set var="sum" value="${sum+d.gprice}"></c:set>
  </c:forEach>
</table>
<button class="btn btn-success" onclick="xx()">总价${sum }</button>&nbsp&nbsp&nbsp&nbsp
<a href="doindex.jsp">返回首页</a>
</body>
</html>


dogwc.jsp


<%@page import="org.eclipse.jdt.internal.compiler.batch.Main"%>
<%@page import="com.zking.biz.imp.Imp_orderItembiz"%>
<%@page import="com.zking.biz.IorderItembiz"%>
<%@page import="com.zking.util.DBHelper"%>
<%@page import="com.zking.entity.Goods"%>
<%@page import="org.apache.catalina.util.Introspection"%>
<%@page import="com.zking.biz.imp.Imp_Goodsbiz"%>
<%@page import="com.zking.biz.IGoodsbiz"%>
<%@page import="com.zking.entity.OrderItem"%>
<%@page import="java.util.ArrayList"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
String number=request.getParameter("gn");
//System.out.print(number);
int count=1;
if(number!=null){
  count=Integer.valueOf(number);
}
String uid=session.getAttribute("a")+"";
int uuid=Integer.valueOf(uid);
String id=request.getParameter("bid");
int bid=Integer.valueOf(id);
//创建订单对象
OrderItem d=new OrderItem();
//使用多态创建商品业务逻辑层和实现类
IGoodsbiz igb=new Imp_Goodsbiz();
IorderItembiz iot=new Imp_orderItembiz();
Goods gd=new Goods();
gd=igb.getById(bid);
int oid=DBHelper.getNextId("OrderItem", "oid");
d.setOid(oid);
d.setUuid(uuid);
d.setBid(bid);
d.setBname(gd.getBname());
d.setBprice(gd.getBprice());
d.setBinfo(gd.getBinfo());
d.setBface(gd.getBface());
d.setGnumber(1);
int gnumber=1;
double bprice=gd.getBprice();
double sumgprice=gnumber*bprice;
d.setGprice(sumgprice);
ArrayList<OrderItem> slist=iot.getAll(uuid);
  boolean b=true;
  for(int i=0;i<slist.size();i++){
  int ordid=slist.get(i).getOid();
  int orprice=(int)slist.get(i).getBprice();
  if(bid==slist.get(i).getBid()){
    //int price=(int)slist.get(i).getBprice();
    if(number==null){
    int num=slist.get(i).getGnumber()+1;
    iot.updateByOid(ordid, num);
    iot.updateprice(ordid, num, orprice);
    //System.out.print(slist.get(i).getGnumber());
    }else{
    iot.updateByOid(ordid, count);
    iot.updateprice(ordid, count, orprice);
    }
    b=false;
  }
  }
  if(b){  
  iot.add(d);
  }
response.sendRedirect("doshopping.jsp?number="+number);
%>


doshopping.jsp


<%@page import="com.zking.entity.OrderItem"%>
<%@page import="java.util.ArrayList"%>
<%@page import="com.zking.biz.imp.Imp_orderItembiz"%>
<%@page import="com.zking.biz.IorderItembiz"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<% 
String uid=session.getAttribute("a")+"";
int uuid=Integer.valueOf(uid);
IorderItembiz iot=new Imp_orderItembiz();
ArrayList<OrderItem> oslist=iot.getAll(uuid);
request.setAttribute("oslist", oslist);
System.out.print(uuid);
System.out.print(oslist);
request.getRequestDispatcher("gwc.jsp").forward(request, response);
%>


doxg.jsp


<%@page import="com.zking.entity.OrderItem"%>
<%@page import="com.zking.biz.imp.Imp_orderItembiz"%>
<%@page import="com.zking.biz.IorderItembiz"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<% 
String y=request.getParameter("aa");
int ys=Integer.valueOf(y);
String id=request.getParameter("oid");
int oid=Integer.valueOf(id);
IorderItembiz iob=new Imp_orderItembiz();
OrderItem oi= iob.getById(oid);
int number=oi.getGnumber();
if(ys==2){
  int num=number+1;
  iob.updateByOid(oid, num);
}else if(ys==1){
  int num=number-1;
  //System.out.print(num);
  iob.updateByOid(oid, num);
}
response.sendRedirect("doshopping.jsp");
%>


sc.jsp


<%@page import="com.zking.biz.imp.Imp_orderItembiz"%>
<%@page import="com.zking.biz.IorderItembiz"%>
<%@page import="com.zking.entity.OrderItem"%>
<%@page import="java.util.ArrayList"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<% 
String uid=session.getAttribute("a")+"";
int uuid=Integer.valueOf(uid);
IorderItembiz idb=new Imp_orderItembiz();
String id= request.getParameter("oid");
int oid=Integer.valueOf(id);
idb.deleteById(oid);
response.sendRedirect("doshopping.jsp");
%>


sfk.jsp


<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body align="center">
  <img alt="" src="images/gr.png" >
  <a href="doindex.jsp">返回首页</a>
</body>
</html>
相关文章
|
2月前
|
存储 关系型数据库 MySQL
一个项目用5款数据库?MySQL、PostgreSQL、ClickHouse、MongoDB区别,适用场景
一个项目用5款数据库?MySQL、PostgreSQL、ClickHouse、MongoDB——特点、性能、扩展性、安全性、适用场景比较
|
2月前
|
SQL JavaScript 关系型数据库
node博客小项目:接口开发、连接mysql数据库
【10月更文挑战第14天】node博客小项目:接口开发、连接mysql数据库
|
2月前
|
SQL 关系型数据库 MySQL
Go语言项目高效对接SQL数据库:实践技巧与方法
在Go语言项目中,与SQL数据库进行对接是一项基础且重要的任务
83 11
|
3月前
|
JavaScript Java 关系型数据库
毕设项目&课程设计&毕设项目:基于springboot+vue实现的在线考试系统(含教程&源码&数据库数据)
本文介绍了一个基于Spring Boot和Vue.js实现的在线考试系统。随着在线教育的发展,在线考试系统的重要性日益凸显。该系统不仅能提高教学效率,减轻教师负担,还为学生提供了灵活便捷的考试方式。技术栈包括Spring Boot、Vue.js、Element-UI等,支持多种角色登录,具备考试管理、题库管理、成绩查询等功能。系统采用前后端分离架构,具备高性能和扩展性,未来可进一步优化并引入AI技术提升智能化水平。
毕设项目&课程设计&毕设项目:基于springboot+vue实现的在线考试系统(含教程&源码&数据库数据)
|
3月前
|
Java 关系型数据库 MySQL
毕设项目&课程设计&毕设项目:springboot+jsp实现的房屋租租赁系统(含教程&源码&数据库数据)
本文介绍了一款基于Spring Boot和JSP技术的房屋租赁系统,旨在通过自动化和信息化手段提升房屋管理效率,优化租户体验。系统采用JDK 1.8、Maven 3.6、MySQL 8.0、JSP、Layui和Spring Boot 2.0等技术栈,实现了高效的房源管理和便捷的租户服务。通过该系统,房东可以轻松管理房源,租户可以快速找到合适的住所,双方都能享受数字化带来的便利。未来,系统将持续优化升级,提供更多完善的服务。
毕设项目&课程设计&毕设项目:springboot+jsp实现的房屋租租赁系统(含教程&源码&数据库数据)
|
2月前
|
Java 关系型数据库 数据库连接
SpringBoot项目使用yml文件链接数据库异常
【10月更文挑战第3天】Spring Boot项目中数据库连接问题可能源于配置错误或依赖缺失。YAML配置文件的格式不正确,如缩进错误,会导致解析失败;而数据库驱动不匹配、连接字符串或认证信息错误同样引发连接异常。解决方法包括检查并修正YAML格式,确认配置属性无误,以及添加正确的数据库驱动依赖。利用日志记录和异常信息分析可辅助问题排查。
275 10
|
2月前
|
Java 关系型数据库 MySQL
SpringBoot项目使用yml文件链接数据库异常
【10月更文挑战第4天】本文分析了Spring Boot应用在连接数据库时可能遇到的问题及其解决方案。主要从四个方面探讨:配置文件格式错误、依赖缺失或版本不兼容、数据库服务问题、配置属性未正确注入。针对这些问题,提供了详细的检查方法和调试技巧,如检查YAML格式、验证依赖版本、确认数据库服务状态及用户权限,并通过日志和断点调试定位问题。
132 6
|
2月前
|
前端开发 Java 数据库连接
表白墙/留言墙 —— 中级SpringBoot项目,MyBatis技术栈MySQL数据库开发,练手项目前后端开发(带完整源码) 全方位全步骤手把手教学
本文是一份全面的表白墙/留言墙项目教程,使用SpringBoot + MyBatis技术栈和MySQL数据库开发,涵盖了项目前后端开发、数据库配置、代码实现和运行的详细步骤。
65 0
表白墙/留言墙 —— 中级SpringBoot项目,MyBatis技术栈MySQL数据库开发,练手项目前后端开发(带完整源码) 全方位全步骤手把手教学
|
3月前
|
Java 数据库连接 数据库
数据库以及其他项目配置
该项目配置了数据库连接和MyBatis设置,并解决了配置文件加载问题。启动类使用 `@SpringBootApplication` 注解,可通过 `@ComponentScan` 指定扫描包。Lombok 自动生成 getter/setter 等方法,简化代码。Result 实体类用于统一返回格式。用户模块包括注册与登录功能,使用 MD5 加密密码、Spring Validation 参数校验及 JWT 认证。JWT 工具类处理令牌生成与解析,并通过拦截器验证。Redis 优化登录功能,利用 ThreadLocal 存储用户信息。此外,还包括文章模块的相关功能,如文章分类管理、
42 2
|
4月前
|
JavaScript Java 关系型数据库
毕设项目&课程设计&毕设项目:基于springboot+vue实现的前后端分离的选课管理系统(含教程&源码&数据库数据)
本文介绍了一个基于Spring Boot和Vue.js技术栈的高校选课管理系统的设计与实现。该系统采用前后端分离架构,旨在提高选课效率、优化资源分配及提升用户体验。技术栈包括:后端Spring Boot 2.0、前端Vue 2.0、数据库MySQL 8.0、开发环境JDK 1.8和Maven 3.6等。系统功能覆盖登录、学生信息管理、选课管理、成绩查询等多个方面,并针对学生、教师和管理员提供了不同的操作界面。系统采用了响应式设计,支持多设备访问,并通过Element UI增强了界面的友好性和交互性。
毕设项目&课程设计&毕设项目:基于springboot+vue实现的前后端分离的选课管理系统(含教程&源码&数据库数据)