论文部分内容阅读
在互联网及计算机技术发展迅速的今天,很多高校和中小学都非常重视编程课程训练。编程课程有利于培养学生的创新思维和逻辑思维,增强学生的信息素养。近期我国国务院印发了《新一代人工智能发展规划》,《规划》中指出我国到2030年人工智能理论、技术与应用总体达到世界领先水平。人工智能中最重要的部分就是程序设计,所以要想发展人工智能学科,就需要在学生当中普及程序设计知识。如何对于学生编写完的程序,进行高效、全面地测试与评价,就非常重要了。在线编程评测系统可以给用户提供大量的题库,让用户在系统上进行程序设计练习,当用户提交了代码后,系统会自动对代码进行编译、运行,最后得出相应的评测结果,反馈给用户。所以在线评测系统的产生可以为学校、编程爱好者及参加比赛的学生提供良好的学习与练习平台。该系统可以极大地提高评测的准确性和判题效率,也可以激发学生的学习积极性,提高学生的编程能力。本文主要贡献分为以下几个方面:首先,本文介绍了在线编程评测系统的产生背景及意义,设计并实现了在线编程评测系统。通过对现行的在线编程评测系统进行分析,综合了各系统的功能特点,本文对在线编程评测系统的题目模块、判题模块、比赛模块、系统状态分析模块与用户功能操作模块做了详细的需求分析;并针对需求分析做了详细的系统架构设计、系统模块设计与数据库设计;然后通过编写PHP代码对系统界面进行编码实现,用C语言实现了判题过程;之后针对各个功能模块进行系统软件测试,从而完成了在线评测系统的设计实现总过程。题目模块主要具备系统前台向用户展示题目,及后台添加、管理题目的功能。判题模块的主要功能是让系统编译、运行用户提交的程序代码,将得出的输出数据,与标准的输出数据进行对比,最终输出判题结果。比赛模块主要作用是在前台展示比赛内容和比赛结果,以及在后台管理比赛的功能。系统状态分析模块主要是统计、分析并展示出用户在系统中的排名,和用户已提交题目的状态分析等内容,这样可以让学生更充分、全面地了解自己的编程水平。这几个功能模块,实现了程序评判过程的全自动化,测试结果的标准化,用户状态分析的智能化,具有用户使用方便、管理员操作简单等特色。其次,在技术层面,系统采用的是B/S结构,前端展示界面和后台管理界面由PHP编写完成,可以运行在Apache服务器上。题库我们采用数据库My SQL来进行管理,My SQL数据库服务器通过数据的共享实现了核心的任务队列和数据通信功能。判题服务器采用FIFO判题任务处理方式,实现自定义的动态任务分配。在本系统中不同任务由不同物理机承担,实现分布式计算。最后,作为一个可以在校园中运行的在线编程评测系统,主要拥有管理员和普通用户两大用户群。由于两者的操作功能需求不同,系统提供了不同的访问操作界面。管理员作为在线编程评测系统的维护者、管理者,不仅可以在系统后台管理题目,对题目做增加、删除、修改等操作,还可以对比赛也进行增加、删除、修改等操作。普通用户在系统前台可以做出查看题目,提交代码进行评测,参加比赛、浏览系统状态分析页面等操作。这样就有建立起了一个安全合理的信息传输和管理平台。