基于java的学生考勤信息管理系统设计【附源码】

基于java的学生考勤信息管理系统设计
摘 要
学生考勤信息管理系统用于实现学校对在校学生的考勤信息的管理,是典型的管理信息系统。学生考勤信息的手工登记查询,是一项非常繁重而枯燥的劳动。在计算机技师飞速发展的今天,应用数据库技术实现学生考勤信息统计的管理是行之有效的。
本文系统地介绍了一个基于java的学生考勤信息管理系统,论述了一个基于java的B/S考勤信息管理系统的设计原理、设计思想及具体的实现过程,对部分架构及设计思想和设计过程作了详细阐述。系统具有师生个人信息管理、请假、增删师生信息等功能,信息管理模块、考勤管理模块和考勤系统模块。
本系统开发主要包括后台数据库的建立以及前端应用程序的开发两部分。其一要求建立起的数据库具有完整性和一致性,并具有一定的数据安全性;其二要求程序界面友好、功能完备,通俗易懂。本次发采用HTML、JSP、JS、STRUCTS1、SQL Server 2005数据库等技术。本文着重讨论了用JSP技术和SQL Server 2005开发考勤管理系统时的数据库访问技术和动态网页制作技术,并给出了部分实现代码。
关键词:考勤信息管理系统;java ;B/S ;SQL server
Based on java & B/S Student Attendance Information Management System Design
Abstract
Student Attendance Information Management System is a typical management information systemused for implementingthe schoolsto manage their studentsattendance information in school.Student attendance information manual registration query is a very heavy and tedious work.In today’srapid development of computer technology,the application of database technology could be effective used on it.
This article systematically introducesand discusses a student attendance information management system and B/Sattendance information management systembased onjava, which include the design theory, design philosophy and specific implementation process. The system contains many functions like personal information management of teachers and students, leave cases, additions and deletions. It also divided into information management module, attendance management module, attendance system module and so on.
The development of this system, including the establishment of database and front-end application development.In the one hand, it demands the database established with integrity and consistencyand a certain degree of data security. In the other hand, it should have the friendly program interface, fully functioning and easy to understand. This development uses HTML, JSP, JS, STRUCTS1, SQL Server 2000 database technology. This article focuses on the production technology using JSP technology development and SQL Server 2000 Attendance Management System database access technology and dynamic web pages, and given part of the code.
Key word: attendance information management system ;java ;B/S ;SQL server 
1前 言
1.1研究背景
随着社会的发展,计算机科学日渐成熟,计算机越来越深入到我们的日常生活中,成为我们不可或缺的辅助工具。其强大的功能已为人们深刻认识,它已进入人类社会的各个领域,并发挥这越来越重要的作用,各行各业的人们无须经过特别的训练就能够使用计算机完成许许多多复杂的工作。
随着我国人口的增长,高校的生源也日益增加。学校考勤信息的管理作为高校管理的一项日常工作,也随着学生人数的管理而变得繁琐起来。与此同时,计算机技术的发展也是与时俱进一日千里,于是,使用计算机代替人工记录管理学生的考勤信息自然而然的进入了人们的视野里。
1.2选题目的及意义
本系统的运行在Window XP 操作系统下,利用Jsp、Js与Structs1进行开发;采用Microsoft SQL Server 数据库进行学生信息的存储和处理。《学生考勤信息管理系统》包括老师课上考勤、学生请假、师生交互等功能,可以有效的提高学生考勤管理的服务质量。
本系统的操作使用方式符合选课管理员和师生的一般习惯,具备操作灵活,使用方便等特点。用Microsoft SQL Server 的作为数据库后台支持,可以方便的进行各种数据存储、查询和处理,所开发出的系统安全可靠。使用起来通俗易懂。
1.3研究内容
  为了开发出真正满足用户需要的软件产品,首先必须要知道用户的需求。目前有许多不同的用于需求分析的结构化分析方法,但是,所有的方法都遵循以下准则:
必须理解并描述问题的信息域;
必须定义软件应完成的功能;
必须描述作为外部事件结果的软件行为;
必须对描述信息、功能和行为进行分解,用层次方式展示细节;
在开始系统设计前,进行可行性研究是必不可少的一个环节。可行性研究的目的不是解决问题,而是确定问题是否值得去解决。所以我们就要通过对消费管理系统的可行性研究,来判断出原定的系统目标和规模是否现实,以及系统完成后所能带来的效益是否大到值得投资开发这个系统的程度。
学生考勤信息管理系统的信息量非常庞大,其中对学生信息的采集和分析统计的工作也非常繁琐。本系统的功能和传统手工考勤模式相比较,毫无疑问会大大提高了信息管理的效率,辅助提高工作人员的工作效率,加强学生信息的统一管理和及时查询。同时在计算机上提供一个全面的管理系统平台,使管理员和老师更加快捷、方便、全面地统计查询学生的考勤情况,同时也对学生进行统一管理,可对学生的信息进行查询。学生考勤信息系统就是作为实现信息现代化管理的重要平台,具有非常好的市场前景。
开发此考勤管理系统主要用到的技术:jsp、java、SOL数据库,是基于WINDOWS的系统。由于jsp、java、SOL数据库都是比较成熟技术,所以在技术上是可行的。
具体要求如下:
◆了解考勤管理系统基本运行流程;
◆掌握java、jsp和B/S开发技术;
◆熟练应用SQL server 2005设计数据库;
◆实现用户信息管理的功能
◆实现用户信息维护的功能
◆实现请假管理的功能
◆实现考勤管理的功能
2 系统开发环境与相关技术
2.1开发技术及开发工具简介
1、Jsp技术构造系统分析
JSP是Java Server Pages的简称,它是由Sun公司于1999年6月推出,是基于Java Servlet以及整个Java体系的Web开发技术。作为J2EE体系中的重要一环,JSP为创建高度动态的Web应用提供了一个独特的开发环境。JSP能够适应市场上包括Apache JDBC是用于执行SQL语句的Java应用程序接口,由一组用Java语言编写的类与接口组成,在JSP中将使用JDBC来访问数据库。JDBC是一种规范,它让各数据库厂商为Java程序员提供标准的数据库访问类和接口,这用就使得开发独立于DBMS的Java应用程序成为可能。一般的Java开发工具都带有JDBC-ODBC桥驱动程序,这样,只要是能够使用ODBC访问的数据库系统,也就能够使用JDBC访问了。
2、SQL server 2005数据库开发工具简介
SQL Server 是一个关系数据库管理系统,它最初是由Microsoft Sybase 和Ashton-Tate三家公司共同开发的,于1988 年推出了第一个OS/2 版本。在Windows NT 推出后,Microsoft与Sybase 在SQL Server 的开发上就分道扬镳了。Microsoft 将SQL Server 移植到Windows NT系统上,专注于开发推广SQL Server 的Windows NT 版本。
该版本继承了SQL Server 7.0 版本的优点同时又比它增加了许多更先进的功能,具有使用方便,可伸缩性好与相关软件集成程度高等优点,可跨越从运行Microsoft Windows 98 的膝上型电脑到运行Microsoft Windows 2000 的大型多处理器的服务器等多种平台使用。它有以下特点:.可伸缩性和可用性,并且易于安装、部署和使用。
3、B/S模式简介
B/S(Browser/Server浏览器/服务器)模式又称B/S结构。B/S模式是指在TCP/IP的支持下,以HTTP为传输协议,客户端通过Browser访问Web服务器以及与之相连的后台数据库的技术及体系结构。它由浏览器、Web服务器、应用服务器和数据库服务器组成。客户端的浏览器通过URL访问Web服务器,Web服务器请求数据库服务器,并将获得的结果以HTML形式返回客户端浏览器。
它是随着Internet技术的兴起,对C/S模式应用的扩展。在这种结构下,用户工作界面是通过IE浏览器来实现的。相较于C/S模式的系统升级维护复杂来说, B/S模式最大的好处是运行维护比较简便, 能实现不同的人员从不同的地点,以不同的接入方式(比如LAN, WAN, Internet/Intranet等)访问和操作共同的数据。另外,B/S还便于面向广大未知用户使用,因为只要电脑安装了IE,经过一定的设置,就都可以使用,如建立企业网站发布信息。
2.2运行环境
本系统主要Windows XP环境下运行,数据库管理系统(DBMS)是SQL Server 2005,动态网页以 JSP(Java Server Pages)来建立系统。
2.3系统设计思想及处理流程
1、系统应符合学生考勤信息管理系统的规定,满足管理工作需要,并达到操作过程中的直观,方便,实用,安全等要求。
2、系统采用B/S体系结构,动态网页客户端负责表达逻辑,显示用户界面信息,数据库服务器SQL Server 2005则用于提供后台数据服务。
3、系统采用模块化程序设计方法,便于系统功能的各种组合和修改。
4、系统应具备数据库维护功能,及时根据用户需求进行数据的添加,删除,修改操作。
3系统需求分析
3.1系统可行性研究分析
可行性分析是在进行初步调查后所进行的对系统开发必要性和可能性的研究,所以也称为可行性研究。信息系统也应从技术可行性,经济可行性和社会可行性三方面来论证。通过长时间的观察与实践,我认为学生考勤信息管理系统的可行性分析如下:
(1)经济可行性分析
开发该系统只需一台主机,会Jsp+SOL,了解windows操作系统,在开发的时间内(三个月内),所需的成本不多,开发该系统完全可行。
(2)技术可行性分析
技术上的可行性分析主要分析现有技术条件能否顺利完成开发工作,硬件、软件配置能否满足开发者的需要,各类技术人员的数量,水平,来源等。消费管理系统的工作主要是在用户和管理员之间架起一座桥梁,能相互了解信息和处理信息。这一特点非常适合计算机的人机特点,用户可通过登陆方式使用系统,并在系统上查找自己想要的所有内容。这时计算机就为用户提供信息传输速度快、准确度高的优势。随着计算机硬件和软件技术的飞速发展,这就为系统的建设提供了技术条件。
(3)社会可行性分析
在当前信息技术飞速发展的大环境下,计算机技术和软件技术的更新是考勤信息管理系统完全有可能也有能力采用这样先进的管理技术。它对考勤信息管理系统带来的影响可以看到:对传统管理理念的冲击,可能引起管理层的变动和人员的调整。对管理工作人员的要求提高,使消费管理系统在一定的可能下进行人员精简,迫使工作人员继续学习新知识,拓宽计算机在市场环境下的生存空间。对计算机与用户之间业务方式的转变和扩充开发。
该系统是独立完成的,而且开发的学校自己用的,不是商业软件,不会因版权等问题产生法律问题。
3.2可行性分析报告
把可行性分析的最后成果整理成书面的形式,这就是可行性分析报告。可行性分析报告包括下列内容:
①考勤信息管理系统近期和长远目标,新系统的总体目标及主要功能
②主要问题和主要信息需求:
③拟订新系统方案
④从经济、技术、社会等方面论证方法的可行性
可行性分析报告是系统开发人员经过初步调查与可行性研究后所做的工作总结,反映了开发人员对建立新系统的看法。必须认真起草,并通过系统分析人员的集体讨论,然后提交。
3.3系统开发具体研究分析
要建立新的考勤信息管理系统,就必须对现行的管理系统进行全面、细致而充分的调查研究。具体采用直接面谈和专门访问并参加业务实践,与工作人员一起完成最基本的工作程序的方法。
原来考勤信息管理系统处理中心进行信息管理的主要方式是基于手工处理,信息处理工作量大,容易出错,缺乏系统、规范的信息管理手段。现在准备建立的考勤信息管理系统,要把客户的相关管理工作实行计算机统一管理,以提高工作效率和管理水平。
本系统从以下几个方面对用户的需求进行分析。
(1)系统的需求分析:可以进行数据的采集,学生的管理,对考勤记录的查询。
(2)对数据的安全性、可靠性要求:系统各项数据信息必须保证安全性和可靠性。
(3)定时整理数据:系统管理员根据学生的历史考勤信息定时整理系统数据库,并将运行结果归档。
4系统总体设计
消费管理系统是一个典型的数据库应用程序,由系统设置模块、消费人员管理模块、消费数据采集模块,报表查询模块等模块组成,允许管理员操作相应的菜单,从而实现数据信息的添加,修改,删除,查询,打印,统计等功能。
4.1系统总体功能层次图
1、基于java的B/S学生考勤信息管理系统是提供系统管理员、老师和学生使用的信息管理系统。基于java的B/S学生考勤信息系统功能结构图如下

4.1.1 请假审核
表4-1请假审核
输入 请假信息(学号、请假时间、请假原因、申请时间,审批情况,审批时间)
处理流程

输出 将该记录更新到数据库,并将该审核情况信息显示
4.1.2考勤情况
表4-2考勤情况
输入 学生信息(学号、姓名、性别、考勤结果)、时间、节次
处理流程

输出 将该记录插入数据库
4.1.3考勤修改
表4-3修改考勤
输入 学生信息(学号、姓名、性别、考勤结果)、时间、节次
处理流程

输出 将该记录插入数据库,并将个人选课情况显示
4.1.4退出系统
该模块的主要功能是退出考勤信息管理系统。
4.2总结
通过对总体设计的分析规划,我们对程序的总体设计有了充分认识,对系统的各部分模块有了总体的认识,我们下一步所做的工作就是应该进行数据库的设计及系统设计。
5数据库设计
消费管理系统采用了Microsoft推出的SQL Server2005作为后台数据库
5.1数据库需求分析
在设计数据库结构时,以及可能地满足用户所提出的各项要求,同时又避免同时又要避免冗余数据产生。由于在考勤信息管理系统中,需要采集大量的信息,包括学生个人信息,考勤记录等,如果不能够合理有效地组织数据表的结构,以及合理设置每张表所包含的字段,那么后期进行的数据的整理以及汇总时,就会增加编程人员的开发难度,并造成成绩效益的大幅度下降。
角色设计将整个使用考勤信息管理系统分为多个不同角色,采用比较人性化的系统权限分配方式,一般有学生、老师以及管理员。
如表5-1所示
表5-1
权限 描述
学生 对个人信息的管理、请假申请、考勤统计
班主任 对个人信息的管理、对学生请假进行审批、考勤统计
任课老师 对个人信息的管理、请假查看、考勤管理
院领导 对个人信息的管理、考勤统计
管理员 对人员信息的管理、请假管理、考勤管理
5.2数据库表
(1)loginuser(用户表)
表4-5 用户表的结构
字段名 数据类型 长度 空 主键 外键 备注
account文本 10 N Y
password文本 10
type数字 4 N 登录类型
(2)specialty(专业表)
表4-6专业表的结构
字段名 数据类型 长度 空 主键 外键 备注
sid数字 4 N Y 专业Id
sname文本 30 专业名
(3)student(学生)
表4-7学生表的结构
字段名 数据类型 长度 空 主键 外键 备注
sno文本 10 N Y
sname 文本15 N
sclass 文本 10
sex 文本 2
birthplace 文本 40
tel 文本 15
professional 数字 4
email 文本 20
note文本 50
(4)teacher(老师表)
表4-8老师表的结构
字段名 数据类型 长度 空 主键 外键 备注
tno文本 10 N Y
tname 文本15 N
sex 文本 2
seniority 数字 4
birhtplace 文本 40
tel 文本 15
professional 数字 4
email 文本 20
note文本 50
type数字 50
(5)course(登录用户视图)
表4-9课程的结构
字段名 数据类型 长度 空 主键 外键 备注
CNO数字 1 N Y
CNAME 文本45 N
CREATETIME日期
(6)attendance(考勤表)
表4-10考勤表的结构
字段名 数据类型 长度 空 主键 外键 备注
id文本 11 N Y
sno 文本15 N
cno 数字 11
shijian 文本 2
jieci 数字 11
statues文本 1
(7)qjmx (请假表)
表4-11请假表的结构
字段名 数据类型 长度 空 主键 外键 备注
id文本 10 N Y
sno 文本15 N
beginDate 文本 2
beginJC 数字 4
endDate 文本 40
endJC 文本 15
reason 数字 4
statues 文本 20
note文本 50
apptime文本 50
sptime文本 50
spz文本 50
6 系统实现
6.1密码修改
(1)程序描述
该模块是涉及到安全性的一个模块,同时也是比较重要的模块。
(2) 功能
表5-1 密码修改功能表
程序名称 密码修改
相关数据库表 LOGINUSER
输入 旧密码、新密码
输出 将修改结果显示
程序处理说明 1.输入旧密码和新密码
2.验证旧密码是否正确
3.验证新密码与重密码是否一致
4.将该记录插入数据库
(3)程序流程图

图6-1 密码修改程序流程图
(4)测试计划
1)旧密码为空或错误时,则显示旧密码不能为空或错误。
2)新密码和重密码为空或不一致时,则提示新密码和重密码不能为空或要求一致。
3)输入的信息都完整且符合条件时,则显示密码修改完成。
6.2请假
1)程序描述
该模块是最重要最核心的一个模块,请假审批模块、考勤模块都是围绕这个模块做的。
(2) 功能
表6-2 请假申请功能表
程序名称 申请课题
相关数据库表 QJMX
输入 请假信息(学号、请假开始时间、请假开始节次、请假结束时间、请假结束节次、原因、申请时间)
输出 将该学生的所有请假信息显示
程序处理说明 1.输入请假信息
2.验证必填内容是否填满
3.将该记录插入数据库
(3)程序流程图

图5-2 申请课题程序流程图
(4)测试计划
1)必填项目未填满时,则提示要填写该项目。
2)输入的信息都完整且符合条件时,则显示全部请假申请。
6.3请假审批
(1)程序描述
该模块是比较重要的一个模块,考勤管理模块都是在这个模块配合完成。
(2) 功能
表6-3请假审批功能表
程序名称 课题审核
相关数据库表 QJMX
输入 请假信息(学号、请假开始时间、请假开始节次、请假结束时间、请假结束节次、原因、申请时间)、审核状态
输出 将该审核情况信息显示
程序处理说明 1.审核状态、备注
2.审核状态输入完显示审核情况
3.将该记录插入数据库
(3)程序流程图

图6-3 请假审核程序流程图
(4)测试计划
1)当审核状态为0时,会显示待审核。
2)输入审核状态后,则显示审核信息的状态。
(5)关键代码
String sql = “UPDATE qjmx SET statues = ? ,note = ? ,sptime = ?,spz = ? WHERE id = ?”;
DBUnit dbUnit = new DBUnit(SQL_CLASSNAME, SQL_URL, SQL_USERNAME,
SQL_PASSWORD);
ArrayList list = new ArrayList();
list.add(status);
list.add(note);
list.add(new Date());
list.add(tname);
list.add(qjid);
6.4考勤录入
(1)程序描述
该模块是系统的目的所在,是非常重要的一个模块。
(2) 功能
表6-4 考勤录入功能表
程序名称 考勤录入
相关数据库表 attendance
输入 考勤信息(学号、课程号、时间、节次)、考勤状态
输出 将个人选课情况显示
程序处理说明 1.输入时间信息、课程信息
2.验证课程是否已考勤
3.将该记录插入数据库
(3)程序流程图

图6-4 课程考勤程序流程图
(4)测试计划
1)选择班级时,则显示该班级所有学生。
2)当考勤已进行,则显示该节课已考勤。
3)当学生考勤状态为旷课,则显示旷课状态
(5)关键代码
String sql = “SELECT * FROM CA_STATUS WHERE SHIJIAN = ? AND JIECI = ? and zy=?”;
result=dbUnit.batchUpdateAutoClose(conn,“insertintoattendance(sno,cno,shijian,jieci,statues) values(?,?,?,?,?)”, list);
result=dbUnit.updateAutoClose(“insert into CA_STATUS(shijian,jieci,zy,bj) values(?,?,?,?)”, list1);
6.5考勤修改
(1)程序描述
该模块扩大了考勤的灵活度。
(2) 功能
表6-5 考勤信息修改功能表
程序名称 学生考勤情况、考核表
相关数据库表 attendance、ca_status
输入 考勤信息(学号、课程号、时间、节次、考勤)、修改状态
输出 将个人选课情况显示
程序处理说明 1.输入时间信息、班级信息
2.验证该节次是否已进行考核
3.将该记录插入数据库
(3)程序流程图

图6-5 考勤信息修改程序流程图
(4)测试计划
1)当学生为旷课专题,则显示旷课。
2)当该节次未进行考核,则可以提示未进行考勤。
(5)关键代码
String sql = “SELECT * FROM CA_STATUS WHERE SHIJIAN = ? AND JIECI = ? and zy=?”;
result = dbUnit.batchUpdateAutoClose(conn, “delete from attendance where sno = ? and cno = ? and shijian = ? and jieci = ? and ?<>0”, list);
result = dbUnit.batchUpdateAutoClose(conn, “insert into attendance(sno,cno,shijian,jieci,statues) values(?,?,?,?,?)”, list);
7 系统维护与测试
7.1系统的维护
系统维护的目的是保证考勤信息管理系统正常而可靠地运行,并能使系统不断得到改善和提高,以充分发挥作用。换言之,系统维护就是为了保证系统中的各个要素随着环境的变化始终处于最新的、正确的工作状态。系统维护的工作量往往是很大的,其费用大约占整个生命周期的60%,所以我们必须对系统维护给予足够的重视。
1、系统维护的内容
按照系统维护对象的不同,系统维护的内容可分为以下几类:
(1)系统应用程序维护
(2)数据维护
(3)代码维护
(4)硬件设备维护
2、系统维护的类型
系统维护的重点是系统应用软件的维护工作,按照软件维护的不同性质,可以划分为下面四种类型:
(1)纠错性维护 诊断和修正系统中遗留的错误。
(2)适应性维护 使系统适用环境的变化而进行的维护。
(3)完善性维护 为满足用户的需求而进行的维护。
(4)预防性维护 为将要发生的变化或调整而进行的主动性维护。
3、系统维护的组织与管理
系统维护工作,首先必须建立一个维护组织,确定进行维护工作所应遵循的原则和规范化的过程,此外还应建立一套适用于具体系统维护过程的文档及管理措施,以及进行复审的标准。
7.2系统测试
在java开发过程中采用了多种措施保证软件质量,但是实际开发过程中还是不可避免地会产生差错,系统中通常可能隐藏着错误和缺陷,未经周密测试的系统投入运行,将会造成难以想象的后果,因此系统测试是开发过程中为保证软件质量必须进行的工作。大量统计资料表明,系统测试的工作量往往占开发总工作量的40%以上。因此,我们必须重视测试工作。
由于程序中隐藏的缺陷只在特定的环境下才有可靠显露,系统缺陷通常是由于对某些特定情况考虑不周造成的。因此测试不是为了表明程序正确;成功的测试也不是没有发现错误的测试。有意义的软件测试应该是从“破坏”软件系统的角度出发,精心设计最有可以暴露程序系统缺陷的测试方案。因此软件测试的目标应该是以尽可能少的代价和时间找出软件系统中潜在的错误和缺陷。
从产品角度看,测试计划中的测试项目包括软件结构中的分系统层、子系统层、功能模块层、程序模块层中的各类模块,从测试本身看,分为单元测试,组合测试,确认测试等。测试对象是随着阶段而异的,最基本、最初的测试是单元测试,后面的组合测试、确认测试都是以被测过的模块作为测试对象的。
在具体的测试中,一般应遵循以下原则:由程序设计者之外的人进行测试;测试用例应由两部分组成:输入数据和预期输出结果;应选用不合理的输入数据与非法输入测试;不仅要检验程序是否实现预期功能,还应检查程序是否做了不应该做的工作;集中测试容易出错的程序模块;对程序修改以后,必须重新进行测试。
在开发本系统时,为了使系统能够稳定运行,对本系统进行了有针对性的全面测试,采取的方式是:
(1)菜单项测试:为了保证每一项下拉菜单能够正确实现系统设计的功能,我把相关的基础数据,基本上全部输入到本系统中,并对每一个菜单项多次进行了增加、删除、修改等操作,从而保证了菜单功能的正确实现。
(2)数据跟踪:完成菜单项测试后,我又对系统内的每一个数据进行了跟踪。经过实践证实,说明该功能完全正常,对其它的功能模块也进行了类似的设置。
(3)综合测试:在以上测试的基础上对系统功能进行了整体的测试,依次检验系统功能是否符合系统设计的要求。
结 论
本论文详述了基于java的B/S学生考勤信息系统设计与实现的整个开发流程,本设计是对本人在大学四年所学知识的综合考验,在开发过程中,本人对软件开发的认识有了进一步的提高,对软件应用程序开发流程有了深刻地了解,这些都在我以后的学习工作中有了很大的帮助。
系统的制作已经完成了。虽然它没有投入到学校的选课系统中,但是它的功能是完全可以实现简单的选课,同时操作性强,具有人性化。
这过程真的不容易,特别是在遇到一个问题的时候,真的会让人无时无刻都在想着那个问题的解决方法,无形中减少了很多的自由时间,但是每当把问题解决的时候,就会觉得所有的一切都是值得的。特别是在需求分析的阶段很多时候都没有考虑完整,导致我到后面要改很多。所以一定要先分析清楚想好需求,否则会做很多的无用功。在这里我将系统设计做如下总结:
●系统完成情况:
本系统的功能已经达到设计的要求。系统中各个模块的功能均已实现,为整体系统的构建奠定了基础。
系统中模块划分明确,模块功能设计有较强的针对性。
系统的设计遵循软件开发的全过程,使我对软件系统的开发过程有了更深刻的认识和了解。
●系统不足之处:
系统中整个背景样式还可以做的更加动感,更加美观,在这方面的学习还有待加强。
系统中老师考勤的时候需要手动选择课程,以后可以考虑把科目跟教师绑定。可以更方便的进行考勤。
系统只局限于计算机系,没有涉及其他系,这样只能系部管理,如果可以把全校的专业系别都加入,校部进行管理,这样会更加方便学校进行管理。
系统中考勤统计如果以图表方式展现会更直观。
考勤管理系统到这里才告一个段落,还不仅仅是到此就结束了,以后还有很多的功能要添加进来,到后面还要添加志愿管理,全校专业的管理等等功能,对于一个专业的考勤管理软件,仅仅只有这些功能还是不够的。
在出去实习之前,JS对于我来说还是一个非常陌生的东西,从我进入软件编程这一行到我去学用JS来编程,同时辅助JSP来编程,整个过程是很有收获的。在这整个过程当中我有很多很深刻的体会,同时也学到了非常多的东西。
就本次的毕业设计而言,在学到了新的东西的同时,也发现了大量的问题,在慢慢解决这些问题的时候,我学到的东西是最多的。以后继续走编程这条路碰到的问题还会更多,但同时也会有更多的收获。
虽然这次的设计还有有缺陷,但是它是我一个人独立完成,很大的增强了我的自信心,同时使我更加坚定了编程这条路。
参考文献
[1]赵卓君:《java程序设计基础教程》.北京:清华大学出版社,2010
[2]闪四清.SQL Server实用简明教程[M].清华大学出版社,2005
[3] 杨学瑜,王志军,刘同利.JSP入门与提高[M].清华大学出版社,2002
[4] 廖望,何俊,谢春旺,钟永生,黄智诚.SQL Server 2000案例教程[M].冶金工业出版社,2004.
[5] Java基础教程—(从问题分析到程序设计).马里克、莱欧著,郭平译.北京:清华大学出版社,2004.10
[6] 连洪武.Eclipse Web开发从入门到精通[M].清华大学出版社,2007.6.
[7] 耿祥义,张跃平.JSP实用教程(第2版)[M].清华大学出版社,2007.10.
[8] 萨师煊,数据库系统概述. 高等教育出版社. 2006.5
[9] 李雁领:《数据库技术及应用》[M],高等教育出版社,200
谢 辞
本次的毕业课题设计是我大学生活中经历的又一段忙碌而充实的时光。在将近三个月的时间里,我学到了很多的东西,不仅掌握到了更多的理论知识,扩展了知识面,提高了自己的实际操作能力,而且学会了如何去学习新的知识,学会了面对困难和挑战,学会了团结合作,互帮互助。借此论文之际,向所有帮助、关心、支持我的老师、朋友同学,表达最真诚的谢意。
首先感谢北京理工大学珠海学院四年来对我的培养与教导,同时也感谢计算机学院的项目团队,在加入项目团队以来,我在项目实践方面得到锻炼,积累了丰富的知识,培养了严谨的逻辑思考能力,专业能力进一步提高,动手实践能力也得到进一步提高,这也为我今天的毕业设计的完成奠定了扎实的基础。
本论文是在胡敬朋老师的耐心指导下完成的。在此,我对他的耐心指导和帮助表达我最真诚的谢意,感谢他在这几个月来为我们的毕业设计所付出的努力。在这段时间里,我从他身上,不仅学到了许多的专业知识,更感受到了他工作中的兢兢业业,生活中的平易近人和教学中的热情豪迈,让我学到了很多在课本上没有学到的知识。
毕业设计项目的顺利完成,离不开各位老师和同学的支持和帮助,同时也离不开我的实习公司东信和平,在整个本设计开展过程中,我感谢他们问我的毕业设计提出了宝贵的建议和意见,使我的设计得到进一步的完善并最终得以完成,在此,我再次向他们表示真挚的谢意。另外还要感谢我的父母,为我的学业提供了物质和精神,没有他们的付出,就没有今天的我。
总之,在以后的学习、工作、生活中我将更加努力,用自己的行动回报社会、父母、学校、老师及同学。最后感谢关心和帮助过作者的所有老师与同学。并向参与此次答辩的老师致以谢意。
附 录
附录1
程序源代码
//登录====//
/**

  • 是否登录成功,并返回用户类型
  • @param uid
  •        用户名
    
  • @param password
  •        密码
    
  • @return
  • @throws Exception
    /
    public User isLoginSuccess(String uid,String password) throws Exception{
    User user = null;
    if(uidnull||passwordnull){
    ;
    }else{
    DBUnit dbUnit = new DBUnit(SQL_CLASSNAME,SQL_URL,SQL_USERNAME,SQL_PASSWORD);
    ArrayList list = new ArrayList();
    list.add(uid);
    list.add(password);
    ResultSet res = dbUnit.queryAutoClose(“select * FROM LOGINUSER where ACCOUNT = ? and password = ?”,list);
    if(res.next()){
    user = new User();
    int type = res.getInt(“type”);
    String name = res.getString(“NAME”);
    user.setUid(uid);
    user.setType(type);
    user.setUsername(name);
    }
    }
    return user;
    }
    //=人员信息列表===//
    public List getStudent(){
    List list = null ;
    String sql = "SELECT STUDENT.
    ,specialty.sname as zy,classname " +
    “FROM STUDENT,specialty,class " +
    “WHERE specialty.SID = STUDENT.professional” +
    " and class.zyid = STUDENT.professional and class.id = student.sclass” ;
    DBUnit dbUnit = new DBUnit(SQL_CLASSNAME,SQL_URL,SQL_USERNAME,SQL_PASSWORD);
    try {
    ResultSet rs = dbUnit.queryAutoClose(sql);
    if(rs!=null){
    list = new ArrayList();
    while(rs.next()){
    String sno = rs.getString(“SNO”) ;
    String sname = rs.getString(“SNAME”);
    String sex = rs.getString(“SEX”);
    String jg = rs.getString(“birthplace”);
    int zyid = rs.getInt(“professional”);
    String zy = rs.getString(10);
    String tel = rs.getString(“TEL”);
    String email = rs.getString(“EMAIL”);
    String note = rs.getString(“NOTE”);
    String sclass = rs.getString(“classname”);
    Student student = new Student();
    student.setBirthplace(jg);
    student.setEmail(email);
    student.setNote(note);
    student.setSclass(sclass);
    student.setSex(sex);
    student.setTel(tel);
    student.setSname(sname);
    student.setSno(sno);
    Specialty s = new Specialty();
    s.setId(zyid);
    s.setName(zy);
    student.setProfessional(s);
    list.add(student);
    }
    }
    } catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }finally{
    return list ;
    }
    }
    //增加用户//
    public boolean addStudentDao(Student student) throws Exception{
    String sql = “insert into student values(?,?,?,?,?,?,?,?,?)” ;
    boolean suc = false;
    DBUnit dbUnit = new DBUnit(SQL_CLASSNAME,SQL_URL,SQL_USERNAME,SQL_PASSWORD);

ArrayList list = new ArrayList();
list.add(student.getSno());
list.add(student.getSname());
list.add(student.getSclass());
list.add(student.getSex());
list.add(student.getBirthplace());
list.add(student.getTel());
list.add(student.getProfessional().getId());
list.add(student.getEmail());
list.add(student.getNote());

if(dbUnit.updateAutoClose(sql,list)){
suc=true;
sql = “INSERT INTO LOGINUSER(ACCOUNT,PASSWORD,NAME,TYPE) VALUES(?,?,?,?)” ;
ArrayList list1 = new ArrayList();
list1.add(student.getSno());
list1.add(student.getSno());
list1.add(student.getSname());
list1.add(5);
dbUnit.updateAutoClose(sql,list1);
}
return suc;
}
//=用户修改==//
public boolean updateStudentDao(Student student) throws Exception{
String sql = “update student set sname= ?, sclass = ?, sex = ?, birthplace = ?, tel = ?, professional = ?, email = ?, note = ? where sno = ?” ;
boolean suc = false;
DBUnit dbUnit = new DBUnit(SQL_CLASSNAME,SQL_URL,SQL_USERNAME,SQL_PASSWORD);
ArrayList list = new ArrayList();
list.add(student.getSname());
list.add(student.getSclass());
list.add(student.getSex());
list.add(student.getBirthplace());
list.add(student.getTel());
list.add(student.getProfessional().getId());
list.add(student.getEmail());
list.add(student.getNote());
System.out.println(“------------”+student.getSno());
list.add(student.getSno());

if(dbUnit.updateAutoClose(sql,list))
suc=true;
return suc;
}
//用户删除//
public boolean deleteStudentDao(String sno) throws Exception{
String sql = “delete from student where sno = ?” ;
boolean suc = false;
DBUnit dbUnit = new DBUnit(SQL_CLASSNAME,SQL_URL,SQL_USERNAME,SQL_PASSWORD);
ArrayList list = new ArrayList();
list.add(sno);

if(dbUnit.updateAutoClose(sql,list)){
suc=true;
}
System.out.println(suc+“222”);
return suc;
}
//请假列表//
public List getQjxxByTeacher(String tno){
List qjxxList = null ;
ArrayList list = new ArrayList();
boolean result = false ;
list.add(tno);
String sql = “SELECT b.id,A.SNO,A.SNAME,B.BEGINDATE,B.BEGINJC,B.ENDDATE,B.ENDJC,B.REASON,B.STATUES,B.APPTIME”+
" FROM STUDENT A,QJMX B,TEACHER C"+
" WHERE A.SNO = B.SNO AND C.professional = A.professional"+
" AND A.SCLASS = C.CLASS AND C.TNO = ?";
DBUnit dbUnit = new DBUnit(SQL_CLASSNAME,SQL_URL,SQL_USERNAME,SQL_PASSWORD);
ResultSet res;
try {
res = dbUnit.queryAutoClose(sql,list);
if(res!=null&&res.next()){
qjxxList = new ArrayList();
res.previous();
while(res.next()){

QjxxBean qjxx = new QjxxBean();
String id = res.getString(“id”);
String sno = res.getString(“sno”);
String sname = res.getString(“sname”);
String kssj = res.getString(“BEGINDATE”);
String ksjc = res.getString(“BEGINJC”);
String jssj = res.getString(“ENDDATE”);
String jsjc = res.getString(“ENDJC”);
String content = res.getString(“REASON”);
int zt = res.getInt(“STATUES”);
String sqsj = res.getString(“APPTIME”);

Student student = new Student();
student.setSno(sno);
student.setSname(sname);
qjxx.setId(id);
qjxx.setBeginDate(kssj);
qjxx.setBeginJC(ksjc);
qjxx.setEndDate(jssj);
qjxx.setEndJC(jsjc);
qjxx.setContent(content);
qjxx.setStatus(zt);
qjxx.setSqsj(sqsj);

qjxx.setStudent(student);
qjxxList.add(qjxx);
}

}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
return qjxxList ;
}

}
//请假申请//
public boolean qjAppl(String beginDate,String beginJC,String endDate,String endJC,String content,String sno) {
boolean res = false;
String sql = “insert into qjmx(sno,begindate,beginjc,enddate,endjc,reason,statues,apptime) VALUES (?,?,?,?,?,?,0,?)”;
DBUnit dbUnit = new DBUnit(SQL_CLASSNAME, SQL_URL, SQL_USERNAME,
SQL_PASSWORD);
try {

ArrayList al = new ArrayList();
al.add(sno);
al.add(beginDate);
al.add(beginJC);
al.add(endDate);
al.add(endJC);
al.add(content);
al.add(new Date());
dbUnit.updateAutoClose(sql, al); //
res = true;
} catch (Exception e) {
e.printStackTrace();

} finally {
return res;
}
}
//请假审批//
public void updateQjxxsp(int status,String note,String qjid,String tname){
String sql = “UPDATE qjmx SET statues = ? ,note = ? ,sptime = ?,spz = ? WHERE id = ?”;
DBUnit dbUnit = new DBUnit(SQL_CLASSNAME, SQL_URL, SQL_USERNAME,
SQL_PASSWORD);
ArrayList list = new ArrayList();
list.add(status);
list.add(note);
list.add(new Date());
list.add(tname);
list.add(qjid);

try {
dbUnit.updateAutoClose(sql, list);
} catch (Exception e) {
e.printStackTrace();
}
}
//考勤//
public boolean addKqxx(String sj,String jc,String zy,String bj,String kc,Map khxx) throws Exception{
boolean iskq = isKCKq(sj,jc,zy,bj);
if(iskq==false){
DBUnit dbUnit = new DBUnit(SQL_CLASSNAME,SQL_URL,SQL_USERNAME,SQL_PASSWORD);
boolean result = true;
Set set =khxx.entrySet();
Iterator it=set.iterator();
ArrayList list = new ArrayList();
ArrayList list1 = new ArrayList();

list1.add(sj);
list1.add(jc);
list1.add(zy);
list1.add(bj);
while(it.hasNext()){
ArrayList sub = new ArrayList();
Map.Entry entry= (Entry) it.next();
String sno = entry.getKey() ;
String sta = entry.getValue();
sub.add(sno);
sub.add(kc);
sub.add(sj);
sub.add(jc);
sub.add(sta);
list.add(sub);
}
Connection conn = dbUnit.getConnetion();
try {
result = dbUnit.batchUpdateAutoClose(conn, “insert into attendance(sno,cno,shijian,jieci,statues) values(?,?,?,?,?)”, list);
result = dbUnit.updateAutoClose(“insert into CA_STATUS(shijian,jieci,zy,bj) values(?,?,?,?)”, list1);
} catch (Exception e) {
System.err.println(“插入考勤情况失败”);
e.printStackTrace();
}
return result;
}else {
return false;
}
}

你可能感兴趣的:(Java,java,开发语言)