基于struts2的学生选课系统

本文详细描述了一个基于Struts2的Web应用程序,涉及用户登录、管理、选课功能,以及数据库设计、错误处理等内容。通过实际开发过程中的问题解决,展示了MVC架构和数据库操作的关键技术应用。
摘要由CSDN通过智能技术生成

基于struts2的学生选课系统

1.项目的需求说明

学生选课系统就是开发一个Web应用程序,实现学生选课的相关操作,并且是基于B/S模式的应用程序。该系统需要完成的主要功能如下:

1.1用户登录模块

  1. 用户分为两类:系统管理员(教务处管理人员),一般用户(学生)。
  2. 用户登录:在登录时进行登录验证,如果用户名和密码正确,则进入系统页面。
  3. 用户注册:新用户必须先注册,才能成功登录系统。

1.2用户管理模块

管理员可以实现对注册用户的管理(删除),规定并设置选课时间段,在该段时间内,学生必须完成选课,并可以实现对选课情况的查询、修改和删除等有关的操作。例如,当选课结束后,对于选课人数小于40人的课程进行删除(注意,关联的学生,学生所选课自动删除)

1.3选课管理模块

  1. 学生在规定时间内进行添加选课、修改选课、删除选课,查看自己选课情况。
  2. 管理员可以插入课程内容,查看选课情况并导出,删除课程内容,提前形成选课数据表(按照专业、班级)。
  3. 根据学生的培养方案,系统自动形成一个默认的选课情况。学生登录后,在默认选课情况的基础上完成自己的选课。
  4. 对于管理员,当选课结束后,可以形成以课程为教学单元的一个教学班,并可以查询班级学生,也可以形成班级学生名单。

2.系统分析与设计

该系统的开发工具为ecplise2023.12版本,采用MYSQL数据库,使用struts2开发框架,对数据库的操作与接口采用JDBC+DAO,服务器为Tomcat8.5版本。

系统采用Java EE Web中的MVC技术框架进行实现,视图层采用JSP技术和struts2标签,控制层采用struts2的Action类,业务逻辑层包括JavaBean、DAO以及数据库连接池,其中JavaBean类为用户实体类(学生和管理员)和课程实体类,DAO用来与数据库交互的接口或者实现类。

概要设计如下图所示(根据软件工程中的系统结构图):

软件框架如下图所示:

系统模块结构图如下(用例图实现):

3.子系统设计

3.1用户登录/注册子系统

功能

视图层组件

控制层组件

模型层组件

学生管理员注册

register.jsp

StuAction.java

TeaAction.java

struts_user.xml

StuDao.java

TeaDao.java

学生管理员登录

index.html

index.css

3.2选课子系统

功能

视图层组件

控制层组件

模型层组件

学生选课界面

system.jsp

StuAction.java

TeaAction.java

CourseAction.java

IBaseDao.java

DBConnection.java

UploadAction.java

DownloadAction.java

struct.xml

struct_user.xml

struct_add.xml

struct_del.xml

Stu.java

Tea.java

Course.java

StuDao.java

TeaDao.java

CourseDao.java

学生个人信息

information.jsp

学生课程搜索

search.jsp

管理员课程界面

system.jsp

管理员学生界面

view_stu.jsp

管理员添加学生

add_stu.jsp

success_add.jsp

管理员添加课程

add_course.jsp

success_add.jsp

管理员删除学生

del_stu.jsp

success_del.jsp

管理员删除课程

del_course.jsp

success_del.jsp

管理员学生搜索

search_stu.jsp

管理员课程搜索

search_course.jsp

文件上传

upload.jsp

文件下载

-

4.数据库与数据表的设计与实现

该系统设计的数据表为学生表(stu)、管理员表(tea)和课程表(course)。在MYSQL数据库中,首先创建数据库sel_course,然后再该库下建立学生表(stu)、管理员表(tea)和课程表(course)。

4.1学生表(stu)

表1 学生表(stu)结构

字段名

数据类型

长度

允许为空

说明

id

int

11

记录编号,主键

stu_id

varchar

255

学生学号

stu_name

varchar

255

学生姓名

stu_password

varchar

255

学生密码

stu_major

varchar

255

学生专业

stu_tel

varchar

255

学生电话

4.2管理员表(tea)

表2 管理员表(tea)结构

字段名

数据类型

长度

允许为空

说明

id

Int

11

记录编号,主键

tea_id

varchar

255

管理员工号

tea_password

varchar

255

管理员密码

tea_tel

varchar

255

管理员联系电话

4.3课程表(course)

表3 课程表(course)结构

字段名

数据类型

长度

允许为空

说明

id

int

11

编号

cid

varchar

20

课程编号,主键

cname

varchar

255

课程名

ctea

varchar

255

课程任课教师

ctime

varchar

255

课程时间

cweek

varchar

255

课程周次

cplace

varchar

255

课程教室

cmark

varchar

255

课程学分

cnumber

int

11

选课人数

5.整个应用的组织结构

6.学生选课管理系统的实现

6.1注册页面

6.2学生登录页面

6.3教务管理员登录页面

6.4学生选课页面-在线选课

6.5学生选课页面-我的信息

6.6管理员操作页面-学生列表

6.7管理员操作页面-添加学生

6.8管理员操作页面-删除学生

6.9管理员操作页面-课程列表

6.10管理员操作页面-添加课程

6.11管理员操作页面-删除课程

6.12管理员操作页面-数据导出

7.调试与分析

1.直接运行整个系统时,会直接出现404问题,最后发现是在web.xml中出现了问题。具体代码如下:

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">

<display-name>test2</display-name>

<filter>

<filter-name>struts2</filter-name>

<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>

</filter>

<filter-mapping>

<filter-name>struts2</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>

<welcome-file-list>

<welcome-file>index.html</welcome-file>

</welcome-file-list>

</web-app>

2.在查询学生信息是出现错误,报空指针异常错误,通过逐步添加打印信息在控制台找到错误代码,在dao包下实现类出现了问题,用list数组查找以后没有把学生类添加到list数组中。具体代码如下:

PreparedStatement pstmt = null;

ResultSet rs = null;

Stu stu2 = new Stu();

String sql = "select * from stu where stu_id=? and stu_password=? ";

pstmt = con.prepareStatement(sql);

pstmt.setString(1, stu.getStu_id());

pstmt.setString(2, stu.getStu_password());

rs=pstmt.executeQuery();

con = (Connection) DBConnection.getConnection();

if (rs.next()) {

stu2.setStu_name(rs.getString("stu_name"));

stu2.setStu_id(rs.getString("stu_id"));}

8.结论与心得体会

这次课程设计是一个学生选课管理系统,包括权限管理、学生信息管理、教师信息管理和课程信息管理等功能模块。然而,在实践过程中,我遇到了一些问题。

最初,我遇到了空指针问题。这些问题主要是由于粗心大意造成的,比如变量名拼写错误、忘记将参数添加到数组中,以及在进行 JSP 页面跳转时出现的问题。通过逐步输出信息进行排查,我最终解决了这些问题。

另外,在实现模糊查询的过程中,我发现查询结果与预期不符。我首先在控制台打印出 SQL 语句,然后将 SQL 语句写入数据库中进行检查,接着检查 Java 语句结构。最终发现问题出在 SQL 语句中的换行部分,由于缺少空格导致查询出错。经过改正后,查询结果变得正确。

通过这次实验,我深入了解了整个程序的开发流程和结构,学会了使用 Struts2 框架来建立 JSP 和 Action 之间的联系。更重要的是,我学会了如何解决程序中出现的问题,了解了问题出现的原因以及如何避免类似问题,积累了宝贵的经验和教训。

然而,这次实验的程序还存在一些不完善之处。例如,学生、管理员和课程的页面没有分页功能,当数据较多时,浏览会变得困难。另外,学生无法申请使用教室,也无法对教师进行评教,因此程序还需要进一步完善。

在这次实验中,我也发现了自己许多不足之处,意识到自己的基础知识掌握并不牢固。因此,我将在以后的学习和工作中注重打好基础知识,只有在牢固的基础上才能不断提高自己,而不应过分追求高难度的内容。

10、项目搭建部分实现细节

Xml配置文件内容如下:

struct.xml:

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE struts PUBLIC

"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"

"http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>

<include file ="struts_user.xml"/>

<include file ="struts_add.xml"/>

<include file ="struts_del.xml"/>

</struts>

struct_user.xml:

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE struts PUBLIC

"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"

"http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>

<package name="stuAction" extends = "struts-default">

<action name = "s_login" class = "com.action.user.StuAction" >

<result name = "success">/stu/system.jsp</result>

<result name = "failure">index.html</result>

</action>

<action name = "t_login" class = "com.action.user.TeaAction" >

<result name = "success">/tea/system.jsp</result>

<result name = "failure">index.html</result>

</action>

<action name = "s_register" class = "com.action.user.StuAction" >

<result name = "success">index.html</result>

<result name = "failure">register.jsp</result>

</action>

<action name = "t_register" class = "com.action.user.TeaAction" >

<result name = "success">index.html</result>

<result name = "failure">register.jsp</result>

</action>

</package>

</struts>

struct_add.xml:

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE struts PUBLIC

"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"

"http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>

<package name="*" extends = "struts-default">

<action name = "add_stu" class = "com.action.user.StuAction" method="Add_stu">

<result name = "success">/tea/success_add.jsp</result>

<result name = "failure">/tea/add_stu.jsp</result>

</action>

<action name = "add_course" class = "com.action.course.CourseAction" method="Add_course">

<result name = "success">/tea/success_add.jsp</result>

<result name = "failure">/tea/add_course.jsp</result>

</action>

</package>

</struts>

struct_del.xml:

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE struts PUBLIC

"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"

"http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>

<package name="*" extends = "struts-default">

<action name = "del_stu" class = "com.action.user.StuAction" method="Del_stu">

<result name = "success">/tea/succes_del.jsp</result>

<result name = "failure">/tea/add_stu.jsp</result>

</action>

<action name = "del_course" class = "com.action.course.CourseAction" method="Add_course">

<result name = "success">/tea/system.jsp</result>

<result name = "failure">/tea/add_course.jsp</result>

</action>

</package>

</struts>

以上内容为本学期所学内容结合学长(@向前的诚)的内容。

  • 22
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. 项目概述 ………………………………………………………………………3 1.1开发背景 ………………………………………………………………………3 1.2 开发目的 ……………………………………………………………………3 1.3 开发运行境 ……………………………………………………………………3 1.4 系统功能 ………………………………………………………………………3 2.需求分析 …………………………………………………………………………3 2.1 系统需求 ………………………………………………………………………3 2.2 功能需求 ………………………………………………………………………3 2.3 业务流图 ………………………………………………………………………3 3.总体设计 …………………………………………………………………………4 3.1 基本设计概念和处理流程 ……………………………………………………4 3.2 系统层次模图 …………………………………………………………………4 3.3系统层次模块图 ………………………………………………………………4 3.4模块设计 ………………………………………………………………………5 4.数据库计 …………………………………………………………………………5 4.1 数据库的逻辑设计 ……………………………………………………………5 4.2数据库的配置……………………………………………………………………6 5. 详细设计 ………………………………………………………………………8 5.1 学生登录模块的设计与实现 …………………………………………………8 5.2 学生注册模块的设计与实现 …………………………………………………9 5.3 学生查询模块的设计与实现…………………………………………………9 5.4 学生选课模块的设计与实现…………………………………………………10 6 测试及提交 ……………………………………………………………………10 7 项目小组成员及详细分工 ……………………………………………………10 8 附:模块源代码 ………………………………………………………………11
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值