学生教务系统【java实现版附源码】
🍅 作者:程序员小王 🍅 程序员小王的博客:https://www.wolai.com/wnaghengjie/ahNwvAUPG2Hb1Sy7Z8waaF 🍅 扫描主页左侧二维码,加我微信 一起学习、一起进步 🍅 欢迎点赞 👍 收藏 ⭐留言 📝 🍅 如有编辑错误联系作者,如果有比较好的文章欢迎分享给我,我会取其精华去其糟粕
一、需求背景
《学生教务系统》 系统设计以方便快捷和安全为出发点,放弃传统的人工记录对学生信息管理的缺陷和不足, 采用全新的方式使学校对学生信息进行存储和维护,增加管理效率。
本系统大体为教务学生管理系统 、并且赋予了管理员很多功能来操作这个系统,包括:学生管理,小组管理,班级管理等功能;通过这些功能模块的设计,满足了老师对学生的信息进行管控所需的功能。
系统采用 c/s 三层结构 ,对动态页面的制作采用了 JSP+Ajax 技术,为了实现管理系统的安全可靠以及对有些代码可以进行重复使用考虑, 对程序的重要代码进行封装时采用 Java Bean。本系统贯彻以人为本的思想,实用性高。
二、产品目标
学生信息的管理工作变得越来越庞大和繁冗,效率也低。为了充分利用互联网带给人们的便利,更好地提高教学管理管理工作的效率,使学生和教职员工能更方便地进行信息查询活动,特开发此教学管理系统。本软件通过权限识别登录到该系统,权限不同享有的功能就又说差异,来实现日常的学生信息的管理。
三、《学生教务系统》项目介绍:
1、开发环境
分类名称语种操作系统windows10简体中文数据库平台MySQL Server 8.0+应用服务器apache-tomcat-8.5.71java开发工具idea框架mybatis/Struts2项目名称《学生教务系统》实现技术struts2+mybatis+mysql+Servlet+jquery+ajax+js+Maven 等技术
2、《TJCU教务系统》的总体功能
序号模块名称主要功能1学生管理模块添加学生信息,删除学生信息,修改学生信息,查询学生信息,下载学生新,分页显示学生信息2小组管理模块添加小组信息,删除小组信息,展示小组具体信息3班级管理模块添加班级信息,删除班级信息,展示班级信息4标签管理模块添加标签,删除标签,展示标签5城市管理模块添加城市,删除城市6登录注册模块登陆与注册(权限识别 )
(3)用户角色描述
角色名称角色描述使用频率用户主要为每班班长、班主任(只能查看学生,没有其他功能操作权限)中管理员为系统管理员高
四、具体需求
1、功能划分
本系统总体功能上是C/S 结构的Windows应用程序!
2、项目整体功能框架
![](https://img-blog.csdnimg.cn/img_convert/3c423cc04ce6a0e0c0a009f2e880bf74.png)
3、概念数据模型CMD
CMD是实体与实体之间关系的模型(使用PowerShell 设计)
![在这里插入图片描述](https://img-blog.csdnimg.cn/c30024ea747e4acc9c0cb22a8645fccf.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA56iL5bqP5ZGY5bCP546LamF2YQ==,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
五、主要功能截图
**「用户登录」 **
用户登录是选择角色进行登录:管理员、用户
![](https://img-blog.csdnimg.cn/img_convert/06112a5bff72d7103d94f06600940286.png)
「用户注册」
1. 用户登录之前用户名必须是在注册时通过邮箱激活后的,否则不能登录, 返回提示信息:用户名输入错误~~
2. 如果用户名输入错误 返回提示信息:用户名输入错误~~
3. 如果验证码输错 返回提示信息: 验证码输入错误~~~
4. 如果用户名,验证码正确 返回提示信息: 密码输入错误~~
![](https://img-blog.csdnimg.cn/img_convert/402a92a886f439f45273123faa06f084.png)
「用户激活模块」
1.注册进行提交后,会跳转到请去邮箱激活用户页面
3.激活成功后会跳转到登录
![](https://img-blog.csdnimg.cn/img_convert/3f7b660d3e22a52217c65666b5724f0f.png)
![](https://img-blog.csdnimg.cn/img_convert/babcedc9be856db54bff163fa44ac210.png)
![](https://img-blog.csdnimg.cn/img_convert/87f87fe6740c6b0ef1baa6164a76e4d8.png)
「学生管理模块」
1. 添加学生信息(城市表,班级表,标签表,小组表有数据之后才能添加)
2. 功能是修改学生,删除学生
3. 展示内容(分页实现)
4. 以Json形式下载信息
5. 以QQ或者姓名或者手机号查询学生信息
![在这里插入图片描述](https://img-blog.csdnimg.cn/7847072c60364bf3a614b9b5b67de274.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA56iL5bqP5ZGY5bCP546LamF2YQ==,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
** 「小组管理模块」**
1. 添加小组功能:会添加组名称,然后选择班级(小组是班级的外键,需要先建班级表才能创建小组表)
(其中包含student外键:添加组名称时:本组学生的标签会自动增加到小组标签上,并且统计本组学生人数)
2. 删除小组功能: 删除小组之前需要将本小组的studnet删除或者修改带其他组,否则无法删除
(使用Ajax判断是否删除)
3.页面展示功能中的学生标签和学生人数,将从外键Student中获取,班级名称名班级表中获取
![](https://img-blog.csdnimg.cn/img_convert/978c7b63a1fd3d20e949aa5458bf5810.png)
「班级管理模块」
班级的增删查功能
![](https://img-blog.csdnimg.cn/img_convert/7ea1e49132f71da3b1047952cf4648d9.png)
「标签管理模块」
1. 添加标签: 添加标签注意添加标签名称,标签类型(标签类型包含:学生/班级两种类型)
2. 删除标签: 删除标签名字字段之前之前,我们得把对应的学生表,
班级表中选中相关标签的班级和班级信息进行修改或者删除
(使用Ajax判断是否删除)
![](https://img-blog.csdnimg.cn/img_convert/aa9b409f9183dc6bc926dedde32751a1.png)
「城市管理模块」
![](https://img-blog.csdnimg.cn/img_convert/ff1a4a9e4fa71a78e5108b18c65fcca5.png)
六、主要代码展示
「学生分页展示相关」
两张数据库表连接分页查询sql语句:
SELECT s.s_id,
s.s_name,
s.s_phone,
s.s_qq,
s.s_age,
s.s_birthday,
s.s_stars,
s.s_attribute,
clazz.clazz_id,
clazz.c_name,
g.g_id,
g.g_name,
c.c_id,
c.c_name,
m.m_id,
m.m_name
FROM (select *
from t_student limit #{page} , #{rows}
) as s
LEFT JOIN t_clazz clazz ON s.clazz_id = clazz.clazz_id
LEFT JOIN t_city c ON s.c_id = c.c_id
LEFT JOIN t_group g ON s.g_id = g.g_id
LEFT JOIN m_s_fk ms ON s.s_id = ms.s_id
LEFT JOIN t_mark m ON ms.m_id = m.m_id
「通过学生生日计算年龄,生肖,星座展示相关」
public class BirthdayUtil {
//根据生日计算生肖,年龄,星座
private final static int[] dayArr = new int[] { 20, 19, 21, 20, 21, 22, 23,
23, 23, 24, 23, 22 };
private final static ArrayList constellationList = new ArrayList();//存放星座的集合
static {
constellationList.add(0, "水瓶座");
constellationList.add(1, "双鱼座");
constellationList.add(2, "白羊座");
constellationList.add(3, "金牛座");
constellationList.add(4, "双子座");
constellationList.add(5, "巨蟹座");
constellationList.add(6, "狮子座");
constellationList.add(7, "处女座");
constellationList.add(8, "天秤座");
constellationList.add(9, "天蝎座");
constellationList.add(10, "射手座");
constellationList.add(11, "魔羯座");
}
//获得年龄
public static Integer getAge(Date birthday){
int year1 = birthday.getYear();
Date date = new Date();
int year2 = date.getYear();
return year2-year1;
}
//获得生肖
public static String getChineseZodiac(Date birthday) {
int year = birthday.getYear();
//0代表1900年
if (year |