- 1.51 MB
- 2022-05-17 13:25:20 发布
- 1、本文档共5页,可阅读全部内容。
- 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
- 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
- 文档侵权举报电话:19940600175。
学生考勤管理系统所在学院班级姓名学号指导教师2013年5月16日44
摘要学生考勤对学校教务管理是至关重要的,传统的学生出勤检查往往是教师拿着一张纸质名单逐一点名,或让学生上交课堂作业以便课后查询出勤情况。这些方法往往具有考勤效率低下,没有系统的记录和整理,容易丢失遗漏,耽误时间等缺点。针对以上问题,开发一种针对学生考勤的网上管理系统,通过本系统,教师可以再课堂上直接登录考勤记录网站进行课堂点名,记录学生考勤情况等。此外,在课余,任课教师、班主任以及学校领导也可以登录该网站查询某班学生在某学科课程的出勤情况。本毕业设计的内容是设计并且实现一个基于web技术的学生考勤管理系统,故而系统主要以j2EE作为开发基础,主要使用了struts2+spring+hibernate等多种框架的结合使用,用myeclipse作为开发工具,以SQLServer作为数据库,以Macromedia公司的Dreamweaver作为界面美化工具,使用JAVA语言开发,页面采取JSP动态页面开发技术。该系统界面简单、操作方便,容易维护。关键词:学生考勤管理系统,S.S.H(Struts2,Hibernate,Spring),JAVA,JSP44
ABSTRACTStudentattendanceiscrucialtotheschooleducationaladministrationmanagement,thetraditionalstudentattendancecheckingisoftentheteachertookapieceofpaperlistonebyonename,orletthestudentshandinassignmentsafterclassattendancetoquery.Thesemethodsoftenhaveattendanceandlowefficiency,nosystemrecordsandfinishing,easilylostmissing,delaytime.Inviewoftheaboveproblems,thedevelopmentofanetworkmanagementsystemforstudentattendance,throughthissystem,teacherscandirectlyloginclassattendancerecordsiteclassname,recordattendance.Inaddition,intheschool,teachers,teachersandschoolleaderscanloginthiswebsiteattendancestudentsofoneclassinasubjectcurriculum.ThecontentsofthisgraduationprojectistodesignandimplementastudentattendancemanagementsystembasedonWebtechnology,thissystemmainlyusesj2EEasthebasisofdevelopment,themainuseofthecombineduseofstruts2+spring+hibernateandotherframeworks,MyEclipseasadevelopmenttool,SQLServerasthedatabase,usingMacromedia"sDreamweaverastheinterfacelandscapingtools,theuseofJAVAlanguagedevelopment,takethedevelopmenttechnologyofJSPdynamicwebpage.Thesystemhasasimpleinterface,easyoperation,easymaintenance.Keywords:Studentattendancemanagementsystem,Struts,Hibernate,Spring,JAVA,JSP44
目录摘要IABSTRACTII1绪论11绪论12系统的开发环境及技术简介22.1系统开发环境22.1.1MyEclipse22.1.2数据库简介22.1.3Tomcat32.2系统开发的思想与技术32.2.1JSP技术与MVC模式以及系统的基本框架32.2.2S.S.H框架的优点33系统总体设计63.1总体功能模块63.2系统管理员的功能模块63.3系院长的功能模块73.4任课老师的功能模块73.5班主任的功能模块83.6学生用户的功能模块83.7系统业务描述84系统详细设计与实现94.1系统和数据库的配置94.2概念模型设计94.3数据库逻辑模型104.4数据库表结构104.5平台数据表的设计125系统功能实现175.1程序的类图175.1.1班级Banji类图175.1.2考勤记录Kaoqinlog类图185.1.3科目Subject类图195.1.4课程Kecheng类图1944
5.1.5请假单Qingjiadan类图205.1.6用户User类图215.2程序的流程图225.2.1班级信息模块程序流程图225.2.2考勤记录模块程序流程图235.2.3科目信息模块程序流程图245.2.4课程信息模块程序流程图255.2.5用户信息模块程序流程图265.3系统功能实现的主要框架265.3.1SSH框架265.3.2hibernate配置文件265.3.3struts配置文件285.3.4spring配置文件295.4系统功能实现的主要模块315.4.1登陆页面315.4.2班级管理主页面335.4.3学科管理主页面345.4.4用户管理主页面356系统的调试与测试366.1软件测试的目的366.2软件测试的任务366.3测试环境366.4测试环境的配置376.4.1创建安装项目376.4.2添加项目输出386.4.3运行项目40结束语41致谢42参考文献4344
1绪论1绪论目前高校校园信息化逐步完善,能有效地借助网络才能提高办事效率。如今各大高校针对师生的成绩查询系统、教务管理系统、招生就业系统、BBS、校园网站等系统在各大高校纷纷出现,对全校师生的学习、生活、管理、办公带来了便利。因此学生考勤管理系统能进一步加强高校学风建设,维护正常的教学秩序,给学生创造一个优良的学习环境。目前高校学生上课考勤管理都是以任课老师上课点名,记录学生上课情况,对于时间比较长的请假,需要通过递交请假申请让班主任、院系领导都批准方能生效。这种的模式在目前高校管理中暴露了不可避免的弊端:一、学生请假不方便;二、学生请假对任课老师不透明;三、学生对自己整个学期的上课出勤情况没有整体的统计信息;四、班主任对本班学生整个学期的上课出勤情况不易查看;五、院系领导、学校领导不容易把握学生上课的出勤情况。因此一个好的学生考勤管理系统在一定程度上可以解决这些弊端,本系统主要针对目前高校学生在线请假以及学生上课出勤管理而设计的信息系统。44
2系统的开发环境及技术简介2.1系统开发环境2.1.1MyEclipse在开发本平台中所用到的开发工具就是是知名的java项目开发工具MyEclipse。MyEclipse企业级工作平台(MyEclipseEnterpriseWorkbench,简称MyEclipse)是对EclipseIDE的一种扩展,利用MyEclipse,我们可以在数据库和J2EE的开发、发布,以及在应用程序服务器的整合当中极大地提高系统的工作效率。MyEclipse是一个功能非常丰富的J2EE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTML,Struts,JSP,CSS,Javascript,SQL,Hibernate。在结构上,MyEclipse的特征可以被分为7类:J2EE模型,WEB开发工具,EJB开发工具,应用程序服务器的连接器,J2EE项目部署服务,数据库服务,MyEclipse整合帮助。对于以上每一种功能上的类别,在Eclipse中都有相应的功能部件,并通过一系列的插件来实现它们。MyEclipse结构上的这种模块化,可以让我们在不影响其他模块的情况下,对任一模块进行单独的扩展和升级。简单而言,MyEclipse是Eclipse的插件,也是一款功能强大的J2EE集成开发环境,支持代码编写、配置、测试以及除错。2.1.2数据库简介 SQL语句可以用来执行各种各样的操作,例如更新数据库中的数据,从数据库中提取数据等。目前,绝大多数流行的关系型数据库管理系统,如Oracle,Sybase,MicrosoftSQLServer,Access等都采用了SQL语言标准。虽然很多数据库都对SQL语句进行了再开发和扩展,但是包括Select,Insert,Update,Delete,Create,以及Drop在内的标准的SQL命令仍然可以被用来完成几乎所有的数据库操作。SQLServer SQLServer是一个关系数据库管理系统。它最初是由MicrosoftSybase和Ashton-Tate三家公司共同开发的,于1988年推出了第一个OS/2版本。在WindowsNT推出后,Microsoft与Sybase在SQLServer的开发上就分道扬镳了,Microsoft将SQLServer移植到WindowsNT系统上,专注于开发推广SQLServer的WindowsNT版本。Sybase则较专注于SQLServer在UNIX 操作系统上的应用。SQLServer2005是一个全面的数据库平台,使用集成的商业智能 (BI)工具提供了企业级的数据管理。SQLServer2005数据库引擎为关系型数据和结构化数据提供了更安全可靠的存储功能,使您可以构建和管理用于业务的高可用和高性能的数据应用程序。 SQLServer2005:SQLServer2005数据引擎是本企业数据管理解决方案的核心。此外SQLServer200544
结合了分析、报表、集成和通知功能。这使您的企业可以构建和部署经济有效的BI解决方案,帮助您的团队通过记分卡、Dashboard、Webservices和移动设备将数据应用推向业务的各个领域。 与MicrosoftVisualStudio、MicrosoftOfficeSystem以及新的开发工具包(包括BusinessIntelligenceDevelopmentStudio)的紧密集成使SQLServer2005与众不同。无论您是开发人员、数据库管理员、信息工作者还是决策者,SQLServer2005都可以为您提供创新的解决方案,帮助您从数据中更多地获益2.1.3TomcatTomcat很受广大程序员的喜欢,因为它运行时占用的系统资源小,扩展性好,支持负载平衡与邮件服务等开发应用系统常用的功能;而且它还在不断的改进和完善中,任何一个感兴趣的程序员都可以更改它或在其中加入新的功能。Tomcat是一个轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache服务器,可利用它响应对HTML页面的访问请求。实际上Tomcat部分是Apache服务器的扩展,但它是独立运行的,所以当你运行tomcat时,它实际上作为一个与Apache独立的进程单独运行的。 这里的诀窍是,当配置正确时,Apache为HTML页面服务,而Tomcat实际上运行JSP页面和Servlet。另外,Tomcat和IIS、Apache等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。2.2系统开发的思想与技术2.2.1JSP技术与MVC模式以及系统的基本框架本系统采用jsp技术,基于MVC模式开发,使用SSH框架(struts2、spring、hibernate)来增加系统的开发速度。所谓的MVC模式是"Model-View-Controller"的缩写,中文翻译为"模式-视图-控制器"。程序就是用struts2和hibernate这两个框架来实现模型层和控制器这两层,jsp实现视图这一层。一般来说程序就是在数据库和页面之间起桥梁作用的,jsp页面请求先到action,再到dao,再回到action,回到jsp页面,action主要处理来自页面的请求,dao主要是和数据库的交互,struts2主要用在action,处理来自页面的请求,处理完请求后跳转回页面。Hibernate主要用在dao,包括对数据库的增、删、改、查的操作,spring控制程序的流程。2.2.2S.S.H框架的优点S.S.H框架是J2EE应用中struts2+spring+hibernate三大免费开源框架的结合使用,44
它可以看成工具,也是中间件。他是用来提高我们的开发效率,提高我们软件产品的可维护性、可扩展性乃至敏捷性的。他们里面有很多优秀的设计理念及模式应用。比如,struts属于MVC框架,关键是要了解MVC的概念及大致原理;而hibernate属于ORM系统,属于持久层的解决方案,同样需要对ORM的概念及原理有一个总体的了解。而spring属于应用程序框架,其核心是IOC容器以及AOP,Spring中还集成了很多适用东西,比如对JDBC的封装、自己的MVC、对动态语言的简洁访问等,它由以下3个框架构成:1.Struts2框架Struts2是Apache组织的一个开放源码项目。Struts2是一个比较好的MVC框架,提供了对开发MVC系统的底层支持,它采用的主要技术是Servlet,JSP和Customtaglibrary。其基本构成如图2.1所示。图2.1Struts框架工作流程2.Spring框架Spring的核心是个轻量级(Lightweight)的容器(Container),它是实现IoC(InversionofControl)容器、非侵入性(Nointrusive)的框架,并提供AOP(Aspect-orientedprogramming)概念的实现方式,提供对持久层(Persistence)、事务(Transaction)的支持,提供MVCWeb框架的实现,并对一些常用的企业服务API(Application44
Interface)提供一致的模型封装,是一个全方位的应用程序框架(Applicationframework),除此之外,对于现存的各种框架(Struts、JSF、Hibernate等),Spring也提供了与它们相整合的方案。Spring框架由以下7个部分组成图2.2Spring框架构成3.Hibernate框架Hibernate是一个开放源码的ORM持久层框架。作为优秀的持久层框架实现,Hibernate框架提供了强大、高性能的对象到关系型数据库的持久化服务,开发人员可以使用面向对象的设计进行持久层开发。简单的说,Hibernate只是一个将持久化类与数据库表相映射的工具,每个持久化类实例均对应于数据库表中的一个数据行而已。用户只需直接使用面向对象的方法操作此持久化类实例,即可完成对数据库表数据的插入、删除、修改、读取等操作。44
图2.3Hibernate框架3系统总体设计3.1总体功能模块本系统分系统管理员,系院长,任课老师,班主任,学生5个用户角色。总功能图如图3-1所示。图3-1.系统功能需求分析3.2系统管理员的功能模块系统管理员的主要功能有班级管理;学科管理;用户管理包括(系统管理员,系院主任,任课老师,班主任,学生的增,删,改,查);课程管理。44
系统管理员用户功能图如下所示:图3-2.系统管理员的功能图3.3系院长的功能模块系院长的主要功能有课程表查询、学生请假管理(审核3天以上的请假)、考勤情况管理(包括考勤情况记录的添加和批量添加)。系院长的功能图如图3-3所示图3-3.系院长的功能图3.4任课老师的功能模块任课老师的主要功能有课程表查询、学生请假管理、考勤情况管理(包括考勤情况记录的添加和批量添加)。44
任课老师的功能图如图3-4所示图3-4.任课老师的功能图3.5班主任的功能模块班主任的主要功能有课程表查询、学生请假管理(审核3天以内的请假)、考勤情况管理(包括考勤情况记录的添加和批量添加)。班主任的功能图如图3-5所示图3-5.班主任的功能图3.6学生用户的功能模块学生的主要功能有课程表查询;学生请假申请、查询;考勤情况查询。学生用户的功能图如图所示:44
图3-6.学生用户的功能图3.7系统业务描述本系统分系统管理员,系院长,任课老师,班主任,学生5个用户角色。系统管理员的主要功能有班级管理;学科管理;用户管理包括(系统管理员,系院主任,任课老师,班主任,学生的增,删,改,查);课程管理。系院长的主要功能有课程表查询、学生请假管理(审核3天以上的请假)、考勤情况管理(包括考勤情况记录的添加和批量添加)。任课老师的主要功能有课程表查询、学生请假管理、考勤情况管理(包括考勤情况记录的添加和批量添加)。班主任的主要功能有课程表查询、学生请假管理(审核3天以内的请假)、考勤情况管理(包括考勤情况记录的添加和批量添加)。学生的主要功能有课程表查询;学生请假申请、查询;考勤情况查询。用例图如下:图3-744
4系统详细设计与实现4.1系统和数据库的配置系统按通用的B/S(浏览器、服务器)模式进行设计(如图4-1)数据库在一个信息管理系统中占有非常重要的地位,数据库结构设计的好坏将直接对应用系统的效率,以及实现的效果产生影响。合理的数据库结构设计可以提高数据存储的效率,保证数据的完整和一致。4.2概念模型设计概念模型设计的典型方法是用E-R图方法,即用实体-联系模型表示。E-R方法是用E-R图来描述显示世界,E-R图包含三个基本成分:实体、联系、属性。它直观易懂,能够比较准确地反映现实世界的信息联系,从概念上表示一个数据库的信息组织情况。本系统E-R图如下44
4.3数据库逻辑模型班级表信息(主键、班级名、添加时间、院系、专业)考勤表信息(主键、班级号、学号、添加时间、是否旷课、课程名、旷课数量、日期、任课老师)课程表信息(主键、班级、班级号、添加时间、是否删除标志、课程名)请假单表信息(主键、班级号、学号、添加时间、开始请假时间、结束请假时间、审核情况、审核意见、用户名)学科表信息(主键、添加时间、学科名)用户表信息(主键、地址、班级号、学号、添加时间、密码、联系方式、用户权限、所在宿4.4数据库表结构1班级表名称类型空备注idInt(11)no主键banjinamevarchar(255)yes班级名banjimunvarchar(255)yes班级号createtimedatetimeyes添加时间yuanxivarchar(255)yes院系zhuanyevarchar(255)yes专业2考勤表名称类型空备注idInt(11)no主键banjinumvarchar(255)yes班级号createtimevarchar(255)yes字号codenumvarchar(255)yes添加时间iskuangkeInt(11)no是否旷课kechengnamevarchar(255)yes课程名kuangkenumInt(11)yes旷课数量riqivarchar(255)yes日期teachervarchar(255)yes任课老师3课程表名称类型空备注idInt(11)no主键44
banjivarchar(255)yes班级banjinumvarchar(255)yes班级号createtimedatetimeyes添加时间kechenglockInt(11)no是否删除标志,0表示未删除,1表示删除Kechengname1varchar(255)yes课程名一Kechengname2varchar(255)yes课程名二Kechengname3varchar(255)yes课程名三Kechengname4varchar(255)yes课程名四Kechengname5varchar(255)yes课程名五Kechengname6varchar(255)yes课程名六Kechengname7varchar(255)yes课程名七4请假单表名称类型空备注idInt(11)no主键banjivarchar(255)yes班级banjinumvarchar(255)yes班级号createtimedatetimeyes添加时间Qjtime1varchar(255)yes开始请假时间Qjtime2varchar(255)yes结束请假时间shenhevarchar(255)yes审核情况shenhecontentvarchar(255)yes审核意见usernamevarchar(255)yes用户名5学科表名称类型空备注idInt(11)no主键createtimedatetimeyes添加时间subjectnamevarchar(255)yes学科名6用户表名称类型空备注idInt(11)no主键addressvarchar(255)yes地址Banjinumvarchar(255)yes班级号Codenumvarchar(255)yes学号Createtimedatetimeyes添加时间Passwordvarchar(255)yes密码Phonevarchar(255)yes联系方式RoleInt(11)yes用户权限44
roomvarchar(255)yes所在宿舍UserlockInt(11)Yes,是否删除标志,0表示未删除,1表示删除usernamevarchar(255)yes用户名4.5平台数据表的设计根据平台的需求分析和功能模块的划分,所涉及的实体有班级,班级,课程,请假单,学科,用户。因此系统的定义数据库主要包含6张表:班级表t_banji,考勤表t_kaoqinlog,课程表t_kecheng,请假单表t_qingjiadan,学科表t_subject,用户表t_user。班级表t_banji建表的sql语句为:CREATETABLE`t_banji`(`id`int(11)NOTNULLauto_increment,`banjiname`varchar(255)defaultNULL,`banjinum`varchar(255)defaultNULL,`createtime`datetimedefaultNULL,`yuanxi`varchar(255)defaultNULL,`zhuanye`varchar(255)defaultNULL,PRIMARYKEY(`id`))ENGINE=InnoDBDEFAULTCHARSET=utf8;考勤表t_kaoqinlog44
建表的sql语句为:CREATETABLE`t_kaoqinlog`(`id`int(11)NOTNULLauto_increment,`banjinum`varchar(255)defaultNULL,`codenum`varchar(255)defaultNULL,`createtime`datetimedefaultNULL,`iskuangke`int(11)NOTNULL,`kechengname`varchar(255)defaultNULL,`kuangkenum`int(11)NOTNULL,`riqi`varchar(255)defaultNULL,`teacher`varchar(255)defaultNULL,PRIMARYKEY(`id`))ENGINE=InnoDBDEFAULTCHARSET=utf8;课程表t_kecheng建表的sql语句为:CREATETABLE`t_kecheng`(`id`int(11)NOTNULLauto_increment,44
`banji`varchar(255)defaultNULL,`banjinum`varchar(255)defaultNULL,`createtime`datetimedefaultNULL,`kechenglock`int(11)NOTNULL,`kechengname1`varchar(255)defaultNULL,`kechengname2`varchar(255)defaultNULL,`kechengname3`varchar(255)defaultNULL,`kechengname4`varchar(255)defaultNULL,`kechengname5`varchar(255)defaultNULL,`kechengname6`varchar(255)defaultNULL,`kechengname7`varchar(255)defaultNULL,PRIMARYKEY(`id`))ENGINE=InnoDBDEFAULTCHARSET=utf8;请假单表t_qingjiadan建表的sql语句为:CREATETABLE`t_qingjiadan`(`id`int(11)NOTNULLauto_increment,`banjinum`varchar(255)defaultNULL,`codenum`varchar(255)defaultNULL,`createtime`datetimedefaultNULL,`qjtime1`varchar(255)defaultNULL,`qjtime2`varchar(255)defaultNULL,`shenhe`varchar(255)defaultNULL,`shenhecontent`varchar(255)defaultNULL,44
`username`varchar(255)defaultNULL,PRIMARYKEY(`id`))ENGINE=InnoDBDEFAULTCHARSET=utf8;学科表t_subject建表的sql语句为:CREATETABLE`t_subject`(`id`int(11)NOTNULLauto_increment,`createtime`datetimedefaultNULL,`subjectname`varchar(255)defaultNULL,PRIMARYKEY(`id`))ENGINE=InnoDBDEFAULTCHARSET=utf8;用户表t_user建表的sql语句为:CREATETABLE`t_user`(`id`int(11)NOTNULLauto_increment,`address`varchar(255)defaultNULL,`banjinum`varchar(255)defaultNULL,`codenum`varchar(255)defaultNULL,44
`createtime`datetimedefaultNULL,`password`varchar(255)defaultNULL,`phone`varchar(255)defaultNULL,`role`int(11)NOTNULL,`room`varchar(255)defaultNULL,`userlock`int(11)NOTNULL,`username`varchar(255)defaultNULL,PRIMARYKEY(`id`))ENGINE=InnoDBDEFAULTCHARSET=utf8;5系统功能实现5.1程序的类图5.1.1班级Banji类图对应的程序代码:publicclassBanJiimplementsSerializable{privatestaticfinallongserialVersionUID=2429695896963809345L;44
privateintid;privateDatecreatetime;//班级新建时间privateStringbanjiname;//班级名称privateStringyuanxi;//院系名称privateStringzhuanye;//专业名称privateStringbanjinum;//班级编号5.1.2考勤记录Kaoqinlog类图对应的程序代码:publicclassKaoQinLogimplementsSerializable{privatestaticfinallongserialVersionUID=2429695896963809345L;privateintid;privateDatecreatetime;privateStringkechengname;//课程44
privateStringbanjinum;//班级编号privateStringteacher;//任课老师privateStringcodenum;//学号privateintiskuangke;//1:旷课,0:迟到privateintkuangkenum;//旷课数量privateStringriqi;//时间,日期5.1.3科目Subject类图对应的程序代码:publicclassSubjectimplementsSerializable{privatestaticfinallongserialVersionUID=2429695896963809335L;privateintid;privateDatecreatetime;privateStringsubjectname;//科目名称,学科44
5.1.4课程Kecheng类图对应的代码:publicclassKechengimplementsSerializable{privatestaticfinallongserialVersionUID=2429695896963809335L;privateintid;privateDatecreatetime;privateStringkechengname1;//选课名称privateStringkechengname2;//选课名称privateStringkechengname3;//选课名称privateStringkechengname4;//选课名称privateStringkechengname5;//选课名称privateStringkechengname6;//选课名称privateStringkechengname7;//选课名称privateintkechenglock;//课程位置privateStringbanji;//班级44
privateStringbanjinum;//班级编号5.1.5请假单Qingjiadan类图对应的代码:publicclassQingJiaDan{privateintid;privateDatecreatetime;privateStringqjtime1;//请假开始时间privateStringqjtime2;//请假结束时间privateStringcodenum;//学生编号privateStringusername;//姓名privateStringbanjinum;//班级编号privateStringshenhe;//审核状态privateStringshenhecontent;//审核意见44
5.1.6用户User类图对应的代码:publicclassUserimplementsSerializable{privatestaticfinallongserialVersionUID=-7141419035239709511L;privateintid;privateStringusername;//姓名privateStringpassword;//登录密码privateStringcodenum;//学生号、老师号privateStringbanjinum;//班级编号privateStringphone;//联系方式privateStringroom;//所在宿舍privateStringaddress;//家庭住址privateDatecreatetime;privateintuserlock;privateintrole;//管理员0,系院院长1,任课老师2,班主任3,学生444
5.2程序的流程图5.2.1班级信息模块程序流程图44
5.2.2考勤记录模块程序流程图44
5.2.3科目信息模块程序流程图44
5.2.4课程信息模块程序流程图44
5.2.5用户信息模块程序流程图5.3系统功能实现的主要框架5.3.1SSH框架SSH框架就是struts2,spring,hibernate的简称,运用3个框架的集成协作使用,可以有效的提高代码编写的效率,从而有效的降低程序开发的周期。5.3.2hibernate配置文件hibernate-configuration>DBPoolproxool.xml44
org.hibernate.connection.ProxoolConnectionProvidertruetrueorg.hibernate.dialect.SQLServerDialectthreadtrueupdate 这是Hibernate的配置文件,在该文件中proxool.xml首先加载了连接池的一个配置,就是加载了数据库的连接信息,truetrue表示控制台打印SQL语句,并格式化SQL语句44
name="dialect">org.hibernate.dialect.SQLServerDialect表示当前数据库的语言是SQLServer 都表示当前数据库建立起来的表和试题类之间的映射关系,比如 表示User类和t_user表之间的建立起来的对应关系,其他也都类似5.3.3struts配置文件/WEB-INF/jsp/login.jsp //WEB-INF/jsp/login.jsploginindex.html44
loginindex.html/WEB-INF/jsp/error.jsp /WEB-INF/jsp/index.jsp 这是struts的配置文件,该文件的作用主要起到来自JSP的请求的跳转分配的作用.该struts配置文件是个总的配置文件。5.3.4spring配置文件Spring在本项目中主要用到了IOC的功能,就是把对象实例化 44
本段代码是把DAO实例化的代码,通过spring的IOC模式44
本段代码是把ManageAction和KechengAction,BanJiAction,SubjectAction,KaoQinLogAction,QingJiaDanAction实例化的代码,原理也是spring的IOC模式。5.4系统功能实现的主要模块5.4.1登陆页面登陆代码:44
publicStringlogin()throwsException{HttpServletRequestrequest=ServletActionContext.getRequest();Stringusername=request.getParameter("username");Stringpassword=request.getParameter("password");Useruser=userDao.selectUserbByusernameByPassword(username,password);if(user!=null){Listkaoqinlogs=kaoqinlogDao.selectAllKaoQinLogBy(0,100,"andcodenum=""+user.getCodenum()+""");Stringkaoqinlogtishi="";if(kaoqinlogs.size()>=3){kaoqinlogtishi="旷课次数已经超过3次!!!";}else{kaoqinlogtishi="";}HttpSessionsession=request.getSession();session.setAttribute("username",user.getUsername());session.setAttribute("codenum",user.getCodenum());session.setAttribute("banjinum",user.getBanjinum());session.setAttribute("role","role"+user.getRole());session.setAttribute("loginuser",user);session.setAttribute("kaoqinlogtishi",kaoqinlogtishi);return"success";}else{request.setAttribute("errorMessage","请重新输入帐号密码!!");return"fail";}}本段代码是程序的登陆代码,首先从获取从页面输入的用户名和密码,然后调用userDao.selectUserbByusernameByPassword方法,从数据库里取出该条记录进行判断,如果该条记录存在,则说明用户登陆成功,同时把用户信息存在session里面方便调用,如果记录为空,则跳转到登陆页面,同时提醒用户错误信息。44
5.4.2班级管理主页面代码如下:@SuppressWarnings("unchecked")publicStringbanjilist()throwsException{HttpServletRequestrequest=ServletActionContext.getRequest();intnumPerPage=20;intpageNum=1;if(request.getParameter("pageNum")!=null&&!request.getParameter("pageNum").equals("")){pageNum=Integer.parseInt(request.getParameter("pageNum"));}if(request.getParameter("numPerPage")!=null){numPerPage=Integer.parseInt(request.getParameter("numPerPage"));}inttotal=banjiDao.selectAllBanJiCount();Listbanjis=banjiDao.selectAllBanJi((pageNum-1)*numPerPage,numPerPage);request.setAttribute("totalCount",total);request.setAttribute("ps",numPerPage);request.setAttribute("pn",pageNum);request.setAttribute("banjilist",banjis);return"success";}通过banjiDao.selectAllBanJi方法来调用数据库的查询方法来查到符合条件的记录,在通过request.setAttribute方法把查询到的记录传到显示的页面。同时通过return"success";方法指定传回到具体指定的是哪个JSP页面。通过这样实现对数据查询功能的实现,同时在该班级列表页面定义了对班级信息的增加,修改,删除等操作。44
5.4.3学科管理主页面代码如下:@SuppressWarnings("unchecked")publicStringsubjectlist()throwsException{HttpServletRequestrequest=ServletActionContext.getRequest();intnumPerPage=20;intpageNum=1;if(request.getParameter("pageNum")!=null&&!request.getParameter("pageNum").equals("")){pageNum=Integer.parseInt(request.getParameter("pageNum"));}if(request.getParameter("numPerPage")!=null){numPerPage=Integer.parseInt(request.getParameter("numPerPage"));}inttotal=subjectDao.selectAllSubjectCount();Listsubjects=subjectDao.selectAllSubject((pageNum-1)*numPerPage,numPerPage);request.setAttribute("totalCount",total);request.setAttribute("ps",numPerPage);request.setAttribute("pn",pageNum);request.setAttribute("subjectlist",subjects);return"success";}通过subjectDao.selectAllSubject方法来调用数据库的查询方法来查到符合条件的记录,在通过request.setAttribute("subjectlist",subjects);方法把查询到的记录传到显示的页面。同时通过return"success";方法指定传回到具体指定的是哪个JSP页面。通过这样实现对数据查询功能的实现,同时在该学科列表页面定义了对学科信息的增加,修改,删除等操作。44
5.4.4用户管理主页面代码如下:publicStringuserlist(){HttpServletRequestrequest=ServletActionContext.getRequest();if(request.getParameter("pageNum")!=null&&!request.getParameter("pageNum").equals("")){pageNum=Integer.parseInt(request.getParameter("pageNum"));}if(request.getParameter("numPerPage")!=null){numPerPage=Integer.parseInt(request.getParameter("numPerPage"));}inttotal=userDao.selectAllUserCount();Listusers=userDao.selectAllUser((pageNum-1)*numPerPage,numPerPage);request.setAttribute("totalCount",total);request.setAttribute("ps",numPerPage);request.setAttribute("pn",pageNum);request.setAttribute("userlist",users);request.setAttribute("searchuserlist",userDao.getAll("anduserlock=0"));return"success";}通过userDao.selectAllUser方法来调用数据库的查询方法来查到符合条件的记录,在通过request.setAttribute方法把查询到的记录传到显示的页面。同时通过return"success";方法指定传回到具体指定的是哪个JSP页面。通过这样实现对数据查询功能的实现,同时在该用户列表页面定义了对用户信息的增加,修改,删除等操作。44
6系统的调试与测试6.1软件测试的目的软件测试的目的,第一是确认软件的质量,其一方面是确认软件做了你所期望的事情,另一方面是确认软件以正确的方式来做了这个事件。第二是提供信息,比如提供给开发人员或程序经理的反馈信息,为风险评估所准备的信息。第三软件测试不仅是在测试软件产品的本身,而且还包括软件开发的过程。如果一个软件产品开发完成之后发现了很多问题,这说明此软件开发过程很可能是有缺陷的。因此软件测试的第三个目的是保证整个软件开发过程是高质量的。软件质量是由几个方面来衡量的:一、在正确的时间用正确的的方法把一个工作做正确。二、符合一些应用标准的要求,比如不同国家的用户不同的操作习惯和要求,项目工程中的可维护性、可测试性等要求。三、质量本身就是软件达到了最开始所设定的要求,而代码的优美或精巧的技巧并不代表软件的高质量。四、质量也代表着它符合客户的需要。作为软件测试这个行业,最重要的一件事就是从客户的需求出发,从客户的角度去看产品,客户会怎么去使用这个产品,使用过程中会遇到什么样的问题。6.2软件测试的任务1、寻找Bug; 2、避免软件开发过程中的缺陷; 3、衡量软件的品质; 4、关注用户的需求。总的目标是:确保软件的质量6.3测试环境Apache提供的Web服务器Tomcat6.0使得用户可以在Windows44
2000以上操作系统下发布自己设计的动态网页。因此对论坛的调试工作主要是利用Tomcat6.0的强大功能在本机下完成的。为了在本机下浏览Web页面,首先在创建该系统的站点上(该系统使用的是Web的默认站点)将IP地址设定为127.0.0.1,它的缺省域名值为localhost。然后向IE浏览器输入本地动态网页的URL,Web服务器在收到浏览器传送的URL之后找到网页文件,并在服务器端执行该文件后将此文件以HTML文件的形式返回该浏览器。6.4测试环境的配置6.4.1创建安装项目要对一个应用程序进行打包部署,首先需要把tomcat服务器集成到myeclipse开发工具:(1)点击windowàpreferences,弹出对话框,如图所示:在文本框里输入tomcat,选择tomcat选项,选择tomcat6.X,并选择tomcat文件的路径,点击enable,使这个设置为有效的。如下图所示:44
最后点击确认完成tomcat服务器的添加。44
6.4.2添加项目输出选择部署按在project里选择需要部署的项目之后点击add按钮,弹出如下对话框,44
Server选择tomcat6X,最后点击finish完成部署。6.4.3运行项目首先点击server窗口,如图,右键点击tomcat6.x,点击runserver,则开始运行tomcat服务器,当控制台不在有新的信息输出时说明部署成功。44
结束语经过一个多月的努力,在老师和同学的帮助下,我顺利的完成了这次毕业设计从当初确定题目到最后一个功能的完成,经历了无数次的错误、修改代码重启服务器、运行的过程,真的是书到用时方恨少啊,在用到的时候才知道平时的知识不够用,这次的设计让我知道了,完成一个项目并不容易,理论联系实际是重点,在理论书面知识的基础上,通过不断的实践才有得到成功的可能。本文是在对Struts、Spring、Hibemate体系架构进行充分研究的基础上,结合实际需要,开发出基于SSH(Strus2+Spring+Hibemate)框架的学生考勤系统。44
致谢本论文是在我的毕业指导老师张喜生的亲切关怀和悉心的指导下完成的。他为人随和,治学严谨细心。在闲聊得时候她总能像知心朋友一样鼓励你,在你写论文的时候他总会以“专业标准”严格要求你。同时他还在思想、生活上给我以无微不至的关怀,在此谨想张喜生老师致以诚挚的谢意和崇高的敬意。44
参考文献[1]冯燕奎,赵德奎.JSP实用案例教程[M]清华大学出版社,2004,5:70-100[2]王家华软件工程[M] 东北大学出版社2001年3月303页[3]王宜贵软件工程[M]北京:机械工业出版社,2002:20-79[4]孙卫琴精通struts[M]电子工业出版社2004年8月50-70[5]孙卫琴精通hibernate[M]电子工业出版社2005年4月100-120[6]张洪斌java2高级程序设计[M]中科多媒体出版社2001年11月85-90[7]JimArlowUML2.0andtheUnifiedProcess[M]机械工业出版社2006年6月30-40[8]林信良spring2.0技术手册[M]电子工业出版社2006年6月50-100[9]熊节、林仪明、张凯峰、陈玉泉等主编[《CSDN社区电子杂志——Java杂志》创刊号][10]《程序员》杂志2007年第4期[11]耿祥义编著.JSP基础编程[M].清华大学出版社,2004.55-162[12]徐建波,周新莲.Web设计原理于编程技术[M].中南大学出版社,2005.185-193[13]孙鑫编著.JavaWeb开发详解[M].电子工业出版社,2006.189-274[14]林上杰,林康司编著.JSP2.0技术手册[M].电子工业出版社,2004.3-6[15]萨师煊,王珊.数据库系统概论(第三版)[M].北京:高等教育出版社,1998.44