• 695.00 KB
  • 2022-05-17 13:40:26 发布

基于java学生考勤管理系统.doc

  • 45页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
基于java的学生考勤信息管理系统设计摘要学生考勤信息管理系统用于实现学校对在校学生的考勤信息的管理,是典型的管理信息系统。学生考勤信息的手工登记查询,是一项非常繁重而枯燥的劳动。在计算机技师飞速发展的今天,应用数据库技术实现学生考勤信息统计的管理是行之有效的。本文系统地介绍了一个基于java的学生考勤信息管理系统,论述了一个基于java的B/S考勤信息管理系统的设计原理、设计思想及具体的实现过程,对部分架构及设计思想和设计过程作了详细阐述。系统具有师生个人信息管理、请假、增删师生信息等功能,信息管理模块、考勤管理模块和考勤系统模块。本系统开发主要包括后台数据库的建立以及前端应用程序的开发两部分。其一要求建立起的数据库具有完整性和一致性,并具有一定的数据安全性;其二要求程序界面友好、功能完备,通俗易懂。本次发采用HTML、JSP、JS、STRUCTS1、SQLServer2005数据库等技术。本文着重讨论了用JSP技术和SQLServer2005开发考勤管理系统时的数据库访问技术和动态网页制作技术,并给出了部分实现代码。关键词:考勤信息管理系统;java;B/S;SQLserver Basedonjava&B/SStudentAttendanceInformationManagementSystemDesignAbstractStudentAttendanceInformationManagementSystemisatypicalmanagementinformationsystemusedforimplementingtheschoolstomanagetheirstudentsattendanceinformationinschool.Studentattendanceinformationmanualregistrationqueryisaveryheavyandtediouswork.Intoday"srapiddevelopmentofcomputertechnology,theapplicationofdatabasetechnologycouldbeeffectiveusedonit.ThisarticlesystematicallyintroducesanddiscussesastudentattendanceinformationmanagementsystemandB/Sattendanceinformationmanagementsystembasedonjava,whichincludethedesigntheory,designphilosophyandspecificimplementationprocess.Thesystemcontainsmanyfunctionslikepersonalinformationmanagementofteachersandstudents,leavecases,additionsanddeletions.Italsodividedintoinformationmanagementmodule,attendancemanagementmodule,attendancesystemmoduleandsoon.Thedevelopmentofthissystem,includingtheestablishmentofdatabaseandfront-endapplicationdevelopment.Intheonehand,itdemandsthedatabaseestablishedwithintegrityandconsistencyandacertaindegreeofdatasecurity.Intheotherhand,itshouldhavethefriendlyprograminterface,fullyfunctioningandeasytounderstand.ThisdevelopmentusesHTML,JSP,JS,STRUCTS1,SQLServer2000databasetechnology.ThisarticlefocusesontheproductiontechnologyusingJSPtechnologydevelopmentandSQLServer2000AttendanceManagementSystemdatabaseaccesstechnologyanddynamicwebpages,andgivenpartofthecode.Keyword:attendanceinformationmanagementsystem;java;B/S;SQLserver  目录1前言11.1研究背景11.2选题目的及意义11.3研究内容12系统开发环境与相关技术32.1开发技术及开发工具简介32.2运行环境42.3系统设计思想及处理流程43系统需求分析53.1系统可行性研究分析53.2可行性分析报告53.3系统开发具体研究分析64系统总体设计74.1系统总体功能层次图74.1.1请假审核84.1.2考勤情况84.1.3考勤修改94.1.4退出系统94.2总结95数据库设计105.1数据库需求分析105.2数据库表106系统实现146.1密码修改146.2请假156.3请假审批16(1)程序描述166.4考勤录入176.5考勤修改197系统维护与测试217.1系统的维护217.2系统测试22结论23参考文献25谢辞26 附录27 1前言1.1研究背景随着社会的发展,计算机科学日渐成熟,计算机越来越深入到我们的日常生活中,成为我们不可或缺的辅助工具。其强大的功能已为人们深刻认识,它已进入人类社会的各个领域,并发挥这越来越重要的作用,各行各业的人们无须经过特别的训练就能够使用计算机完成许许多多复杂的工作。随着我国人口的增长,高校的生源也日益增加。学校考勤信息的管理作为高校管理的一项日常工作,也随着学生人数的管理而变得繁琐起来。与此同时,计算机技术的发展也是与时俱进一日千里,于是,使用计算机代替人工记录管理学生的考勤信息自然而然的进入了人们的视野里。1.2选题目的及意义本系统的运行在WindowXP操作系统下,利用Jsp、Js与Structs1进行开发;采用MicrosoftSQLServer数据库进行学生信息的存储和处理。《学生考勤信息管理系统》包括老师课上考勤、学生请假、师生交互等功能,可以有效的提高学生考勤管理的服务质量。本系统的操作使用方式符合选课管理员和师生的一般习惯,具备操作灵活,使用方便等特点。用MicrosoftSQLServer的作为数据库后台支持,可以方便的进行各种数据存储、查询和处理,所开发出的系统安全可靠。使用起来通俗易懂。1.3研究内容  为了开发出真正满足用户需要的软件产品,首先必须要知道用户的需求。目前有许多不同的用于需求分析的结构化分析方法,但是,所有的方法都遵循以下准则:必须理解并描述问题的信息域;必须定义软件应完成的功能;必须描述作为外部事件结果的软件行为;必须对描述信息、功能和行为进行分解,用层次方式展示细节; 在开始系统设计前,进行可行性研究是必不可少的一个环节。可行性研究的目的不是解决问题,而是确定问题是否值得去解决。所以我们就要通过对消费管理系统的可行性研究,来判断出原定的系统目标和规模是否现实,以及系统完成后所能带来的效益是否大到值得投资开发这个系统的程度。学生考勤信息管理系统的信息量非常庞大,其中对学生信息的采集和分析统计的工作也非常繁琐。本系统的功能和传统手工考勤模式相比较,毫无疑问会大大提高了信息管理的效率,辅助提高工作人员的工作效率,加强学生信息的统一管理和及时查询。同时在计算机上提供一个全面的管理系统平台,使管理员和老师更加快捷、方便、全面地统计查询学生的考勤情况,同时也对学生进行统一管理,可对学生的信息进行查询。学生考勤信息系统就是作为实现信息现代化管理的重要平台,具有非常好的市场前景。开发此考勤管理系统主要用到的技术:jsp、java、SOL数据库,是基于WINDOWS的系统。由于jsp、java、SOL数据库都是比较成熟技术,所以在技术上是可行的。具体要求如下:u了解考勤管理系统基本运行流程;u掌握java、jsp和B/S开发技术;u熟练应用SQLserver2005设计数据库;u实现用户信息管理的功能u实现用户信息维护的功能u实现请假管理的功能u实现考勤管理的功能 2系统开发环境与相关技术2.1开发技术及开发工具简介1、Jsp技术构造系统分析JSP是JavaServerPages的简称,它是由Sun公司于1999年6月推出,是基于JavaServlet以及整个Java体系的Web开发技术。作为J2EE体系中的重要一环,JSP为创建高度动态的Web应用提供了一个独特的开发环境。JSP能够适应市场上包括ApacheJDBC是用于执行SQL语句的Java应用程序接口,由一组用Java语言编写的类与接口组成,在JSP中将使用JDBC来访问数据库。JDBC是一种规范,它让各数据库厂商为Java程序员提供标准的数据库访问类和接口,这用就使得开发独立于DBMS的Java应用程序成为可能。一般的Java开发工具都带有JDBC-ODBC桥驱动程序,这样,只要是能够使用ODBC访问的数据库系统,也就能够使用JDBC访问了。2、SQLserver2005数据库开发工具简介SQLServer是一个关系数据库管理系统,它最初是由MicrosoftSybase和Ashton-Tate三家公司共同开发的,于1988年推出了第一个OS/2版本。在WindowsNT推出后,Microsoft与Sybase在SQLServer的开发上就分道扬镳了。Microsoft将SQLServer移植到WindowsNT系统上,专注于开发推广SQLServer的WindowsNT版本。该版本继承了SQLServer7.0版本的优点同时又比它增加了许多更先进的功能,具有使用方便,可伸缩性好与相关软件集成程度高等优点,可跨越从运行MicrosoftWindows98的膝上型电脑到运行MicrosoftWindows2000的大型多处理器的服务器等多种平台使用。它有以下特点:.可伸缩性和可用性,并且易于安装、部署和使用。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运行环境本系统主要WindowsXP环境下运行,数据库管理系统(DBMS)是SQLServer2005,动态网页以JSP(JavaServerPages)来建立系统。2.3系统设计思想及处理流程1、系统应符合学生考勤信息管理系统的规定,满足管理工作需要,并达到操作过程中的直观,方便,实用,安全等要求。2、系统采用B/S体系结构,动态网页客户端负责表达逻辑,显示用户界面信息,数据库服务器SQLServer2005则用于提供后台数据服务。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推出的SQLServer2005作为后台数据库5.1数据库需求分析在设计数据库结构时,以及可能地满足用户所提出的各项要求,同时又避免同时又要避免冗余数据产生。由于在考勤信息管理系统中,需要采集大量的信息,包括学生个人信息,考勤记录等,如果不能够合理有效地组织数据表的结构,以及合理设置每张表所包含的字段,那么后期进行的数据的整理以及汇总时,就会增加编程人员的开发难度,并造成成绩效益的大幅度下降。角色设计将整个使用考勤信息管理系统分为多个不同角色,采用比较人性化的系统权限分配方式,一般有学生、老师以及管理员。如表5-1所示表5-1权限描述学生对个人信息的管理、请假申请、考勤统计班主任对个人信息的管理、对学生请假进行审批、考勤统计任课老师对个人信息的管理、请假查看、考勤管理院领导对个人信息的管理、考勤统计管理员对人员信息的管理、请假管理、考勤管理5.2数据库表(1)loginuser(用户表)表4-5用户表的结构字段名数据类型长度空主键外键备注account文本10NYpassword文本10type数字4N登录类型(2)specialty(专业表)表4-6专业表的结构 字段名数据类型长度空主键外键备注sid数字4NY专业Idsname文本30专业名(3)student(学生)表4-7学生表的结构字段名数据类型长度空主键外键备注sno文本10NYsname文本15Nsclass文本10sex文本2birthplace文本40tel文本15professional数字4email文本20note文本50(4)teacher(老师表)表4-8老师表的结构字段名数据类型长度空主键外键备注tno文本10NYtname文本15Nsex文本2seniority数字4birhtplace文本40tel文本15professional数字4email文本20note文本50type数字50 (5)course(登录用户视图)表4-9课程的结构字段名数据类型长度空主键外键备注CNO数字1NYCNAME文本45NCREATETIME日期(6)attendance(考勤表)表4-10考勤表的结构字段名数据类型长度空主键外键备注id文本11NYsno文本15Ncno数字11shijian文本2jieci数字11statues文本1(7)qjmx(请假表)表4-11请假表的结构字段名数据类型长度空主键外键备注id文本10NYsno文本15NbeginDate文本2beginJC数字4endDate文本40endJC文本15reason数字4statues文本20note文本50apptime文本50 sptime文本50spz文本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)关键代码Stringsql="UPDATEqjmxSETstatues=?,note=?,sptime=?,spz=?WHEREid=?";DBUnitdbUnit=newDBUnit(SQL_CLASSNAME,SQL_URL,SQL_USERNAME,SQL_PASSWORD);ArrayListlist=newArrayList();list.add(status);list.add(note);list.add(newDate());list.add(tname);list.add(qjid);6.4考勤录入(1)程序描述该模块是系统的目的所在,是非常重要的一个模块。(2)功能表6-4考勤录入功能表程序名称考勤录入相关数据库表attendance输入考勤信息(学号、课程号、时间、节次)、考勤状态输出将个人选课情况显示程序处理说明1.输入时间信息、课程信息2.验证课程是否已考勤3.将该记录插入数据库(3)程序流程图 图6-4课程考勤程序流程图(4)测试计划1)选择班级时,则显示该班级所有学生。2)当考勤已进行,则显示该节课已考勤。3)当学生考勤状态为旷课,则显示旷课状态(5)关键代码Stringsql="SELECT*FROMCA_STATUSWHERESHIJIAN=?ANDJIECI=?andzy=?";result=dbUnit.batchUpdateAutoClose(conn,"insertintoattendance(sno,cno,shijian,jieci,statues)values(?,?,?,?,?)",list);result=dbUnit.updateAutoClose("insertintoCA_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)关键代码 Stringsql="SELECT*FROMCA_STATUSWHERESHIJIAN=?ANDJIECI=?andzy=?";result=dbUnit.batchUpdateAutoClose(conn,"deletefromattendancewheresno=?andcno=?andshijian=?andjieci=?and?<>0",list);result=dbUnit.batchUpdateAutoClose(conn,"insertintoattendance(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学生考勤信息系统设计与实现的整个开发流程,本设计是对本人在大学四年所学知识的综合考验,在开发过程中,本人对软件开发的认识有了进一步的提高,对软件应用程序开发流程有了深刻地了解,这些都在我以后的学习工作中有了很大的帮助。系统的制作已经完成了。虽然它没有投入到学校的选课系统中,但是它的功能是完全可以实现简单的选课,同时操作性强,具有人性化。这过程真的不容易,特别是在遇到一个问题的时候,真的会让人无时无刻都在想着那个问题的解决方法,无形中减少了很多的自由时间,但是每当把问题解决的时候,就会觉得所有的一切都是值得的。特别是在需求分析的阶段很多时候都没有考虑完整,导致我到后面要改很多。所以一定要先分析清楚想好需求,否则会做很多的无用功。在这里我将系统设计做如下总结:l系统完成情况:Ø本系统的功能已经达到设计的要求。系统中各个模块的功能均已实现,为整体系统的构建奠定了基础。Ø系统中模块划分明确,模块功能设计有较强的针对性。Ø系统的设计遵循软件开发的全过程,使我对软件系统的开发过程有了更深刻的认识和了解。l系统不足之处:Ø系统中整个背景样式还可以做的更加动感,更加美观,在这方面的学习还有待加强。Ø系统中老师考勤的时候需要手动选择课程,以后可以考虑把科目跟教师绑定。可以更方便的进行考勤。Ø系统只局限于计算机系,没有涉及其他系,这样只能系部管理,如果可以把全校的专业系别都加入,校部进行管理,这样会更加方便学校进行管理。Ø系统中考勤统计如果以图表方式展现会更直观。考勤管理系统到这里才告一个段落,还不仅仅是到此就结束了,以后还有很多的功能要添加进来,到后面还要添加志愿管理,全校专业的管理等等功能,对于一个专业的考勤管理软件,仅仅只有这些功能还是不够的。 在出去实习之前,JS对于我来说还是一个非常陌生的东西,从我进入软件编程这一行到我去学用JS来编程,同时辅助JSP来编程,整个过程是很有收获的。在这整个过程当中我有很多很深刻的体会,同时也学到了非常多的东西。就本次的毕业设计而言,在学到了新的东西的同时,也发现了大量的问题,在慢慢解决这些问题的时候,我学到的东西是最多的。以后继续走编程这条路碰到的问题还会更多,但同时也会有更多的收获。虽然这次的设计还有有缺陷,但是它是我一个人独立完成,很大的增强了我的自信心,同时使我更加坚定了编程这条路。 参考文献[1]赵卓君:《java程序设计基础教程》.北京:清华大学出版社,2010[2]闪四清.SQLServer实用简明教程[M].清华大学出版社,2005[3]杨学瑜,王志军,刘同利.JSP入门与提高[M].清华大学出版社,2002[4]廖望,何俊,谢春旺,钟永生,黄智诚.SQLServer2000案例教程[M].冶金工业出版社,2004.[5]Java基础教程—(从问题分析到程序设计).马里克、莱欧著,郭平译.北京:清华大学出版社,2004.10[6]连洪武.EclipseWeb开发从入门到精通[M].清华大学出版社,2007.6.[7]耿祥义,张跃平.JSP实用教程(第2版)[M].清华大学出版社,2007.10.[8] 萨师煊,数据库系统概述.高等教育出版社.2006.5[9] 李雁领:《数据库技术及应用》[M],高等教育出版社,200 谢辞本次的毕业课题设计是我大学生活中经历的又一段忙碌而充实的时光。在将近三个月的时间里,我学到了很多的东西,不仅掌握到了更多的理论知识,扩展了知识面,提高了自己的实际操作能力,而且学会了如何去学习新的知识,学会了面对困难和挑战,学会了团结合作,互帮互助。借此论文之际,向所有帮助、关心、支持我的老师、朋友同学,表达最真诚的谢意。首先感谢北京理工大学珠海学院四年来对我的培养与教导,同时也感谢计算机学院的项目团队,在加入项目团队以来,我在项目实践方面得到锻炼,积累了丰富的知识,培养了严谨的逻辑思考能力,专业能力进一步提高,动手实践能力也得到进一步提高,这也为我今天的毕业设计的完成奠定了扎实的基础。本论文是在胡敬朋老师的耐心指导下完成的。在此,我对他的耐心指导和帮助表达我最真诚的谢意,感谢他在这几个月来为我们的毕业设计所付出的努力。在这段时间里,我从他身上,不仅学到了许多的专业知识,更感受到了他工作中的兢兢业业,生活中的平易近人和教学中的热情豪迈,让我学到了很多在课本上没有学到的知识。毕业设计项目的顺利完成,离不开各位老师和同学的支持和帮助,同时也离不开我的实习公司东信和平,在整个本设计开展过程中,我感谢他们问我的毕业设计提出了宝贵的建议和意见,使我的设计得到进一步的完善并最终得以完成,在此,我再次向他们表示真挚的谢意。另外还要感谢我的父母,为我的学业提供了物质和精神,没有他们的付出,就没有今天的我。总之,在以后的学习、工作、生活中我将更加努力,用自己的行动回报社会、父母、学校、老师及同学。最后感谢关心和帮助过作者的所有老师与同学。并向参与此次答辩的老师致以谢意。 附录附录1程序源代码//========================登录============================///***是否登录成功,并返回用户类型**@paramuid*用户名*@parampassword*密码*@return*@throwsException*/publicUserisLoginSuccess(Stringuid,Stringpassword)throwsException{Useruser=null;if(uid==null||password==null){;}else{DBUnitdbUnit=newDBUnit(SQL_CLASSNAME,SQL_URL,SQL_USERNAME,SQL_PASSWORD);ArrayListlist=newArrayList();list.add(uid);list.add(password);ResultSetres=dbUnit.queryAutoClose("select*FROMLOGINUSERwhereACCOUNT=?andpassword=?",list);if(res.next()){user=newUser();inttype=res.getInt("type");Stringname=res.getString("NAME");user.setUid(uid);user.setType(type);user.setUsername(name); }}returnuser;}//=======================人员信息列表=========================//publicListgetStudent(){Listlist=null;Stringsql="SELECTSTUDENT.*,specialty.snameaszy,classname"+"FROMSTUDENT,specialty,class"+"WHEREspecialty.SID=STUDENT.professional"+"andclass.zyid=STUDENT.professionalandclass.id=student.sclass";DBUnitdbUnit=newDBUnit(SQL_CLASSNAME,SQL_URL,SQL_USERNAME,SQL_PASSWORD);try{ResultSetrs=dbUnit.queryAutoClose(sql);if(rs!=null){list=newArrayList();while(rs.next()){Stringsno=rs.getString("SNO");Stringsname=rs.getString("SNAME");Stringsex=rs.getString("SEX");Stringjg=rs.getString("birthplace");intzyid=rs.getInt("professional");Stringzy=rs.getString(10);Stringtel=rs.getString("TEL");Stringemail=rs.getString("EMAIL");Stringnote=rs.getString("NOTE");Stringsclass=rs.getString("classname");Studentstudent=newStudent();student.setBirthplace(jg);student.setEmail(email);student.setNote(note);student.setSclass(sclass); student.setSex(sex);student.setTel(tel);student.setSname(sname);student.setSno(sno);Specialtys=newSpecialty();s.setId(zyid);s.setName(zy);student.setProfessional(s);list.add(student);}}}catch(Exceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}finally{returnlist;}}//========================增加用户========================//publicbooleanaddStudentDao(Studentstudent)throwsException{Stringsql="insertintostudentvalues(?,?,?,?,?,?,?,?,?)";booleansuc=false;DBUnitdbUnit=newDBUnit(SQL_CLASSNAME,SQL_URL,SQL_USERNAME,SQL_PASSWORD);ArrayListlist=newArrayList();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="INSERTINTOLOGINUSER(ACCOUNT,PASSWORD,NAME,TYPE)VALUES(?,?,?,?)";ArrayListlist1=newArrayList();list1.add(student.getSno());list1.add(student.getSno());list1.add(student.getSname());list1.add(5);dbUnit.updateAutoClose(sql,list1);}returnsuc;}//=======================用户修改========================//publicbooleanupdateStudentDao(Studentstudent)throwsException{Stringsql="updatestudentsetsname=?,sclass=?,sex=?,birthplace=?,tel=?,professional=?,email=?,note=?wheresno=?";booleansuc=false;DBUnitdbUnit=newDBUnit(SQL_CLASSNAME,SQL_URL,SQL_USERNAME,SQL_PASSWORD);ArrayListlist=newArrayList();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;returnsuc;}//========================用户删除========================//publicbooleandeleteStudentDao(Stringsno)throwsException{Stringsql="deletefromstudentwheresno=?";booleansuc=false;DBUnitdbUnit=newDBUnit(SQL_CLASSNAME,SQL_URL,SQL_USERNAME,SQL_PASSWORD);ArrayListlist=newArrayList();list.add(sno);if(dbUnit.updateAutoClose(sql,list)){suc=true;}System.out.println(suc+"222");returnsuc;}//========================请假列表========================//publicListgetQjxxByTeacher(Stringtno){ListqjxxList=null;ArrayListlist=newArrayList();booleanresult=false;list.add(tno);Stringsql="SELECTb.id,A.SNO,A.SNAME,B.BEGINDATE,B.BEGINJC,B.ENDDATE,B.ENDJC,B.REASON,B.STATUES,B.APPTIME"+"FROMSTUDENTA,QJMXB,TEACHERC"+"WHEREA.SNO=B.SNOANDC.professional=A.professional"+"ANDA.SCLASS=C.CLASSANDC.TNO=?";DBUnitdbUnit=newDBUnit(SQL_CLASSNAME,SQL_URL,SQL_USERNAME,SQL_PASSWORD);ResultSetres; try{res=dbUnit.queryAutoClose(sql,list);if(res!=null&&res.next()){qjxxList=newArrayList();res.previous();while(res.next()){QjxxBeanqjxx=newQjxxBean();Stringid=res.getString("id");Stringsno=res.getString("sno");Stringsname=res.getString("sname");Stringkssj=res.getString("BEGINDATE");Stringksjc=res.getString("BEGINJC");Stringjssj=res.getString("ENDDATE");Stringjsjc=res.getString("ENDJC");Stringcontent=res.getString("REASON");intzt=res.getInt("STATUES");Stringsqsj=res.getString("APPTIME");Studentstudent=newStudent();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(Exceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}finally{returnqjxxList;}}//========================请假申请========================//publicbooleanqjAppl(StringbeginDate,StringbeginJC,StringendDate,StringendJC,Stringcontent,Stringsno){booleanres=false;Stringsql="insertintoqjmx(sno,begindate,beginjc,enddate,endjc,reason,statues,apptime)VALUES(?,?,?,?,?,?,0,?)";DBUnitdbUnit=newDBUnit(SQL_CLASSNAME,SQL_URL,SQL_USERNAME,SQL_PASSWORD);try{ArrayListal=newArrayList();al.add(sno);al.add(beginDate);al.add(beginJC);al.add(endDate);al.add(endJC);al.add(content);al.add(newDate());dbUnit.updateAutoClose(sql,al);//res=true;}catch(Exceptione){e.printStackTrace(); }finally{returnres;}}//========================请假审批========================//publicvoidupdateQjxxsp(intstatus,Stringnote,Stringqjid,Stringtname){Stringsql="UPDATEqjmxSETstatues=?,note=?,sptime=?,spz=?WHEREid=?";DBUnitdbUnit=newDBUnit(SQL_CLASSNAME,SQL_URL,SQL_USERNAME,SQL_PASSWORD);ArrayListlist=newArrayList();list.add(status);list.add(note);list.add(newDate());list.add(tname);list.add(qjid);try{dbUnit.updateAutoClose(sql,list);}catch(Exceptione){e.printStackTrace();}}//========================考勤========================//publicbooleanaddKqxx(Stringsj,Stringjc,Stringzy,Stringbj,Stringkc,Mapkhxx)throwsException{booleaniskq=isKCKq(sj,jc,zy,bj);if(iskq==false){DBUnitdbUnit=newDBUnit(SQL_CLASSNAME,SQL_URL,SQL_USERNAME,SQL_PASSWORD);booleanresult=true;Setset=khxx.entrySet();Iteratorit=set.iterator(); ArrayListlist=newArrayList();ArrayListlist1=newArrayList();list1.add(sj);list1.add(jc);list1.add(zy);list1.add(bj);while(it.hasNext()){ArrayListsub=newArrayList();Map.Entryentry=(Entry)it.next();Stringsno=entry.getKey();Stringsta=entry.getValue();sub.add(sno);sub.add(kc);sub.add(sj);sub.add(jc);sub.add(sta);list.add(sub);}Connectionconn=dbUnit.getConnetion();try{result=dbUnit.batchUpdateAutoClose(conn,"insertintoattendance(sno,cno,shijian,jieci,statues)values(?,?,?,?,?)",list);result=dbUnit.updateAutoClose("insertintoCA_STATUS(shijian,jieci,zy,bj)values(?,?,?,?)",list1);}catch(Exceptione){System.err.println("插入考勤情况失败");e.printStackTrace();}returnresult;}else{returnfalse;} }