- 5.43 MB
- 2022-05-17 13:24:05 发布
- 1、本文档共5页,可阅读全部内容。
- 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
- 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
- 文档侵权举报电话:19940600175。
厦门大学学位论文原创性声明本人呈交的学位论文是本人在导师指导下,独立完成的研究成果。本人在论文写作中参考其他个人或集体已经发表的研究成果,均在文中以适当方式明确标明,并符合法律规范和《厦门大学研究生学术活动规范(试行)》。另外,该学位论文为()课题(组)的研究成果,获得()课题(组)经费或实验室的资助,在()实验室完成。(请在以上括号内填写课题或课题组负责人或实验室名称,未有此项声明内容的,可以不作特别声明。)声明人(签名):矸虢矽岱年孓月沙扫‘
/嘲必厦门大学学位论文著作权使用声明本人同意厦门大学根据《中华人民共和国学位条例暂行实施办法》等规定保留和使用此学位论文,并向主管部门或其指定机构送交学位论文(包括纸质版和电子版),允许学位论文进入厦门大学图书馆及其数据库被查阅、借阅。本人同意厦门大学将学位论文加入全国博士、硕士学位论文共建单位数据库进行检索,将学位论文的标题和摘要汇编出版,采用影印、缩印或者其它方式合理复制学位论文。本学位论文属于:()1.经厦门大学保密委员会审查核定的保密学位论文,于年月日解密,解密后适用上述授权。(∥)2.不保密,适用上述授权。(请在以上相应括号内打“√”或填上相应内容。保密学位论文应是已经厦门大学保密委员会审定过的学位论文,未经厦门大学保密委员会审定的学位论文均为公开学位论文。此声明栏不填写的,默认为公开学位论文,均适用上述授权。)声明人(签名):刘S年∑月如日
摘要随着校园信息化的逐步完善,针对师生的成绩查询系统、教务管理系统、招生就业系统、BBS、校园网站等系统在各大职校纷纷出现,给学校师生的学习、生活、管理、办公带来了便利。但我校学生的考勤记录还停留在使用纸质登记表人工考勤的状态,给学生和老师带来诸多麻烦。因此需要设计一个学生考勤管理系统,维护正常的教学秩序,给学生、老师创造一个优良的学习环境。本文的内容是设计并且实现一个基于SM3算法的学生考勤管理系统。系统的登录模块采用Hash算法中的国密SM3算法对登录信息进行加密,以保证系统的数据安全。系统主要以J2EE作为开发基础,用MyEclipse作为开发工具,以MYSQL作为数据库,Dreamweaver作为界面美化工具,使用JAVA语言开发,页面采取JSP动态页面开发技术。该系统包括三大管理模块:管理员模块、班主任管理模块、学生模块。系统界面简单、操作方便,容易维护。本文首先介绍了论文的研究背景,职业学校中学生考勤的重要性和必要性,分析了常见、经典的几种Hash算法,重点描述SM3算法的原理及运用方法,并对JSP技术、S.S.H框架等其他系统关键技术进行了介绍;接着对系统进行需求分析,包括功能需求分析、性能需求分析、系统需求分析,并在之前分析的基础上,提出了系统的设计目标,并对系统进行详细设计,包括模块设计、数据库设计;接着在系统实现章节中给出了系统实现的界面及核心代码,最后,总结论文的主要工作,论述了系统存在的不足及之后需要努力整改的地方。本系统已初步调试通过,且运行正常,该系统易于操作,达到了预计的目标,但是功能比较简单,还需要进一步完善。关键词:SM3;S.S.H;考勤管理
AbstractWiththeinformatizationisimprovedstepbystepinschool,intheviewoftheteachersandstudents,theresultquerysystem,educationaladministrationmanagementsystem,Recruitmentofstudentsemploymemsystem,BBS,schoolwebsiteappearoneafteranother,whichbringslotsofconvenienceinstudy,managementandworkforteachersandstudents.However,ourschoolstillusespaperregistrationformstorecordthestudents‘attendance,whichbringsalotoftroublesfortheteachersandstudents.Thus,itisimportanttodesignastudentattendancemanagementsystemtomaintainanormalteachingorderandcreateagoodlearningenvironmentforthestudentsandteachers.ThecontentofthepaperistodesignandrealizeastudentattendancemanagementsystembasedonSM3arithmetic.Toensurethesystemdatasafe.ThesystemismainlybasedonthedevelopmentoftheJ2EE,usesMyEclipseasthedevelopmenttool,usesMYSQLasdatabase,usesDreamweaverasinterfacebeautificationtool,usesJAVAaslanguagedevelopment,taketheJSPpagedynamicpagetechnologydevelopment.Thesystemincludesthreemainmanagementmodules:theadministratormodule,teachermanagementmoduleandstudentmodule.Thesysteminterfaceissimple,easilyoperatedandmaintained。Firstly,thedissertationintroducesthesubjectofresearchbackground,andimportanceandnecessityoftheattendance内rthestudentsinvocationalschools.ItanalysesseveralcommonandclassicencryptionalgorithmsandtheHashalgorithms;anditemphaticallydescribestheprincipleandusingmethodofSM3algorithms;andintroducestheJSPtechnology,SSH,andotherkeytechnologiesofthesystem.Secondly,itcarriesonthedemandanalysisonthesystem,includingfunctionalrequirementsanalysis,performancerequirementanalysis,systemrequirementsanalysis.Onthebasicofonthebasisoftheanalysis,thedissertationputsforwardthesystemdesigngoals,andcarriesonthedetaileddesignofthesystem,includingmoduledesign,databasedesign.Thirdly,systeminterfaceandthecorecodeisgiveninthesystemimplementationchapter.Atlast,itsummarizesthemainwork,anddiscussestheproblemsofthesystemandneedtoworkaftertherectification.Thissystemhasbeenpreliminarydebugged,andnormallyoperated.Thesystemoperationissimple,andhasreachedtheexpectedgoals,butthefunctionissimpler,andneedtobeimproved.Keywords:SM3,S.S.H,AttendantemanagementII
目录第一章引言⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯11.1课题背景⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.11.2Hash函ISl⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.11.2.1单向散列函数⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯2l。2.2MD5。。。。。。。。。⋯.。。。⋯......。。。。。。。。。。。⋯.。。。。。。.。⋯.。..。。。。。。。。。。。。..。.。。。。。。..。。。..。。..。。。。。。。.。⋯。。。。。。。。。。。...。。。。。...。。。31.2.3单向散列函数对口令的保护⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.41.3国密算法⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯51.4本文主要工作和组织结构⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.5第二章系统开发环境及关键技术研究⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.72.1系统开发环境⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯72.1.1MyEclipse⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯72.1.2MySQL数据库⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.72.1.3Tomcat服务器⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯82.2关键技术研究⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯82.2.1JSP技术⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯82.2.2MvC模式⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯。92.2.3S.S.H框架⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯112.2.4国密SM3⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯162.3本章小结⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯。19第三章系统设计⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯。203.1需求分析⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯。203.2系统设计目标⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯213.3考勤管理系统⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯223.3.1管理员的功能模块设计⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯233.3.2班主任功能模块设计⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯243.3.3学生功能模块设计⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯..253.4数据库模块设计⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯263.5安全模块设计⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯283.6本章小结⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.29第四章系统功能实现⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯。304.1程序的类图⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯304.1.1班级考勤统计类图TongjiBanji⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯30Ill
目录4.1.2用户类图User⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.304.1.3班级类图Banji⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯314.1.4旷课类图Kuangke⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯324.1.5请假类图Oingjia⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯334.1.6统计学生考勤TongjiStu⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯334.2程序的时序图⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯。344.2.1班级模块时序图⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯一344.2.2旷课模块时序图⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯344.2.3请假模块时序图⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯..354.2.4用户模块时序图⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯一354.3系统功能实现的主要框架⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯。364.3.1hibernate配置文件⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯364.3.2struts配置文件⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.374.3.3spring配置文件⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.374.4系统功能实现的主要模块⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯。384.4.1系统登录页面⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯..384.4.2班主任管理页面⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯一404.4.3班级管理页面⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯一414.4.4基于SM3的数据加密⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯424.5系统测试⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯444.6本章小结⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯45第五章总结与展望⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯465.1总结⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯465.2展望⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.⋯⋯⋯。艏参考文献⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯47致谢⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯48IV
Contens1.1Baelq扣uad⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.11.2I-IashAlgorithm⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.11.2.1Hashfunction⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.⋯⋯⋯⋯⋯⋯⋯⋯.⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.21.2.2MD5⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯..31.2.3Hashfunctionofpasswordprotection...........................................................................41.3Statesecret出orithm⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.51.4Themainworkandorganizational吼nlctIlre⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.52.1Systemdevelopmentenvironment.........................⋯...⋯...............................⋯...⋯.......72.1.1MyEclipse....................................................................................................................72.1.2MySQLdatabase.........................................................................................................72.1.3Tomcatserver⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯82.2Keytechnologyresearch.⋯..........⋯.....................⋯...⋯.....................................⋯.......82.2.1JSPtechnology......⋯..........⋯...⋯.....⋯............................................⋯..........................82.2.2MVCmode⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯92.2.3TlleframeworkofSSH⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯..112.2.4StatesecretSM3....⋯...........⋯..⋯.....⋯.............................................⋯...⋯.................162.3Conclusion⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯..193.1Requirementanalysis⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.:!()3.211地targetofthesystem&sign⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯..213.3—虹“矗×lanCcnmnagementsystem⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯223.3.1Thefunctionmoduledesignofadministrator⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯..233.3.2Thefunctionmoduledesignofateacherinchargeofaclass⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯..243.3.3Thefunctionmoduledesignofstudents⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.253.4Thefunctionmoduledesignofdatabase⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯..263.5Securitymoduledesign⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.:183.6Conclusion⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯:19Chapter4Therealizationofsystemfunction...................................................⋯...304.1Progrmd诅gram⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯304.1.1Classattendancestatisticsdiagram⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯..30V
Contens4.1.2Userdiagram⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯··304.1.3Classdiagram⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.314.1.4Absenteeismdiagram⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.⋯⋯⋯⋯⋯⋯324.1.5Leavediagram⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯一334.1.6Statisticsstudentattendancediagram⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯..334.2Thetimingdiagramoftheprogram⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯..⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯344.2.1Thetimingdiagramoftheclassmodule⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯344.2.2Thetimingdiagramofskippingclassesmodule⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.344.2.3Thetimingdiagramofaskingforleavemodule⋯⋯⋯⋯⋯⋯⋯⋯⋯.⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯354.2.4Thetimingdiagramofusers⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯354.3Themainframeworkofthesystemfunctionrealization...⋯...................................⋯....364.3.1Hibernateconfigurationfile⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.364.3.2strutsconfigurationfile⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯。.374.3.3sprillgconfigurationfile⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯374.4Themainmoduleofthesystemfunctionrealization⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯..384.4.1Systemloginpage⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯..⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.384.4.2Thepageofthemanagementofateacherinchargeofaclass⋯⋯⋯⋯⋯⋯.⋯⋯⋯⋯⋯⋯404.4.3Thepageofclassmanagement⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯..414.4.4ThedataencryptionbasedonSM3⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯..434.5SystemTest⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯..⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯444.6Conclusion⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯45Chapter5ConclusionandFutureWork.................⋯..........................⋯.................465.1Conclusion⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯465.2FutureWork.........................⋯.............⋯......................。.......。。。...。。。。..⋯。.。。。。。。。。...。。。。..。46Vl
第一章引言i.1课题背景第一章引言目前学校内部的信息化逐步完善,教学管理系统、学生管理系统、学校数字图书馆、校园B2C网上交易系统等等越来越多的系统出现给老师和学生的学习、生活、办公带来了便利。为了进一步加强学校的学风建设,在确保正常的教学秩序同时,给老师和学生创造一个良好的学习环境,学生考勤管理系统的诞生就非常必要。当前学校学生的考勤都采用传统的考勤方式,即任课老师上课点名、记录学生上课情况。学生请假流程较为繁琐,须要写纸质请假条,上交班主任批准。如果请假的时间超过一天,还需要根据请假时间的长短不同,将假条逐级上报给教学副部长、部长、政教处主任、校长批示方能生效。这种传统的考勤模式存在以下不足:1)学生请假手续繁琐,需要跑多个地方找多位老师及领导批准。2)假条由各班汇总到教学部,增加了教学部的统计工作。3)任课教师对学生的请假并不知晓,不能及时了解学生缺席的信息。4)班级缺勤情况需要手工统计,增加班主任工作量。5)教学部长等领导不容易把握每个班级的考勤情况。因此需要一个好的学生考勤管理系统来解决这些弊端,本文中涉及的学生考勤管理系统就是主要针对现阶段学生请假以及上课出勤管理而设计的信息系统,旨在减轻学生、老师在请假考勤问题上的负担。一个完整的软件系统必然要考虑到它的安全问题,由于网络“黑客”和“入侵者”的活动越来越频繁,系统的网络安全越来越受到人们的关注和重视,怎样提高数据通信网络的安全就显得非常重要。当今,加密技术已经成为保障数据安全传输的一个重要的工具。而Hash算法作为加密技术的基础、核心,几乎无处不在。2010年,中国国家密码管理局公布了中国商用密码Hash算法标准一一SM3密码杂凑算法。至此,数字签名标准(DigitalSignatureStandard。DSS)、安全电子交易(SecureElectronicTransaction,SET)等电商应用的多个方面都可以看到SM3算法的身影。本系统的登录模块身份认证环节也采用SM3密码杂凑算法来保障数据的安全性。1.2Hash函数
第一章引言1.2.1单向散列函数Hash函数也称单向散列函数,它是现代密码学的核心。散列函数就是把可变的输入长度串转换成固定长度输出值(叫做散列值)构成的函数。单向散列函数是散列函数的一中,其工作方向是相同的,从预映射的值很容易计算其散列值,但要使其散列值等于一个特殊值却很难。单向散列函数的数学模型是:h=H(M)。M用来表示待处理的明文,其长度能够是任意值;H用来表示单向散列函数,h用来表示报文摘要,其长度是固定不变的,且不会受M长度的影响。H的单向性质包括下列几点:1)假设已知H和M,可以计算出h的值;2)假设己知h和H,计算M值的难度较大,甚至无法获取M的一切消息:3)假设已知H,则需要求解出M。和M:,并满足H(M。):H(M:)无解。按照不同的安全级别,能够将单向散列函数分成两种,即弱碰撞自由和强碰撞自由的单向散列函数。强碰撞自由的单向散列函数的性质如上所示。假设把3)条的内容改成:根据已知的消息M和h,能够将不同的消息M。寻找出来,并满足h(M)=h(M,)无解,就是弱碰撞自由的单向散列函数。尽管与弱碰撞自由的单向散列函数相比,强碰撞自由具有更高的安全系数。随着重复运算次数的增加,弱碰撞自由的单向散列函数的安全性显著减小,但是并不会对强碰撞自由的单向散类函数的安全性造成影响。所以,强碰撞自由的单向散列函数在实际中使用较为广泛。单向散列函数的特征还包括下列几点:1)单向散列函数可以对长度不确定的明文进行处理。在实际应用中,所遇见的大部分明文都可以通过单向散列函数进行处理,而且可以产生固定长度的消息摘要。利用相同函数重复处理该明文,获得的信息摘要是一样的。2)单向散列函数的信息摘要具有未知性和不确定性。从表面上看,信息摘要不会受到原始数据的影响。但是,如果对原始数据进行相应的调整,将会显著干扰信息摘要的内容。3)单向散列函数具有不可逆性,根据报文摘要获取的原始数据是无法计算出来的。设计并实现单向散列函数的难度较高。单向散列函数是在压缩数据的基础上逐渐发展起来的,其原理如下所示:根据分组,单向散列函数能够对消息进行处理。首先,在进行分组之前,先填充待处理的消息,使消息的长度为分组长度的整数倍。通常将原有消息长度的消息填充到其中,从而避免消息散列后信息的值是一样的。分别处理不同分组的消息,将变换输出与本分组消息作为压缩函数的输入,即:hi=f(Mi,hH)。将第i个消息分组和i-i个散列值一起,作为第i论函数的输入数据。所有消息的散列值就是指该分组的单列值。如今,单
第一章引言向散列函数广泛应用于密码学理论中,如SHA、MD5、MD4、MD2、N2Hash算法等。研究结果显示,消息摘要算法MD5和安全散列算法SHA在应用的最为广泛,两种算法都有现成的加密软件。MD5算法与SHA算法的理论、步骤和方式具有一定相似之处。密码学家RonRivest根据MD4,设计并提出了一种新的加密算法,即MD5(MessageDigest5)。MD5是一个单向散列函数,能够散列所有文件,计算出来的散列值为128bit。如图1.1所示,为MD5的算法流程。是t输出散列值图1.1MD5的实现过程MD5Context结构是处理文件的基础和保障。128bit的散列值和512bit的明文块是该结构的基础。散列在MD5算法具有不容忽视的作用,其负责传递明文块计算出来的所有散列值。四个32比特的连接变量用于散列值的计算。在进行计算之前,需要按照下列参数进行初始化处理:C=Oxfedcba98D=Ox76543210完成参数的初始化之后,要调用并执行主循环函数。根据512bite消息分组中的数量确定循环次数。然后按照对应关系进行赋值,即A=a,B=b,C=c,D=d。如图1.2所示,主循环函数共进行四次调用。每次调用会完成16次操作。每次操作都会非线性计算a,b,C,d的其中三个,并将第四个变量、常数和文本子分组添加到计算结果中。计算出来的值向右循环若干位,并于a,b,C,d中的某一个相加,并替换掉a,b,C,d的某一个。其计算流程如图1.3所示。在任意操作里,都会对四个非线性函数进行调用。,戮
第一章引言F(X,Y,Z)=(X/\Y)V((一X)八Z)G(X,Y,Z)=(X八Z)V(Y八(一Z))H(X,Y,Z)=XoYoZI(X,Y,Z)=Yo(XV(一Z))由于MD5调用了上述函数,所以具有较快的计算速度。此外,密码学理论显示,针对该问题,尚未出现有效的攻击手段,具有较高的安全性、可靠性和稳定性。因此,MD5在军事、保密、通信等领域得到广泛应用。:Ⅱ⋯d⋯d~d暑图1.2MD5的主循环图1.3如5的一次执行过程1.2.3单向散列函数对口令的保护在现有的大多数系统软件和应用软件中,用户的口令是用DES(或3DES)算法进行加密后,在计算机中保存。因为DES加密算法只能够加密长度固定的数据,所以大部分系统会限制用户密钥的长度。此外,随着计算机处理能力的增强,56bite密钥的DES已经不符合实际使用的需求。因此,可以通过单向散列函数来对用户的密钥进行管理。方法如图1.4所示。ll{用户口令PU:用户请求登录:输入口令p1t图1.4基于散列函数的密钥管理方法如果K=H(P1),则说明用户请求合法,应该允许其登录,否则拒绝。本方法在攻击者掌握散一戡辩副越
第一章引言列算法的条件下,不会对系统的可靠性、安全性产生影响,Linux等开源系统适宜采用这种加密方式。因为对用户输入口令的长度有限制,所以基于散列函数的密钥管理方法对系统效率、性能和速度的影响较小。所以利用单向散列函数来对用户的口令进行管理的优点主要包括下列几点:1)用户能够输入长度不固定的口令。用户输入任意长度的口令,经过散列函数处理之后,获得的摘要的长度都是固定的。2)单向散列函数具有单向性的特征,大大提高了用户1:3令的安全性。1.3国密算法为了确保商用密码的安全性,国家商用密码管理办公室制定了一系列密码标准,包括SSF33、SMl(SCB2)、SM2、SM3、SM4、SM7、SM9、祖冲之密码算法等等。其中SSF33、SMl、SM4、SM7、祖冲之密码是对称算法;SM2、SM9是非对称算法;SM3是哈希算法。目前已经公布算法文本的包括祖冲之序列密码算法、SM2椭圆曲线公钥密码算法、SM3密码杂凑算法、SM4分组密码算法等。SM3密码杂凑算法是王小云等人设计,是在SHA一256基础上改进实现的一种算法。SM3算法的压缩函数与SHA一256的压缩函数具有相似的结构,但是SM3算法的设计更加复杂,SM3算法采用Merkle—Damgard结构,消息分组长度为512位,摘要值长度为256位。此算法对输入长度小于2的64次方的比特消息,经过填充和迭代压缩,生成长度为256比特的杂凑值,其中使用了异或,模,模加,移位,与,或,非运算,由填充,迭代过程,消息扩展和压缩函数所构成。表1杂凑算法比较单位:bits输出散列中继散列数据区块最大输入一个Word循环碰撞攻击算法值长度长度消息长度长度次数SHA一116051264--13280存在SHA一256256512264_13264尚未存在SM3256512264—13264尚未存在现今为止,SM3算法的安全性相对较高。1.4本文主要工作和组织结构
第一章引言本文从学生考勤管理系统的设计入手,考察系统的设计需求和设计所需技术,充分的分析系统所涉及的jsP技术、MVC模式、S.S.H框架、及基于SM3算法的信息加密技术,并在此之上基础上开发出一套适用于中等职业学校的学生考勤管理系统。论文的主要内容共分为六章,具体章节安排如下所示:第一章引言。对课题的研究内容、主题和背景进行了重点介绍,对Hash算法的原理、步骤、流程和特点进行了重点阐述,概述了国密算法的特点并对文章组织结构进行说明。第二章系统的开发环境及关键技术研究。第一节主要介绍了系统的开发环境,并论述系统用到的主要关键技术:第二小节着重介绍JSP的执行流程、MVC模式的特点及S.S.H框架的结构组成,并对国密SM3算法的构成进行深入研究。第三章系统设计。结合实际情况重点分析系统需求,然后介绍了系统的设计目标,着重于系统的登陆安全模块及数据库模型和功能模块的设计。第四章系统实现。包括学生模块、登陆模块、安全模块、班主任和管理元模块的具体实现与调试。第五章总结与展望。
第二章系统开发环境及关键技术研究2.1系统开发环境2.1.1MyEclipse本平台中所用到的开发工具是知名的JAVA项目开发工具MyEclipse。MyEclipse是一个J2EE集成开发环境,是对EclipseIDE的一种扩展。具有编写、调试、配置、测试和除错等功能,有丰富、完善的功能和优良的性能。对Hibernate、SQL、Javascript、CSS、JSF、Struts、HTML等有很好的支持。根据MyEclipse的结构,能够将其划分成7类:MyEclipse整合帮助,J2EE项目部署服务,应用程序服务器的连接器,EJB开发工具,数据库服务,J2EE模型和WEB开发工具。MyEclipse具有良好的兼容性,集成了大量插件,是在Eclipse的基础上逐渐发展起来的。MyEclipse目前支持JavaServlet,AJAX,JSP,JSF,Struts,Spring,Hibernate,EJB3,JDBC数据库链接工具等多项功能。MyEclipse的体系结构具有模块化的特征,不会对模块产生影响,具有良好的升级性和扩展性。总体来讲,MyEclipse是Eclipse的一款工具和插件,为JavaEE程序段开发提供了可靠的平台,能够编写代码、配置环境、测试bug和纠正错误。在安装MyEclipse之前,先要保证Eclipse能够正常使用。2.1.2MySQL数据库在进行实际的项目开发过程中,数据库是必不可少的。常见的数据库管理系统很多,如Oracle、MicrosoftSOLServer、MySQL等。本系统使用MySQL作为数据库管理系统。MySQL由瑞典的MySQLAB公司研发、发布和支持,后被SUN公司收购。MySQL是世界上第二大的广泛使用的关系数据库管理系统和的开元数据库。MySQL的语法标准规范,能对数据进行查询、修改、更新、添加和删除等操作。具有价格低廉、效率高、稳定性好、消耗资源低、处理速度快等优点,与PHP、Apache具有良好的兼容性,能工作在不同的平台之上,广泛应用与各类网站之中。MySQL因其速度快、体积小和可靠性高而引起广泛关注,而其开放源码的特点,更是许多中小型网站选择MySQL作为后台数据库的重要原因。与Oracle、SQLServer和DB2等大型的关系型数据库相比,MySQL规模小,功能有限,7
第二章系统开发环境及关键技术研究但对于本系统使用而言,其提供的功能已经足够。2.1.3Tomcat服务器为了使用户可以通过浏览器来访问Web项目,还需要使用Web服务器来运行和发布项目。开发Web应用时使用的是与Servlet兼容的Web服务器,本系统采用的是Tomcat服务器。Tomcat是一个Web应用服务器,提供了完善的功能,为网站系统的开发和设计提供了方便。Tomact服务器的开源代码,显著减少了系统开发的成本。用户数量不高、并发量较低的中小型系统适宜采用Tomcat技术,它也是设计JSP程序的最佳选择。Tomcat技术先进,简单易用,稳定性好,而且是开源的免费软件,因此广受JavaWeb学习者和开发者的喜爱,已成为当前比较流行的轻量级Web应用服务器。Tomcat是完全使用Java语言开发实现的,因此它是平台无关的,可以在任何一个装有JVM的操作系统上运行。2.2关键技术研究2.2.1JSP技术本系统采用jsP技术,JSP全名为JavaServerPages,中文名叫Java服务器页面,即Java服务器端页面开发技术,是基于Java语言的软件开发结构体系。由Sun等公司共同研制推出,是一种动态网站开发结构体系。JSP以JavaServlet技术为基础,能够实现动态网站的搭建,与ASP技术具有一定相似之处,也是针对Web服务器商提供的技术。JSP与ASP相比有独特的性质。JSP网站通常由Java程序脚本、JSP服务端标签、JavaScript脚本、CSS样式单文件、HTML标签等构成,文件扩展名是木.JSP,为一套脱离于操作系统的网站架构平台。利用jsP搭建起来的网站能够跨平台、跨系统运行,可移植性、可维护性和可升级性好,具有普遍适用性。JSP的执行步骤如下所示:1)用户向系统提交访问JSP页面的请求,Tomcat等JSP引擎会对JSP文件中的动态和静态数据进行预处理,将其转换成Java代码。2)JSP引擎能够将.java文件预编译为.class的Servlet类文件,并保存在内存中。通常在\work目录中保存类文件。3)当有客户请求的时候,直接再开一个线程,在容器中存储经过编译的class对象,并生成响应页面。Class文件能够直接运行,不用进行重新编译。其运行速度要远远大于重新R
第二章系统开发环境及关键技术研究编译JSP文件。假设对JSP文件进行调整,则必须重新编译。因为JSp中的Servlet类文件提供了javax.servlet.jsp.JspPage接口,扩展的javax.servlet.Servlet接口也保存于其中。jsDestroy0,jspInit0等用来描述JSP生命周期的函数都存储在javax.servlet.jsp.JspPage接I:1之中,与Servlet的destroy0和init()函数具有一定相似性。如图2.1所示,为控制JSP生命周期的流程。图2.1JsP的生命周期使用JSP技术的优势主要包括下列几点:1)一次编写,处处运行。具有较高的效率,编译一次之后,能够多次运行,适用性较强。2)系统的支持多平台。JSP具有良好的兼容性和移植性。各种系统、平台都能够使用JSP技术。尤其是分布式系统,更适宜采用JSp技术。3)可伸缩性较强。通过Jar文件能够实现Servlet/JSP的运行,并实现负载均衡和服务器集群,额可以并行处理消息和事务,并将服务器数量增加到更多。4)以大量开发工具为支撑和保障,与ASP技术具有一定相似之处。此外,提供了开源代码,支持各种插件和工具。5)可以使用服务器端的多种组件。Web应用需要有功能强大的组件和插件。JSP技术能够使用服务器端提供的各种复杂的组件来实现Web页面的功能,提高系统的性能。例如:JSP技术可以使用Javabeans组件来完成Web页面中商务服务的功能。2.2.2MvC模式MVC思想是将系统的各个组件进行分类,不同的组件扮演不同的角色。然后将系统中的
第二章系统开发环境及关键技术研究组件分隔到不同的层中,这些组件将被严格限制在其所在层内。同层中的组件应该保持内聚性,且大致处于同一抽象级别,而各层之间则以松散耦合的方式组合在一起,从而保证了良好的封装性。MVC架构将整个系统划分为三个层次,各层次分别实现不同的功能,分离了业务逻辑和视图显示,增强了系统的灵活性。每个层级是相互独立的,修改某个层次里的内容,不会影响其他层次里的功能,极大降低了程序开发者的工作任务和工作难度,也提高了程序的可读性,代码重用性也更高。在经典的MVC模式中事件由控制器进行处理,按照事件类型,控制器能够对视图、模型进行调整。总体而言,视图与模型成多对一的关系,模型数据或状态的改变都会导致视图的变化。1)模型层模型层代表的是企业数据和其对应的业务逻辑,它控制着对数据的处理和更新。通常,模型和现实世界对数据的处理非常相似,这就要求程序开发人员对模型的设计与现实世界应基本相近。对于视图层和控制层来讲,业务处理的流程是不透明的,视图层发送出来的请求数据传输到模型层,并将处理结果反馈回来,以更新视图层。2)视图层视图层实际上是模型层中的各个模型的具体表现形式。它通过模型得到企业数据,然后再根据需要来显示它们。虽然视图层对数据不做处理,而是将数据直接传送给控制层,但它必须保持着与模型层的数据模型的一致性,即当模型层的数据发生变化时,视图层必须随之变化。为了达到这个目标,常常采用软件设计模式中的观察者模式,即视图层中的视图对模型层中的对应模型进行注册,这样一旦模型数据发生改变,就会通知视图层进行相应的改变。3)控制层控制层在MVC结构中连接模型层和视图层,起到了纽带的作用。它将视图层的交互信息进行过滤等处理后,再传送到模型层相应的业务逻辑处理程序进行处理。在Web应用中,视图层首先向控制层发送信息,通常是GET或POST请求,控制层接收到请求后,并不进行业务处理,而是把请求信息传递给模型,告知模型应该做什么处理。接着模型接受请求数据,并产生最终的处理结果。模型层对应的动作包括业务处理和模型状态的改变。最后根据模型层产生的结果,控制层给用户(浏览器)回应相应的视图。MVC三层之间的关系如图2.2所示10
一第二章系统开发环境及关键技术研究————————————————————————————————————————————————————————二∑.=—一更新一图2.2MVC各层间关系总的来说,MVC有如下特点:1)低耦合性。构架分为三层,降低了层与层之间的耦合,提高了程序的可扩展性,有助于程序员灵活地进行编程。2)模型与若干个视图相对应。按照MVC设计的方法和理念,模型与若干视图相对应,让代码的可维护性增强,一旦模型发生变化,我们更方便进行维护。3)模型返回的数据与显示技术逻辑分离。从模型返回的数据可以使用任何显示技术来显示,各层支付这自己的任务,而不用去管其他层的任务。.4)有利于工程化管理。MVC将不同的模型和不同的视图组合在一起进行管理,层与层之间分离,每一层都有各自的特色,代码可以复用,降低了软件开发周期。2.2.3S.S.H框架S.S.H框架是J2EE应用中struts2+spring+hibernate三大免费开源框架的结合使用,它可以看成工具,也是中间件。他是用来提高我们的开发效率,提高我们软件产品的可维护性、可扩展性乃至敏捷性的。他们里面有很多优秀的设计理念及模式应用。比如,struts属于MVC框架;而hibernate属于ORM系统;而spring属于应用程序框架,其核心是IOC容器以及AOP。Spring中还集成了很多适用东西,比如对JDBC的封装、自己的MVC、对动态语言的简洁访问等。1.Struts2框架Struts2是Apache公司组织的一个开源项目。Struts2是在WebWork的基础上逐渐发展起来的,与Strutsl有本质的区别。Struts2通过拦截器对用户发送过来的请求进行处理,
第二章系统开发环境及关键技术研究分离了ServletAPI和业务逻辑控制器。Struts2的结构图如图2.3所示。>trutsIHnpserV嘲Req恻j^魄船l’c翻"抽x蟛蚺醐UpOh"terflP,erstSl如Me也斟c"f辩#D江帅b*l一⋯⋯。j,McsonProx,}一rmlr.l~””r1】interceptor2Jtjl,一ConfigmtJonl了”—”了~|一。.。。。|yztem|№哪iAc#∞Achon』1.j|n姻aI珏on}●I≮豳噬::::==::pT鲫pl脚shrtlts.tmI’≯军咝广:=..=:,y——广—。厂F—uHnps-rvk淞印n”}_图2.3Struts2体系结构图总体而言,Struts2框架处理一个用户请求大致可以分为如下几个步骤:用户发出一个HttpServerRequest请求。2)FiIter负责传输该类请求,如果SiteMesh插件和Struts2进行了集成处理,那么要通过ActionContextCleanUp过滤器处理该请求。3)调用FilterDispatcher。整个控制器的核心就是FilterDispatcher。它对ActionMapper进行询问,并对调用Action的请求进行确定。假设要对Action行为进行调用,那么FilterDispatcher要将请求发送给ActionProxy进行后续处理。4)struts.xml是ConfigurationManager管理器询问框架的配置文件。ActionProxy对struts.xml文件进行配置,并将Action类寻找出来。5)ActionProxy创建一个ActionInvocation的实例,该实例使用命名模式来调用。在Action执行的前后,Actionlnvocation实例根据配置文件加载与Action相关的所有拦截器Interceptor。一旦Action执行完毕,按照struts.xml文件配置,从ActionInvocation实例中将返回结果寻找出来。返回结果通常是一个JSp或者FreeMarker模板。7)最后,HttpSerVletResponse响应通过web.xml文件中配置的过滤器返回。使用Struts2进行JavaWeb开发有很多优点:1)通过简单、集中的配置来调度动作类,使得配置和修改都非常容易。
第二章系统开发环境及关键技术研究2)提供简单、统一的表达式语言来访问所有可供访问的数据。3)提供内存式的数据中心,所有可供访问的数据都集中存放在内存中,所以在调用中不需要将数据传来传去,只要去这个内存数据中心访问即可。4)Struts2提供标准的、强大的验证框架和国际化框架,而且与Struts2的其他特性紧密结合。5)强大的标签,使用标签可以有效地减少页面代码。6)良好的Ajax支持。增加了有效的、灵活的Ajax标签。7)明确的错误报告。8)智能的默认设置。2.Spring框架Spring框架是基于Java平台的,它为应用程序的开发提供了全面的基础设施支持。Spring专注于基础设施,这使得开发者能更好地致力于应用开发而不用去关心底层的构架。Spring框架遵从模块的架构方式,由总共20多个模块组成,包括核心容器、数据访问/集成、Web、AOP等。如图2.4所示。这些模块为我们提供了开发企业级应用所需要的一切东西。在开发过程中,这些模块并不都是必须的,可以针对具体的应用自由选择所需要的模块。还可以将Spring与其它框架或库进行集成,使得开发过程更有针对性、更有效率。本系统涉及到的模块有:1)核心容器(CoreContainer)可以看到,位于Spring结构图最底层的是核心容器CoreContainer。Spring的核心容器由Beans、Core、Contex和ExpressionLanguage模块组成,Spring的其它模块都是建立在核心容器之上的。Beans和Core模块实现了Spring框架的最基本功能,规定了创建、配置和管理Beans的方式,提供了控制反转(IoC)和依赖注入(DI)的特性。核心容器中的主要组件是BeanFactory类,JavaBean的管理就由它来负责。BeanFactory类通过IoC将应用程序的配置及依赖性规范与实际的应用程序代码分离。Context模块建立在Core和Beans模块之上,该模块向Spring框架提供了上下文信息。它扩展了Beanfactory,添加了对国际化(118N)的支持,提供了国际化、资源加载和校验等功能,并支持与模板框架如Velocity、FreeMarker的集成。ExpressionLanguage模块提供了一种强大的表达式语言来访问和操纵运行时的对象。该表达式语言是在JSP2中规定的统一表达式语言的延伸,支持设置和获取属性值、方法调用、
第二章系统开发环境及关键技术研究访问数组、集合和索引、逻辑和算术运算、命名变量、根据名称从IoC容器中获取对象等功能,也支持1ist投影、选择和list聚合功能。2)数据访问/集成模块数据访问/集成模块由JDBC、ORM、OXM、JMS和Transaction这几个模块组成。在编写JDBC代码时常常需要一套程式化的代码,Spring的JDBC模块对这些程式化的代码进行抽象,提供了一个JDBC的抽象层,这样就大幅度地减少了开发过程中对数据库操作代码的编写,同时,也避免了开发者去面对复杂的JDBCAP以及因释放数据库资源失败而引起的一系列问题。例如:Transaction模块提供了支持编程事务和声明式事务的函数,且实现该类函数要提供相应的接口,且适用于全部POJO。3)Web模块Web模块包括Web、Servlet、Struts和Portlet这几个模块。>Web模块提供了基本的面向Web的集成功能,如多文件上传、使用servlet监听器初始化IoC容器和面向Web的应用上下文,还包含Spring的远程支持中与Web相关的部分。>Servlet模块提供了Spring的Web应用的模型一视图一控制器(MVC)实现。>Struts模块提供了对Struts的支持,提供了将一个典型的Strutsweb层集成在一个Spring应用程序中的支持类。》Pordet模块提供了一个在portlet环境中使用的MVC实现。4)AOP和Instrumentation模块AOP模块提供了一个符合AOP联盟标准的面向切面编程的实现,使用该模块可以定义方法拦截器和切点,将代码按功能进行分离,降低它们之间的耦合性。根据source—level的元数据服务,可以在程序代码中合并该类行为信息。Aspects模块提供了对AspectJ的集成支持。Instrumentation模块提供了classinstrumentation的支持和classloader实现,可以在特定的应用服务器上使用。5)Test模块Test模块支持使用JUnit和TestNG对Spring组件进行测试,它提供一致的ApplicationContexts并缓存这些上下文,它还能提供一些mock对象,使得开发者可以独立地测试代码。14
第二章系统开发环境及关键技术研究≥ii⋯。。豢||!!;《爨蠖}臻黼鬯嘲謦⋯。?鬻鬻。溪熬§。i一;,。DataAccessIntegration鬟麓囊Web(MVC/Remoting)筹一。。6⋯t⋯;⋯。“‘。“?。嚣*-JDIN:。0RM}蘩WebServteti⋯⋯⋯十、一“Jtt⋯,,荔1{。‘%吖|、,_tHtt一:1⋯、,⋯^f。一⋯i⋯。,?一”一“lPodet;;Strutsi叠一纛||薹搿?!;⋯O⋯XM0魏!麓曼l一jy∞iTrarlsaci;ons;~薹‘般醪一。譬一,耋囊I垂;;|举p警哆疆撕m掣爆哆曩嘲l霉攀j%_m$溯%㈣㈣≮一㈨㈣;ti一⋯一一∥“㈣戮《蠢《蕊Ⅻ一。。l囊lCoreContainer爨鬟}羹黉瑟i;饔;xprii.⋯⋯。。i瓣CoreContext瀵蔫~。。⋯。⋯⋯jt。⋯⋯∥;⋯⋯;i⋯。譬!,掣溅一一2蕤l黛黧自学瑚”⋯一⋯“。瓣蕊蠢㈥蘩鬻蠹嚣蕊l鬻㈧麓嚣㈣器篓嚣荔刺荔黼戳羹笺囊薹T嵌}i.羞羹3.Hibernate框架Hibernate是一个对象——关系映射(0RM)的框架,源码开放。Hibernate对JDBC进行了轻量级封装,开发人员可以运用面向对象的编程思想来进行持久层开发,还可以使用Hibernate提供的HQL(HibernateQueryLanguage)直接从数据库中获得Java对象。Hibernate开发过程中会用到5个核心接口,分别为Configuration接口、SessionFactory接口、Session接口、Transaction接口和用于数据查询的Query接口。通过这个5个核心接口,开发人员可以对持久化对象进行操作,还可以进行事务控制。Hibernate就是通过这些接口来进行持久化工作的。Hibernate的工作原理如图2.5所示。图中介绍了Hibernate进行持久化操作的主要步1)Hibernate的初始化,创建Configuration对象。这一步用来读取XML配置文件和映射文件的信息到Configuration对象的属性中。具体首先从Hibernate配置文件Hibernate.cfg.xml中读取配置信息,存放到Configuration对象(内存)中。然后根据配置文件中的mapping元素加载所有实体类对应的映射文件到Configuration对象中。2)创建SessionFactory实例。通过Configuration对象读取到的配置文件信息创建SessionFactory,即将Configuration对象内的配置信息存入SessionFactory的内存(NfI)中。SessionFactory充当数据存储源的代理,并负责创建Session对象。得到SessionFactory对象后,Configuration对象的使命就结束了。
第二章系统开发环境及关键技术研究3)创建Session实例,建立数据库连接。Session通过SessionFactory打开,创建一个Session对象就相当于与数据库建立了一个新的连接。Session对象用来操作实体对象,并把这些操作转换成对数据库中数据的增加、删除、查询和修改操作。4)创建Transaction实例,开始一个事务。Transaction用于事务管理,一个Transaction对象对应的事务可以包括多个操作。在使用Hibernate进行增加、删除和修改操作时必须先创建Transaction对象。5)利用Session的方法进行持久化操作。将实体对象持久化到数据库中。6)提交操作结果并结束事务。对实体对象的持久化操作结束后,必须提交事务。7)关闭Session,与数据库断开连接。2.2。4国密SM3●甲通过SessionFactory实例创建Session的实倒.与数据库建立连播Hibernate初始化。构l建Configuration实例通过Session实例创l建Transaction实例.开始—个I自动加载配置文件到IConfigmration实例通过Session接口提』供的方法进行持久化通过配置文件中的操作mapping元素加载映射l文件到Configuration将操作结果提交到数实倒据库并结束事务』通过已创建的关闭scssion连接Configuration实例构J建SessionFactory实冈倒图2.5Hibernate工作原理图为了保障商用密码安全,国家商用密码管理办公室制定了一系列密码标准,包括SSF33、SMl(SCB2)、SM2、SM3、SM4、SM7、SM9、祖冲之密码算法那等等。SM3算法是一种商用密码杂凑算法,安全性与效率与SHA256相当。该算法发布与2010年12月,发布文档给出了杂凑函数算法的计算方法和计算步骤,并给出了运算示例。商用密码应用中涉及到的数字签名和16
第二章系统开发环境及关键技术研究验证等多用到SM3密码杂凑算法,因为SM3密码杂凑算法的特性,可以实现各种高要求的密码应用。SM3算法是一种基于分组迭代结构的算法。算法采用消息双字结合的处理方式,并使用来自不同群运算的混合,实现消息在局部范围内快速扩散和混乱,并有效防止了比特追踪及其它已知分析方法的攻击。SM3算法的特点很多,例如安全性好、结构新颖、在软件或硬件中都容易实现等等。在SM3算法中,Hash值的生成需要经过填充和迭代压缩的过程,最终得到长度为256比特的Hash值。SM3算法具体处理过程包含以下五个模块:1.常量与函数1)初始值/V=7380166f4914b2b9172442d7da8a0600a96130bc163138aae38dee4dbO/bOe4e2)常量定义f79cc45190≤i≤15o17a879d8a16≤i≤633)布尔函数定义IX0内Z0≤?≤15q(x×刁21(x^功v(x人刁v(y入刁16≤)≤63IXoy。Z0≤?≤15GGj(X,Y,Z)21(x^的v(、x^刁16<。j<63式中X,Y,Z为字。4)置换函数定义eo(∞=X0(X《9)o(X《17)异(∞=Xo(X《15)o(X《23)式中X为字。2.消息填充如果设定消息脚的长度为J『比特。首先在该消息的末尾增加比特“1”,再添加七个“0”,七是满足J『+1+七三448mod512的最小的非负整数。然后再增加一个64位比特串,该比特串是长度J『的二进制表示。经过一系列处理后,消息脚’的比特长度为512的倍数。17
第二章系统开发环境及关键技术研究如:对消息011000010110001001100011,长度,=24,经填充得到比特串:423比特64比特,.———√~—1,———————^—————弋0110000101100010011000111OO⋯OOOO⋯011000、————----’_—-————一l的二进制表示3.消息迭代将填充后的信息/7/’按512比特进行分组:171’=矗o)唇n⋯唇川)其中//=(,+七+65)/512。对171’按下列方式迭代:FoRi=0TOn一、∥^1’=凹(∥o,矗D)上式中各部分的含义是:CF:压缩函数;∥o’:256bit初始值工V:唇D:填充后的消息分组:V“’:迭代压缩的结果。4.消息扩展将消息分组B“’按以下方法扩展生成132个字Wo,%⋯%,Wo,吖,⋯w/,,用于压缩函数CF:1)将消息分组唇。按以下方法扩展生成132个字Wo,%⋯%。2、FORj=16巾67彬卜暑(略·so啄,o(啄,《15))o(啄。3《7)o啄。3)FORj=0T063嘭=嘭owj+45.消息压缩令A,B,C,D,E,F,G,H为字寄存器,SSl,SS2,TTl,TT2为中间变量,压缩函数旷1=凹(∥。,唇。),0≤,≤刀一1。计算过程描述如下:18
第二章系统开发环境及关键技术研究FORj=0册63SSl卜((4《12)+E+(乃《力)《7SS2卜SSlof4《12)771卜晖(4EC)+D+SS2+嘭m4-GCj(e,F,G)+日+·5研+嘭D七-CC卜B《9B卜AA卜厂nH七_GG卜F《19F七一EE卜eo(rz2)ENDFoR∥^1’4-4目CD易啷0∥D其中,字的存储为大端(big—endian)格式。2.3本章小结本章第一节简单介绍了系统主要开发工具MyEclipse、MySQL数据库及Tomcat服务器的特性;第二节主要介绍了系统涉及到的多项关键技术:JSP技术的执行流程和及它所具备的优点;MVC模式的三层结构及特点;S.S.H框架各个部分的介绍及工作流程;国密SM3算法具体实现的过程。19
第三章系统设计3.1需求分析通过对广大师生的要求进行研究,考虑到软件的后期扩展,按照软件工程的理论对系统需求进行详细分析,给出系统所要解决的主要问题,所要完成的基本功能以及系统所需要的运行环境。1、性能需求分析1)数据的准确性①查询准确率:最终查询到的记录资料应该完全匹配原先给定的个人或者组合资料条件。②查询全部率:最终查询到的记录资料应该保证包括原先资料库中所有的可以匹配的资料信息。2)时间响应特性在系统内,正常操作的反应时间一般可以控制在5秒之内。3)适应性满足学校、专业部、老师及学生的需求。2、系统需求分析1)准确性最终发布的系统要基本实现用户的前期目标,保证在运行的时候不会出错。2)可靠性在正常的运行条件下,保证在运行的时候不会出故障。3)有效性在正常的运行条件下,系统对查看、搜索、添加、修改、删除等一些常见的操作,保证在运行的时候响应及时,一般控制在5秒之内。4)完整性在正常的运行条件下,保证系统内部的所有数据,不会由于外部意外原因(如停电等)而丢失。5)实用性在正常的运行条件下,保证系统尽可能多地为使用用户提供便利。2n
第三章系统设计6)可维护性在正常的运行条件下,保证系统在运行的过程中,如果发现错误信息的时候,能够对它进行准确而快速的定位,并进行相应的诊断,然后修改。7)可测试性在正常的运行条件下,保证系统可以进行相关的测试。8)可重用性保证系统在设计的时候采用模块化的设计方法,尽可能地在系统的每个模块系统接口的设计上,实现高内聚、低耦合的设计理念,从而提高系统中的各个模块的可重用性。9)安全及保密性在正常的运行条件下,需要对用户进行身份验证,只有通过系统的身份验证的用户才可以使用本系统的相关功能。10)可理解性在正常的运行条件下,在本系统内发布的各种各类信息,简洁明了,方便用户理解。11)可移植性系统软件在以后,可以方便的实现在Windows其他的操作系统上的移植。12)网络互联性系统能够在Internet网络上发布。3、界面需求分析在计算机软件技术中,人机接口界面已经发展成为一个重要的分支。人机界面的设计目的是使人与计算机之间能够进行准确地信息传达与交流。从一个角度来说是,人们应该尽量采用相对自然的方法向计算机输入信息;从另一个角度来说,计算机在对人们传输信息的时候,必须保证准确,不会让人们产生歧义,对消息的内容产生误解或者混淆。本系统采用简洁的菜单界面,让用户可以清楚地知道怎么去操作。整体以蓝色、浅色系为主,给人清新舒适的感觉,界面简洁清爽。3.2系统设计目标系统设计阶段包括总体设计和详细设计。总体设计就是把用户的信息要求统一到一个整体的逻辑结构或概念模式中。详细设计包括数据库设计和应用程序设计两大部分。学生考勤管理系统的核心主要是实现一个基于SM3算法的用户登录认证,认证通过的用户登录系统进行相关考勤操作。学生能查看旷课记录并进行请假申请。班主任能够处理学生21
第三章系统设计的请假申请,并登记学生的旷课情况,最后统计汇总班级的月考勤情况。除此之外,系统要具有如下特点:1)实用性:系统以班级学生考勤管理需求为目标,以便捷管理为宗旨。根据职业学校学生的实际情况,量身订造的学生考勤管理系统,为学校的班级德育管理工作提供方便。2)操作简单:本系统不复杂、不烦琐,方便班主任和学生进行操作,简单易行。3)先进性:本系统充分使用现有已经成熟的计算机应用技术、编程技术及数据库开发技术,为用户提供操作性能强大的系统。系统使用JAVA语言开发,页面采取JSP动态页面开发技术,以MYSQL作为数据库,可以方便满足班级的考勤管理需要。4)智能性:系统在设计开发的时候,要对系统运行的智能性进行充分地思考,尽可能的使程序智能化,特别是在系统运行一定的时间后,可以将班级的数据进行统一管理,便于班级进行数据的汇总分析。5)安全性:可以为系统管理提升安全性能,便于对用户提供高效、统一、集中的管理。3.3考勤管理系统根据系统设计目标,将本系统分为三个模块,分别是管理员功能模块、班主任功能模块和学生功能模块三个子模块。具体如图3.1所示。
第三章系统设计系统3.3.1管理员的功能模块设计图3.1系统功能需求分析学生^请旷假课由信请息杳询管理员的主要功能有:1)班主任管理。此模块可以进行新班主任的添加操作,注册新班主任的基本信息,默认密码为111111;可以查看现有班主任的详细信息,包括:用户名、密码、姓名、手机,并可以修改、删除用户信息;可以通过输入用户名查询具体某位班主任的基本信息。2)班级管理。可以进行新增班级操作,制定班级名称及所对应的班主任;可以查看、修改、删除班级的基本信息,包括班级名称、班级人数及班主任名称;可以通过输入班级名称具体查询某一班级的信息。3)班级考勤月统计。可以查看所有班级的月考勤统计数据,包括:班级名、班级人数、月份、请假人数、请假率、旷课人数、旷课率;可以通过输入月份或班级名称具体查询某一班级或某个月的考勤统计情况,,以便进行横向和纵向的比较。4)学生考勤月统计。可以查看所有班级每位学生的考勤统计情况,包括:班级名、学号、姓名、月份、请假次数、请假率、旷课次数、旷课率等;可以通过输入月份或班级名查询具体某月或某班的所有学生考勤统计情况。管理员的功能图如图3.2所示
第三章系统设计3.3.2班主任功能模块设计图3.2管理员的功能图班主任的功能主要有:1)学生管理。在该模块班主任可以进行添加新学生操作;可以查看并修改现有学生的基本信息,包括:用户名、密码、姓名、学号、手机、班级等;具有删除学生基本信息的权限;同时可以根据学生的用户名进行查询学生的基本资料。2)请假审核。对于学生提交的请假申请,班主任能在登录系统的第一时间收到并给出批示;学生以往的请假申请明细,也可以在本模块查看到;通过输入学生姓名、学号或请假状态能在众多请假申请中进行具体筛选操作。3)旷课管理。班主任可以添加学生的旷课记录,包括:旷课学生姓名,日期,旷课课程,备注等;可以在本模块中查看到学生的所有旷课记录,并具有修改和删除的权限;可以通过学生姓名或学号查询出具体某位学生的旷课记录。4)班级考勤月统计。自动按月份进行班级考勤的统计,显示出班级名、班级人数、月份、请假人数、请假率、旷课人数、旷课率;可以通过输入月份进行具体某月份的考勤统计查询。5)学生考勤月统计。统计每位学生的出勤率,包括学生学号、姓名、月份、成功请假次数、请假率、旷课次数、旷课率;可以通过月份选择查询当月所有学生的出勤率。班主任的功能图如图3.3所示24
第三章系统设计3.3.3学生功能模块设计图3.3班主任的功能图学生的功能主要有:1)请假申请。学生填写请假日期和具体请假事由提交给班主任审批。班主任批复后,学生能看到批复内容,确定是否请假成功。2)旷课信息查询。学生可以查询自己名下所有的旷课明细:包括旷课日期、旷课课程、备注、登记时间,并且可以根据旷课课程进行具体查询。3)修改密码。学生能够修改自己的系统登录密码。学生的功能图如图3.4所示学生^请旷假课由信请息杳询图3.4学生的功能图25
第三章系统设计3.4数据库模块设计系统按通用的B/S(浏览器、服务器)模式进行设计(如图3.5)图3.5BIS模式图数据库在一个信息管理系统中起着非常重要的作用,所以一个数据库的结构设计得如何,将直接影响系统工作的效率,以及最终实现的效果。合理的结构设计可以提高数据的存储率,保证数据的完整性和一致性。本系统E.R图(如图3.6)图3.6系统E-R图根据平台的需求分析和功能模块的划分,定义数据库主要包含6张表:按月统计班级t_tongjibanji,按月统计学生表Uongjistu,班级表t_banji,旷课表t_kuangke,请假表t_qingjia,用户表t—user。以按月统计班级tton舀ibanji及用户表t—user为例:按月统计班级t_tongjibanji,如图3.7所示
第三章系统设计g鞯霓童空默认簋髓■注{匿[二=二二二二圃正二二二二二j===::=====互蔓兰盏茎===二二匿==========jj董dei酏e出伽sintttl)no0襄示曩青■酶的状态.饵匿带毫■除.碍畦再麟曼塾Hdv菱h“n9ke渣i邵n锄憎垫咖釜”Je拓n蕾b·ni;;ddoul山;7《n)intcll)d∞№varchorc2Ss)int(11】yes∞no烨y*y盱用户表tuser,如图3.8所示‘空’O图3.7按月统计班级表r戛薯r目已^教青最人数■景毫月份关基的班盈.,嚏、i:create‘me量.deIete豉_hJ‘玉d;annai,pj:9∞rd荛role重}tru—qamet、u5e咐me羔xmhao.釜b暑呵;dvar加r(255】;nt(11)varchar(25s)varchaK255】int(1i)¨rch.r(255)”Khar旺55)varchar(255)jnt(1i)图3.8用户表按月统计学生表t_tongjistu,如图3.9所示漳加时日毫示墨百■睁的女噫.饵呖鲁童辣.蝎E;ji矗皓皂遵密码l囊示夏蜿匿基矗2鼍畴翟[兰£鳗户3囊暴掌生麓舟户名掌号所曩的班组,井叠名嚣量甜§delet*协柚s薹.k蜘:薹hmngb董qin面-i萱咖类童in[t(11)im(t1)douhIe;九t(11)打叫工”d∞bIe默认■‘-moJncr科n硎’Ot空,O‘空"■性■.庄兰量寰示墨舌■跨盼捷态.碍每_薅曩除旷漂塞矿基玫蠡薯蠢次盎请嚣塞警u*甜湘n1)yE‘空,鬟确扫掌生.钟叠图3.9按月统计学生表班级表tbanji,如图3.10所示名霖翘空巅认■魅■硅:玉讨;mfil)noq·.tol孵a’"e幢-主■滗b.面面咛ⅥrdI.r口5s)y韩t空,I嘲瞎羹de|岫hl|;r-t【l”∞o爱鸡圆啊田嫩塞.曝示暑日辣.壤示_皇重;r竹‘hu;mnlJ帕0蕞毫^量!:蟊蚺e嗣备哇(1Dy并t空"关麓嘲鞋圭仨。舟量图3.10班级表27烨"烨|巳∞至.!烨烨芦空怕∞坶∞吣烊
第三章系统设计旷课表t_kuangke,如图3.11所示ibeizhuv。rc哪55jp‘‘空"t:圭曩d赫jt。她inffU)∞0曩示懿强辫壹撒毫.嗵晾亲群皇.1摹啄l■童二ked娜gva州255)y∞‘登’r青}澳匣、i一辞va州255)yes‘童,r谭置精请假表t_qingjia,如图3.12所示图3.11旷课表暑豁樊丑空黩¨、■胜蕾连量,id.州1”∞tat加.眦rem科哇’圭蹙主det姚si嘣11)∞O嘲蕾磷姻臻荟.饱际搬.甥锹釜ht.;轧”小啦5s)y并‘空’宣蝴羲曲iYmIC}I.K255)y*‘空"髓日期《5h∞krarer(255jy盱t空-i懈j砑ishen球∞垤rch。啦55)烨t空,申请对鹈囊‘hiy叫v·rc}I.d25却yH‘空’积摹富§曲u帅g缸iwrch。K25s)弦st空,湃最捩銮崇;嗽毒t翻E}窜妊{强瞪l囊u‘“d;n啦!)yH‘空)笑袋自§糙.井奠3.5安全模块设计图3.12请假表基于SM3的数据加密流程如图3.13所示密码一图3.13基于SM3的数据加密流程图基于SM3算法加密的用户登陆认证流程:如图3.14所示28E一舔蜘
第三章系统设计3.6本章小结图3.14基于驯3算法加密的用户登录认证流程图本章先针对系统进行需求分析,然后提出了系统的设计目标,介绍了系统的结构,展示了三个主要功能模块(管理员模块、班主任模块、学生模块)、数据库模块及安全模块的设计。29
第四章系统功能实现4.1程序的类图4.1.1班级考勤统计类图TongjiBanji对应的程序代码:Tongjib、anji—id:i矗t—deletestatus:。==intj—banji:。Banji『-一y111efen:St善_ji=婪霞薯j一、qlngjla≯l鹣笺i鍪i—kuangkej黧萄i生誊誊誊j—qjIv:薹荔i鼬话城童i荔一娃持0一;一薯j鬻麓蕊齑薹戮;图4.1班级考勤统计类图@Entity@Tabie(name=”t—Tongjibanji”)publicclassTongjibanji(@工d@GeneratedVaiueprivateintidjprivateintdeletestatus;//表示是否删除的状态,O表示未删除,i表示删除@ManyToOne@OoinCoiumn(name=”banjiid”)pri‘vateBanjibanjij//关联的班级,外键pri‘vateStringyuefen;//月份pri‘vateintqingjia;//请假人数pri‘vateintkuangke;//旷课人数pri‘vatedoubleqjlv;//请假率pri‘vatedoublekklv;//旷课率4.1.2用户类图User30
第四章系统功能实现对应的代码:User—id:i。.nt—deletestatus—i“n矗t—u刚ername:,Str抽噻一passwozd。≯S心毒囊£一J=reatetime、}鼍篙f霉l畦一role、:.矗谴_!一"t-zuename。。’£:s≮竭参二一dianhua≯零≤妊鞠霞jj—bm=ji豢瓣蹇皤:篷一_『IXU8h0鬻潮霉摹鹾鬻一M、』。薹÷簧一董赫耄鬻图4.2用户类图@Entity@Tab!e(name=”tUser”)publicclassUser{@工d@GeneratedVaiueprivateintid;privateintdeletestatus;//表示是否册0除的状态,0表示末册0除,:表示删除privateStringusername;privateStringpassword;privateStringcreatetime;privateintrole;//!表示系统管理员,2表示班主任用户,3表示一t生privateStringtruename;privateStringdianhua;//电话privateStringbanji;//是否指定班级未指定班级已指定班级privateStringxuehao;/|导号@ManyT00ne@JoinColumn(name=”banjiid”)privateBanjibj;//所属的班级4.1.3班级类图Banji对应的程序代码:图4.3班级类图
@Entity@Table(name=”tBanji”)第四章系统功能实现publicclassBanji{@工d@GeneratedVaiueprivateintidjprivateintdeletestatus;//表示是否删除的状态,O表示未删除,i表示删除privateStringbanjiming;//班级名privateintrenshuj/?班级人数@ManvToOme@OoinCoiumn(name=”userid”)privateUseruser;||镪。∑畦4.1.4旷课类图Kuangke对应的程序代码:Kuaugke⋯。一id。:、int妒一deletest’at’us奠翱inti囊一riq量誊Stz,蛾鬟i—kecheng鬻。、辨i萄《鏊。二beizhu。i鬻i黪墓城缝一uSe鼍≥=一叠__;I_。蠢二嚣;二王|se棼囊:纂i图4.4旷课类图@Table(name=”t_Kuangke”)publicclassKuangke{@工d@GeneratedVaiueprivateintid;privateintdeletestatus;//表示是否删除的状态,O表示未删除,i表示删除privateStringriqij//旷课日期privateStringkecheng;//旷课课程privateStringbeizhu;ff器注privateStringshijian;//添加时问@ManyToOne@OoinCo!umn(name=”userid”)privateUseruserj//旷课的学生32
第四章系统功能实现4.1.5请假类图Qingjia对应的代码:Qinzjia—id.:int—deletestat"us{啦董一工iqi:stzinz,,.:一shiyoujS,tri彝誊一zhuanztai囊Stri曩墓≤萎一huifui;5毒童i垂豁鎏一shenqinz鬻、摹器葺粤鬻i一∞鑫暑Ze“i===鬻薹:一:;毛}墨8薹曼冀黛i图4.5请假类图@Entity@Table(name=”tQingjia”)publicclassQingjia{@工d@GeneratedVa!uepri‘vateintid;pri‘vateintdeletestatusj//表示是否删除的状态,0表示未删除,!表示删除pri‘vateStringriqi;//请假日期pri‘vateStringshiyou;//请假事由pri‘vateStringzhuangtai;//请假状态未审核审核通过审核不通过pri‘vateStringhuifu;//审核回复pri‘vateStringshenqing;//申请时问pri。vateStringshenhe;//审核时间@Man—vToOne@JoinColumn(name=”userid”)privateUseruser;//请假的学生4.1.6统计学生考勤TongjiStu对应的代码:Tongjis柚一idi套攀一deletestatu誊。}置i遴1;¨i—usex:舔鸶蛰墨一鞠ef单_i誉拿麓墓簪纂篱一qi曲暮j=童直乏iI;|||1;;1l:囊囊藿攀藿一ku确母1e;鬟篡!!蠛。鬻j遴一q耋k。j薹骥每国蠹霉弩纂一‘k毫王铲菇垂。■j荔豢。舔鳓攀图4.6统计学生考勤类图@Entity@Table(name=”t—Tongjistu”)publicclassTongjistu{33
第四章系统功能实现@工d@GeneratedVaiueprivateintid;privateintdeletestatus;//表示是否删除的状态,0表示末删除,i表示删除@Man—vT00ne@JoinCoiumn(name=”userid”)prl‘vateprlvatepri‘vateprl。vatepri。vateprl‘vateUseruserj//关联n勺学生,外键Stringyuefen;f”j论intqingjia;//请假次数intkuangkej//旷课次数doubleqjlv;//请假率doublekklv;}?旷课哿.4.2程序的时序图4.2.1班级模块时序图班级模块厂=习j.................J磨镪喙信息~调用_埒疗法()、。^.。。。。.。。+.,。},操作成功。’操作鳓]尉系数据库中记录、r-!-墁作瞌功rE耋三釜二iE二篓釜二遗l|}—型型L——垫——堂盟一一一.乓—~型⋯—划4.2.2旷课模块时序图图4.7班级模块时序图34i~
第四章系统功能实现l旷课模块口匡E曰J-除旷课信息、~L捌乍成功一调用■除方法()、~一⋯⋯~:一IJ硒目谭嘴厚⋯环、^I、K_日,lI■MJII操作成功’74.2.3请假模块时序图请假模块图4.8旷课模块时序图墨吕囤圉操作成功调用乏勃法()、卜醐数据库、,.L.《iI,操作成功墁作石置功4.2。4用户模块时序图图4.9请假模块时序图35
第四章系统功能实现用户模块调腰新方法(>、ril——⋯.操作成功I罡耕置l垢厍,.r,操作成功i.,操作成功一I脚糸甩户信息~㈣法9+IrI朋咏效惦厍中E求r";..i操作成功’一J二。}、操作●‘btlp%叫J墁作y-成功。图4.10用户模块时序图4.3系统功能实现的主要框架S.S.H框架就是struts2,spring,hibernate的简称,运用3个框架的集成协作使用,可以有效的提高代码编写的效率,从而有效的降低程序开发的周期。4.3.1hibernate配置文件Hibernate的配置文件,在该文件中首先加载了数据库的连接信息,打印并格式化SQL语句最后在当前数据库建立表和类之间的映射关系。com.mysql.jdbc.Driver</property>jdbc:mysql://localhost:3306/shujuku—db?characterEncoding=utf一8root</property>root</property>36日
true</propertv>true</ProPertv>name=”dialect”>org.hibernate.dialect.MySQLDialect</pr。Dertv>name=”current—session—context—class”>thread</property>(propertyname2”hibernate.hbm2ddl.auto”>update</probertv>‘mappl。ngclass。”kaoqin.model.Tongjibanji’’/><|session—factory.></h主bernate—conf主cfura:二on>4.3.2struts配置文件struts的配置文件,该文件主要起到跳转分配来自JSP请求的作用。该struts配置文件是个总的配置文件。</constant></c。nstant>${url)</result>$[url)</resuit></action></package>4.3.3spring配置文件(propertYname2”sessionFactory”></property></bean></property>(beanid2”qingjiaDao”class—kaoqin.dao.impl.QingjiaDaoImpl”></property></bean>37
第四章系统功能实现</property></bean></propert}?>(、|bean></property>(/bean></property></property></property></property></property></property></bean>本段代码是通过spring的IOC模式把把ManageAction实例化。4.4系统功能实现的主要模块4.4.1系统登录页面登陆代码:图4.7系统登录页面38
HttpSStrinqervletRequestrequest=ServletActionContext.getRecjuest();USername=StringpasswordStringrole=rUseruser=user▲”’anddeletestatus=0”)jif(user!-null)request.getParameter("username”);request·getParameter(”password”);equest.getParameter(”role”)jDao.selectBean(”whereusername=⋯+usernamepassword2’’’+password+”。androle=’’+role+”andHttpSessionsession=request.getSession();session.setAttribute(”user”,user)jthis.setUrl(”index.jsp”)jif《user.getRole()==2》{Banjibanji=banjiDao.selectBean(11whereuser.id=”+user.get工d()+”anddeletestatus=0’’)jintcc=qiuser.bj.id=”+banji.getId()desc”)jngjiaDao.selectBeanCount(”where+『fanddeletestatus=0andzhuangtai=。未审核’orderbyidif(CC!=0){session.setAttribute(”cc”,”1II);return”redirect。’j}else{HttpServletResponseresponse=ServletActionContext.getResponse();response.setCharacterEncoding(”gbk”);response.setContentType(”text/htmljcharset=gbk。。)jresponse·getWriter().print(”aler七(者密码错误’);window.10cation.href=。login.jsp。j</script>一-);)returnnullj-用户名或本段代码是程序的登陆代码,首先获取从页面输入的用户名、密码以及用角色,然后调用userDao.selectBean方法,从数据库里取出该条记录进行判断,如果该条记录存在,则说明用户登陆成功,同时把用户信息存在session里面方便调用,如果记录为空,则跳转到登陆页面,同时提醒用户错误信息。39=
第四章系统功能实现图4.8班主任管理页面代码如下://班主任信息划表publicStringuserlist(){HttpServletRequestrequest=ServletActionContext.getRequest()jStringusername=request.getParameter(Stringtruename=request.getParameter(StringBuffersb=newStringBuffer();”username””truename”sb.append(”where”)jif(username!_null&&!⋯’.equals(username)){sb.append(”usernamelike’%”+username+”%。”);sb.append(”and”);request.setAttribute(”username”,username);)if(truename!=null&&!⋯’.equals(truename)){sb.append(”truenamelike’%’-+truename+’’%⋯);sb.append(”and”)jrequest.setAttribute(”truename”,truename);)sb·append(”deletestatus=0androle=2orderbyiddesc--)jStringwhere=sb.tomtring();intcurrentpage=l;intpagesize=i0;if(request.getParameter(”pagenum’’)!=null){currentpage。工nteger·parseInt(request.getParameter(’’pagenum’’))j}inttotal=userDao·selectBeanCount(where.replaceAll(”orderbyiddesc”,””));request-setAttribute(”list”,userDao.selectBeanList((currentpagepagesize,pagesize,where));
第四章系统功能实现request.setAttribute(”pagerinfo”,mager.getPagerNormal(total,pagesize,currentpage,”method!userlist”,”共有”+total+”条记录”));request.setAttribute(”url”,”method!userlist”)jrequest.setAttribute(”url2”,”method!user”);request.setAttribute(”title”,”班主任信息管理”);this.setUrl(”user/userlist.jsp”);returnSUCCESS;}首先通过Stringusername=request.getParameter(”username”):这句代码从页面获取查询的选项,然后通过if(username!=null&&!~.equals(username)){,if(truename!=null&&!~.equals(truename)){通过这句条件语句分别判断下这个值是否为空,当不为空时则通过StingBuffer来叠加组装查询的sql语句,最后当sql语句组装好了之后,通过userDao.selectBeanList方法来调用数据库的查询方法来查到符合条件的记录,在通过request.setAttribute方法把查询到的记录传到显示的页面。同时通过this.setUrl(”user/userlist.jsp”):方法指定传回到具体指定的是哪个JSP页面。通过这样实现对数据查询功能的实现,同时在该班主任列表页面定义了对班主任信息的增加,修改,删除等操作。4.4.3班级管理页面}*wM■#■■■Bg$№gm■m_m"mM_一,"*∞目"目%_目∞4§#⋯一Ⅷ一*9一~珊蹶⋯⋯⋯⋯⋯⋯⋯⋯⋯一一⋯~⋯⋯一⋯一∞⋯~⋯一⋯一“娃《I难二!麴魁:Ⅲ雎尽夔o*}婚"罐。链毋走b舟避诗m籼雌B舯。荨生毫曲脑*共备捧:iE量1t”图4.9班级管理页面代码如下://班级信息列表publicStringbanjilist(){HttpServletRequestrequest=ServletActionContext.getReguest();
StringBuffersb=newtringBufferf)jsb·append(”where”)jif(banjiming!。null&&⋯.equals(banjiming)){3b-append(”ban]irninglike’%".+banjiming+”%⋯)jsb.append(”and’’);request.setAttribute(”banjiming”,banjiming):)3b’append(”deletestatus=0orderbyiddesc’,);Stringwhere=sb.toString();intcurrentpage=ljintpagesize=i0;if(request·getParameter(”pagenum-t)bnuii)f?uMn‘page2工mger.parse工力c(reques七.getParameter("pagenum"))jintt。七al=banjiDao.selec七BeanC。unt(where.replaceA”。rderbyiddesc。,request.setAttributefI’list”pageszze,pagesize,where));,banjiIDa。·selectBeanList((currentpage一1)+reque5t·8etA七七ribute(”pagerinfo.。,pager.getP占yerNorma2(total,paqesize,curren‘page,”method!banjilist”,”共有”+total+”条记录”))jrequest·setAttribute(”url”,”method!banjillst”);request·setAttribute(”url2”,”method岫anji”);reque3t·setAttribute(”title”,’’班级信息管理”);this-setUrl(”banji/banjilist.JspfI);returnUCCESS;}首先通过stringbanjiming=request.getParameter(,,banjiming,,):这句代码从页面获取查询的选项,然后通过if(banjiming!:null&&!~·equals(banjiming))这句条件语句分别判断下这个值是否为空,当不为空时则通过stingBuffer来叠加组装查询的sql语句,最后当sql语句组装好了之后,通过banjiDa。·selectBeanList方法来调用数据库的查询方法来查到符合条件的记录,在通过request.setAttribute方法把查询到的记录传到显示的页面。J司时通过this.setu“(“anji/banjilist.jsp”):方法指定传回到具体指定的是哪个JsP页面。通过这样实现对数据查询功能的实现,同时在该班级列表页面定4·4.4基于SM3的数据加密//将明文密码经sM3加密后输出publicStringSm3(Stringargs)。byte[】dataInput=args.getBytes()j42
第四章系统功能实现SM3Digestdigest=newSM3migest();digest.update{dataInput,0,dataInput.1ength)ibyte【】out=newbyte【32]jdigest.doFinal(out,0);returnPrintUtil.toHexString(out);此函数的作用是将明文密码经过SM3算法加密后输出对应的Hash值。所有涉及密码的设定、修改均需调用此模块进行转换。1)登录部分:publicStringlogin()throws10Exception{HttpServletRequestrequest=ServletActionContext.getReguest();Stringusername=request.getParameter(”username”);//u月文加密码进行加密Stringpassword=Sm3(request.getmarameter(”password”));2)添加用户设定默认密码:Userbean2usermao.selectBean(Ifwhereusername=”’+username+”anddeletesta七us=0”);if(bean==null)fbean=newUser();bean.setBanji(”未指定班级”)jbean.setCreatetime(Util.getTime())jbean.setDianhua(dianhua》;bean.setPassword(Sm3(”11儿1l”))jbean.setRole(2);bean.setTruename《truename);bean.setUsername(username)j3)修改密码操作:publicvoidchangepwd2(》throwsIOException{HttpServletRequestrequest=ServletActionContext.getReguest();HttpSessionsession=request.getSession()jUseru=(User)session.getAttribute《Iluser”};StringpasswordlStringpassword2Sm3(request.getParameterSm3《request.getParameter”passwordl””password2”数据库中存储的用户密码为通过SM3加密后的密文。43
第四章系统功能实现4.5系统测试经过初步测试,系统在用户登录时,密码部分能实现基于SM3的数据加密,并通过与数据库文件的匹配判定是否登录系统;系统能够实现不同的角色登录所对应的权限不同;系统各模块功能运行正常。
第四章系统功能实现4.6本章小结本章对系统中的各个功能模块(管理模块、班主任管理模块、学生模块)的具体实现的技术做了详尽的介绍和描述,同时展示了如何在系统登录模块采用SM3算法对数据进行数据加密。最后对系统进行测试。45
第五章总结与展望5.1总结基于我校学生请假还停留在纸质假条层层批假的状态,为解决传统考勤方式给学生、老师和领导带来种种不便,本文提出了建立一个基于Web方式的学生考勤管理系统,让学生请假、老师批假的过程简单化。同时考虑到系统的安全性,我采用了SM3杂凑算法来对用户的明文密码进行加密。本论文的主要完成的工作包括:1.需求分析及系统设计。从中职学校学生考勤的实际出发,详细分析了学生考勤管理系统需要具备的主要功能,并根据需求确认系统的结构。2.强化系统安全。通过查找资料,分析了多种数据加密算法,在众多算法中选择最适合的本系统的SM3杂凑算法来确保用户数据的安全。对SM3算法的原理进行具体分析,论述了如何在系统中具体运用SM3实现数据加密。3.系统实现。对登录模块、管理员模块、班主任管理模块、数据库模块、安全模块的具体实现做详尽的描述。5.2展望由于时间和技术条件的限制,本系统仍然有很多地方需要继续完善。今后,为了使系统功能更加强大,更加健壮,贴近实际应用,还需要从以下几个方面进行增加和完善:1.提高兼容性和扩展性。为系统管理和使用用户提供一个统一的验证服务平台,可在支撑现有的应用系统正常运行的基础上,不断开发并集成新的系统。2.可以增加多个角色,如教学部长、科任老师等,形成年段的学生考勤管理数据,乃至学校的考勤管理数据。3.提高智能性。在学生旷课管理方面,还需要进一步完善,使之能够通过RFID技术读取学生的信息,系统自动进行旷课统计。
参考文献[1]王海涛,贾宗璞.基于Struts和Hibernate的Web应用开发[J].计算机工程,2011,37(9):113.[2]傅鹏,殷曼吴.基于Structs+Spring+Hibernate+Ajax技术的科研管理系统设计[J].软件导刊,2009,8(1):135—136.[3]龚瑜江,红黄永。基于Struts的Web开发[J]。计算机与数字工程,2009,37(232):58—62.[4]李峰,刘彦隆.基于SSH框架与jquery技术的JavaWeb开发应用[J].科技情报开发与经济,2010,20(6):106—109.[5]卫建文,蒋咏梅.《计算机网络编程语言——-JAVA》,计算机系统应用,2006。[6]程凯.《JSP中文问题及一套整体解决方案》,许昌学院学报,2006。[7]耿祥义.JSP基础编程[M].清华大学出版社,2004.55-162[8]徐建波,周新莲.Web设计原理于编程技术[M].中南大学出版社,2005.185—193[9]孙鑫编著.JavaWeb开发详解[M].电子工业出版社,2006.189-274[10]冯燕奎,赵德奎.JSP实用案例教程[M]清华大学出版社,2004,5:70—100[11]王家华.软件工程[M]东北大学出版社2001年3月303页[12]李金晶.关于网络安全中身份认证技术的探讨[J].科技进步与对策2002,2l(2):卜5.[13]SM3密码杂凑算法.http://wwW。oscca.gov.cn/UpFile/20101222141857786.pdf/[14]WangXiaoyun,YuHongbo.HowtoBreakMD5andOtherHashFunctions.LNCS,2005,v01.3494:PP.19—35,Springer.[15]ZouJian,WuWenling,WuShuang,SuBozhan,DongLe.PreimageAttacksonStep—ReducedSM3HashFunction.LNCS,2011,vol7259:PP.375—390,Springer.[16]王育民,刘建伟.通信网的安全一理论与技术.西安:西安电子科技大学出版社,1999,240—241[17]杨波.现代密码学.北京:清华大学出版社,2003,167—171[18]RivestRonaldL..TheMD5MessageDigestAlgorithm。RFCl320,InternetActivitiesBoard,InternetPrivacyTaskForce,1992.[19]RivestRonaldL..TheMD4MessageDigestAlgorithm.LNCS,1990,v01.0537:pP.303—31I,Springer.[20]DobbertinHans.CryptanalysiSofMD5Compress.PresentedattheRumpSessionofEUROCRYPT1996,1996.47
致谢光阴似箭,岁月如梭,在厦门大学计算机系攻读在职工程硕士的这段时间内,通过课程的学习,不仅丰富了个人的文化知识和专业技能,还提升了自身素质和能力。在这里,我首先向我的论文导师——郑建德教授表示最衷心的感谢。而且,这个论文从最初的选题到系统的设计、开发以及在论文的撰写修改过程中,郑教授都全程悉心指导及点评,郑教授他那谆谆的教导和热心的关怀,保证了我能顺利地完成本文;同时,郑教授他那渊博的知识和严谨的治学态度,让我受益颇深,终生难忘。同时,我也要感谢厦门大学计算机系的全体老师对我的关心和帮助,他们不仅传授我们许多专业知识,而且还将他们的经验教训和人生哲理穿插在课堂当中,让我在课堂学习的时候,能不断巩固、进步并提高。另外,我也要感谢工程硕士09计算机班的同学们,他们在生活和学习中,给予我的无私的帮助和技术支持,从他们身上我也学到不少的知识,留下了很多美好的回忆。然后,我要感谢辛苦养育我的父母和支持我工作学习的家人,他们的关怀、鼓励和支持,保证了我学习的时间,坚定了我克服各种困难的决心,最终才能够顺利地完成在职工程硕士班的相关课程。最后,特别感谢在百忙之中抽出宝贵时间,对本论文进行评阅和评议的专家和学者们148