• 1.14 MB
  • 2022-04-22 13:44:35 发布

学生在线考勤系统的设计与实现毕业论文.doc

  • 44页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'学生在线考勤系统的设计与实现毕业论文目录摘要1ABSTRACT11绪论21.1系统设计的背景21.2系统设计的主要意义21.3论文的结构22相关技术和理论基础32.1JSP简介32.2Mysql简介32.3MVC简介32.4Tomcat简介42.5系统结构模式43系统需求分析53.1系统功能概述53.2可行性分析63.2.1开发的必要性63.2.2开发的可行性64系统设计74.1总体框架设计74.1.1系统布局设计74.1.2总体结构图84.1.3程序流程图84.2数据库设计94.2.1数据库需求分析94.2.2数据库概念结构设计104.2.3数据库逻辑设计114.2.4数据流图135系统实现145.1系统功能流程图145.2登录模块实现15 5.3后台管理模块实现155.3.1管理员登录功能实现155.3.2用户管理功能实现165.3.3课程安排功能实现185.3.4学年安排功能实现195.3.5出勤种类功能实现205.4考勤管理模块实现215.4.1查看学生信息功能实现215.4.2管理学生出勤功能实现215.4.3按条件查询学生出勤情况功能实现225.5请假管理模块实现235.5.1学生在线请假功能实现235.5.2教师审批学生请假功能实现245.5.3按条件查询请假情况功能实现256系统测试266.1测试的重要性及目的266.2测试过程266.2.1用户登陆测试266.2.2页面使用安全测试276.2.3系统主要功能测试27结束语29参考文献29附录30致谢42 滁州学院本科毕业设计学生在线考勤系统的设计与实现摘要:传统的学生考勤模式在目前高校学生管理中暴露出了许多弊端:如学生请假不方便;学生请假对任课教师不透明;学生对自己的整体出勤情况的统计信息缺乏了解;院系领导、学校领导不能及时掌握学生上课的出勤情况等。本课题针对上述问题,利用JSP和Mysql设计并实现了学生在线考勤系统。本系统包含三大功能模块:请假管理模块、考勤管理模块、后台管理模块。在系统的实现过程中还综合运用了页面模块化、信息发布的动态生成、静态页面显示等技术。通过使用本系统,任课教师可以在很短的时间内完成学生的考勤、学生的请假等,并将考勤信息存入数据库,方便以后对学生的评定,又可以节省考勤所耗费的时间,使之能够更好的完成教学任务。关键词:考勤管理;在线请假;JSP;MysqlDesignandImplementationofOnlineManagementSystemofStudentAttendanceAbstract:Thetraditionalpatternofstudentattendancemanagementincollegehasanumberofdrawbacks:Itisnotconvenientforstudenttoaskforleave;Theleaverequestsofstudentsarenon-transparentforteachers;Lackofthestatisticalinformationabouttheiroverallattendanceinonesemester;Facultyleaders,andschoolleaderscannotgettheinformationofstudentattendanceintime,andsoon.Toaddresstheseproblems,thisprojectdesignsandimplementstheonlinemanagementsystemofstudentattendance.Thissystemconsistsofthreefunctionalmodules:themoduleofaskingforleave,checkingmodule,andmanagementmodule.Inaddition,Inthesystemimplementationprocessisalsointegrateduseofthepagemodularity,informationdisseminationdynamicallygenerated,staticpagesdisplaytechnology.Byusingthissystem,classroomteachersinaveryshortperiodoftimetocompletethestudent"sattendance,leaveandotherstudents,andattendanceinformationintoadatabase,tofacilitatefutureassessmentofstudents,theycansavetimeandattendancetime-consuming,sobetterabletocompletethetaskofteaching.Keywords:attendancemanagement;onlineleave;JSP;Mysql42 滁州学院本科毕业设计绪论1.1系统设计的背景目前高校对学生的考勤主要是基于纸质的登记方式进行,教师在课堂上对学生考勤,考勤结果记录在表格上,每一次都由学生处和教务处收集教师考勤资料并进行统计,统计的结果送到班主任或院系领导。整个过程绝大部分都由手工完成,不仅工作量大,容易出错,并且需要一定的时间才能获得结果,班主任和院校领导不能及时获取学生的考勤详情,难以适应新形势下对学生的管理要求。随着计算机技术的应用,一些高校大学生对学生使用考勤软件进行上课情况的登记,但大多数都是单机版的,只能够在固定的位置来对学生进行考勤,不适合当前高校的管理模式。随着计算机网络的普及,高校都建立了校园网络,这使得在网络环境下对学生的考勤变成可能。在线考勤系统主要特点:远程管理、管理集中、兼容性强。  学生考勤系统是利用现代企业或社区内部已经普遍架设的局域网线路,把考勤系统融入成为局域网甚至是Internet的一部分,并且不需要另外安装客户端,只需要计算机上安装IE浏览器即可操作该系统。在线考勤系统实现了多种用户类型登陆,除了管理员能够进行人事、考勤、设备、数据的管理和报表查询外,普通成员也可以使用个人编号登陆系统进行个人资料修改和个人考勤情况查询,从而使普通成员能够方便及时的了解自己的考勤情况,减少管理人员的工作量,使考勤工作更加及时、透明。经过以上分析,本课题决定采用JSP[1]和Mysql开发该系统,并且选择MyEclipse为开发工具进行开发,Tomcat作为系统的测试服务器。1.2系统设计的主要意义传统的学生考勤管理暴露了很多的弊端:如在校学生请假不是很方便;班级学生请假时对任课的教师不够透明;院系领导、学校领导更加不能及时的了解学生的出勤状况等。采用Web技术[2]开发的学生在线考勤系统不仅能够满足高效管理学生的出勤情况,还能够提供学生在线请假,从而达到利用计算机系统,来提高效率、加快各种办公业务流程处理速度的目的,实现教学管理数字化、流程自动化、操作灵活,而不受地域、时间的约束,真正提高效率。在这种背景下,设计并实现一款在线学生考勤系统变得十分有意义。1.3论文的结构本文第1部分绪论主要说明了系统的设计背景、系统设计的主要意义。第2部分介绍了本文所用到的相关技术和理论基础。第3部分主要介绍系统的功能概述和可行性分析。第4部分主要阐述系统结构设计、总体框架设计和数据库设计的简要说明。第5部分详细介绍了系统各个功能模块,并简要描述了各个模块的功能。第6部分系统测试与数据分析,介绍了测试目标、方法以及测试结果。最后总结了该系统实现的主要功能及其需要进一步改进的地方。42 滁州学院本科毕业设计1相关技术和理论基础2.1JSP简介 JSP的全称是Java Servlet Pages,它是SUN推出的一种动态网页技术标准。它在传统的静态页面文件(*.html,*htm)中加入Java程序片段和JSP标记,就构成了JSP页面[3]。由Web服务器上的JSP引擎来处理JSP元素,生成调用Bean,并用JDBC访问数据库(或文件),最后以HTML或XML的形式返回浏览器[4]。JSP在Servlet类中编译,编译一次后存入内存,以后再调用时,不用再编译,所以速度很快。 此外JSP还具有以下优点:一次性编写,随处运行,除了系统之外,代码基本不做任何的更改;系统支持多平台;可伸缩性很强大;支持多样化的开发工具; 支持服务器端组件。2.2Mysql简介Mysql是一个关系型的数据库管理系统,由瑞典MysqlAB公司开发,目前属于Oracle公司。Mysql是一种关系数据库管理系统,关系数据库不是将所有的数据都存放在一个大仓库内,而是将数据保存在不同的表中[5],这样不仅增加了速度也提高了灵活性。Mysql的SQL语言是作为标准化语言来访问数据库的[6]。Mysql软件采用了双授权政策(本词条“授权政策”),它分为社区版和商业版,由于体积很小、速度较快、总成本低,特别是开源代码这一特点,一般中小型网站的开发都选择Mysql作为网站数据库。由于其社区版的性能卓越,搭配PHP和Apache可组成良好的开发环境。2.3MVC简介MVC(Model-View-Controller)即模型-视图-控制器。MVC设计模式的思想就是把Web应用[7]程序分为3个核心模块:模型(Model)、视图(View)、控制器(Controller)[7]。Model层包括业务逻辑代码与数据库代码;View层包括数据的展示代码,如HTML、CSS样式、JSP标签等;Controller层连接Model层与View层,从Model层获取数据,送到View层显示。MVC的结构如图2-1所示。图2-1MVC结构图通知数据更新控制器(Controller)视图(View)模型(Model)状态查询MVC作为一种分层规定、模块化的设计思想,它的优点有以下几方面:模型可以被重42 滁州学院本科毕业设计MVC的优点:(1)低耦合性,视图层和业务层分离,这样就允许更改视图层代码而不用重新编译模型和控制器代码,同样,一个应用的业务流程或者业务规则的改变只需要改动MVC的模型层即可。因为模型与控制器和视图相分离,所以很容易改变应用程序的数据层和业务规则。(2)高重用性和可适用性,随着技术的不断进步,现在需要用越来越多的方式来访问应用程序。MVC模式准许用户使用各种不同风格的视图来访问相同服务器端代码。例如,用户可以经过电脑也可经过手机来购买某种产品,虽然购买的方式不同,但程序处理订购产品的方式基本一样。比如,许多的数据可以使用HTML来表示,但是也可能是使用WAP,而这些表示所用到的指令是更改视图层的实现方式,而模型层与控制层并不需要做任何的改变。(3)比较低的生命周期成本,MVC不同程度的降低了开发和维护用户接口的技术含量。(4)快速部署,使用MVC模式使开发的时间得到了大大的减少,这使得程序员可以(Java开发人员)集中精力在业务逻辑层上,而界面程序员(HTML和JSP开发人员)可以把精力集中在表现形式上[8]。(5)可维护性上,分出视图层和业务逻辑层以后也使得WEB应用更容易维护和方便修改。(6)比较利于软件工程化的管理,由于每一层各司其职,而每一层不同的应用具有某些相似的特征,这就有利于通过工具化、工程化管理程序的代码。2.4Tomcat简介Tomcat服务器是一个免费的开放源码的Web应用服务器,属于轻量级别的应用服务器,在中小型系统与并发访问用户并不是很多场合下得到广泛的使用,是程序员开发和调试JSP程序的第一选择[9]。对于一个新手来说,可以这样说,当一台机器配置好Apache服务器,可以使用它来回应HTML页面的访问请求。其实Tomcat部分是Apache服务器的一个扩展,但它是独自运行的,所以当启动运行的时候,它实际上是与Apache独立的进程独自运行的。Tomcat深受大部分程序员的喜爱,因为它在运行时占用很少的系统资源,扩展性较好,支持负载平衡与邮件服务等开发应用系统比较常用的一些功能;而且它仍然在不断的改进和完善中,任何一个感兴趣的程序员都可以更改它或在其中加入新的功能。2.5系统结构模式管理信息系统平台结构模式大体上分为4种:主机终端模式、文件服务器模式、客户机/服务器模式(Clint/Server,简称C/S)、web浏览器/服务器模式(Browser/Server,简称B/S)。主机终端模式由于硬件选择有限,已被逐步淘汰。由于文件服务器模式硬件选择上很有限,硬件的投资上又得不到保证,已被逐步淘汰。文件服务器这种模式仅适合小规模式的局域网,对于多用户,数据量比较大的情况就会引起网络瓶颈,尤其在互联网上不能够满足用户的要求。因此,现代企业级平台结构模式应主要考虑C/S模式和B/S模式。42 滁州学院本科毕业设计(1)C/S模式及其特点C/S结构,即客户机和服务器结构。C/S模式主要由客户应用程序、服务器管理程序和中间件三部分组成。客户应用程序是系统中用户和数据间进行交互的部件。服务器程序则进行有效地管理系统资源,如管理一个信息数据库,其主要工作是当多个客户并发地请求服务器上的相同资源时,对这些资源进行最优化管理。中间件主要负责联结客户应用程序和服务器管理程序,协作完成作业,来满足用户查询、管理数据的要求。主要特点为:C/S模式将应用和服务分离开,使系统更具有稳定性与灵活性;C/S模式配备的是点对点的结构模式,适用于局域网,有很可靠的安全性;客户端实现和服务器端直接连接,没有中间的环节,因此响应速度较快;在C/S模式中,作为客户机的计算机需要安装相应的客户机程序,一旦软件升级,每一台客户机都需要安装客户机程序,系统升级和维护起来较为复杂。(2)B/S模式及其特点B/S模式即浏览器/服务器结构模式,是基于Internet/Intranet的结构模式,分三层,第一层是表示层,用户通过在浏览器完成与在后台的交互及最终的查询结果输出功能。第二层是具有ODBC接口的WEB服务器,属功能层,主要是利用服务器来完成客户的应用功能。第三层是数据层,根据客户相应请求进行独立地各种运算。即前台浏览器,中间Web服务器,后台数据库的方式。此种结构由用户在本地客户端Web页面发出请求到WebSever,再由WebSever向数据库发出相应请求,而最后中间件服务器接受来自数据库服务器的应答响应后,最终以页面的形式返回到客户端。这样一来就实现了客户端不需要直接和数据库服务器发生关系,保证了传输数据的安全性。主要特点为:用户使用方便,其在逻辑上采用了3层结构,它在前台Browse和后台Server之间增加了一层WebServer层,所有的应用程序模块都安装在它上面,在Browse上只需安装一个通用的浏览器软件,因此,这种模式简化了客户端,使用户的操作更加方便;系统开发、维护、升级方便。当服务器的应用程序升级的时候,只需要在服务器上升级应用程序即可,而用户计算机上的浏览器软件不需要做任何的修改,系统开发与升级维护相对方便;在B/S模式下,用户通过浏览器访问,系统的开放性好,结构容易扩展;由于Web的平台无关性,使得B/S模式的结构可以容易的进行扩展,也可以根据发展的需要,对系统随时进行扩展,降低了系统的开发和维护的开销。鉴于B/S相对于C/S的先进性,在某些方面相对于C/S的巨大改进,使B/S成了管理信息系统平台的首选。各软件公司纷纷推出自己的Internet方案,基于Web的财务系统、基于Web的ERP。一些企业已经领先一步开始使用它,并且收到了一定的成效。所以,开发基于B/S模式的学生有其重要的现实意义。1系统需求分析3.1系统功能概述利用程序设计、Web制作技术、数据库开发等技术设计和实现一个学生在线考勤系统。大概分为三大功能模块:请假系统模块、考勤系统模块、后台管理模块组成;有学生、任课42 滁州学院本科毕业设计教师、系统管理员三大类用户。请假系统模块:本模块的功能是在线请假的实现及管理,主要涉及两类用户:学生和任课教师,学生通过此功能模块进行在线请假及查看请假记录信息;任课教师在线审批学生请假及查看请假记录信息。考勤系统模块:此模块实现学生考勤信息查询(包括按学院、按专业、按班级、按考勤人、按时间段等查询学生出勤情况)、查看及管理,涉及到所有的用户。任课教师可以在线管理所有学生的出勤情况;班主任、院领导查看不同范围的学生出勤情况。后台管理模块:此模块实现整个系统数据的同步更新以及维护,只涉及到系统管理员这个用户,系统管理员可以动态的对相应用户进行管理、安排课程、安排学年信息等,是整个系统实现的基础。3.2可行性分析3.2.1开发的必要性针对目前各大高校面积大、学院、专业、学生数量多,为学校的学生考勤工作开发一套能够进行实时处理的信息管理系统是十分有必要的。具体体现如下:(1)考勤不够全面,一个学校班级、学生人数众多。学生会安排的考勤工作人员及其有限,任课教师也不可能每节课都点名,所以高校的学生考勤无法全面地进行。(2)考勤数据不够准确且点名考勤制耗费了教师和学生大量的时间。(3)临时有事需要请假的学生得提前找到任课教师、班主任等,签字请假,这就使得请假管理的执行上显得效率很低。(4)考勤资料的共享程度较低,教师手里掌握的考勤记录经常会与系学生会、学校教务处的考勤记录有出入。有了上述原因,对滁州学院学生考勤工作急需一套管理信息系统,而科学管理的必要性也使得这套系统的开发势在必行。3.2.2开发的可行性经济可行性:本系统使用B/S架构设计,使用市场上流行的动态网页技术[10],开发简单,使用又方便,不需要耗费很多的人力和物力就能较快的开发出来,系统的部署对软硬件要求又不高,所以从经济上讲是可行的。技术可行性:高校学生在线考勤系统在当前的高校中使用还是很普遍,但也有很多类似的成功案例:如排课管理系统、教务管理系统等。本系统采用JSP,html标识语言、JavaScript脚本语言、和Mysql数据库等技术进行开发。JSP是一种安全稳定的动态网页技术,目前国内各银行信息系统,ERP系统,企业的电子商务系统等基本上都用JSP开发。Mysql数据库的技术是基于客户/服务器结构的数据库管理系统,每个用户可以通过使用客户系统从服务器进行检索信息并可以本地操作,服务器就关注数据库的进程,而此时的客户则要关注信息的表示。为了让客户端可以从服务器访问数据,则服务器必须满足以下两个重要特征:对42 滁州学院本科毕业设计数据库里的数据可以提供单点访问;将操作和处理在服务器间和客户端进行分配。Mysql使用Transact-SQL语言进行实现、维护与访问数据库,Transact-SQL是SQL(StructuredQueryLanguage)的一个子集标准[11]。Mysql有很多种实用程序允许用户对它的服务访问,用户能够用这些实用程序对Mysql进行本地或者远程管理。从以上的分析可知,高校学生在线考勤系统的解决方案它无论在技术,经济上都是可行的[12]。1系统设计4.1总体框架设计4.1.1系统布局设计系统页面采用框架来设计,不同的用户有不同的功能菜单,但都有统一的风格,这给页面的使用和维护都带来了很大的便利,特别是在代码重用方面起了很大作用。本系统的页面设计如图4-1所示。图4-1系统布局图(1)标题显示区可以在此展示登录用户、年月日、系统标题等信息。(2)功能菜单区提供系统可供操作的功能列表。(3)页面主体区根据用户操作显示系统相应的页面。(4)状态信息区显示本系统所有权等信息。42 滁州学院本科毕业设计4.1.2总体结构图根据系统需求分析,设计出学生在线考勤系统的总体结构。本系统主要涉及到三类功能模块:考勤管理模块主要用于任课教师对学生的出勤情况进行记录、管理等;请假管理模块主要用于学生在线请假、老师审批等;后台管理模块主要用于系统管理员对整个系统数据的同步更新以及维护等。学生在线考勤系统各个模块之间的层次结构如图4-2所示。图4-2系统层次结构示意图4.1.3程序流程图用户在输入帐号、密码登录系统前需要与后台数据库核对用户信息是否合法,登录成功后,系统会根据用户的类型判断该用户允许使用本系统的哪些功能,进而展示属于该用户使用的系统功能菜单界面。学生在线考勤系统的系统运行流程图如图4-3所示。42 滁州学院本科毕业设计图4-3程序流程图图4-3程序流程图4.2数据库设计4.2.1数据库需求分析数据库设计是指对于一个给定的应用环境,构造设计优化的数据库逻辑模式和物理结构,并据此建立数据库以及应用环境,使之能够有效地存储和管理数据,满足各种用户的应用需求,包括信息管理要求和数据操作要求。 设计这个系统的主要目的就是实现学生在线考勤管理的规范化。 数据库的需求分析阶段是整个数据库设计过程中的基础,也是耗时就多,最困难的一步。需求分析的任务就是通过详细调查现实世界要处理的对象,充分了解原系统工作概况,明确用户的各种需求,然后在此基础上确定新系统的功能。这个阶段的工作成果主要包含以下三个方面的内容。(1)数据项每种具体数据的名称、意义、类型、取值范围以及与其他数据项之间的逻辑关系。 (2)数据集若干数据项的有逻辑关联的集合,包括名称、意义和组成数据集的数据项。 (3)数据流42 滁州学院本科毕业设计应用系统运行时,数据是怎么输入、处理和输出。学生考勤管理系统要实现考勤管理、请假管理、后台管理三大子系统,需要了解学生用户、任课教师用户、管理员用户等三类用户的功能模块。然后,据此分析出数据需求。要实现以上所述功能,系统采用的数据库需具备以下的基本存储信息:学生信息表:学生姓名、学号、专业、班级、联系电话等。学生考勤表:学生姓名、学院、专业、班级、出勤情况、考勤人等。我的请假表:请假人、请假时间、请假类型、请假理由、请假状态等。课程表:课程名称、专业、任课教师、学时、学分等。学年安排表:学年、计划安排、详细信息等。4.2.2数据库概念结构设计根据数据库的需求分析,设计具体数据库[13]的主要实体模型图、E-R模型图,如下:(1)学生请假信息的实体模型图如图4-4所示。图4-4请假记录属性模型(2)教师考勤信息的实体模型图如图4-5所示。图4-5考勤记录属性模型(3)学生请假信息的E-R模型如图4-6所示。图4-6学生-请假记录E-R模型42 滁州学院本科毕业设计(4)学生出勤信息的E-R模型如图4-7所示。图4-7学生—出勤记录E-R模型4.2.3数据库逻辑设计根据数据库的需求分析,设计具体数据库逻辑结构[14],包含的表如下:(1)用户管理表:这张表用来保存用户管理员的基本信息,表结构如表4-1所示。表4-1用户管理表字段中文名称字段英文名称字段长度字段类型IDId11int用户帐号userAcct18varchar用户密码userPass18varchar删除标识(0:正常;1:删除)deleteFlag1int用户名称userName20varchar用户类型(1:系统管理员;2:普通用户)userType1int状态(0:未审批;1:审批通过)status1int(2)学生信息表:这张表用来保存学生的基本信息。学生信息表如表4-2所示。表4-2学生信息表字段中文名称字段英文名称字段长度字段类型IDid11int学生姓名xueshengxingming50varchar学号xuehao50varchar专业zhuanye50varchar班级banji50varchar联系电话lianxidianhua50varchar操作人IDoperatorId20varchar操作时间itime20varchar备注detail1000varchar删除标识(0:正常;1:删除)deleteFlag1int(3)学生考勤表:这张表用来记录教师考勤所需的基本信息。学生考勤表如表4-3所示。表4-3学生考勤表字段中文名称字段英文名称字段长度字段类型IDid11varchar考勤学生kaoqinxuesheng50varchar42 滁州学院本科毕业设计考勤时间kaoqinshijian50varchar出勤情况chuqinqingkuang50varchar考勤人kaoqinren50varchar附件路径fujian200varchar操作人IDoperatorId20varchar操作时间itime20varchar备注detail1000varchar删除标识(0:正常;1:删除)deleteFlag1int(4)我的请假表:这张表用来记录学生请假所需的基本信息。我的请假表如表4-4所示。表4-4我的请假表字段中文名称字段英文名称字段长度字段类型IDid11int请假人qingjiaren50varchar请假时间qingjiashijian50varchar请假类型qingjialeixing50varchar请假理由qingjialiyou3000varchar状态zhuangtai50varchar附件路径fujian200varchar操作人IDoperatorId20varchar操作时间itime20varchar备注detail1000varchar删除标识(0:正常;1:删除)deleteFlag1int(5)课程管理表:这张表用来保存课程的基本信息。课程管理表如表4-5所示。表4-5课程管理表字段中文名称字段英文名称字段长度字段类型IDid11int课程名称kechengmingcheng50varchar所属专业suoshuzhuanye50varchar任课教师renkelaoshi50varchar学时xueshi50varchar学分xuefen50varchar操作人IDoperatorId20varchar操作时间itime20varchar备注detail1000varchar删除标识(0:正常;1:删除)deleteFlag1int42 滁州学院本科毕业设计(6)学年安排表:这张表用来保存每个学年的基本信息。学年安排表如表4-6所示。表4-6学年安排表字段中文名称字段英文名称字段长度字段类型IDid11int学年xuenian50varchar计划安排jihuaanpai3000varchar操作人IDoperatorId20varchar操作时间itime20varchar备注detail1000varchar删除标识(0:正常;1:删除)deleteFlag1int4.2.4数据流图数据流图是一种可以描述结构化系统分析的工具。它既能表达数据在系统的内部逻辑流向及存储,也能表达出系统的逻辑功能与数据的逻辑变换。数据流图既可以表达出现行人工系统的数据流程与逻辑处理功能,也可以表达自动化系统的数据流程与逻辑处理功能。学生在线考勤系统的请假管理数据流图如图4-8所示。图4-8请假管理数据流图学生在线考勤系统的考勤管理数据流图如图4-9所示。图4-9考勤管理数据流图42 滁州学院本科毕业设计1系统实现5.1系统功能流程图根据不同用户登录学生在线考勤系统,系统运行的主界面流程图如图5-1所示。图5-1主界面流程图5.2登录模块实现用户输入用户名和密码,就能登陆到相应的操作界面。如果用户名和密码不正确,会提示用户重新输入数据登录。用户登陆时操作页面如图5-2所示。图5-2登录页面42 滁州学院本科毕业设计主要代码:用户登录functionjump(){window.location.href="/login.do";}
5.3后台管理模块实现5.3.1管理员登录功能实现管理员在浏览器地址中输入正确用户名、密码后就可以登陆本系统的管理员首页。在首页上端会显示登录名、日期、系统标题等,左侧显示系统的常用的请假管理、考勤管理、学校安排、系统管理等功能菜单栏,如图5-3所示。图5-3管理员登录页面主要代码:${PubMata}${PubTitle}${PubJS}42 滁州学院本科毕业设计varSYSTEM_NAME="${SYSTEM_NAME}";varSYSTEM_DESIGNER="${SYSTEM_DESIGNER}";vartopPanDisplay="${ResultMap.topPanDisplay}";varsouthPanDisplay="${ResultMap.southPanDisplay}";varmenuRegion="${ResultMap.menuRegion}";varmenuCollapse="${ResultMap.menuCollapse}";varanimate="${ResultMap.menuAnimate}";varmenuBackground="${ResultMap.menuBackground}";5.3.2用户管理功能实现在考勤系统的用户管理菜单下系统管理员可以对系统的用户进行浏览、编辑以及对特殊的用户进行相应的功能授权等,如图5-4所示。图5-4用户管理页面主要代码:selectdistinctc.menu_todofrommenu_infocwherec.idin(selectdistinctb.menu_id42 滁州学院本科毕业设计fromuser_menubwhereb.user_id=(selecta.idfromuser_infoawherea.userAcct="$login_user_acct$"))andc.menu_status=#menu_status#selectcount(id)fromuser_menuwhereuser_id="$userID$"andmenu_id=#menu_id#5.3.3课程安排功能实现系统管理员可以按照学校课程安排,打开学校安排菜单栏下的课程管理选项可以对课程进行浏览、编辑,输入本学期各班级要学习的课程名称、学时、学分等以供教师、学生查看,如图5-5所示。图5-5课程安排页面主要代码:publicModelAndViewdoAdd(SqlMapClientsqlMap,HttpServletRequestrequest,HttpServletResponseresponse)throwsException{PrintWriterpw=null;try{response.setCharacterEncoding("utf-8");pw=response.getWriter();42 滁州学院本科毕业设计HashMapwhere=newHashMap();where.put("operatorId",SysInfo.getLoginUserId(request,response));Stringkechengmingcheng=request.getParameter("kechengmingcheng");where.put("kechengmingcheng",kechengmingcheng);Stringsuoshuzhuanye=request.getParameter("suoshuzhuanye");where.put("suoshuzhuanye",suoshuzhuanye);Stringrenkelaoshi=request.getParameter("renkelaoshi");where.put("renkelaoshi",renkelaoshi);Stringxueshi=request.getParameter("xueshi");where.put("xueshi",xueshi);Stringxuefen=request.getParameter("xuefen");where.put("xuefen",xuefen);Stringdetail=request.getParameter("detail");where.put("detail",detail);sqlMap.insert("Kechengguanli.insertObj",where);pw.write("{success:true,msg:"新增操作成功!"}");5.3.4学年安排功能实现系统管理员可以按照学校学年安排,打开学校安排菜单栏下的学年管理选项,可以对学年进行浏览、编辑,管理员后台输入学年安排以供教师、同学查看,如图5-6所示。图5-6学年安排页面主要代码:publicModelAndViewdoAdd(SqlMapClientsqlMap,HttpServletRequestrequest,HttpServletResponseresponse)throwsException{PrintWriterpw=null;try{42 滁州学院本科毕业设计response.setCharacterEncoding("utf-8");pw=response.getWriter();HashMapwhere=newHashMap();where.put("operatorId",SysInfo.getLoginUserId(request,response));Stringxuenian=request.getParameter("xuenian");publicModelAndViewdoUpdate(SqlMapClientsqlMap,HttpServletRequestrequest,HttpServletResponseresponse)throwsException{PrintWriterpw=null;try{response.setCharacterEncoding("utf-8");pw=response.getWriter();HashMapwhere=newHashMap();Stringxuenian=request.getParameter("xuenian");where.put("xuenian",xuenian);Stringjihuaanpai=request.getParameter("jihuaanpai");where.put("jihuaanpai",jihuaanpai);Stringid=request.getParameter("id");where.put("id",id);Stringdetail=request.getParameter("detail");where.put("detail",detail);sqlMap.update("Xueniananpai.updateObj",where);5.3.5出勤种类功能实现系统管理员可以根据现实情况适当增加或者删除出勤的种类,如迟到、早退、正常等,学生的请假类型,如事假、病假等以供教师在考勤时、同学在请假时选择,如图5-7所示。图5-7出勤种类页面42 滁州学院本科毕业设计主要代码:publicModelAndViewdoAdd(SqlMapClientsqlMap,HttpServletRequestrequest,HttpServletResponseresponse)throwsException{PrintWriterpw=null;try{response.setCharacterEncoding("utf-8");pw=response.getWriter();HashMapwhere=newHashMap();where.put("operatorId",SysInfo.getLoginUserId(request,response));Stringqingjialeixing=request.getParameter("qingjialeixing");where.put("qingjialeixing",qingjialeixing);Stringdetail=request.getParameter("detail");where.put("detail",detail);sqlMap.insert("Qingjialeixing.insertObj",where);5.4考勤管理模块实现5.4.1查看学生信息功能实现教师、院系领导在正确输入用户名、密码登录学生考勤系统后在打开考勤管理功能菜单下的学生考勤选项后可以浏览学生信息,如图5-8所示。图5-8查看学生信息页面主要代码:publicModelAndViewhandleRequest(HttpServletRequestrequest,HttpServletResponseresponse)throwsException{ModelAndViewmodelAndView=null;SqlMapClientsqlMap=null;try{sqlMap=DBUtils.getSqlMap(this.getClass());sqlMap.startTransaction();publicModelAndViewdoGetJsonStor(SqlMapClientsqlMap,HttpServletRequestrequest,HttpServletResponseresponse){42 滁州学院本科毕业设计PrintWriterpw=null;try{HashMapwhere=newHashMap();StringkaoqinxueshengSearch=request.getParameter("kaoqinxueshengSearch");if(kaoqinxueshengSearch!=null&&!kaoqinxueshengSearch.equals("")){where.put("kaoqinxueshengSearch",kaoqinxueshengSearch);}StringxueyuanSearch=request.getParameter("xueyuanSearch");if(xueyuanSearch!=null&&!xueyuanSearch.equals("")){where.put("xueyuanSearch",xueyuanSearch);5.4.2管理学生出勤功能实现教师在正确输入用户名、密码登录学生考勤系统后可以把上课迟到、旷课等的同学通过编辑该学生的信息打开下拉菜单修改学生的出勤情况。例如,默认情况下学生出勤是正常,当某同学迟到时,教师就可以更改该学生的出勤为迟到,如图5-9所示。图5-9管理学生出勤页面主要代码:publicModelAndViewdoUpdate(SqlMapClientsqlMap,HttpServletRequestrequest,HttpServletResponseresponse)throwsException{PrintWriterpw=null;try{response.setCharacterEncoding("utf-8");pw=response.getWriter();HashMapwhere=newHashMap();sqlMap.update("Xueshengkaoqing.updateObj",where);pw.write("{success:true,msg:"修改表单成功!"}");}catch(Exceptione){pw.write("{success:false,msg:"修改表单失败!"}");e.printStackTrace();42 滁州学院本科毕业设计thrownewException();5.4.3按条件查询学生出勤情况功能实现院校领导、教师等在输入正确的用户名、密码登录学生考勤系统后根据相应查询条件,如:按时间段、学院、专业、班级、考勤人等查询符合要求的学生出勤详细信息等,如图5-10所示。图5-10按条件查询学生出勤情况页面主要代码:ManageObj.initSearchForm=function(){/*初始化搜索表单*/ManageObj.searchForm=newExt.FormPanel({id:"mySearchForm",labelAlign:"left",buttonAlign:"center",bodyStyle:"padding:0px;",frame:true,border:false,labelWidth:75,items:[{//xtype:"fieldset",//title:"查询条件",anchor:"100%",layout:"column",labelSeparator:":",labelAlign:"right",items:[{columnWidth:.2,layout:"form",border:false,items:[{xtype:"datefield",format:"Y-m-d",fieldLabel:"操作时间",name:"itimeStartSearch",id:"itimeStartSearch",invalidText:"日期格式不正确,应为yyyy-mm-dd",42 滁州学院本科毕业设计5.5请假管理模块实现5.5.1学生在线请假功能实现学生在正确输入用户名、密码登录学生考勤系统后,打开请假管理菜单下的我的请假选项填写好请假人、请假时间、请假理由等点击提交表单后,请假信息就会实时的发送给教师,如图5-11所示。图5-11学生在线请假主要代码:publicModelAndViewhandleRequest(HttpServletRequestrequest,HttpServletResponseresponse)throwsException{ModelAndViewmodelAndView=null;SqlMapClientsqlMap=null;try{sqlMap=DBUtils.getSqlMap(this.getClass());sqlMap.startTransaction();publicModelAndViewdoAdd(SqlMapClientsqlMap,HttpServletRequestrequest,HttpServletResponseresponse)throwsException{PrintWriterpw=null;try{response.setCharacterEncoding("utf-8");pw=response.getWriter();HashMapwhere=newHashMap();where.put("operatorId",SysInfo.getLoginUserId(request,response));sqlMap.insert("Wodeqingjia.insertObj",where);pw.write("{success:true,msg:"新增操作成功!"}");42 滁州学院本科毕业设计5.5.2教师审批学生请假功能实现教师在输入正确的用户名、密码登录学生考勤系统后打开请假管理菜单下的审批请假就可以查看需要请假的学生详细信息,根据申请理由决定是否允许其请假,如图5-12所示。图5-12教师审批学生页面主要代码:publicModelAndViewdoShenPi(SqlMapClientsqlMap,HttpServletRequestrequest,HttpServletResponseresponse)throwsException{PrintWriterpw=null;Stringinfo="";try{Stringid=request.getParameter("id");Stringzhuangtai=request.getParameter("zhuangtai");response.setCharacterEncoding("utf-8");pw=response.getWriter();HashMapwhere=newHashMap();where.put("zhuangtai",zhuangtai);where.put("id",id);sqlMap.delete("Wodeqingjia.doShenPi",where);pw.write("{success:true,msg:"操作成功!"}");Loggerlogger=Logger.getLogger(this.getClass().getName());}catch(Exceptione){pw.write("{success:false,msg:"操作失败!"}");e.printStackTrace();thrownewException();}5.5.3按条件查询请假情况功能实现院校领导、教师等在正确输入用户名、密码登录学生在线考勤系统后可以按时间段、请假类型、请假理由、请假人等,查询符合要求的学生详细信息等,如图5-13所示。42 滁州学院本科毕业设计图5-13按条件查询请假情况页面主要代码:publicModelAndViewdoGetJsonStore(SqlMapClientsqlMap,HttpServletRequestrequest,HttpServletResponseresponse){PrintWriterpw=null;try{HashMapwhere=newHashMap();StringqingjiarenSearch=request.getParameter("qingjiarenSearch");if(qingjiarenSearch!=null&&!qingjiarenSearch.equals("")){where.put("qingjiarenSearch",qingjiarenSearch);}StringqingjiashijianSearch=request.getParameter("qingjiashijianSearch");if(qingjiashijianSearch!=null&&!qingjiashijianSearch.equals("")){where.put("qingjiashijianSearch",qingjiashijianSearch);}StringqingjialeixingSearch=request.getParameter("qingjialeixingSearch");if(qingjialeixingSearch!=null&&!qingjialeixingSearch.equals("")){where.put("qingjialeixingSearch",qingjialeixingSearch);1系统测试6.1测试的重要性及目的软件测试是在交给用户使用前,对软件进行需求分析、设计规格说明与编码的最终复审,是软件质量保证与否的关键性步骤。软件测试就是为了发现尽可能多的缺陷、错误的过程。测试的重要性:软件测试是为了充分保证软件质量的重要活动,它贯穿于整个软件开发生命周期,是软件项目实施的不可缺少的环节。软件测试的直接目的是发现软件中存在的缺陷,进而改正软件中的错误、弥补缺陷、完善功能,从而保证开发软件的质量、性能。测试的目的:如果测试是为了尽可能多的找到错误,那么测试就该针对软件中相当复杂的部分或者是曾经出错较多的位置。42 滁州学院本科毕业设计(1)软件的测试是为了发现软件中的错误而执行的程序过程;(2)测试是为了能够证明程序中存在错,而不是证明程序中没有错误;(3)一个好的测试用例是在于它能够发现至今尚未发现的错误;(4)一个成功的测试是能够发现至今没有发现的错误的测试。6.2测试过程6.2.1用户登陆测试用户登陆测试是测试系统访问的安全性,以及各个页面的设计的安全性,测试的方案如下,用户测试表如表6-1所示。表6-1用户测试表用户类型用户名密码空密码错误密码/用户名错误类型学生stu11111否否否教师tea11111否否否管理员admin1111否否否说明:上表中的“否”表示拒绝访问,不能通过在线考勤系统的身份验证。“是”表示能够访问考勤系统。通过上表进行反复测试黑盒测试可知,用户在登陆考勤系统的安全方面不存在问题,用户必须在使用正确的用户名、密码后方能正常使用此系统。6.2.2页面使用安全测试页面使用安全测试主要是测试考勤系统各个页面的安全性,即用户在没有正常登录的情况下直接于浏览器地址栏中输入需要打开的用户页面,或者用户使用正确用户名、密码登录系统后,直接在浏览器的地址输入别的用户的使用页面,测试各页面是否不需要用经过户登录便可使用,或者看是否可以绕过考勤系统的身份验证。在用户并没有登陆系统的时候,就直接在浏览器地址栏输入http://localhost/WEB-ROOT/app/index/index.jsp。此地址是管理员用户的首页完全地址,看能否能打开操作。测试结果:提示用户还没有登陆考勤系统。依次测试其他页面,其他用户,测试结果都是:提示用户还没登陆考勤系统。通过以上测试可知:系统有很好的安全性,每个页面都不允许用户在没有登陆的前提下访问,用户在登陆后,也不允许用户访问别的用户类型的页面,即不能绕过身份验证。6.2.3系统主要功能测试(1)请假测试请假系统是学生用户的核心功能,由于涉及的用户比较多,此部分的测试是在多个用户的配合下完成,主要完成以下测试:学生在输入正确的用户名、密码登录学生考勤系统后,填写相应的请假信息提交请假表单给教师,可以看到目前的审批状态是未审批,如图6-1所示。42 滁州学院本科毕业设计图6-1学生请假教师在输入正确的用户名、密码登录学生考勤系统后,在请假管理菜单下会看到学生stu1需要请假,教师可以浏览该学生信息以决定是否允许其请假,如图6-2所示。图6-2教师审批(2)考勤测试教师在输入正确的用户名、密码登录学生考勤系统后,打开学生的信息,点到没到的学生姓名后可以打开下拉菜单修改该学生出勤状况,如图6-3所示。图6-3教师考勤(3)查询出勤情况测试院系领导登录到系统后,在考勤管理菜单下打开学生考勤,可以按时间段、学院、专业、班级、考勤人、出勤状况等查询学生的出勤情况,如图6-4所示。42 滁州学院本科毕业设计图6-4查询出勤情况(4)用户管理测试系统管理员在输入正确的用户名、密码登录学生考勤系统后,打开系统管理菜单下的用户管理选项,可以给予特殊的用户授予相应的特权,如图6-5所示。图6-5特殊用户功能授权结束语通过几个月的努力,学生在线考勤系统中的三大功能模块:请假管理、考勤管理和后台管理,基本功能顺利完成。请假管理主要完成学生向任课教师请假,以及任课教师在收到请假信息后,根据学生的请假理由是否合理来决定是否允许其请假;考勤管理主要完成任课教师在上课前对上课迟到、旷课等的同学做一个网上记录,方便班主任、校领导等以在线的方式登录考勤系统后查看学生的出勤、请假状况等;系统管理员可以在线管理用户、安排学生课程以及安排学年安排等。虽然考勤系统可以基本完成高校考勤所需要的主要功能,但还一些需要进一步改进的地方。例如,教师在进行考勤管理的时候,教室里必须有网络可以连接;考勤的形式不是学生打卡或按手纹,而是教师必须网上登记;学生请假的时候,教师必须先登录考勤系统才可以查看是否有学生请假;针对以上问题,会考虑在以后进行继续修改、完善。考虑以软硬件结合的方式来进行学生考勤,学生在提交请假申请时能否短信通知任课教师,以及时的审批学生请假。基本功能虽已基本实现,但在分析到各个用户的具体细节功能上有可能还不够完善,系统界面还有待进一步美化。42 滁州学院本科毕业设计参考文献[1]赵生慧.Java面向对象程序设计[M].第二版.北京:中国水利水电出版社,2010:37-85[2]郭克华.JavaEE程序设计与应用开发[M].第一版.北京:清华大学出版社,2011:1-45[3]贾素玲,王强.JSP应用开发技术[M].第一版.北京:清华大学出版社,2007:7-15[4]高翔.JSP动态网站开发技术与实践[M].北京:电子工业出版社,2007:1-36[5]Helmstetter,Art.Microsoft.SQLServer2000[J].DMReview,2005,15(7):5-27[6]郑阿奇.Mysql实用教程[M].第一版.北京:电子工业出版社,2009:15-67[7]杨晓军.MVCWeb开发学习实录[M].北京:清华大学出版社,2011:16-68[8]Konglai.ZHUTheDesignofB2BE-commerceSystemBasedonMVCModelandJ2EE[J].ManagementScienceandEngineering,2011,5(3):5-13[9]孙卫琴,李洪成.Tomcat与JavaWeb开发技术详解[M].北京:电子工业出版社,2004:5-27[10]王晓红,龚毅.网页设计与制作[M].北京:机械工业出版社,2011:25-49[11]IanGilfillan,王军等译.Mysql4从入门到精通[M].北京:电子工业出版社,2003:98-121[12]王源庆,罗素珍.高校学生考勤管理系统[J].电子商务,2013,2(4):11-18[13]侯青.一种Mysql数据库全文检索的实现方法[J].信息技术,2009,11(2):4-16[14]刘秋生等编著.数据库系统设计及其应用案例分析[M].第一版.南京:东南大学出版社,2005:36-8542 滁州学院本科毕业设计附录<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%>用户登录functionjump(){window.location.href="/login.do";}
……publicclassXueshengkaoqingextendsBaseFormController{publicModelAndViewhandleRequest(HttpServletRequestrequest,HttpServletResponseresponse)throwsException{ModelAndViewmodelAndView=null;SqlMapClientsqlMap=null;//通过SqlMapClient接口进行数据库操作try{sqlMap=DBUtils.getSqlMap(this.getClass());//DBUtils操作数据库的组件,对传统操作数据库的类进行二次封装,可以把结果集转化成List集合。sqlMap.startTransaction();Stringflag=request.getParameter("flag");System.out.println("flag===="+flag);//获取列表数据if(flag!=null&&flag.equals("getJsonStore")){42 滁州学院本科毕业设计modelAndView=doGetJsonStore(sqlMap,request,response);}//新增记录elseif(flag!=null&&flag.equals("doAddSubmit")){modelAndView=doAddWithAttach(sqlMap,request,response);}//修改记录elseif(flag!=null&&flag.equals("doUpdateSubmit")){modelAndView=doUpdateWithAttach(sqlMap,request,response);}//删除或解冻记录elseif(flag!=null&&flag.equals("doDeleOrUnDele")){modelAndView=doDeleOrUnDele(sqlMap,request,response);}//导出excelelseif(flag!=null&&flag.equals("doExportExcel")){modelAndView=doExportExcel(sqlMap,request,response);}//字段统计elseif(flag!=null&&flag.equals("doTongJi")){modelAndView=doTongJi(sqlMap,request,response);}//关联字段elseif(flag!=null&&flag.equals("doGuanLian")){modelAndView=doGuanLian(sqlMap,request,response);}else{HashMapresultMap=newHashMap();returntoFinish("/WEB-ROOT/app/kaoqingguanli/xueshengkaoqing/xueshengkaoqing.jsp",resultMap,request,response);}sqlMap.commitTransaction();}catch(Exceptione){e.printStackTrace();}finally{if(sqlMap!=null){DBUtils.closeSqlMap(sqlMap,this.getClass());}}returnmodelAndView;42 滁州学院本科毕业设计}publicModelAndViewdoGetJsonStore(SqlMapClientsqlMap,HttpServletRequestrequest,HttpServletResponseresponse){PrintWriterpw=null;try{HashMapwhere=newHashMap();StringkaoqinxueshengSearch=request.getParameter("kaoqinxueshengSearch");if(kaoqinxueshengSearch!=null&&!kaoqinxueshengSearch.equals("")){where.put("kaoqinxueshengSearch",kaoqinxueshengSearch);}StringxueyuanSearch=request.getParameter("xueyuanSearch");if(xueyuanSearch!=null&&!xueyuanSearch.equals("")){where.put("xueyuanSearch",xueyuanSearch);}StringzhuanyeSearch=request.getParameter("zhuanyeSearch");if(zhuanyeSearch!=null&&!zhuanyeSearch.equals("")){where.put("zhuanyeSearch",zhuanyeSearch);}StringbanjiSearch=request.getParameter("banjiSearch");if(banjiSearch!=null&&!banjiSearch.equals("")){where.put("banjiSearch",banjiSearch);}StringkaoqinshijianSearch=request.getParameter("kaoqinshijianSearch");if(kaoqinshijianSearch!=null&&!kaoqinshijianSearch.equals("")){where.put("kaoqinshijianSearch",kaoqinshijianSearch);}StringchuqinqingkuangSearch=request.getParameter("chuqinqingkuangSearch");if(chuqinqingkuangSearch!=null&&!chuqinqingkuangSearch.equals("")){where.put("chuqinqingkuangSearch",chuqinqingkuangSearch);}StringkaoqinrenSearch=request.getParameter("kaoqinrenSearch");if(kaoqinrenSearch!=null&&!kaoqinrenSearch.equals("")){where.put("kaoqinrenSearch",kaoqinrenSearch);}42 滁州学院本科毕业设计StringidSearch=request.getParameter("idSearch");if(idSearch!=null&&!idSearch.equals("")){where.put("idSearch",idSearch);}StringitimeSearch=request.getParameter("itimeSearch");if(itimeSearch!=null&&!itimeSearch.equals("")){where.put("itimeSearch",itimeSearch);}StringdetailSearch=request.getParameter("detailSearch");if(detailSearch!=null&&!detailSearch.equals("")){where.put("detailSearch",detailSearch);}StringdeleteFlagSearch=request.getParameter("deleteFlagSearch");if(deleteFlagSearch!=null&&!deleteFlagSearch.equals("")){where.put("deleteFlagSearch",deleteFlagSearch);}StringitimeStartSearch=request.getParameter("itimeStartSearch");if(itimeStartSearch!=null&&!itimeStartSearch.equals("")){where.put("itimeStartSearch",itimeStartSearch+"00:00:00");}StringitimeEndSearch=request.getParameter("itimeEndSearch");if(itimeEndSearch!=null&&!itimeEndSearch.equals("")){where.put("itimeEndSearch",itimeEndSearch+"23:59:59");}Stringjson=IbatisUtil.queryForPage(sqlMap,request,response,where,"Xueshengkaoqing.selecteList");System.out.println("json===="+json);response.setCharacterEncoding("utf-8");pw=response.getWriter();pw.write(json);}catch(NumberFormatExceptione){e.printStackTrace();}catch(Exceptione){42 滁州学院本科毕业设计e.printStackTrace();}finally{if(pw!=null){pw.close();}}returnnull;}publicModelAndViewdoAdd(SqlMapClientsqlMap,HttpServletRequestrequest,HttpServletResponseresponse)throwsException{PrintWriterpw=null;try{response.setCharacterEncoding("utf-8");pw=response.getWriter();HashMapwhere=newHashMap();where.put("operatorId",SysInfo.getLoginUserId(request,response));sqlMap.insert("Xueshengkaoqing.insertObj",where);pw.write("{success:true,msg:"新增操作成功!"}");}catch(Exceptione){pw.write("{success:false,msg:"新增操作失败!"}");e.printStackTrace();thrownewException();}finally{if(pw!=null){pw.close();}}returnnull;}publicModelAndViewdoAddWithAttach(SqlMapClientsqlMap,HttpServletRequestrequest,HttpServletResponseresponse)throwsException{PrintWriterpw=null;try{response.setCharacterEncoding("GB2312");42 滁州学院本科毕业设计pw=response.getWriter();DiskFileItemFactoryfactory=newDiskFileItemFactory();factory.setSizeThreshold(4096);ServletFileUploadupload=newServletFileUpload(factory);upload.setSizeMax(Global.UPLOAD_FILE_MAX_SIZE);//解决上传文件名为中文的问题upload.setHeaderEncoding("gb2312");HashMapwhereMap=newHashMap();whereMap.put("operatorId",SysInfo.getLoginUserId(request,response));ListfileItems=upload.parseRequest(request);Iteratoriter=fileItems.iterator();inti=0;intj=0;while(iter.hasNext()){FileItemitem=(FileItem)iter.next();/*非文件域*/if(item.isFormField()){if(i==0){whereMap.put("kaoqinxuesheng",item.getString("gb2312"));}elseif(i==1){whereMap.put("xueyuan",item.getString("gb2312"));}elseif(i==2){whereMap.put("zhuanye",item.getString("gb2312"));}elseif(i==3){whereMap.put("banji",item.getString("gb2312"));}elseif(i==4){whereMap.put("kaoqinshijian",item.getString("gb2312"));}elseif(i==5){42 滁州学院本科毕业设计whereMap.put("chuqinqingkuang",item.getString("gb2312"));}elseif(i==6){whereMap.put("kaoqinren",item.getString("gb2312"));}elseif(i==7){whereMap.put("detail",item.getString("gb2312"));}i++;}/*文件域*/else{if(j==0){StringfilePath=item.getName();if(filePath==null||filePath.equals("")){whereMap.put("fuJian","");continue;}filePath=filePath.substring(filePath.lastIndexOf("\")+1);StringuploadPath=InitSystemConfig.UPLOAD_FILE_PATH+filePath;Filefile=newFile(uploadPath);item.write(file);whereMap.put("fuJian",uploadPath);}j++;}}sqlMap.insert("Xueshengkaoqing.insertObj",whereMap);/*带附件的表单提交,必须设置ContentType为text/html*/response.setContentType("text/html");pw.write("{success:true,msg:"新增操作成功!"}");}catch(Exceptione){e.printStackTrace();try{pw.write("{success:false,msg:""+e.getMessage()+""}");42 滁州学院本科毕业设计}catch(Exceptione1){thrownewException("新增操作失败");}}finally{if(pw!=null){pw.close();}}returnnull;}publicModelAndViewdoUpdate(SqlMapClientsqlMap,HttpServletRequestrequest,HttpServletResponseresponse)throwsException{PrintWriterpw=null;try{response.setCharacterEncoding("utf-8");pw=response.getWriter();HashMapwhere=newHashMap();sqlMap.update("Xueshengkaoqing.updateObj",where);pw.write("{success:true,msg:"修改表单成功!"}");}catch(Exceptione){pw.write("{success:false,msg:"修改表单失败!"}");e.printStackTrace();thrownewException();}finally{if(pw!=null){pw.close();}}returnnull;}publicModelAndViewdoUpdateWithAttach(SqlMapClientsqlMap,HttpServletRequestrequest,HttpServletResponseresponse)throwsException{42 滁州学院本科毕业设计PrintWriterpw=null;try{response.setCharacterEncoding("GB2312");pw=response.getWriter();DiskFileItemFactoryfactory=newDiskFileItemFactory();factory.setSizeThreshold(4096);ServletFileUploadupload=newServletFileUpload(factory);upload.setSizeMax(Global.UPLOAD_FILE_MAX_SIZE);//解决上传文件名为中文的问题upload.setHeaderEncoding("gb2312");Stringid=request.getParameter("id");StringisChangeAttach=request.getParameter("isChangeAttach");HashMapwhereMap=newHashMap();whereMap.put("operatorId",SysInfo.getLoginUserId(request,response));ListfileItems=upload.parseRequest(request);Iteratoriter=fileItems.iterator();inti=0;intj=0;while(iter.hasNext()){FileItemitem=(FileItem)iter.next();/*非文件域*/if(item.isFormField()){if(i==0){whereMap.put("kaoqinxuesheng",item.getString("gb2312"));}elseif(i==1){whereMap.put("xueyuan",item.getString("gb2312"));}elseif(i==2){whereMap.put("zhuanye",item.getString("gb2312"));}elseif(i==3){42 滁州学院本科毕业设计whereMap.put("banji",item.getString("gb2312"));}elseif(i==4){whereMap.put("kaoqinshijian",item.getString("gb2312"));}elseif(i==5){whereMap.put("chuqinqingkuang",item.getString("gb2312"));}elseif(i==6){whereMap.put("kaoqinren",item.getString("gb2312"));}elseif(i==7){whereMap.put("detail",item.getString("gb2312"));}i++;}/*文件域*/else{if(j==0){if(isChangeAttach!=null&&isChangeAttach.equals("1")){StringfileName=item.getName();if(fileName==null||fileName.equals("")){whereMap.put("fuJian","");continue;}fileName=fileName.substring(fileName.lastIndexOf("\")+1);StringuploadPath=InitSystemConfig.UPLOAD_FILE_PATH+fileName;Filefile=newFile(uploadPath);item.write(file);whereMap.put("fuJian",uploadPath);}}j++;}42 滁州学院本科毕业设计}whereMap.put("id",id);sqlMap.update("Xueshengkaoqing.updateObj",whereMap);/*带附件的表单提交,必须设置ContentType为text/html*/response.setContentType("text/html");pw.write("{success:true,msg:"修改操作成功!"}");}catch(Exceptione){e.printStackTrace();try{pw.write("{success:false,msg:""+e.getMessage()+""}");}catch(Exceptione1){thrownewException("新增操作失败");}}finally{if(pw!=null){pw.close();}}returnnull;}publicModelAndViewdoGuanLian(SqlMapClientsqlMap,HttpServletRequestrequest,HttpServletResponseresponse)throwsException{PrintWriterpw=null;try{HashMapwhere=newHashMap();StringguanLianBiao=request.getParameter("guanLianBiao");if(guanLianBiao!=null&&!guanLianBiao.equals("")){where.put("guanLianBiao",guanLianBiao);}StringguanLianZiDuan=request.getParameter("guanLianZiDuan");if(guanLianZiDuan!=null&&!guanLianZiDuan.equals("")){where.put("guanLianZiDuan",guanLianZiDuan);}42 滁州学院本科毕业设计where.put("deleteFlag",0);Stringjson=IbatisUtil.queryForPage(sqlMap,request,response,where,"Util.selecteGuanLianList");System.out.println("json===="+json);response.setCharacterEncoding("utf-8");pw=response.getWriter();pw.write(json);……42 滁州学院本科毕业设计致谢毕业设计从选题、查阅资料、设计到确定课题经历了较长时间。在这段时间得到了教师、同学们的帮助和支持,在此深表感谢!感谢他们的耐心指导和热心帮助,对于他们提出的一些见解和建议真的让我获益匪浅。首先感谢我的导师,在百忙之际仍然尽力帮我解决遇到的问题,尽心尽力的给我讲解了很多专业方面的知识,并教我学习的方法。在毕业设计期间,从开题报告到毕业论文的撰写,都给了我很多好的建议,有表扬,有批评,从而是我的毕业设计日渐完善。让我在不断学习中日益进步,也锻炼了我联系实际的能力,让我思考问题也更加多元化。导师的严谨治学的态度、诲人不倦的品格、实事求是的工作作风和宽厚的待人品德也深深地影响着我,这对以后不论是在学校还是在工作岗位上都有很大的帮助。其次要感谢我的同学和朋友们,因为自己在专业课方面缺乏动手能力,所以经常会因微小的问题而不知所措,他们一直耐心的辅导我。感谢他们在技术上给与我的帮助,还有其他的朋友,平时在相互交流中,大家也取长补短,学到了很多,也得到了很多的帮助,感谢他们。我还要感谢我的母校,以及在大学生活中给予我关心和帮助的教师和同学,是他们教会了我专业的知识和做人的道理,这些都让我受益终生。通过这次毕业设计我还明白了作为一名计算机专业的大学毕业生,我们要会的不仅仅是编写代码,更重要的是要有整体把握系统设计的能力。最后向在百忙之中评审本文的各位专家、教师表示衷心的感谢!42'