自主答题卡系统—成绩管理模块的设计实现毕业论文.doc_第1页
自主答题卡系统—成绩管理模块的设计实现毕业论文.doc_第2页
自主答题卡系统—成绩管理模块的设计实现毕业论文.doc_第3页
自主答题卡系统—成绩管理模块的设计实现毕业论文.doc_第4页
自主答题卡系统—成绩管理模块的设计实现毕业论文.doc_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

自主答题卡系统成绩管理模块的设计实现摘 要答题卡是现代考试考核的重要工具,它可以帮助阅卷工作高效准确地完成,大量节省人力。自主答题卡系统在继承此优点的基础上进一步节省成本,从自主生成符合需求的答题卡,到自动阅卷再到成绩管理,集成于同一系统,大大方便操作和管理。成绩管理模块作为整个流程的末节点,根据答题卡数据的特点,提供了成绩等数据的导入和导出功能,从而自然融合于系统。同时该模块为用户提供了友好的管理界面和查询接口,并保证了较高的易用性和可靠性。该模块采用B/S结构,基于Linux平台,使用MySQL分布式数据库。后端则采用基于PHP语言和MVC设计模式的CodeIgniter编程框架,使代码优雅而高效。前端表现上应用了JQuery前端框架,并应用了AJAX技术,使用户请求无刷新得到相应结果,带来良好的用户体验。关键词:成绩管理;答题卡;数据库;MVCABSTRACTThe answer sheet is an important tool of modern examination and assessment, which can make the grading work efficiently and accurately, and save a lot of manpower. On the basis of inherited advantages, autonomous answer sheet become further cost savings, from self-generated to meet the needs of the answer sheet to the automatic scoring and then to performance management, integrate on the same system, and facilitate the operation and management greatly. According to the characteristics of the data of the answer sheet, as the last node of the whole process, score management module provide import and export functions of the data including score, which integrated in the system naturally. At the same time, the module also provides a friendly management interface and query interface for the users, and ensures a high usability and reliability. Based on the Linux platform, the module uses the B/S structure and MySQL distributed database. Its backend uses the CodeIgniter programming framework which based on PHP programming language and the MVC design pattern ,makes the code elegant and efficient. And its Front-end performance applies the JQuery framework and AJAX technology, so that the user requests can get the corresponding results without refreshing, and bring a good user experience.Key Words: Score Management;Answer Sheet;Database;MVC目 录1 引言11.1 课题来源及意义11.2 国内外发展现状11.3 本文的主要工作21.3.1 设计思想和实现目标21.3.2 论文结构安排22 需求与设计32.1 产品需求32.2 系统设计32.2.1 部署架构32.2.2 功能结构32.3 详细设计42.3.1 数据流图42.3.2 E-R图42.3.3 数据库设计52.3.4 数据库关系83 功能与实现93.1 数据的导入导出93.1.1 数据的导入93.1.2 数据的导出123.2 数据的管理143.2.1 数据查询143.2.2 数据录入143.2.3 数据修改153.2.4 数据删除163.2.5 数据分析173.3 用户的分类与管理193.3.1 用户的分类193.3.2 用户的管理 用户的角色 用户的权限193.4 系统相关193.4.1 登录与退出203.4.2 缓存213.4.3 日志223.5 前端表现223.5.1 开源框架223.5.2 用户界面224 结论244.1 所作工作及总结244.2 存在的不足及展望24参考文献25谢 辞261 引言1.1 课题来源及意义本课题来源于科学研究需求。 本课题主要研究的是基于B/S模式的成绩管理的设计与实现,开发成绩管理模块将配合自动阅卷模块,自动化批量导入成绩数据,方便地管理成绩;同时也可以方便地将指定数据导出系统,用于数据归档和备份。另外,模块提供的数据分析功能,可以方便地分析查询对象横向的成绩排名和纵向的成绩走势,使教师可以准确把握教学成果和学生的学习动态。1.2 国内外发展现状Web技术( 包含HTTP协议和HTML语言等多种技术的一个技术领域)自问世以来,在短短的几年内依靠其图文并茂的信息表现形式,成为当今因特网上使用最广的技术1。它不仅为因特网的普及起到关键性的作用,而且还在其它相关计算机网络应用技术发展中起到关键作用,如因特网、电子商务等。目前它已成为计算机网络应用的一种主要技术,尤其重要的是Web动态技术及与后台数据库的交互式动态查询技术。PHP(PHP: Pypertext Preprocessor,超文本预处理程序)是最流行的Web脚本语言之一,它运行在Web服务器端,根据用户请求或服务器端的数据产生动态网页2。它功能强大,和HTML脚本灵活地粘合在一起,并提供多种数据库访问接口。另外,PHP能够作为ApacheWeb服务器的模块执行,使得它的执行效率要普遍高于其他CGI程序。PHP技术是当前在中小型Web应用开发中广泛使用的技术。但随着应用程序规模的增大,开发者会发现PHP在项目控制方面显得不够,团队协同开发困难。所以在应用程序的开发过程中普遍引入了MVC的设计模式。MVC(Model-View-Controller,模型视图控制器)是一种软件设计模式3。它根据软件的普遍特征从逻辑上将软件的结构抽象成典型的三层模型,强制性使应用程序的输入、处理和输出分开,分解成模型、视图、控制器3种部件,它们各自处理自己的任务。其优点如下:明显加快项目的发效率;增强项目的可维护性;利于软件工程化管理。MySQL是一套高效、多线程、多平台、安全的一个小型关系型数据库管理系统4。它完全支持标准SQL(structured query language,结构化查询语言)并优化了SQL查询算法,有效地提高查询速度。MySQL软件本身采用了较为开放的GPL(GNU通用公共许可证)开源协议。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。网络安全是一个永恒的话题,暴露在网络上的站点要时时刻刻注意抵御网络攻击5。而SQL注入是一种对网站普遍的攻击手段,这种攻击通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令6。在应用程序设计过程中,要注意安全问题的防范,尤其是数据库的安全。设计数据库的目的是为了方便地存取和操作数据库中的数据。但是,如果只是简单地这样做则有可能会导致潜在的灾难。当试图完成某项看似正常的任务时,有可能被别人所利用,使用他自己的破坏性数据来注入你的数据。其实,每当要求用户输入构造一个数据库查询时,是在允许该用户参与构建一个存取数据库服务器的命令。一位友好的用户可能对实现这样的操作感觉很满意;然而,一位恶意的用户将会试图发现一种方法来扭曲该命令,从而导致该被的扭曲命令删除数据,甚至做出更为危险的事情。1.3 本文的主要工作1.3.1 设计思想和实现目标设计思想:本模块作为整个系统流程的末节点,将上游模块所产生的数据通过文件导入或者手工录入到本模块中,完成数据的存储,查询,修改和分析等数据管理工作。并根据需求将查询结果导出为文件,以便归档备忘。实现目标:通过对数据库结构的合理规划和相关技术的应用,并在操作流程上保证较高的可靠性和易用性。1.3.2 论文结构安排本文的结构安排如下:第一章 引言介绍了课题的概况和相关技术的发展情况,以及课题的设计思想和实现目标。第二章 需求与设计记录了课题从需求分析到整体设计再到详细设计的具体过程,并列出了各个阶段所产出的设计图表等数据。第三章 功能与实现阐述了功能的具体表现和操作方法,以及实现这些功能的思路和所用到的技术细节。第四章 结论回顾并总结了课题的研究过程中所做的工作,也思考了研究过程中遇到的问题并列出了实践中的不足之处,最后根据自己的认识对相关技术的发展前景进行了展望。2 需求与设计2.1 产品需求功能:实现成绩数据和用户的综合管理,包括数据的导入导出,数据的查询,修改,删除,数据的分析,用户管理,角色与权限管理。性能:要求系统运行高速稳定,保证高可用性和可靠性。输入:来自上游模块的成绩数据。输出:根据用户需求导出定制相应字段数据的excel格式表格。2.2 系统设计2.2.1 部署架构图2-1 成绩管理模块部署架构图2.2.2 功能结构图2-2 成绩管理模块功能结构图2.3 详细设计2.3.1 数据流图图2-3 成绩管理模块数据流图2.3.2 E-R图图2-4 成绩管理模块E-R图2.3.3 数据库设计学生表:存放学生的登录信息和其他基本信息。表2-1 学生表字段类型可否为空学生号(主键)INT(10)NOT NULL姓名VARCHAR(10)NOT NULL密码VARCHAR(32)NOT NULL专业VARCHAR(64)NOT NULL上次登录时间INT(10)NULL上次修改时间INT(10)NULL用户表:存放非学生用户登录信息和其他基本信息。表2-2 用户表字段类型可否为空用户ID(主键)INT(10)NOT NULL用户名(唯一)VARCHAR(128)NOT NULL密码VARCHAR(32)NOT NULL昵称VARCHAR(128)NOT NULL角色VARCHAR(64)NOT NULL状态VARCHAR(16)NOT NULL上次登录时间INT(10)NULL上次修改时间INT(10)NULL专业表:存放专业信息,枚举学校所有专业。表2-3 专业表字段类型可否为空专业标识(主键)VARCHAR(64)NOT NULL专业名(唯一)VARCHAR(64)NOT NULL课程表:存放开设课程信息,枚举学校所有开设课程。表2-4 课程表字段类型可否为空课程号(主键)INT(10)NOT NULL课程名VARCHAR(128)NOT NULL专业-课程表:存放专业所开设课程的对应关系。表2-5 专业-课程表字段类型可否为空专业(主键)VARCHAR(64)NOT NULL课程(主键)INT(10)NOT NULL考试类别表:存放考试类别,枚举所有考试类别。表2-6 考试类别表字段类型可否为空类别标识(主键)INT(10)NOT NULL类别(唯一)VARCHAR(64)NOT NULL考试信息表:存放具体场次的考试信息。表2-7 考试信息表字段类型可否为空考试号(主键)VARCHAR(64)NOT NULL考试名(唯一)VARCHAR(256)NOT NULL考试类别INT(10)NOT NULL考试课程INT(10)NOT NULL考试状态VARCHAR(16)NOT NULL考试时间INT(10)NOT NULL考试时长INT(4)NULL用户角色表:存放根据学校组织结构定义用户角色。表2-8 用户角色表字段类型可否为空角色(主键)VARCHAR(128)NOT NULL角色名(唯一)VARCHAR(128)NOT NULL权限INT(10)NOT NULL系统设置表:存放所有的系统设置,供应用程序读取。表2-9 系统设置表字段类型可否为空设置名(主键)VARCHAR(64)NOT NULL设置值TEXTNULL日志表:存放系统日志。表2-10 日志表字段类型可否为空流水号(主键)INT(10)NOT NULL严重程度VARCHAR(32)NOT NULL触发人VARCHAR(256)NOT NULL操作内容TEXTNOT NULL操作时间INT(10)NOT NULL2.3.4 数据库关系图2-5 成绩管理模块数据库结构图3 功能与实现3.1 数据的导入导出3.1.1 数据的导入数据的导入过程:用户从前端表现层的上传入口将待导入文件上传至服务器端,随后上传目标的前端控制器载入数据导入模型。前端控制器首先调用数据导入模型对象的预处理方法对待导入文件进行内容预处理,其目的是检查待导入文件格式和数据是否合法以及相应字段是否正确映射至数据库相应字段。若文件校验失败,该方法返回布尔型的FALSE,前端控制器收到该返回值,向前端表现层传递数据,显示文件校验失败,流程终止。若文件校验成功,则该方法返回布尔型的TRUE,前端控制器调用数据导入模型对象的数据导入方法,对待导入文件进行分析,使用事先载入到应用的的数据库适配器对象确定对应数据表和字段,然后开启一个事务,开始将数据写入数据库,写入完成后若未发生错误该方法则提交事务,并向前端控制器返回TRUE,控制器向前端表现层传递数据,向用户显示导入成功。否则回滚事务,并向前端控制器返回数据库错误提示信息,经过前端控制器对数据库错误提示的处理,将更加友好的错误提示返回给用户。至此,整个数据导入过程完成。待导入文件:与上游模块开发者约定,所传输的文件格式为以半角逗号分割的csv格式,并规定第一行为考试信息,字段分别为考试号,考试名,考试类别,考试科目。第二行为对应映射为相应数据表的键值。其中字段分别为:学生号,分数。数据导入面板如下:图3-1 导入数据面板示意图一个典型的待导入文件数据格式如下:图3-2 待导入文件数据格式示意图数据导入模型:数据导入模型对象提供数据导入功能及其配套方法,其中包括作为接口的预处理方法,数据导入方法以及作为私有方法的SQL生成方法,字段校验方法等。导入流程代码如下:/文件路径:/application/controllers/data.phpclass Data extends SH_Controller /上下文代码省略. public function import() /载入上传类$this-load-library(upload, $config);/文件上传if(!$this-upload-do_upload(import_file)/上传失败则向前端表示层返回错误$data = array(error = $this-upload-display_errors();else/载入数据导入模型$this-load-model(import_mdl);/检查文件,通过检查则返回TRUE$status = $this-import_mdl-check_file($filename);if(!$status) $data = array(error = 文件格式不合法!);else/执行数据导入$res = $this-import_mdl-import();if($res) $data = array(done = 导入成功!);else $data = array(error = 导入过程中出现错误!);/将提示信息写回前端表现层$this-load-view(message,$data);/上下文代码省略.数据导入的流程图如下:图3-3 数据导入流程图3.1.2 数据的导出数据的导出过程:用户从数据管理界面根据查询需求筛选出结果,然后单击导出按钮。该按钮调用导出数据的控制器方法,然后将定制的参数传输到该控制器。该前端控制器方法载入数据导出模型,并以传递的参数调用数据导出模型的数据导出方法。数据导出模型的构造方法载入了PHPEXCEL开源类库,数据导出方法首先生成EXCEL文件下载的HTTP头,将查询条件生成SQL语句,然后将返回的结果集调用开源类的生成方法并写入到标准输出中。用户界面显示的结果即为下载EXCEL文件对话框。导出后文件:格式为xls文件,并以考试名_科目_时间.xls命名。文件第一行为对应的字段名,其余行为数据。一个典型的数据导出文件如下:图3-4 数据导出文件数据示意图数据导出模型:数据导出模型对象提供数据导出功能及其配套方法,其中包括作为接口的数据导出方法以及作为私有方法的SQL生成方法,文件下载方法等。导出流程代码如下:/文件路径:/application/controllers/data.phpclass Data extends SH_Controller /上下文代码省略.public function export()/获取请求参数$args = $this-input-post();if(empty($args)return;/载入数据导出模型$this-load-model(export_mdl);/执行导出过程$this-export_mdl-export($args);/上下文代码省略.数据导出的流程图如下:图3-5 数据导出流程图3.2 数据的管理3.2.1 数据查询数据查询是提供给用户根据需求,通过选择相关的选项和匹配方法,进行灵活的数据查询的接口。数据查询的工作过程:用户根据需求在数据管理的页面通过筛选条件选择表单,进行自定义查询,完成后单击查询按钮。此时表单将用户定制的选项提交到指定的前端控制器方法,该前端控制器方法接收请求后,载入数据操作模型,然后使用参数调用数据操作模型的数据查询方法,数据查询方法调用模型私有方法根据传入的参数生成与需求相匹配的SQL语句,然后将从数据库查询到的数据集返回至前端控制器,最后由前端控制器将数据集返回至前端表现层。此时,用户即可在界面上看到符合筛选条件的数据。条件筛选界面如下:图3-6 数据查询条件筛选例图3.2.2 数据录入在现实考试中,常常会遇到有学生由于各种原因错过考试而进行补考的情况,但是补考的同学又通常是一小部分,无法批量导入到系统。数据录入就是为了满足这种需求,提供给用户手工录入数据的接口。通过此接口,用户可以对某次考试的学生成绩进行增量输入,但无法对学生成绩进行修改。数据录入的工作过程:用户首先通条件筛选或者精确查找选择考试ID,然后进入成绩录入表单,用户在表单中的相应文本框输入学生号和考试成绩,完成后单击提交。表单将数据提交到指定前端控制器方法,该前端控制器方法载入数据操作模型,使用传入的参数调用数据操作模型的数据插入方法,数据插入方法调用私有的成绩检查方法,成绩检查方法使用该参数构造SQL语句,查询该考试号对应的学生ID是否有成绩存在,若存在则向前端控制器返回FALSE,前端控制器想前端表示层传输数据,显示数据录入失败。否则返回TRUE,数据录入方法将数据写入到数据库,写入成功后,向前端控制器返回TRUE,前端表示层显示数据录入成功。整个操作过程写入系统日志。数据录入执行流程代码如下: /文件路径:/application/controllers/data.phpclass Data extends SH_Controller/上下文代码省略./防止与input对象重名public function inp()/* * 提交数据格式形如* array(ex_code=2012040110000035,* score=array(2008486685=79,2008485624=85,)*); */$rows = $this-input-post();if(empty($rows)return;$this-load-model(data_mdl);/执行录入过程$res = $this-data_mdl-input($rows);if($res)$data = array(done=录入成功!);else$data = array(error=录入失败!);/将提示信息返回前端表示层$this-load-view(message,$data);/上下文代码省略.3.2.3 数据修改在现实考试中,难免会有各种原因导致成绩数据发生错误,为了更好地维护成绩数据,模块提供了数据修改接口。通过此接口,用户可以修改某次考试的某些考生的成绩数据。数据修改的工作过程:用户首先通过条件筛选或者精确查找选择某次考试的ID,然后进入成绩修改表单,用户在表单中的相应文本框中输入学生号和考试成绩,完成后单击提交。表单将数据提交到指定的前端控制其方法,该前端控制器方法载入数据操作模型,使用传入的参数调用数据操作模型的数据修改方法,数据修改方法调用私有的成绩检查方法,成绩检查方法使用该参数构造SQL语句,查询该考试号对应的学生ID是否有成绩存在,若不存在则想前端控制器返回FALSE,前端控制器向前端表示层传输数据,显示数据修改失败和原因。否则返回TRUE,数据修改方法将数据更新到数据库,更新完成后,想前端控制器返回TRUE,前端表示层显示数据修改成功。整个操作过程写入系统日志。数据修改接口执行流程代码如下:/文件路径:/application/controllers/data.phpclass Data extends SH_Controller/上下文代码省略.public function modify()/* * 提交数据格式形如* array(src=array(ex_code=2012040110000035,*id=array(2008486685,2008485624,)*),*des=array(score=array(79,85,)*); */$rows = $this-input-post();if(empty($rows)return;$this-load-model(data_mdl);/执行数据修改$res = $this-data_mdl-modify($rows);if($res)$data = array(done=修改成功!);else$data = array(error=修改失败!);$this-load-view(message,$data);/上下文代码省略.3.2.4 数据删除与数据修改接口类似,为了更好地维护数据的一致性和有效性,避免出现数据冗余,模块提供了数据删除接口。通过该接口,用户可以修改某次考试的某些考生的成绩数据。数据修改的工作过程:用户首先通过条件筛选或者精确查找选择某次考试的ID,然后系统列出本次考试所有的考生号,考生姓名和考试成绩。用户可以通过单击某一记录的右侧的删除按钮,并确定该操作。确认删除后,前端表示层调用前端开源框架JQuery的Ajax方法,异步地向前端控制器发送参数。前端控制器的指定方法接收请求后,载入数据操作模型,并以传入的参数调用数据删除方法,数据删除方法直接生成SQL语句并向数据库发送。然后调用数据库适配器提供的方法,判断删除操作影响的行数。若影响的行数为0,则向前端控制器返回FALSE,前端表示层显示删除失败。否则向前端控制器返回TRUE,前端表示层显示删除成功,并调用前端Javascript方法,移除选定项。整个操作过程页面无刷新,数据操作写入日志。数据删除接口执行流程代码如下:/文件路径:/application/controllers/data.phpclass Data extends SH_Controller/上下文代码省略.public function remove()/* * 提交数据格式形如* array(ex_code=2012040110000035,* id=array(2008486685,2008485624,)*); */$rows = $this-input-post();if(empty($rows)return;$this-load-model(data_mdl);/执行数据删除$res = $this-data_mdl-remove($rows);if($res0)$data = array(done=成功删除.$res.条记录!);else$data = array(error=删除失败!);$this-load-view(message,$data);/上下文代码省略.3.2.5 数据分析为了更直观地展现数据,帮助老师分析教学成果,模块提供了数据分析接口。通过该接口,用户可以自定义数据字段,生成统计表。数据修改的工作过程:用户根据需求通过条件筛选出来,然后单击数据分析。前端展示层使用开源框架JQuery的Ajax方法将用户所选参数传输至指定的前端控制器方法,该前端控制器方法载入数据操作模型,然后使用传入参数调用数据分析方法,数据分析方法调用模型私有方法根据传入的参数生成与需求相匹配的SQL语句,然后将从数据库查询到的数据集返回到数据分析方法,数据分析方法经过统计和整理,将处理后的数据返回到前端控制器,前端控制器再将数据返回至前端表示层。前端表示层调用开源工具在弹出层中根据控制器回传的数据绘制图表。整个操作过程页面无刷新,数据操作写入日志。分析结果如下:图3-7 数据分析例图数据分析接口关键代码如下:/文件路径:/application/controllers/data.phpclass Data extends SH_Controller/上下文代码省略.public function analyze()$condition = $this-input-post();if(empty($condition)return;$this-load-model(data_mdl);/执行数据分析$grid = $this-data_mdl-analyze($condition);$this-load-view(analyze, $grid);/上下文代码省略.3.3 用户的分类与管理3.3.1 用户的分类根据分析实际需求,将用户分为学生和用户两个大类,并分别存储至两个数据表中。学生类固定仅具有对自己信息查询的权限,无法被授予更高权限;而用户又可以根据用户身份的角色分配权限。随着学校组织机构的改变,可以根据实际情况灵活创建移除角色和修改角色的权限,并随着用户职位的变动可以修改用户的角色。授权或收回某些权限。3.3.2 用户的管理 用户的角色角色具体分为超级管理员,系统管理员,教务主任,系主任,教师。其中超级管理员有且仅有一个。角色分配可根据学校的组织架构和实际教学安排,学校信息中心拥有超级管理员和系统管理员的角色,而教务处拥有教务主任的角色,使其专注管理学生、考试和成绩信息,而不需要考虑系统管理。类似地,系或学部拥有系主任的权限,任课老师拥有教师的权限,保证了在实际应用中权限隔离,使信息的管理更加可靠。 用户的权限在本模块中,权限是与角色相关的,权限是用户的一项属性。具体实现过程为,它以二进制位的形式存放于数据库中,权限是事先编号的宏,权限的编号对应相应的二进制位,在实际执行操作过程中检查相关权限对应的二进制位是否置位,否则认为此行为未授权。而对角色进行授权和收回权限时也是将该角色的权限字段进行相应的置位,从而达到了快速准确的权限鉴别。在所有预置角色中,超级管理员拥有系统最高权限,可以对包括用户、数据在内的所有内容进行管理,该用户不可被删除,只有自身有权对其进行修改操作;系统管理员拥有除操作超级管理员和其它系统管理员的所有权限,一般应用中由系统管理员处理日常事务,而超级管理员只用于管理系统管理员;教务主任拥有对学生和成绩数据的所有操作权限;系主任拥有对本系学生及其成绩的管理权;教师则拥有其任课的班级学生级其成绩的管理权。另外,从安全上考虑,系统屏蔽了当前用户未授权的操作。但当用户尝试发出越权请求,系统会将此行为认定为非法操作,并写入日志。3.4 系统相关3.4.1 登录与退出登录是用户权限认证的过程,是模块的入口。登录成功是进行信息管理的先决条件。登录工作过程:在登录框中输入登录名和密码,单击登录。此时前端表现层的表单将数据提交到指定的前端控制器方法,该控制器方法判断登录名的格式,若为10位纯数字,则判定为学生登录,载入学生数据模型,以传入的参数调用学生数据模型的数据检查方法,若学生存在,则返回学生信息,前端控制器将学生信息写入会话数据,页面重定向至管理模块。若学生不存在,则向前端控制器返回FALSE,向前端表现层显示登录失败。若登录名以字母开头,则判定为用户登录,载入用户数据模型,以传入的参数调用用户数据模型的数据检查方法,若用户存在,则返回用户信息,前端控制器将用户信息吸入会话数据,页面重定向至管理模块。若学生不存在,则想前端控制器返回FALSE,像前端表现层显示登录失败。此登录过程写入系统日志。用户登录界面如下:图3-8 用户登录界面图退出是用户销毁登录认证的过程。退出工作过程:在管理界面,单击退出,系统询问是否确认退出。若确认退出,则请求认证控制器的退出方法,在此方法中,销毁用户会话数据,并将行为写入系统日志。最终重定向至登录页面。用户退出后界面如下:图3-9 用户退出后界面图3.4.2 缓存在模块的开发过程中发现很多数据比如系统设置等在每次用户请求时都会到数据库读取,一旦并发量提高,这些数据将会是一项沉重的负担。经过分析,系统设置具有数据量小,更新频率低的特点。故尝试在发起请求的模型和数据库之间增加一层缓存,将频繁读取的数据写入缓存。这时,当用户请求数据时,数据模型先向缓存进行查询,若不存在,再从数据库读取数据,并将读取到的数据写入缓存中,这样再有用户请求数据时,数据模型即可从缓存中取出数据而不再去请求数据库。而当这些设置被更改时,数据模型将缓存清空,等待用户从数据库请求最新的数据,并将新版本写入缓存。这样就使得数据库压力减小。系统设置应用缓存机制代码如下:/文件路径:/application/helpers/utility_helper.php/上下文代码略.if(!function_exists(settings_item)/获取设置项函数function settings_item($item)/初始化Memcache对象,并返回对象句柄$MC = memcache_init();/调用对象方法读取缓存项$settings = $MC-get(settings);/判断是否存在缓存项if(FALSE=$settings)/若不存在缓存项,则调用函数从数据库读取设置项$settings = &get_settings();/将获取的数据写入缓存$MC-set(settings,$settings,MEMCACHE_COMPRESSED,0);/若请求想不存在则返回FALSEif (!isset($settings$item)return FALSE;return $settings$item;/上下文代码略.3.4.3 日志日志作为系统管理的一项重要手段,可以客观及时地记录系统中较为关键的操作,从而帮助管理员分析系统的性能和安全情况。比如根据日志可以复现出某用户从登录到执行操作再到退出系统一系列的行为。若存在非法操作,比如暴力猜解用户密码,越权操作等非法行为,管理员可以直接找到相关人员了解情况并进一步的解决问题。日志管理界面如下:图3-10 日志列表界面图3.5 前端表现3.5.1 开源框架本模块在前端使用了JQuery开源框架,此类库高效易用,具有很强的扩展能力,并且具有兼容主流浏览器的特性,大大降低了开发成本。模块中大量使用了JQuery封装的Ajax方法,使原本繁琐的过程调用一个方法即可完成,而效果却未打折扣,使得前端代码重用性提高。而无刷新请求的特性带来了良好的用户体验。3.5.2 用户界面本模块的界面设计结构上参考了多个较为成熟的管理系统,并且为了逻辑清晰和浏览器兼容性等因素摒弃了iframe的结构。而配色和图像则为原创设计,首先使用Photoshop进行整版设计,然后切图并使用层叠样式表重构为html文件。风格清新简洁,界面友好,使操作一目了然。程序整体界面如下:图3-11 管理员操作界面图4 结论4.1 所做工作及总结本次毕业设计首先从理解用户需求入手,进行了较为详尽的总体设计,在详细设计阶段又参考了目前比较成熟的管理系统的思路,对程序的结构尤其是数据库的结构进行多次修改调整。为了保证数据的一致性和有效性,在数据库操作时慎之又慎,充分发挥数据库的优势,应用了事务,一旦数据操作失败即进行回滚,最大限度地保证了数据的安全。在满足需求的前提下,考虑到了较为极端的条件,通过引入缓存和权限机制,优化了整体性能和可靠性。同时,引入了前端开源框架,大量使用了Ajax异步请求技术,在提高了浏览器兼容性的同时,提高了用户体验。开发过程中,进行了严格的单元测试,将出现的问题解决在开发阶段。开发完成后又进行了较为系统的测试,确保了系统的稳定性。4.2 存在的不足及展望存在的不足:由于开发时间有限,有些功能如数据分析功能尚未完善,只提供了基础的统计功能。另外由于条件所限,未对应用程序进行完整的性能测试,如大并发下访问的处理速度等参考数据并未得出。展望:在应用程序开发期间,借鉴了当前市场上较为成熟的管理系统,并应用了流行的云计算和分布式数据库存储,以及分布式缓存技术。随着网络的发展,用户对数据的需求量越来越大,对性能的要求越来越高。相信这些技术将逐渐成为该领域的主流。参考文献1 张程,朱庆生.用PHP实现Web与数据库的互连J.计算机工程与科学,2001,23(6):54-632 杜闯. PHP在动态网站开发中的优势J.电脑知识与技术,2010,6(13):3342-33443 顾大刚.基于MVC模式的PHP开发框架CodeIgniterJ.江西科学,2009,27(5):722-7324 易竞. PHP访问MYSQL数据库的实现J.保险职业学院学报(双月刊),2008,22(3):79-815 吴微微,周悦.浅析PHP程序的安全性J.科技情报开发与经济,2004,14(9):285-287 6 张卓,薛质. Linux环境中基于PHP的SQL注入攻击与对策J.信息安全与通信保密,2006:154-1607 郑江波.PHP中Session机制的研究与应用J.荆门职业技术学院学报,2007,22(3):38-418 师俏梅.用PHP建立学位论文数据库J.现代图书情报技术,2004,110(5):88-909 冯祖洪. MySQL的分布式数据库访问法J.计算机应用,2002,22(8):4-610 何秉荣.用PHP制作试题库管理系统J.茂名学院学报,2004,14(4):38-4111 吴晓刚.PHP网站加密技术及其应用J.电脑编程技巧与维护,2011:122-12412 杨媛媛,王浩.基于PHP/MySQL的网上用户验证J.中南民族学院学报(自然科学版),2001,20(1):29-3213 张淑梅.PHP录入页面中动态从数据库中提取数据的实现J.石家庄师范专科学校学报,2000,2(4):55-5714 Irena Petrijevcanin Vuksanovic,Bojan Sudarevic.Use of Web Application Frameworks in the Development of Small ApplicationsR.Croatia:National and University Library in Zagreb,2011:458-56215 Maciej Nakwaski,Wojciech Zabierowski.Content Management System for Web PortalR. Ukraine:TCSET,2010:233-235谢 辞时光转瞬即逝,大学四年即将落下帷幕,我的毕业论文也接近尾声。我将要离开校园,开始一段新的旅程。我站在人生的又一个转折点上,没有一丝茫然,我相信自己的明天可以更美好。在这里我要感谢那些在我的人生道路上指引和帮助过我的人,爱我的人和我爱的人,没有你们就没有今天的我。首先我要感谢我的导师*老师和*老师,没有你们悉心的指导和严格的要求,就没有我今天的这篇论文。从我开始选择题目,老师们就一直不厌其烦的帮助我,指导我,鼓励我要创新,帮助我纠正一个个的问题,直到论文完成。其次,我要感谢信息学部的老师们,这四年来,你们让我获得了无法想象的财富,包括知识和做人,你们教会我选择适合自己的人生道路,鞭策我坚定的走下去。再次,我要感谢我的朋友和同学们,谢谢你们这四年来的陪伴,无论是生活还是学习,你们都给了我很大的帮助,这四年,我们一起笑过,一起哭过,相信我们之间还没有画下句号,我们的友谊终将长久。最后,我要感谢我的父母,谢谢你们这么多年来对我的养育,你们始终站在我的身后从未离开,有了你们做我坚强的后盾,再大的困难相信我也不会退缩。明天,我要加油!袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论