前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java+Jsp+MySQL高校选课系统设计与实现(附源码下载地址)

Java+Jsp+MySQL高校选课系统设计与实现(附源码下载地址)

作者头像
C you again 的博客
发布2022-11-02 17:22:25
2.4K0
发布2022-11-02 17:22:25
举报

文章目录

01 完整源码下载

温馨提示:高校选课系统(courseSelection)完整源码下载地址附在文章末尾

02 系统概述

学生选课系统是一个学校不可缺少的部分,它能为用户提供充足的信息和快捷的查询手段。管理员可以通过超级用户身份登录,对系统进行全面的管理。学生可以登录系统进行个人信息查询、网上选课等等。

本文设计的高校选课系统是在J2EE平台下开发完成的,采用了B/S模式、MySQL数据库和Tomcat服务器。其具有用户界面简洁友好,操作简单易用,运行稳定可靠,易维护,可扩展等特点,基本达到了设计要求,对同类系统的设计与实现具有一定的参考价值。

03 开发工具及技术选型

  • 数据表现层:Jsp+JavaScript+CSS
  • 业务逻辑层:Java+Struts
  • 数据持久层:MySQL+Hibernate
  • 开发工具:IDEA / Eclipse

04 运行环境

代码语言:javascript
复制
JDK1.8 + Tomcat9.0+ MySQL5.7

05 用户分析

本系统主要使用人群为系统管理员、普通读者。

  • 系统管理员:管理整个系统的各项功能,如:专业管理、课程管理、信息统计。
  • 普通读者:查询基本信息、选择新课程、查询已选课程、修改登录密码。

06 功能分析

系统管理员:

  1. 专业管理。 列表显示专业编号、专业名称、开设年份、专业学制、是否结业等专业信息。点击添加新专业按钮,填写入学年份、专业名称、学制录入新专业。
  2. 课程管理。 列表显示专业名称、课程名称 、上课时间、上课地点、课程学分、授课教师、学生是否可选等课程信息。点击增加新课程按钮,填写专业、课程名称、上课时间、上课地点、课程学分、课程介绍、授课教师、教师介绍录入新课程。输入专业、教师名称、课程名称进行条件搜索。
  3. 统计信息。 统计每个专业下学生选课情况,并且可以导出PDF、Excel文档。
  4. 修改登录密码。 对个人的登录密码进行修改操作。
  5. 退出系统。 退出当前登录用户,跳转待登录界面。

普通读者:

  1. 查询基本信息。 对专业、入学年份、学制、学号、出生日期、联系电话、现住址、家庭地址等基本信息进行查询。
  2. 选择新课程。 对自己专业下的课程进行选课。
  3. 查询已选课程。 对已经选择的课程进行查询,按列表显示课程名称、授课教师、学分、上课时间、上课地点等信息。
  4. 修改登录密码。 对个人的登录密码进行修改操作。
  5. 退出系统。 退出当前登录用户,跳转待登录界面。

07 数据库设计

tb_course: 用于存储课程信息

字段名称

类型

是否为NULL

是否主键

说明

id

int

课程编号

name

varchar

课程名称

schooltime

varchar

上课时间

addr

varchar

上课地点

credit

decimal

课程学分

courseInfo

varchar

课程介绍

teacherName

varchar

老师姓名

teacherInfo

varchar

老师介绍

isFinish

bit

是否可选

specialtyId

int

所属专业编号

tb_specialty: 用于存储专业信息

字段名称

类型

是否为NULL

是否主键

说明

id

int

专业编号

enterYear

varchar

开设年份

name

varchar

专业名称

langthYear

varchar

专业学制

isFinish

bit

是否结业 0:未结业 1:结业

tb_stucourse: 用于映射学生与课程之间的关系

字段名称

类型

是否为NULL

是否主键

说明

id

int

主键编号

stuID

int

学生编号

courseID

int

课程编号

tb_stuuser: 用于存储学生信息

字段名称

类型

是否为NULL

是否主键

说明

id

int

学生编号

stuName

varchar

学生姓名

stuNo

varchar

学生学号

specialtyId

int

学生所学专业编号

stuSex

varchar

学生性别

birthday

varchar

学生出生年月日

homeAddr

varchar

学生家庭地址

tel

varchar

学生电话

addr

varchar

学生当前居住地址

tb_userlogin: 用于存储用户信息

字段名称

类型

是否为NULL

是否主键

说明

id

int

用户编号

loginName

varchar

用户名

pwd

varchar

密码

type

varchar

用户类型 1:管理员 2:学生

mail

varchar

邮箱

08 项目工程结构及说明

目录

说明

com.cya.action

存放action类,接收前端发来的请求,并将响应结果返回给前端

com.cya.dao

存放dao层接口

com.cya.dto

存放实体类

com.cya.tools

存放工具类

WebContent/images

存放项目所需要的图片文件

WebContent/manager

存放管理员端Jsp文件

WebContent/stu

存放普通用户端(学生)Jsp文件

09 部分功能展示及源码

9.1 管理员端–首页

9.2 管理员端–专业管理

专业列表:

添加新专业:

部分源码:

代码语言:javascript
复制
package com.cya.action;

import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.DynaActionForm;
import org.apache.struts.actions.DispatchAction;

import com.cya.dao.ISpecialtyDao;
import com.cya.dto.Specialty;

/**
 * @author 公众号【IT学长】 
 */
public class SpecialtyAction extends DispatchAction {

	private ISpecialtyDao specialtyDao;
	public void setSpecialtyDao(ISpecialtyDao specialtyDao) {
		this.specialtyDao = specialtyDao;
	}

	public ActionForward insert(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) {
		DynaActionForm specialtyForm = (DynaActionForm) form;
		Specialty specialty = new Specialty();
		specialty.setIsFinish(false); // 设置是否结业,默认为否
		specialty.setName(specialtyForm.getString("name"));
		specialty.setEnterYear(specialtyForm.getString("enterYear"));
		specialty.setLangthYear(specialtyForm.getString("langthYear"));
		specialtyDao.insert(specialty);
		findAll(mapping, specialtyForm, request, response);
		return mapping.findForward("showSpecialty");
	}

	/**
	 * 将专业设置为已结业
	 * @param mapping
	 * @param form
	 * @param request
	 * @param response
	 * @return
	 */
	public ActionForward updateIsFinish(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) {
		Integer id = Integer.valueOf(request.getParameter("id"));
		specialtyDao.updateIsFinish(id);
		return findAll(mapping, form, request, response);
	}

	public ActionForward findAll(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) {
		List list = specialtyDao.findByAll();
		request.setAttribute("list", list);
		return mapping.findForward("showSpecialty");
	}

}

9.3 管理员–课程管理

课程列表:

添加新课程:

部分源码:

代码语言:javascript
复制
package com.cya.action;

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

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.DynaActionForm;
import org.apache.struts.actions.DispatchAction;

import com.cya.dao.ICourseDao;
import com.cya.dao.ISpecialtyDao;
import com.cya.dto.Course;
import com.cya.dto.Specialty;

/**
 * @author 公众号【IT学长】 
 */

public class CourseAction extends DispatchAction {
	
	private ISpecialtyDao specialtyDao;
	private ICourseDao courseDao;
	
	/**
	 * @param specialtyDao the specialtyDao to set
	 */
	public void setSpecialtyDao(ISpecialtyDao specialtyDao) {
		this.specialtyDao = specialtyDao;
	}
	/**
	 * @param courseDao the courseDao to set
	 */
	public void setCourseDao(ICourseDao courseDao) {
		this.courseDao = courseDao;
	}
	public ActionForward insert(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) {
		DynaActionForm courseForm = (DynaActionForm) form;
		Course course = new Course();
		course.setName(courseForm.getString("name"));
		course.setSchooltime(courseForm.getString("schooltime"));
		course.setAddr(courseForm.getString("addr"));
		course.setCredit((Short)courseForm.get("credit"));
		course.setCourseInfo(courseForm.getString("courseInfo"));
		course.setTeacherName(courseForm.getString("teacherName"));
		course.setTeacherInfo(courseForm.getString("teacherInfo"));
		course.setIsFinish(true);	//是否可以选课,默认为可以
		course.setSpecialtyId((Integer)courseForm.get("specialtyId"));
		courseDao.insert(course);
		return findBySearch(mapping, courseForm, request, response);
	}
	public ActionForward updateIsFinish(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) {
		Integer id = Integer.valueOf(request.getParameter("id"));
		courseDao.updateIsFinish(id);
		return courseInfo(mapping, form, request, response);
	}
	public ActionForward findBySearch(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) {
		List<Specialty> sList = specialtyDao.findByAll();
		
		Map<String,String> map = new HashMap<String,String>();
		if(request.getParameter("specialtyId")!=null&&!request.getParameter("specialtyId").equals("-1")){
			map.put("specialtyId", request.getParameter("specialtyId"));
		}
		if(request.getParameter("name")!=null&&!request.getParameter("name").equals("")){
			map.put("name", request.getParameter("name"));
		}
		if(request.getParameter("teacherName")!=null&&!request.getParameter("teacherName").equals("")){
			map.put("teacherName", request.getParameter("teacherName"));
		}
		
		List<Object> clist = courseDao.findBySearch(map);
		
		request.setAttribute("sList", sList);
		request.setAttribute("cList", clist);
		return mapping.findForward("showCourse");
	}
	
	/**
	 * 进入添加新课程页面 
	 * @param mapping
	 * @param form
	 * @param request
	 * @param response
	 * @return
	 */
	public ActionForward showInsert(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) {
		List<Specialty> list = specialtyDao.findByAll();
		request.setAttribute("list", list);
		return mapping.findForward("addCourse");
	}
	public ActionForward courseInfo(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) {
		Integer id = Integer.valueOf(request.getParameter("id"));
		Course course = courseDao.findByID(id);
		Specialty specialty = specialtyDao.findById(course.getSpecialtyId());
		request.setAttribute("course", course);
		request.setAttribute("specialty", specialty);
		return mapping.findForward("courseInfo");
	}
}

9.4 管理员端–统计信息

信息列表:

选课人员列表:

导出PDF文档:

在这里插入图片描述
在这里插入图片描述

导出Excel文档:

9.5 普通用户端–基本信息

部分源码:

代码语言:javascript
复制
<%@ page language="java" pageEncoding="utf-8"%>

<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html:html lang="true">
  <head>
    <title>welcome.jsp</title>
	<link rel="stylesheet" type="text/css" href="images/style.css">
</head>
  <body>
    <table width="845" border="0" cellspacing="0" align="center">
  <tr>
    <td height="124" colspan="2" background="images/topU.gif">&nbsp;</td>
  </tr>
  <tr>
    <td width="145" height="500" align="left" valign="top" bgcolor="#E4F0D8">
		<jsp:include page="left.jsp"/>
	</td>
    <td width="700" align="left" valign="top">
		<table cellspacing="0" width="600px" align="center">
			<tr>
				<td height="20" colspan="2"></td>
			</tr>
			<tr>
				<td width="14" background="images/jiantou.jpg">&nbsp;</td>
				<td width="585"><span class="STYLE2">当前位置:</span>用户基本信息</td>
			</tr>
			<tr>
				<td height="8" colspan="2"></td>
			</tr>

			<tr>
				<td height="3" colspan="2" bgcolor="#b1de69"></td>
			</tr>
			<tr>
				<td height="20" colspan="2"></td>
			</tr>
		</table>
		<table width="500" align="center" cellspacing="0">
			<tr>
				<td height="30" align="right" bgcolor="#e4f0d8" class="td0" width="114">专业名称:</td>
				<td align="right" bgcolor="#e4f0d8" class="td0" width="10">&nbsp;</td>
				<td width="9" height="30" align="left" bgcolor="#e4f0d8" class="td0">&nbsp;</td>
			    <td width="357" align="left" bgcolor="#e4f0d8" class="td0">${specialty.name}</td>
			</tr>
			<tr>
				<td height="30" align="right" class="td1">入学年份:</td>
				<td height="30" align="right" class="td1">&nbsp;</td>
				<td height="30" class="td2">&nbsp;</td>				
			    <td height="30" class="td1">${specialty.enterYear}年</td>
			</tr>
			<tr>
			  <td height="30" align="right" class="td1">学制:</td>
			  <td height="30" align="right" class="td1">&nbsp;</td>
			  <td height="30" class="td2">&nbsp;</td>
		      <td height="30" class="td1">${specialty.langthYear}年</td>
		  </tr>
			<tr>
				<td height="30" align="right" class="td1">姓名:</td>
				<td height="30" align="right" class="td1">&nbsp;</td>
				<td height="30" class="td2">&nbsp;</td>
			    <td height="30" class="td1">${stuUser.stuName}</td>
			</tr>
			<tr>
			  <td height="30" align="right" class="td1">学号:</td>
			  <td height="30" align="right" class="td1">&nbsp;</td>
			  <td height="30" class="td2">&nbsp;</td>
		      <td height="30" class="td1">${stuUser.stuNo}</td>
		  </tr>
			<tr>
				<td height="30" align="right" class="td1">性别:</td>
				<td height="30" align="right" class="td1">&nbsp;</td>
				<td height="30" class="td2">&nbsp;</td>
			    <td height="30" class="td1">${stuUser.stuSex}</td>
			</tr>
			<tr>
			  <td height="30" align="right" class="td1">出生日期:</td>
			  <td height="30" align="right" class="td1">&nbsp;</td>
			  <td height="30" class="td2">&nbsp;</td>
		      <td height="30" class="td1">${stuUser.birthday}</td>
		  </tr>
			<tr>
				<td height="30" align="right" class="td1">联系电话:</td>
				<td height="30" align="right" class="td1">&nbsp;</td>
				<td height="30" class="td2">&nbsp;</td>				
			    <td height="30" class="td1">${stuUser.tel}</td>
			</tr>
			<tr>
				<td height="30" align="right" class="td1">现住址:</td>
				<td height="30" align="right" class="td1">&nbsp;</td>
				<td height="30" class="td2">&nbsp;</td>		
			    <td height="30" class="td1">${stuUser.addr}</td>
			</tr>
			<tr>
				<td height="30" align="right" class="td1">家庭地址:</td>
				<td height="30" align="right" class="td1">&nbsp;</td>
				<td height="30" class="td2">&nbsp;</td>		
			    <td height="30" class="td1">${stuUser.homeAddr}</td>
			</tr>
		</table>
		<p>
	</td>
  </tr>
  <tr>
  	<td style="font-weight: bold;color: green;font-size: 18px;" height="85" colspan="2" align="center" background="images/bottomU.gif">&nbsp;【IT学长】,几十套毕业设计项目源码、百G Java面试题</td>
  </tr>
</table>
  </body>
</html:html>

9.6 普通用户端–已选课程

部分源码:

代码语言:javascript
复制
<%@ page language="java" pageEncoding="utf-8"%>

<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html:html lang="true">
  <head>
    <title>selected.jsp</title>
	<link rel="stylesheet" type="text/css" href="images/style.css">
  </head>
  <body>
    <table width="845" cellspacing="0" align="center">
  <tr>
    <td height="124" colspan="2" background="images/topU.gif">&nbsp;</td>
  </tr>
  <tr>
    <td width="150" height="500" align="left" valign="top" bgcolor="#E4F0D8">
		<jsp:include page="left.jsp"/>
	</td>
    <td align="left" valign="top">
		<table cellspacing="0" width="600px" align="center">
			<tr>
				<td height="20" colspan="2"></td>
			</tr>
			<tr>
				<td width="14" background="images/jiantou.jpg">&nbsp;</td>
				<td width="585"><span class="STYLE2">当前位置:</span>查询已选课程</td>
			</tr>
			<tr>
				<td height="8" colspan="2"></td>
			</tr>

			<tr>
				<td height="3" colspan="2" bgcolor="#b1de69"></td>
			</tr>
			<tr>
				<td height="20" colspan="2"></td>
			</tr>
		</table>
		<table width="500" align="center" cellspacing="0">
			<tr>
				<td height="30" align="center" class="td0"><strong>课程名称</strong></td>
				<td align="center" class="td0"><strong>授课教师</strong></td>
				<td align="center" class="td0"><strong>学分</strong></td>
				<td align="center" class="td0"><strong>上课时间</strong></td>
				<td align="center" class="td0"><strong>上课地点</strong></td>
			</tr>
			<logic:iterate id="list" name="list">
				<tr>
				  <td height="30" align="center" class="td1">
				  <html:link page="/stuUser.do?method=courseInfo&id=${list[1].id}&path=selected">
				  ${list[1].name}</html:link></td>
					<td align="center" class="td1">${list[1].teacherName}</td>
					<td align="center" class="td1">${list[1].credit }</td>
					<td align="center" class="td1">${list[1].schooltime}</td>
					<td align="center" class="td1">${list[1].addr}</td>
				</tr>
			</logic:iterate>
		</table>
	</td>
  </tr>
  <tr>
  	<td style="font-weight: bold;color: green;font-size: 18px;" height="85" colspan="2" align="center" background="images/bottomU.gif">&nbsp;【IT学长】,几十套毕业设计项目源码、百G Java面试题</td>
  </tr>
</table>
  </body>
</html:html>

9.7 用户登录

部分源码:

代码语言:javascript
复制
package com.cya.action;

import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.DynaActionForm;

import com.cya.dao.ISpecialtyDao;
import com.cya.dao.IStuUserDao;
import com.cya.dao.IUserLoginDao;
import com.cya.dto.Specialty;
import com.cya.dto.StuUser;
import com.cya.dto.UserLogin;

/**
 * @author 公众号【IT学长】 
 */
public class UserLoginAction extends Action {

	private IUserLoginDao userLoginDao;
	private IStuUserDao stuUserDao;
	private ISpecialtyDao specialtyDao;

	public void setSpecialtyDao(ISpecialtyDao specialtyDao) {
		this.specialtyDao = specialtyDao;
	}

	public void setStuUserDao(IStuUserDao stuUserDao) {
		this.stuUserDao = stuUserDao;
	}

	public void setUserLoginDao(IUserLoginDao userLoginDao) {
		this.userLoginDao = userLoginDao;
	}

	/**
	 * Method execute
	 * 
	 * @param mapping
	 * @param form
	 * @param request
	 * @param response
	 * @return ActionForward
	 */
	public ActionForward execute(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) {
		DynaActionForm userLoginForm = (DynaActionForm) form;
		UserLogin userLogin = userLoginDao.findbyNameAndPwd(userLoginForm
				.getString("loginName"), userLoginForm.getString("pwd"));
		if (userLogin == null) {
			request.setAttribute("error", "用户登录失败,用户名或密码不正确!");
			return mapping.findForward("index");
		} else {
			request.getSession().setAttribute("loginName",
					userLogin.getLoginName());
			request.getSession().setAttribute("id", userLogin.getId());
			if (userLogin.getType().equals("1")) {
				System.out.println("管理员登录");
				return mapping.findForward("manager");
			} else {
				// 判断学生有没有填写过基本信息
				StuUser stuUser = stuUserDao.findById(userLogin.getId());
				if (stuUser == null) {
					List<Specialty> list = specialtyDao.findStuByAll();
					request.setAttribute("list", list);
					return mapping.findForward("addStuInfo");
				} else {
					Specialty specialty = specialtyDao.findById(stuUser
							.getSpecialtyId());
					request.setAttribute("specialty", specialty);
					request.setAttribute("stuUser", stuUser);
					return mapping.findForward("welcome");
				}
			}
		}
	}
}

10 运行教程

  1. 下载安装Java(JDK1.8)、MySQL(MySQL5.7)、Tomcat(Tomcat9.0)
  2. 下载本系统源代包
  3. 将源码包中db_course_selection.sql导入MySQL
  4. 将下载好的源码导入Eclipse/IDEA开发工具中
  5. 修改courseSelection/WebContent/applicationContext.xml

6. 配置Tomcat 7. 启动服务,浏览器输入http://localhost:8080/courseSelection

本期内容就到这里,感谢你的阅读,免费下载本系统完整源码请微信搜索下方名片,回复“20221022”。关键词一定要输完整、输对哦!!

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-10-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 01 完整源码下载
  • 02 系统概述
  • 03 开发工具及技术选型
  • 04 运行环境
  • 05 用户分析
  • 06 功能分析
  • 07 数据库设计
  • 08 项目工程结构及说明
  • 09 部分功能展示及源码
    • 9.1 管理员端–首页
      • 9.2 管理员端–专业管理
        • 9.3 管理员–课程管理
          • 9.4 管理员端–统计信息
            • 9.5 普通用户端–基本信息
              • 9.6 普通用户端–已选课程
                • 9.7 用户登录
                • 10 运行教程
                相关产品与服务
                云数据库 SQL Server
                腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档