基于LAMP的离散结构在线评测题库系统设计研究

2015-07-17 03:01陈宇黄仲洋张健
课程教育研究·下 2015年4期

陈宇 黄仲洋 张健

【摘要】离散结构是计算机及相关专业核心课程,本文在介绍离散结构,LAMP架构的基础上,提出了基于LAMP的离散数学在线评测题库系统设计,实现了对学生提交的程序源代码进行自动编译、连接、运行、测试、评审等过程并返回测试结果,采用了多进程的并发处理、信号处理、进程通信、文件管理等技术,使得该自动测评系统在实际应用过程中发挥良好的性能,完成了日常编程训练和考试评测等活动,该系统的实现可以提高离散结构课程的自动化、高效率、公正性等方面。

【关键词】离散结构 在线评测 LAMP系统架构

【中图分类号】G642.0 【文献标识码】A 【文章编号】2095-3089(2015)04-0029-03

The Exploration of Online Judge System Design of Discrete Structures Based on LAMP

Chen Yu,Huang Zhongyang,Zhang jian

(School of information and computer engineering, Northeast Forestry University,Harbin 150040, China)

【Abstract】 Discrete Structures is the core courses of the computer and the related majors, This article describes the basic Discrete Structures and LAMP architecture. Automatic interpretation of source code submitted by the user, linking, running, testing, appraisal process and returning the test results are realized. A multi-process, concurrent processing, signal processing, process communication, document management and other technologies are used. Consequently, the said automatic evaluation system has good performance in the practical application, completing a routine program of training and various types of online programming contest and realizing the automation of competition process, high efficiency, fairness and other features.

【Key words】 Discrete Structures; Online Judge; LAMP architecture

1.离散数学

离散结构是研究离散量的结构及其相互关系的数学学科,是现代数学的一个重要分支。离散的含义是指不同的连接在一起的元素,主要是研究基于离散量的结构和相互间的关系,其对象一般是有限个或可数个元素。离散结构在各学科领域,特别在计算机科学与技术领域有着广泛的应用,同时离散数学也是计算机专业的许多专业课程,如程序设计语言、数据结构、操作系统、编译技术、人工智能、数据库、算法设计与分析、理论计算机科学基础等必不可少的先行课程。通过离散数学的学习,不但可以掌握处理离散结构的描述工具和方法,为后续课程的学习创造条件,而且可以提高抽象思维和严格的逻辑推理能力,为将来参与创新性的研究和开发工作打下坚实的基础[1-4]。

2.LAMP架构

LAMP是Linux+Apache+MySQL+PHP 的缩写。现如今,LAMP 架构可以说是基于Web 的开发中的最佳技术解决方案。抛开 Linux 不谈,Apache 服务器、MySQL 数据库管理系统和 PHP 脚本语言本身都是各自独立的开源软件,都有着相当健壮的功能。当把三者结合在一起时,三者构成的整体可以拥有高度的兼容性,构成了一个强大的 Web开发平台。 在 LAMP 平台中开发的项目,由于各个开源的软件已经非常成熟,所以在软件方面的投资成本很低,适合系统平台的开发。因此现在越来越多的供应商、用户和企业投资者日已认识到,使用 LAMP 开源软件的组成平台构建以及运行各种商业应用和协作构建各种网络应用程序,变得更加具有竞争力,更加吸引客户。无论是从性能、质量还是价格上 LAMP 都将成为企业和征服信息化所必须考虑的平台[5-6]。

Apache网络服务器作为一种开放源码的Web服务器,占据了大部分市场份额,在世界范围内是使用量第一的Web服务器。Apache网络服务器支持HTTP协议,可以运行在各种计算机操作平台上,如Unix/Linux,Windows,MAC等。Apache網络服务器功能强大、灵活性高、可扩展性好,可做代理服务器并且可通过简单的API扩展,将PHP等解释器编译到服务器[7]。

PHP,是英文超文本预处理语言Hypertext Preprocessor的缩写。混合了C、Java、Perl等以及PHP自创语法,使其拥有了独特的语法。PHP执行动态网页比CGI或者Perl更加快速。PHP和ASP,JSP脚本语言一样,也是一种HTML内嵌式的语言,并且是面向Web服务器的技术[8]。PHP具有非常强大的功能,能实现所有CGI或JavaScript的功能,而且支持几乎所有流行的数据库以及操作系统[9]。PHP不仅具有以上优点,其特色更在于:具有强大的数据库支持、内置的函数库十分丰富、源码完全开放、简单易学并且效率极高。

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司。MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性[10]。

MySQL作为一般中小型网站开发的网站数据库的首选,不仅是因为其速度快,体积小,成本低,更是因为其开放源码这一特点。并且到目前为止,MySQL是和PHP交互最好的数据库系统,其搭配PHP和Apache可组成良好的开发环境。

3.基于LAMP架构的离散结构在线评测题库系统总体设计

该系统是集程序设计竞赛、竞赛训练、课程实验、平时练习于一身的网上实时提交系统。该系统提供了大量供学生练习和竞赛的竞赛题目,学生在线提交解决相关练习和竞赛题的程序代码,系统可以自动编译程序代码,生成可执行文件,并根据已存储的测试用例,从程序的正确性、程序运行总时间、耗费内存、单用例执行时间、程序返回结果等各方面评测程序代码,并精确返回各方面的评测结果。不但支持C、C++、PASCAL以及JAVA语言的编译,还定义了一套具有充分可扩展性的编辑器扩充规则,可以在不修改系统任何实现的情况下,通过管理配置文件增加系统可以支持的语言和编译器。离散数学在线评测系统性能上的稳定快速可以为该课程提供有效的实验环境。

3.1系统架构设计

离散结构在线评测系统是基于 WEB 构建的,所以整个系统在架构上主要分为三个结构:客户端、服务器端、数据库端。对于客户端而言,学生主要通过浏览器來使用操作系统;在服务器端提供物理服务器,配置相应系统发布软件;数据库端配置在服务器中,存储系统需要的各类数据。

3.2系统功能模块设计

离散结构在线测评系统功能模块图如图1所示:

图1.离散结构在线评测系统功能模块图

3.3数据库设计

在离散结构在线评测系统设计过程中,数据库的设计显得至关重要。我们严格按照数据库设计的基准和原则进行数据库的所有表和表项的设计。这样可以降低项目的开发难度,方便项目后期的日常维护。同样,良好的数据库设计也会降低系统的开发成本。离散结构在线评测系统数据库设计如表1所示:

表1 数据库设计

表名 用途

users 记录学生或老师的信息

problem 记录题目信息

message 记录论坛内容

solution 记录学生提交的作业信息

source_code 记录学生提交的作业内容

contest 记录考试信息

attend 记录考试成绩

4. 基于LAMP架构的离散结构在线评测题库系统详细设计

4.1 前台的详细设计

离散结构在线评测题库系统用户分为三类:学生,教师和管理员。所有用户均需要登录,系统会从users表中取得该用户的权限,从而进行分辨。用户登录后可以选择考试或训练模式,并进入相应题库提交代码,经后台评测后,即可返回结果。如果学生对题目或结果有任何问题,也可以在讨论区发帖留言,与其他同学进行探讨和研究。教师则可以出题、开办考试、查看考试结果等操作。

4.2评测系统核心层

评测系统核心是接受用户提交的程序,把程序的运行结果返回给用户,运行结果为程序正确或程序不正确。程序不正确包括:运行错误、运行超时、运行结果错误以及运行结果输出格式错误。在进行程序评判时,先启动服务器评判进程,它是以守护进程的方式存在的。在侦听到有提交记录时,守护进程立即从数据库中取出待评判的程序进行编译,编译时采用多进程方式,使用Linux下C语言函数fork()分出一个子进程,在子进程中通过fexecle()函数调用gcc或者javac命令进行编译,然后判断其编译结果。

4.结束语

离散结构在线评测系统的实现可以夯实学生的程序设计基础,对于离散结构的学习有着重要意义。它把对理论知识的学习与实际的应用有机的结合起来,注重培养学生的编程能力,训练学生的解题思维,对于培养学生的创新能力具有很大的帮助。通过该系统的实现,提高了教学质量和教学水平。

参考文献:

[1] 许蔓苓.离散数学的方法和挑战[J].计算机研究与发展,2002:1771-1772.

[2] Rosen K H.离散数学及其应用[M].袁崇义,屈婉玲,译.北京:机械工业出版,2002.

[3] 耿素云,屈婉玲,王捍贫.离散数学教程[M].北京:北京大学出版社,2003.

[4] 王元元,张桂芸.离散数学导论[M].北京:科学出版社,2002.

[5] 王亚军. Linux 与 Windows 互操作综述[J]. 计算机系统应用,2012,04:259-263.

[6] 张哲铭. 基于 LAMP 的台达实验室管理系统实现[J]. 电子技术,2013,06:65-67.

[7] Hoffmann G.A.,Trivedi K.S.,Malek M.A. Best practice guide to resources forecasting for the apache webserver[C].12th Pacific Rim Internationa1 Symposium on DePendable Computing,2006,Riverside,CA:183-193.

[8] 姜林美,宗杰,徐剑.PHP网络编程典型模块与实例精讲[M].北京:电子工业出版社,2007.

[9] 吉斌武,刘建华,陈以.基于PHP和AJAX的在线考试系统的研究与实现[J].福建电脑,2009,2:107-124.

[10] 陈军.PHP+MySQL经典案例剖析[M].北京:清华大学出版社,2008

基金项目:中央高校基本科研业务费专项资金项目(2013CBQ03);黑龙江省教育厅科学技术研究项目(12513016);黑龙江省自然科学基金项目(F201347);哈尔滨市科技创新人才专项资金项目(2013RFQXJ100);东北林业大学重点课程建设项目