热门标签 | 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;下期见~~






推荐阅读
  • 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的问题,并提供了解决方法。 ... [详细]
  • Java实战之电影在线观看系统的实现
    本文介绍了Java实战之电影在线观看系统的实现过程。首先对项目进行了简述,然后展示了系统的效果图。接着介绍了系统的核心代码,包括后台用户管理控制器、电影管理控制器和前台电影控制器。最后对项目的环境配置和使用的技术进行了说明,包括JSP、Spring、SpringMVC、MyBatis、html、css、JavaScript、JQuery、Ajax、layui和maven等。 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • Java验证码——kaptcha的使用配置及样式
    本文介绍了如何使用kaptcha库来实现Java验证码的配置和样式设置,包括pom.xml的依赖配置和web.xml中servlet的配置。 ... [详细]
  • 猜字母游戏
    猜字母游戏猜字母游戏——设计数据结构猜字母游戏——设计程序结构猜字母游戏——实现字母生成方法猜字母游戏——实现字母检测方法猜字母游戏——实现主方法1猜字母游戏——设计数据结构1.1 ... [详细]
  • 在springmvc框架中,前台ajax调用方法,对图片批量下载,如何弹出提示保存位置选框?Controller方法 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • 本文由编程笔记小编整理,主要介绍了使用Junit和黄瓜进行自动化测试中步骤缺失的问题。文章首先介绍了使用cucumber和Junit创建Runner类的代码,然后详细说明了黄瓜功能中的步骤和Steps类的实现。本文对于需要使用Junit和黄瓜进行自动化测试的开发者具有一定的参考价值。摘要长度:187字。 ... [详细]
  • 本文介绍了Oracle存储过程的基本语法和写法示例,同时还介绍了已命名的系统异常的产生原因。 ... [详细]
  • 如何在HTML中获取鼠标的当前位置
    本文介绍了在HTML中获取鼠标当前位置的三种方法,分别是相对于屏幕的位置、相对于窗口的位置以及考虑了页面滚动因素的位置。通过这些方法可以准确获取鼠标的坐标信息。 ... [详细]
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社区 版权所有