该模块的主要功能如下:
先看看结果怎样,一睹为快
示例程序(学生选课)代码:
#数据模型层
package com.east.entity;
import java.io.Serializable;
public class Subject implements Serializable {
private Integer subject_id; //课题ID
private String subject_title; //课题名称
private String subject_condition; //课题要求
private String tea_name; //导师名称
private String degree; //导师职称
private String stu_name; //选课学生
private String status; //论文状态
private String audit; //编辑状态
private String AuditSituation; //审核情况
public Integer getSubject_id() {
return subject_id;
}
public void setSubject_id(Integer subject_id) {
this.subject_id = subject_id;
}
public String getSubject_title() {
return subject_title;
}
public void setSubject_title(String subject_title) {
this.subject_title = subject_title;
}
public String getSubject_condition() {
return subject_condition;
}
public void setSubject_condition(String subject_condition) {
this.subject_condition = subject_condition;
}
public String getTea_name() {
return tea_name;
}
public void setTea_name(String tea_name) {
this.tea_name = tea_name;
}
public String getDegree() {
return degree;
}
public void setDegree(String degree) {
this.degree = degree;
}
public String getStu_name() {
return stu_name;
}
public void setStu_name(String stu_name) {
this.stu_name = stu_name;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getAudit() {
return audit;
}
public void setAudit(String audit) {
this.audit = audit;
}
public String getAuditSituation() {
return AuditSituation;
}
public void setAuditSituation(String auditSituation) {
AuditSituation = auditSituation;
}
@Override
public String toString() {
return "Subject [subject_id=" + subject_id + ", subject_title=" + subject_title + ", subject_condition="
+ subject_condition + ", tea_name=" + tea_name + ", degree=" + degree + ", stu_name=" + stu_name
+ ", status=" + status + ", audit=" + audit + ", AuditSituation=" + AuditSituation + "]";
}
}
#数据访问层
package com.east.dao;
import java.util.List;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Options;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
import com.east.entity.Subject;
public interface SubjectDao {
/*
* 查询所有课题
*/
@Select("select * from subject where status = #{status}")
List<Subject> findByStatus(Subject subject);
/*
* 查询某个学生的课题
*/
@Select("select * from subject where stu_name = #{stu_name}")
Subject findByStuName(String stu_name);
/*
* 学生选题
*/
@Update("update subject set stu_name =#{stu_name} ,status=#{status} where subject_id = #{subject_id}")
void UpdateSub(Subject subject);
/*
* 教师出题
*/
@Insert("insert into subject(subject_title,subject_condition,tea_name,degree) "
+ " values(#{subject_title},#{subject_condition},#{tea_name},#{degree})")
@Options(useGeneratedKeys = true,keyProperty="subject_id")
void AddSubjet(Subject subject);
/*
* 查询某个老师出的题
*/
@Select("select * from subject where tea_name = #{tea_name}")
Subject findByTeaName(String tea_name);
/*
* 删除某个教师的课题
*/
@Delete("delete from subject where tea_name = #{tea_name}")
void DeleteSub(Subject subject);
/*
* 获取所有课题
*/
@Select("select * from subject")
List<Subject> findAll();
}
#业务逻辑层
package com.east.service;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Isolation;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import com.east.dao.SubjectDao;
import com.east.entity.Subject;
@Transactional(propagation=Propagation.REQUIRED,isolation=Isolation.DEFAULT)
@Service("subjectBiz")
public class SubjectBiz {
/*
* 自动注入SubjectBiz
*/
@Autowired
private SubjectDao subjectDao;
/*
* 查询所有课题
*/
public List<Subject> findByStatus(Subject subject){
return subjectDao.findByStatus(subject);
}
/*
* 查询某个学生的课题
*/
public Subject findByStuName(String stu_name){
return subjectDao.findByStuName(stu_name);
}
/*
* 学生选题
*/
public void UpdateSub(Subject subject){
subjectDao.UpdateSub(subject);
}
/*
* 教师出题
*/
public void AddSubjet(Subject subject){
subjectDao.AddSubjet(subject);
}
/*
* 查询某个老师出的题
*/
public Subject findByTeaName(String tea_name){
return subjectDao.findByTeaName(tea_name);
}
/*
* 删除某个教师的课题
*/
public void DeleteSub(Subject subject){
subjectDao.DeleteSub(subject);
}
/*
* 获取所有课题
*/
public List<Subject> findAll(){
return subjectDao.findAll();
}
}
#控制层
package com.east.action;
import java.io.IOException;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.servlet.ServletUtilities;
import org.jfree.data.general.DefaultPieDataset;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import com.east.entity.Student;
import com.east.entity.Subject;
import com.east.entity.Teacher;
import com.east.service.SubjectBiz;
//import com.east.util.JFreeUtil;
import com.east.util.JFreeUtil;
/*
* 处理用户请求的控制器
*/
@Controller
public class SubjectAction {
//自动注入UserService
@Autowired
@Qualifier("subjectBiz")
private SubjectBiz subjectBiz;
/*
* 学生选题
*/
@RequestMapping(value="/SelectSub")
public ModelAndView SelectSub(String id,ModelAndView mv,HttpSession session){
int subject_id = Integer.parseInt(id);
Student stu = (Student) session.getAttribute("user");
String stu_name = stu.getStu_name();
String status = "已选";
Subject sub = new Subject();
sub.setSubject_id(subject_id);
sub.setStu_name(stu_name);
sub.setStatus(status);
subjectBiz.UpdateSub(sub);
mv.setViewName("/student/MySubject");
return mv;
}
/*
* 学生退选课题
*/
@RequestMapping(value="/Chosen")
public ModelAndView Chosen(String id,ModelAndView mv,HttpSession session){
int subject_id = Integer.parseInt(id);
String stu_name = "无";
String status = "未选";
Subject sub = new Subject();
sub.setSubject_id(subject_id);
sub.setStu_name(stu_name);
sub.setStatus(status);
subjectBiz.UpdateSub(sub);
mv.setViewName("/student/MySubject");
return mv;
}
}
#视图层
<%@page import="java.util.List"%>
<%@page import="com.east.entity.Student"%>
<%@page import="com.east.entity.Subject"%>
<%@page import="com.east.service.SubjectBiz"%>
<%@page import="org.springframework.context.support.ClassPathXmlApplicationContext"%>
<%@page import="org.springframework.context.ApplicationContext"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>我的课题</title>
<link rel="stylesheet" href="../bootstrap-3.3.7/css/bootstrap.min.css">
<link rel="stylesheet" href="bootstrap-3.3.7/css/bootstrap.min.css">
<script src="../js/jquery-3.2.1.min.js"></script>
<script src="js/jquery-3.2.1.min.js"></script>
<script src="../js/bootstrap.min.js"></script>
<script src="js/bootstrap.min.js"></script>
<script type="text/javascript">
function checkbox()
{
var check=$("input[name='data']:checked");//选中的复选框
var length = check.length; //获取勾选的个数
if(length>1){
alert("操作有误,你只能选一个课题!");
}else{
check.each(function(){
var row=$(this).parent("td").parent("tr");
var subject_id=row.find("[name='subject_id']").html();
alert("选题成功! ");
window.location.href="${pageContext.request.contextPath}/SelectSub?id="+subject_id;
});
}
$('#myModal').modal('hide');
}
</script>
</head>
<body>
<div class="container-fluid row form-group">
<div class="panel panel-success">
<div class="panel-heading">
<div>
<strong>我的课题</strong>
</div>
</div>
<%
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
SubjectBiz subjectBiz = (SubjectBiz) ctx.getBean("subjectBiz");
Subject sub = new Subject();
Student student = (Student) session.getAttribute("user");
String stu_name = student.getStu_name();
sub.setStu_name(stu_name);
Subject subject = subjectBiz.findByStuName(stu_name);
%>
<div class="panel-body">
<table class="table table-hover" border="1">
<%
if(subject !=null){
%>
<tr style="height: 40px;" class="success">
<td>
<label style="width: 100px;text-align: right;padding-right: 15px;">课题标题:</label>
<label><%=subject.getSubject_title()%></label>
</td>
</tr>
<tr style="height: 40px;">
<td>
<label style="width: 100px;text-align: right;padding-right: 15px;">指导老师:</label>
<label><%=subject.getTea_name() %></label>
</td>
</tr>
<tr style="height: 40px;">
<td>
<label style="width: 100px;text-align: right;padding-right: 15px;">导师职称:</label>
<label><%=subject.getDegree() %></label>
</td>
</tr>
<tr style="height: 40px;">
<td>
<label style="width: 100px;text-align: right;padding-right: 15px;">编辑状态:</label>
<label><%=subject.getAudit() %></label>
</td>
</tr>
<tr style="height: 40px;">
<td>
<label style="width: 100px;text-align: right;padding-right: 15px;">我要操作:</label>
<label><a href="${pageContext.request.contextPath }/Chosen?id=<%=subject.getSubject_id()%>">退选课题</a></label>
</td>
</tr>
<%
}else{
%>
<tr>
<td>
<label><b style="font-size: 18px;">你还没有选题!</b></label>
<a href="#" class="btn btn-primary btn-sm" style="float: right;" data-toggle="modal" data-target="#myModal">
<span class="glyphicon glyphicon-plus" ></span> 我要选题
</a>
</td>
</tr>
<%
}
%>
</table>
</div>
</div>
</div>
<!-- 模态框(Modal) -->
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header" style="text-align: center;">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">
×
</button>
<div class="container-fluid row form-group">
<ul class="nav nav-pills nav-stacked">
<li class="active"><a href="#" style="text-align: left;" class="glyphicon glyphicon-edit" >我要选题</a></li>
</ul>
</div>
</div>
<div class="modal-body">
<table class="table table-hover" border="1">
<tr>
<td>序号</td>
<td>课题题目</td>
<td>指导教师</td>
<td>导师职称</td>
<td>操作</td>
</tr>
<%
Subject subjects = new Subject();
subjects.setStatus("未选");
List<Subject> list = subjectBiz.findByStatus(subjects);
for(Subject subs :list){
%>
<tr>
<td name="subject_id"><%=subs.getSubject_id() %></td>
<td><%=subs.getSubject_title() %></td>
<td><%=subs.getTea_name() %></td>
<td><%=subs.getDegree() %></td>
<td><input name="data" type="checkbox" /></td>
</tr>
<%
}
%>
</table>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-primary" οnclick="checkbox()">
<span class="glyphicon glyphicon-open"></span>确定
</button>
<button type="button" class="btn btn-default" data-dismiss="modal">关闭
</button>
</div>
</div><!-- /.modal-content -->
</div><!-- /.modal -->
</body>
</html>