学生请假管理系统(需求说明+项目(部分代码))

article/2025/10/8 13:31:08

一、需求说明书

软件需求说明书

1引言

1.1编写目的

开发本系统的目的,就是要解决目前我校关于学生请假和管理请假事务所面临的一系列问题。

1.2背景

说明:

  1. 计算机学院请假管理系统;
  2. 目前我校基本上是采用线下请假,学生先是向班主任说明情况,班主任再向辅导员进行报告,然后学生去辅导员那里申请请假并盖章,再到书记那边盖章,最后到学工处盖章,这才算是完成了一个完整的请假流程,离校时还需向宿管报备。这些流程不仅办事效率不高,而且需要老师和学生同时有时间才能完成请假,为了提高请假效率,请假管理系统能够解决线下请假所带来的麻烦。

1.3定义

1.4参考资料

2任务概述

2.1目标

该管理系统的用户可分为两大类,即学生用户和校方用户,实现管理的登录,学生用户可以填写请假信息并打印请假条,等待校方领导审核,还可以查看请假记录;校方用户可以对学生的请假情况进行审核、批准,完成学生的请假,还可以对学生请假信息进行增删改查的操作。

2.2用户的特点

学生用户:学生填写请假原因进行请假、打印请假条、查看请假记录。

校方用户:学生信息管理(增/删/改/查)、老师(含辅导员和院系领导)信息管理、对学生的请假申请进行审核、打印、和查看请假记录。

该管理系统面对我校全体师生,故使用频度很高,需要经常修改和维护。

2.3假定和约束

该管理管理系统仅限于我校学生请假和校方管理请假事务,不能用于其他方面。

3需求规定

3.1对功能的规定

基于我院采用的是线下请假,请假手续繁琐,还有诸多不确定因素,导致学生请假存在较多的问题。为了提高请假效率,请假管理系统能够解决线下请假所带来的麻烦。

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              

顶层DFD如图3-1-1所示

图3-1-1

0层DFD如图3-1-2所示

图3-1-2

1层DFD如3-1-3所示

图3-1-3

数据流名称:请假信息表

描述:学生请假信息

来源:学校学工处

去向:学生个人

组成:学生学号、姓名、密码、请假时长+原因

数据字典:

加工名:信息采集

条件:学校学生和老师信息导入

优先级:普通

输入:申请表

输出:请假信息表

加工名:信息导入

条件:学校数据库提供信息

输入:申请表

输出:请假信息表、请假条

3.2输人输出要求

3.3数据管理能力要求

3.4故障处理要求

输入信息不符合要求的处理,会弹出警告信息。

3.5其他专门要求

  1. 系统健壮性:具有一定的容错能力,并且以友好的方式告知用户。
  2. 安全性:系统应自动备份数据库,防止意外操作或者恶意破坏造成数据的丢失和损坏。

4运行环境规定

4.1设备

       1)内存:不小于512MHZ

       2)硬盘:20G以上

4.2支持软件

1)操作系统:Windows 7/ Windows 8或Windows 10

2)数据库:MySQL

3)开发环境:Visual Studio 2019、Navicat Premium 15

4.3接口

IE浏览器、Ghrome浏览器等主流浏览器。

4.4控制

浏览器

5.数据需求

对系统中的实体及属性进行ER建模                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             

ER图如图5-1-1所示

图5-1-1

以上内容均是自己所编写的,有缺陷有错误的地方还请指正。。。

二、项目(部分源码+运行截图)

1.实体

(1)学生

package com.leave.entity;import java.io.Serializable;public class Apply implements Serializable {private static final long serialVersionUID = 1L;private int aid;// IDprivate String l_s_card;// 学号private String s_username;// 姓名private String g_name;// 年级private String c_name;// 班级private String s_phone;// 联系电话private String l_begintime;// 请假开始时间private String l_endtime;// 请假结束时间private String l_address;// 请假去向private String l_cause;// 请假理由private int status;// 申请请假条状态 0:待审核 1:请假失败 3:未销假 4:已销假 2:表示由班主任审核通过到辅导员审批的标记符public int getAid() {return aid;}public void setAid(int aid) {this.aid = aid;}public String getL_s_card() {return l_s_card;}public void setL_s_card(String l_s_card) {this.l_s_card = l_s_card;}public String getS_username() {return s_username;}public void setS_username(String s_username) {this.s_username = s_username;}public String getG_name() {return g_name;}public void setG_name(String g_name) {this.g_name = g_name;}public String getC_name() {return c_name;}public void setC_name(String c_name) {this.c_name = c_name;}public String getS_phone() {return s_phone;}public void setS_phone(String s_phone) {this.s_phone = s_phone;}public String getL_begintime() {return l_begintime;}public void setL_begintime(String l_begintime) {this.l_begintime = l_begintime;}public String getL_endtime() {return l_endtime;}public void setL_endtime(String l_endtime) {this.l_endtime = l_endtime;}public String getL_address() {return l_address;}public void setL_address(String l_address) {this.l_address = l_address;}public String getL_cause() {return l_cause;}public void setL_cause(String l_cause) {this.l_cause = l_cause;}public int getStatus() {return status;}public void setStatus(int status) {this.status = status;}}

(2)老师

package com.leave.entity;/*** 系统用户类**/
public class User {/*** 学生类型用户*/public static final int USER_STUDENT = 1;/*** 班主任类型用户*/public static final int USER_TEACHER = 2;/*** 辅导员类型用户*/public static final int USER_ADMIN = 3;private int id; // IDprivate String account; // 账户private String password = "######"; // 密码:默认'111111'private String username; // 用户姓名private int type = USER_STUDENT; // 账户类型:默认1为学生;1为学生,2为班主任,3为辅导员public int getId() {return id;}public void setId(int id) {this.id = id;}public String getAccount() {return account;}public void setAccount(String account) {this.account = account;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public int getType() {return type;}public void setType(int type) {this.type = type;}public User(){//无参构造函数}}

2.数据库(MySQL)

(1)配置连接池

package com.leave.util;import java.io.InputStream;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;import org.apache.commons.beanutils.BeanUtils;public class JdbcUtils {private static DataSource dataSource;static {init();}// 每个线程都会自己的一份private static ThreadLocal<Connection> connectionHolder = new ThreadLocal<Connection>();/** 如果有事务,说明connectionHolder中存在Connection对象* 这个事务都用这个connection来完成*/public static void beginTransaction() throws SQLException {/** 如果已经开始了事务,就不能再次开启事务!*/Connection con = connectionHolder.get();if(con != null) {throw new SQLException("已经存在了事务,不能再次开启!");}// 获取连接con = dataSource.getConnection();// 设置为手动提交con.setAutoCommit(false);// 放到Holder中connectionHolder.set(con);}/** 提交事务了* 当前事务的连接在holder中* 从holder中获取连接,然后提交*/public static void commitTransaction() throws SQLException {Connection con = connectionHolder.get();// 如果holder中没有con,说明根本没有开启事务if(con == null) {throw new SQLException("没有事务可以提交!");}con.commit();//提交事务con.close();//关闭连接connectionHolder.remove();//从holder中移除连接对象}public static void rollbackTransaction() throws SQLException {Connection con = connectionHolder.get();// 如果holder中没有con,说明根本没有开启事务if(con == null) {throw new SQLException("没有事务可以回滚!");}con.rollback();//回滚事务con.close();//关闭连接connectionHolder.remove();//从holder中移除连接对象}// 在连接池没有初始化时,去初始化它// 然后再返回。public static DataSource getDataSource() {return dataSource;}// 给dataSource赋值private static void jndi(String jndiName) {try {Context cxt = new InitialContext();dataSource = (DataSource) cxt.lookup("java:/comp/env/" + jndiName);} catch (NamingException e) {throw new RuntimeException(e);}}// 给dataSource赋值private static void initDataSource(Properties prop) {/** 1获取连接池类名称 2通过反射他都连接池对象 3通过BeanUtils把属性注入*/String dataSourceClassName = prop.getProperty("dataSourceClassName");try {// 加载连接池的类型@SuppressWarnings("rawtypes")Class clazz = Class.forName(dataSourceClassName);// 通过反射创建连接池对象dataSource = (DataSource) clazz.newInstance();BeanUtils.populate(dataSource, prop);} catch (Exception e) {throw new RuntimeException("dataSourceClassName找不到:"+ dataSourceClassName, e);}}// 在dataSource没有被初始化时调用它private static void init() {// 初始化/** 1如果在Tomcat环境下,已经配置JNDI,那么就不用管其他的配置信息了,因为会在Tonmcat中配置好了 2如果用户使用的是DBCP* 3如果用户使用的c3p0*//** 当用户配置了jndiName属性时,那么使用这个值直接调用jndi()方法 indi()方法*/try {// 加载配置文件,配置文件名为dbconfig.propertiesProperties prop = new Properties();InputStream in = Thread.currentThread().getContextClassLoader().getResourceAsStream("dbconfig.properties");prop.load(in);// 获取jndiNameString jndiName = prop.getProperty("jndiName");// 如果存在jndiName,那么就直接使用jndi的初始化方式// jndi初始化if(jndiName != null) {jndi(jndiName);return;}// 配置初始化initDataSource(prop);} catch (Exception e) {throw new RuntimeException("dbconfig.properties找不到:", e);}}/** 修改了getConnection()* 当holder中存在Connection,说明用户已经开启了事务* 那么用来在获取连接时,一定要让他使用事务的连接对象*/public static Connection getConnection() throws SQLException {Connection con = connectionHolder.get();if(con != null) {return con;}return dataSource.getConnection();}public static void close(Connection con, Statement stmt) {close(con, stmt, null);}public static void close(Connection con) {close(con, null, null);}public static void close(Connection con, Statement stmt, ResultSet rs) {try {if (rs != null)rs.close();if (stmt != null)stmt.close();if (con != null)con.close();} catch (SQLException e) {throw new RuntimeException(e);}}
}

(2)数据库连接

<?xml version="1.0" encoding="UTF-8" ?>
<c3p0-config><!-- 默认配置0~1 --><default-config> <property name="jdbcUrl">jdbc:mysql://localhost:3306/leave?serverTimezone=UTC;characterEncoding=utf-8</property><property name="driverClass">com.mysql.jdbc.Driver</property><property name="user">root</property><property name="password">123456</property><property name="acquireIncrement">3</property><property name="initialPoolSize">10</property><property name="minPoolSize">2</property><property name="maxPoolSize">10</property></default-config>>
</c3p0-config>
dataSourceClassName=com.mchange.v2.c3p0.ComboPooledDataSource
user=root
password=######
jdbcUrl=jdbc:mysql://localhost:3306/leave?serverTimezone=UTC&characterEncoding=utf-8
driverClass=com.mysql.jdbc.Driver
acquireIncrement=1
maxPoolSize=20
minPoolSize=3
initialPoolSize=5

三、Tomcat配置

我配置的是Tomcat7.0 ,详细安装配置过程参考下面连接:

tomcat下载安装及配置教程_NiUoW的博客-CSDN博客_tomcat下载安装及配置教程

四、运行截图

登录页面

学生界面

 请假申请界面

请假记录页面

 班主任审核界面

辅导员审核界面

简单的一个项目,虽然很粗糙,但完成大作业还是很不错的,哈哈哈哈。小白一名,上述内容如有错误的地方,还请指正。

个人原创,如有侵权请联系!


http://chatgpt.dhexx.cn/article/yLFuf0uh.shtml

相关文章

请假管理系统

更多技术文章请访问我的个人博客http://www.rain1024.com 请假管理系统 这几天受朋友之托&#xff0c;写了一个请假管理系统&#xff0c;使用PHP作为开发语言&#xff0c;使用ThinkPHP作为开发框架&#xff0c;使用了大量的ajax进行数据的传输验证&#xff0c;当然还有很多细…

Java项目:员工出差请假考勤管理系统(java+JSP+LayUI+HTML+servlet+Mysql)

源码获取&#xff1a;俺的博客首页 "资源" 里下载&#xff01; 项目介绍 本项目为后台管理系统&#xff1b; 管理员角色包含以下功能&#xff1a; 登录,首页,考勤记录增删改查,假期申请记录增删改查,出差申请记录增删改查,加班申请记录增删改查,调休申请,考勤查询,…

员工请假管理系统(MFC+ACCESS数据库+ODBC数据源)

主要界面:(未添加皮肤) 登陆界面: 主界面: 1.题目要求 用MFC和ACCESS数据库设计一个请假管理系统可以进行对员工请假的管理和对公司假期及国定假期的设定。 2.功能需求 2.1.系统管理 更换登录用户 退出 2.2.请假管理窗体 员工请假登记 删…

基于VB的员工请假管理系统设计与实现

目录 第一章 概述 1 1.1 项目背景与意义 1 1.2 可行性分析 1 1.2.1 技术可行性 1 1.2.2 经济可行性 2 1.2.3 运行可行性 2 1.3 相关技术与开发工具介绍 3 1.3.1 Visual Basic 6.0简介 3 1.3.2 Access数据库的介绍 5 第2章 总体设计 6 2.1 员工请假管理系统简介 6 2.1.1 整体说…

sql语句--模糊查询

模糊查询 1.like 表示模糊查询&#xff0c;这个没什么难的&#xff0c;已经见识过了。 2.配合like关键字&#xff0c;% 表示任意多个字符&#xff0c;表示这个玩意第一次知道&#xff0c;走着…… select * from students where hometown like %苏;3.同样是配合like关键字使…

模糊查询和sql语句的拼接

如下面图片所示&#xff1a;进行模糊查询 前端的页面代码&#xff1a; 注意&#xff1a;请选择那里的value"" 一定要写 <body><form action"SearchStuServlet" method"post"><table border"1px" width"700"…

sql查询之模糊查询

like 这里可以参照一下菜鸟教程、mysql like一般用于字符串查询%代表半匹配查询 SELECT * FROM student WHERE name "孙悟空";SELECT * FROM student WHERE name LIKE "孙悟空";SELECT * FROM student WHERE name LIKE "孙%";以上第一个sql语…

Mybatis模糊查询SQL语句

模糊查询 <sql id"where_case"><if test"username!null and username ! ">and username like concat(%,#{username},%)</if><if test"userrole!null">and userrole#{userrole} </if></sql> #{ }预编译S…

java中模糊查询sql怎么写,mybatis模糊查询sql,

mybatis模糊查询sql, 今天下午做的一个功能,要用到模糊查询,字段是description,刚开始我的写法用的是sql中的模糊查询语句, 但是这个有问题,只有将字段的全部值传入其中,才能查询,所以不是迷糊查询。 后来经过搜索,发现要加上一个concat字段,要先将字符串拼接后,才能…

java中sql模糊查询_模糊查询的sql语句(java模糊查询sql语句)

模糊查询的sql语句(java模糊查询sql语句) 2020-07-24 11:06:02 共10个回答 假设表名为product,商品名为name,简界为remark.则可如下写:select[name],[remark]fromproductnamelike%aa%orremarklike%aa%.注:上面单引号的aa你表模糊查询输入的字符. 一般模糊查询语句如下:SELECT字…

连接Oracle出现协议适配器错误

在连接Oracle的时候出现如下图所示的协议适配器错误时 说明此时电脑上的Oracle服务没有开 解决步骤: 1.WindowsR 输入services.msc 点击确定 2.找到字母O开头的服务 将OracleServiceXE服务和OracleXETNSListener服务打开 注意: 如果电脑性能比较好,推荐将这两个服务的启动类…

【已解决】SQL PLUS出现协议适配器错误

今天在做c#课程设计的时候&#xff0c;在登录页面实现数据库插入时候出现insert into语句错误&#xff08;使用access数据库&#xff09;。 在和其他专业小伙伴讨论他们使用access也出现了错误&#xff0c;但换了sql server之后成功实现&#xff0c;于是也想换成sql server&am…

ORACLE登录时,协议适配器错误的可能原因

我们进入sqlplus登录界面用管理员账号登录时会显示协议适配器错误 这种情况我们首先看一下&#xff0c;我们监听服务是否是打开的。 如果没有启动&#xff0c;把他启动就好了。 如果是打开的&#xff0c;就可能是你的注册表的oracle_sid没设置好 首先&#xff0c;我们先查看我…

oracle cmd窗口输入sqlplus / as sysdba 报协议适配器错误

一、报错信息 二、解决方法 1、启动Oracle相关服务 先查看Oracle相关服务的启动。 2、配置网络命名服务 查看oracle安装目录里面监听的文件tnsnames.ora和listener.ora文件 我的目录&#xff1a;c:\app\product\11.2.0\dbhome_1\NETWORK\ADMIN 1&#xff09;检查TNS_ADMI…

ERROR: ORA-12560: TNS: 协议适配器错误

Oracle数据库客户端能启动执行操作&#xff0c;但是cmd界面下提示ERROR: ORA-12560: TNS: 协议适配器错误&#xff0c;CrtlR输入services.msc命令检查Oracle两个服务是否开启&#xff0c;如果开启了还是此错误&#xff0c;那就去CrtlR输入regedit命令找到如下图指示&#xff0c…

TNS-12560: TNS: 协议适配器错误 TNS-00530: 协议适配器错误

重启监听时报错 ORA-12560: TNS: 协议适配器错误的解决方法 造成ORA-12560: TNS: 协议适配器错误的问题的原因有三个&#xff1a; 1.监听服务没有起起来。windows平台个一如下操作&#xff1a;开始—程序—管理工具—服务&#xff0c;打开服务面板&#xff0c;启动oraclehome92…

ORA-12560 TNS: 协议适配器错误 根源:ORA-19815

登陆PL/SQL&#xff0c;确登陆失败&#xff0c;出现一个错误“ORA-01034”和“ORA-27101”如图&#xff1a; 然后分别查看路径文件: 文件1:"D:\app\Administrator\product\11.2.0\dbhome_1\database\oradim.log"找到最近第一次报错 继而查询文件2--> 文件2:&quo…

ORA-12560: TNS: 协议适配器错误怎么回事?

最近登录oracle数据库&#xff0c;发现出现了协议适配器错误&#xff0c;百度半天都没有解决&#xff0c;最后发现了问题。 由于本学渣有多个数据库&#xff0c;所以需要设置数据库(set oracle_sid数据库名)&#xff0c;但问题就出现在这里啦。。。 可以看到设置数据库时后面由…

ORA-12560 TNS: 协议适配器错误

数据库中存在多个实例时&#xff0c;使用sqlplus登录&#xff0c;报ORA-12560 TNS: 协议适配器错误解决方法&#xff1a; 1、检查监听和相应的实例是否未启动&#xff1b; &#xff08;参考&#xff1a;https://blog.csdn.net/nanyida0416sushe/article/details/5584117&#…

oracle11适配器错误,oracle11g登录出现协议适配器错误的解决办法(亲测)

第一次使用Oracle数据库(其实之前下了Oracle18c&#xff0c;但发现需要8G物理内存&#xff0c;Oracle12也需要6G内存&#xff0c;而我的电脑只有4G内存&#xff0c;无奈只能选择Oracle11g)&#xff0c;整了好一会才知道oracle的登录方法&#xff1a;“开始”——Oracle软件目录…