基于javaweb的顶岗实习管理系统(jsp+servlet)

2023-09-21 14:36:19

系统简介

    本项目采用eclipse工具开发,jsp+servlet+jquery技术编写,数据库采用的是mysql,navicat开发工具。

三个角色:管理员,教师,学生


模块简介

管理员:

1、登录

2、学生管理

3、公告管理

4、教师管理

5、任务分类管理

6、实习任务管理

7、实习任务申请管理

8、实习报告分数管理

学生:

1、登录

2、个人信息管理

3、查看公告

4、查看实习任务

5、申请实习任务

6、查看实习报告分数

教师:

1、登录

2、个人信息管理

3、查看公告

4、查看实习报告

5、实习报告打分


项目简介
难度等级:✩✩✩
用户类型:3角色(管理员,教师,学生)
设计模式:MVC
项目架构:B/S架构
开发语言:Java语言
前端技术:HTML、CSS、JS、JQuery等
后端技术:JSP、servlet框架
运行环境:Windows7或10、JDK1.8
运行工具:本系统采用eclipse开发,支持idea运行。
数  据  库:MySQL5.5/5.7/8.0版本
运行服务器:Tomcat7.0/8.0/8.5/9.0等版本
是否基于Maven环境:否
是否采用框架:是
数据库表数量:8张表
JSP页面数量:30多张
是否有分页:有分页

视频展示

javaweb顶岗实习管理系统_哔哩哔哩_bilibili本项目采用eclipse工具开发(idea也可运行),jsp+servlet+jquery技术编写,数据库采用的是mysql,navicat开发工具。系统一共分为3个角色分别是:学生,管理员,教师有需要加 微信 hhh1148720753 或者 QQ1148720753(非开源,非开源,非开源,重要事情说三遍), 视频播放量 77、弹幕量 0、点赞数 0、投硬币枚数 0、收藏人数 0、转发人数 0, 视频作者 码盗666, 作者简介 java码农一枚,相关视频:javawebCT图像管理系统,javaweb电力设备监测管理系统,javaweb家庭财务管理系统,健身房俱乐部管理系统,2023-mysql与navicat的安装,基于javaweb宿舍管理系统(eclipse_mysql_jsp_servlet),基于ssm的高校学生选课系统,【Java项目】java图书管理系统(附源码)_Java课程设计项目_java毕业设计,【Springboot项目实战】简约个人博客系统搭建,Spring boot + mybatis-plus + easyui | 全套完整 | 附源码笔!,创建第一个web项目~解决报错+设置中文+设置首页icon-default.png?t=N7T8https://www.bilibili.com/video/BV19z4y1j77A/?spm_id_from=333.999.0.0

获取地址 

xystgl · master · 码盗_java_bishe / java系统 · GitCodeGitCode——开源代码托管平台,独立第三方开源社区,Git/Github/Gitlabicon-default.png?t=N7T8https://gitcode.net/qq_43485489/javaweb/-/blob/master/xystgl

图片展示

部分代码展示 

登录

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
      <%
	String path = request.getContextPath();
	String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort()
			+ path + "/";
%>
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="utf-8">
	<meta http-equiv="X-UA-Compatible" content="IE=edge">
	
	<meta name="viewport" content="width=device-width, initial-scale=1.0">
	<meta name="description" content="Neon Admin Panel">
	<meta name="author" content="">
	
	<title>登录</title>
	

	<link rel="stylesheet" href="resource/main/static/css/jquery-ui-1.10.3.custom.min.css">
	<link rel="stylesheet" href="resource/main/static/css/entypo.css">
	<link rel="stylesheet" href="resource/main/static/css/css.css">
	<link rel="stylesheet" href="resource/main/static/css/bootstrap.css">
	<link rel="stylesheet" href="resource/main/static/css/neon-core.css">
	<link rel="stylesheet" href="resource/main/static/css/neon-theme.css">
	<link rel="stylesheet" href="resource/main/static/css/neon-forms.css">
	<link rel="stylesheet" href="resource/main/static/css/custom.css">
    <link href="resource/layui/css/layui.css" rel="stylesheet">

	<script src="resource/main/static/js/jquery-1.11.0.min.js"></script>
	
</head>
<body class="page-body login-page login-form-fall" data-url="http://neon.dev">


<script type="text/javascript">
var baseurl = '';
</script>

<div class="login-container">
	
	<div class="login-header login-caret">
		
		<div class="login-content">
			
			<!-- <a href="index.html" class="logo">
				<img src="resource/main/static/picture/logo@2x.png" width="120" alt="">
			</a> -->
			
		<span style="font-size:30px;">顶岗实习管理系统登录</span>
			
			<!-- progress bar indicator -->
			<div class="login-progressbar-indicator">
				<h3>43%</h3>
				<span>logging in...</span>
			</div>
		</div>
		
	</div>
	
	<div class="login-progressbar">
		<div></div>
	</div>
	
	<div class="login-form">
		
		<div class="login-content">
			
			<!-- <div class="form-login-error">
				<h3>Invalid login</h3>
				<p>Enter <strong>demo</strong>/<strong>demo</strong> as login and password.</p>
			</div> -->
			
			<form  role="form" id="loginForm">
				
				<div class="form-group">
					
					<div class="input-group">
						<div class="input-group-addon">
							<i class="entypo-user"></i>
						</div>
						<input type="text" class="form-control" name="userName" id="userName" placeholder="请输入用户名" autocomplete="off">
					</div>
					
				</div>
				
				<div class="form-group">
					
					<div class="input-group">
						<div class="input-group-addon">
							<i class="entypo-key"></i>
						</div>
						<input type="password" class="form-control" name="password" id="password" placeholder="请输入密码" autocomplete="off">
					</div>
				
				</div>
				
				<div class="form-group">
					<select name="type" id="type" class="form-control">
					  <option value="" selected>请选择角色</option>
					  <option value="1">管理员</option>
					  <option value="2">学生</option>
					  <option value="3">教师</option>
					</select>
									
				</div>
				
				
				<div class="form-group">
					<button type="button" id="login" class="btn btn-primary btn-block btn-login">
						<i class="entypo-login"></i>
						登录
					</button>
				</div>
				
			<!-- 	<div class="form-group">
				
					<button type="button" class="btn btn-default btn-lg btn-block btn-icon icon-left facebook-button">
						注册
					</button>
					
				</div> -->
				
			</form>
			
			
	<!-- 		<div class="login-bottom-links">
				
				<a  class="link">没有账号?</a>
				
				<br>
				
				<a type="button" onclick="reg()" >注册</a>
				
			</div>
			 -->
		</div>
		
	</div>
	
</div>


	<!-- Bottom Scripts -->
	<script src="resource/main/static/js/main-gsap.js"></script>
	<script src="resource/main/static/js/jquery-ui-1.10.3.minimal.min.js"></script>
	<script src="resource/main/static/js/bootstrap.js"></script>
	<script src="resource/main/static/js/joinable.js"></script>
	<script src="resource/main/static/js/resizeable.js"></script>
	<script src="resource/main/static/js/neon-api.js"></script>
	<script src="resource/main/static/js/jquery.validate.min.js"></script>
	<script src="resource/main/static/js/neon-login.js"></script>
	<script src="resource/main/static/js/neon-custom.js"></script>
	<script src="resource/main/static/js/neon-demo.js"></script>
    <script src="resource/layui/layui.js"></script>

     <script>
			$("#login").on("click", function() {
			    var userName = $("#userName").val().trim(); // trim()去除空格
			    var password = $("#password").val().trim();
			    var type = $("#type").val();
			    
			    if(userName == ""){
			    	
			    	alert('账号不能为空!');
			    	return false;
			    }
			    if(password == ""){
			    	alert('密码不能为空!');
			    	return false;
			    }
			    if(type == ""){
			    	alert('请选择角色!');
			    	return false;
			    } 
			    $.ajax({
					cache : true,
					type : "post",
					url : "LoginServlet?action=login",
					data : $("#loginForm").serialize(),
					async : false,
					success : function(e) {
						if (e == 'yes') {
							alert("登录成功!");
							window.parent.location.href = "UtilServlet?action=toMain";
						}else {
							alert("登录失败,账号或者密码错误!");
						}
					}
				})
			
			});
	</script>
	
		
	<script>
    layui.use([ 'form','jquery','layer','upload' ], function() {
        var form = layui.form,
            layer = layui.layer,
            $ = layui.jquery,
            upload = layui.upload;
        form.render();//这句一定要加,占坑

        window.reg = function(e){
            layer.open({
                //调整弹框的大小
                area:['500px','800px'],
                shadeClose:true,//点击旁边地方自动关闭
                //动画
                anim:2,
                //弹出层的基本类型
                type: 2,
                title: '会员注册',
                //刚才定义的弹窗页面
                content: 'LoginServlet?action=toRegister', //这里content是一个URL,如果你不想让iframe出现滚动条,你还可以content: ['http://sentsin.com', 'no']

            });
        }

    })

</script>

</body>
</html>
protected void login(HttpServletRequest request, HttpServletResponse response) throws Exception {// 跳转到添加用户界�?
		String userName = request.getParameter("userName");
		String password = request.getParameter("password");
		String type = request.getParameter("type");
		String message = "no";
		if (type != null && type.equals("1")) {// admin
			Admin admin = service.selectAdmin(userName, password);
			if (admin != null) {
				message = "yes";
				request.getSession().setAttribute("flag", 1);
				request.getSession().setAttribute("admin", admin);
			}

		} else if (type != null && type.equals("2")) {
			Student Student = service.seletStudent(userName, password);
			if (Student != null) {
				message = "yes";
				request.getSession().setAttribute("flag", 2);
				request.getSession().setAttribute("student", Student);
			}

		} else if (type != null && type.equals("3")) {
			Teacher teacher = service.selectTeacher(userName, password);
			if (teacher != null) {
				message = "yes";
				request.getSession().setAttribute("flag", 3);
				request.getSession().setAttribute("teacher", teacher);
			}

		}
		response.getWriter().print(message);
	}

系统总结

系统使用eclipse开发的(也可idea运行)
相关技术:jsp,servlet,JavaScript,ajax,jquery,mvc结构,jdbc连接池C3p0,mysql,bootstrap。

我的开发工具:eclipse2020,mysql5.7,navicat数据库管理工具,Jdk1.8,tomcat8.5,google浏览器。

非开源!!!!!!
项目截图中的数据,很多是用来测试的,需求自行添加合适的数据图片
喜欢的朋友的点赞加关注,感兴趣的同学可以研究!!!!!

更多推荐

生产发版前准备【经验分享给萌新程序员】

经验分享自从当了码农,已经不知道有多少个日日夜夜熬夜到凌晨三四点了。不知道大家有没有想过,生产上线发布新版本到凌晨三、四点都有可能是哪些原因呢?下面我将分享下自己以前跟进生产版本发布的经验,经验丰富的老前辈们肯定都比我清楚(可忽略此篇文章~哈哈~)。这篇文章可能更适合萌新程序员体质。争取不熬夜工作(只能熬夜玩乐,不能熬

kafka ack确认机制

Kafka使用ACK(Acknowledgment)确认机制来确保消息在生产者和消费者之间的可靠传递。这个机制确保消息在被认为已成功发送或处理之前不会被丢失。Kafka的ACK确认机制有三个级别:acks=0:这是最快速的确认级别,也是最不可靠的。生产者发送消息后不会等待任何确认,直接将消息添加到分区的副本中,并认为消

汽车电子系统总线LIN通信协议精要

汽车电子系统总线LIN通信协议精要文章目录汽车电子系统总线LIN通信协议精要简介LIN信号的物理层LIN总线收发器LIN通信协议LIN的主机和从机LIN报文帧结构同步间隔段(Breakfield)同步段(Syncfield)受保护的帧ID(ProtectedIdentifierfield)应答数据段(Datafield

从零开始:使用 Kubernetes 部署 Nginx 应用

[root@icv-k8s-node-1~]#kubectlcreatedeploymentjavaedge-nginx--image=nginx:1.24.0deployment.apps/javaedge-nginxcreated[root@icv-k8s-node-1~]#kubectlgetallNAMEREA

内网穿透的应用-NAS私有云存储 - 搭建Nextcloud私有云盘并公网远程访问

文章目录摘要1.环境搭建2.测试局域网访问3.内网穿透3.1ubuntu本地安装cpolar3.2创建隧道3.3测试公网访问4配置固定http公网地址4.1保留一个二级子域名4.1配置固定二级子域名4.3测试访问公网固定二级子域名摘要Nextcloud,它是ownCloud的一个分支,是一个文件共享服务器,允许您将个人

月木学途开发 5.轮播图模块

概述效果图数据库设计轮播图表DROPTABLEIFEXISTS`banner`;CREATETABLE`banner`(`bannerId`int(11)NOTNULLAUTO_INCREMENT,`bannerUrl`longtext,`bannerDesc`varchar(255)DEFAULTNULL,`bann

十天学完基础数据结构-第一天(绪论)

1.数据结构的研究内容数据结构的研究主要包括以下核心内容和目标:存储和组织数据:数据结构研究如何高效地存储和组织数据,以便于访问和操作。这包括了在内存或磁盘上的数据存储方式,如何将数据元素组织成有序或无序的集合,以及如何表示复杂的数据关系。数据的操作和处理:数据结构不仅关注数据的存储,还关注如何对数据进行各种操作,如插

并发编程——ScheduledThreadPoolExecutor

文章目录ScheduledThreadPoolExecutor介绍ScheduledFutureTask四种方法执行任务execute方法schedule方法scheduleAtFixedRate和scheduleWithFixedDelay分析ScheduledThreadPoolExecutor介绍Schedule

力扣刷题(简单篇):两数之和、两数相加、无重复字符的最长子串

坚持就是胜利一、两数之和题目链接:https://leetcode.cn/problems/two-sum/给定一个整数数组nums和一个整数目标值target,请你在该数组中找出和为目标值target的那两个整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你

QCA组态如何科学命名?

前言(一)文献来源文献来源:[1]FurnariS,CrillyD,MisangyiVF,etal.Capturingcausalcomplexity:Heuristicsforconfigurationaltheorizing[J].AcademyofManagementReview,2021,46(4):778-7

Linux下的系统编程——线程同步(十三)

前言:在多线程编程中,如果多个线程同时访问和修改共享资源,可能会产生竞争条件和数据不一致的问题。同步机制用于协调线程之间的访问和操作,确保数据的正确性和一致性。为了避免多个线程同时访问和操作共享资源导致的问题,可以使用互斥锁(mutex)来实现线程的互斥访问。互斥锁可以保证同一时间只有一个线程访问共享资源、条件变量用于

热文推荐