【PHP开源代码栏目提醒】:以下是网学会员为您推荐的PHP开源代码-自主答题卡系统—成绩管理模块的设计实现(毕业论文doc) - 毕业设计,希望本篇文章对您学习有所帮助。
自主答题卡系统——成绩管理模块的设计实现 摘 要 答题卡是现代考试考核的重要工具,它可以帮助阅卷工作高效准确地完成,大量节省人力。
自主答题卡系统在继承此优点的基础上进一步节省成本,从自主生成符合需求的答题卡,到自动阅卷再到成绩管理,集成于同一系统,大大方便操作和管理。
成绩管理模块作为整个流程的末节点,根据答题卡数据的特点,提供了成绩等数据的导入和导出功能,从而自然融合于系统。
同时该模块为用户提供了友好的管理界面和查询接口,并保证了较高的易用性和可靠性。
该模块采用 B/S 结构,基于 Linux 平台,使用 MySQL 分布式数据库。
后端则采用基于
PHP 语言和 MVC 设计模式的 CodeIgniter 编程框架,使
代码优雅而高效。
前端表现上应用了 JQuery 前端框架,并应用了 AJAX 技术,使用户请求无刷新得到相应结果,带来良好的用户体验。
关键词:成绩管理;答题卡;数据库;MVC ABSTRACT The answer sheet is an important tool of modern examination and assessment which canmake the grading work efficiently and accurately and save a lot of manpower. On the basis ofinherited advantages autonomous answer sheet become further cost savings from self-generatedto meet the needs of the answer sheet to the automatic scoring and then to performancemanagement 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 wholeprocess score management module provide import and export functions of the data includingscore which integrated in the system naturally. At the same time the module also provides afriendly management interface and query interface for the users and ensures a high usability andreliability. Based on the Linux platform the module uses the B/S structure and MySQLdistributed database. Its backend uses the CodeIgniter programming framework which based onPHP 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 theuser requests can get the corresponding results without refreshing and bring a good userexperience.Key Words: Score Management;Answer Sheet;Database;MVC 目 录 1 引言 ....................................... 错误!未定义书签。
1.1 课题来源及意义 ............................ 错误!未定义书签。
1.2 国内外发展现状 ............................ 错误!未定义书签。
1.3 本文的主要工作 .............................................2 1.3.1 设计思想和实现目标 .......................................2 1.3.2
论文结构安排 .............................................2 2 需求与设计 ................................. 错误!未定义书签。
2.1 产品需求 .................................. 错误!未定义书签。
2.2 系统设计 .................................. 错误!未定义书签。
2.2.1 部署架构 ................................ 错误!未定义书签。
2.2.2 功能结构 ................................ 错误!未定义书签。
2.3 详细设计 .................................. 错误!未定义书签。
2.3.1 数据流图 ................................ 错误!未定义书签。
2.3.2 E-R 图 .................................. 错误!未定义书签。
2.3.3 数据库设计 ...............................................5 2.3.4 数据库关系 ...............................................8 3 功能与实现 ..................................................9 3.1 数据的导入导出 .............................................9 3.1.1 数据的导入 ...............................................9 3.1.2 数据的导出 ..............................................12 3.2 数据的管理 ................................ 错误!未定义书签。
3.2.1 数据查询 ................................ 错误!未定义书签。
3.2.2 数据录入 ................................ 错误!未定义书签。
3.2.3 数据修改 ................................ 错误!未定义书签。
3.2.4 数据删除 ................................ 错误!未定义书签。
3.2.5 数据分析 ................................ 错误!未定义书签。
3.3 用户的分类与管理 .......................... 错误!未定义书签。
3.3.1 用户的分类 .............................. 错误!未定义书签。
3.3.2 用户的管理 ..............................................19 3.3.2.1 用户的角色 ............................................19 3.3.2.2 用户的权限 ............................................19 3.4 系统相关 ..................................................19 3.4.1 登录与退出 .............................. 错误!未定义书签。
3.4.2 缓存 .................................... 错误!未定义书签。
3.4.3 日志 .................................... 错误!未定义书签。
3.5 前端表现 .................................. 错误!未定义书签。
3.5.1
开源框架 ................................ 错误!未定义书签。
3.5.2 用户界面 ................................ 错误!未定义书签。
4 结论 ....................................... 错误!未定义书签。
4.1 所作工作及总结 ............................ 错误!未定义书签。
4.2 存在的不足及展望 .......................... 错误!未定义书签。
参考文献 ..................................... 错误!未定义书签。
谢 辞 .......................................错误!未定义书签。
1 引言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 学生表 字段 类型 可否为空学生号(主键) INT10 NOT NULL姓名 VARCHAR10 NOT NULL密码 VARCHAR32 NOT NULL专业 VARCHAR64 NOT NULL上次登录时间 INT10 NULL上次修改时间 INT10 NULL 用户表:存放非学生用户登录信息和其他基本信息。
表 2-2 用户表 字段 类型 可否为空用户 ID(主键) INT10 NOT NULL用户名(唯一) VARCHAR128 NOT NULL密码 VARCHAR32 NOT NULL昵称 VARCHAR128 NOT NULL角色 VARCHAR64 NOT NULL状态 VARCHAR16 NOT NULL上次登录时间 INT10 NULL上次修改时间 INT10 NULL 专业表:存放专业信息,枚举学校所有专业。
表 2-3 专业表 字段 类型 可否为空专业标识(主键) VARCHAR64 NOT NULL专业名(唯一) VARCHAR64 NOT NULL 课程表:存放开设课程信息,枚举学校所有开设课程。
表 2-4 课程表 字段 类型 可否为空课程号(主键) INT10 NOT NULL
课程名 VARCHAR128 NOT NULL 专业-课程表:存放专业所开设课程的对应关系。
表 2-5 专业-课程表 字段 类型 可否为空专业(主键) VARCHAR64 NOT NULL课程(主键) INT10 NOT NULL 考试类别表:存放考试类别,枚举所有考试类别。
表 2-6 考试类别表 字段 类型 可否为空类别标识(主键) INT10 NOT NULL类别(唯一) VARCHAR64 NOT NULL 考试信息表:存放具体场次的考试信息。
表 2-7 考试信息表 字段 类型 可否为空考试号(主键) VARCHAR64 NOT NULL考试名(唯一) VARCHAR256 NOT NULL考试类别 INT10 NOT NULL考试课程 INT10 NOT NULL考试状态 VARCHAR16 NOT NULL考试时间 INT10 NOT NULL考试时长 INT4 NULL 用户角色表:存放根据学校组织结构定义用户角色。
表 2-8 用户角色表 字段 类型 可否为空角色(主键) VARCHAR128 NOT NULL角色名(唯一) VARCHAR128 NOT NULL权限 INT10 NOT NULL 系统设置表:存放所有的系统设置,供应用程序读取。
表 2-9 系统设置表 字段 类型 可否为空设置名(主键) VARCHAR64 NOT NULL设置值 TEXT NULL 日志表:存放系统日志。
表 2-10 日志表 字段 类型 可否为空流水号(主键) INT10 NOT NULL严重程度 VARCHAR32 NOT NULL触发人 VARCHAR256 NOT NULL操作内容 TEXT NOT NULL操作时间 INT10 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-gtload-gtlibraryupload config //文件上传 ifthis-gtupload-gtdo_uploadimport_file //上传失败则向前端表示层返回错误 data arrayerror gt this-gtupload-gtdisplay_errors else //载入数据导入模型 this-gtload-gtmodelimport_mdl //检查文件,通过检查则返回 TRUE status this-gtimport_mdl-gtcheck_filefilename ifstatus data arrayerror gt 文件格式不合法! else //执行数据导入 res this-gtimport_mdl-gtimport ifres data arraydone gt 导入成功! else data arrayerror gt 导入过程中出现错误! //将提示信息写回前端表现层 this-gtload-gtviewmessagedata //上下文
代码省略... 数据导入的流程图.