热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发笔记:基于javaeclipse+jsp+mysql+servlet+Spring的学生信息管理系统基础版建议收藏

篇首语:本文由编程笔记#小编为大家整理,主要介绍了基于javaeclipse+jsp+mysql+servlet+Spring的学生信息管理系统基础版建议收藏相关的知识,希望对你有一定的参考价

篇首语:本文由编程笔记#小编为大家整理,主要介绍了基于java eclipse+jsp+mysql+servlet+Spring的学生信息管理系统基础版建议收藏相关的知识,希望对你有一定的参考价值。






目录

项目背景

功能设计

角色设计

主要技术

具体功能实现

登录:

首页:

学生管理:

老师管理:

成绩管理:

个人中心:

部分代码实现:

登录前端:

登录后台servlet:

链接数据库:

部分表结构:

学生表:

成绩表:

班级表:

相关Java基础课设精彩推送

查看更多博主首页更多实战项目 >>>


项目背景

学生信息档案的管理对于学校的管理者来说至关重要,学生信息是高等学校非常重要的一项数据资源,是一个教育单位不可缺少一部分。特别是近几年来,国家政策的调整,我国高等院校大规模的扩招,给高等院校的教学管理、学生管理、后勤管理等方面都带来不少的冲击。其包含的数据量大,涉及的人员面广,而且需要及时更新,故较为复杂,难以单纯地依靠人工管理,而且传统的人工管理方式既不易于规范化,管理效率也不高,我国各类高等院校中还有相当一部分学生档案管理还停留在纸介质的基础上,尤其是中、小学对学生档案的管理更是落后,这样的管理机制已经不能适应时代发展的要求,其管理方法将浪费许多人力和物力。随着科学技术的不断提高,计算机科学与技术日渐成熟,计算机应用的普及已进入人类社会生活的各个领域,并发挥着越来越重要的作用。这种传统的手工管理模式必然被以计算机为物质基础的信息管理方法所取代。


功能设计

主要功能:用户不同角色登录(老师、学生、管理员)

系统首页介绍

学生管理:添加学生、查看学生列表信息、查看学生资料

老师管理:添加老师、查看老师列表信息、查看老师资料

成绩管理:查看成绩信息、修改成绩

个人中心:修改个人资料、头像等、注销退出


角色设计

拥有管理员、老师、学生三种角色、每个角色对应不同菜单权限


主要技术

用的技术都是比较基础好学通俗易懂的Java jsp+mysql+servlet+jdbc+jquery+html+css等


具体功能实现


登录:

根据不同账号角色进行登录


首页:

首页主要是利用css等进行简单的布局、左侧是菜单栏、中间是系统介绍、右上角是个人中心和账户信息以及注销。


学生管理:

添加学生

学生列表:

管理员拥有编辑删除权限、老师拥有编辑权限。学生只能查看信息。


老师管理:

添加老师信息

查看老师列表信息:


成绩管理:

学生成绩信息查看


个人中心:

个人中心随意做了一个alert弹窗


部分代码实现:


登录前端:

<%&#64; page language&#61;"java" import&#61;"java.util.*" pageEncoding&#61;"UTF-8"%>












登录






id&#61;"ope_name">



id&#61;"ope_pwd">

style&#61;"width:60px; float:right; margin-top:10px;margin-right:20px;"
type&#61;"button" value&#61;"登录" onclick&#61;"login()">





登录后台servlet&#xff1a;

package impl;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import util.DB;
import dao.ILogin;
import entity.Operator;
import entity.Privilege;
public class LoginImpl implements ILogin {
private PrivilegeImpl1 privilegeImpl &#61; new PrivilegeImpl1();
private RoleImpl roleImpl &#61; new RoleImpl();
private List list_privilege;
private PreparedStatement pst;
private Operator log_operator;
private HttpSession session;
private String checkResult;
private Connection conn;
private ResultSet rs;
// 登录验证
public String login(HttpServletRequest request, Operator operator) {
session &#61; request.getSession();
checkResult &#61; "success";
log_operator &#61; new Operator();
try {
conn &#61; DB.getConn();
pst &#61; conn
.prepareStatement("SELECT * FROM operator WHERE ope_name &#61; ?");
pst.setString(1, operator.getName());
rs &#61; pst.executeQuery();
if (!rs.next()) {
checkResult &#61; "账户不存在&#xff0c;请重新输入&#xff01;";
session.setAttribute("isLogin", "false");
} else {
if (!operator.getPwd().equals(rs.getString(3))) {
checkResult &#61; "您输入的密码不正确&#xff0c;请重新输入&#xff01;";
session.setAttribute("isLogin", "false");
} else {
// 登录成功
session.setAttribute("isLogin", "true");
// 获得该用户的完整信息
log_operator.setId(rs.getInt(1));
log_operator.setName(rs.getString(2));
log_operator.setPwd(rs.getString(3));
log_operator.setRole(roleImpl.query("rol_id",
rs.getString(4)).get(0));
session.setAttribute("log_operator", log_operator);
// 根据用户&#xff0c;获取对应的角色对应的权限
list_privilege &#61; privilegeImpl.query("rol_id", log_operator
.getRole().getId()
&#43; "");
List list &#61; new ArrayList();
list.add(list_privilege.get(0));

for (int i &#61; 1; i int y&#61;0;
for(int x&#61;0;x
if(!list.get(x).getMenu_name().equals(
list_privilege.get(i).getMenu_name())){
y&#43;&#43;;
}
}
if (y&#61;&#61;list.size()) {
list.add(list_privilege.get(i));
}
}
session.setAttribute("list", list);
session.setAttribute("list_privilege", list_privilege);
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
DB.close(conn, pst, rs);
}
return checkResult;
}
}

链接数据库&#xff1a;

利用最基本的jdbc进行链接

package util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class DB {
// 获取数据库连接
public static Connection getConn() {
Connection conn &#61; null;
String url &#61; "jdbc:mysql://localhost:3306/jsp_studentmanager?characterEncoding&#61;utf8";
String name &#61; "root";
String pwd &#61; "123456";
try {
Class.forName("com.mysql.jdbc.Driver");
conn &#61; DriverManager.getConnection(url, name, pwd);
} catch (Exception e) {
e.printStackTrace();
}
return conn;
}
// 关闭对象 释放资源
public static void close(Connection conn, PreparedStatement pst,
ResultSet rs) {
try {
if (rs !&#61; null)
rs.close();
if (pst !&#61; null)
pst.close();
if (conn !&#61; null)
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}

部分表结构&#xff1a;


学生表&#xff1a;

CREATE TABLE &#96;NewTable&#96; (
&#96;stu_id&#96; int(11) NOT NULL AUTO_INCREMENT ,
&#96;ope_id&#96; int(11) NULL DEFAULT NULL ,
&#96;stu_no&#96; varchar(22) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
&#96;stu_name&#96; varchar(22) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
&#96;stu_sex&#96; enum(&#39;男&#39;,&#39;女&#39;) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT &#39;男&#39; ,
&#96;stu_birth&#96; date NULL DEFAULT NULL ,
&#96;stu_pic&#96; varchar(22) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
&#96;cla_id&#96; int(11) NULL DEFAULT NULL ,
PRIMARY KEY (&#96;stu_id&#96;),
FOREIGN KEY (&#96;cla_id&#96;) REFERENCES &#96;classes&#96; (&#96;cla_id&#96;) ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY (&#96;ope_id&#96;) REFERENCES &#96;operator&#96; (&#96;ope_id&#96;) ON DELETE CASCADE ON UPDATE CASCADE,
UNIQUE INDEX &#96;uni_no&#96; (&#96;stu_no&#96;) USING BTREE ,
UNIQUE INDEX &#96;uni_ope&#96; (&#96;ope_id&#96;) USING BTREE ,
INDEX &#96;fk_stu_cla&#96; (&#96;cla_id&#96;) USING BTREE ,
INDEX &#96;fk_stu_ope&#96; (&#96;ope_id&#96;) USING BTREE
)
ENGINE&#61;InnoDB
DEFAULT CHARACTER SET&#61;utf8 COLLATE&#61;utf8_general_ci
AUTO_INCREMENT&#61;13
ROW_FORMAT&#61;COMPACT
;
CREATE DEFINER&#61;&#96;root&#96;&#64;&#96;localhost&#96; TRIGGER &#96;TG_3&#96; AFTER DELETE ON &#96;NewTable&#96;
FOR EACH ROW BEGIN
DELETE FROM operator WHERE ope_id &#61; old.ope_id;
END;

成绩表&#xff1a;

CREATE TABLE &#96;NewTable&#96; (
&#96;sco_id&#96; int(11) NOT NULL AUTO_INCREMENT ,
&#96;sco_daily&#96; float NULL DEFAULT 0 ,
&#96;sco_exam&#96; float NULL DEFAULT 0 ,
&#96;sco_count&#96; float NULL DEFAULT 0 ,
&#96;stu_id&#96; int(11) NULL DEFAULT NULL ,
&#96;sub_id&#96; int(11) NULL DEFAULT NULL ,
&#96;cla2sub_id&#96; int(11) NOT NULL ,
&#96;cla_id&#96; int(11) NOT NULL ,
PRIMARY KEY (&#96;sco_id&#96;),
FOREIGN KEY (&#96;stu_id&#96;) REFERENCES &#96;student&#96; (&#96;stu_id&#96;) ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY (&#96;sub_id&#96;) REFERENCES &#96;subject&#96; (&#96;sub_id&#96;) ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY (&#96;cla2sub_id&#96;) REFERENCES &#96;cla2sub&#96; (&#96;cla2sub_id&#96;) ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY (&#96;cla_id&#96;) REFERENCES &#96;classes&#96; (&#96;cla_id&#96;) ON DELETE CASCADE ON UPDATE CASCADE,
UNIQUE INDEX &#96;uni_stu_sub&#96; (&#96;stu_id&#96;, &#96;sub_id&#96;, &#96;cla2sub_id&#96;) USING BTREE ,
INDEX &#96;fk_sco_sub&#96; (&#96;sub_id&#96;) USING BTREE ,
INDEX &#96;fk_sco_stu&#96; (&#96;stu_id&#96;) USING BTREE ,
INDEX &#96;fk_sco_cla&#96; (&#96;cla2sub_id&#96;) USING BTREE ,
INDEX &#96;cla_id&#96; (&#96;cla_id&#96;) USING BTREE
)
ENGINE&#61;InnoDB
DEFAULT CHARACTER SET&#61;utf8 COLLATE&#61;utf8_general_ci
AUTO_INCREMENT&#61;33
ROW_FORMAT&#61;COMPACT
;

班级表&#xff1a;

CREATE TABLE &#96;NewTable&#96; (
&#96;cla_id&#96; int(11) NOT NULL AUTO_INCREMENT ,
&#96;cla_name&#96; varchar(22) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
&#96;maj_id&#96; int(11) NULL DEFAULT NULL ,
&#96;cla_tec&#96; varchar(22) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
PRIMARY KEY (&#96;cla_id&#96;),
FOREIGN KEY (&#96;maj_id&#96;) REFERENCES &#96;major&#96; (&#96;maj_id&#96;) ON DELETE CASCADE ON UPDATE CASCADE,
UNIQUE INDEX &#96;uni_name&#96; (&#96;cla_name&#96;) USING BTREE ,
INDEX &#96;fk_cla_maj&#96; (&#96;maj_id&#96;) USING BTREE
)
ENGINE&#61;InnoDB
DEFAULT CHARACTER SET&#61;utf8 COLLATE&#61;utf8_general_ci
AUTO_INCREMENT&#61;8
ROW_FORMAT&#61;COMPACT
;
CREATE DEFINER&#61;&#96;root&#96;&#64;&#96;localhost&#96; TRIGGER &#96;TG_7&#96; BEFORE DELETE ON &#96;NewTable&#96;
FOR EACH ROW BEGIN
DELETE FROM operator WHERE ope_id IN (SELECT ope_id FROM student WHERE cla_id &#61; old.cla_id);
END;

相关Java基础课设精彩推送

基于jsp&#43;mysql的JSP在线水果销售商城系统设计实现

基于java jsp&#43;mysql&#43;Spring&#43;mybatis的SSM二手交易网站设计和实现

基于Java jsp&#43;servlet超市订单管理平台设计和实现


查看更多博主首页更多实战项目 >>>



好了&#xff0c;今天就到这儿吧&#xff0c;小伙伴们点赞、收藏、评论&#xff0c;一键三连走起呀&#xff0c;下期见~~






推荐阅读
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • 使用eclipse创建一个Java项目的步骤
    本文介绍了使用eclipse创建一个Java项目的步骤,包括启动eclipse、选择New Project命令、在对话框中输入项目名称等。同时还介绍了Java Settings对话框中的一些选项,以及如何修改Java程序的输出目录。 ... [详细]
  • 单页面应用 VS 多页面应用的区别和适用场景
    本文主要介绍了单页面应用(SPA)和多页面应用(MPA)的区别和适用场景。单页面应用只有一个主页面,所有内容都包含在主页面中,页面切换快但需要做相关的调优;多页面应用有多个独立的页面,每个页面都要加载相关资源,页面切换慢但适用于对SEO要求较高的应用。文章还提到了两者在资源加载、过渡动画、路由模式和数据传递方面的差异。 ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • Java实战之电影在线观看系统的实现
    本文介绍了Java实战之电影在线观看系统的实现过程。首先对项目进行了简述,然后展示了系统的效果图。接着介绍了系统的核心代码,包括后台用户管理控制器、电影管理控制器和前台电影控制器。最后对项目的环境配置和使用的技术进行了说明,包括JSP、Spring、SpringMVC、MyBatis、html、css、JavaScript、JQuery、Ajax、layui和maven等。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • javascript  – 概述在Firefox上无法正常工作
    我试图提出一些自定义大纲,以达到一些Web可访问性建议.但我不能用Firefox制作.这就是它在Chrome上的外观:而那个图标实际上是一个锚点.在Firefox上,它只概述了整个 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • 如何在HTML中获取鼠标的当前位置
    本文介绍了在HTML中获取鼠标当前位置的三种方法,分别是相对于屏幕的位置、相对于窗口的位置以及考虑了页面滚动因素的位置。通过这些方法可以准确获取鼠标的坐标信息。 ... [详细]
  • JavaScript和HTML之间的交互是经由过程事宜完成的。事宜:文档或浏览器窗口中发作的一些特定的交互霎时。能够运用侦听器(或处置惩罚递次来预订事宜),以便事宜发作时实行相应的 ... [详细]
  • 安卓select模态框样式改变_微软Office风格的多端(Web、安卓、iOS)组件库——Fabric UI...
    介绍FabricUI是微软开源的一套Office风格的多端组件库,共有三套针对性的组件,分别适用于web、android以及iOS,Fab ... [详细]
author-avatar
M7y4C8r2a6z4y
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有