• 816.00 KB
  • 2022-05-17 13:42:33 发布

基于JSP的高校学生考勤管理系统.doc

  • 68页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
目录目录I摘要IIIABSTRACTIII第1章问题定义31.1引言31.2开发背景31.3问题描述3第2章可行性分析32.1引言32.2目的和意义32.3可行性分析3第3章需求分析33.1引言33.2用户需求描述33.2.1学生用户需求描述33.2.2任课老师用户需求描述33.2.3班主任用户需求描述33.2.4院(系)领导用户需求描述33.2.5学校领导用户需求描述33.2.6系统管理员用户需求描述33.3功能需求描述33.4系统开发工具33.5相关开发工具简介33.5.1B/S(浏览器/服务器)简介33.5.2JAVA/JSP简介33.6系统功能划分33.7数据字典33.8数据流图3 3.9运行需求33.9.1最低配置33.9.2建议配置3第4章总体设计34.1引言34.2系统布局设计34.3总体结构图34.4本人主要工作任务3第5章详细设计35.1引言35.2系统功能流程图35.3系统目录结构设计35.4数据库设计与实现35.4.1实体模型35.4.2E-R模型35.4.3数据库的逻辑设计35.4.4数据库表的创建35.4.5数据库的建立35.5前端操作页面设计35.5.1系统登陆设计35.5.2学生用户功能设计35.5.3任课老师用户功能设计35.5.4班主任用户功能设计35.5.5院系领导用户功能设计35.5.6学校领导用户功能设计3第6章编码36.1用户操作页面编码36.1.1系统登陆编码36.1.2学生用户功能编码36.1.3任课老师用户功能编码3 6.1.4班主任用户功能编码36.1.5院系领导用户功能编码36.2数据库连接池编码36.2.1数据库连接池程序编码36.2.2连接池配置文件3第7章软件测试37.1引言37.2测试方案37.2.1黑盒测试37.2.2白盒测试37.2.3其它测试方案37.2.4本系统所采用测试方案37.3测试过程37.3.1用户登陆测试37.3.2页面使用安全测试37.3.3学生用户测试37.3.4任课老师用户测试37.3.5班主任用户测试37.3.6院系领导/学校领导用户测试3总结3参考文献3致谢3附录3附录一:文献资料3原文3译文3附录二、系统部署及使用手册3开发工具的安装与配置3系统部署3用户操作手册3 摘要本系统主要针对目前高校学生在线请假以及学生上课出勤管理而设计的信息系统。本系统总体上由三大功能模块:请假系统模块、考勤系统模块、后台管理模块组成。系统涉及到高校六大类用户:学生、任课老师、班主任、院系领导、学校领导、系统管理员。本高校学生考勤管理系统用JSP+SQLServer2000开发,开发过程中运用了页面模块化、信息发布的动态生成、静态页面显示等技术开发。本论文重点介绍本系统的请假系统、考勤系统两大功能模块设计,完成学生、任课老师、班主任、院系领导、学校领导五类用户功能的设计与实现。关键词:考勤管理;在线请假;JSP ABSTRACTThesystemisaninformationsystemdesignedforaskingforleaveonlineforstudentsandmanagingattendanceofundergraduate.Itisgenerallydividedintothreemainmodules:themoduleforaskingforon-lineleave,themoduleformanagingattendanceofundergraduateandthemoduleforbackstagemanagement.Therearedifferentcustomersintheuniversityoperatingthesystem,suchasstudent,teacher,ateacherinchargeofaclass,departmentleader,schoolleader,administrator.ThesystemisdevelopedwiththehelpofJcreator,JSP(java、javascript、html)andSQLServer2000.Thekeytechniquesusedintheprocessofdevelopmentare:thepagemodularization,dynamicgeneratingandstaticpageshowingofinformation,etc.Andthethesisfocusesontheintroductionofthesystem’sattendancemanagementandthemanagementofaskingforleaveonline.Anditdevelopsthefunctionofstudent,teacher,ateacherinchargeofaclass,departmentleader,schoolleaderonthewhole.Keyword:attendancemanagement;onlineaskforleave;JSP 第1章问题定义1.1引言问题定义阶段必须回答的关键问题是:“要解决的问题是什么?”,在此阶段中,主要是弄清本课题需要解决的问题根本所在,以及此课题所需的资源等。1.2开发背景目前高校校园信息化逐步完善,高校师生借助校园网有效的提高了办事效率。各大高校针对师生的成绩查询系统、教务管理系统、招生就业系统、BBS、校园网站等系统在各大高校纷纷出现,对全校师生的学习、生活、管理、办公带来了便利。目前高校学生上课考勤管理都是以任课老师上课点名,记录学生上课出勤情况,学期末根据上课出勤表及作业登记表对学生平时成绩打分,然后把数据上交到各院系。学生请假以传统的写请假条的形式向各自班主任请假,时间长的请假,要班主任、院系领导都批准方能生效。这种的模式在目前高校管理中暴露出了许多弊端:一是学生请假不方便;二是学生请假对任课老师不透明,造成对学生上课出勤误记的情况;三是学生上课出勤表对班主任不透明,班主任很难知道本班学生上课的出勤情况,不便于与学生及时有效的沟通;四是学生对自己整个学期的上课出勤情况没有整体的统计信息。五是院系领导、学校领导更加把握不住学生上课的出勤情况。1.3问题描述上述所说高校对学生考勤和请假面临的问题涉及多类用户,系统使用范围是在全校校园网内,由于用户分布广泛,且存在很大差异,如:知识结构的差异、计算机硬件配置的差异、操作系统的差异等。因此本系统设计应当采用典型的B/S(浏览器/服务器)的构架进行设计,操作简单直观,对硬件要求低,最好能实现跨平台。跨平台一是指客户端用户操作的跨平台,二是指服务器端的跨平台,即可以将服务器部署在所有操作平台上。系统应当有很好的扩展性,与当前高校中现有的系统很好集成。 目前随着IT技术的不断创新与发展,新的技术不断推出,各种企业实现信息化的解决方案不断成熟。面向对象程序设计语言的广泛使用,各种成熟关系数据库的不断完善与推出,再加上面向对象的软件开发过程广泛应用,软件开发过程变得越来越容易,开发出的系统变得越来越实用,许多企业使用信息系统后,明显提高了办事效率,带来了很大的经济收入。目前流行的基于B/S结构的解决方案主要有ASP,JSP,PHP等技术。本系统选用JSP技术开发,使用当前流行的SQLServer2000数据库管理系统来存储数据,主要解决学生在线请假、在线考勤管理以及后台数据的维护与更新。 第2章可行性分析2.1引言这个阶段要回答的关键问题是:“对于上一个阶段所确定的问题有行得通的解决方法吗?”为了回答这个问题,需要一次大大压缩和简化了的系统分析和设计的过程,也就是在较抽象的高层次上进行的分析和设计的过程。可行性研究应该比较简短,这个阶段的任务不是具体解决问题,而是研究问题的范围,探索这个问题是否值得去解,是否有可行的解决方法。2.2目的和意义开发本系统的目的,就是要解决目前高校中关于学生请假与上课出勤管理中所面临的一系列问题。开发出高校学生考勤管理系统能有效地提高高校办事效率,解决目前高校学生请假及上课出勤管理问题,实现学生请假及上课出勤信息对任课教师、班主任、院系领导、学校领导透明,使班主任、院系领导及时把握学生的学习情况,及时与学生沟通,提高教学质量。2.3可行性分析技术可行性:高校学生考勤管理系统在目前的高校中使用还不普遍,但也有许多类似的成功案例:如教务管理系统、排课系统等。本系统采用JSP,JavaScript脚本语言、html标识语言及SQLServer2000数据库技术综合开发。JSP是一种安全稳定的动态网页技术,目前国内各企业的电子商务系统,ERP系统,银行信息系统等基本上都用JSP开发的。MicrosoftSQLServer(基于结构化查询语言的数据库服务器)是基于客户/服务器结构的数据库管理系统,用户通过使用客户系统从服务器检索信息并进行本地操作,服务器关注数据库进程,而客户则关注信息的表示。为了使客户端能够从服务器中访问数据,服务器必须具备以下两个关键特征:一、对在数据库中的数据提供单点访问。二、将处理和操作在客户端和服务器间进行分配。SQLServer使用Transact-SQL语言来维护、实现和访问数据库,Transact-SQL是SQL(StructuredQueryLanguage)的一个子集标准。SQLServer有多种实用程序允许用户来访问它的服务,用户可用这些实用程序对SQLServer进行本地管理或远程管理。经济可行性 :本系统使用B/S架构设计,使用市场上流行的动态网页技术,开发简单,使用度方便,不需要耗费大量的人力物力就能很快的开发出来,系统部署对软硬件要求不高,用户操作简单,几乎不需要对用户进行专业培训就可使用本系统,所以从经济上讲是可行的。法律可行性:本系统拥有自主知识产权,没有使用任何违法的软件也没有交易任何非法的商品,所以在法律上是可行的。操作可行性:本系统操作简单方便,只要懂得上网都能方便操作本系统,所以在操作上也是可行的。分析结果:从以上的分析可知,高校学生考勤管理系统的解决方案无论在技术,经济还是法律以及操作上都是可行的,且开发本系统具有一定的经济价值和实用价值。 第3章需求分析3.1引言这个阶段的任务仍然不是具体地解决问题,而是准确地确定“为了解决这个问题,目标系统必须做什么”,主要是确定目标系统必须具备哪些功能。3.2用户需求描述用户是系统的最终使用者,开发系统的目的是要用户最终很好的使用系统,最终为用户带来各种便利。本系统要解决高校学在线请假以及上课考勤管理两大问题,通过对高校的实际调查分析,本系统应当包括学生、班主任、任课老师、院系领导、学校领导、系统管理员六类用户,这六类用户对系统的需求简要概括如下:3.2.1学生用户需求描述学生对本系统的主要需求是:在线请假以及查看在校期间所有的上课出勤信息。在线请假需求:学生在网上填写好请假的起止日期,请假原因后,就可以向本学期本班班主任提出请假申请,超过三天的请假,由班主任审批后,再由院系领导审批。在在线请假的全过程当中,学生可以随时查看请假的详细进展情况。查看出勤信息需求:学生可以查看在校期间所有学期上课出勤的详细信息,如:查看“高等数学”这门课程在整个学期请假、旷课、迟到、早退了多少次,以及具体的时间、任课老师姓名、第几节课等详细信息。其它需求:查看本人的基本信息,如本人的所属的院系、年级、专业、班级、学号、姓名、性别等,以及修改个人用户密码,查看本班课表安排。3.2.2任课老师用户需求描述任课老师对系统的主要需求是:管理所教班级学生的上课出勤信息以及查看所教班级学生的上课出勤信息。管理学生上课出勤需求:根据学校安排的课表,随着时间的变化,自动列出还没有在网上公布的学生上课出勤信息,系统自动根据学生请假系统,决定学生上课出勤的最终结果。 查看学生出勤信息需求:查看所教班级学生整个学期上出勤统计信息及详细信息。其它需求:查看上课课表,本人基本信息以及修改个人用户密码。3.2.3班主任用户需求描述班主任对本系统的主要需求是:审批本班学生本学期的在线请假以及查看本班学生本学期所有课程的上课出勤信息。审批学生请假需求:本班学生本学期在线请假申请后,自动提示班主任有等待审批的请假信息,班主任针对请假申请信息进行学生请假审批,以及对请假信息回复。查看学生上课出勤信息需求:查看本班学生整个学期有关课程的上出勤统计信息及详细信息。其它需求:查看本班学生的基本信息、修改个人用户密码等。3.2.4院(系)领导用户需求描述院系领导对系统的主要需求是:审批本院系学生超过三天的请假以及查看本院系学生上课出勤信息。审批请假需求:当学生请超过三天的假,经班主任审批同意后,系统自动提交给任何一个最先进入系统的院系领导审批请假,以及针对请假回复。查看本院系学生出勤信息需求:输入查询条件后,系统根据查询条件列出本院系学生相关的上课出勤信息。其它需求:查看本院系有关基本信息以及修改个人用户密码等。3.2.5学校领导用户需求描述学校领导对系统的主要需求是:查看全校学生上课出勤信息。查看出勤信息需求:输入查询条件后,系统根据查询条件列出本校学生相关的上课出勤信息。其它需求:查看有关全校的基本信息以信修改个人用户密码等。3.2.6系统管理员用户需求描述系统管理员有系统的最高权限,负责系统所需所有数据的动态同步更新以及维护,根据系统针对各用户的设计,基本功能需求如下:1、管理学校各院系、年级、专业、班级的添加、删除、修改等。2、管理每个学期每个班级的课程安排及指定班主任和任课老师。3、管理系统所有用户。 4、管理全校课表安排。5、管理全校每学年开学的起止时间。6、管理系统的请假、考勤信息。3.3功能需求描述根据各类用户的需求描述,系统应当具备请假系统、考勤管理系统、后台管理系统这三大主要功能。请假系统功能需求:通过实际调查分析得出,目前高校中的请假流程是学生若要请假,必须先写好请假条先由本学年班主任审批,超过四天的请假,还要等待院系领导审批通过后才能生效。请假最长时间不能超过1个月,特殊情况除外。考勤管理功能需求:任课老师通过考勤管理系统,对学生上课出勤信息进行公开,但由于任课老师忙于教学,为了能及时准确无误的对学生出勤情况公开,要求系统能自动提示任课老师对上完课了,但还没公布的出勤信息进行网上公布。后台管理功能需求:后来管理主要是用来管理系统操作的数据,因为高校每学年的学生都在变化,有新生入学,也有学生毕业。请假系统要借助班主任安排才能完成,考勤管理系统要借助请假系统、班级课表安排才能完成,然而每学年课表都在变化,班主任安排也有在变化,学生也在变化,因此必须要求后台管理系统能根据系统需求,动态的、准确的更新系统数据。3.4系统开发工具根据各用户的需求,以及系统各大功能的需求,经过大量的调查分析,针对本高校学生考勤管理系统选择以下开发工具进行开发:系统结构:B/S(浏览器/服务器)开发语言:JAVA/JSP数据库:SQLServer2000开发工具:JDK1.5DreamweaverJcreator服务器端容器:Tomcat5.53.5相关开发工具简介3.5.1B/S(浏览器/服务器)简介 B/S(Browser/Server,浏览器/服务器)模式又称B/S结构。它是随着Internet技术的兴起,对C/S模式应用的扩展。在这种结构下,用户工作界面是通过IE浏览器来实现的。B/S模式最大的好处是运行维护比较简便,能实现不同的人员,从不同的地点,以不同的接入方式(比如LAN,WAN,Internet/Intranet等)访问和操作共同的数据;最大的缺点是对网络环境依赖性太强,由于各种原因引起网络中断都会造成系统瘫痪。3.5.2JAVA/JSP简介JAVA是SUN公司推出的完全面向对象的语言,它有很好的跨平台性、安全性、重用性等特点。JSP的全称是JavaServletPages,它是SUN推出的一种动态网页技术标准。它在传统的静态页面文件(*.html,*htm)中加入Java程序片段和JSP标记,就构成了JSP页面。由Web服务器上的JSP引擎来处理JSP元素,生成调用Bean,并用JDBC访问数据库(或文件),最后以HTML或XML的形式返回浏览器。JSP在Servlet类中编译,编译一次后存入内存,以后再调用时,不用再编译,所以速度很快。3.6系统功能划分根据系统用户的需求,将本系统按功能划分成三大功能模块:请假系统、考勤系统、后台管理模块,涉及到六大类用户:学生、任课教师、班主任、院系领导、学校领导、系统管理员。1、请假系统模块本模块的功能是在线请假的实现及管理,主要涉及三大类用户:学生、班主任及院系领导用户,学生通过此功能模块进行在线请假及查看请假记录信息;班主任在线审批学生请假及查看请假记录信息;院系领导在线审批学生长时间的请假及查看请假记录信息。2、考勤系统模块本模块的功能是学生考勤信息统计的实现、查看及管理,涉及六大类用户中的所有用户。学生在线查看自己所有学年的出勤信息;任课老师在线管理学生出勤信息;班主任、院系领导、学校领导查看不同的范围的学生出勤信息。3、后台管理管理 本模块的功能实现整个系统数据的同步更新及维护,只涉及系统管理员用户。系统管理员动态的管理学生信息、课表安排、学年安排等信息,是整个系统实现的基础。3.7数据字典数据词典,既用于描述数据流和数据存储的详细逻辑内容,也可用于描述外部项和处理逻辑的某些数据特性。数据词典把数据的最小组成单位看作数据元素,若干个数据元素组成数据结构。它通过对数据元素和数据结构的定义,来描述数据流和数据存储的逻辑内容。它相当于字典的作用,当用户或软件人员想了解某一数据的含义时,查查字典就可以了。名字:学生信息表别名:学生定义:学生基本详细信息描述:学生=stu_number+stu_name+stu_sex+stu_password+class_id位置:用户登录名字:任课老师信息表别名:任课老师定义:任课老师基本详细信息描述:任课老师=teacher_id+teacher_name+teacher_password+college_id位置:用户登录名字:班主任信息表别名:班主任定义:班主任基本详细信息描述:班主任=class_teacher_id+class_teacher_name+class_teacher_password+college_id位置:用户登录名字:院系领导信息表别名:院系领导定义:院系领导基本详细信息描述:院系领导=college_leader_id+college_leader_name+college_leader_password+college_id位置:用户登录 名字:学校领导信息表别名:学校领导定义:学校领导基本详细信息描述:学校领导=school_id+school_name+school_password位置:用户登录名字:上课考勤登记信息表别名:考勤登记定义:任课老师对所教课程的登记情况描述:考勤登记=id+record_time+sk_time位置:任课老师考勤管理页面名字:请假信息表别名:请假定义:学生请假详细信息描述:请假=class_id+year_id+stu_number+qingjia_yuanyin+start_time+end_time+day_number+qingjia_time+class_teacher_status+class_teacher_sp_time+class_teacher_restore+college_leader_status+college_leader_id+college_leader_sp_time+college_leader_restore位置:学生、班主任、院系领导请假系统名字:学生上课出勤息表别名:出勤定义:学生上课的出勤情况。描述:出勤=id+sk_time+stu_number+stu_status位置:学生、任课老师、班主任、院系领导、学校领导考勤系统 3.8数据流图数据流程图是结构化系统分析的工具。它既可以表达数据在系统内部的逻辑流向及存储,又可以表达系统的逻辑功能和数据的逻辑变换。数据流程图既能表达现行人工系统的数据流程和逻辑处理功能,也能表达自动化系统的数据流程和逻辑处理功能。图3-1请假系统数据流图Fig3-1thesystem’sofaskingforleavedataflowpursueing学生请假班主任审批院系领导审批请假成功请假失败请假记录同意同意不同意同意不同意图3-2考勤系统数据流图Fig3-2attendancesystem’sdataflowpursueing任课老师请假系统数据处理请假旷课迟到早退出勤记录请假记录 3.9运行需求3.9.1最低配置服务器端:1)硬件需求:处理器IntelPentiumIII内存128M硬盘40G2)软件需求:Windows98MicrosoftInternetExplorer4.01JDK1.5SQLServer2000数据库Tomcat5.0客户端:1)硬件需求:处理器Intel奔腾133或相当的处理器内存64M硬盘10G2)软件需求:Windows98MicrosoftInternetExplorer4.013.9.2建议配置服务器端:1)硬件需求:处理器IntelPentiumIV2.8G内存256M硬盘80G2)软件需求:MicrosoftWindows2000/XPJDK1.5Tomcat5.5SQLServer2000数据库MicrosoftInternetExplorer6.0客户端:1)硬件需求:处理器IntelPentiumIV1.8或相当的处理内存128M硬盘20G2)软件需求:Windows2000/XPMicrosoftInternetExplorer6.0 第4章总体设计4.1引言经过需求分析阶段的工作,系统必须“做什么”已经清楚了,现在是决定“怎样做”的时候。4.2系统布局设计系统页面采用框架来设计,不同的用户有不同的功能菜单,但都有统一的风格,这给页面的使用和维护都带来了很大的便利,特别是在代码重用方面起了很大作用。本系统各用户的页面设计如图4-1所示:页面主体功能菜单BannerBottom图4-1系统布局图Fig4-1System’slayoutmap1.Banner区——可以在此展示系统标识、页面归属等信息。2.功能菜单区——提供系统可供操作的功能列表。4.页面主体区——显示页面格式化数据页面主体区显示的内容,将依据页面在系统中的作用而定。5.Bottom区——可设计为显示系统所有权等信息。 4.3总体结构图根据系统功能的要求,高校学生考勤管理系统各个模块之间的层次结构如图4-2所示:高校学生考勤管理系统请假系统考勤系统后台管理图4-2系统功能结构示意图Fig.4-2Structuresketchmapofthesystem’sfunction按用户划分,系统结构图如图4-3所示:高校学生考勤管理系统学生班主任任课老师院系领导学校领导管理员图4-3系统用户结构示意图Fig.4-3StructuresketchmapoftheSystem’suser请假系统子功能模块层次结构图如图4-4所示:请假系统子模块学生在线请假模块班主任审批模块院系领导审批模块图4-4请假系统结构示意图Fig.4-4Structuresketchmapofthesystemaskingforleave 考勤系统子功能模块的层次结构如图4-5所示:考勤管理子模块任课老师提交数据各用户查询考勤数据图4-5考勤系统结构示意图Fig.4-5Structuresketchmapofthesystemcheckingattendance4.4本人主要工作任务本高校学生考勤管理系统分成三大功能模块来实现,本人主要负责:请假系统、考勤系统两大功能模块,涉及前五大类用户:学生、班主任、任课老师、院系领导、学校领导。后台管理功能模块,即系统管理员的功能由同组的同学来实现。 第5章详细设计5.1引言总体设计阶段以比较抽象概括的方式提出了解决问题的办法。详细设计是软件开发时期的第三个阶段,也是软件设计的第二步。其任务就是把解法具体化,也就是回答下面这个关键的问题:“应该怎样具体地实现这个系统呢?”,通过详细设计应该得出对目标系统的精确描述,给出各个模块的详细过程性描述。从而在编码阶段可以把这个描述直接翻译成用某种程序设计语言书写的程序。5.2系统功能流程图1)主功能流程:图5-1主界面流程图Fig.5-1mainpages’sflowdiagram开始用户登陆学生班主任任课老师院系领导学校领导在线请假查看考勤信息查看考勤信息提交考勤信息查看考勤信息审批请假审批请假查看考勤信息查看考勤信息退出系统结束 5.3系统目录结构设计index.jsp系统首页WEB-INF系统配置目录public公共目录image图片目录student学生目录teacher任课老师目录class_teacher班主任目录college_leader院系领导目录school_leader学校领导目录admin系统管理员目录account_manager账号管理目录class_teacher班主任指定目录college_manager院系管理目录admin子目录course_manager课表安排目录kecheng_manager课程管理目录kaoqin_manager考勤管理目录qingjia请假管理目录year_manager学年安排目录5.4数据库设计与实现5.4.1实体模型老师提交记录记录ID提交时间上课时间图5-1任课老师提交记录实体图Fig5-2entitychartoftherecordssubmitedtobyteacher 图5-3请假记录属性模型Fig5-3attributemodeloftherecordaskingforleave院系领导姓名请假记录班级代号学年代号学生学号请假原因请假天数开始时间结束时间申请时间班主任审批状态班主任审批时间班主任回复院系回复院系审批状态院系审批时间图5-4学生出勤记录属性模型Fig5-4attributemodeloftherecordgoingonduty学生出勤记录出勤ID上课时间学号出勤情况5.4.2E-R模型学生请假记录1n请假图5-5学生-请假记录E-R模型Fig5-5theE-Rmodeloftherecordsaskingforleave 11出勤记录学生出勤图5-6学生—出勤记录E-R模型Fig5-6E-Rmodeloftherecordsgoingonduty5.4.3数据库的逻辑设计根据系统功能设计的要求以及功能模块的划分,对于系统数据库,可以列出以下数据项和数据结构:考勤登记表:课程安排代号、记载时间、上课时间。学生上课出勤信息表:上课时间代号、上课时间、学号、出勤状态。请假信息表:请假代号、班级代号、学年代号、学号、请假原因、开始时间、结束时间、请假天数、申请时间、班主任审批状态、班主任审批时间、班主任回复、院系领导审批状态、院系领导代号、院系领导审批时间、院系领导回复5.4.4数据库表的创建根据数据库需求的分析,建立如下3个基本数据表。表5-1请假信息表(qingjia)列名数据类型是否为空说明idInt(4)否(主键)(自动生成)请假代号class_idvarchar(10)否班级代号year_idvarchar(20)否学期代号stu_numbervarchar(20)否学生学号qingjia_yuanyinvarchar(200)否请假原因start_timedatetime否开始时间end_timedatetime否结束时间day_numberInt(4)否(默认0)请假天数qingjia_timedatetime否申请请假时间 class_teacher_statusInt(4)否(默认值:0)班主任审批状态class_teacher_sp_timedatetime是班主任审批时间class_teacher_restorevarchar(200)是班主任回复college_leader_statusInt(4)否(默认值:0)院系领导审批状态college_leader_idvarchar(20)是院系领导代号college_leader_sp_timedatetime是院系领导审批时间college_leader_restorevarchar(200)是院系领导回复备注:status表示审批状态:0为等待审批,1为同意请假,2为不同意请假。表5-2任课老师提交出勤信息记录表(record)列名数据类型是否为空说明record_idInt(4)否(自动生成)代号idInt(4)否与表course_time中id关联record_timedatetime否老师考勤记载时间sk_timedatetime否上课时间表5-3学生上课出勤记录表(kaoqin_record)列名数据类型是否为空说明kaoqin_idInt(4)否(自动生成)代号idInt(4)否与表course_time中id关联sk_timedatetime否上课时间Stu_numberVarchar(20)否学生学号Stu_statusVarchar(1)否学生上课考勤状态说明:stu_status的值为:“2”表示旷课。“3”表示迟到。“4”表示早退。 “5”表示请假。5.4.5数据库的建立打开SQLServer2000下面的[企业管理器],登录之后,选择[新建数据库]命令,给数据库起名为kaoqin。然后通过设计器创建数据表,刚才已经说明了需要不同的数据表来分管,它们分别是“qingjia”,“kaoqin_record”,“record”等,有关这些数据表的信息见上图。5.5前端操作页面设计5.5.1系统登陆设计当不同的用户使用系统时,都要事先进行身份验证。用户在“用户名”处输入系统管理员分配的用户,选择正确的用户类型,最后输入正确密码后方能进行系统,用户名、用户类型、密码任一一个输入有误,系统都将拒绝用户使用此系统,若用户忘记了用户名或密码,请与管理员联系,本系统不支持在线找回密码功能。学生用户的用户名为学生本人的学号,密码也是学号,其它用户的用户名、密码由系统管理员指定。本系统在设计时,严格考虑好了系统的安全性,不允许用户不经登陆直接使用系统的任何一个网页,用户也不能绕过身份验证,即:假如一个学生用户用正确的用户名和密码进行系统后,就算他知道管理用户或其它用户的某个网页地址,也是不能打开,进行操作的,系统将自动提示没权限的错误信息。5.5.2学生用户功能设计根据学生用户的需求,系统实现了在线请假、查看上课出勤信息、查看个人基本信息这三大主要功能。系统针对学生用户设计如下功能菜单:基本信息、请假系统、考勤信息、查看课表、修改密码、安全退出、帮助。在基本信息功能菜单中,学生可以查看自己的学号、姓名、性别、院系、年级、专业、班级号信息。在请假系统功能菜单中,实现了在线请假申请功能,以及查看等待审批的请假信息、请假成功的请假信息、请假失败的请假信息。在考勤信息菜单下,学生可以查看本学年以及历史学年上课出勤的统计信息及详细信息。在查看课表功能菜单中,学生可以查看当前学期的课表安排,以及历年的课表安排。修改密码功能菜单,学生可以修改自己的密码。本系统还自带帮助文件,方便用户在使用过程中随时查阅。 学生用户的在线请假,在班主任或院系领导还没批假之前可以由学生自行删除,若班主任审批了请假,则学生不能删除申请记录,学生不能重复请假,因此学生请假时应当慎重。根据学生用户请假的需求,学生三天内的请假(包括三天)只需班主任批准后就可生效,四天(包括四天)以上的请假,必须先由班主任同意,然后学校同意,请假方能生效,超过30天的请假不能在线请假。请假开始时间必须在请假结束时间之前,否则系统自动提示出错信息,且请假时,必须指定请假开始时间,请假结束时间,以及请假原因,请假时不必要指定班主任,系统会自动根据本学期的班级与班主任安排,找到班主任,并将信息自动交给对应班主任进行审批处理,超过四天的请假还将自动交给任何一个院系领导审批处理。系统还约定学生网上请假只能提前一个星期。请假开始时间与结束时间的约定:请假时间学生可自动选择,也可自己输入日期,但是必须输入正确的日期格式,否则系统将出错,建议学生选择日期还不手动输入,以免出错。假若学生只请一天假,则开始时间与结束时间都选择要请假的那一天,如:一个学生2006年5月30日要请假,则开始时间、结束时间都选择2006-05-30,系统在进行处理时,自动把请假的时间设为从2006-05-3000:00:00开始,2006-05-3023:00:00结束。同样,请超过一天的假也是以这种方式处理的。在请假的详细记录中,有学生请假有关所有详细信息,包括学生请假的申请时间、开始时间、结束时间、天数、原因、审批时间、回复、请假成功与否等所有有关请假的信息,学生可以随时查看请假进展情况。5.5.3任课老师用户功能设计根据任课老师用户需求,系统实现了任课老师在线公布学生上课出勤信息、查看学生考勤信息两大基本功能。系统针任课老师用户设计以下功能菜单:查看课表、考勤管理、考勤信息、修改密码、安全退出、帮助。在查看课表功能菜单下,任课老师可以查看本学期自己所带课程的上课时间以及所教班级的一些基本信息。在考勤管理功能菜单中,系统比较智能的根据当前日期自动提示当前学年还没登记的学生上课出勤表。在考勤信息功能菜单中,任课老师可以查看已经记录的学生上课出勤信息,既可以查看学生上课出勤统计信息,也可以考勤学生上课出勤统计信息,还可以做适当的修改。考勤管理功能是任课老师用户最主要的功能,任课 老师上完课后,将传统的学生上课出勤情况在网上进行公布,使学生上课出勤信息及时准备对对班主任、院系领导、学校领导透明。根据任课老师用户的需求,系统实现了自动提示任课老师提交数据的功。根据课表安排,将本学期上完课的,还没提交数据的学生出勤情况自动提示任课老师提交数据,实现了智能化管理。比如说一个老师在2006-5-30进入了系统,那么这个老师在本学期,也就是2006-5-30之前上过的课,但还没提交数据出勤登记信息自动显示出来,等待任课老师提交数据,且任课老师在提交数据时,若学生在上课的那天请了假,且请假成功了,那么系统自动将学生出勤记录记为请假,任课老师无法记载学生为旷课等情况。任课老师在考勤信息当中,可以查看所教过的学生上课出勤的详细信息及统计信息,从而到了学期末,可以方便任课老师根据上课出勤情况对学生平时成绩打分。5.5.4班主任用户功能设计根据班主任用户功能的需求,系统实现了游览班级信息、审批本班学生在线请假、及上课考勤信息三大基本功能。系统针对班主任用户设计如下功能菜单:班级信息、请假系统、考勤信息、修改密码、安全退出、帮助。在班级信息功能菜单中,班主任用户可以查看本班学生的基本信息如:年级、专业、班级、学生学号、姓名、性别。在请假系统功能菜单中,班主任可以审批本班学生的在线请假,以及查看审批学生请假的历史记录,如:同意的请假记录和不同意的请假记录。在考勤信息功能菜单中,班主任用户可以查看本班学生所有课程的上课出勤信息,包括出勤详细信息及出勤统计信息。班主任用户在整个系统中是学生请假的决策者,学生请假必须经班主任同意后,才能提交给院系领导审批请假。班主任在审批学生请假时,可以对学生的请假返回反馈意见,以对学生说明不同意请假的原因,或向院系领导说明情况的真实性以更好的方便学生请假。班主任另外一大功能是查看本班学生本学期的所有考勤信息,包括详细信息和统计信息,这样班主任可以及时有效的与本班同学沟通,提高办事效率,提高学生的学习成绩。5.5.5院系领导用户功能设计根据院系领导的用户需求,系统实现了查看本院系信息、审批本院系学生请假、查看考勤信息三大基本功能。系统针对院系领导用户设计如下功能菜单:院系信息、请假系统、考勤统计、班主任信息、任课 老师信息、班主任安排信息、院系课表、修改密码、安全退出、帮助。在院系信息功能菜单中,院系领导可以查看本院系的专业信息、班级信息、学生信息。在请假系统功能菜单中,院系领导可以审批经班主任同意的长时间请假,并可查看审批请假的历史记录。在考勤统计功能菜单中,院系领导可以查看本院系各班级考勤统计数据、查寻学生请假信息、考勤信息等。另外在班主任信息、任课老师信息中院系领导可以查看本院系班主任、任课老师的一些基本信息。在院系课表中可以查看本院系当前学年或历年课表安排。院系领导用户的主要功能是查询本院系学生上课的考勤信息及审批学生请假。院系领导可以查询本院系某个班的考勤信息,也可以查询本院系某个人的考勤信息,在查询个人考勤统计信息时,是一个模糊查询,可以根据一个完整学号,唯一的查出一个学生考勤信息,也可输入部分学号、姓名列出所有相关的考勤记录。院系领导还可查看本院系的一些基本信息,如:专业、班级、任课老师、班主任等一些基本信息。5.5.6学校领导用户功能设计根据学样领导用户的功能,本系统实现了查看全校基本信息及学生考勤信息这两在基本功能。针对院系领导用户设计如下功能菜单:学校信息、考勤信息、院系领导信息、班主任信息、任课老师信息、班主任安排信息、全校课表、修改密码、安全退出、帮助。在学校信息功能菜单下,学校领导可以查看有关本校的一些基本信息,包括:院系信息、专业信息、班级信息、学生信息等。在考勤统计功能菜单下,学校领导可以分院系,班级查看学生考勤统计数据也可以查寻学生上课出勤信息。学校领导用户的功能与院系领导用户的功能基本上相同,只是查看信息的范围不一样,院系领导只能查看本院系的信息,而学校领导可以查看全校学生、任课老师、班主任等所有相关信息。由于与院系领导设计基本上一致,不再重复。 第6章编码6.1用户操作页面编码6.1.1系统登陆编码用户登陆时操作页面如图6-1所示:图6-1用户登陆页面Fig6-1thepageofdebarkationbyuser部分代号:chuser.jsp……<%request.setCharacterEncoding("GBK");username=request.getParameter("username");password=request.getParameter("password");Type=(String)request.getParameter("type");charuserType=Type.charAt(0);if(username==null||password==null||username.equals("")||password.equals("")){out.println("
");out.println("

用户名或密码输入非法!请返回重新输入!



");out.println("返回");out.println("
");return;} switch(userType){case"1":{sql="select*fromstu_userwherestu_id=""+username;sql+=""andstu_password=""+password+""";rs=conn.executeQuery(sql);if(rs.next()){session.setAttribute("userType",Type);session.setAttribute("userName",username);session.setMaxInactiveInterval(60*60*24);response.sendRedirect("/kaoqin/student/student.jsp");}else{out.println("
");out.println("

用户名或密码不正确



");out.println("返回");out.println("
");}conn.close();break;}…………%>各页面身份验证代码:如check_stu.jsp<%if(session.getAttribute("userType")!=null&&!session.getAttribute("userType").equals("")){StringuserType=(String)session.getAttribute("userType");if(!userType.equals("1"))response.sendRedirect("/kaoqin/public/error_user.jsp");}else{response.sendRedirect("/kaoqin/public/error_log.jsp");} %>只要在所有的学生用户页面中加入上面的代码后,用户必须先登陆后才能打开网页,且不能绕过身份验证。同样的页面对应各用户还有check_class_teacher.jsp等6.1.2学生用户功能编码根据系统详细设计,学生用户操作页面如图6-2所示:图6-2学生请假系统页面Fig6-2Thepageofthesystemaskingforleave请假功能的实现的程序流程图如图6-3所示: 图6-3请假系统流程图Fig6-3theflowchartofthesystemaskingforleave等待班主任审批学生请假记录N班主任审批请假T=0C=0N=?T=1C=0N=?T=2C=0N=?N>=4等待院系审批请假失败N<4请假成功院系审批请假T=1C=0N>=4T=1C=1N>=4T=1C=2N>=4请假失败请假成功T=0C=0N=?说明:T表示班主任对请假审批结果。默认值:0C表示院系领导对请假审批结果。默认值:0N表示学生请假天数。默认值:0T、C的值为:0、等待审批。1、同意请假。2、不同意请假。功能实现部分代码:packageqingjia;publicclassQJ_Record{ publicintday_number=0;publicintclass_teacher_status=0;publicintcollege_leader_status=0;publicQJ_Record(intT,intC,intN){this.class_teacher_status=T;this.college_leader_status=C;this.day_number=N;}}packageqingjia;publicclassQingJia{publicintjudge(QJ_Recordrecord){//对请假记录进行判断,返回值为1:请假成功;intT=record.class_teacher_status;//返回值为0:等审批的请假。返回值为-1:失败的请假intC=record.college_leader_status;intN=record.day_number;intresult=0;if(T==0&&C==0)result=0;if(T==2&&C==0)result=-1;if(T==1&&C==0)if(N>=1&&N<4)result=1;if(T==1&&N>=4)if(C==0)result=0;elseif(C==1)result=1; elseresult=-1;returnresult;}}6.1.3任课老师用户功能编码根据任课老师详细设计的要求,设计任课老师操作页面如图6-4所示:图6-4任课老师考勤管理页面Fig6-4thepageofattendancemanagementofteacher部分代码:kq_manager_m.jsp……<%format=newjava.text.SimpleDateFormat("yyyy/MM/ddHH:mm:ss");Stringcur_time_2=format.format(cur_time);Stringsql_t="select*fromyearwhereyear_id=""+year_id+""";ResultSetrs_t=conn.executeQuery(sql_t);if(rs_t.next()){year_id=rs_t.getString("year_id");year_name=rs_t.getString("year_name");year_start=rs_t.getTimestamp("year_start");year_end=rs_t.getTimestamp("year_end"); }conn.close();java.util.Calendarcalendar=newjava.util.GregorianCalendar();calendar.setTime(cur_time);calendar.set(calendar.DATE,calendar.get(calendar.DATE)-1);//限置任课老师不能管理当天学生的出勤java.util.Calendarcalendar_1=newjava.util.GregorianCalendar();java.util.Calendarcalendar_2=newjava.util.GregorianCalendar();calendar_1.setTime(year_start);calendar_2.setTime(year_end);ResultSet_rs=null;String_sql="";Stringweek_name="";format_1=newjava.text.SimpleDateFormat("yyyy/MM/ddHH:mm:ss");format_2=newjava.text.SimpleDateFormat("yyyy/MM/dd");format_3=newjava.text.SimpleDateFormat("yyyy/MM/dd");Stringgrade_name="";Stringsp_name="";Stringclass_number_name="";Stringkecheng_name="";_sql="selectdistinctkecheng_name,sp_name,grade_name,class_number_namefromcourse_infowhereyear_id=""+year_id+""andteacher_id=""+teacher_id+""andkecheng_id=""+kecheng_id+""andclass_id=""+class_id+""";_rs=conn.executeQuery(_sql);if(_rs.next()){grade_name=_rs.getString("grade_name");sp_name=_rs.getString("sp_name");class_number_name=_rs.getString("class_number_name");kecheng_name=_rs.getString("kecheng_name"); }conn.close();%>

<%=year_name%><%=kecheng_name%>

<%=grade_name%>级<%=sp_name%><%=class_number_name%>班等待登记的上课考勤信息

上课时间星期第几周课时登记
<%intsubDate=date.subDate(calendar_1,calendar);do{Stringbefore_time=format_1.format(calendar.getTime());Stringbefore_time_2=format_2.format(calendar.getTime());Stringbefore_time_3=format_3.format(calendar.getTime());intzhou=subDate/7+1;intday_of_week=calendar.get(calendar_1.DAY_OF_WEEK);switch(day_of_week){case1:week_name="星期日";break;case2:week_name="星期一";break;case3:week_name="星期二";break;case4:week_name="星期三";break;case5:week_name="星期四";break;case6:week_name="星期五";break; case7:week_name="星期六";break;}_sql="select*fromcourse_infowhereclass_id=""+class_id+""andyear_id=""+year_id+""andteacher_id=""+teacher_id+""andweek_name=""+week_name+""andkecheng_id=""+kecheng_id+""";_rs=conn.executeQuery(_sql);if(_rs.next()){do{Stringstatus=_rs.getString("status");intpd=zhou%2;if(status.equals("1")&&pd==0)continue;if(status.equals("2")&&pd==1)continue;intid_2=_rs.getInt("id");//检查是否以经登记Stringsql_2="select*fromrecordwhereid=""+id_2+""andsk_time=""+before_time_3+""";ResultSetrs_2=conn.executeQuery(sql_2);if(rs_2.next())continue;%><%=before_time_2%><%=week_name%>第<%=zhou%>周<%=_rs.getString("lesson_name")%>&time=<%=before_time_3%>">登记
<%conn.close();}while(_rs.next());conn.close();}calendar.set(calendar.DATE,calendar.get(calendar.DATE)-1);subDate--;}while(calendar.after(calendar_1)&&calendar.before(calendar_2));conn.close();%>……6.1.4班主任用户功能编码根据班主任用户的详细设计要求,设计班主任用户操作页面如图6-5所示:图6-5班主任审批请假操作页面Fig6-5thepageoftheleaveexaminedandapprovedbyteacherinchargeofaclass部分代码:……<%format=newjava.text.SimpleDateFormat("yyyy-MM-ddHH:mm:ss");Stringsp_time=format.format(cur_time); sql="updateqingjiasetclass_teacher_status=""+qj_sp+"",class_teacher_restore=""+restore+"",class_teacher_sp_time=""+sp_time+""whereid=""+id+""";conn.executeUpdate(sql);conn.close();response.sendRedirect("qingjia_manager.jsp");%>……6.1.5院系领导用户功能编码根据院系领导用户详细设计的需求,设计院系领导用户操作页面如图6-6所示:图6-6院系领导查询学生考勤信息页面Fig6-6thepageofattendanceinformationcheckedbycollegeleader部分代码:select_stu.jsp……<%request.setCharacterEncoding("GBK");sql="select*fromstudent_c_s_cwherecollege_id=""+college_id+""and";Stringsql_2=""; stu_number=request.getParameter("stu_number");stu_name=request.getParameter("stu_name");if(stu_number.equals("")&&!stu_name.equals("")){sql_2=sql+"stu_namelike"%"+stu_name+"%"";}elseif(!stu_number.equals("")&&stu_name.equals("")){sql_2=sql+"stu_numberlike"%"+stu_number+"%"";}else{sql_2=sql+"stu_namelike"%"+stu_name+"%"andstu_numberlike"%"+stu_number+"%"";}%>考勤统计首页全院考勤统计信息  查询  刷新  返回

查询学生考勤统计信息

学号: 姓名:学号姓名性别年级专业班级考勤详细信息
<%ResultSetrs_stu=null;rs_stu=conn.executeQuery(sql_2);if(rs_stu.next()){do{%><%=rs_stu.getString("stu_number")%><%=rs_stu.getString("stu_name")%><%=rs_stu.getString("stu_sex")%><%=rs_stu.getString("grade_name")%>级<%=rs_stu.getString("sp_name")%> <%=rs_stu.getString("class_number_name")%>班">查看
<%}while(rs_stu.next());}else{%>
没有此学生记录!
<%}%>……6.2数据库连接池编码6.2.1数据库连接池程序编码/*SQLServer2000连接池对数据库的所有操作*/packageSQLBean;importjavax.naming.*;importjavax.sql.*;importjava.sql.*;publicclassDBConn{publicContextctx=null;publicConnectioncnn=null;Statementstmt=null;ResultSetrs=null;DataSourceds=null;publicDBConn(){//构造函数,查找连接池资源 try{ctx=newInitialContext();if(ctx==null)thrownewException("notenvironment");ds=(DataSource)ctx.lookup("java:comp/env/jdbc/kaoqin");if(ds==null)thrownewException("notfinddataBase");}catch(Exceptione){System.err.println(e.getMessage());}}//执行所有的查寻操作publicResultSetexecuteQuery(Stringsql){try{cnn=ds.getConnection();stmt=cnn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);rs=stmt.executeQuery(sql);}catch(SQLExceptione){System.err.println(e.getMessage());}returnrs;}//执行所有的删除,修改、添加操作publicintexecuteUpdate(Stringsql){intresult=0;try{cnn=ds.getConnection();stmt=cnn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY); result=stmt.executeUpdate(sql);}catch(SQLExceptione){System.err.println(e.getMessage());}returnresult;}//关闭与数据库的连接publicvoidclose()throwsSQLException{try{if(rs!=null){rs.close();}if(stmt!=null){stmt.close();}if(cnn!=null){stmt.close();}if(ctx!=null){ctx.close();}}catch(Exceptione){System.err.println(e.getMessage());}}}6.2.2连接池配置文件server.xml配置文件:(注:针对Tomcat5.5)kaoqin.xml配置文件(注:针对Tomcat5.5) 第7章软件测试7.1引言在开发软件的过程中,人们使用了许多保证软件质量的方法分析、设计和实现软件,但难免还会在工作中犯错误。这样,在软件产品中就会隐藏许多错误和缺陷,尤其是对规模大、复杂性高的软件更是如此。所以,必须进行认真、计划、彻底的软件测试。7.2测试方案7.2.1黑盒测试黑盒测试,又称为功能测试。对于软件测试而言,黑盒测试把程序看成一个黑盒子,完全不考虑程序的内部结构和处理过程。也就是说,黑盒测试是在程序接口进行的测试,它只检查程序功能是否能按照规格说明书的规定正常使用,程序是否能适当地接收输入数据产生正确的输出信息,并且保持外部信息(如数据库或文件)的完整性。该测试方案的设计技术主要有:等价划分、边界值分析以及错误推测法等。7.2.2白盒测试白盒测试的前提是可以把程序看成装在一个透明的白盒子里,也就是完全了解程序的结构和处理过程。这种方法按照程序内部的逻辑测试程序,检验程序中的每条通路是否能按预定要求正确工作。故白盒测试又被称为是结构测试。该测试方案的设计技术主要有逻辑覆盖法等。7.2.3其它测试方案除了以上两种测试方案外,还有其它的测试方案。包含所有可能情况的测试称为穷尽测试。对于实际程序而言,穷尽测试通常是不可能做到的。因为不可能对每一种可能的情况都进行测试。7.2.4本系统所采用测试方案基于以上测试方法,本人选取的是模块测试和系统测试,模块测试部分由本人程序设计过程中自主完成,系统测试部分由同学模拟各种用户登录代为完成。7.3测试过程7.3.1用户登陆测试 用户登陆测试是测试系统访问的安全性,以及各个页面的设计的安全性,测试方案如下(表6-1)所示:表6-1用户类型用户名密码空密码错误密码/用户名错误类型学生否否否任课老师否否否班主任否否否院系领导xinxi_02否否否学校领导school否否否说明:上表中的“否”表示拒绝访问,没有通过系统的身份验证。“是”表示可以访问系统。通过上表反复测试黑盒测试可知,系统用户在登陆安全方面不存在问题,用户必须选择正确的类型,使用正确的用户名、密码方能使用此系统。7.3.2页面使用安全测试此测试过程主要是测试系统各个页面的安全性,即在用户没有登录的情况直接在浏览器地址中输入要打开的用户页面,或者用户以正确的用户名和密码进入系统后,直接在浏览器地址中输入别的用户的页面,测试各页面是否不需要用户登录就可使用,或者是否可以绕过身份验证。第一步:在用户没登陆系统的情况下,直接在浏览器中输入http://127.0.0.1/kaoqin/student/student.jsp此地址是学生用户首页的完全地址,看是否能打开操作。测试结果:提示用户还没登陆的错误信息。依次测试别的页面,别的用户,测试结果都是:提示用户还没登陆的错误信息。第二步:以学生正确的用户我和密码进入学生系统后,在浏览器中输入任课老师首页地址:http://127.0.0.1/kaoqin/teacher/teacher.jsp看是否能绕过身份验证,打开别的用户的页面。测试结果:提示没有权限的错误信息。用同样的方法测试别的页面,别的用户都得到了同样的测试结果:提示没有权限的错误信息。测试结果:通过以上测试可知,系统各个页都有很好的安全性,每个页面都不允许用户在没有登陆的前提下访问,用户在登陆后,也不充许用户访问别的用户类型的页面,即不能绕过身份验证。 7.3.3学生用户测试一、请假系统测试请假系统是学生用户的核心功能,由于涉及的用户比较多,此部分的测试是在几个同学的配合下完成,主要完成以下几个测试:1.空值测试:在请假开始时间、结束时间、请假原因都为空或部分为空的情况下,直接点提交数据在线请假。测试结果:系统拒绝提交数据,并能正确的做出相应的提示,如**不能为空的错误信息。2.错误的时间选择测试:在开始时间与结束时间选择的时间,把结束时间选择一个开始时间以前的时间,然后提交数据。测试结果:提示时间选择错误的提示信息。3.超前请假测试:开始时间选择一个与当前时间相差一个大于7天的日期请假。测试结果:提示只能提前7天请假的错误信息。4.超后请假测试:在开始时间中选择一个当前系统时间以前开始日期请假。测试结果:提示不能请过去时间的假的错误信息。5.超长时间请假测试:在开始时间与结束时间中,选择一个相差30的日期请假。测试结果:提示不能请大于30天的请假。6.重复请假测试:先申请一条当天日期的请假,申请成功后,再申请一条今天到明天两天的请假。测试结果:提示不能重复请假的错误信息。7.小于4天的请假测试:开始时间与结束时间之差小于四天的请假测试。测试结果:提交数据后,在等待审批的请假记录中出现一条新的记录,并显示了申请时间,班主任审批处显示了“等待批假”的提示信息,而院系审批处没有显示“等待批假”的提示信息。8.大于4天的请假测试:开始时间与结束时间之差大于四天的请假测试:测试结果:提交数据后,在等待审批的请假记录中,班主任审批处以及院系领导审批处都提示“等待批假“的提示信息。9.班主任批假测试:班主任进入系统后,测试审批学生请假。测试结果:小于四天的请假,班主任若同意了请假,则学生记录成功记录中出现了请假成功的记录。班主任同意的请假中同时也出现了此条记录。若不同意请假,则提示此学生请假失败。大于四天的请假,班主任若同意了请假,则出现等待院系审批的提示信息。 1.院系批假测试:院系领导进入系统后,大于四天的记录,且班主任同意请假的记录出现在了等待审批的请假记录中。测试结果:同意请假,则学生、班主任、院系领导用户中同时出现请假成功信息,不同意请假,则学生、班主任、院系领导同时出现请假失败的信息。二、修改密码测试1.空值测试:在不输入原始密码、新密码、确认密码或部分为空的情况下,直接点击修改密码。测试结果:提示请输入原始密码的错误信息。2.错误原始密码测试:输入错误原始密码,新密码、确认密码一致的测试。测试结果:提示原始密码不正确的错误信息。3.确认密码不正确的测试:输入正确的原始密码,而确认密码不正确的测试。测试结果:提示确认密码不正确的错误信息。7.3.4任课老师用户测试一、考勤管理测试1.正确提示登记测试:进入指定的登记页面,修改系统日期看是否能根据系统日间的变化,显示出上过课,但学没登记的提示信息。测试结果:若当前日期为2005-05-30,则本学期在2005-05-30前的所有不没登记的考勤信息自动列出来,而且能自动识别课表安排的单/双周。更换时间,都能得到正确的结果。2.考勤登记测试:进入指定页面后,一个学生在当天上课时已经请假成功了,任课老师提交数据时选择此学生旷课。测试结果:在考勤统计信息和详细信息中,出现了此学生请假的出勤信息。7.3.5班主任用户测试1.班级信息测试测试一个班主任是否可以同时带多个班级、每个学期带不同的班。测试结果:班主任能同时带多个班级,每学期可带不同的班级。2.考勤信息测试:测试班主任是否可以查看本班学生本学期考勤统计信息及详细信息。测试结果:班主任能查看本班学生本学期考勤统计信息及详细信息。7.3.6院系领导/学校领导用户测试一、考勤信息测试 1.空值查询测试:在查询学生考勤信息页面中,不输入查询条件进行查询测试。测试结果:提示必须有一个查询件的错误信息。2.单条件下查询测试:查询条件在只有学号或姓名的情况下进行查询。测试结果:系统列出了所有相关记录,如姓名中只有一个“王”字,那么全院/全校所有姓名中有“王”字的学生信息都全部列出来,并都可以查看详细考勤信息 总结通过几个月的努力,高校学生考勤管理系统中的两大功能模块:请假系统和考勤系统在指导老师的全心指导下,在同学的积极配合与帮助下,基本功能顺利完成。在数据库的开发方面,我学到了不少关于JSP和SQLServer2000的知识。开发时遇到了许多的困难,但是通过自己的努力,还有老师同学们的帮助,最终还是迎刃而解了。这次毕业设计完全是按照软件工程学的方法来进行设计和开发的。在开发过程中,认真调查分析了用户的需求,及时准备了详细的文档资料,这让我在开发过程中少走了许多弯路。本次设计开发的系统较为庞大,涉及的用户较多,数据库设计比较复杂,使我深刻地体会到软件开发是一项集体项目,单靠一个人就想解决所有的问题是不太实际的。在本次毕业设计中,我和同学共同实现了高校学生考勤管理系统的全部功能,很好的锻炼了我的团队协作意识,这对我以后的学习、工作有很大的帮助。同时,在这次设计中,我也发现了自己的很多不足。首先,对JSP的掌握还不是很全面,对于数据库管理系统的操作运用也不够熟练,以至于在系统开发过程中经常碰到一些疑难问题不能快速的解决。其次,就是在准备系统设计文档时,没有反复推敲、验证,以至于在开发过程中出现几次由于数据库设计不合理,修改数据库,而几乎修改所有程序代码的情况。再者,是对整个软件开发的把握能力有待于进一步提高,以及对网页设计的诸多方面知识也待进一步学习,这些都是我今后应该注意和提高的。 参考文献参考的资料有以下:[1]肖金秀JSP程序设计教程北京:冶金工业出版社[2]孙晓龙JSP动态网站技术入门与提高北京:人民邮电出版社[3]杨学瑜JSP入门与提高北京:清华大学出版社[4]鲁晓东JSP软件工程案例精解北京:电子工业出版社[5]印旻Java语言与面向对象程序设计北京:清华大学出版社[6]皮德常Java2简明教程北京:清华大学出版社[7]萨师煊王珊编著,《数据库系统概论》,高等教育出版社[8]张海藩编著《软件工程导论》,清华大学出版社[9]赛奎春JSP工程应用与项目实践北京:机械工业出版社[10]汪孝宜JSP数据库开发实例精粹北京:电子工业出版社[11]魏茂军JSP案例开发北京:中国水利水电出版社[12]黄明JSP信息系统设计与开发实例北京:机械工业出版社[13]屈辉立JSP网站编程教程北京:北京希望电子出版社[14]孙卫琴Tomcat与JavaWeb开发技术详解北京:电子工业出版社[15]张桂元Struts开发入门与项日实践北京:人民邮电出版社参考网站:一、http://java.sun.comjava官方网站二、http://www.apache.orgTomcat官方网站 致谢在这段日子里,指导教师黄华,以及身边的同学给了我很多的帮助及耐心的教导。在此,对所有给我支持与帮助的老师与同学衷心的道一声“谢谢”!如果没有你们的帮助,我的课题肯定不能如此顺利迅速的完成。 附录附录一:文献资料原文J2EEWEB应用架构分析1、架构概述J2EE体系包括javaserverpages(JSP),javaSERVLET,enterprisebean,WEBservice等技术。这些技术的出现给电子商务时代的WEB应用程序的开发提供了一个非常有竞争力的选择。怎样把这些技术组合起来形成一个适应项目需要的稳定架构是项目开发过程中一个非常重要的步骤。完成这个步骤可以形成一个主要里程碑基线。形成这个基线有很多好处:各种因数初步确定:为了形成架构基线,架构设计师要对平台(体系)中的技术进行筛选,各种利弊的权衡。往往架构设计师在这个过程中要阅读大量的技术资料,听取项目组成员的建议,考虑领域专家的需求,考虑赞助商成本(包括开发成本和运行维护成本)限额。一旦架构设计经过评审,这些因数初步地就有了在整个项目过程中的对项目起多大作用的定位。定向技术培训:一旦架构师设计的架构得到了批准形成了基线,项目开发和运行所采用的技术基本确定下来了。众多的项目经理都会对预备项目组成员的技术功底感到担心;他们需要培训部门提供培训,但就架构师面对的技术海洋,项目经理根本就提不出明确的技术培训需求。怎不能够对体系中所有技术都进行培训吧!有了架构里程碑基线,项目经理能确定这个项目开发会采用什么技术,这是提出培训需求应该是最精确的。不过在实际项目开发中,技术培训可以在基线确定之前与架构设计并发进行。角色分工:有了一个好的架构蓝图,我们就能准确划分工作。如网页设计,JSP标签处理类设计,SERVLET设计,sessionbean设计,还有各种实现。这些任务在架构蓝图上都可以清晰地标出位置,使得项目组成员能很好地定位自己的任务。一个好的架构蓝图同时也能规范化任务,能很好地把任务划分为几类,在同一类中的任务的工作量和性质相同或相似。这样工作量估计起来有一个非常好的基础。 运行维护:前面说过各个任务在架构图上都有比较好的定位。任何人能借助它很快地熟悉整个项目的运行情况,错误出现时能比较快速地定位错误点。另外,有了清晰的架构图,项目版本管理也有很好的版本树躯干。扩展性:架构犹如一颗参天大树的躯干,只要躯干根系牢,树干粗,长一些旁支,加一些树叶轻而易举无疑。同样,有一个稳定的经得起考验的架构,增加一两个业务组件是非常快速和容易的。大家都知道这些好处,一心想形成一个这样的J2EE应用程序架构(就像在windows平台中的MFC)。在这个路程中经历了两个大的阶段:模型1模型1其实不是一个什么稳定架构,甚至谈不上形成了架构。模型1的基础是JSP文件。它从HTTP的请求中提取参数,调用相应的业务逻辑,处理HTTP会话,最后生成HTTP文档。一系列这样的JSP文件形成一个完整的模型1应用,当然可能会有其他辅助类或文件。早期的ASP和PHP技术就属于这个情况。总的看来,这个模型的好处是简单,但是它把业务逻辑和表现混在一块,对大应用来说,这个缺点是令人容忍不了的。模型2在经过一番实践,并广泛借鉴和总结经验教训之后,J2EE应用程序终于迎来了MVC(模型-视图-控制)模式。MVC模式并不是J2EE行业人士标新立异的,所以前面我谈到广发借鉴。MVC的核心就是做到三层甚至多层的松散耦合。这对基于组件的,所覆盖的技术不断膨胀的J2EE体系来说真是福音和救星。它在浏览器(本文对客户代理都称浏览器)和JSP或SERVLET之间插入一个控制组件。这个控制组件集中了处理浏览器发过来的HTTP请求的分发逻辑,也就是说,它会根据HTTP请求的URL,输入参数,和目前应用的内部状态,把请求分发给相应的WEB层的JSP或SERVLET。另外它也负责选择下一个视图(在J2EE中,JSP,SERVLET会生成回给浏览器的html从而形成视图)。集中的控制组件也有利于安全验证,日志纪录,有时也封装请求数据给下面的WEBtier层。这一套逻辑的实现形成了一个像MFC的应用框架。2、候选方案目前,实现模型2的框架也在不断的涌现,下面列出比较有名的框架。2.1、ApacheStruts Struts是一个免费的开源的WEB层的应用框架,apache软件基金致力于struts的开发。Struts具是高可配置的性,和有一个不断增长的特性列表。一个前端控制组件,一系列动作类,动作映射,处理XML的实用工具类,服务器端javabean的自动填充,支持验证的WEB表单,国际化支持,生成HTML,实现表现逻辑和模版组成了struts的灵魂。模型:模型以一个或几个javabean的形式存在。这些bean分为三种:Formbeans(表单Beans),它保存了HTTPpost请求传来的数据,在Struts里,所有的Formbeans都是ActionFrom类的子类。业务逻辑beans,专门用来处理业务逻辑。系统状态beans,它保存了跨越多个HTTP请求的单个客户的会话信息,还有系统状态。视图:控制组件续传HTTP请求给实现了视图的JSP文件。JSP能访问beans并生成结果文档反馈到客户。Struts提供JSP标签库:Html,Bean,Logic,Template等来达到这个目的,并有利于分开表现逻辑和程序逻辑。2.2、JATOJATO应用程序框架是iPlanet应用程序框架的旧名。它是一个成熟的、强大的,基于J2EE标准的面向于开发WEB应用程序的应用框架。结合了显示字段、应用程序事件、组件层次和以页面为中心的开发方法、以及MVC和服务到工作者service-to-workers的设计模式等概念。JATO可适用于中、大、超大规模的WEB应用。但是它也不是一个企业层的应用框架,也就是说它不会直接提供创建EJB,WEBservices等企业层组件的方法,但用它可以构造出访问企业层组件的客户应用。这个框架功能主要有三部分组成:iPlanet应用框架核心;iPlanet应用框架组件;iPlanet应用框架扩展。译文AnalysisofJ2EEWEBapplicationconstruction1、theoutlineoftheconstructionJ2EEsystemincludesmanytechnologiessuchasjavaserverpages(JSP),javaSERVLET,enterprisebean,WEBserviceandsoon.ThesetechnologiesappearedhaveprovidedanextremelycompetitivechoicetothedevelopmentofWEBapplicationofelectroniccommerce.Howthesetechnologiesarecombined toformthestableconstructionwhichanadaptablprojectneedsisanimportablestepintheprojectdevelopment.Completingthisstepmayformamainmilestonebaseline.Itisaadvantagetoformthisbaseline.Manyfactorsdetermineitinitially.Inordertoformtheconstructionbaseline,theconstructiondesignermustchoosethecentertechnologyintheplatformandmeasureeachkindofadvantages.Oftentheconstructiondesignerhastocheckthemassivetechnicaldatasinthisprocess,listentothesuggestionofmembersinthecomponentproject,considerthedomainexpert"sdemandandconsiderthesponsor’scostquota(includingdevelopmentcostandmovementmaintenancecost).Oncetheconstructiondesignerappraises,thesefactorswillinitiallybelocalizatedtotheprojectplayingthemajorroleintheentireprojectprocess.Directionaltechnologytraining:Oncetheconstructionoftheconstructiondesignerisapprovedtoformthebaseline,thetechnologywhichtheprojectdevelopmentandthemovementusehasbasicallydetermined.Multitudinousprojectmanagersmayworryaboutbasicskillsofthecomponentmembers’preparedintheproject.Theyneedtobetrainedinthedepartmentprovidingtraining.Buttothetechnicalseawhichtheconstructiondesignerfaceson,projectmanagercannotproposetheexplicittechnicaltrainingdemand.Itisimpossibletocarryontrainingtoalltechnologiesinthesystem!Havingtheconstructionmilestonebaseline,projectmanagerisabletodeterminewhatthisprojectdevelopmentcoulduseanytechnology.Atthetimeproposingthetrainingdemandshouldbemostprecise.Butintheactualprojectdevelopment,technicaltrainingmaybecarriedonbeforethebaselinedeterminedconcurrently.Divisionoflabor:Havingagoodconstructionblueprint,wecanaccuratelydividetheworksuchashomepagedesign,JSPlabelprocessingclassdesign,SERVLETdesign,sessionbeandesignandmanykindsofrealizations.Thesealldutiesmaybelocatedclearlyontheconstructionblueprint,enablingtheprojectcomponentmembertolocateowndutywell.Atthesametimeagoodconstructionblueprintcanalsostandardizetheduty,dividewellthedutyintoseveralkindsinthesamekindofwhichworkloadandthenatureisidenticalor similar.Suchworkloadestimatedhasanextremelygoodfoundation.Movementmaintenance:eachdutyhasquitegoodlocalizationinacomposition.Anyonecanisfamiliarwiththemovementintheentireprojectwiththehelpofitquicklyandlocatefastwherewrongiswhenthemistakeappears.Moreover,havingtheclearframecomposition,theprojecteditionmanagementalsohasgoodeditiontreetorso.Extension:Theconstructionlikesthetorsoofatoweringbigtree.solongastorsorootsystemjail,boughthick,thelongsomecollateralbranches,addsomeleavestobeeasywithoutdoubt.Similarly,havingstableconstructionstandingthetest,itisextremelyfastandeasytoincrease12servicemodules.EverybodyknowstheseadvantageandwantstoformasuchJ2EEapplicationconstructionasit(likeMFCinwindowsplatform).Ithasexperiencedtwobigstagesinthisprocess:model1Actuallymodel1isnotstableconstruction,evenfarfromtheconstructionformed.Thefoundationofmodel1isJSPdocument.ItwithdrawstheparameterfromtheHTTPrequest,transfersthecorrespondingservicelogic,processestheHTTPconversationandfinallyproducestheHTTPdocuments.AseriesofsuchJSPdocumentformsacompletemodel1application,certainlypossiblyhavingotherassistanceskindorthedocument.TheearlierASPandthePHPtechnologybelongstothissituation.Tothesummary,theadvantageofthismodelissimple,butitmixestheservicelogicwiththeperformanceinthesameplace.Tothebigapplication,thisshortcomingisabletobetolerated.model2Throughpractice,aftersummaryinglesson,theJ2EEapplicationhasfinallywelcomedtheMVC(model-viewpneumatic-control)pattern.TheMVCpatternisnotsomethingnewanddifferentwhichtheJ2EEprofessionerproposes.ThereforeinthefrontItalkedaboutprofitingwidely.ThecoreoftheMVCistoachievethreeorevenmulti-layeredloosecouplings.TotheJ2EEsystemwhichhasto basedonthemoduleandwhichcoveredthetechnologyinflatesunceasingly,itreallyisthegospelandtheliberator.Itinsertsacontrolmodulebetweeninthebrowser(inthisarticleallthecustomerproxysarecalledbrowser)andJSPorSERVLET.ThiscontrolmoduleconcentratesHTTPrequestdistributionlogicwhichissentbythebrowserprocessed.Inotherwords,itcouldinputparameteraccordingtoHTTPrequestURL,withthepresentapplicationinternalcondition,givingtherequesttodistributetheJSPorSERVLETofthecorrespondingWEBlevel.Moreover,italsoisresponsibleforchoicingnextview(inJ2EE,JSPandSERVLETcanproducehtmlforbrowsertoformtheview).Thecentralismcontrolmoduleisalsoadvantageoustothesafetycertification,thediaryrecordandsometimesalsosealstherequestdatatogivethefollowingWEBtierlevel.ThissetoflogicalrealizationformsoneapplicationframelikeMFC.2、candidateplanAtpresent,therealizationframesofthemodel2alsoemergeunceasingly.listsomefamousframesasfollows.2.1、ApacheStrutsStrutsisafreeandopenapplicationframeofthesourceWEBlevel.Andtheapachesoftwarefunddevotestothedevelopmentofthestruts.Strutshasthenaturewhichishighlydisposedandhasthecharacteristictabulationwhichgrowsunceasingly.Thefrontcontrollingmodule,aseriesofmovementsclass,themovementmapping,thepracticaltoolclassprocessingXML,theautomaticpackingoftheservercarriesjavabean,theWEBformsupportingconfirmation,theinternationalsupport,theproducedHTML,realizationperformancelogicandthepatternplatehascomposedthesoulofthestruts.Model:Modelexistsasoneorseveraljavabeans.Thesebeansaredividedintothreekinds.Formbeans(formBeans),ithaspreservedthedatawhichtheHTTPpostrequeststotransmit.InStruts,alloftheFormbeansarethesubclassoftheActionFromclass.Servicelogicbeansistobeusedtoprocesstheservice logicspecially.SystemmodebeanspreservetheconversationinformationofsinglecustomerwhosurmountesmanyHTTPrequestsandthesystemmode.View:ContinuetopasstheHTTPbytheControlledmodulerequestrealizestheJSPdocumentofview.JSPcanvisitbeansandproducetheresultdocumentstofeedbacktothecustomer.StrutsprovidestheJSPlabelstorehousetoachievethisgoalsuchasHtml,Bean,Logic,Templateandsoon.Anditisadvantageousinseparatingtheperformancelogicandprocedurelogic.2.2、JATOTheJATOapplicationframeisoldnameoftheiPlanetapplicationframe.Itisonemature,formidableapplicationframewhichfacestodevelopeWEBapplicationbasedontheJ2EEstandard.Itunifiedthedemonstrationfield,theapplicationevent,themodulelevel,themethodsofexploitationtakingthepageasthecenter,aswellasMVCanddesigningpatternwithservice-to-workersconceptsandsoon.JATOissuitableforbig,ultralarge-scaleWEBapplication.Butitisnotapplicationframeoftheenterpriselevel.Inotherwords,itcannotprovidedirectlythemethodsofEnterpriselevelmodulesuchasfoundingEJBandWEBservices.Butitmaystructthecustomerapplicationwhichcanvisittheenterpriselevelmodule.Thefunctionofthisframeismainlycomposedofthreeparts:thecoreofiPlanetapplicationframe;themoduleofiPlanetapplicationframe;theexpansionofiPlanetapplicationframe.附录二、系统部署及使用手册开发工具的安装与配置本系统是跨平台的,可以在Windows、Linux、Unix等所有操作系统下,不需要做任何修改就能运行,由于Windows平台运用最为广泛,在这里只介绍系统在Windows平台下的部署,别的平台部署自己查阅相关资料。本系统采用B/S结构,因此客户端几乎不需要做任何安装,以下主要介绍服务器端的部署。一、JDK的安装及配置1)简介   JDK(JavaDevelopmentKit)是一切java应用程序的基础,可以说,所有的java应用程序是构建在这个之上的。它是一组API,也可以说是一些javaClass。目前已经正式发布的最新版本是JDK1.5。目前大多数都是在MS系统下,所以,在这里以在win2000下安装为例进行介绍。2)下载与安装  下载地址为JAVA官方站点:http://java.sun.com。Windows下,直接运行.exe文件,安装到一个目录,我这里用C:jdk1.5.0_06为例子。3)配置桌面上选择“我的电脑”(右键)选择“高级”--->“环境变量”-->“用户变量”-->“新建”在变量名中输入:CLASSPATH,变量值中输入:“.;C:jdk1.5.0_06LIBdt.JAR;C:jdk1.5.0_06LIBTOOLS.JAR;”然后确定;注意:“.;”不能少,代表当前路径。桌面上选择“我的电脑”(右键)选择“高级”--->“环境变量”--->“系统变量”,选择path选项,点“编辑”在变量值中增加“C:jdk1.5.0_06bin;”。配置完了,要重新启动计算机后,环境变量才能有效。一、Tomcat的安装及配置1)简介自从JSP发布之后,推出了各式各样的JSP引擎。ApacheGroup在完成GNUJSP1.0的开发以后,开始考虑在SUN的JSWDK基础上开发一个可以直接提供Web服务的JSP服务器,当然同时也支持Servlet。Tomcat是完全免费的软件,任何人都可以从互联网上自由地下载。目前最新版本是tomcat-5.5.16。2)下载与安装下载地址是官方网站http://jakarta.apache.org。用户可选择下载原代码或已经编译好的压缩包。在安装Tomcat前,你的Win2000下应该已经安装了JDK,并且你应该已经能大致了解JDK、Tomcat在系统中的地位和相互关系。如果你还没有安装好JDK,你可以参阅JDK的安装及配置。Tomcat不需要安装,下载解压后就可直接使用,且可在各种平台下使用。3)配置 在桌面上选择“我的电脑”,右键点出菜单,选择属性,弹出对话框“系统特性”,选择“高级”选项页,然后点“环境变量”,就可以编辑系统的环境变量。在用户变量中选择“新建”选项,变量名为JAVA_HOME,值为:“C:jdk1.5.0_06”,同样新建另外一个变量名为:TOMCAT_HOME,变量值为:“C:Tomcat5.5”。接下来就可以执行startup.bat。测试一下Tomcat是否运行正常。当Tomcat能正常启动后,打开浏览器,在浏览器中输入“http://localhost:8080”,若能显示Tomcat的欢迎首页,Tomcat已经成功安装好了。三、SQLServer2000的安装及配置1)简介SQLServer2000是Microsoft公司开发出来的大型关系数据系统,其可靠性、高全性等卓越的性能得到用户一致的好评。2)安装将安装光盘放入光驱就可根据提示自动安装,这里不再重述。3)配置安装好SQLServer2000后,几乎不需要做什么配置,但有一个非常要注意的地方是,检查一下默认的端口1433是否打开了,若没打开,应用程序将无法连接到数据库。检验方法:支命令提示下运行:netstat–an检查端口是否打开。若没打开,就要安装SP3以上的补丁。系统部署高校学生考勤管理系统用JSP+SQLServer2000设计,数据库连接使用当前流行的连接池来实现,在部署系统时,请按以下步骤来完成。注意:前提是您以经正确安装好了JDK、Tomcat、SQLServer2000,若还没安装好,请参考附录一。Ø将打包文件kaoqin.war放到Tomact安装目录下的webapps子目录中,在您重启Tomcat的时候,Tomcat会自动解压。Ø在SQLServer2000中新名kaoqin的数据库,将数据库备份kaoqin.bak还原到kaoqin数据库,并将sa用户的密码设为:。 Ø将jtds-1.2.jar文件考%Tomcat_home%commonlib目录下。Ø将server.xml文件覆盖%Tomcat_home%conf目录下的server.xml文件。Ø将kaoqin.xml文件拷贝到%Tomcat_home%confCatalinalocalhost目录下。Ø重新启动Tomact,在浏览器中输入http://localhost:8080/kaoqin用户操作手册一、学生操作手册1.在线请假学生“首页”——“请假系统”——“在线请假”进入请假申请操作页面,填写好请假开始时间、结束时间、请假原因后,点击“提交”按钮就完成了请假申请。随后您可以在“等待审批的请假”中看到请假审批的进展情况,同时在“成功的请假记录”和“失败的请假记录”中看到请假历史记录。注意:只请假一天的话,开始时间与结束时间填写同一天,依此类推。2.查看考勤信息学生“首页”——“考勤信息”进入当前学年本人所有课程的考勤统计信息,同时可以查看有关课程的详细信息,学生在“历年考勤信息”中可以查看历年的考勤信息。二、班主任操作手册1.审批学生请假班主任“首页”——“请假系统”——“审批请假”若有本班学生请假,则列出了相关链接,点击相关“审批”链接,进入审批学生请假页面,此页面列出了有关学生请假的详细信息,班主任认真审批后,选择“同意”或“不同意”来审批学生请假。2.查看考勤信息班主任“首页”——“考勤信息”页面列出所带班级的信息,点击相关“查看”链接就可相关班级所有课程学生考勤的统计信息及详细信息。三、任课老师操作手册1.发布学生上课出勤信息任课老师“首页”——“考勤管理”页面列出了本学年所教班级以及所教课程的相关信息,点击相关“管理“链接” 就进入相关的考勤管理页面,页面自动提示到当前日期为止,还没有发布的出勤信息的链接。进入相关链接就可以发布学生上课出勤信息。2.查看/修改学生出勤信息任课老师:“首页”——“考勤信息”页面中列出了所教班级所教课程的基本相关信息,点击相关“查看”链接就可看到有关的学生出勤统计信息及详细信息,在个人的出勤详细中,可以适当的修改,如删除某条学生出勤记录。四、院系领导操作手册1.审批学生请假院系领导“首页”——“请假系统”——“审批请假”若有本班学生请假,则列出了相关链接,点击相关“审批”链接,进入审批学生请假页面,此页面列出了有关学生请假的详细信息,班主任认真审批后,选择“同意”或“不同意”来审批学生请假。2.查看班级、学生上课出勤信息院系领导“首页”——“考勤统计”页面,在“全院考勤统计”页面中可以分班级查看学生上课出勤的统计信息及详细信息。在“查询”页面中,可以根据“学号”或“姓名”两者或两都之一对学生上课出勤信息进行详细查询。3.查看本院系相关信息在“院系信息“、”班主任信息“、”教师信息“、”班主任安排“中可以查看本院系的一些相关信息。五、学校领导操作手册1.查看全校班级、学生上课出勤信息学校领导“首页”——“考勤统计”页面,在“全校考勤统计”页面中可以分班级查看学生上课出勤的统计信息及详细信息。在“查询”页面中,可以根据“学号”或“姓名”两者或两都之一对学生上课出勤信息进行详细查询。2.查看本校相关信息在“学校信息”、“院系信息“、”班主任信息“、”教师信息“、”班主任安排“、“全校课表”中可以查看本校的一些相关信息。 共享资料,信息互通。本人提供部分设计文档参考,需要更多相关资料和设计源代码。请加QQ:e马,陪F?lm嫄W圹獑??N€?)?0?q??3拞屓??p勌m:b5a漬璺1疆lv~0瘩艌v€??`@2屘b瘌Tq〆妋4U~K袢,疀薤`,A6玭$?$徤?|ッ?罪=T?G驳op1尚懇袹戦疈u圻?赓O?a?*{p懡0L)w懱拽?E???/扢]?9镃/潺hRQ烞b蔔Ye嚁剂Bb?捚?悭曥T?UFUZ!醋M[M蘇g壶鲦伸???qfg%厧1"t?€戯愤焿驆罳騙^萡P?躀cP縮蒕?nP砫}?C?Z豸值?<箾殶竛吐K?M毂?藑琶q@v栃??譇>橒忋喏曚NI耔nENB峢mT鸏s眑+?該Ζ|紖?>!汩?脍f抙氄宨澻S箔XM竴玐訨?V?脶?,B衹絵2n吞輷匽e马e马,陪F?lm嫄W圹獑??N€?)?0?q??3拞屓??p勌m:b5a漬璺1疆lv~0瘩艌v€??`@2屘b瘌Tq〆妋4U~K袢,疀薤`,A6玭$?$徤?|ッ?罪=T?G驳op1尚懇袹戦疈u圻?赓O?a?*{p懡0L)w懱拽?E???/扢]?9镃/潺hRQ烞b蔔Ye嚁剂Bb?捚?悭曥T羁8?p~蟇7硏枫{pg裋.1瑡2陹?泝Z祘?$赇?諑矽?|D蚈/盰#,vDlE嵮禋T?NI耔nENB峢mT鸏s眑+?該Ζ|紖?>!汩?脍f抙氄宨澻S箔XM竴玐訨?V?脶?,B衹絵2n吞輷匽之銻蚗v枉h5di:t詮I?懑忋忑殆#懛嗕!V汁赸l偎蠽れMヌn?~鈹舤Y?忩eF"Hga}厏a堳膷Q?h芛vf???瘐?c+粂鰌q惦ez赸l偎蠽れMヌn?~鈹舤Y?忩eF"Hga}厏a堳膷Q?h芛vf???瘐?c+粂鰌q惦e摭F讷,ド#RU?遴?eyk?窅脆?_躵y胶?宗卝?XA蛋?H7曮Z-e马,陪F?lm嫄W圹獑??N€?)?0?q??3拞屓??p勌m:b5a漬璺1疆lv~0v€b瘌Tq〆妋4U~K袢,疀薤`,A6玭$?$徤?|ッ?罪=T?G驳op1尚懇袹戦疈u圻?赓O?a?*{p懡0L)w懱拽?E???/扢]?9镃/潺hRQ烞b蔔Ye嚁剂Bb?捚?悭曥T?UFUZ!醋M[M蘇g壶鲦伸???qfg%厧1"t?€戯愤焿驆罳騙^萡P?躀cP縮蒕?nP砫}?C?Z豸值?<箾殶竛吐K?M毂?藑琶q@v栃??譇>橒忋喏曚NI耔nENB?%?*H?棐鑉涛3峽{Z乙v徻3?珄餖朮爟♀?W圐葴^逑辢鈁e??籋鰫.僂?p~蟇7硏枫{pg裋.1瑡2陹?泝Z祘?$赇?諑矽?|D蚈/盰#,vDlE嵮禋T羁8?p~蟇7硏枫{pg裋.1瑡2陹?泝Z祘?$赇?諑矽?|D蚈/盰#,vDlE嵮禋T?NI耔nENB峢mT鸏s眑+?該Ζ|紖?>!汩?脍f抙氄宨澻S箔XM竴玐訨?V?脶?,B衹絵2n吞輷匽之銻蚗v枉h5di:t詮I?懑忋忑殆#懛嗕寒絫赸l偎蠽れMヌn?~鈹舤Y?忩eF"Hga}厏a堳膷Q?h芛vf???瘐?c+粂鰌q惦ez赸l偎蠽れMヌn?~鈹舤Y?忩eF"Hga}厏a堳膷Q?h芛vf???瘐?c+粂鰌q惦e摭F讷,ド#RU?遴?eyk?窅脆?_躵y胶?宗卝?XA蛋?H7曮Z-e马,陪F?lm嫄W圹獑??N€?)?0?q??3拞屓??p勌m:b5a漬璺1疆lv~0瘩艌v€??`@2屘b瘌Tq〆妋4U~K袢,疀薤`,A6玭$?$徤?|ッ?罪=T?G驳op1尚懇袹戦疈u圻?赓O?a?*{p懡0L)w懱拽?E???/扢]?9镃/潺hRQ烞b蔔Ye嚁剂Bb?捚?悭曥T?UFUZ!醋M[M蘇g壶鲦伸???qfg%厧1"t?€戯愤焿驆罳騙^萡P?躀cP縮蒕?nP砫}?C?Z豸值?<箾殶竛吐K?M毂?藑琶q@v栃??譇>橒忋喏曚NI耔nENB?%?*H?棐鑉涛3峽{Z乙v徻3?珄餖朮爟♀?W圐葴^逑辢鈁e??籋鰫.僂T8?p~蟇7硏枫{pg裋.1瑡2陹?泝Z祘?$赇?諑矽?|D蚈/盰#,vDlE嵮禋羁8?p~蟇7硏枫{妋4U~K袢,疀薤`,A6玭$?$徤?|ッ?罪=T?G驳op1尚懇袹戦疈u圻?赓O?a?*{p懡0L)w懱拽?E???/扢]?9镃/潺hRQ烞b蔔Ye嚁剂Bb?捚?悭曥T?UFUZ!醋M[M蘇g壶鲦伸???qfg%厧1"t?€戯愤焿驆罳騙^萡P?躀cP縮蒕?nP砫}?C?Z豸pg裋.1瑡2陹?泝Z祘?$赇?諑矽?|D蚈/盰#,vDlE嵮禋TNI耔nEN峢mT鸏s眑+?該Ζ|紖?>!汩?脍f抙氄宨澻S箔XM竴玐訨?V?脶?,B衹絵2n吞輷匽之銻蚗v枉h5di:羁8?p~蟇7硏枫{pg裋.1瑡2陹?泝Z祘?$赇?諑矽?|D蚈/盰#,vDlE嵮pg裋.1瑡2陹?泝Z祘?$赇?諑矽?|D蚈/盰#,vDlE嵮禋TNI耔nEN峢mT鸏s眑+?該Ζ|紖?>!汩?脍f抙氄宨澻S箔XM竴玐訨?V?脶?,B衹絵2n吞輷匽之銻蚗v枉h5di:羁8?p~蟇7硏枫{pg裋.1瑡2陹?泝Z祘?$赇?諑矽?|D蚈/盰#,vDlE嵮禋TNI耔nEN峢mT鸏s眑+?該Ζ|紖?>!汩?脍f抙氄宨澻S箔XM竴玐訨?V?脶?,B衹絵2n吞輷匽之銻蚗v枉h5di:t詮I?懑忋忑殆#懛嗕!V汁`鏹豑寒絫赸l偎蠽れMヌn?~鈹舤Y?忩eF"Hga}厏a堳膷Q?h芛vf???瘐?c+粂鰌q惦ez赸l偎蠽れMヌn?~鈹舤Y?忩eF"Hga}厏a堳膷Q?h芛vf???瘐?c+粂鰌q惦e摭F讷,ド#RU?遴?eyk?窅脆?_躵y胶?宗卝?X蛋?H7曮Z-e马,陪F?lm嫄W圹獑??N€?)?0?q??3拞屓??p勌m:b5a漬璺1疆lv~0瘩艌v??`@2屘b瘌Tq〆禋TNI耔nEN峢mT鸏s眑+?該Ζ|紖?>!汩?脍f抙氄宨澻S箔XM竴玐訨?V?脶?,B衹絵2n吞輷匽之銻蚗v枉h5di:t詮I?懑忋忑殆#懛嗕!V汁`鏹豑寒絫赸l偎蠽れMヌn?~鈹舤Y?忩eF"Hga}厏a堳膷Q?h芛vf???瘐?c+粂鰌q惦ez赸l偎蠽れMヌn?~鈹舤Y?忩eF"Hga}厏a堳膷Q?h芛vf???瘐?c+粂鰌q惦e摭F讷,ド#RU?遴?eyk?窅脆?_躵y胶?宗卝?X蛋?H7曮Z-e马,陪F?lm嫄W圹獑??N€?)?0?q??3拞屓??p勌m:b5a漬璺1疆lv~0瘩艌v€?`@2屘b瘌Tq〆值?<箾殶竛吐K?M毂藑琶q@v栃??譇>橒忋喏曚NI耔nEN?%?*H?棐鑉涛3峽{Z乙v徻3?珄餖朮爟♀?W圐葴^逑辢鈁e??籋鰫.僂T羁8?p~蟇7硏枫{pg裋.1瑡2陹?泝Z祘?$赇?諑矽?|D蚈/盰#,vDlE嵮禋t詮I?懑忋忑殆#懛嗕!V汁`鏹豑寒絫赸l偎蠽れMヌn?~鈹舤Y?忩eF"Hga}厏a堳膷Q?h芛vf???瘐?c+粂鰌q惦ez赸l偎蠽れMヌn?~鈹舤Y?忩eF"Hga}厏a堳膷Q?h芛vf???瘐?c+粂鰌q惦e摭F讷,ド#RU?遴?eyk?窅脆?_躵y胶?宗卝?X蛋?H7曮Z-e马,陪F?lm嫄W圹獑??N€?)?0?q??3拞屓??p勌m:b5a漬璺1疆lv~0瘩艌v€??`@2屘b瘌Tq〆妋4U~K袢,疀薤`,A6玭$?$徤?|ッ?罪=T?G驳op1尚懇袹戦疈u圻?赓O?a?*{p懡0L)w懱拽?E???/扢]?9镃/潺hRQ烞b蔔Ye嚁剂Bb?捚?悭曥T?UFUZ!醋M[M蘇g壶鲦伸???qfg%厧1"t?€戯愤焿驆罳騙^萡P?躀cP縮蒕?nP砫}?C?Z豸值?<箾殶竛吐K?M毂?峢mT鸏s眑+?該Ζ|紖?>!汩?脍f抙氄宨澻S箔XM竴玐訨?V?脶?,B衹絵2n吞輷匽之銻蚗v枉h5di:羁8?p~蟇7硏枫{pg裋.1瑡2陹?泝Z祘?$赇?諑矽?|D蚈/盰#,vDlE嵮禋TNI耔nEN峢mT鸏s眑+?該Ζ|紖?>!汩?脍f抙氄宨澻S箔XM竴玐訨?V?脶?,B衹絵2n吞輷匽之銻蚗v枉h5di:t詮I?懑忋忑殆#懛嗕!V汁`鏹豑寒絫赸l偎蠽れMヌn?~鈹舤Y?忩eF"Hga}厏a堳膷Q?h芛vf???瘐?c+粂鰌q惦ez赸l偎蠽れMヌn?~鈹舤Y?忩eF"Hga}厏a堳膷Q?h芛vf???瘐?c+粂鰌q惦e摭F讷,ド#RU?遴?eyk?窅脆?_躵y胶?宗卝?X蛋?H7曮Z-e马,陪F?lm嫄W圹獑??N€?)?0?q??3拞屓??p勌m:b5a漬璺1疆lv~0瘩艌v??`@2屘b瘌Tq〆禋TNI耔nEN峢mT鸏s眑+?該Ζ|紖?>!汩?脍f抙氄宨澻S箔XM竴玐訨?V?脶?,B衹絵2n吞輷匽之銻蚗v枉h5di:t詮I?懑忋忑殆#懛嗕!V汁`鏹豑寒絫赸l偎蠽れMヌn?~鈹舤Y?忩eF"Hga}厏a堳膷Q?h芛vf???瘐?c+粂鰌q惦ez赸l偎蠽れMヌn?~鈹舤Y?忩eF"Hga}厏a堳膷Q?h芛vf???瘐?c+粂鰌q惦e摭F讷,ド#RU?遴?eyk?窅脆?_躵y胶?宗卝?X蛋?H7曮Z-e马,陪F?lm嫄W圹獑??N€?)?0?q??3拞屓??p勌m:b5a漬璺1疆lv~0瘩艌v€?`@2屘b瘌Tq〆值?<箾殶竛吐K?M毂藑琶q@v栃??譇>橒忋喏曚NI耔nEN?%?*H?棐鑉涛3峽{Z乙v徻 3?珄餖朮爟♀?W圐葴^逑辢鈁e??籋鰫.僂T羁8?p~蟇7硏枫{pg裋.1瑡2陹?泝Z祘?$赇?諑矽?|D蚈/盰#,vDlE嵮禋t詮I?懑忋忑殆#懛嗕!V汁`鏹豑寒絫赸l偎蠽れMヌn?~鈹舤Y?忩eF"Hga}厏a堳膷Q?h芛vf???瘐?c+粂鰌q惦ez赸l偎蠽れMヌn?~鈹舤Y?忩eF"Hga}厏a堳膷Q?h芛vf???瘐?c+粂鰌q惦e摭F讷,ド#RU?遴?eyk?窅脆?_躵y胶?宗卝?X蛋?H7曮Z-e马,陪F?lm嫄W圹獑??N€?)?0?q??3拞屓??p勌m:b5a漬璺1疆lv~0瘩艌v€??`@2屘b瘌Tq〆妋4U~K袢,疀薤`,A6玭$?$徤?|ッ?罪=T?G驳op1尚懇袹戦疈u圻?赓O?a?*{p懡0L)w懱拽?E???/扢]?9镃/潺hRQ烞b蔔Ye嚁剂Bb?捚?悭曥T?UFUZ!醋M[M蘇g壶鲦伸???qfg%厧1"t?€戯愤焿驆罳騙^萡P?躀cP縮蒕?nP砫}?C?Z豸值?<箾殶竛吐K?M毂?峢mT鸏s眑+?該Ζ|紖?>!汩?脍f抙氄宨澻S箔XM竴玐訨?V?脶?,B衹絵2n吞輷匽之銻蚗v枉h5di:羁8?p~蟇7硏枫{pg裋.1瑡2陹?泝Z祘?$赇?諑矽?|D蚈/盰#,vDlE嵮禋TNI耔nEN峢mT鸏s眑+?該Ζ|紖?>!汩?脍f抙氄宨澻S箔XM竴玐訨?V?脶?,B衹絵2n吞輷匽之銻蚗v枉h5di:t詮I?懑忋忑殆#懛嗕!V汁`鏹豑寒絫赸l偎蠽れMヌn?~鈹舤Y?忩eF"Hga}厏a堳膷Q?h芛vf???瘐?c+粂鰌q惦ez赸l偎蠽れMヌn?~鈹舤Y?忩eF"Hga}厏a堳膷Q?h芛vf???瘐?c+粂鰌q惦e摭F讷,ド#RU?遴?eyk?窅脆?_躵y胶?宗卝?X蛋?H7曮Z-e马,陪F?lm嫄W圹獑??N€?)?0?q??3拞屓??p勌m:b5a漬璺1疆lv~0瘩艌v??`@2屘b瘌Tq〆禋TNI耔nEN峢mT鸏s眑+?該Ζ|紖?>!汩?脍f抙氄宨澻S箔XM竴玐訨?V?脶?,B衹絵2n吞輷匽之銻蚗v枉h5di:t詮I?懑忋忑殆#懛嗕!V汁`鏹豑寒絫赸l偎蠽れMヌn?~鈹舤Y?忩eF"Hga}厏a堳膷Q?h芛vf???瘐?c+粂鰌q惦ez赸l偎蠽れMヌn?~鈹舤Y?忩eF"Hga}厏a堳膷Q?h芛vf???瘐?c+粂鰌q惦e摭F讷,ド#RU?遴?eyk?窅脆?_躵y胶?宗卝?X蛋?H7曮Z-e马,陪F?lm嫄W圹獑??N€?)?0?q??3拞屓??p勌m:b5a漬璺1疆lv~0瘩艌v€?`@2屘b瘌Tq〆值?<箾殶竛吐K?M毂藑琶q@v栃??譇>橒忋喏曚NI耔nEN?%?*H?棐鑉涛3峽{Z乙v徻3?珄餖朮爟♀?W圐葴^逑辢鈁e??籋鰫.僂T羁8?p~蟇7硏枫{pg裋.1瑡2陹?泝Z祘?$赇?諑矽?|D蚈/盰#,vDlE嵮禋t詮I?懑忋忑殆#懛嗕!V汁`鏹豑寒絫赸l偎蠽れMヌn?~鈹舤Y?忩eF"Hga}厏a堳膷Q?h芛vf???瘐?c+粂鰌q惦ez赸l偎蠽れMヌn?~鈹舤Y?忩eF"Hga}厏a堳膷Q?h芛vf???瘐?c+粂鰌q惦e摭F讷,ド#RU?遴?eyk?窅脆?_躵y胶?宗卝?X蛋?H7曮Z-e马,陪F?lm嫄W圹獑??N€?)?0?q??3拞屓??p勌m:b5a漬璺1疆lv~0瘩艌v€??`@2屘b瘌Tq〆妋4U~K袢,疀薤`,A6玭$?$徤?|ッ?罪=T?G驳op1尚懇袹戦疈u圻?赓O?a?*{p懡0L)w懱拽?E???/扢]?9镃/潺hRQ烞b蔔Ye嚁剂Bb?捚?悭曥T?UFUZ!醋M[M蘇g壶鲦伸???qfg%厧1"t?€戯愤焿驆罳騙^萡P?躀cP縮蒕?nP砫}?C?Z豸值?<箾殶竛吐K?M毂?峢mT鸏s眑+?該Ζ|紖?>!汩?脍f抙氄宨澻S箔XM竴玐訨?V?脶?,B衹絵2n吞輷匽之銻蚗v枉h5di:羁8?p~蟇7硏枫{pg裋.1瑡2陹?泝Z祘?$赇?諑矽?|D蚈/盰#,vDlE嵮禋TNI耔nEN峢mT鸏s眑+?該Ζ|紖?>!汩?脍f抙氄宨澻S箔XM竴玐訨?V?脶?,B衹絵2n吞輷匽之銻蚗v枉h5di:t詮I?懑忋忑殆#懛嗕!V汁`鏹豑寒絫赸l偎蠽れMヌn?~鈹舤Y?忩eF"Hga}厏a堳膷Q?h芛vf???瘐?c+粂鰌q惦ez赸l偎蠽れMヌn?~鈹舤Y?忩eF"Hga}厏a堳膷Q?h芛vf???瘐?c+粂鰌q惦e摭F讷,ド#RU?遴?eyk?窅脆?_躵y胶?宗卝?X蛋?H7曮Z-e马,陪F?lm嫄W圹獑??N€?)?0?q??3拞屓??p勌m:b5a漬璺1疆lv~0瘩艌v??`@2屘b瘌Tq〆禋TNI耔nEN峢mT鸏s眑+?該Ζ|紖?>!汩?脍f抙氄宨澻S箔XM竴玐訨?V?脶?,B衹絵2n吞輷匽之銻蚗v枉h5di:t詮I?懑忋忑殆#懛嗕!V汁`鏹豑寒絫赸l偎蠽れMヌn?~鈹舤Y?忩eF"Hga}厏a堳膷Q?h芛vf???瘐?c+粂鰌q惦ez赸l偎蠽れMヌn?~鈹舤Y?忩eF"Hga}厏a堳膷Q?h芛vf???瘐?c+粂鰌q惦e摭F讷,ド#RU?遴?eyk?窅脆?_躵y胶?宗卝?X蛋?H7曮Z-e马,陪F?lm嫄W圹獑??N€?)?0?q??3拞屓??p勌m:b5a漬璺1疆lv~0瘩艌v€?`@2屘b瘌Tq〆值?<箾殶竛吐K?M毂藑琶q@v栃??譇>橒忋喏曚NI耔nEN?%?*H?棐鑉涛3峽{Z乙v徻3?珄餖朮爟♀?W圐葴^逑辢鈁e??籋鰫.僂T羁8?p~蟇7硏枫{pg裋.1瑡2陹?泝Z祘?$赇?諑矽?|D蚈/盰#,vDlE嵮禋t詮I?懑忋忑殆#懛嗕!V汁`鏹豑寒絫赸l偎蠽れMヌn?~鈹舤Y?忩eF"Hga}厏a堳膷Q?h芛vf???瘐?c+粂鰌q惦ez赸l偎蠽れMヌn?~鈹舤Y?忩eF"Hga}厏a堳膷Q?h芛vf???瘐?c+粂鰌q惦e摭F讷,ド#RU?遴?eyk?窅脆?_躵y胶?宗卝?X蛋?H7曮Z-e马,陪F?lm嫄W圹獑??N€?)?0?q??3拞屓??p勌m:b5a漬璺1疆lv~0瘩艌v€??`@2屘b瘌Tq〆妋4U~K袢,疀薤`,A6玭$?$徤?|ッ?罪=T?G驳op1尚懇袹戦疈u圻?赓O?a?*{p懡0L)w懱拽?E???/扢]?9镃/潺hRQ烞b蔔Ye嚁剂Bb?捚?悭曥T?UFUZ!醋M[M蘇g壶鲦伸???qfg%厧1"t?€戯愤焿驆罳騙^萡P?躀cP縮蒕?nP砫}?C?Z豸值?<箾殶竛吐K?M毂?峢mT鸏s眑+?該Ζ|紖?>!汩?脍f抙氄宨澻S箔XM竴玐訨?V?脶?,B衹絵2n吞輷匽之銻蚗v枉h5di:羁8?p~蟇7硏枫{pg裋.1瑡2陹?泝Z祘?$赇?諑矽?|D蚈/盰#,vDlE嵮禋TNI耔nEN峢mT鸏s眑+?該Ζ|紖?>!汩?脍f抙氄宨澻S箔XM竴玐訨?V?脶?,B衹絵2n吞輷匽之銻蚗v枉h5di:t詮I?懑忋忑殆#懛嗕!V汁`鏹豑寒絫赸l偎蠽れMヌn?~鈹舤Y?忩eF"Hga}厏a堳膷Q?h芛vf???瘐?c+粂鰌q惦ez赸l偎蠽れMヌn?~鈹舤Y?忩eF"Hga}厏a堳膷Q?h芛vf???瘐?c+粂鰌q惦e摭F讷,ド#RU?遴?eyk?窅脆?_躵y胶?宗卝?X蛋?H7曮Z-e马,陪F?lm嫄W圹獑??N€?)?0?q??3拞屓??p勌m:b5a漬璺1疆lv~0瘩艌v??`@2屘b瘌Tq〆禋TNI耔nEN峢mT鸏s眑+?該Ζ|紖?>!汩?脍f抙氄宨澻S箔XM竴玐訨?V?脶?,B衹絵2n吞輷匽之銻蚗v枉h5di:t詮I?懑忋忑殆#懛嗕!V汁`鏹豑寒絫赸l偎蠽れMヌn?~鈹舤Y?忩eF"Hga}厏a堳膷Q?h芛vf???瘐?c+粂鰌q惦ez赸l偎蠽れMヌn?~鈹舤Y?忩eF"Hga}厏a堳膷Q?h芛vf???瘐?c+粂鰌q惦e摭F讷,ド#RU?遴?eyk?窅脆?_躵y胶?宗卝?X蛋?H7曮Z-e马,陪F?lm嫄W圹獑??N€?)?0?q??3拞屓??p勌m:b5a漬璺1疆lv~0瘩艌v€?`@2屘b瘌Tq〆值?<箾殶竛吐K?M毂藑琶q@v栃??譇>橒忋喏曚NI耔nEN?%?*H?棐鑉涛3峽{Z乙v徻 3?珄餖朮爟♀?W圐葴^逑辢鈁e??籋鰫.僂T羁8?p~蟇7硏枫{pg裋.1瑡2陹?泝Z祘?$赇?諑矽?|D蚈/盰#,vDlE嵮禋t詮I?懑忋忑殆#懛嗕!V汁`鏹豑寒絫赸l偎蠽れMヌn?~鈹舤Y?忩eF"Hga}厏a堳膷Q?h芛vf???瘐?c+粂鰌q惦ez赸l偎蠽れMヌn?~鈹舤Y?忩eF"Hga}厏a堳膷Q?h芛vf???瘐?c+粂鰌q惦e摭F讷,ド#RU?遴?eyk?窅脆?_躵y胶?宗卝?X蛋?H7曮Z-e马,陪F?lm嫄W圹獑??N€?)?0?q??3拞屓??p勌m:b5a漬璺1疆lv~0瘩艌v€??`@2屘b瘌Tq〆妋4U~K袢,疀薤`,A6玭$?$徤?|ッ?罪=T?G驳op1尚懇袹戦疈u圻?赓O?a?*{p懡0L)w懱拽?E???/扢]?9镃/潺hRQ烞b蔔Ye嚁剂Bb?捚?悭曥T?UFUZ!醋M[M蘇g壶鲦伸???qfg%厧1"t?€戯愤焿驆罳騙^萡P?躀cP縮蒕?nP砫}?C?Z豸值?<箾殶竛吐K?M毂?峢mT鸏s眑+?該Ζ|紖?>!汩?脍f抙氄宨澻S箔XM竴玐訨?V?脶?,B衹絵2n吞輷匽之銻蚗v枉h5di:羁8?p~蟇7硏枫{pg裋.1瑡2陹?泝Z祘?$赇?諑矽?|D蚈/盰#,vDlE嵮禋TNI耔nEN峢mT鸏s眑+?該Ζ|紖?>!汩?脍f抙氄宨澻S箔XM竴玐訨?V?脶?,B衹絵2n吞輷匽之銻蚗v枉h5di:t詮I?懑忋忑殆#懛嗕!V汁`鏹豑寒絫赸l偎蠽れMヌn?~鈹舤Y?忩eF"Hga}厏a堳膷Q?h芛vf???瘐?c+粂鰌q惦ez赸l偎蠽れMヌn?~鈹舤Y?忩eF"Hga}厏a堳膷Q?h芛vf???瘐?c+粂鰌q惦e摭F讷,ド#RU?遴?eyk?窅脆?_躵y胶?宗卝?X蛋?H7曮Z-e马,陪F?lm嫄W圹獑??N€?)?0?q??3拞屓??p勌m:b5a漬璺1疆lv~0瘩艌v??`@2屘b瘌Tq〆禋TNI耔nEN峢mT鸏s眑+?該Ζ|紖?>!汩?脍f抙氄宨澻S箔XM竴玐訨?V?脶?,B衹絵2n吞輷匽之銻蚗v枉h5di:t詮I?懑忋忑殆#懛嗕!V汁`鏹豑寒絫赸l偎蠽れMヌn?~鈹舤Y?忩eF"Hga}厏a堳膷Q?h芛vf???瘐?c+粂鰌q惦ez赸l偎蠽れMヌn?~鈹舤Y?忩eF"Hga}厏a堳膷Q?h芛vf???瘐?c+粂鰌q惦e摭F讷,ド#RU?遴?eyk?窅脆?_躵y胶?宗卝?X蛋?H7曮Z-e马,陪F?lm嫄W圹獑??N€?)?0?q??3拞屓??p勌m:b5a漬璺1疆lv~0瘩艌v€?`@2屘b瘌Tq〆值?<箾殶竛吐K?M毂藑琶q@v栃??譇>橒忋喏曚NI耔nEN?%?*H?棐鑉涛3峽{Z乙v徻3?珄餖朮爟♀?W圐葴^逑辢鈁e??籋鰫.僂T羁8?p~蟇7硏枫{pg裋.1瑡2陹?泝Z祘?$赇?諑矽?|D蚈/盰#,vDlE嵮禋t詮I?懑忋忑殆#懛嗕!V汁`鏹豑寒絫赸l偎蠽れMヌn?~鈹舤Y?忩eF"Hga}厏a堳膷Q?h芛vf???瘐?c+粂鰌q惦ez赸l偎蠽れMヌn?~鈹舤Y?忩eF"Hga}厏a堳膷Q?h芛vf???瘐?c+粂鰌q惦e摭F讷,ド#RU?遴?eyk?窅脆?_躵y胶?宗卝?X蛋?H7曮Z-e马,陪F?lm嫄W圹獑??N€?)?0?q??3拞屓??p勌m:b5a漬璺1疆lv~0瘩艌v€??`@2屘b瘌Tq〆妋4U~K袢,疀薤`,A6玭$?$徤?|ッ?罪=T?G驳op1尚懇袹戦疈u圻?赓O?a?*{p懡0L)w懱拽?E???/扢]?9镃/潺hRQ烞b蔔Ye嚁剂Bb?捚?悭曥T?UFUZ!醋M[M蘇g壶鲦伸???qfg%厧1"t?€戯愤焿驆罳騙^萡P?躀cP縮蒕?nP砫}?C?Z豸值?<箾殶竛吐K?M毂?

您可能关注的文档

相关文档

最近下载