javaWeb学生信息管理系统2

一、学生信息管理系统SIMS

一款基于纯Servlet技术开发的学生信息管理系统(SIMS),在设计中没有采用SpringMVC和Spring Boot等框架。系统完全依赖于Servlet来处理HTTP请求和管理学生信息,实现了信息的有效存储、检索和更新,为教育管理提供了一种轻量级的解决方案。

二、项目简介

为了更好地满足教学信息管理的需求以及对学生和老师信息的有效管理,学生信息管理系统应运而生。该系统通过在线平台提供信息管理服务,以实现对数据的高效处理。这不仅方便了对学生和教师各类信息的管理,还支持大数据分析,从而更好地了解和优化教育过程。

三、技术栈

Jsp+Servlet+Layui+Druid+JDBC-Template+JQuery+Js+Ajax+Json+EL/JSTL+BeanUtils

服务器: Tomcat_8.5.53

数据库: MySQL_5.6.46

开发工具:IDEA_2019.1.3

界面制作:Layui

三 、项目使用说明

  1. 导入结构和数据:sims.sql

  2. 解压下载zip重命名sims-master文件夹为sims,IDEA打开该sims项目

  3. 修改配置数据库连接文件:druid.properties

    管理员 帐号:admin 密码:admin

    学生 帐号:1812123206 密码:123

    老师 帐号:9912123206 密码:123

四、 功能描述

五、数据库设计


admin表:

存储管理员信息,包括管理员ID(a_id)和密码(a_password)。
示例数据:一条管理员记录,ID为’admin’,密码为’admin’。
college_department_class表:

存储学院、专业和班级信息。
示例数据:包括应用数学学院、软件工程学院等不同学院的专业和班级信息。
complaint表:

记录学生的投诉信息,包括投诉ID(id)、投诉日期(cdate)和投诉内容(content)。
示例数据:包括不同日期和内容的投诉记录。
course表:

存储课程信息,包括课程ID(c_id)、课程名称(c_name)、教师ID(t_id)和课程信息(c_info)。
示例数据:包括不同课程和教师的记录。
notify表:

记录系统通知信息,包括通知ID(id)、通知日期(notifyDate)和通知内容(notifyInfo)。
示例数据:包括不同日期和内容的通知记录。
photo表:

存储学生照片信息,包括照片ID(photo_id)和照片名称(photo_name)。
示例数据:包括不同学生的照片记录。
select_course表:

记录学生选课信息,包括学生ID(s_id)、课程ID(c_id)和分数(score)。
示例数据:包括不同学生选择的课程和分数记录。
student表:

存储学生信息,包括学生ID(s_id)、学院、专业、班级、姓名、性别、年龄、地址、电话、邮箱和密码。
示例数据:包括不同学生的个人信息。
teacher表:

存储教师信息,包括教师ID(t_id)、姓名、性别、学历、职称和密码。

六、代码结构

七、功能实现部分截图

八、代码

login.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"><title>登录页</title><link rel="stylesheet" href="./css/layui.css"><link rel="stylesheet" href="./css/modules/layer/default/layer.css"><link rel="stylesheet" href="./css/login.css"><link rel="stylesheet" href="./css/style.css"><link rel="shortcut icon" href="./images/favicon.ico" type="image/x-icon" /><script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script><style type="text/css"></style>
</head>
<body>
<div class="frame-main"><div class="login-main"><header class="layui-elip">学生信息管理系统</header><form class="layui-form" action="" name="formf" method="post"><div class="layui-input-inline"><label class="layadmin-user-login-icon layui-icon layui-icon-username"></label><input type="text" name="id" id="id" value="${loginid}" required lay-verify="required" placeholder="用户名(学号或工号)" autocomplete="off"class="layui-input"></div><div class="layui-input-inline"><label class="layadmin-user-login-icon layui-icon layui-icon-password"></label><input type="password" value="${loginpassword}" id="password" name="password" required lay-verify="required" placeholder="密码" autocomplete="off"class="layui-input"></div><div class="layui-input-inline" style="width: 56%; margin-bottom: 0px;"><label class="layadmin-user-login-icon layui-icon layui-icon-vercode"></label><input type="password" name="verifycode" id="code" required lay-verify="required" placeholder="验证码" autocomplete="off"class="layui-input"></div><a href="javascript:refreshCode()"><img style="padding-left: 14px;" src="${pageContext.request.contextPath}/checkCodeServlet" title="刷新验证码" id="vcode" draggable="false"></a><div style="padding-left: 54px;padding-bottom: 6px;"><input type="radio" name="roles" value="student" title="学生" checked><input type="radio" name="roles" value="teacher" title="老师"><input type="radio" name="roles" value="admin" title="管理员"></div><div class="layui-input-inline login-btn"><button type="button" onclick="a()" lay-submit lay-filter="login" class="layui-btn" id="login" name="submit-login">登录</button></div><hr/><!--<div class="layui-input-inline"><button type="button" class="layui-btn layui-btn-primary">QQ登录</button></div><div class="layui-input-inline"><button type="button" class="layui-btn layui-btn-normal">微信登录</button></div>--><p><a href="register.jsp" class="fl">立即注册</a><div class="tooltip"><span class="tooltiptext">${login_msg}</span></div><a href="forget.jsp" class="fr">忘记密码?</a></p></form></div>
</div>
<footer style="position:absolute;bottom:0;width:100%;height:30px; text-align: center;">© 2018-2019.YOYLING.COM</footer>
<script src="layui.js"></script>
<script src="./lay/modules/layer.js"></script><script type="text/javascript">function refreshCode() {var vcode = document.getElementById("vcode");vcode.src = "${pageContext.request.contextPath}/checkCodeServlet?time="+new Date().getTime();}
</script>
<script type="text/javascript">layui.use('form',function(){var form = layui.form;//刷新界面 所有元素form.render();});
</script><script type="text/javascript">// $("#login").on("click", function(){function a() {var num = document.getElementsByName("roles");var checked_value = "student";for (var i = 0; i < num.length; i++) {var radio = num[i];if (radio.checked) {checked_value = radio.value;}}var id = document.getElementById("id").value;var password = document.getElementById("password").value;var verifycode = document.getElementById("code").value;if (id=='' || password=='' || verifycode=='') {return;}else {if (checked_value=="student") {document.formf.action="${pageContext.request.contextPath}/loginServlet?roles=student";document.formf.submit();}else if (checked_value=="teacher") {document.formf.action="${pageContext.request.contextPath}/loginServlet?roles=teacher";document.formf.submit();}else {document.formf.action="${pageContext.request.contextPath}/loginServlet?roles=admin";document.formf.submit();}}}
</script>
</body>
</html>

register.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html lang="en">
<head><meta charset="UTF-8"><meta name="renderer" content="webkit"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"><title>注册页</title><link rel="stylesheet" href="./css/layui.css"><link rel="stylesheet" href="./css/style.css"><link rel="stylesheet" href="./css/login.css"><link rel="shortcut icon" href="./images/favicon.ico" type="image/x-icon" />
</head>
<body>
<div class="frame-main"><div class="login-main"><header class="layui-elip">学生信息管理系统</header><!-- 表单选项 --><form class="layui-form" id="registerForm" action="${pageContext.request.contextPath}/registerServlet" method="post"><div class="layui-input-inline"><!-- 用户名 --><div class="layui-inline" style="width: 100%"><label class="layadmin-user-login-icon layui-icon layui-icon-username"></label><input type="text" id="user" value="${studentid}" name="studentid" required  lay-verify="required" placeholder="请输入学号" autocomplete="off" class="layui-input"></div></div><!-- 密码 --><div class="layui-input-inline"><div class="layui-inline" style="width: 100%"><label class="layadmin-user-login-icon layui-icon layui-icon-password"></label><input type="password" id="pwd" value="${password}" name="password" required  lay-verify="required" placeholder="请输入密码" autocomplete="off" class="layui-input"></div></div><!-- 确认密码 --><div class="layui-input-inline"><div class="layui-inline" style="width: 100%"><label class="layadmin-user-login-icon layui-icon layui-icon-password"></label><input type="password" id="rpwd" value="${repassword}" name="repassword" required  lay-verify="required" placeholder="请确认密码" autocomplete="off" class="layui-input"></div></div><div class="layui-input-inline" style="width: 56%;"><label class="layadmin-user-login-icon layui-icon layui-icon-vercode"></label><input type="password" id="verifycode" name="verifycode" required lay-verify="required" placeholder="验证码" autocomplete="off"class="layui-input"></div><a href="javascript:refreshCode()"><img style="padding-left: 14px; margin-top: -15px;" src="${pageContext.request.contextPath}/checkCodeServlet" title="刷新验证码" id="vcode" draggable="false"></a><div class="layui-input-inline login-btn" style="width: 100%"><button type="submit" lay-submit lay-filter="sub" class="layui-btn">注册</button></div><hr style="width: 100%" /><p style="width: 100%"><a href="login.jsp" class="fl">立即登录</a><div class="tooltip"><span class="tooltiptext">${msg}</span></div><a href="forget.jsp" class="fr">忘记密码?</a></p><i class="layui-icon" id="ri" style="color: green;font-weight: bolder; position: relative; left: 200px; top: -265px;" hidden></i><i class="layui-icon" id="wr" style="color: red; font-weight: bolder; position: relative; left: 200px; top: -265px;" hidden></i><i class="layui-icon" id="pri" style="color: green;font-weight: bolder; position: relative; left: 180px; top: -213px;" hidden></i><i class="layui-icon" id="pwr" style="color: red; font-weight: bolder; position: relative; left: 180px; top: -213px;" hidden></i><i class="layui-icon" id="rpri" style="color: green;font-weight: bolder; position: relative; left: 160px; top: -160px;" hidden></i><i class="layui-icon" id="rpwr" style="color: red; font-weight: bolder; position: relative; left: 160px; top: -160px;" hidden></i></form></div><span id="s_id"></span>
</div>
<footer style="position:absolute;bottom:0;width:100%;height:30px; text-align: center;">© 2018-2019.YOYLING.COM</footer><script src="layui.js"></script>
<script type="text/javascript">function refreshCode() {var vcode = document.getElementById("vcode");vcode.src = "${pageContext.request.contextPath}/checkCodeServlet?time="+new Date().getTime();}
</script>
<script type="text/javascript">layui.use(['form','jquery','layer'], function () {var form   = layui.form;var $      = layui.jquery;var layer  = layui.layer;//添加表单失焦事件//验证表单$('#user').blur(function() {var studentid = $(this).val();$.get("findStudentServlet",{studentid:studentid},function (data) {if (data.studentExsit) {$('#wr').removeAttr('hidden');$('#ri').attr('hidden','hidden');layer.open({title: '错误',content: data.msg,icon: 2});$('#user').val("");} else {}});});// 为密码添加正则验证$('#pwd').blur(function() {var reg = /^[\w]{3,12}$/;if(!($('#pwd').val().match(reg))){//layer.msg('请输入合法密码');$('#pwr').removeAttr('hidden');$('#pri').attr('hidden','hidden');layer.msg('请输入3-6位合法密码');$('#pwd').val("");}else {$('#pri').removeAttr('hidden');$('#pwr').attr('hidden','hidden');}});$('#user').blur(function() {var reg = /^[0-9]{10}$/;if(!($('#user').val().match(reg))){//layer.msg('请输入合法密码');$('#wr').removeAttr('hidden');$('#ri').attr('hidden','hidden');layer.msg('请输入10位数字学号');$('#user').val("");}else {$('#ri').removeAttr('hidden');$('#wr').attr('hidden','hidden');}});//验证两次密码是否一致$('#rpwd').blur(function() {if($('#pwd').val() != $('#rpwd').val() || $('#rpwd').val()=='' || $('#pwd').val()==''){$('#rpwr').removeAttr('hidden');$('#rpri').attr('hidden','hidden');// layer.msg('两次输入密码不一致!');$('#rpwd').val("");}else{$('#rpri').removeAttr('hidden');$('#rpwr').attr('hidden','hidden');};});});
</script>
</body>
</html>

message.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="java.io.*,java.util.*,javax.servlet.*,javax.servlet.http.*" %>
<%@ page import="java.rmi.ServerException" %>
<%@ page import="java.nio.charset.Charset" %>
<%@ page import="java.nio.charset.StandardCharsets" %>
<html>
<head><title></title>
</head>
<body>
<%//定义上传文件的最大字节int MAX_SIZE = 102400 * 102400;//创建根路径的保存变量String rootPath;//声明文件读入类DataInputStream in = null;FileOutputStream fileOut = null;//取得互联网程序的绝对地址String realPath = request.getSession().getServletContext().getRealPath("/");realPath = realPath.substring(0, realPath.indexOf("\\out"));
//    out.print(realPath);//创建文件的保存目录rootPath = realPath + "\\web\\upload\\";//取得客户端上传的数据类型String contentType = request.getContentType();try {if (contentType.indexOf("multipart/form-data") >= 0) {//读入上传数据in = new DataInputStream(request.getInputStream());int formDataLength = request.getContentLength();if (formDataLength > MAX_SIZE) {out.print("上传的字节不可以超过" + MAX_SIZE + "字节");return;}//保存上传文件的数据byte dataBytes[] = new byte[formDataLength];int byteRead = 0;int totalBytesRead = 0;//上传的数据保存在byte数组里面while (totalBytesRead < formDataLength) {byteRead = in.read(dataBytes, totalBytesRead, formDataLength);totalBytesRead += byteRead;}//根据byte数组创建字符串String file = new String(dataBytes, StandardCharsets.UTF_8);//取得上传数据的文件名String saveFile = file.substring(file.indexOf("filename=\"") + 10);saveFile = saveFile.substring(0, saveFile.indexOf("\n"));saveFile = saveFile.substring(saveFile.lastIndexOf("\\") + 1, saveFile.indexOf("\""));int lastIndex = contentType.lastIndexOf("=");//取得数据的分隔字符串String boundary = contentType.substring(lastIndex + 1, contentType.length());//创建保存路径的文件名String fileName = rootPath + saveFile;int pos;pos = file.indexOf("filename = \"");pos = file.indexOf("\n", pos) + 1;pos = file.indexOf("\n", pos) + 1;pos = file.indexOf("\n", pos) + 1;int boundaryLocation = file.indexOf(boundary, pos) - 4;//取得文件数据的开始的位置int startPos = ((file.substring(0, pos)).getBytes()).length;int endPos = ((file.substring(0, boundaryLocation)).getBytes()).length;File checkFile = new File(fileName);if (checkFile.exists()) {out.println("<p>" + saveFile + "文件已经存在.</p>");return;}//检查上传文件的目录是否存在File fileDir = new File(rootPath);if (!fileDir.exists()) {fileDir.mkdirs();}//创建文件的输出类fileOut = new FileOutputStream(fileName);//保存文件的数据fileOut.write(dataBytes, startPos, (endPos - startPos));fileOut.close();out.print("<b>文件上传成功</b>");} else {String content = request.getContentType();out.print("上传的文件类型是" + content + "类型的,请上传目录mutipart/form-data类型的文件");}} catch (Exception ex) {throw new ServerException(ex.getMessage());}
%>
</body>
</html>

九、联系与交流

扣:969060742 完整代码 sql 程序资源

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/823088.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Python三级 每周练习题32

如果你感觉有收获&#xff0c;欢迎给我微信扫打赏码 ———— 以激励我输出更多优质内容 练习一: 作业1 (1)用 python 新建一个文件名为jscj.csv 文件&#xff0c;将上述的数据写入表格 (2)计算输出每个班的平均分(结果保留两位小数) 答案: with open(cjm.csv,w,encodingu…

基于Java图书借阅管理系统设计与实现(源码+部署文档)

博主介绍&#xff1a; ✌至今服务客户已经1000、专注于Java技术领域、项目定制、技术答疑、开发工具、毕业项目实战 ✌ &#x1f345; 文末获取源码联系 &#x1f345; &#x1f447;&#x1f3fb; 精彩专栏 推荐订阅 &#x1f447;&#x1f3fb; 不然下次找不到 Java项目精品实…

AI又进化了,AI 写代码工具

今年 AI 的发展可谓一日千里&#xff0c;相信不少同学应该都用过 AI 来帮助自己提高开发效率吧&#xff1f; 比如让 AI 根据注释生成代码、解释整段代码、提供技术问题的答疑、修改 Bug、生成单元测试等等。 在 12 月 28 日刚刚结束的 WAVE SUMMIT 深度学习开发者大会上&…

Postgresql源码(119)PL/pgSQL中ExprContext的生命周期

前言 在PL/pgSQL语言中&#xff0c;执行任何SQL都需要通过SPI调用SQL层解析执行&#xff0c;例如在SQL层执行表达式的入口&#xff1a; static bool exec_eval_simple_expr(PLpgSQL_execstate *estate,PLpgSQL_expr *expr,Datum *result,bool *isNull,Oid *rettype,int32 *re…

C练习——判断三角形并求面积

题目&#xff1a;从健盘任意输入三角形的三边长为a,b,c,编程判断a,b,c的值能否构成一个三角形&#xff0c;若能构成三角形&#xff0c;则计算并输出三角形的面积&#xff0c;否则提示不能构成三角形。 已知构成三角形的条件是&#xff1a;任意两边之和大于第三边。 解析&#…

nodejs+vue+微信小程序+python+PHP的冷链物流配送系统-计算机毕业设计推荐

对于冷链物流信息调度系统所牵扯的管理及数据保存都是非常多的&#xff0c;例如管理员&#xff1b;首页、用户管理&#xff08;管理员、客户、业务员、配送员&#xff09;客户管理&#xff08;货物信息、客户运输单、车辆信息、调度安排&#xff09;这给管理者的工作带来了巨大…

Java多线程<三>常见的多线程设计模式

多线程的设计模式 两阶段线程终止 park方法 interrupted() 会让他失效。 使用volatile关键字进行改写 单例模式 双锁检测 保护性暂停 实现1&#xff1a; package threadBase.model;/*** author: Zekun Fu* date: 2022/5/29 19:01* Description:* 保护性暂停&#xff0c;* …

PostgreSQL10数据库源码安装及plpython2u、uuid-ossp插件安装

PostgreSQL10数据库源码安装及plpython2u、uuid-ossp插件安装 1、环境2、安装包下载3、安装3.1 、解压3.2、配置3.3、编译安装3.4 、启动与关闭 4、安装 uuid-ossp 、plpython2u插件5、参考 1、环境 centos 7 、 postgresql 10.19 2、安装包下载 postgres 源码安装包 3、安…

万界星空科技车间生产管理系统解决方案

车间管理系统解决方案:   &#xff08;一&#xff09;车间生产计划管理解决方案   车间管理系统解决方案对于一般的生产计划&#xff0c;需完成编制、审批、下达、执行、完工等操作&#xff0c;车间管理系统解决方案立足于减少中间环节浪费&#xff0c;节约成本&#xff0c…

提升效率:使用注解实现精简而高效的Spring开发

IOC/DI注解开发 1.0 环境准备1.1 注解开发定义bean步骤1:删除原XML配置步骤2:Dao上添加注解步骤3:配置Spring的注解包扫描步骤4&#xff1a;运行程序步骤5:Service上添加注解步骤6:运行程序知识点1:Component等 1.2 纯注解开发模式1.2.1 思路分析1.2.2 实现步骤步骤1:创建配置类…

Redis为何如此快速?

1. 引言 Redis&#xff08;Remote Dictionary Server&#xff09;是一个高性能的键值对存储数据库。它以其出色的性能和灵活的数据结构而闻名&#xff0c;今天就来谈谈redis为什么会这么快。 1.1 Redis是单线程吗&#xff1f; Redis 的单线程主要是指 Redis 的网络 IO 和键值对…

发掘企业知识宝藏,开启专属知识付费新时代

明理信息科技saas知识服务平台 随着互联网的快速发展&#xff0c;人们越来越重视知识的获取和价值的挖掘。在这个信息爆炸的时代&#xff0c;知识付费已经成为了一种新的商业模式&#xff0c;为知识的传播和价值的转化提供了更加高效和便捷的途径。本文将探讨知识付费的发展背…

微软技术分享带您探索C语言的魅力:C语言与C++的区别概述

&#x1f337;&#x1f341; 微软技术分享 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——微软技术分享&#x1f390; &#x1f433;《灰帽黑客&#xff1a;攻守道》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&a…

scanf函数返回值被忽略

心怀希望的前进 前言 最近在复习c语言&#xff0c;发现了许多之前不了解的知识&#xff0c;今天想来与大家分享一下scanf返回值值被忽略的问题。 很多人应该都在vs中见到过&#xff0c;我们先说原因&#xff0c;再说改进方法 原因&#xff1a; scanf函数在读取数据时不会检…

MySQL MVCC精讲

版本链 我们前面说过&#xff0c;对于使用InnoDB存储引擎的表来说&#xff0c;它的聚簇索引记录中都包含两个必要的隐藏列&#xff08;row_id并不是必要的&#xff0c;我们创建的表中有主键或者非NULL的UNIQUE键时都不会包含row_id列&#xff09;&#xff1a; trx_id&#xff…

LNK2038、LNK2001

今天在编译PCL的DLL版本是发生错误&#xff0c;配置环境为&#xff1a;pcl1.10.1、msvc2019。 错误列表&#xff1a; 控制台输出&#xff1a; libboost_thread-vc142-mt-gd-x64-1_72.lib(tss_pe.obj) : error LNK2038: 检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项: 值“2”不匹…

基于ssm的程序设计实践项目管理系统+jsp论文

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本实践项目管理系统就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在短时间内处理完毕庞大的数据信息…

Ajax学习

Ajax Ajax 是什么 AJAX 即"Asynchronous Javascript And XML"(异步 JavaScript 和 XML)Ajax 是一种浏览器异步发起请求(指定发哪些数据),局部更新页面的技术Ajax 经典应用场景 搜索引擎根据用户输入关键字,自动提示检索关键字动态加载数据,按需取得数据【树形菜单…

OpenHarmony之系统调用

背景 对于运行L0系统的硬件一般是mcu&#xff0c;资源有限&#xff0c;L0系统没有区分内核态和用户态&#xff0c;所有的代码都在内核态运行&#xff0c;所以不需要系统调用 L2系统用的是Linux内核&#xff0c;所以系统调用跟Linux Kernel的是一样的。 所以我们主要来看看L1系…

yolov5简单手势识别

实验目的 实验要求只需要识别五个简单的手势即可&#xff0c;分别对应的一下五个动作 动作对应标签名点赞goodOKok单手比心love数字 5five数字8eight 使用yolov5实现目标检测功能&#xff0c;有一下几个主要步骤 环境配置&#xff08;包括conda、labelimg、yolov5的下载&am…