IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> 基于java eclipse+jsp+mysql+servlet+Spring的学生信息管理系统基础版【建议收藏】 -> 正文阅读

[Java知识库]基于java eclipse+jsp+mysql+servlet+Spring的学生信息管理系统基础版【建议收藏】

目录?

项目背景

功能设计

角色设计

主要技术

具体功能实现

登录:

首页:

学生管理:

老师管理:

成绩管理:

个人中心:

部分代码实现:

登录前端:

登录后台servlet:

链接数据库:

部分表结构:

学生表:

成绩表:

班级表:

相关Java基础课设精彩推送

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

项目背景

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

功能设计

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

系统首页介绍

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

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

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

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

角色设计

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

主要技术

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

具体功能实现

登录:

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

首页:

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

学生管理:

添加学生

学生列表:

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

老师管理:

添加老师信息

查看老师列表信息:

成绩管理:

学生成绩信息查看

个人中心:

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

部分代码实现:

登录前端:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>学生信息管理系统</title>
<script src="js/jquery-1.8.3.min.js" type="text/javascript"></script>
<script src="js/login.js" type="text/javascript"></script>
<link href="css/style.css" rel="stylesheet" type="text/css">
</head>
<body>
	<center>
		<div class="login">
			<div class="login_head">
				<h3>登录</h3>
			</div>
			<div class="login_window">
				<div>
					<label>账号:</label> <br> <input type="text" name="ope_name"
						id="ope_name">
				</div>
				<div>
					<label>密码:</label> <br> <input type="password" name="ope_pwd"
						id="ope_pwd">
				</div>
				<input
					style="width:60px; float:right; margin-top:10px;margin-right:20px;"
					type="button" value="登录" onclick="login()">
			</div>
		</div>
	</center>
</body>
</html>

登录后台servlet:

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 = new PrivilegeImpl1();
	private RoleImpl roleImpl = new RoleImpl();
	private List<Privilege> 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 = request.getSession();
		checkResult = "success";
		log_operator = new Operator();
		try {
			conn = DB.getConn();
			pst = conn
					.prepareStatement("SELECT * FROM operator WHERE ope_name = ?");
			pst.setString(1, operator.getName());
			rs = pst.executeQuery();
			if (!rs.next()) {
				checkResult = "账户不存在,请重新输入!";
				session.setAttribute("isLogin", "false");
			} else {
				if (!operator.getPwd().equals(rs.getString(3))) {
					checkResult = "您输入的密码不正确,请重新输入!";
					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);

					// 根据用户,获取对应的角色对应的权限
					list_privilege = privilegeImpl.query("rol_id", log_operator
							.getRole().getId()
							+ "");
					List<Privilege> list = new ArrayList<Privilege>();
					list.add(list_privilege.get(0));
					
					for (int i = 1; i < list_privilege.size(); i++) {
                          int y=0;
						for(int x=0;x<list.size();x++){
							
							if(!list.get(x).getMenu_name().equals(
									list_privilege.get(i).getMenu_name())){
								y++;
							}
						}
						if (y==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;
	}
}

链接数据库:

利用最基本的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 = null;
		String url = "jdbc:mysql://localhost:3306/jsp_studentmanager?characterEncoding=utf8";
		String name = "root";
		String pwd = "123456";
		try {
			Class.forName("com.mysql.jdbc.Driver");
			conn = 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 != null)
				rs.close();
			if (pst != null)
				pst.close();
			if (conn != null)
				conn.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

部分表结构:

学生表:

CREATE TABLE `NewTable` (
`stu_id`  int(11) NOT NULL AUTO_INCREMENT ,
`ope_id`  int(11) NULL DEFAULT NULL ,
`stu_no`  varchar(22) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`stu_name`  varchar(22) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`stu_sex`  enum('男','女') CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '男' ,
`stu_birth`  date NULL DEFAULT NULL ,
`stu_pic`  varchar(22) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`cla_id`  int(11) NULL DEFAULT NULL ,
PRIMARY KEY (`stu_id`),
FOREIGN KEY (`cla_id`) REFERENCES `classes` (`cla_id`) ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY (`ope_id`) REFERENCES `operator` (`ope_id`) ON DELETE CASCADE ON UPDATE CASCADE,
UNIQUE INDEX `uni_no` (`stu_no`) USING BTREE ,
UNIQUE INDEX `uni_ope` (`ope_id`) USING BTREE ,
INDEX `fk_stu_cla` (`cla_id`) USING BTREE ,
INDEX `fk_stu_ope` (`ope_id`) USING BTREE 
)
ENGINE=InnoDB
DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci
AUTO_INCREMENT=13
ROW_FORMAT=COMPACT
;

CREATE DEFINER=`root`@`localhost` TRIGGER `TG_3` AFTER DELETE ON `NewTable`
FOR EACH ROW BEGIN
DELETE FROM operator WHERE ope_id = old.ope_id;
END;

成绩表:

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

班级表:

CREATE TABLE `NewTable` (
`cla_id`  int(11) NOT NULL AUTO_INCREMENT ,
`cla_name`  varchar(22) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`maj_id`  int(11) NULL DEFAULT NULL ,
`cla_tec`  varchar(22) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
PRIMARY KEY (`cla_id`),
FOREIGN KEY (`maj_id`) REFERENCES `major` (`maj_id`) ON DELETE CASCADE ON UPDATE CASCADE,
UNIQUE INDEX `uni_name` (`cla_name`) USING BTREE ,
INDEX `fk_cla_maj` (`maj_id`) USING BTREE 
)
ENGINE=InnoDB
DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci
AUTO_INCREMENT=8
ROW_FORMAT=COMPACT
;

CREATE DEFINER=`root`@`localhost` TRIGGER `TG_7` BEFORE DELETE ON `NewTable`
FOR EACH ROW BEGIN
DELETE FROM operator WHERE ope_id IN (SELECT ope_id FROM student WHERE cla_id = old.cla_id);
END;

相关Java基础课设精彩推送

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

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

基于Java jsp+servlet超市订单管理平台设计和实现

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

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


  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-07-09 17:29:59  更:2021-07-09 17:30:09 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/7 0:58:36-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码