首页 技术 正文
技术 2022年11月11日
0 收藏 408 点赞 2,692 浏览 95794 个字

开发工具:Eclipse
前端技术:
基础:html+css+JavaScript
框架:JQuery+H-ui
后端技术:Spring+SpringMVC+mybatis
模板引擎:JSP
数据库:mysql 5.7.27
jdk版本:1.8.0_251
tomcat版本:Tomcat 9.0
数据库连接池:druid

一、功能概述

学生管理系统的用户包括学生、教师及管理员。
(1)学生可以对个人的各科成绩进行查询、个人信息修改、选课、修改登录密码等操作。
(2)教师可以对学生信息、教师个人信息、课程信息、成绩等进行管理,实现对这些信息的查询、录入、添加、修改、删除等操作。
(3)管理员可以对学生、教师、课程、成绩信息进行管理,实现对这些信息的查询、录入、添加、修改、删除以及权限管理等操作。
功能结构图:

二、数据库表结构

成绩表(Score):
学生成绩管理系统(SSM+MySQL+JSP)
学生表(student):
学生成绩管理系统(SSM+MySQL+JSP)
课程表(subject):
学生成绩管理系统(SSM+MySQL+JSP)
教师表(teacher):
学生成绩管理系统(SSM+MySQL+JSP)
用户表(user):

三、项目结构

四、配置SSM文件

Spring-context.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context" xmlns:jdbc="http://www.springframework.org/schema/jdbc"
xmlns:jee="http://www.springframework.org/schema/jee" xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:util="http://www.springframework.org/schema/util" xmlns:task="http://www.springframework.org/schema/task" xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-4.0.xsd
http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-4.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd
http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-4.0.xsd"
default-lazy-init="true"> <description>Spring Configuration</description> <!-- 加载配置属性文件 -->
<context:property-placeholder ignore-unresolvable="true" location="classpath:demo.properties" /> <!-- 使用Annotation自动注册Bean,解决事物失效问题:在主容器中不扫描@Controller注解,在SpringMvc中只扫描@Controller注解。 -->
<context:component-scan base-package="com.stusystem.controller"><!-- base-package 如果多个,用“,”分隔 -->
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan> <!-- MyBatis begin -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="typeAliasesPackage" value="com.stusystem.entity"/>
<property name="mapperLocations" value="classpath:/com/stusystem/mappings/**/*.xml"/>
<property name="configLocation" value="classpath:/mybatis-config.xml"></property>
</bean> <!-- 扫描basePackage下所有以@MyBatisDao注解的接口 -->
<bean id="mapperScannerConfigurer" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
<property name="basePackage" value="com.stusystem.dao"/>
</bean> <!-- 定义事务,用@Transactiona注解表示事物 -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean> <!-- 配置 Annotation 驱动,扫描@Transactional注解的类定义事务 -->
<tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true"/>
<!-- MyBatis end --> <!-- 配置 JSR303 Bean Validator 定义 -->
<bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean" /> <!-- 数据源配置, 使用 BoneCP 数据库连接池 -->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
<!-- 数据源驱动类可不写,Druid默认会自动根据URL识别DriverClass -->
<property name="driverClassName" value="${jdbc.driver}" /> <!-- 基本属性 url、user、password -->
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" /> <!-- 配置初始化大小、最小、最大 -->
<property name="initialSize" value="${jdbc.pool.init}" />
<property name="minIdle" value="${jdbc.pool.minIdle}" />
<property name="maxActive" value="${jdbc.pool.maxActive}" /> <!-- 配置获取连接等待超时的时间 -->
<property name="maxWait" value="60000" /> <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
<property name="timeBetweenEvictionRunsMillis" value="60000" /> <!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
<property name="minEvictableIdleTimeMillis" value="300000" /> <property name="validationQuery" value="${jdbc.testSql}" />
<property name="testWhileIdle" value="true" />
<property name="testOnBorrow" value="false" />
<property name="testOnReturn" value="false" /> <!-- 配置监控统计拦截的filters -->
<property name="filters" value="stat" />
</bean></beans>

Mybatis-config.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration> <!-- 全局参数 -->
<settings>
<!-- 使全局的映射器启用或禁用缓存。 -->
<setting name="cacheEnabled" value="true"/> <!-- 全局启用或禁用延迟加载。当禁用时,所有关联对象都会即时加载。 -->
<setting name="lazyLoadingEnabled" value="true"/> <!-- 当启用时,有延迟加载属性的对象在被调用时将会完全加载任意属性。否则,每种属性将会按需要加载。 -->
<setting name="aggressiveLazyLoading" value="true"/> <!-- 是否允许单条sql 返回多个数据集 (取决于驱动的兼容性) default:true -->
<setting name="multipleResultSetsEnabled" value="true"/> <!-- 是否可以使用列的别名 (取决于驱动的兼容性) default:true -->
<setting name="useColumnLabel" value="true"/> <!-- 允许JDBC 生成主键。需要驱动器支持。如果设为了true,这个设置将强制使用被生成的主键,有一些驱动器不兼容不过仍然可以执行。 default:false -->
<setting name="useGeneratedKeys" value="false"/> <!-- 指定 MyBatis 如何自动映射 数据基表的列 NONE:不隐射 PARTIAL:部分 FULL:全部 -->
<setting name="autoMappingBehavior" value="PARTIAL"/> <!-- 这是默认的执行类型 (SIMPLE: 简单; REUSE: 执行器可能重复使用prepared statements语句;BATCH: 执行器可以重复执行语句和批量更新) -->
<setting name="defaultExecutorType" value="SIMPLE"/> <!-- 使用驼峰命名法转换字段。 -->
<setting name="mapUnderscoreToCamelCase" value="true"/> <!-- 设置本地缓存范围 session:就会有数据的共享 statement:语句范围 (这样就不会有数据的共享 ) defalut:session -->
<setting name="localCacheScope" value="SESSION"/> <!-- 设置但JDBC类型为空时,某些驱动程序 要指定值,default:OTHER,插入空值时不需要指定类型 -->
<setting name="jdbcTypeForNull" value="NULL"/> </settings></configuration>
spring-mvc.xml:<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd"> <description>Spring MVC Configuration</description> <!-- 加载配置属性文件 -->
<context:property-placeholder ignore-unresolvable="true" location="classpath:demo.properties" /> <!-- 使用Annotation自动注册Bean,只扫描@Controller -->
<context:component-scan base-package="com.stusystem" use-default-filters="false"><!-- base-package 如果多个,用“,”分隔 -->
<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan> <!-- 默认的注解映射的支持,org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping -->
<mvc:annotation-driven content-negotiation-manager="contentNegotiationManager">
<mvc:message-converters register-defaults="true">
<!-- 将StringHttpMessageConverter的默认编码设为UTF-8 -->
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<constructor-arg value="UTF-8" />
</bean>
</mvc:message-converters>
</mvc:annotation-driven> <!-- REST中根据URL后缀自动判定Content-Type及相应的View -->
<bean id="contentNegotiationManager" class="org.springframework.web.accept.ContentNegotiationManagerFactoryBean">
<property name="mediaTypes" >
<map>
<entry key="xml" value="application/xml"/>
<entry key="json" value="application/json"/>
</map>
</property>
<property name="ignoreAcceptHeader" value="true"/>
<property name="favorPathExtension" value="true"/>
</bean> <!-- 定义视图文件解析 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/"/>
<!-- <property name="suffix" value="${web.view.suffix}"/> -->
<property name="suffix" value=".jsp"/>
</bean> <!-- 对静态资源文件的访问, 将无法mapping到Controller的path交给default servlet handler处理 -->
<mvc:default-servlet-handler /> <!-- 静态资源映射 -->
<mvc:resources mapping="/static/**" location="/static/" cache-period="31536000"/> <!-- 定义无Controller的path<->view直接映射 -->
<mvc:view-controller path="/" view-name="redirect:${web.view.index}"/> <mvc:interceptors>
<!--多个拦截器,顺序执行 -->
<!-- 登陆认证拦截器 -->
<mvc:interceptor>
<mvc:mapping path="/**"/>
<bean class="com.stusystem.interceptor.LoginInterceptor"></bean>
</mvc:interceptor>
</mvc:interceptors>
</beans>

五、配置web.xml和demo.properties

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id="WebApp_ID" version="3.0">
<display-name>stusystem_3</display-name> <context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:/spring-context*.xml</param-value>
</context-param> <listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener> <listener>
<listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
</listener>
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping> <servlet>
<servlet-name>springServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:/spring-mvc*.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping> <servlet>
<servlet-name>DruidStatView</servlet-name>
<servlet-class>com.alibaba.druid.support.http.StatViewServlet</servlet-class>
<init-param>
<param-name>allow</param-name>
<param-value>127.0.0.1</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>DruidStatView</servlet-name>
<url-pattern>/druid/*</url-pattern>
</servlet-mapping> <session-config>
<session-timeout>600</session-timeout>
</session-config> <servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>/js/*</url-pattern>
<url-pattern>/css/*</url-pattern>
<url-pattern>/images/*</url-pattern>
<url-pattern>/font/*</url-pattern>
<url-pattern>/assets/*</url-pattern>
<url-pattern>/lib/*</url-pattern>
</servlet-mapping> </web-app>

demo.properties

#============================#
#===== Database settings ====#
#============================##mysql database setting
jdbc.type=mysql
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/stusystem?useUnicode=true&characterEncoding=utf-8
jdbc.username=root
jdbc.password=123456#pool settings
jdbc.pool.init=1
jdbc.pool.minIdle=3
jdbc.pool.maxActive=20#jdbc.testSql=SELECT 'x'
jdbc.testSql=SELECT 'x' FROM DUALweb.view.prefix=/
web.view.suffix=.jspweb.view.index=/StuSystem/user/login

六、各个模块代码

UserBean.java:package com.stusystem.entity;
import org.apache.ibatis.type.Alias;
import org.springframework.stereotype.Component;
@Alias("userbean")
@Component
public class Userbean {
private String userName;
private int userId;
private String admin;
private String password;
private String xmm;
public String getXmm() {
return xmm;
}
public void setXmm(String xmm) {
this.xmm = xmm;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public int getUserId() {
return userId;
}
public void setUserId(int userId) {
this.userId = userId;
}
public String getAdmin() {
return admin;
}
public void setAdmin(String admin) {
this.admin = admin;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
UserDao.java:package com.stusystem.dao;import com.stusystem.entity.Userbean;public interface  UserDao {
//验证登录信息
public Userbean getUsrInfoByNameAndPsw(Userbean userbean);
//修改密码
public void mmxg(Userbean userbean);
}
UserDao.xml<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!-- namesapce ,DAO的package路径 -->
<mapper namespace="com.stusystem.dao.UserDao">
<!-- 根据用户输入的用户名和密码查询是否存在此用户 -->
<select id="getUsrInfoByNameAndPsw" parameterType="userbean" resultType="userbean">
select * from user where user_id=#{userId} and password=#{password} and admin=#{admin}
</select>
<!-- 修改登录用户的密码 -->
<update id="mmxg" parameterType="userbean">
UPDATE user SET password = #{xmm} WHERE (user_id=#{userId})
</update>
</mapper>
UserController.java:package com.stusystem.controller;
import java.io.IOException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import com.stusystem.dao.UserDao;
import com.stusystem.entity.Userbean;
@Controller
@RequestMapping(value = "user")
public class UserController {
@Autowired
private UserDao userDao;
// ApplicationContext applicationContext = new ClassPathXmlApplicationContext("classpath:spring-context.xml");
// UserDao userDao = (UserDao) applicationContext.getBean("userDao");
//返回登陆界面
//验证用户的用户名和密码是有和数据库中的匹配
@RequestMapping(value = {"/login"})
public String userlogin() {
return "login";
}
//登陆验证
@RequestMapping(value = {"/loginyanzheng"})
public void loginyanzheng(Userbean userbean,HttpServletResponse response,HttpServletRequest request) throws IOException {
Userbean user = userDao.getUsrInfoByNameAndPsw(userbean);
if(user==null){
response.getWriter().println("{\"status\":0,\"msg\":\"用户名或密码有误!\"}");
}else{
// 用户的信息存放到session中。
HttpSession session = request.getSession();
session.setAttribute("userbean", user);
response.getWriter().println("{\"status\":1,\"url\":\"index\"}");
}
}
//返回系统主界面
@RequestMapping(value = {"/index"})
public String index() {
return "index";
}
//返回关于页面
@RequestMapping(value = {"/gy"})
public String guanyu() {
return "gy";
}
//返回密码修改页面
@RequestMapping(value = {"/dlmmxg"})
public String dlmmxg() {
return "dlmmxg";
}
//修改登录密码
@RequestMapping(value = {"/mmxg"})
public String mmxg(Userbean userbean,HttpServletResponse response,HttpServletRequest request){
Userbean user = userDao.getUsrInfoByNameAndPsw(userbean);
if(user==null){
request.setAttribute("status", '0');
}else{
userDao.mmxg(userbean);
request.setAttribute("status", '1');
}
return "dlmmxg";
}
//退出系统
@RequestMapping(value = {"/loginout"})
public String loginout(HttpServletRequest request){
HttpSession session = request.getSession();
session.invalidate();
return "login";
}
}
login.jsp<!DOCTYPE html>
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<html>
<head>
<meta http-equiv="content-type" content="text/html">
<meta charset="UTF-8">
<title>学生成绩管理系统|登录</title>
<link rel="stylesheet" href="<%=request.getContextPath()%>/css/host.css" rel="external nofollow" >
<link rel="stylesheet" href="<%=request.getContextPath()%>/css/animate.min.css" rel="external nofollow" >
<link rel="stylesheet" href="<%=request.getContextPath()%>/css/bootstrap.min.css" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >
<link rel="stylesheet" href="<%=request.getContextPath()%>/css/font-awesome.min.css" rel="external nofollow" >
<link rel="stylesheet" href="<%=request.getContextPath()%>/css/style.min.css" rel="external nofollow" >
<link rel="stylesheet" href="<%=request.getContextPath()%>/css/iconfont.css" rel="external nofollow" >
<link rel="stylesheet" href="<%=request.getContextPath()%>/js/validator-0.7.3/jquery.validator.css" rel="external nofollow" >
<link rel="stylesheet" href="<%=request.getContextPath()%>/css/sweetalert/sweetalert.css" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >
<script src="<%=request.getContextPath()%>/js/jquery-1.8.3.js"></script>
<script type="text/javascript" src="<%=request.getContextPath()%>/js/validator-0.7.3/jquery.validator.js"></script>
<script type="text/javascript" src="<%=request.getContextPath()%>/js/validator-0.7.3/local/zh_CN.js"></script>
<script type="text/javascript" src="<%=request.getContextPath()%>/js/host.js"></script>
<script type="text/javascript" src="<%=request.getContextPath()%>/js/sweetalert/sweetalert.min.js"></script>
<script type="text/javascript">
function login() {
var userid = document.getElementById("userid").value;
var password = document.getElementById("password").value;
var list = document.getElementsByName("inlineRadioOptions");
var admin = null;
if(!list[0].checked&&!list[1].checked&&!list[2].checked){
return;
}
for(var i = 0 ; i < list.length ; i++){
if(list[i].checked){
admin = list[i].value;
}
} $.ajax({
type : "POST",
data : "userId=" + userid + "&password=" + password +"&admin=" + admin,
dataType : "json",
url : "<%=request.getContextPath()%>/user/loginyanzheng",
success : function(result) { if (result.status == 0) {
swal("哦豁","用户名或密码有误,请重新输入!","error");
} else {
swal({title:"太帅了",text:"登录成功,进入系统!",type:"success"},
function () {
location.href = "/StuSystem_3/user/index";
});
}
}
});
}
</script>
</head>
<body bgcolor="#FFFFFF">
<div class="middle-box text-center loginscreen ">
<div >
<div class="animated animated lightSpeedIn ">
<i class="icon iconfont">󰀨</i>
</div>
<h3>欢迎使用 学生成绩管理系统</h3>
<form class=" animated rollIn" data-validator-option="{theme:'yellow_right_effect',stopOnError:true}">
<div class="form-group">
<input type="text" class="form-control" placeholder="用户名" data-rule="用户名:required;digits" id = "userid">
</div>
<div class="form-group">
<input type="password" class="form-control" placeholder="密码" data-rule="密码:required;password" id = "password">
</div>
<fieldset>
<label class="radio-inline" >
<input type="radio" name="inlineRadioOptions" id="inlineRadio1" value="1" data-rule="checked"> 管理员
</label>
<label class="radio-inline">
<input type="radio" name="inlineRadioOptions" id="inlineRadio2" value="2" > 教师
</label>
<label class="radio-inline">
<input type="radio" name="inlineRadioOptions" id="inlineRadio3" value="3" > 学生
</label>
</fieldset>
<br/>
<br/>
<button type="submit" class="btn btn-primary block full-width " onclick="login();">登 录</button>
</form>
<br/>
<br/>
<div class = "animated bounceInLeft"> </div>
</div>
</div>
<div class="part"></div>
</body>
</html>
index.jsp<!DOCTYPE HTML>
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>学生成绩管理系统|首页</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link href="<%=request.getContextPath()%>/assets/css/dpl-min.css" rel="external nofollow" rel="stylesheet" type="text/css" />
<link href="<%=request.getContextPath()%>/assets/css/bui-min.css" rel="external nofollow" rel="stylesheet" type="text/css" />
<link href="<%=request.getContextPath()%>/assets/css/main.css" rel="external nofollow" rel="stylesheet" type="text/css" />
<script type="text/javascript">
var index = layer.load(0, {shade: false}); //0代表加载的风格,支持0-2 </script>
</head>
<body>
<div class="header">
<div class="dl-title"><span class="">学生成绩管理系统</span></div>
<div class="dl-log">欢迎您,<span class="dl-log-user">${userbean.userName}</span>
<c:choose>
<c:when test="${userbean.admin == 1}">
<span class="admin">(管理员)</span>
</c:when>
</c:choose>
<c:choose>
<c:when test="${userbean.admin == 2}">
<span class="admin">(教师)</span>
</c:when>
</c:choose>
<c:choose>
<c:when test="${userbean.admin == 3}">
<span class="admin">(学生)</span>
</c:when>
</c:choose>
<a href="loginout" rel="external nofollow" title="退出系统" class="dl-log-quit">[退出]</a>
</div>
</div>
<div class="content">
<div class="dl-main-nav">
<ul id="J_Nav" class="nav-list ks-clear">
<li class="nav-item dl-selected"><div class="nav-item-inner nav-storage">首页</div></li>
</ul>
</div>
<ul id="J_NavContent" class="dl-tab-conten">
</ul>
</div>
<script type="text/javascript" src="<%=request.getContextPath()%>/assets/js/jquery-1.8.1.min.js"></script>
<script type="text/javascript" src="<%=request.getContextPath()%>/assets/js/bui-min.js"></script>
<script type="text/javascript" src="<%=request.getContextPath()%>/assets/js/config-min.js"></script>
<script type="text/javascript" src="<%=request.getContextPath()%>/lib/layer/1.9.3/layer.js"></script>
<script>
//学生登录
if('${userbean.admin}'=='3'){
BUI.use('common/main',function(){
var config = [{
id:'menu',
homePage:'gy',
menu:[{
text:'学生操作',
items:[
{id:'cjcx',text:'成绩查询',href:'/StuSystem_3/score/xsgrcjcx?studentId=' + '${userbean.userId}'},
{id:'xsgrkcgl',text:'学生个人课程管理',href:'/StuSystem_3/score/scoreone?page=1&studentId=' + '${userbean.userId}' },
{id:'xsgrxxgl',text:'学生个人信息管理',href:'/StuSystem_3/student/studentone?stuId=' + '${userbean.userId}' },
{id:'dlmmxg',text:'登录密码修改',href:'/StuSystem_3/user/dlmmxg'},
{id:'gy',text:'关于',href:'gy'}
]
}]
}];
new PageUtil.MainPage({
modulesConfig : config
});
});
}
//教师登录
if('${userbean.admin}'=='2'){
BUI.use('common/main',function(){
var config = [{
id:'menu',
homePage:'gy',
menu:[{
text:'教师操作',
items:[
{id:'xsxxgl',text:'学生信息管理',href:'/StuSystem_3/teacher/teacherlist?page=1'},
{id:'kcxxgl',text:'课程信息管理',href:'/StuSystem_3/student/studentlist?page=1'},
{id:'jsgrxxgl',text:'教师个人信息管理',href:'/StuSystem_3/teacher/teacherone?teacherId='+'${userbean.userId}'},
{id:'xscjgl',text:'学生成绩管理',href:'/StuSystem_3/score/scorelist?page=1'},
{id:'dlmmxg',text:'登录密码修改',href:'/StuSystem_3/user/dlmmxg'},
{id:'gy',text:'关于',href:'gy'}
]
}]
}];
new PageUtil.MainPage({
modulesConfig : config
});
});
}
//管理员登录
if('${userbean.admin}'=='1'){
BUI.use('common/main',function(){
var config = [{
id:'menu',
homePage:'gy',
menu:[{
text:'管理员操作',
items:[
{id:'jsxxgl',text:'教师信息管理',href:'/StuSystem_3/teacher/teacherlist?page=1'},
{id:'xsxxgl',text:'学生信息管理',href:'/StuSystem_3/student/studentlist?page=1'},
{id:'kcxxgl',text:'课程信息管理',href:'/StuSystem_3/subject/subjectlist?page=1'},
{id:'xscjgl',text:'学生成绩管理',href:'/StuSystem_3/score/scorelist?page=1'},
{id:'dlmmxg',text:'登录密码修改',href:'/StuSystem_3/user/dlmmxg'},
{id:'gy',text:'关于',href:'gy'}
]
}]
}];
new PageUtil.MainPage({
modulesConfig : config
});
});
}
</script>
</body>
</html>
dlmmxg.jsp<!DOCTYPE HTML>
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link href="<%=request.getContextPath()%>/css/H-ui.css" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="stylesheet" type="text/css" />
<link href="<%=request.getContextPath()%>/css/H-ui.1.x.patch.css" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="stylesheet" type="text/css" />
<link rel="stylesheet" href="<%=request.getContextPath()%>/css/sweetalert/sweetalert.css" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >
<script src="<%=request.getContextPath()%>/js/jquery-1.8.3.js"></script>
<script type="text/javascript" src="<%=request.getContextPath()%>/lib/Validform/5.3.2/Validform.js"></script>
<script type="text/javascript" src="<%=request.getContextPath()%>/lib/Validform/5.3.2/passwordStrength-min.js"></script>
<script src="<%=request.getContextPath()%>/js/sweetalert/sweetalert.min.js"></script>
<script type="text/javascript">
$(function(){
$("#demoform-2").Validform({
tiptype:2,
usePlugin:{
datepicker:{},//日期控件校验;
passwordstrength:{
minLen:6,//设置密码长度最小值,默认为0;
maxLen:18,//设置密码长度最大值,默认为30;
trigger:function(obj,error){
//该表单元素的keyup和blur事件会触发该函数的执行;
//obj:当前表单元素jquery对象;
//error:所设密码是否符合验证要求,验证不能通过error为true,验证通过则为false;
//console.log(error);
if(error){
obj.parent().find(".Validform_checktip").show();
obj.parent().find(".passwordStrength").hide();
}else{
obj.parent().find(".passwordStrength").show();
}
}
}
}
});
});
</script>
<title>教师信息编辑页面</title>
</head>
<body>
<form action="mmxg" method="post" class="form form-horizontal responsive" id="demoform-2">
<div class="row cl">
<label class="form-label col-2">旧密码:</label>
<div class="formControls col-5">
<input type="text" name="userId" id = "userId" value="${userbean.userId}" style="display:none;"/>
<input type="text" name="admin" id = "admin" value="${userbean.admin}" style="display:none;"/>
<input type="password" class="input-text" placeholder="请输入旧密码" name="password" id="password" datatype="*6-16" nullmsg="旧密码不能为空" value = "">
</div>
<div class="col-5">
</div>
</div>
<div class="row cl">
<label class="form-label col-2">新密码:</label>
<div class="formControls col-5">
<input type="password" class="input-text" autocomplete="off" placeholder="密码" name="xmm" id="password1" datatype="*6-18" nullmsg="请输入密码!" >
</div>
<div class="col-5">
</div>
</div>
<div class="row cl">
<label class="form-label col-2">密码验证:</label>
<div class="formControls col-5">
<input type="password" class="input-text" autocomplete="off" placeholder="密码" name="password2" id="password2" recheck="xmm" datatype="*6-18" nullmsg="请再输入一次密码!" errormsg="您两次输入的密码不一致!" >
</div>
<div class="col-5">
</div>
</div>
<div class="row cl">
<div class="col-10 col-offset-2">
<input class="btn btn-primary" type="submit" onclick="tijiao();" value="&nbsp;&nbsp;提交&nbsp;&nbsp;">
</div>
</div>
</form>
</body>
<script type="text/javascript">if("${status}" == '1'){
swal({title:"密码修改成功!",text:"您已经向服务器了这条信息!",type:"success"},
function () {
location.href = "dlmmxg";
});}else if("${status}" == '0'){
swal("哦豁","修改失败失败,请确保密码输入正确!","error");
}else{}</script>
</html>

(2)学生模块

StudentBean.java:package com.stusystem.entity;public class StudentBean {
private int stuId;
private String stuName;
private String stuSex;
private String stuSystem;
private String stuClass;
private String stuPhone;
private int page;
public int getPage() {
return (page-1)*6;
}
public void setPage(int page) {
this.page = page;
}
public int getStuId() {
return stuId;
}
public void setStuId(int stuId) {
this.stuId = stuId;
}
public String getStuName() {
return stuName;
}
public void setStuName(String stuName) {
this.stuName = stuName;
}
public String getStuSex() {
return stuSex;
}
public void setStuSex(String stuSex) {
this.stuSex = stuSex;
}
public String getStuSystem() {
return stuSystem;
}
public void setStuSystem(String stuSystem) {
this.stuSystem = stuSystem;
}
public String getStuClass() {
return stuClass;
}
public void setStuClass(String stuClass) {
this.stuClass = stuClass;
}
public String getStuPhone() {
return stuPhone;
}
public void setStuPhone(String stuPhone) {
this.stuPhone = stuPhone;
}
}
StudentDao.java:package com.stusystem.dao;
import java.util.List;
import com.stusystem.entity.StudentBean;
public interface StudentDao {
public List<StudentBean> getStudent(StudentBean studentbean) throws Exception;//返回学生信息的list
public int getstupage(StudentBean studentbean) throws Exception;//分页处理
public StudentBean getStudentone (StudentBean studentbean) throws Exception;//返回一条学生信息
public void studentdel(StudentBean studentbean) throws Exception;//删除一条学生信息
public void studentadd(StudentBean studentbean) throws Exception;//增加一条学生信息
public void studentxiugai(StudentBean studentbean) throws Exception;//修改一条学生信息
}
StudentDao.xml:```java
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!-- namespace ,DAO的package路径 -->
<mapper namespace="com.stusystem.dao.StudentDao">
<!-- 查询出多条学生信息 -->
<select id="getStudent" parameterType="com.stusystem.entity.StudentBean" resultType="com.stusystem.entity.StudentBean">
<if test=" stuName != null and stuName != '' "> SELECT * FROM student where stu_name = #{stuName} limit #{page} , 6 </if>
<if test=" stuName == null or stuName == '' "> SELECT * FROM student limit #{page} , 6 </if>
</select>
<!--分页处理 -->
<select id="getstupage" parameterType="com.stusystem.entity.StudentBean" resultType="int">
<if test=" stuName != null and stuName != '' "> select count(*) from student where stu_name = #{stuName} </if>
<if test=" stuName == null or stuName == '' "> select count(*) from student </if>
</select>
<!--根据id查询出一条学生信息-->
<select id="getStudentone" parameterType="com.stusystem.entity.StudentBean" resultType="com.stusystem.entity.StudentBean" >
SELECT * FROM student WHERE stu_id=#{stuId}
</select>
<!-- 删除一条学生信息 -->
<delete id="studentdel" parameterType="com.stusystem.entity.StudentBean" >
DELETE FROM student WHERE (stu_id=#{stuId})
</delete>
<!-- 修改一条学生信息 -->
<update id="studentxiugai" parameterType="com.stusystem.entity.StudentBean">
UPDATE student SET stu_name=#{stuName}, stu_sex=#{stuSex}, stu_system=#{stuSystem}, stu_phone=#{stuPhone}, stu_class=#{stuClass} WHERE (stu_id=#{stuId})
</update>
<!-- 添加一条学生信息 -->
<insert id="studentadd" parameterType="com.stusystem.entity.StudentBean">
INSERT INTO student (stu_name, stu_sex, stu_system, stu_phone, stu_class) VALUES (#{stuName},#{stuSex},#{stuSystem},#{stuPhone},#{stuClass})
</insert>
</mapper>
StudentController.javapackage com.stusystem.controller;import java.io.IOException;
import java.net.URLDecoder;
import java.util.List;import javax.servlet.http.HttpServletResponse;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 com.stusystem.dao.StudentDao;
import com.stusystem.entity.StudentBean;@Controller
@RequestMapping(value = "student")
public class StudentController {
@Autowired
private StudentDao studentDao;
// ApplicationContext applicationContext = new ClassPathXmlApplicationContext("classpath:spring-context.xml");
// StudentDao studentDao = (StudentDao) applicationContext.getBean("studentDao"); //得到学生列表和页数.返回到学生信息页面
@RequestMapping(value = {"/studentlist"})
public String getStudent(StudentBean stu,Model model) throws Exception{
if(stu.getStuName()!=null&&stu.getStuName()!=""){
stu.setStuName(URLDecoder.decode(stu.getStuName(), "UTF-8"));
}
List<StudentBean> stulist = studentDao.getStudent(stu);
int stupage = studentDao.getstupage(stu);
model.addAttribute("studentlist", stulist);
model.addAttribute("stupage", stupage);
model.addAttribute("studentname", stu.getStuName());
return "studentlist";
}
//得到一个学生信息。返回到一个学生信息页面
@RequestMapping(value = {"/studentone"})
public String getStudentone(StudentBean stu,Model model) throws Exception {
StudentBean studentone = studentDao.getStudentone(stu);
model.addAttribute("stuone", studentone);
return "studentone";
}
//得到一个学生信息。返回到学生编辑页面
@RequestMapping(value = {"/studenteditor"})
public String studenteditor(StudentBean stu,Model model) throws Exception {
if(stu.getStuId()==0){
return "studenteditor";
}else{
StudentBean studentone = studentDao.getStudentone(stu);
model.addAttribute("studentone", studentone);
return "studenteditor";
}
}
//删除学生信息
@RequestMapping(value = {"/studentdel"})
public void studentdel(StudentBean stu,HttpServletResponse response) throws IOException {
int a = 0;
try {
studentDao.studentdel(stu);
} catch (Exception e) {
a=a+1;
response.getWriter().println("{'status':'0'}");
e.printStackTrace();
}
if(a==0){
response.getWriter().println("{'status':'1'}");
}else{
}
}
//添加/修改 ( 以是否有stuId来判断) 学生信息
@RequestMapping(value = {"/studentadd"})
public void studentadd(StudentBean stu,HttpServletResponse response) throws IOException{
int a = 0;
try {
if(stu.getStuId()==0){
stu.setStuName(URLDecoder.decode(stu.getStuName(), "UTF-8"));
stu.setStuSystem(URLDecoder.decode(stu.getStuSystem(), "UTF-8"));
stu.setStuSex(URLDecoder.decode(stu.getStuSex(), "UTF-8"));
stu.setStuClass(URLDecoder.decode(stu.getStuClass(), "UTF-8"));
studentDao.studentadd(stu);
}else{
stu.setStuName(URLDecoder.decode(stu.getStuName(), "UTF-8"));
stu.setStuSystem(URLDecoder.decode(stu.getStuSystem(), "UTF-8"));
stu.setStuSex(URLDecoder.decode(stu.getStuSex(), "UTF-8"));
stu.setStuClass(URLDecoder.decode(stu.getStuClass(), "UTF-8"));
studentDao.studentxiugai(stu);
}
} catch (Exception e) {
a=a+1;
response.getWriter().println("{'status':'0'}");
e.printStackTrace();
}
if(a==0){
response.getWriter().println("{'status':'1'}");
}else{
}
}
}
studentlist.jsp<!DOCTYPE HTML>
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html >
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="stylesheet" href="<%=request.getContextPath()%>/css/bootstrap.min.css" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >
<link rel="stylesheet" href="<%=request.getContextPath()%>/font/iconfont.css" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >
<link rel="stylesheet" href="<%=request.getContextPath()%>/css/sweetalert/sweetalert.css" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >
<script src="<%=request.getContextPath()%>/js/jquery.js"></script>
<script src="<%=request.getContextPath()%>/lib/layer/1.9.3/layer.js"></script>
<script src="<%=request.getContextPath()%>/lib/laypage/1.2/laypage.js"></script>
<script src="<%=request.getContextPath()%>/js/sweetalert/sweetalert.min.js"></script>
<script type="text/javascript">
function del(studentid) {
swal({
title: "您确定要删除这条信息吗",
text: "删除后将无法恢复,请谨慎操作!",
type: "warning",
showCancelButton: true,
confirmButtonColor: "#DD6B55",
confirmButtonText: "删除",
closeOnConfirm: false
}, function () {
if (window.XMLHttpRequest){
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
} //创建XMLHttpRequest对象
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState==4 && xmlhttp.status==200){
var a = eval("("+xmlhttp.responseText+")");
if(a.status== 1){
swal({title:"删除成功!",text:"您已经永久删除了这条信息!",type:"success"},
function () {
var b = '${stupage}' ;
b = Math.ceil(b/6) ;
location.href = "studentlist?page=" + b;
});
}else{
swal("哦豁","删除失败,请重试!","error");
}
}
} ; //服务器响应时完成相应操作
xmlhttp.open("post","studentdel?stuId="+studentid,true);
xmlhttp.send();
});
}
</script>
<title>学生列表</title>
</head>
<body background="<%=request.getContextPath()%>/images/010.gif">
<div class="container-fluid">
<div class="row">
<div class="col-md-4"></div>
<div class="col-md-4"><h2 class="text-center">学生信息管理表</h2></div>
<div class="col-md-4"></div>
</div>
</div>
<div class="row">
<div class="col-md-3">
<div class="input-group">
<input type="text" class="form-control" placeholder="输入学生姓名搜索" id = "sousuo" value = "${studentname}">
<span class="input-group-btn">
<button class="btn btn-default" type="button" onclick="sousuo();">Go!</button>
</span>
</div>
</div>
<div class="col-md-3"><button type="button" class="btn btn-default" onclick="tianjia();">添加+</button></div>
<div class="col-md-6"></div>
</div> <br/>
<table class="table table-hover">
<tr class="info">
<th>学号</th>
<th>学生姓名</th>
<th>学生性别</th>
<th>所在系</th>
<th>班级</th>
<th>电话号码</th>
<th>操作</th>
</tr>
<c:forEach items="${studentlist}" var="stu">
<tr>
<td>${stu.stuId}</td>
<td>${stu.stuName}</td>
<td>${stu.stuSex}</td>
<td>${stu.stuSystem}</td>
<td>${stu.stuClass}</td>
<td>${stu.stuPhone}</td>
<td><button type="button" class="btn btn-info btn-xs" onclick="bianji(${stu.stuId});" ><i class="iconfont"></i>&nbsp;编辑</button>&nbsp;&nbsp;<button type="button" onclick="del(${stu.stuId});" class="btn btn-danger btn-xs"><i class="iconfont"></i>&nbsp;删除</button></td>
</tr>
</c:forEach>
</table>
<div id="page11" style="margin-top:5px; text-align:center;"></div>
</body>
<script src="<%=request.getContextPath()%>/lib/laypage/1.2/laypage.js"></script>
<script type="text/javascript">
laypage({
cont: 'page11',
pages: Math.ceil("${stupage}"/6), //可以叫服务端把总页数放在某一个隐藏域,再获取。假设我们获取到的是18 length
skip: true, //是否开启跳页
skin: '#6699FF',
curr: function(){ //通过url获取当前页,也可以同上(pages)方式获取
var page = location.search.match(/page=(\d+)/);
return page ? page[1] : 1;
}(),
jump: function(e, first){ //触发分页后的回调
if(!first){ //一定要加此判断,否则初始时会无限刷新
var studengtname = document.getElementById("sousuo").value;
location.href = '?page='+e.curr + '&stuName=' + encodeURI(encodeURI(studengtname));
}
}
});
</script>
<script type="text/javascript">
function bianji(studentId) {
layer.open({
type: 2,
title: '学生信息编辑页面',
shadeClose: true,
shade: 0.8,
shift: 1, //0-6的动画形式,-1不开启
area: ['800px', '80%'],
content: 'studenteditor?stuId='+ studentId
});
}
function tianjia() {
layer.open({
type: 2,
title: '学生信息添加页面',
shadeClose: true,
shade: 0.8,
shift: 1, //0-6的动画形式,-1不开启
area: ['800px', '80%'],
content: 'studenteditor?stuId=0'
});
}
</script>
<script type="text/javascript">
function sousuo() {
var studentname = document.getElementById("sousuo").value;
location.href = 'studentlist?stuName='+ encodeURI(encodeURI(studentname)) + '&page=1' ;
}
</script>
</html>
studentone.jsp<!DOCTYPE HTML>
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<html >
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="stylesheet" href="<%=request.getContextPath()%>/css/bootstrap.min.css" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >
<link rel="stylesheet" href="<%=request.getContextPath()%>/font/iconfont.css" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >
<link rel="stylesheet" href="<%=request.getContextPath()%>/css/sweetalert/sweetalert.css" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >
<script src="<%=request.getContextPath()%>/js/jquery.js"></script>
<script src="<%=request.getContextPath()%>/lib/layer/1.9.3/layer.js"></script>
<script src="<%=request.getContextPath()%>/lib/laypage/1.2/laypage.js"></script>
<script src="<%=request.getContextPath()%>/js/sweetalert/sweetalert.min.js"></script>
<title>学生信息列表</title>
</head>
<body background="<%=request.getContextPath()%>/images/010.gif">
<div class="container-fluid">
<div class="row">
<div class="col-md-4"></div>
<div class="col-md-4"><h2 class="text-center">学生个人信息管理表</h2></div>
<div class="col-md-4"></div>
</div>
</div>
<br/>
<table class="table table-hover">
<tr class="info">
<th>学号</th>
<th>学生姓名</th>
<th>学生性别</th>
<th>所在系</th>
<th>班级</th>
<th>电话号码</th>
<th>操作</th>
</tr>
<tr>
<td>${stuone.stuId}</td>
<td>${stuone.stuName}</td>
<td>${stuone.stuSex}</td>
<td>${stuone.stuSystem}</td>
<td>${stuone.stuClass}</td>
<td>${stuone.stuPhone}</td>
<td>
<button id = "xiugai" type="button" class="btn btn-info btn-xs" οnclick="xiugai();" >
<i class="iconfont"></i>
&nbsp;编辑
</button>
</td>
</tr>
</table>
</body>
<script type="text/javascript">
function xiugai() {
layer.open({
type: 2,
title: '学生个人信息修改页面',
shadeClose: true,
shade: 0.8,
shift: 1, //0-6的动画形式,-1不开启
area: ['800px', '80%'],
content: 'studenteditor?stuId='+"${stuone.stuId}"
});
}
</script>
</html>
studenteditor.jsp<!DOCTYPE HTML>
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link href="<%=request.getContextPath()%>/css/H-ui.css" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="stylesheet" type="text/css" />
<link href="<%=request.getContextPath()%>/css/H-ui.1.x.patch.css" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="stylesheet" type="text/css" />
<link rel="stylesheet" href="<%=request.getContextPath()%>/css/sweetalert/sweetalert.css" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >
<script src="<%=request.getContextPath()%>/js/jquery-1.8.3.js"></script>
<script type="text/javascript" src="<%=request.getContextPath()%>/lib/Validform/5.3.2/Validform.js"></script>
<script type="text/javascript" src="<%=request.getContextPath()%>/lib/Validform/5.3.2/passwordStrength-min.js"></script>
<script src="<%=request.getContextPath()%>/js/sweetalert/sweetalert.min.js"></script>
<script type="text/javascript">
$(function(){
$("#demoform-2").Validform({
tiptype:2,
usePlugin:{
datepicker:{},//日期控件校验;
passwordstrength:{
minLen:6,//设置密码长度最小值,默认为0;
maxLen:18,//设置密码长度最大值,默认为30;
trigger:function(obj,error){
//该表单元素的keyup和blur事件会触发该函数的执行;
//obj:当前表单元素jquery对象;
//error:所设密码是否符合验证要求,验证不能通过error为true,验证通过则为false;
//console.log(error);
if(error){
obj.parent().find(".Validform_checktip").show();
obj.parent().find(".passwordStrength").hide();
}else{
obj.parent().find(".passwordStrength").show();
}
}
}
}
});
});
</script>
<title>教师信息编辑页面</title>
</head>
<body>
<form action="" method="post" class="form form-horizontal responsive" id="demoform-2">
<div class="row cl">
<label class="form-label col-2">姓名:</label>
<div class="formControls col-5">
<input type="text" name="studentid" id = "studentid" value="${studentone.stuId}" style="display:none;"/>
<input type="text" class="input-text" placeholder="请输入学生姓名" name="studentname" id="studentname" datatype="s2-5" nullmsg="学生姓名不能为空" value = "${studentone.stuName}">
</div>
<div class="col-5">
</div>
</div>
<div class="row cl">
<label class="form-label col-2">所在系:</label>
<div class="formControls col-5">
<input type="text" class="input-text" placeholder="请输入学生所在系" name="studentsystem" id="studentsystem" datatype="s2-10" nullmsg="所在系不能为空" value = "${studentone.stuSystem}">
</div>
<div class="col-5">
</div>
</div>
<div class="row cl">
<label class="form-label col-2">电话号码:</label>
<div class="formControls col-5">
<input type="text" class="input-text" autocomplete="off" placeholder="手机号码" name="studentphone" id="studentphone" datatype="m" nullmsg="电话号码不能为空" value = "${studentone.stuPhone}">
</div>
<div class="col-5">
</div>
</div>
<div class="row cl">
<label class="form-label col-2">班级:</label>
<div class="formControls col-5">
<input type="text" class="input-text" placeholder="请输入学生班级" name="studentclass" id="studentclass" datatype="s2-10" nullmsg="班级不能为空" value = "${studentone.stuClass}">
</div>
<div class="col-5">
</div>
</div>
<div class="row cl">
<label class="form-label col-2">学生性别:</label>
<div class="formControls skin-minimal col-5">
<div class="radio-box">
<input type="radio" id="sex-1" name="studentsex" value = "男" datatype="*" nullmsg="请选择性别!">
<label for="sex-1">男</label>
</div>
<div class="radio-box">
<input type="radio" id="sex-2" name="studentsex" value = "女">
<label for="sex-2">女</label>
</div>
</div>
<div class="col-5">
</div>
</div>
<div class="row cl">
<div class="col-10 col-offset-2">
<input class="btn btn-primary" type="button" οnclick="hehe();" id = "tijiao" value="&nbsp;&nbsp;提交&nbsp;&nbsp;">
</div>
</div>
</form>
</body>
<script type="text/javascript">
if('${studentone.stuSex}' =="女"){
document.getElementById('sex-2').checked="checked";
}else if('${studentone.stuSex}' =="男") {
document.getElementById('sex-1').checked="checked";
}else{ }
</script>
<script type="text/javascript">
function hehe() {
var studentname = document.getElementById("studentname").value;
var studentsystem = document.getElementById("studentsystem").value;
var studentid = document.getElementById("studentid").value;
if(studentid==""){
studentid = 0;
}
var studentphone = document.getElementById("studentphone").value;
var studentclass = document.getElementById("studentclass").value;
var list = document.getElementsByName("studentsex");
var studentsex = null;
for(var i = 0 ; i < list.length ; i++){
if(list[i].checked){
studentsex = list[i].value;
}
}
if(studentname==""||studentsystem==""||studentphone==""||studentclass==""||studentsex==""){
swal("哦豁","提交失败,请重试!","error");
return;
}
if (window.XMLHttpRequest){
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
} //创建XMLHttpRequest对象
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState==4 && xmlhttp.status==200){
var a = eval("("+xmlhttp.responseText+")");
if(a.status == 1){
swal({title:"提交成功!",text:"您已经向服务器了这条信息!",type:"success"},
function () {
parent.top.topManager.reloadPage();
parent.layer.closeAll();
});
}else{
swal("哦豁","提交失败,请重试!","error");
}
}
} ; //服务器响应时完成相应操作
xmlhttp.open("post","studentadd?stuName="+encodeURI(encodeURI(studentname)) + "&stuSystem=" + encodeURI(encodeURI(studentsystem))+ "&stuId=" + studentid + "&stuPhone=" + encodeURI(encodeURI(studentphone))+ "&stuClass=" + encodeURI(encodeURI(studentclass))+ "&stuSex=" + encodeURI(encodeURI(studentsex)) ,true);
xmlhttp.send();
}
</script>
</html>

(3)教师模块

TeacherBean.javapackage com.stusystem.entity;
import org.apache.ibatis.type.Alias;
import org.springframework.stereotype.Component;
@Alias("teacherBean")
@Component
public class TeacherBean {
private int teacherId;
private String teacherName;
private String teacherSex;
private String teacherSystem;
private String teacherPhone;
private String teacherEmail;
public String getTeacherEmail() {
return teacherEmail;
}
public void setTeacherEmail(String teacherEmail) {
this.teacherEmail = teacherEmail;
}
private int page;
public int getPage() {
return (page-1)*6;
}
public void setPage(int page) {
this.page = page;
}
public int getTeacherId() {
return teacherId;
}
public void setTeacherId(int teacherId) {
this.teacherId = teacherId;
}
public String getTeacherName() {
return teacherName;
}
public void setTeacherName(String teacherName) {
this.teacherName = teacherName;
}
public String getTeacherSystem() {
return teacherSystem;
}
public String getTeacherSex() {
return teacherSex;
}
public void setTeacherSex(String teacherSex) {
this.teacherSex = teacherSex;
}
public void setTeacherSystem(String teacherSystem) {
this.teacherSystem = teacherSystem;
}
public String getTeacherPhone() {
return teacherPhone;
}
public void setTeacherPhone(String teacherPhone) {
this.teacherPhone = teacherPhone;
}
}
TeacherDao.javapackage com.stusystem.dao;
import com.stusystem.entity.*;
import java.util.*;
public interface TeacherDao {
public List<TeacherBean> getTeacher(TeacherBean teacherbean) throws Exception;
public int getteapage(TeacherBean teacherbean) throws Exception;//返回教师信息有多少页
public TeacherBean getTeacherone(TeacherBean teacherbean) throws Exception;//根据Id返回一条教师记录
public void teacherdel(TeacherBean teacherbean) throws Exception;
public void teacheradd(TeacherBean teacherbean) throws Exception;
public void teacherxiugai(TeacherBean teacherbean) throws Exception;
}
TeacherDao.xml<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- namespace ,DAO的package路径 -->
<mapper namespace="com.stusystem.dao.TeacherDao">
<select id="getTeacher" parameterType="teacherBean" resultType="teacherBean">
<if test=" teacherName != null and teacherName != '' "> SELECT * FROM teacher where teacher_name = #{teacherName} limit #{page} , 6 </if>
<if test=" teacherName == null or teacherName == '' "> SELECT * FROM teacher limit #{page} , 6 </if>
</select>
<!-- 查询出所有教师信息可以分为多少页,在前端做分页处理 -->
<select id="getteapage" parameterType="teacherBean" resultType="int">
<if test=" teacherName != null and teacherName != '' "> select count(*) from `teacher` where teacher_name = #{teacherName} </if>
<if test=" teacherName == null or teacherName == '' "> select count(*) from `teacher` </if>
</select>
<!-- 根据id查询出一条教师信息 -->
<select id="getTeacherone" parameterType="teacherBean" resultType="teacherBean" >
SELECT * FROM teacher WHERE teacher_id=#{teacherId}
</select>
<!-- 删除一条教师记录 -->
<delete id="teacherdel" parameterType="teacherBean" >
DELETE FROM `teacher` WHERE (`teacher_id`=#{teacherId})
</delete>
<!--修改一条教师记录 -->
<update id="teacherxiugai" parameterType="teacherBean">
UPDATE teacher SET teacher_name=#{teacherName}, teacher_sex=#{teacherSex}, teacher_system=#{teacherSystem}, teacher_phone=#{teacherPhone}, teacher_email=#{teacherEmail} WHERE (teacher_id=#{teacherId})
</update>
<!-- 添加一条教师记录 -->
<insert id="teacheradd" parameterType="teacherBean">
INSERT INTO `teacher` (`teacher_name`, `teacher_sex`, `teacher_system`, `teacher_phone`, `teacher_email`) VALUES (#{teacherName},#{teacherSex},#{teacherSystem},#{teacherPhone},#{teacherEmail})
</insert>
</mapper>
TeacherController,javapackage com.stusystem.controller;import java.io.IOException;
import java.net.URLDecoder;
import java.util.List;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;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 com.stusystem.dao.TeacherDao;
import com.stusystem.entity.TeacherBean;@Controller
@RequestMapping("teacher")
public class TeacherController {
@Autowired
TeacherDao teacherDao;
@RequestMapping("/teacherlist")
public String getTeacher(TeacherBean tea,Model model,HttpServletRequest request) throws Exception{
if(tea.getTeacherName()!=null&&tea.getTeacherName()!=""){
tea.setTeacherName(URLDecoder.decode(tea.getTeacherName(), "UTF-8"));
}
List<TeacherBean> teacherlist=teacherDao.getTeacher(tea);
int teapage=teacherDao.getteapage(tea);
model.addAttribute("teacherlist",teacherlist);
model.addAttribute("teapage",teapage);
model.addAttribute("teachername",tea.getTeacherName());
return "teacherlist";
}
@RequestMapping("/teacherone")
public String getTeacherone(TeacherBean tea,Model model) throws Exception{
TeacherBean teacherone=teacherDao.getTeacherone(tea);
model.addAttribute("teaone",teacherone);
return "teacherone";
}
@RequestMapping("/teachereditor")
public String teachereditor(TeacherBean tea,Model model) throws Exception{
if(tea.getTeacherId()==0) {
return "teachereditor";
}else {
TeacherBean teacherone=teacherDao.getTeacherone(tea);
model.addAttribute("teacherone",teacherone);
return "teachereditor";
}
}
@RequestMapping("/teacherdel")
public void teacherdel(TeacherBean tea,HttpServletResponse response) throws IOException{
int a = 0;
try {
teacherDao.teacherdel(tea);
} catch (Exception e) {
a=a+1;
response.getWriter().println("{'status':'0'}");
e.printStackTrace();
}
if(a==0){
response.getWriter().println("{'status':'1'}");
}else{
} }
//添加一条教师用户信息
@RequestMapping(value = {"/teacheradd"})
public void teacheradd(TeacherBean tea,HttpServletResponse response) throws IOException{
int a = 0;
try {
if(tea.getTeacherId()==0){
tea.setTeacherName(URLDecoder.decode(tea.getTeacherName(), "UTF-8"));
tea.setTeacherSystem(URLDecoder.decode(tea.getTeacherSystem(), "UTF-8"));
tea.setTeacherSex(URLDecoder.decode(tea.getTeacherSex(), "UTF-8"));
tea.setTeacherEmail(URLDecoder.decode(tea.getTeacherEmail(), "UTF-8"));
teacherDao.teacheradd(tea);
}else{
tea.setTeacherName(URLDecoder.decode(tea.getTeacherName(), "UTF-8"));
tea.setTeacherSystem(URLDecoder.decode(tea.getTeacherSystem(), "UTF-8"));
tea.setTeacherSex(URLDecoder.decode(tea.getTeacherSex(), "UTF-8"));
tea.setTeacherEmail(URLDecoder.decode(tea.getTeacherEmail(), "UTF-8"));
teacherDao.teacherxiugai(tea);
}
} catch (Exception e) {
a=a+1;
response.getWriter().println("{'status':'0'}");
e.printStackTrace();
}
if(a==0){
response.getWriter().println("{'status':'1'}");
}else{
}
}
}
teacherlist.jsp<!DOCTYPE HTML>
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html >
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="stylesheet" href="<%=request.getContextPath()%>/css/bootstrap.min.css" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >
<link rel="stylesheet" href="<%=request.getContextPath()%>/font/iconfont.css" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >
<link rel="stylesheet" href="<%=request.getContextPath()%>/css/sweetalert/sweetalert.css" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >
<script src="<%=request.getContextPath()%>/js/jquery.js"></script>
<script src="<%=request.getContextPath()%>/lib/layer/1.9.3/layer.js"></script>
<script src="<%=request.getContextPath()%>/lib/laypage/1.2/laypage.js"></script>
<script src="<%=request.getContextPath()%>/js/sweetalert/sweetalert.min.js"></script>
<script type="text/javascript">
function del(teacherid) {
swal({
title: "您确定要删除这条信息吗",
text: "删除后将无法恢复,请谨慎操作!",
type: "warning",
showCancelButton: true,
confirmButtonColor: "#DD6B55",
confirmButtonText: "删除",
closeOnConfirm: false
}, function () {
if (window.XMLHttpRequest){
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
} //创建XMLHttpRequest对象
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState==4 && xmlhttp.status==200){
var a = eval("("+xmlhttp.responseText+")");
if(a.status== 1){
swal({title:"删除成功!",text:"您已经永久删除了这条信息!",type:"success"},
function () {
var b = '${teapage}' ;
b = Math.ceil(b/6) ;
location.href = "teacherlist?page="+b;
});
}else{
swal("哦豁","删除失败,请重试!","error");
}
}
} ; //服务器响应时完成相应操作
xmlhttp.open("post","teacherdel?teacherId="+teacherid,true);
xmlhttp.send();
});
}
</script>
<title>教师列表</title>
</head>
<body background="<%=request.getContextPath()%>/images/010.gif">
<div class="container-fluid">
<div class="row">
<div class="col-md-4"></div>
<div class="col-md-4"><h2 class="text-center">教师信息管理表</h2></div>
<div class="col-md-4"></div>
</div>
</div>
<div class="row">
<div class="col-md-3">
<div class="input-group">
<input type="text" class="form-control" id ="sousuo" placeholder="输入教师姓名搜索" value = "${teachername}" >
<span class="input-group-btn">
<button class="btn btn-default" type="button" onclick="sousuo();">Go!</button>
</span>
</div>
</div>
<div class="col-md-3"><button type="button" class="btn btn-default" onclick="tianjia();">添加+</button></div>
<div class="col-md-6"></div>
</div>
<br/>
<table class="table table-hover">
<tr class="info">
<th>教师编号</th>
<th>教师姓名</th>
<th>教师性别</th>
<th>所在系</th>
<th>电话号码</th>
<th>邮箱</th>
<th>操作</th>
</tr>
<c:forEach items="${teacherlist}" var="tea">
<tr>
<td>${tea.teacherId}</td>
<td>${tea.teacherName}</td>
<td>${tea.teacherSex}</td>
<td>${tea.teacherSystem}</td>
<td>${tea.teacherPhone}</td>
<td>${tea.teacherEmail}</td>
<td><button type="button" class="btn btn-info btn-xs" onclick="bianji(${tea.teacherId});" ><i class="iconfont"></i>&nbsp;编辑</button>&nbsp;&nbsp;<button type="button" onclick="del(${tea.teacherId});" class="btn btn-danger btn-xs"><i class="iconfont"></i>&nbsp;删除</button></td>
</tr>
</c:forEach>
</table>
<div id="page11" style="margin-top:5px; text-align:center;"></div>
</body>
<script src="<%=request.getContextPath()%>/lib/laypage/1.2/laypage.js"></script>
<script type="text/javascript">
laypage({
cont: 'page11',
pages: Math.ceil("${teapage}"/6), //可以叫服务端把总页数放在某一个隐藏域,再获取。假设我们获取到的是18
skip: true, //是否开启跳页
skin: '#6699FF',
curr: function(){ //通过url获取当前页,也可以同上(pages)方式获取
var page = location.search.match(/page=(\d+)/);
return page ? page[1] : 1;
}(),
jump: function(e, first){ //触发分页后的回调
if(!first){ //一定要加此判断,否则初始时会无限刷新
var teachername = document.getElementById("sousuo").value;
location.href = '?page='+e.curr + '&teacherName=' + encodeURI(encodeURI(teachername));
}
}
});
</script>
<script type="text/javascript">
function bianji(teacherId) {
layer.open({
type: 2,
title: '教师信息编辑页面',
shadeClose: true,
shade: 0.8,
shift: 1, //0-6的动画形式,-1不开启
area: ['800px', '80%'],
content: 'teachereditor?teacherId='+ teacherId
});
}
function tianjia() {
layer.open({
type: 2,
title: '教师信息编辑页面',
shadeClose: true,
shade: 0.8,
shift: 1, //0-6的动画形式,-1不开启
area: ['800px', '80%'],
content: 'teachereditor?teacherId=0'
});
}
</script>
<script type="text/javascript">
function sousuo() {
var teachername = document.getElementById("sousuo").value;
location.href = 'teacherlist?teacherName='+ encodeURI(encodeURI(teachername)) + '&page=1' ;
}
</script>
</html>
teacherone.jsp<!DOCTYPE HTML>
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<html >
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="stylesheet" href="<%=request.getContextPath()%>/css/bootstrap.min.css" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >
<link rel="stylesheet" href="<%=request.getContextPath()%>/font/iconfont.css" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >
<link rel="stylesheet" href="<%=request.getContextPath()%>/css/sweetalert/sweetalert.css" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >
<script src="<%=request.getContextPath()%>/js/jquery.js"></script>
<script src="<%=request.getContextPath()%>/lib/layer/1.9.3/layer.js"></script>
<script src="<%=request.getContextPath()%>/lib/laypage/1.2/laypage.js"></script>
<script src="<%=request.getContextPath()%>/js/sweetalert/sweetalert.min.js"></script>
<title>教师信息列表</title>
</head>
<body background="<%=request.getContextPath()%>/images/010.gif">
<div class="container-fluid">
<div class="row">
<div class="col-md-4"></div>
<div class="col-md-4"><h2 class="text-center">教师个人信息管理表</h2></div>
<div class="col-md-4"></div>
</div>
</div>
<br/>
<table class="table table-hover">
<tr class="info">
<th>教师编号</th>
<th>教师姓名</th>
<th>教师性别</th>
<th>系别</th>
<th>电话号码</th>
<th>邮箱</th>
<th>操作</th>
</tr>
<tr>
<td>${teaone.teacherId}</td>
<td>${teaone.teacherName}</td>
<td>${teaone.teacherSex}</td>
<td>${teaone.teacherSystem}</td>
<td>${teaone.teacherPhone}</td>
<td>${teaone.teacherEmail}</td>
<td>
<button id = "xiugai" type="button" class="btn btn-info btn-xs" οnclick="xiugai();" >
<i class="iconfont"></i>
&nbsp;编辑
</button>
</td>
</tr>
</table>
</body>
<script type="text/javascript">
function xiugai() {
layer.open({
type: 2,
title: '学生个人信息修改页面',
shadeClose: true,
shade: 0.8,
shift: 1, //0-6的动画形式,-1不开启
area: ['800px', '80%'],
content: 'teachereditor?teacherId='+"${teaone.teacherId}"
});
}
</script>
</html>
teachereditor.jsp<!DOCTYPE HTML>
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link href="<%=request.getContextPath()%>/css/H-ui.css" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="stylesheet" type="text/css" />
<link href="<%=request.getContextPath()%>/css/H-ui.1.x.patch.css" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="stylesheet" type="text/css" />
<link rel="stylesheet" href="<%=request.getContextPath()%>/css/sweetalert/sweetalert.css" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >
<script src="<%=request.getContextPath()%>/js/jquery-1.8.3.js"></script>
<script type="text/javascript" src="<%=request.getContextPath()%>/lib/Validform/5.3.2/Validform.js"></script>
<script type="text/javascript" src="<%=request.getContextPath()%>/lib/Validform/5.3.2/passwordStrength-min.js"></script>
<script src="<%=request.getContextPath()%>/js/sweetalert/sweetalert.min.js"></script>
<script type="text/javascript">
$(function(){
$("#demoform-2").Validform({
tiptype:2,
usePlugin:{
datepicker:{},//日期控件校验;
passwordstrength:{
minLen:6,//设置密码长度最小值,默认为0;
maxLen:18,//设置密码长度最大值,默认为30;
trigger:function(obj,error){
//该表单元素的keyup和blur事件会触发该函数的执行;
//obj:当前表单元素jquery对象;
//error:所设密码是否符合验证要求,验证不能通过error为true,验证通过则为false;
//console.log(error);
if(error){
obj.parent().find(".Validform_checktip").show();
obj.parent().find(".passwordStrength").hide();
}else{
obj.parent().find(".passwordStrength").show();
}
}
}
}
});
});
</script>
<title>教师信息编辑页面</title>
</head>
<body>
<form action="" class="form form-horizontal responsive" id="demoform-2">
<div class="row cl">
<label class="form-label col-2">姓名:</label>
<div class="formControls col-5">
<input type="text" name="teacherid" id = "teacherid" value="${teacherone.teacherId}" style="display:none;"/>
<input type="text" value = "${teacherone.teacherName}" class="input-text" placeholder="请输入教师姓名" name="teachername" id="teachername" datatype="s2-5" nullmsg="教师姓名不能为空" >
</div>
<div class="col-5">
</div>
</div>
<div class="row cl">
<label class="form-label col-2">所在系:</label>
<div class="formControls col-5">
<input type="text" class="input-text" placeholder="请输入教师所在系" name="teachersystem" id="teachersystem" datatype="s2-10" nullmsg="请输入所在系" value = '${teacherone.teacherSystem}' >
</div>
<div class="col-5">
</div>
</div>
<div class="row cl">
<label class="form-label col-2">电话号码:</label>
<div class="formControls col-5">
<input type="text" class="input-text" autocomplete="off" placeholder="手机号码" name="teacherphone" id="teacherphone" datatype="m" nullmsg="电话号码不能为空" value = '${teacherone.teacherPhone}'>
</div>
<div class="col-5">
</div>
</div>
<div class="row cl">
<label class="form-label col-2">邮箱:</label>
<div class="formControls col-5">
<input type="text" class="input-text" placeholder="@" name="teacheremail" id="teacheremail" datatype="e" nullmsg="请输入邮箱!" value = '${teacherone.teacherEmail}'>
</div>
<div class="col-5">
</div>
</div>
<div class="row cl">
<label class="form-label col-2">教师性别:</label>
<div class="formControls skin-minimal col-5">
<div class="radio-box">
<input type="radio" id="sex-1" value = "男" name="teachersex" datatype="*" nullmsg="请选择性别!" >
<label for="sex-1">男</label>
</div>
<div class="radio-box">
<input type="radio" id="sex-2" name="teachersex" value = "女">
<label for="sex-2">女</label>
</div>
</div>
<div class="col-5">
</div>
</div>
<div class="row cl">
<div class="col-10 col-offset-2">
<input class="btn btn-primary" type="button" οnclick="hehe();" id = "tijiao" value="&nbsp;&nbsp;提交&nbsp;&nbsp;">
</div>
</div>
</form>
</body>
<script type="text/javascript">
if('${teacherone.teacherSex}' =="女"){
document.getElementById('sex-2').checked="checked";
}else if('${teacherone.teacherSex}' =="男") {
document.getElementById('sex-1').checked="checked";
}else{ }
</script>
<script type="text/javascript">
function hehe() {
var teachername = document.getElementById("teachername").value;
var teachersystem = document.getElementById("teachersystem").value;
var teacherid = document.getElementById("teacherid").value;
if(teacherid==""){
teacherid = 0;
}
var teacherphone = document.getElementById("teacherphone").value;
var teacheremail = document.getElementById("teacheremail").value;
var list = document.getElementsByName("teachersex");
var teachersex = null;
for(var i = 0 ; i < list.length ; i++){
if(list[i].checked){
teachersex = list[i].value;
}
}
if(teachername==""||teachersystem==""||teacherphone==""||teacheremail==""||teachersex==""){
swal("哦豁","提交失败,请重试!","error");
return;
}
if (window.XMLHttpRequest){
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
} //创建XMLHttpRequest对象
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState==4 && xmlhttp.status==200){
var a = eval("("+xmlhttp.responseText+")");
if(a.status == 1){
swal({title:"提交成功!",text:"您已经向服务器了这条信息!",type:"success"},
function () {
parent.top.topManager.reloadPage();//刷新父页
parent.layer.closeAll();
});
}else{
swal("哦豁","提交失败,请重试!","error");
}
}
} ; //服务器响应时完成相应操作
xmlhttp.open("post","teacheradd?teacherName="+encodeURI(encodeURI(teachername)) + "&teacherSystem=" + encodeURI(encodeURI(teachersystem))+ "&teacherId=" + encodeURI(encodeURI(teacherid))+ "&teacherPhone=" + encodeURI(encodeURI(teacherphone))+ "&teacherEmail=" + encodeURI(encodeURI(teacheremail))+ "&teacherSex=" + encodeURI(encodeURI(teachersex)) ,true);
xmlhttp.send();
}
</script>
</html>

(4)课程模块

SubjectBean.javapackage com.stusystem.entity;public class SubjectBean {
private int subjectId;
private String subjectName;
private String teacherName;
private String subjectCredit;
private int page;
public int getPage() {
return (page-1)*6;
}
public void setPage(int page) {
this.page = page;
}
public int getSubjectId() {
return subjectId;
}
public void setSubjectId(int subjectId) {
this.subjectId = subjectId;
}
public String getSubjectName() {
return subjectName;
}
public void setSubjectName(String subjectName) {
this.subjectName = subjectName;
}
public String getTeacherName() {
return teacherName;
}
public void setTeacherName(String teacherName) {
this.teacherName = teacherName;
}
public String getSubjectCredit() {
return subjectCredit;
}
public void setSubjectCredit(String subjectCredit) {
this.subjectCredit = subjectCredit;
}
}
SubjectDao.javapackage com.stusystem.dao;import java.util.List;import com.stusystem.entity.SubjectBean;public interface SubjectDao {
public List<SubjectBean> getSubject(SubjectBean subjectBean) throws Exception;
public int getsbjpage(SubjectBean subjectBean) throws Exception;
public SubjectBean getSubjectone(SubjectBean subjectBean) throws Exception;
public void subjectdel(SubjectBean subjectBean) throws Exception;
public void subjectadd(SubjectBean subjectBean) throws Exception;
public void subjectxiugai(SubjectBean subjectBean) throws Exception;
}
SubjectDao.xml`<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!-- namesapce ,DAO的package路径 -->
<mapper namespace="com.stusystem.dao.SubjectDao">
<!-- 查询所有课程信息的list -->
<select id="getSubject" parameterType="com.stusystem.entity.SubjectBean" resultType="com.stusystem.entity.SubjectBean">
<if test=" subjectName != null and subjectName != '' "> SELECT * FROM subject where subject_name = #{subjectName} limit #{page} , 6 </if>
<if test=" subjectName == null or subjectName == '' "> SELECT * FROM subject limit #{page} , 6 </if>
</select>
<!-- 查询课程信息共有多少页,分页处理 -->
<select id="getsbjpage" parameterType="com.stusystem.entity.SubjectBean" resultType="int">
<if test=" subjectName != null and subjectName != '' "> select count(*) from `subject` where subject_name = #{subjectName} </if>
<if test=" subjectName == null or subjectName == '' "> select count(*) from `subject` </if>
</select>
<!-- 查询一条课程信息 -->
<select id="getSubjectone" parameterType="com.stusystem.entity.SubjectBean" resultType="com.stusystem.entity.SubjectBean" >
SELECT * FROM subject WHERE subject_id=#{subjectId}
</select>
<!-- 删除一条课程信息 -->
<delete id="subjectdel" parameterType="com.stusystem.entity.SubjectBean" >
DELETE FROM `subject` WHERE (`subject_id`=#{subjectId})
</delete>
<!-- 修改一条课程信息 -->
<update id="subjectxiugai" parameterType="com.stusystem.entity.SubjectBean">
UPDATE subject SET subject_name=#{subjectName}, teacher_name=#{teacherName}, subject_credit=#{subjectCredit} WHERE (subject_id=#{subjectId})
</update>
<!-- 添加一条课程信息 -->
<insert id="subjectadd" parameterType="com.stusystem.entity.SubjectBean">
INSERT INTO `subject` (`subject_name`, `teacher_name`, `subject_credit`) VALUES (#{subjectName},#{teacherName},#{subjectCredit})
</insert>
</mapper>
ScoreController.javapackage com.stusystem.controller;import java.io.IOException;
import java.net.URLDecoder;
import java.util.List;import javax.servlet.http.HttpServletResponse;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 com.stusystem.dao.SubjectDao;
import com.stusystem.entity.SubjectBean;@Controller
@RequestMapping("subject")
public class SubjectController {
@Autowired
SubjectDao subjectDao;
@RequestMapping("/subjectlist")
public String getSubject(SubjectBean sbj,Model model) throws Exception{
if(sbj.getSubjectName()!=null&&sbj.getSubjectName()!=""){
sbj.setSubjectName(URLDecoder.decode(sbj.getSubjectName(), "UTF-8"));
}
List<SubjectBean> subjectlist=subjectDao.getSubject(sbj);
int sbjpage=subjectDao.getsbjpage(sbj);
model.addAttribute("subjectlist",subjectlist);
model.addAttribute("sbjpage",sbjpage);
model.addAttribute("subjectName", sbj.getSubjectName());
return "subjectlist";
} @RequestMapping("/subjecteditor")
public String studenteditor(SubjectBean sbj,Model model) throws Exception {
if(sbj.getSubjectId()==0){
return "subjecteditor";
}else{
SubjectBean subjectone = subjectDao.getSubjectone(sbj);
model.addAttribute("subjectone", subjectone);//如subjecteditor.jsp中可用subjectone.sybjectId来获取课程号
return "subjecteditor";
}
}
//删除一条课程信息
@RequestMapping(value = {"/subjectdel"})
public void subjectdel(SubjectBean sbj,HttpServletResponse response) throws IOException {
int a = 0;
try {
subjectDao.subjectdel(sbj);
} catch (Exception e) {
a=a+1;
response.getWriter().println("{'status':'0'}");
e.printStackTrace();
}
if(a==0){
response.getWriter().println("{'status':'1'}");
}else{
}
}
//添加一条课程信息
@RequestMapping(value = {"/subjectadd"})
public void subjectadd(SubjectBean sbj,HttpServletResponse response) throws IOException{
int a = 0;
try {
if(sbj.getSubjectId()==0){
sbj.setSubjectName(URLDecoder.decode(sbj.getSubjectName(), "UTF-8"));
sbj.setTeacherName(URLDecoder.decode(sbj.getTeacherName(), "UTF-8"));
subjectDao.subjectadd(sbj);
}else{
sbj.setSubjectName(URLDecoder.decode(sbj.getSubjectName(), "UTF-8"));
sbj.setTeacherName(URLDecoder.decode(sbj.getTeacherName(), "UTF-8"));
subjectDao.subjectxiugai(sbj);
}
} catch (Exception e) {
a=a+1;
response.getWriter().println("{'status':'0'}");
e.printStackTrace();
}
if(a==0){
response.getWriter().println("{'status':'1'}");
}else{
}
}
}
subjectlist.jsp<!DOCTYPE HTML>
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html >
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="stylesheet" href="<%=request.getContextPath()%>/css/bootstrap.min.css" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >
<link rel="stylesheet" href="<%=request.getContextPath()%>/font/iconfont.css" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >
<link rel="stylesheet" href="<%=request.getContextPath()%>/css/sweetalert/sweetalert.css" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >
<script src="<%=request.getContextPath()%>/js/jquery.js"></script>
<script src="<%=request.getContextPath()%>/lib/layer/1.9.3/layer.js"></script>
<script src="<%=request.getContextPath()%>/lib/laypage/1.2/laypage.js"></script>
<script src="<%=request.getContextPath()%>/js/sweetalert/sweetalert.min.js"></script>
<script type="text/javascript">
function del(studentid) {
swal({
title: "您确定要删除这条信息吗",
text: "删除后将无法恢复,请谨慎操作!",
type: "warning",
showCancelButton: true,
confirmButtonColor: "#DD6B55",
confirmButtonText: "删除",
closeOnConfirm: false
}, function () {
if (window.XMLHttpRequest){
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
} //创建XMLHttpRequest对象
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState==4 && xmlhttp.status==200){
var a = eval("("+xmlhttp.responseText+")");
if(a.status== 1){
swal({title:"删除成功!",text:"您已经永久删除了这条信息!",type:"success"},
function () {
var b = '${stupage}' ;
b = Math.ceil(b/6) ;
location.href = "studentlist?page=" + b;
});
}else{
swal("哦豁","删除失败,请重试!","error");
}
}
} ; //服务器响应时完成相应操作
xmlhttp.open("post","studentdel?stuId="+studentid,true);
xmlhttp.send();
});
}
</script>
<title>学生列表</title>
</head>
<body background="<%=request.getContextPath()%>/images/010.gif">
<div class="container-fluid">
<div class="row">
<div class="col-md-4"></div>
<div class="col-md-4"><h2 class="text-center">学生信息管理表</h2></div>
<div class="col-md-4"></div>
</div>
</div>
<div class="row">
<div class="col-md-3">
<div class="input-group">
<input type="text" class="form-control" placeholder="输入学生姓名搜索" id = "sousuo" value = "${studentname}">
<span class="input-group-btn">
<button class="btn btn-default" type="button" onclick="sousuo();">Go!</button>
</span>
</div>
</div>
<div class="col-md-3"><button type="button" class="btn btn-default" onclick="tianjia();">添加+</button></div>
<div class="col-md-6"></div>
</div> <br/>
<table class="table table-hover">
<tr class="info">
<th>学号</th>
<th>学生姓名</th>
<th>学生性别</th>
<th>所在系</th>
<th>班级</th>
<th>电话号码</th>
<th>操作</th>
</tr>
<c:forEach items="${studentlist}" var="stu">
<tr>
<td>${stu.stuId}</td>
<td>${stu.stuName}</td>
<td>${stu.stuSex}</td>
<td>${stu.stuSystem}</td>
<td>${stu.stuClass}</td>
<td>${stu.stuPhone}</td>
<td><button type="button" class="btn btn-info btn-xs" onclick="bianji(${stu.stuId});" ><i class="iconfont"></i>&nbsp;编辑</button>&nbsp;&nbsp;<button type="button" onclick="del(${stu.stuId});" class="btn btn-danger btn-xs"><i class="iconfont"></i>&nbsp;删除</button></td>
</tr>
</c:forEach>
</table>
<div id="page11" style="margin-top:5px; text-align:center;"></div>
</body>
<script src="<%=request.getContextPath()%>/lib/laypage/1.2/laypage.js"></script>
<script type="text/javascript">
laypage({
cont: 'page11',
pages: Math.ceil("${stupage}"/6), //可以叫服务端把总页数放在某一个隐藏域,再获取。假设我们获取到的是18 length
skip: true, //是否开启跳页
skin: '#6699FF',
curr: function(){ //通过url获取当前页,也可以同上(pages)方式获取
var page = location.search.match(/page=(\d+)/);
return page ? page[1] : 1;
}(),
jump: function(e, first){ //触发分页后的回调
if(!first){ //一定要加此判断,否则初始时会无限刷新
var studengtname = document.getElementById("sousuo").value;
location.href = '?page='+e.curr + '&stuName=' + encodeURI(encodeURI(studengtname));
}
}
});
</script>
<script type="text/javascript">
function bianji(studentId) {
layer.open({
type: 2,
title: '学生信息编辑页面',
shadeClose: true,
shade: 0.8,
shift: 1, //0-6的动画形式,-1不开启
area: ['800px', '80%'],
content: 'studenteditor?stuId='+ studentId
});
}
function tianjia() {
layer.open({
type: 2,
title: '学生信息添加页面',
shadeClose: true,
shade: 0.8,
shift: 1, //0-6的动画形式,-1不开启
area: ['800px', '80%'],
content: 'studenteditor?stuId=0'
});
}
</script>
<script type="text/javascript">
function sousuo() {
var studentname = document.getElementById("sousuo").value;
location.href = 'studentlist?stuName='+ encodeURI(encodeURI(studentname)) + '&page=1' ;
}
</script>
</html>
subjectone.jsp<!DOCTYPE HTML>
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<html >
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="stylesheet" href="<%=request.getContextPath()%>/css/bootstrap.min.css" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >
<link rel="stylesheet" href="<%=request.getContextPath()%>/font/iconfont.css" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >
<link rel="stylesheet" href="<%=request.getContextPath()%>/css/sweetalert/sweetalert.css" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >
<script src="<%=request.getContextPath()%>/js/jquery.js"></script>
<script src="<%=request.getContextPath()%>/lib/layer/1.9.3/layer.js"></script>
<script src="<%=request.getContextPath()%>/lib/laypage/1.2/laypage.js"></script>
<script src="<%=request.getContextPath()%>/js/sweetalert/sweetalert.min.js"></script>
<title>学生信息列表</title>
</head>
<body background="<%=request.getContextPath()%>/images/010.gif">
<div class="container-fluid">
<div class="row">
<div class="col-md-4"></div>
<div class="col-md-4"><h2 class="text-center">学生个人信息管理表</h2></div>
<div class="col-md-4"></div>
</div>
</div>
<br/>
<table class="table table-hover">
<tr class="info">
<th>学号</th>
<th>学生姓名</th>
<th>学生性别</th>
<th>所在系</th>
<th>班级</th>
<th>电话号码</th>
<th>操作</th>
</tr>
<tr>
<td>${stuone.stuId}</td>
<td>${stuone.stuName}</td>
<td>${stuone.stuSex}</td>
<td>${stuone.stuSystem}</td>
<td>${stuone.stuClass}</td>
<td>${stuone.stuPhone}</td>
<td>
<button id = "xiugai" type="button" class="btn btn-info btn-xs" οnclick="xiugai();" >
<i class="iconfont"></i>
&nbsp;编辑
</button>
</td>
</tr>
</table>
</body>
<script type="text/javascript">
function xiugai() {
layer.open({
type: 2,
title: '学生个人信息修改页面',
shadeClose: true,
shade: 0.8,
shift: 1, //0-6的动画形式,-1不开启
area: ['800px', '80%'],
content: 'studenteditor?stuId='+"${stuone.stuId}"
});
}
</script>
</html>
subjecteditoe.jsp<!DOCTYPE HTML>
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link href="<%=request.getContextPath()%>/css/H-ui.css" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="stylesheet" type="text/css" />
<link href="<%=request.getContextPath()%>/css/H-ui.1.x.patch.css" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="stylesheet" type="text/css" />
<link rel="stylesheet" href="<%=request.getContextPath()%>/css/sweetalert/sweetalert.css" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >
<script src="<%=request.getContextPath()%>/js/jquery-1.8.3.js"></script>
<script type="text/javascript" src="<%=request.getContextPath()%>/lib/Validform/5.3.2/Validform.js"></script>
<script type="text/javascript" src="<%=request.getContextPath()%>/lib/Validform/5.3.2/passwordStrength-min.js"></script>
<script src="<%=request.getContextPath()%>/js/sweetalert/sweetalert.min.js"></script>
<script type="text/javascript">
$(function(){
$("#demoform-2").Validform({
tiptype:2,
usePlugin:{
datepicker:{},//日期控件校验;
passwordstrength:{
minLen:6,//设置密码长度最小值,默认为0;
maxLen:18,//设置密码长度最大值,默认为30;
trigger:function(obj,error){
//该表单元素的keyup和blur事件会触发该函数的执行;
//obj:当前表单元素jquery对象;
//error:所设密码是否符合验证要求,验证不能通过error为true,验证通过则为false;
//console.log(error);
if(error){
obj.parent().find(".Validform_checktip").show();
obj.parent().find(".passwordStrength").hide();
}else{
obj.parent().find(".passwordStrength").show();
}
}
}
}
});
});
</script>
<title>教师信息编辑页面</title>
</head>
<body>
<form action="" class="form form-horizontal responsive" id="demoform-2">
<div class="row cl">
<label class="form-label col-2">课程名字:</label>
<div class="formControls col-5">
<input type="text" name="subjectid" id = "subjectid" value="${subjectone.subjectId}" style="display:none;"/>
<input type="text" class="input-text" placeholder="请输入课程名字" name="subjectname" id="subjectname" value="${subjectone.subjectName}" datatype="s2-10" nullmsg="课程名字不能为空">
</div>
<div class="col-5">
</div>
</div>
<div class="row cl">
<label class="form-label col-2">授课老师:</label>
<div class="formControls col-5">
<input type="text" class="input-text" placeholder="请输入授课老师" name="teachername" id="teachername" value="${subjectone.teacherName}" datatype="s2-5" nullmsg="授课老师不能为空">
</div>
<div class="col-5">
</div>
</div>
<div class="row cl">
<label class="form-label col-2">学分:</label>
<div class="formControls col-5">
<input type="text" class="input-text" autocomplete="off" placeholder="请输入学分" name="subjectcredit" id="subjectcredit" value="${subjectone.subjectCredit}" datatype="n" nullmsg="学分不能为空">
</div>
<div class="col-5">
</div>
</div>
<div class="row cl">
<div class="col-10 col-offset-2">
<input class="btn btn-primary" type="button" onclick="hehe();" value="&nbsp;&nbsp;提交&nbsp;&nbsp;">
</div>
</div>
</form>
</body>
<script type="text/javascript">
function hehe() {
var subjectid = document.getElementById("subjectid").value;
if(subjectid==""){
subjectid = 0;
}
var subjectname = document.getElementById("subjectname").value;
var teachername = document.getElementById("teachername").value;
var subjectcredit = document.getElementById("subjectcredit").value;
if(subjectname==""||teachername==""||subjectcredit==""){
swal("哦豁","提交失败,请重试!","error");
return;
}
if (window.XMLHttpRequest){
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
} //创建XMLHttpRequest对象
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState==4 && xmlhttp.status==200){
var a = eval("("+xmlhttp.responseText+")");
if(a.status == 1){
swal({title:"提交成功!",text:"您已经向服务器了这条信息!",type:"success"},
function () {
parent.top.topManager.reloadPage();
parent.layer.closeAll();
});
}else{
swal("哦豁","提交失败,请重试!","error");
}
}
} ; //服务器响应时完成相应操作
xmlhttp.open("post","subjectadd?subjectId="+encodeURI(encodeURI(subjectid)) + "&subjectName=" + encodeURI(encodeURI(subjectname))+ "&teacherName=" + encodeURI(encodeURI(teachername))+ "&subjectCredit=" + encodeURI(encodeURI(subjectcredit)),true);
xmlhttp.send();
}
</script>
</html>

(5)分数和选课模块

ScoreBean.javapackage com.stusystem.entity;import org.apache.ibatis.type.Alias;
import org.springframework.stereotype.Component;
@Alias("scoreBean")
@Component
public class ScoreBean {
private int scoreId;
private int studentId;
private String subjectName;
private String studentName;
private String score;
private int subjectId;
private String teacherName;
private String subjectCredit;
private int page;
public int getPage() {
return (page-1)*6;
}
public void setPage(int page) {
this.page = page;
}
public String getSubjectCredit() {
return subjectCredit;
}
public void setSubjectCredit(String subjectCredit) {
this.subjectCredit = subjectCredit;
}
public String getTeacherName() {
return teacherName;
}
public void setTeacherName(String teacherName) {
this.teacherName = teacherName;
}
public int getScoreId() {
return scoreId;
}
public void setScoreId(int scoreId) {
this.scoreId = scoreId;
}
public int getStudentId() {
return studentId;
}
public void setStudentId(int studentId) {
this.studentId = studentId;
}
public String getSubjectName() {
return subjectName;
}
public void setSubjectName(String subjectName) {
this.subjectName = subjectName;
}
public String getStudentName() {
return studentName;
}
public void setStudentName(String studentName) {
this.studentName = studentName;
}
public String getScore() {
return score;
}
public void setScore(String score) {
this.score = score;
}
public int getSubjectId() {
return subjectId;
}
public void setSubjectId(int subjectId) {
this.subjectId = subjectId;
}
}
ScoreDao.javapackage com.stusystem.dao;import java.util.List;import com.stusystem.entity.ScoreBean;
import com.stusystem.entity.StudentBean;
import com.stusystem.entity.SubjectBean;public interface ScoreDao {
public List<ScoreBean> getscorelist(StudentBean studentBean) throws Exception;
public void scoreadd(ScoreBean score) throws Exception;
public List<SubjectBean> getSubject(ScoreBean score) throws Exception;
//已选课程信息的分页处理
public int getsbjpage(ScoreBean score)throws Exception;
//添加一个学生的选课信息
public void setsubject(ScoreBean score)throws Exception;
//查询一个学生已选课程信息的list
public List<SubjectBean> yxsubjectlist(ScoreBean score) throws Exception;
//删除一条已选课程
public void delyxkc(ScoreBean score) throws Exception;
//查询一个学生的已选课程成绩和课程信息的list
public List<ScoreBean> getscoreonelist(ScoreBean score)throws Exception;
}
ScoreDao.xml<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!-- namesapce ,DAO的package路径 -->
<mapper namespace="com.stusystem.dao.ScoreDao">
<!-- 多表查询查询出一个学生的成绩和其他信息保存到一个score对象中 -->
<select id="getscorelist" parameterType="com.stusystem.entity.StudentBean" resultType="scoreBean">
SELECT score.score, `subject`.subject_name, score.score_id FROM score , `subject` WHERE score.subject_id = `subject`.subject_id AND score.student_id = #{stuId}
</select>
<!-- 添加一个学生的成绩 -->
<update id="scoreadd" parameterType="scoreBean">
UPDATE score SET score=#{score} WHERE score_id=#{scoreId}
</update>
<!--查询一个学生的未选选课程信息list -->
<select id="getSubject" parameterType="scoreBean" resultType="com.stusystem.entity.SubjectBean">
<if test=" subjectName != null and subjectName != '' ">select * from `subject` where subject_name = #{subjectName} and subject_id not in (select subject_id from score where student_id = #{studentId} ) limit #{page} ,6 </if>
<if test=" subjectName == null or subjectName == '' "> SELECT * FROM subject where subject_id not in (select subject_id from score where student_id = #{studentId} ) limit #{page} ,6 </if>
</select>
<!-- 已选课程信息的分页处理 -->
<select id="getsbjpage" parameterType="scoreBean" resultType="int">
<if test=" subjectName != null and subjectName != '' ">select count(*) from `subject` where subject_name = #{subjectName} and subject_id not in (select subject_id from score where student_id = #{studentId} )</if>
<if test=" subjectName == null or subjectName == '' "> select count(*) from subject where subject_id not in (select subject_id from score where student_id = #{studentId} ) </if>
</select>
<!--添加一个学生的选课信息 -->
<insert id="setsubject" parameterType="scoreBean">
INSERT INTO `score` (`student_id`, `subject_id`) VALUES (#{studentId},#{subjectId})
</insert>
<!-- 查询一个学生已选课程信息的list-->
<select id="yxsubjectlist" parameterType="scoreBean" resultType="com.stusystem.entity.SubjectBean">
SELECT * FROM subject where subject_id in (select subject_id from score where student_id = #{studentId} )
</select>
<!-- 删除一条已选课程 -->
<delete id="delyxkc" parameterType="scoreBean">
DELETE FROM `score` WHERE `student_id`=#{studentId} and subject_id = #{subjectId}
</delete>
<!-- 查询一个学生的已选课程成绩和课程信息的list-->
<select id="getscoreonelist" parameterType="scoreBean" resultType="scoreBean">
SELECT * FROM score , `subject` WHERE score.subject_id = `subject`.subject_id AND score.student_id = #{studentId}
</select>
</mapper>
ScoreController.javapackage com.stusystem.controller;import java.io.IOException;
import java.net.URLDecoder;
import java.util.List;import javax.servlet.http.HttpServletResponse;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 com.stusystem.dao.ScoreDao;
import com.stusystem.dao.StudentDao;
import com.stusystem.entity.ScoreBean;
import com.stusystem.entity.StudentBean;
import com.stusystem.entity.SubjectBean;
@Controller
@RequestMapping(value = "score")
public class ScoreController {
@Autowired
private StudentDao studentDao;
//要注入必须要将这个类在spring容器中注册
@Autowired
private ScoreDao scoreDao;
// ApplicationContext applicationContext = new ClassPathXmlApplicationContext("classpath:spring-context.xml");
// StudentDao studentDao = (StudentDao) applicationContext.getBean("studentDao");
// ScoreDao scoreDao = (ScoreDao) applicationContext.getBean("scoreDao");
//查询出所有学生信息到学生成绩管理页面
@RequestMapping(value = {"/scorelist"})
public String getStudent(StudentBean stu,Model model) throws Exception{
if(stu.getStuName()!=null&&stu.getStuName()!=""){
stu.setStuName(URLDecoder.decode(stu.getStuName(), "UTF-8"));
}
List<StudentBean> stulist = studentDao.getStudent(stu);
int stupage = studentDao.getstupage(stu);
model.addAttribute("studentlist", stulist);
model.addAttribute("stupage", stupage);
model.addAttribute("studentname", stu.getStuName());
return "scorelist";
}
//查询出一个学生已选课程信息list到该学生成绩编辑页面
@RequestMapping(value = {"/scoreeditor"})
public String scoreeditor(StudentBean stu,Model model) throws Exception{
List<ScoreBean> scorelist = scoreDao.getscorelist(stu);
model.addAttribute("scorelist", scorelist);
if(scorelist.size()==0){
model.addAttribute("h1", "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;这位同学还没有选课!!!");
}
return "scoreeditor";
}
//得到在编辑页面编辑好一个学生的各科成绩的list,循环存入数据库中后,在返回存入结果
@RequestMapping(value = {"/scoreadd"})
public void scoreadd(String scorelist,HttpServletResponse response) throws IOException {
int a = 0;
String[] scoreStrArray = scorelist.split(",");
ScoreBean score = new ScoreBean();
try{
for(int i = 0 ; i < scoreStrArray.length ; i+=2 ){
score.setScore(scoreStrArray[i]);
score.setScoreId(Integer.parseInt(scoreStrArray[i+1]));
scoreDao.scoreadd(score);
}
}catch (Exception e){
a=a+1;
response.getWriter().println("{'status':'0'}");
e.printStackTrace();
}
if(a==0){
response.getWriter().println("{'status':'1'}");
}
}
//查询出一个学生的未选课程的信息list
@RequestMapping(value = {"/scoreone"})
public String scoreone(ScoreBean scorebean,Model model)throws Exception{
String subjectname =scorebean.getSubjectName();
if (subjectname != null && !"".equals(subjectname)) {
subjectname= URLDecoder.decode(subjectname, "UTF-8");
scorebean.setSubjectName(URLDecoder.decode(subjectname, "UTF-8")) ;
}
List<SubjectBean> subjectlist = scoreDao.getSubject(scorebean);
int sbjpage = scoreDao.getsbjpage(scorebean);
model.addAttribute("sbjpage", sbjpage);
model.addAttribute("subjectlist", subjectlist);
model.addAttribute("subjectname", subjectname);
return "scoreone";
}
//添加一个学生的选课记录
@RequestMapping(value = {"/xuanke"})
public void xuanke(HttpServletResponse response,ScoreBean scorebean) throws IOException{
int a = 0;
try {
scoreDao.setsubject(scorebean);
} catch (Exception e) {
a=a+1;
response.getWriter().println("{'status':'0'}");
e.printStackTrace();
}
if(a==0){
response.getWriter().println("{'status':'1'}");
}
}
//返回一个学生的已选课程的list到已选课程编辑页面
@RequestMapping(value = {"/xsyxkc"})
public String xsyxkc(ScoreBean scorebean,Model model) throws Exception{
List<SubjectBean> yxsubjectlist = scoreDao.yxsubjectlist(scorebean);
model.addAttribute("yxsubjectlist", yxsubjectlist);
return "xsyxkc";
}
//删除一个学生的已选课程
@RequestMapping(value = {"/yxkcdel"})
public void yxkcdel(ScoreBean scorebean,HttpServletResponse response) throws IOException{
int a = 0;
try {
scoreDao.delyxkc(scorebean);
} catch (Exception e) {
a=a+1;
response.getWriter().println("{'status':'0'}");
e.printStackTrace();
}
if(a==0){
response.getWriter().println("{'status':'1'}");
}
}
//查询出一个学生的已选课程成绩信息和相应成绩
@RequestMapping(value = {"/xsgrcjcx"})
public String xsgrcjcx(ScoreBean scorebean,Model model)throws Exception{
List<ScoreBean> scoreonelist = scoreDao.getscoreonelist(scorebean);
model.addAttribute("scoreonelist", scoreonelist);
if(scoreonelist.size()==0){
model.addAttribute("h1", "你还没有选课!!");
}
return "xsgrcjcx";
}
}
scorelist.jsp<!DOCTYPE HTML>
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html >
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="stylesheet" href="<%=request.getContextPath()%>/css/bootstrap.min.css" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >
<link rel="stylesheet" href="<%=request.getContextPath()%>/font/iconfont.css" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >
<link rel="stylesheet" href="<%=request.getContextPath()%>/css/sweetalert/sweetalert.css" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >
<script src="<%=request.getContextPath()%>/js/jquery.js"></script>
<script src="<%=request.getContextPath()%>/lib/layer/1.9.3/layer.js"></script>
<script src="<%=request.getContextPath()%>/lib/laypage/1.2/laypage.js"></script>
<script src="<%=request.getContextPath()%>/js/sweetalert/sweetalert.min.js"></script>
<title>学生列表</title>
</head>
<body background="<%=request.getContextPath()%>/images/010.gif">
<div class="container-fluid">
<div class="row">
<div class="col-md-4"></div>
<div class="col-md-4"><h2 class="text-center">学生成绩管理表</h2></div>
<div class="col-md-4"></div>
</div>
</div>
<div class="row">
<div class="col-md-3">
<div class="input-group">
<input type="text" class="form-control" placeholder="输入学生姓名搜索" id = "sousuo" value = "${studentname}">
<span class="input-group-btn">
<button class="btn btn-default" type="button" onclick="sousuo();">Go!</button>
</span>
</div>
</div>
<div class="col-md-3"></div>
<div class="col-md-6"></div>
</div> <br/>
<table class="table table-hover">
<tr class="info">
<th>学号</th>
<th>学生姓名</th>
<th>学生性别</th>
<th>所在系</th>
<th>班级</th>
<th>电话号码</th>
<th>操作</th>
</tr>
<c:forEach items="${studentlist}" var="stu">
<tr>
<td>${stu.stuId}</td>
<td>${stu.stuName}</td>
<td>${stu.stuSex}</td>
<td>${stu.stuSystem}</td>
<td>${stu.stuClass}</td>
<td>${stu.stuPhone}</td>
<td><button type="button" onclick="bianji(${stu.stuId});" class="btn btn-info btn-xs"><i class="iconfont"></i>&nbsp;编辑该学生成绩</button></td>
</tr>
</c:forEach>
</table>
<div id="page11" style="margin-top:5px; text-align:center;"></div>
</body>
<script src="<%=request.getContextPath()%>/lib/laypage/1.2/laypage.js"></script>
<script type="text/javascript">
laypage({
cont: 'page11',
pages: Math.ceil("${stupage}"/6), //可以叫服务端把总页数放在某一个隐藏域,再获取。假设我们获取到的是18 length
skip: true, //是否开启跳页
skin: '#6699FF',
curr: function(){ //通过url获取当前页,也可以同上(pages)方式获取
var page = location.search.match(/page=(\d+)/);
return page ? page[1] : 1;
}(),
jump: function(e, first){ //触发分页后的回调
if(!first){ //一定要加此判断,否则初始时会无限刷新
var studengtname = document.getElementById("sousuo").value;
location.href = '?page='+e.curr + '&stuName=' + encodeURI(encodeURI(studengtname));
}
}
});
</script>
<script type="text/javascript">
function bianji(studentid) {
layer.open({
type: 2,
title: '学生成绩编辑页面',
shadeClose: true,
shade: 0.8,
shift: 1, //0-6的动画形式,-1不开启
area: ['800px', '80%'],
content: 'scoreeditor?stuId='+studentid
});
}
</script>
<script type="text/javascript">
function sousuo() {
var studentname = document.getElementById("sousuo").value;
location.href = 'scorelist?stuName='+ encodeURI(encodeURI(studentname)) + '&page=1';
}
</script>
</html>
scoreone.jsp<!DOCTYPE HTML>
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html >
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="stylesheet" href="<%=request.getContextPath()%>/css/bootstrap.min.css" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >
<link rel="stylesheet" href="<%=request.getContextPath()%>/font/iconfont.css" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >
<link rel="stylesheet" href="<%=request.getContextPath()%>/css/sweetalert/sweetalert.css" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >
<script src="<%=request.getContextPath()%>/js/jquery.js"></script>
<script src="<%=request.getContextPath()%>/lib/layer/1.9.3/layer.js"></script>
<script src="<%=request.getContextPath()%>/lib/laypage/1.2/laypage.js"></script>
<script src="<%=request.getContextPath()%>/js/sweetalert/sweetalert.min.js"></script>
<script type="text/javascript">
function xuanze(subjectid,studentid) {
swal({
title: "您确定要选择本课程吗?",
text: "请选择与本人专业相关的课程!!",
type: "warning",
showCancelButton: true,
confirmButtonColor: "#DD6B55",
confirmButtonText: "选择",
closeOnConfirm: false
}, function () {
if (window.XMLHttpRequest){
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
} //创建XMLHttpRequest对象
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState==4 && xmlhttp.status==200){
var a = eval("("+xmlhttp.responseText+")");
if(a.status== 1){
swal({title:"选择成功!",text:"您已经成功选择了本课程!",type:"success"},
function () {
location.href = "scoreone?page=1"+"&studentId="+'${userbean.userId}';
});
}else{
swal("哦豁","选择失败,请重试!","error");
}
}
} ; //服务器响应时完成相应操作
xmlhttp.open("post","xuanke?subjectId="+ subjectid + "&studentId=" + studentid ,true);
xmlhttp.send();
});
}
</script>
<title>课程列表</title>
</head>
<body background="<%=request.getContextPath()%>/images/010.gif">
<div class="container-fluid">
<div class="row">
<div class="col-md-4"></div>
<div class="col-md-4"><h2 class="text-center">学生个人课程信息管理表</h2></div>
<div class="col-md-4"></div>
</div>
</div>
<div class="row">
<div class="col-md-3">
<div class="input-group">
<input type="text" class="form-control" placeholder="输入课程名搜索" id = "sousuo" value = "${subjectname}">
<span class="input-group-btn">
<button class="btn btn-default" type="button" onclick="sousuo();">Go!</button>
</span>
</div>
</div>
<div class="col-md-3"><button type="button" class="btn btn-default" onclick="yxkc();">查看已选择课程</button></div>
<div class="col-md-6"></div>
</div> <br/>
<table class="table table-hover">
<tr class="info">
<th>课程编号</th>
<th>课程名字</th>
<th>授课老师</th>
<th>课程学分</th>
<th>操作</th>
</tr>
<c:forEach items="${subjectlist}" var="sbj">
<tr>
<td>${sbj.subjectId}</td>
<td>${sbj.subjectName}</td>
<td>${sbj.teacherName}</td>
<td>${sbj.subjectCredit}</td>
<td>
<button id = "${sbj.subjectId}" type="button" class="btn btn-info btn-xs" οnclick="xuanze(${sbj.subjectId},${userbean.userId});" >
<i class="iconfont"></i>
&nbsp;添加本课程
</button>
</td>
</tr>
</c:forEach>
</table>
<div id="page11" style="margin-top:5px; text-align:center;"></div>
</body>
<script src="<%=request.getContextPath()%>/lib/laypage/1.2/laypage.js"></script>
<script type="text/javascript">
var aa = Math.ceil("${sbjpage}"/6);
laypage({
cont: 'page11',
pages: aa, //可以叫服务端把总页数放在某一个隐藏域,再获取。假设我们获取到的是18 length
skip: true, //是否开启跳页
skin: '#6699FF',
curr: function(){ //通过url获取当前页,也可以同上(pages)方式获取
var page = location.search.match(/page=(\d+)/);
return page ? page[1] : 1;
}(),
jump: function(e, first){ //触发分页后的回调
if(!first){ //一定要加此判断,否则初始时会无限刷新
var subjectname = document.getElementById("sousuo").value;
location.href = '?page='+e.curr + '&subjectName=' + encodeURI(encodeURI(subjectname)+'&studentId=' + '${userbean.userId}');
}
}
});
</script>
<script type="text/javascript">
function sousuo() {
var subjectname = document.getElementById("sousuo").value;
location.href = 'scoreone?subjectName='+ encodeURI(encodeURI(subjectname)) + '&page=1' + '&studentId=' + '${userbean.userId}' ;
}
function yxkc() {
layer.open({
type: 2,
title: '学生已选课程信息页面',
shadeClose: true,
shade: 0.8,
shift: 1, //0-6的动画形式,-1不开启
area: ['800px', '80%'],
content: 'xsyxkc?studentId='+"${userbean.userId}"
});
}
</script>
</html>
scoreeditor,jsp<!DOCTYPE HTML>
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link href="<%=request.getContextPath()%>/css/H-ui.css" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="stylesheet" type="text/css" />
<link href="<%=request.getContextPath()%>/css/H-ui.1.x.patch.css" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="stylesheet" type="text/css" />
<link rel="stylesheet" href="<%=request.getContextPath()%>/css/sweetalert/sweetalert.css" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >
<script src="<%=request.getContextPath()%>/js/jquery-1.8.3.js"></script>
<script type="text/javascript" src="<%=request.getContextPath()%>/lib/Validform/5.3.2/Validform.js"></script>
<script type="text/javascript" src="<%=request.getContextPath()%>/lib/Validform/5.3.2/passwordStrength-min.js"></script>
<script src="<%=request.getContextPath()%>/js/sweetalert/sweetalert.min.js"></script>
<script type="text/javascript">
$(function(){
$("#demoform-2").Validform({
tiptype:2,
usePlugin:{
datepicker:{},//日期控件校验;
passwordstrength:{
minLen:6,//设置密码长度最小值,默认为0;
maxLen:18,//设置密码长度最大值,默认为30;
trigger:function(obj,error){
//该表单元素的keyup和blur事件会触发该函数的执行;
//obj:当前表单元素jquery对象;
//error:所设密码是否符合验证要求,验证不能通过error为true,验证通过则为false;
//console.log(error);
if(error){
obj.parent().find(".Validform_checktip").show();
obj.parent().find(".passwordStrength").hide();
}else{
obj.parent().find(".passwordStrength").show();
}
}
}
}
});
});
</script>
<title>学生成绩编辑页面</title>
</head>
<body>
<div class="row" id = "demo">
<div class="col-md-4"><h1>${h1}</h1></div>
<div class="col-md-4"></div>
<div class="col-md-4"></div>
</div>
<form action="" class="form form-horizontal responsive" id="demoform-2">
<c:forEach items="${scorelist}" var="sco">
<div class="row cl">
<label class="form-label col-3">${sco.subjectName}:</label>
<div class="formControls col-5">
<input type="text" name="scoreid" id = "scoreid" value="${sco.scoreId}" style="display:none;"/>
<input type="text" value = "${sco.score}" class="input-text" placeholder="请输入${sco.subjectName}成绩" name="scorelist" datatype="n1-3" nullmsg="成绩不能为空,可以为零" >
</div>
<div class="col-4">
</div>
</div>
</c:forEach>
<div class="row cl">
<div class="col-10 col-offset-2">
<input class="btn btn-primary" type="button" οnclick="hehe();" id = "tijiao" value="&nbsp;&nbsp;提交&nbsp;&nbsp;">
</div>
</div>
</form>
</body>
<script type="text/javascript">
var list = document.getElementsByName("scorelist");
if(list.length==0){
$("input").hide();
}
function hehe() {
var list1 = document.getElementsByName("scorelist");
var list2 = document.getElementsByName("scoreid");
var scorelist = [list1.length];
for(var i = 0 ;i < list1.length ; i++){
scorelist[i] = [list1[i].value,list2[i].value];
}
if (window.XMLHttpRequest){
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
} //创建XMLHttpRequest对象
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState==4 && xmlhttp.status==200){
var a = eval("("+xmlhttp.responseText+")");
if(a.status == 1){
swal({title:"提交成功!",text:"您已经向服务器了这条信息!",type:"success"},
function () {
parent.top.topManager.reloadPage();
parent.layer.closeAll();
});
}else{
swal("哦豁","提交失败,请重试!","error");
}
}
} ; //服务器响应时完成相应操作
xmlhttp.open("post","scoreadd?scorelist="+scorelist ,true);
xmlhttp.send();
}
</script>
</html>
xsgrcjcx.jsp<!DOCTYPE HTML>
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html >
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="stylesheet" href="<%=request.getContextPath()%>/css/bootstrap.min.css" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >
<script src="<%=request.getContextPath()%>/js/jquery.js"></script>
<title>课程列表</title>
</head>
<body background="<%=request.getContextPath()%>/images/010.gif">
<div class="container-fluid">
<div class="row">
<div class="col-md-4"></div>
<div class="col-md-4"><h2 class="text-center">学生个人课程信息管理表</h2></div>
<div class="col-md-4"></div>
</div>
</div>
<br/>
<table class="table table-hover" id = 'table'>
<tr class="info">
<th>课程编号</th>
<th>课程名字</th>
<th>授课老师</th>
<th>课程学分</th>
<th>分数</th>
</tr>
<c:forEach items="${scoreonelist}" var="sco">
<tr>
<td>${sco.subjectId}</td>
<td>${sco.subjectName}</td>
<td>${sco.teacherName}</td>
<td>${sco.subjectCredit}</td>
<td>${sco.score}</td>
</tr>
</c:forEach>
</table>
<div class="row">
<div class="col-md-4"></div>
<div class="col-md-4"><h1>${h1}</h1></div>
<div class="col-md-4"></div>
</div>
<div id="page11" style="margin-top:5px; text-align:center;"></div>
</body>
</html>
xsyxkc.jsp<!DOCTYPE HTML>
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html >
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="stylesheet" href="<%=request.getContextPath()%>/css/bootstrap.min.css" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >
<link rel="stylesheet" href="<%=request.getContextPath()%>/font/iconfont.css" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >
<link rel="stylesheet" href="<%=request.getContextPath()%>/css/sweetalert/sweetalert.css" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >
<script src="<%=request.getContextPath()%>/js/jquery.js"></script>
<script src="<%=request.getContextPath()%>/lib/layer/1.9.3/layer.js"></script>
<script src="<%=request.getContextPath()%>/lib/laypage/1.2/laypage.js"></script>
<script src="<%=request.getContextPath()%>/js/sweetalert/sweetalert.min.js"></script>
<title>已选课程列表</title>
</head>
<body background="<%=request.getContextPath()%>/images/010.gif">
<div class="container-fluid">
<div class="row">
<div class="col-md-4"></div>
<div class="col-md-4"><h2 class="text-center">学生已选课程表</h2></div>
<div class="col-md-4"></div>
</div>
</div>
<br/>
<table class="table table-hover">
<tr class="info">
<th>课程编号</th>
<th>课程名字</th>
<th>授课老师</th>
<th>课程学分</th>
<th>操作</th>
</tr>
<c:forEach items="${yxsubjectlist}" var="sbj">
<tr>
<td>${sbj.subjectId}</td>
<td>${sbj.subjectName}</td>
<td>${sbj.teacherName}</td>
<td>${sbj.subjectCredit}</td>
<td>
<button type="button" class="btn btn-danger btn-xs" onclick="del(${sbj.subjectId},${userbean.userId});" >
<i class="iconfont"></i>
&nbsp;删除本课程
</button>
</td>
</tr>
</c:forEach>
</table>
</body>
<script src="<%=request.getContextPath()%>/lib/laypage/1.2/laypage.js"></script>
<script type="text/javascript">
function del(subjectid,studentid) {
swal({
title: "您确定要删除这条信息吗",
text: "删除后将无法恢复,请谨慎操作!",
type: "warning",
showCancelButton: true,
confirmButtonColor: "#DD6B55",
confirmButtonText: "删除",
closeOnConfirm: false
}, function () {
if (window.XMLHttpRequest){
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
} //创建XMLHttpRequest对象
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState==4 && xmlhttp.status==200){
var a = eval("("+xmlhttp.responseText+")");
if(a.status== 1){
swal({title:"删除成功!",text:"您已经永久删除了这条信息!",type:"success"},
function () {
location.href = 'xsyxkc?studentId=' + '${userbean.userId}' ;
});
}else{
swal("哦豁","删除失败,请重试!","error");
}
}
} ; //服务器响应时完成相应操作
xmlhttp.open("post","yxkcdel?subjectId=" + subjectid + "&studentId=" + studentid,true);
xmlhttp.send();
});
}
</script>
</html>

关于界面gy.jsp:

<!DOCTYPE HTML>
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<html >
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script src="<%=request.getContextPath()%>/js/jquery-1.8.3.js"></script>
<link rel="stylesheet" href="<%=request.getContextPath()%>/font/font1/LiDeBiao-Xing3.css" rel="external nofollow" >
<link rel="stylesheet" href="<%=request.getContextPath()%>/css/bootstrap.min.css" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >
<title>学生列表</title>
</head>
<body background="<%=request.getContextPath()%>/images/010.gif">
<div class="row">
<div class="col-md-2"></div>
<div class="col-md-8">
<div style='font-size: 60px;font-family:LiDeBiao-Xing3555757;margin-top:100px;' >
系统开发中。。。。。。。
</div>
</div>
<div class="col-md-2"></div>
</div>
</body>
<!-- 站在巨人的肩膀上,在互联网的胯下疯狂输出!<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;——邹海清 -->
</html>

项目截图:
学生成绩管理系统(SSM+MySQL+JSP)
学生成绩管理系统(SSM+MySQL+JSP)
学生成绩管理系统(SSM+MySQL+JSP)
。。。。。

具体项目源码地址:

源码地址 :   https://gitee.com/z77z/StuSystem

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,116
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,588
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,433
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,204
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,840
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,925