基于SSM的“学生网上请假系统 ”的设计与实现(源码+数据库+文档)

news2024/10/5 16:19:54

基于SSM的“学生网上请假系统 ”的设计与实现(源码+数据库+文档)

  • 开发语言:Java

  • 数据库:MySQL

  • 技术:SSM

  • 工具:IDEA/Ecilpse、Navicat、Maven


系统展示


系统功能结构图


主页界面


登录界面


班级信息添加界面


院系信息添加界面


用户权限添加页面


学生请假管理界面

摘要

本学生网上请假系统是针对目前学生网上请假系统的实际需求,从实际工作出发,对过去的学生网上请假系统存在的问题进行分析,结合计算机系统的结构、概念、模型、原理、方法,在计算机各种优势的情况下,采用目前最流行的ssm框架和eclipse编辑器、mysql数据库设计并实现的 。本学生网上请假系统主要包括登录模块、基础信息模块、班级信息管理模块、用户权限管理模块、和退出模块等多个模块。它帮助学生网上请假系统实现了信息化、网络化,通过测试,实现了系统设计目标,相比传统的管理模式,本系统合理的利用了网络数据资源,有效的减少了学生网上请假系统的经济投入,大大提高了学生网上请假系统的效率。

开发背景

上个世纪末期,网络技术逐渐开始流行起来,互联网发展进入了起步阶段。到了新世纪初期,信息化技术开始逐渐发展,计算机应用技术逐渐体现出优势来。接着,大量的电脑进入了千家万户,更是诞生了大量的管理平台。信息化时代逐渐来临,互联网成为时代下媒体关注的核心内容。学生网上请假系统随着互联网的潮流,给相关机构和管理员提供了高效的服务。以往的模式长期来看,管理十分不便利,存在误差,查询难的现象,一旦数据过多,人工管理方式就很难维持。随着信息技术的应用拓展,逐渐引用了信息化技术管理,逐渐取代了人工管理模式,采用计算机系统来管理学生网上请假系统,带来的好处是查询便利,信息准确率高,节省了资源,提高了工作的效率。本次系统开发,主要以学生网上请假系统为对象,根据需求来完成功能设计[1][2]。

开发意义

在当下社会,人们越来越注重网络的发展,自动化管理技术和信息化管理技术逐渐被人们所使用。在以往的手工管理模式中已经越来越能体现出问题和不足,如管理效率低下,信息处理速度慢,劳动强度大,信息的准确率低。因此如何改变这一现状,从根本上帮助实验室提升他们在设备方面的效率,真正的解放劳动力,相关信息处理过程中的正确率以及速度就成为关键。现代经济发展速度非常快,市场更是变化无常,可以说当前学生网上请假系统在这种条件下生存就不得不面临诸多威胁,同时也必须做到相关系统的完善和升级。那么学生网上请假系统,就需要一个可靠的系统管理软件来管理以及对管理员使用的安排管理,因此开发出一个优秀并且可靠的系统就十分必要了[3][4]。

研究内容

1.不同管理员的登录问题:根据管理员的类别(超级管理员、普通用户)实现管理员操作权限的区分并显示不同的操作界面。

2.数据库的连接问题:数据库连接为系统中的关键技术。

3.数据的一致性和安全问题:本系统必须保证数据的一致性和安全,才能实现有效的管理。不能让没有权限的管理员对数据进行操作并且定期对数据库进行备份。

4.界面开发:系统界面的设计很重要,要使界面具有亲和力。

5.分析信息化现状;

6.研究学生网上请假系统的现状及存在的问题;

7.研究系统平台的总体架构、总体设计、数据库设计、数据库安全设计及功能设计;

8.研究平台各个子系统的功能及实现的方法、信息技术的融合、信息安全技术的维护;

9.进行学生网上请假系统的功能设计。

部分源码

@Controller
public class XiguanliyuanController {
	@Resource
	private XiguanliyuanServer xiguanliyuanService;


   
	@RequestMapping("addXiguanliyuan.do")
	public String addXiguanliyuan(HttpServletRequest request,Xiguanliyuan xiguanliyuan,HttpSession session) throws SQLException{
		Timestamp time=new Timestamp(System.currentTimeMillis());
		
		xiguanliyuan.setAddtime(time.toString().substring(0, 19));
		xiguanliyuanService.add(xiguanliyuan);
		session.setAttribute("backxx", "添加成功");
		session.setAttribute("backurl", request.getHeader("Referer"));
		
		//session.setAttribute("backurl", "xiguanliyuanList.do");
		
		return "redirect:postback.jsp";
		//return "redirect:xiguanliyuanList.do";
		
		
		
	}
 
//	处理编辑
	@RequestMapping("doUpdateXiguanliyuan.do")
	public String doUpdateXiguanliyuan(int id,ModelMap map,Xiguanliyuan xiguanliyuan){
		xiguanliyuan=xiguanliyuanService.getById(id);
		map.put("xiguanliyuan", xiguanliyuan);
		return "xiguanliyuan_updt";
	}
	
	@RequestMapping("doUpdateXiguanliyuan2.do")
	public String doUpdateXiguanliyuan2(ModelMap map,Xiguanliyuan xiguanliyuan,HttpServletRequest request){
		xiguanliyuan=xiguanliyuanService.getById(Integer.parseInt((String)request.getSession().getAttribute("uid")));
		map.put("xiguanliyuan", xiguanliyuan);
		return "xiguanliyuan_updt2";
	}
	
@RequestMapping("updateXiguanliyuan2.do")
	public String updateXiguanliyuan2(int id,ModelMap map,Xiguanliyuan xiguanliyuan){
		xiguanliyuanService.update(xiguanliyuan);
		return "redirect:doUpdateXiguanliyuan2.do";
	}
	
	
	
//	后台详细
	@RequestMapping("xiguanliyuanDetail.do")
	public String xiguanliyuanDetail(int id,ModelMap map,Xiguanliyuan xiguanliyuan){
		xiguanliyuan=xiguanliyuanService.getById(id);
		map.put("xiguanliyuan", xiguanliyuan);
		return "xiguanliyuan_detail";
	}
//	前台详细
	@RequestMapping("xglyDetail.do")
	public String xglyDetail(int id,ModelMap map,Xiguanliyuan xiguanliyuan){
		xiguanliyuan=xiguanliyuanService.getById(id);
		map.put("xiguanliyuan", xiguanliyuan);
		return "xiguanliyuandetail";
	}
//	
	@RequestMapping("updateXiguanliyuan.do")
	public String updateXiguanliyuan(int id,ModelMap map,Xiguanliyuan xiguanliyuan,HttpServletRequest request,HttpSession session){
		xiguanliyuanService.update(xiguanliyuan);
		session.setAttribute("backxx", "修改成功");
		session.setAttribute("backurl", request.getHeader("Referer"));
		return "redirect:postback.jsp";
		//String url = request.getHeader("Referer");
		//return "redirect:"+url;
		//return "redirect:xiguanliyuanList.do";
	}

//	分页查询
	@RequestMapping("xiguanliyuanList.do")
	public String xiguanliyuanList(@RequestParam(value="page",required=false)String page,
			ModelMap map,HttpSession session,Xiguanliyuan xiguanliyuan, String yonghuming, String mima, String xingming, String xingbie, String zhicheng, String yuanxi, String lianxidianhua, String beizhu){
		if(page==null||page.equals("")){
			page="1";
		}
		PageBean pageBean=new PageBean(Integer.parseInt(page), 15);
		Map<String, Object> pmap=new HashMap<String,Object>();
		pmap.put("pageno", pageBean.getStart());
		pmap.put("pageSize", 15);
		
		
		if(yonghuming==null||yonghuming.equals("")){pmap.put("yonghuming", null);}else{pmap.put("yonghuming", yonghuming);}
		if(mima==null||mima.equals("")){pmap.put("mima", null);}else{pmap.put("mima", mima);}
		if(xingming==null||xingming.equals("")){pmap.put("xingming", null);}else{pmap.put("xingming", xingming);}
		if(xingbie==null||xingbie.equals("")){pmap.put("xingbie", null);}else{pmap.put("xingbie", xingbie);}
		if(zhicheng==null||zhicheng.equals("")){pmap.put("zhicheng", null);}else{pmap.put("zhicheng", zhicheng);}
		if(yuanxi==null||yuanxi.equals("")){pmap.put("yuanxi", null);}else{pmap.put("yuanxi", yuanxi);}
		if(lianxidianhua==null||lianxidianhua.equals("")){pmap.put("lianxidianhua", null);}else{pmap.put("lianxidianhua", lianxidianhua);}
		if(beizhu==null||beizhu.equals("")){pmap.put("beizhu", null);}else{pmap.put("beizhu", beizhu);}
		
		int total=xiguanliyuanService.getCount(pmap);
		pageBean.setTotal(total);
		List<Xiguanliyuan> list=xiguanliyuanService.getByPage(pmap);
		map.put("page", pageBean);
		map.put("list", list);
		session.setAttribute("p", 1);
		return "xiguanliyuan_list";
	}
	
	
	
	@RequestMapping("xglyList.do")
	public String xglyList(@RequestParam(value="page",required=false)String page,
			ModelMap map,HttpSession session,Xiguanliyuan xiguanliyuan, String yonghuming, String mima, String xingming, String xingbie, String zhicheng, String yuanxi, String lianxidianhua, String beizhu){
		if(page==null||page.equals("")){
			page="1";
		}
		PageBean pageBean=new PageBean(Integer.parseInt(page), 15);
		Map<String, Object> pmap=new HashMap<String,Object>();
		pmap.put("pageno", pageBean.getStart());
		pmap.put("pageSize", 15);
		
		
		if(yonghuming==null||yonghuming.equals("")){pmap.put("yonghuming", null);}else{pmap.put("yonghuming", yonghuming);}
		if(mima==null||mima.equals("")){pmap.put("mima", null);}else{pmap.put("mima", mima);}
		if(xingming==null||xingming.equals("")){pmap.put("xingming", null);}else{pmap.put("xingming", xingming);}
		if(xingbie==null||xingbie.equals("")){pmap.put("xingbie", null);}else{pmap.put("xingbie", xingbie);}
		if(zhicheng==null||zhicheng.equals("")){pmap.put("zhicheng", null);}else{pmap.put("zhicheng", zhicheng);}
		if(yuanxi==null||yuanxi.equals("")){pmap.put("yuanxi", null);}else{pmap.put("yuanxi", yuanxi);}
		if(lianxidianhua==null||lianxidianhua.equals("")){pmap.put("lianxidianhua", null);}else{pmap.put("lianxidianhua", lianxidianhua);}
		if(beizhu==null||beizhu.equals("")){pmap.put("beizhu", null);}else{pmap.put("beizhu", beizhu);}
		
		int total=xiguanliyuanService.getCount(pmap);
		pageBean.setTotal(total);
		List<Xiguanliyuan> list=xiguanliyuanService.getByPage(pmap);
		map.put("page", pageBean);
		map.put("list", list);
		session.setAttribute("p", 1);
		return "xiguanliyuanlist";
	}
	
	@RequestMapping("deleteXiguanliyuan.do")
	public String deleteXiguanliyuan(int id,HttpServletRequest request){
		xiguanliyuanService.delete(id);
		String url = request.getHeader("Referer");
		return "redirect:"+url;
		//return "redirect:xiguanliyuanList.do";
	}
	
	@RequestMapping("quchongXiguanliyuan.do")
	public void quchongXiguanliyuan(Xiguanliyuan xiguanliyuan,HttpServletResponse response){
		   Map<String,Object> map=new HashMap<String,Object>();
		   map.put("yonghuming", xiguanliyuan.getYonghuming());
		   System.out.println("yonghuming==="+xiguanliyuan.getYonghuming());
		   System.out.println("yonghuming222==="+xiguanliyuanService.quchongXiguanliyuan(map));
		   JSONObject obj=new JSONObject();
		   if(xiguanliyuanService.quchongXiguanliyuan(map)!=null){
				 obj.put("info", "ng");
			   }else{
				   obj.put("info", "用户名可以用!");
				  
			   }
		   response.setContentType("text/html;charset=utf-8");
		   PrintWriter out=null;
		   try {
			out=response.getWriter();
			out.print(obj);
			out.flush();
		} catch (IOException e) {
			e.printStackTrace();
		}finally{
			out.close();
		}
	}
}

结论

经过几个月的努力还坚持,学生网上请假系统终于完成了,程序功能模块能按照需求来运行,能实现多管理员的迸发使用,但是系统由于设计经验以及专业知识的局限性,在本系统的开发过程中,在一些功能方面和业务逻辑方面做得不是很完善,系统还存在一些缺陷。界面的设计从布局到外观,受限于自身的设计功底较低,没能达到自己所要设计的界面要求,另一方面,系统存在一些没有考虑的问题和模块。

在学习的过程中首次进行独立设计工作,编码过程出现了许多问题和困难,原以为正确无误的程序运行过程中不会遇到问题,但是在运行过程中也总会出现各种各样的问题,在调试过程中找不出运行出错的原因。而这些基本问题却都是一些简单的问题,例如标点符号应该是英文状态下的,却因为不好的编程习惯造成了一些中文的符号输入,经过仔细观察和老师的帮组下,还是将问题解决了。

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

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

相关文章

(2024,KAN,MLP,可训练激活函数,样条函数,分层函数)Kolmogorov–Arnold 网络

KAN: Kolmogorov–Arnold Networks 公和众和号&#xff1a;EDPJ&#xff08;进 Q 交流群&#xff1a;922230617 或加 VX&#xff1a;CV_EDPJ 进 V 交流群&#xff09; 目录 0. 摘要 1. 简介 2. KAN 2.1 KA 表示定理 2.2 KAN 架构 2.3 KAN 的逼近能力和缩放定律 2.4 对于…

【JS面试题】闭包

一、自由变量 在学习闭包之前&#xff0c;首先了解一下什么是自由变量&#xff1a; 一个变量在当前作用域&#xff08;比如函数内&#xff09;没有定义&#xff0c;但是被使用了&#xff0c;这个变量就是自由变量。在定义该函数的位置&#xff0c;向上级作用域&#xff0c;一…

C++笔试强训day20

目录 1.经此一役小红所向无敌 2.连续子数组最大和 3.非对称之美 1.经此一役小红所向无敌 链接 简单模拟即可。 需要注意的是&#xff1a; 除完之后有无余数&#xff0c;若有&#xff0c;则还可以再挨一次打。 #include <iostream> using namespace std; #define in…

离散化(算法竞赛)

Ⅰ 离散化简介 离散化&#xff1a;把无限空间中有限的个体映射到有限的空间中去&#xff0c;以此提高算法的时空效率。通俗的说&#xff0c;离散化是在不改变数据相对大小的条件下&#xff0c;对数据进行相应的缩小。 适用范围&#xff1a;数组中元素值域很大&#xff0c;但个…

imx91的uboot编译

一、准备操作 下载半导体厂家的uboot源码 如这里我要下载的是imx91的恩智浦linux芯片bootloader 进入半导体厂家官网 下载源码&#xff0c;略 更新linux源&#xff0c;这里我是替换成清华源 vi /etc/apt/sources.list deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ fo…

FPGA相关论文阅读

一、Achieving 100Gbps Intrusion Prevention on a Single Server 论文名称中文翻译&#xff1a;在单台服务器上实现100Gbps吞吐量的入侵防御检测。 文章中的Mixed-1和Norm-1 二、Distributed Password Hash Computation on Commodity Heterogeneous Programmable Platforms…

分布式版本控制工具 - Git

文章目录 1. 概念介绍2. 客户端2.1 介绍2.2 仓库操作2.3 文件操作2.4 分支原理与操作2.5 标签2.6 远程仓库2.7 README与IGNORE 3. IDEA集成4. 版本号4.1 介绍4.2 文件操作4.2 分支操作 5. 命令5.1 介绍5.2 仓库操作5.3 文件操作5.4 分支操作5.5 标签操作5.6 远程仓库 1. 概念介…

关于Hash表,你不得不知道的知识点

定义&#xff1a; 哈希表是根据关键码值(Key value)而直接进行访问的数据结构。也就是说&#xff0c;它通过把关键码值映射到表中一个位置来访问记录&#xff0c;以加快查找的速度。这个映射函数叫做散列函数&#xff0c;也称为hash函数&#xff0c;存放记录的数组叫做散列表。…

map 和 set 的介绍和简单使用

目录 1. 序列式容器和关联式容器 2. 键值对 2.1. make_pair 3. 树形结构的关联式容器 3.1. set (Key 模型) 3.1.1. std::set::find 和 std::set::count 3.2. map (Key-Value 模型) 3.2.1. std::map::insert 3.2.2. std::map::operator[] 3.3. multiset 3.4.1. std::…

Multisim 14二极管及其电路的应用

multisim multisim&#xff0c;即电子电路仿真设计软件。Multisim是美国国家仪器&#xff08;NI&#xff09;有限公司推出的以Windows为基础的仿真工具&#xff0c;适用于板级的模拟/数字电路板的设计工作。它包含了电路原理图的图形输入、电路硬件描述语言输入方式&#xff0…

周末可以做什么副业?

周末可以做很多种副业&#xff0c;具体可以根据个人兴趣和技能来选择。以下是一些常见的周末副业推荐 1. 线上销售 可以开设自己的网店&#xff0c;销售自己制作的产品、代理热门商品或者利用二手交易平台售卖闲置物品。 2. 做任务 空闲时间可以选择做的是百度的黑鲨阁&…

^_^填坑备忘^_^C#自动化编程实现STK+Exata对卫星互联网星座进行网络仿真

C#实际选择 STK11版本 or STK12版本的问题备注。 【C#自动化客户端调用STK时&#xff0c;实际选择 STK11版本 or STK12版本 的调试运行备注】 以下代码“更新并重新打包备份为”〔testSTKQualNetInterface备份08.1_★避坑★【种子卫星&#xff1a;天线直接安装在卫星上&#…

【刷题篇】滑动窗口(二)

文章目录 1、水果成篮2、找到字符串中所有字母异位词3、串联所有单词的子串4、最小覆盖子串 1、水果成篮 你正在探访一家农场&#xff0c;农场从左到右种植了一排果树。这些树用一个整数数组 fruits 表示&#xff0c;其中 fruits[i] 是第 i 棵树上的水果 种类 。 你想要尽可能多…

JupyterLab OpenCV展示图片

JupyterLab OpenCV展示图片 方式一 注意&#xff1a;此种方式如果在远程服务器上的JupyterLab上运行&#xff0c;可能会出现错误。 import cv2# 读取图片 image cv2.imread(photo/blg.png)# 显示图片 cv2.imshow(image, image)# 等待按键&#xff0c;之后关闭所有窗口 cv2.w…

Jsp+Servlet实现图片上传和点击放大预览功能(提供Gitee源码)

前言&#xff1a;在最近老项目的开发中&#xff0c;需要做一个图片上传和点击放大的功能&#xff0c;在Vue和SpringBoot框架都有现成封装好的组件和工具类&#xff0c;对于一些上世纪的项目就没这么方便了&#xff0c;所以需要自己用原生的代码去编写&#xff0c;这里分享一下我…

MySQL性能优化(提升数据库性能的措施)

万物皆有裂痕&#xff0c;那是光照进来的地方。大家好&#xff0c;今天给大家分享一下关于MySQL性能优化&#xff0c;在处理大型数据集和高负载情况下&#xff0c;MySQL数据库的性能优化是至关重要的。通过合理的调优策略&#xff0c;可以有效提高数据库的响应速度和稳定性。本…

5.10.3 使用 Transformer 进行端到端对象检测(DETR)

框架的主要成分称为 DEtection TRansformer 或 DETR&#xff0c;是基于集合的全局损失&#xff0c;它通过二分匹配强制进行独特的预测&#xff0c;以及 Transformer 编码器-解码器架构。 DETR 会推理对象与全局图像上下文的关系&#xff0c;以直接并行输出最终的预测集。 1. …

WEB后端复习——javabean与会话cookie、session

JavaBean 是一种符合特定命名约定的 Java 类&#xff0c;它通常用于封装数据。 JavaBean 的主要特点是&#xff1a; 1. 无参构造器&#xff1a;JavaBean 必须有一个公共的&#xff08;public&#xff09;无参构造方法&#xff0c;以便于反射时能够创建对象实例。 2. 属性&…

【Linux网络】Https【下】{CA认证/证书的签发与认证/安全性/总结}

文章目录 1.引入证书【为方案五铺垫】1.1再谈https1.2SSL/TLS1.3CA机构1.4理解数字签名1.4继续铺垫1.5方案五服务端申请证书回顾一二三回顾方案四方案五过程寻找方案五的漏洞客⼾端对证书进⾏认证 2.查看证书2.1查看浏览器的受信任证书发布机构2.2中间⼈有没有可能篡改该证书2.…