,
Linux 三级项目需求分析报告
Linux Applied Technology
Experiment Report
ACM 程序自动评测系统
(燕山大学 信息科学与工程学院)
摘 要: 随着计算机技术的发展和提高,计算机辅助评价(CAA)已成为当前
计算机教育应用的热点研究问题。本次 Linux 三级项目则是基于此对是 ACM 程序
实现自动测评,实现程序源代码的自动化。本系统通过利用 Linux 中 Shell 高级程序
设计及 Mysql 实现一个 ACM 程序自动评测系统。系统分为两个部分,数据库部分、
测评部分,其中测评部分包括 J1 负责基本信息维护(设置)、J2 负责评测程序;
通过对自动测评系统进行验证与分析,表明本系统采用的方法能够的程序实现自动
测评,设计和开发的自动测评系统具有一定的实用价值。
关键词: Bash; Mysql;自动测评
目 录
1. 项目概述...................................................................................................................... 1
1.1. 项目背景..........................................................................................................1
1.2. 问题描述..........................................................................................................1
1.3. 主要技术..........................................................................................................1
2. 需求分析...................................................................................................................... 2
2.1. 存储需求..........................................................................................................2
2.2. 控制流程..........................................................................................................2
2.3. 可行性分析......................................................................................................2
3. 总体设计...................................................................................................................... 3
3.1. 系统架构..........................................................................................................3
3.2. J1 模块.............................................................................................................3
3.3. J2 模块.............................................................................................................4
3.4. 数据库模块......................................................................................................5
3.5. 开发工具..........................................................................................................6
4. 详细设计...................................................................................................................... 7
4.1. 数据文件..........................................................................................................7
4.2. 数据库..............................................................................................................8
4.3. J1 设计.............................................................................................................9
4.4. J2 设计...........................................................................................................10
5. 项目结果.................................................................................................................... 14
5.1. 主界面............................................................................................................14
5.2. 数据库............................................................................................................14
5.3. J1....................................................................................................................16
5.4. J2....................................................................................................................19
6. 心得总结.................................................................................................................... 22
参考文献.......................................................................................................................... 23
1. 项目概述
1.1. 项目背景
在计算机技术高速发展的今天,计算机技术已经渗透到我们身边的各个领
域,ACM 国际大学生程序设计竞赛是由国际计算机协会主办的,旨在展示大
学生创新能力、团队精神和在压力下编写程序、分析和解决问题能力的年度竞
赛。一个良好的程序测评系统,为比赛的公平、公正、高效提供了保证。
1.2. 问题描述
(1) 教师有多道 C 语言题目要求及测试用例;
(2) 利用 Linux 中 Shell 高级程序设计,帮助教师开发一个程序自动评测系统(教
师用);
(3) 学生完成 C 语言程序设计后,提交到系统,系统自动评测学生提交的 C 语
言程序是否通过测试。
(4) 教师利用此系统管理学生信息、题目信息、提交过程信息。
1.3. 主要技术
(1) Shell:作为命令语言,它交互式解释和执行用户输入的命令
或者自动地解释和执行预先设定好的一连串的命令;作为程序设计语言,它定
义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循
环和分支。
(2) Bash: 是一个为 GNU 计划编写的 Unix shell。是大多数 Linux
系统以及 Mac OS X 默认的 shell。
(3) MySQL:是一个关系型数据库管理系统,MySQL 所使用的
SQL 语言是用于访问数据库的最常用标准化语言。由于其体积小、速度快、总
体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择
MySQL 作为网站数据。
1
2. 需求分析
2.1. 存储需求
(1) 存储学生的基本信息(ID 号,姓名,班级,学号)。可以逐条输入,可以
批量导入;
(2) 存储题目信息(题目 ID 号,题目名称,题目描述,题目测试案例 1,2,3
等输入,输出文件,题目要求的程序运行时间、内存大小)。可以逐条输入,
可以批量导入;
(3) 存储学生提交程序的过程信息(提交的题目编号,提交时间,是否通过、
不通过的原因(编译错误;运行时间超时,内存超出))。
2.2. 控制流程
系统为单机版运行,由系统管理员一人操作。系统的功能分为两个方
面。
(1) 基本信息维护:管理员管理学生基本信息,题目信息。
(2) 评测程序的过程:学生的程序被复制到某个目录下面,后台自动调用评测
脚本,评测程序。将相应的评测结果存入数据库。
2.3. 可行性分析
图 2-1 系统状态转换图
ACM 程序自动评测系统可以定时自动的对学生程序进行测评,实现自动测
评、多情况更新,提高了阅卷效率、保证了竞赛的公平性,是计算机编程阅卷
的大趋势,具有经济、技术、操作可行性。
2
3. 总体设计
3.1. 系统架构
整个系统分为两个脚本程序和一个数据库管理系统。用 J1 和 J2 分别表示
两个脚本程序。
J1 负责基本信息维护(设置);
(1)
(2)
J2 负责评测程序;
(3) 数据库存储数据。
J1
J2
Mysql 数据库
图 3-1 总体设计图
3.2.
J1 模块
实现系统的基本信息维护及对基本信息的设置。教师作为管理员可以通过
该模块导入或输入学生基本信息和题目信息。
J1 模块的功能:
(1) 新增、删除、修改、查找学生基本信息(学生信息表);
(2) 新增、删除、修改、查找题目信息(题目信息表);
(3) 用功能选择(bash 脚本中的 select);
图 3-2 J1 模块流程图
3