基于javaweb+mysql的ssh教务学生信息选课成绩管理系统(java+ssh+mysql+jsp)
私信源码获取及调试交流
运行环境
Java≥8、MySQL≥5.7、Tomcat≥8
开发工具
eclipse/idea/myeclipse/sts等均可配置运行
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明
基于javaweb+mysql的SSH教务学生信息选课成绩管理系统(java+ssh+mysql+jsp)
管理员:
admin 123456
教师:
T001 123456
T002 123456
学生:
S001 123456
S002 123456
S003 123456
管理员管理课程、选课、查看成绩、公告管理、学生管理、老师管理、班级管理等
学生查看课程、选课、向老师留言提问等
老师回复学生留言、创建课程、批改成绩等
List<Kecheng> listkecheng = DALBase.getPageEnity("kecheng", filter,
pageindex, pagesize);
int recordscount = DALBase.getRecordCount("kecheng",
filter == null ? "" : filter);
request.setAttribute("listkecheng", listkecheng);
PagerMetal pm = new PagerMetal(recordscount);
// 设置尺寸
pm.setPagesize(pagesize);
// 设置当前显示页
pm.setCurpageindex(pageindex);
// 设置分页信息
request.setAttribute("pagermetal", pm);
// 分发请求参数
dispatchParams(request, response);
String forwardurl = request.getParameter("forwardurl");
System.out.println("forwardurl=" + forwardurl);
if (forwardurl == null) {
forwardurl = "/admin/kechengmanager.jsp";
}
forward(forwardurl);
}
}
/**************************
*
*
* 教师控制
*
public void parseRequest(HttpServletRequest request)
throws UnsupportedEncodingException {
files = new HashMap<String, FileItem>();
// Create a factory for disk-based file items
DiskFileItemFactory factory = new DiskFileItemFactory();
factory.setSizeThreshold(sizeThreshold);
if (repository != null)
factory.setRepository(repository);
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setHeaderEncoding(encoding);
try {
List<FileItem> items = upload.parseRequest(request);
for (FileItem item : items) {
if (item.isFormField()) {
String fieldName = item.getFieldName();
String value = item.getString(encoding);
parameters.put(fieldName, value);
} else {
if (super.isValidFile(item)) {
continue;
}
String fieldName = item.getFieldName();
files.put(fieldName, item);
filesSize += item.getSize();
}
}
} catch (FileUploadException e) {
e.printStackTrace();
}
}
/** *//** *//** *//**
* 上传文件, 调用该方法之前必须先调用 parseRequest(HttpServletRequest request)
* @param parent 文件存储的目录
* @throws Exception
*/
public void upload(File parent) throws Exception {
if (files.isEmpty())
private void uploadFile(File file) throws Exception{
if (fileItem == null)
return;
long fileSize = fileItem.getSize();
if (sizeMax > -1 && fileSize > super.sizeMax){
String message = String.format("the request was rejected because its size (%1$s) exceeds the configured maximum (%2$s)", fileSize, super.sizeMax);
throw new RuntimeException(message);
}
String name = fileItem.getName();
fileItem.write(file);
}
/** *//** *//** *//**
* 获取文件信息
* 必须先调用 parseRequest(HttpServletRequest request)
* @return
*/
public FileItem getFileItem() {
return fileItem;
}
}
public class MutiFileUpload extends FileUploadBase {
private Map<String, FileItem> files;// 保存上传的文件
private void modifyPw() {
String password1 = request.getParameter("password1");
String repassword1 = request.getParameter("repassword1");
String repassword2 = request.getParameter("repassword2");
String forwardurl = request.getParameter("forwardurl");
String errorpageurl = request.getParameter("errorpageurl");
String id = request.getParameter("id");
if (id == null || id == "")
return;
Teacher teacher = (Teacher) DALBase
.load(Teacher.class, new Integer(id));
if (teacher != null) {
if (!teacher.getPassword().equals(password1)) {
try {
request.setAttribute("errormsg",
"<label class='error'>原始密码不正确,不能修改</label>");
request.getRequestDispatcher(errorpageurl).forward(request,
response);
} catch (Exception e) {
e.printStackTrace();
}
} else {
teacher.setPassword(repassword1);
DALBase.update(teacher);
request.getSession().setAttribute("teacher", teacher);
redirect(forwardurl);
}
}
}
/********************************************************
****************** 信息注销监听支持*****************************
*********************************************************/
public void delete() {
String id = request.getParameter("id");
DALBase.delete("teacher", " where id=" + id);
binding();
}
/*************************************************************
**************** 保存动作监听支持******************************
**************************************************************/
public void save() {
String forwardurl = request.getParameter("forwardurl");
// 验证错误url
String errorurl = request.getParameter("errorurl");
String tno = request.getParameter("tno");
if (item.isFormField()) {
String fieldName = item.getFieldName();
String value = item.getString(encoding);
parameters.put(fieldName, value);
} else {
if (!super.isValidFile(item)) {
continue;
}
if (fileItem == null)
fileItem = item;
}
}
} catch (FileUploadException e) {
e.printStackTrace();
}
}
/** *//** *//** *//**
* 上传文件, 调用该方法之前必须先调用 parseRequest(HttpServletRequest request)
* @param fileName 完整文件路径
* @throws Exception
*/
public void upload(String fileName) throws Exception {
File file = new File(fileName);
uploadFile(file);
}
/** *//** *//** *//**
* 上传文件, 调用该方法之前必须先调用 parseRequest(HttpServletRequest request)
* @param parent 存储的目录
* @throws Exception
*/
public void upload(File parent) throws Exception {
if (fileItem == null)
return;
String name = fileItem.getName();
File file = new File(parent, name);
uploadFile(file);
}
private void uploadFile(File file) throws Exception{
if (fileItem == null)
return;
long fileSize = fileItem.getSize();
String replycontent = request.getParameter("replycontent");
leaveword.setReplycontent(replycontent);
leaveword.setStatus(2);
DALBase.update(leaveword);
if (forwardurl == null) {
forwardurl = "/admin/leavewordmanager.do?actiontype=get";
}
redirect(forwardurl);
}
/********************************************************
****************** 信息注销监听支持*****************************
*********************************************************/
public void delete() {
String id = request.getParameter("id");
DALBase.delete("leaveword", " where id=" + id);
binding();
}
/*************************************************************
**************** 保存动作监听支持******************************
**************************************************************/
public void save() {
String forwardurl = request.getParameter("forwardurl");
// 验证错误url
String errorurl = request.getParameter("errorurl");
String title = request.getParameter("title");
String dcontent = request.getParameter("dcontent");
String createtime = request.getParameter("createtime");
String replyren = request.getParameter("replyren");
String replytime = request.getParameter("replytime");
String replycontent = request.getParameter("replycontent");
String status = request.getParameter("status");
String lyren = request.getParameter("lyren");
String stname = request.getParameter("stname");
SimpleDateFormat sdfleaveword = new SimpleDateFormat("yyyy-MM-dd");
Leaveword leaveword = new Leaveword();
leaveword.setTitle(title == null ? "" : title);
leaveword.setDcontent(dcontent == null ? "" : dcontent);
if (createtime != null) {
try {
e.printStackTrace();
}
return invokeMethod;
}
public void dispatchParams(HttpServletRequest request,HttpServletResponse response){
Enumeration params=request.getParameterNames();
while (params.hasMoreElements())
{
String paramname=params.nextElement().toString();
String value=request.getParameter(paramname);
request.setAttribute(paramname, value);
}
}
public String join(String join,String[] strAry){
StringBuffer sb=new StringBuffer();
for(int i=0;i<strAry.length;i++){
if(i==(strAry.length-1)){
sb.append(strAry[i]);
}else{
sb.append(strAry[i]).append(join);
}
}
return new String(sb);
}
/**
* 也没跳转
* @param url
*/
public void redirect(String url){
if (url == null) {
return;
}
try {
response.sendRedirect(request.getContextPath() + url);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 重定向
* @param url
*/
public void forward(String url){
String zhuanye = request.getParameter("zhuanye");
String jiguan = request.getParameter("jiguan");
String mobile = request.getParameter("mobile");
String banji = request.getParameter("banji");
String photo = request.getParameter("photo");
String mianmao = request.getParameter("mianmao");
String address = request.getParameter("address");
String des = request.getParameter("des");
String nation = request.getParameter("nation");
String birthday = request.getParameter("birthday");
SimpleDateFormat sdfstudent = new SimpleDateFormat("yyyy-MM-dd");
if (stno != null)
student.setStno(stno);
if (name != null)
student.setName(name);
student.setSex(sex);
student.setZhuanye(zhuanye);
student.setJiguan(jiguan);
student.setMobile(mobile);
student.setBanji(banji);
student.setPhoto(photo);
student.setMianmao(mianmao);
student.setAddress(address);
student.setDes(des);
student.setNation(nation);
if (birthday != null) {
try {
student.setBirthday(sdfstudent.parse(birthday));
} catch (ParseException e) {
e.printStackTrace();
}
}
DALBase.update(student);
if (forwardurl == null) {
forwardurl = "/admin/studentmanager.do?actiontype=get";
}
redirect(forwardurl);
}
if (banji == null)
return;
String name = request.getParameter("name");
SimpleDateFormat sdfbanji = new SimpleDateFormat("yyyy-MM-dd");
banji.setName(name);
DALBase.update(banji);
if (forwardurl == null) {
forwardurl = "/admin/banjimanager.do?actiontype=get";
}
redirect(forwardurl);
}
/******************************************************
*********************** 加载内部支持*********************
*******************************************************/
public void load() {
//
String id = request.getParameter("id");
String actiontype = "save";
dispatchParams(request, response);
if (id != null) {
Banji banji = (Banji) DALBase.load("banji", "where id=" + id);
if (banji != null) {
request.setAttribute("banji", banji);
}
actiontype = "update";
request.setAttribute("id", id);
}
request.setAttribute("actiontype", actiontype);
String forwardurl = request.getParameter("forwardurl");
System.out.println("forwardurl=" + forwardurl);
if (forwardurl == null) {
forwardurl = "/admin/banjiadd.jsp";
}
forward(forwardurl);
}
/******************************************************
*********************** 数据绑定内部支持*********************
*******************************************************/
public void binding() {
if (id == null)
return;
Leaveword leaveword = (Leaveword) DALBase.load(Leaveword.class,
new Integer(id));
if (leaveword == null)
return;
String replycontent = request.getParameter("replycontent");
leaveword.setReplycontent(replycontent);
leaveword.setStatus(2);
DALBase.update(leaveword);
if (forwardurl == null) {
forwardurl = "/admin/leavewordmanager.do?actiontype=get";
}
redirect(forwardurl);
}
/********************************************************
****************** 信息注销监听支持*****************************
*********************************************************/
public void delete() {
String id = request.getParameter("id");
DALBase.delete("leaveword", " where id=" + id);
binding();
}
/*************************************************************
**************** 保存动作监听支持******************************
**************************************************************/
public void save() {
String forwardurl = request.getParameter("forwardurl");
// 验证错误url
String errorurl = request.getParameter("errorurl");
String title = request.getParameter("title");
String dcontent = request.getParameter("dcontent");
String createtime = request.getParameter("createtime");
String replyren = request.getParameter("replyren");
String replytime = request.getParameter("replytime");
+ id);
if (kecheng != null) {
request.setAttribute("kecheng", kecheng);
}
actiontype = "update";
request.setAttribute("id", id);
}
request.setAttribute("actiontype", actiontype);
String forwardurl = request.getParameter("forwardurl");
System.out.println("forwardurl=" + forwardurl);
if (forwardurl == null) {
forwardurl = "/admin/kechengadd.jsp";
}
forward(forwardurl);
}
public void getChoose() {
String SQL = "";
String stno = request.getParameter("stno");
String subname = request.getParameter("subname");
SQL="select kc.* from kecheng kc ,xuanke xk where kc.subno=xk.subno ";
if (stno != null)
SQL+=" and xk.stno='"+stno+"'";
if (subname != null)
SQL += " and kc.subname like '%" + subname + "%' ";
//
int pageindex = 1;
int pagesize = 10;
// 获取当前分页
String currentpageindex = request.getParameter("currentpageindex");
// 当前页面尺寸
String currentpagesize = request.getParameter("pagesize");
// 设置当前页
if (currentpageindex != null)
pageindex = new Integer(currentpageindex);
// 设置当前页尺寸
if (currentpagesize != null)
pagesize = new Integer(currentpagesize);
List<Kecheng> listkecheng = DALBase.runNativeSQLInPage(SQL, Kecheng.class, pageindex, pagesize);
int recordscount = DALBase.getNativeSQLCount(SQL);
request.setAttribute("listkecheng", listkecheng);
PagerMetal pm = new PagerMetal(recordscount);
// 设置尺寸
pm.setPagesize(pagesize);
// 设置当前显示页
pm.setCurpageindex(pageindex);
// 设置分页信息
request.setAttribute("pagermetal", pm);
// 分发请求参数
dispatchParams(request, response);
String forwardurl = request.getParameter("forwardurl");
teacherLogin(request, response);
}
}
private void adminLogin(HttpServletRequest request,
HttpServletResponse response) {
String username = request.getParameter("username");
String password = request.getParameter("password");
Users u = (Users) DALBase.load("users", " where username='" + username
+ "' and password='" + password + "'");
if (u != null) {
HttpSession session = request.getSession();
u.setLogtimes(u.getLogtimes() + 1);
DALBase.update(u);
session.setAttribute("users", u);
redirect("/admin/index.jsp");
} else {
// 分发
dispatchParams(request, response);
request.setAttribute("errmsg",
"<img src=\"images/error.gif\"/>用户与密码不匹配");
System.out.println("系统用户登录失败");
forward("/admin/login.jsp");
}
}
private void studentLogin(HttpServletRequest request,
HttpServletResponse response) {
if (id == null)
return;
Xuenian xuenian = (Xuenian) DALBase.load(Xuenian.class, new Integer(id));
if (xuenian == null)
return;
String niandu = request.getParameter("niandu");
SimpleDateFormat sdfxuenian = new SimpleDateFormat("yyyy-MM-dd");
xuenian.setNiandu(niandu);
DALBase.update(xuenian);
if (forwardurl == null) {
forwardurl = "/admin/xuenianmanager.do?actiontype=get";
}
redirect(forwardurl);
}
/******************************************************
*********************** 加载内部支持*********************
*******************************************************/
public void load() {
//
String id = request.getParameter("id");
String actiontype = "save";
dispatchParams(request, response);
if (id != null) {
Xuenian xuenian = (Xuenian) DALBase.load("xuenian", "where id="
+ id);
if (xuenian != null) {
request.setAttribute("xuenian", xuenian);
}
actiontype = "update";
request.setAttribute("id", id);
}
request.setAttribute("actiontype", actiontype);
String forwardurl = request.getParameter("forwardurl");
System.out.println("forwardurl=" + forwardurl);
if (forwardurl == null) {
forwardurl = "/admin/xuenianadd.jsp";
}
forward(forwardurl);
}
/******************************************************
*********************** 数据绑定内部支持*********************
*******************************************************/
public void binding() {
}
forward(forwardurl);
}
}
public class KechengAction extends PageActionBase {
private void waitXuanke() {
String filter = "where status='选课中' ";
String subname = request.getParameter("subname");
if (subname != null)
filter += " and subname like '%" + subname + "%' ";
//
int pageindex = 1;
int pagesize = 10;
// 获取当前分页
}
List<Object> banji_datasource = DALBase.getEntity("banji", "");
request.setAttribute("banji_datasource", banji_datasource);
dispatchParams(request, response);
String forwardurl = request.getParameter("forwardurl");
if (forwardurl == null) {
forwardurl = "/admin/tongji.jsp";
}
forward(forwardurl);
}
private void avgTongji() {
String filter = null;
String banji = request.getParameter("banji");
String begintime = request.getParameter("begintime");
String endtime = request.getParameter("endtime");
String stno = request.getParameter("stno");
if (banji != null) {
filter = MessageFormat
.format(" select cj.subname,avg(score) from xuanke cj,student s where s.stno=cj.stno and s.banji=''{0}'' group by cj.subname ",
banji);
}
if (begintime != null && endtime != null && stno != null) {
filter = MessageFormat
.format(" select cj.subname,avg(score) from xuanke cj where cj.createtime>=''{0}'' and cj.createtime<=''{1}'' and cj.xuehao=''{2}'' group by cj.subname ",
begintime, endtime, stno);
}
if (filter != null) {
SimpleStatistics simpleStatistics = new SimpleStatistics();
JFreeChart chart = simpleStatistics.buildColumnChart("科目", "平均分",
"科目平均分统计", filter);
String filename = null;
try {
filename = ServletUtilities.saveChartAsPNG(chart, 1000, 500,
request.getSession());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
if (forwardurl == null) {
forwardurl = "/admin/noticemanager.do?actiontype=get";
}
redirect(forwardurl);
}
/******************************************************
*********************** 更新内部支持*********************
*******************************************************/
public void update() {
String forwardurl = request.getParameter("forwardurl");
String id = request.getParameter("id");
if (id == null)
return;
Notice notice = (Notice) DALBase.load(Notice.class, new Integer(id));
if (notice == null)
return;
String title = request.getParameter("title");
String content = request.getParameter("content");
String pubren = request.getParameter("pubren");
SimpleDateFormat sdfnotice = new SimpleDateFormat("yyyy-MM-dd");
notice.setTitle(title);
notice.setContent(content);
notice.setCreatetime(new Date());
notice.setPubren(pubren);
DALBase.update(notice);
if (forwardurl == null) {
forwardurl = "/admin/noticemanager.do?actiontype=get";
}
redirect(forwardurl);
}
/******************************************************
*********************** 加载内部支持*********************
*******************************************************/
public void load() {
//
String id = request.getParameter("id");
String actiontype = "save";
dispatchParams(request, response);
if (id != null) {
Notice notice = (Notice) DALBase.load("notice", "where id=" + id);
if (notice != null) {
request.setAttribute("notice", notice);
}
actiontype = "update";
String id = request.getParameter("id");
DALBase.delete("banji", " where id=" + id);
binding();
}
/*************************************************************
**************** 保存动作监听支持******************************
**************************************************************/
public void save() {
String forwardurl = request.getParameter("forwardurl");
// 验证错误url
String errorurl = request.getParameter("errorurl");
String name = request.getParameter("name");
SimpleDateFormat sdfbanji = new SimpleDateFormat("yyyy-MM-dd");
Banji banji = new Banji();
banji.setName(name == null ? "" : name);
// 产生验证
Boolean validateresult = saveValidate("where name='" + name + "'");
if (validateresult) {
try {
request.setAttribute("errormsg",
"<label class='error'>已经存在班级</label>");
request.setAttribute("banji", banji);
request.setAttribute("actiontype", "save");
request.getRequestDispatcher(errorurl).forward(request,
response);
} catch (Exception e) {
e.printStackTrace();
}
return;
}
DALBase.save(banji);
if (forwardurl == null) {
forwardurl = "/admin/banjimanager.do?actiontype=get";
}
redirect(forwardurl);
}
// 新增验证
private boolean saveValidate(String filter) {
return DALBase.isExist("banji", filter);
}
/******************************************************
*********************** 更新内部支持*********************
Student u = (Student) DALBase.load("student", " where stno='" + username
+ "' and password='" + password + "'");
if (u != null) {
HttpSession session = request.getSession();
DALBase.update(u);
session.setAttribute("student", u);
redirect("/student/index.jsp");
} else {
// 分发
dispatchParams(request, response);
request.setAttribute("errmsg",
"<img src=\"images/error.gif\"/>用户与密码不匹配");
System.out.println("系统用户登录失败");
forward("/admin/login.jsp");
}
}
private void teacherLogin(HttpServletRequest request,
HttpServletResponse response) {
String username = request.getParameter("username");
String password = request.getParameter("password");
Teacher u = (Teacher) DALBase.load("teacher", " where tno='" + username
+ "' and password='" + password + "'");
if (u != null) {
HttpSession session = request.getSession();
DALBase.update(u);
session.setAttribute("teacher", u);