学生请假管理系统Word文档下载推荐.docx
《学生请假管理系统Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《学生请假管理系统Word文档下载推荐.docx(31页珍藏版)》请在冰豆网上搜索。
与文
献
[01]叶和亚.陈立.java2程序设计实用教程例[M]北京:
电子工业出版社.
[03]李兆峰.庞永庆.java程序设计与项目实践[M]北京:
电子工业出版社.
指导教师签字:
年月日
摘要
当前信息化时代,讲究高效,准确,及时的完成事情,近年来学校都在开展信息化部署,实现了多媒体教学,网上提交作业,在线考试等学生考勤对学校教务管理是至关重要,在以前,学生请假要去找班主任或者领导批准,并且不一定每次都能顺利的找到班主任,完成请假批准。
如果学生不在学校,没办法向班主任提交请假单;
对于学生出勤检查,是学生会根据纸制名单逐一点名,或老师根据学生上交课堂作业来判断学生是否来上课。
这些方法往往具有考勤差错率比较高,考勤效率也比较慢,没有一个总体的的记录和整理,并且纸制的点名册容易丢失遗漏,耽误时间等缺点。
针对以上的问题,开发一种针对学生请假的考勤网上管理系统,通过请假管理系统,任课老师可以在课堂上直接登录考勤记录网站进行课堂查看哪些学生请假,记录学生考勤情况等。
此外,在其他时间,班主任以及其他老师也可以登录该网站查询学生在某课程的出勤情况。
该系统是基于Javaweb的简单型设计,它体现了对一些简单的JSP标签语言的运用,该系统界面简单、操作方便。
根据实际需要将系统分为学生端和教师端,学生请假和教师批假都需要首先登录,学生端实现了学生申请请假、申请销假、查询自己请假记录功能;
教师端实现了教师对学生请假的批准、销假批准以及查询学生的请假记录功能。
关键词:
学生;
请假管理;
JavaWeb
第1章项目分析
随着计算机的发展与不断进步,各个领域都出现了新的技术,曾经各种规模之间的竞争已经发展成为技术之间的竞争,管理和人才之间的竞争,然而计算机技术的发展也离不开软件的更新,在软件不断更新和替换的过程中已经渗透到各个领域,政府机关,各大高校等都不断向智能方向发展,学生请假也成为一件棘手的事情,为了请假学生需要写请假条找老师批准,结果是这个时候老师不一定在,另外学生需要请假时不一定在学校,所以为了给广大师生提供方便,我们需要开发软件系统学生请假管理系统。
问题描述
要完成这个系统最大的问题就是所学知识是有限的,在完成其中某些功能时候所需要的可能就完全没有接触过,所以只能用一些简单的功能代替或者替换掉那些用目前的水平所不能实现的功能,再者就是对目前所需求的不是很明确,比如要做出一个请假管理如何去设置友好界面让大家都喜欢适应去使用,如何把系统做到什么程度才能够投入使用,这些都是所面临的棘手问题。
技术分析
该系统用到MVC设计模式,总共建立了五个包,界面View、数据对象DO、数据库连接DB、数据库操作DAO、控制层Control、业务层BO;
DO层是对数据对象的封装,DB层是连接数据库,DAO层是包含对数据标的基本操作,BO层是所有和业务相关的关于对数据的判断等,调用的是DAO层然后返回一个结果,Control层是为了获取用户参数并封装,同时调用BO层,再根据调用得到的不同的结果在调用不同的View层,将处理结果显示给用户。
图包图
工程进度计划
实际开发过程中,开发周期可以分为三个阶段:
第一阶段:
成果:
(1)需求分析
(2)对数据库进行设计
目标:
设计出适合学生请假管理系统的数据库;
完成数据库的连接
时间:
一周
第二阶段:
完成JSP页面和系统代码
能在编译器中有效正确运行。
第三阶段:
写报告;
完成系统报告。
第2章系统分析与设计
学生请假管理系统必须通过正确的用户名的密码方能进入系统,系统分为两大模块,学生端和教师端,学生端和教师端分别有三个模块,学生端分为请假申请、销假申请、个人请假记录查询,教师端分为请假审批、销假审批和学生请假记录查询;
学生提交的请假申请需要教师的审批,只有批准之后学生方可提出销假申请。
系统分析
该系统有两个参与者,分别为学生和教师,学生请假需首先得到教师的批准方可奏效,学生与教师都需使用自己的工号作为用户名和密码进行登录。
2.1.1参与者
学生、教师
2.1.2用例图
图用例图
2.1.3用例及用例规约
请假管理系统学生端共包含1个参与者、4个用例。
用例的编号及名称如表1所示:
表用例列表
用例编号
用例名称
参与者
UC-001
登录
学生
UC-002
申请请假
UC-003
申请销假
UC-004
查询请假记录
UC—001登录
参与者学生需要用户名和密码登录到系统,才能进行相应的操作,系统中设置学生的登录用户名为学号,初始化密码为学号.
表
功能编号
功能名称
前置条件
参与者通过浏览器打开请假管理系统的登录页面
基本事件流
1.系统要求参与者填写用户名和密码。
2.参与者填写相应信息,学生输入学号作为用户名,密码初始值为学号。
3.系统验证用户输入信息是否正确
备选流
1.用户名和密码输入错误
如果系统检测到用户输入的用户名和密码与数据库中不一致,给予用户“用户名和密码不正确”的错误提示,并要求用户重新输入。
后置条件
如果用例成功,系统进入相应权限页面
界面原型
UC—002申请请假
该用例的主要参与者为学生,学生通过系统填写请假申请单,请假申请单将会提交给辅导员审批。
用例描述
学生创建新的请假申请单,录入请假资料,创建一个请假申请流程
学生正常登录到系统中,并打开请假管理页面
1、学生选择创建请假申请单,系统自动查询当前的学生是否存在没有销假的记录,如果存在没有销假的请假记录,执行异常流,如果不存在未销假记录,执行基本事件流2
2、系统展示申请单录入界面
3、学生录入学生学号、姓名、请假事由(原因、去向),开始时间、结束时间,联系方式(个人联系方式、家长联系方式)
4、学生提交申请单,系统进行数据校验,依据业务规则C,如果数据校验不合法,执行分支流,如果数据校验合法,执行基本事件流5
5、系统为当前的请假申请单生成唯一的编号,保存该请假申请单
6、将该流程推进到下一环节系统应该向学生展现请假申请单的最终页面,用例结束
分支流
请假信息填写有误,显示填写不正确的信息提示,并要求学生重新填写,显示填写请假申请单的页面。
异常流
系统显示学生没有销假的记录详情
学生确认自己的请假记录是否属实,用例终止
1、系统将保存该条请假记录。
2、创建新的请假单并生成唯一的申请编号
3、创建新的请假申请流程实例
4、记录提交后不能够再修改
无
业务规则
A、包括学生姓名、辅导员姓名、请假开始时间(必须选择当天及当天之后的时间)、请假结束时间(大于请假开始时间),请假理由,家长联系电话
B、系统首先判断是否存在没有销假的记录,存在的话,将该记录显示给当前学生学生进行确认,如果确认是没有销假,学生继续执行销假流程,否则,辅导员进行异常处理
C、学生姓名、辅导员姓名、请假开始时间(必须选择当天及当天之后的时间)、请假结束时间(大于请假开始时间),请假理由,家长联系电话信息为必填,不能为空。
联系方式是否合法,请假开始时间是否在请假结束时间之前。
执行者
涉及的实体
1、学生
属性:
学号、姓名、班级、性别、联系方式、宿舍、标志变量(tag=1)
2、请假申请单
学生(学号、姓名),请假事由(原因、去向),开始时间、结束时间,联系方式(个人联系方式、家长联系方式)、操作1(已批准、待批准)、操作2(申请销假、已销假、未销假)
UC—003申请销假
该用例的主要参与者为学生,学生通过系统提出销假申请,若申请成功,此时请假信息中操作2的状态将修改为申请销假,否则提示申请销假失败。
参与者通过浏览器打开请假管理系统的登录页面成功登录进入系统主页面
1.学生发出销假申请,并等待系统验证
2.如果提示申请成功,执行基本事件流3
3.等待辅导员销假
4.如果提示申请失败,执行基本事件流5
5.提示申请销假失败,请重新申请
UC—004查询请假记录
该用例的参与者为学生,学生通过系统提出请假记录查询,若查询成功,学生请假的记录将会显示在页面上。
1.学生发出查询请假记录,并等待系统验证
2.如果提示验证成功,执行基本事件流3
3.显示请假记录
4.如果提示验证失败,执行基本事件流5
5.提示查询失败或者无请假记录,请重新申请
系统设计
该系统分为3个部分,第一部分是登录,学生和教师都需要登录,第二部分是学生端,学生端3个功能学生申请请假、学生申请销假、查询个人请假记录,第三个部分是教师端,教师端3个功能教师批准请假申请、教师批准销假申请、教师查询学生请假记录。
2.2.1顺序图
图登录时序图
图学生请假申请时序图
图学生销假申请时序图
图学生请假查询时序图
2.2.2类图
图类图
2.2.3系统体系结构设
图体系结构图
该系统包括基本的3各模块,登录、学生端、教师端。
学生和教师在登录成功时分别进入不同的页面进行操作,学生端进行请假申请、销假申请、查询个人请假;
教师审批请假、审批销假、查询学生请假记录。
设计时序图
图登录设计时序图
该图是学生端登录设计时序图,首先学生发送请求到控制类,然后跳出登录页面,学生填写登录信息并提交到控制类,控制类封装数据创建对象调用逻辑层进行数据校验并返回结果,逻辑层调用DAO层最终根据结果判断如果登录成功将跳转到学生端主页,如果登录失败将给以提示信息并请重新登录。
图请假申请设计时序图
该图是学生请假申请设计时序图,首先学生需要成功登录,发出请假申请,这时候控制类会自发调用逻辑层,逻辑层调用DAO层,如果该学生之前请过假并且未曾销假,这时该学生是不能够再请假的,倘若该学生发出请假申请,系统将会把该学生之前的请假未销假记录显示出来,如果没有未销假记录,将会显示请假申请页面,学生需要填写请假申请单将请假详细信息填写并提交倘若正确无误,系统将会提示请假申请成功。
图学生销假申请设计时序图
该图是学生销假申请设计时序图,在学生成功登录之后,学生在申请请假时候必须不存在未销假记录,所以在学生请假完成到校报到后必须进行销假,然而这时需要发出销假申请,这时候在业务逻辑层将会给予判断,如果销假申请成功将会提示申请成功,如果有错误将会提示申请失败或者不存在未销假记录。
数据库设计
数据库在该系统中是为了存储数据,学生所提交的请假记录是通过保存到数据库中来实现申请请假、销假等功能的,在我们目前所学的有限的知识内,没有数据库该系统是没法运行和实现的。
关系模式
(1)学生信息:
(学号、姓名、班级、性别、宿舍、联系方式、tag)
(2)教师信息:
(工号、姓名、联系方式、性别、年级、tag)
(3)登录:
(用户名(学号、工号),密码)
(4)请假信息:
(学号、姓名、事由、请假开始时间、请假结束时间、联系方式)
E-R图
E-R图在数据库设计里面是至关重要的一步,它是整个数据库设计的关键,下面使用实体联系(E-R)模型来描述系统的概念结构,设计出能够满足用户需求的各种实体,以及它们之间的关系,为后面的逻辑设计打下基础。
图E-R图
2.3.3表的设计
表用户登录信息表(login)
编号
字段名称
数据类型
约束条件
说明
1
userid
Varchar(14)
学号、工号
2
password
Varchar(12)
密码
3
Tag
Varchar
(2)
标志
该表是用户登录信息表,表中包括3个属性,用户名和密码、还有标志变量tag,tag是为了控制学生端和教师端,用户名分别为学号和教师的工号;
表学生信息表(Student)
sid
学号
Sname
Varchar(20)
Classes
班级
4
Ssex
Varchar(6)
性别
5
Sphone
联系电话
6
Dormitory
宿舍
7
该表是学生信息表,表中包括7个属性,都是字符串类型,其中tag标志变量默认为1,并且不可修改;
表教师信息表(teacher)
tid
工号
tname
Varchar(16)
tsex
Varchar(4)
grades
所带年级
tphone
电话
tag
该表是教师信息表,表中包括6个属性,都是字符串类型,教师也包括一个标志变量tag,也存在一个默认值为2,并且不能修改;
表请假信息表(leaverecords)
Starttime
date
开始时间
endtime
截止时间
Operate1
操作1
Operate2
操作2
8
reason
Varchar(255)
理由
该表示请假信息表,包括8个属性,其中有字符串和日期类型,操作1和操作2分别是默认值,其值是根据学生的请假申请成功,销假以及教师的审批有关。
第3章实现与测试
每一个项目的核心部分都是功能的实现,功能的完成标志着一个系统的完成,然而这些结果都需要一个需求和设计来作为基本的要求,以下就是该系统详细功能的实现过程:
需求分析:
需求分析阶段我采用了StarUML工具做了详细的分析,根据自己的需要画出了包图、时序图、用例图、类图、活动图、设计时序图等所需要的几类基本图,项目的框架是根据包图来创建的,时序图主要就是项目的每一个功能所要求的基本流程,设计时序图就是将时序图给详细化,具体到每一步所走的流程返回什么样的数据或者类型,也就是说画设计时序图时基本上已经把代码在脑子里有了型,用例图其实就是项目所有的功能,每一个用例就代表一个基本的功能,数据库的设计是根据类图来实现的,类图就表示了数据库中的表以及各表之间的关系。
界面设计:
用户界面设计要求友好合理,要充分考虑到用户的操作习惯,而且要有良好的显示效果。
此外界面的配色方案要协调,使用的主色,背景色,前景色,按钮大小,文字,格式,表格等要统一标准。
由于该系统主要用于公司人员管理的,所以界面框架的主色采用较为严肃的浅蓝色,在此基础上用到了PhotoShop技术,dreamweaver以及css和Javascript等,里面的登录那个信息是一个图片用ps加工修改写上了艺术字,界面的代码是在dreamweaver里面直接设计好的,然后将代码复制粘贴过去,因为在dreamweaver里面设计的界面在MyEclipse里面是不能运行的,需要一个脚本来支持,所以只需要在MyEclipse里面建好jsp页面只需将dreamweaver里面body里面的东西复制粘贴到MyEclipse里面就可以运行了;
每一个界面里面都有一个表格,表格里面有许多其他的元素之类,比如:
按钮,标题,下拉框等许多细小的知识,外面有一个表单,这个表单是必须有的,他是为了在前台与后连接时候提交一个数据来运行这个项目的;
在这些界面里面,时间是用js来完成的,统一的css样式表;
还有就是在查询过程中将所显示的数据设置为某一属性他将无法在查询显示这个页面来任意修改一些信息
功能描述:
首先这个系统除了界面其他的代码分别写在5个包中,第一个DO包,它里面从某种意义上说在这个包里面的每一个类都是创建某一个实例的方法,它里面定义了相对属性,以及get()和set()方法;
第二个是DAO包,它里面是对于每一个管理模块的一些基本小的功能的实现,说白了主要就是增删改查之类的它是对数据库语句的一个应用;
第三个包是DB包,这个包可以说是只为了一件事,就是数据库的连接,之所以这样写专门用一个包来写关于数据库的连接目的只是为了看到数据与的封装,体现一个面向对象的思考,从而在某些方面也能够减少代码的重复率,提高代码的可读性;
第四个包是control包,这个包是最重要的,因为在web应用开发的过程中每一个项目要想与前台数据连接并能够成功把数据相互传递,servelet里面有两个方法,一个是doGet(),一个是doPost(),两者最大的区别就是前者对数据没有保密,就是随时都会泄露一些重要的信息,因为每一提交的表单都会随着浏览器的浏览网址显示出来,然而要想从前台获得数据,就好比添加员工就得用到客户端所发出的请求()得到。
第五个包是BO包,这个是业务逻辑层,主要是调用DAO包里面的方法,数据校验等功能。
在该系统中我主要完成的是学生端的功能,以下为学生端的功能:
请假申请功能
在学生请假申请这个功能里面其实所做的就是对数据的添加,界面是简单采用了CSS样式的界面,如果学生登录成功点击申请请假,如果该学生存在未销假记录系统将会把该学生的未销假记录显示出来,如果不存在未销假记录,此时学生请假信息界面会显示出来,在学生填写完请假信息出发右下方的一个提交按钮,倘若提交成功会提示申请成功,如果失败会跳转到信息填写页面并提示错误信息。
3.1.1活动图
图学生申请请假活动图
3.1.2界面
图学生请假申请页面
3.1.3代码
publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
("
UTF-8"
);
text/html;
charset=UTF-8"
Stringstr="
已销假"
;
Stringtype=("
type"
LeaveRecordDOld=null;
LeaveRecordDOlrd=newLeaveRecordDO();
StudentBOsb=newStudentBO();
if("
add"
)){
("
sname"
));
sid"
sphone"
starttime"
)));
endtime"
reason"
Stringresults=(lrd);
if(results==null){
Stringid=("
ld=(str,id);
if(ld==null){
(lrd);
../"
).forward(request,response);
return;
}else{
("
ld"
ld);
}
}else{
("
message"
results);
return;
}
}
3.1.4测试用例
表
序号
功能模块
测试数据
预期结果
请假申请
姓名:
韩一正
学号:
123
电话:
理由:
回家
申请成功
3.2请假记录查询
在学生请假记录查询里面和学生请假申请基本是一样的,这个实际上的就是对数据库里面的数据的一个查询,并将查询记录显示到网页上,如果不存在请假记录,将不会显示任何记录。
界面
图请假记录
代码
HttpSessionsession=();
username"
("
ArrayList<
LeaveRecordDO>
list=(ArrayList<
)("
list"
list);
("
return;
测试用例
请假查询
查询成功
登录功能
登录是该项目最基本的一个功能,这其实也是一个查询,只不过是根据数据库中的数据和从网页中得到的数据进行对比,如果匹配成功将会进入到另外一个页面,如果登录失败将会进行提示并重新登录,登录过程中在后台数据中定义了标志变量来表示学生和教师,所以在登录时候根据这个属性来判断登录成功后跳转到学生端还是教师端。
登录过程中进行了简单的数据校验,就是说用户名和密码不能为空,倘若为空将会提示错误信息并提醒重新登录。
LoginDOld=newLoginDO();