【知识点详解】
1. Linux操作系统:本项目是在Linux环境下进行的,Linux是一个开源且功能强大的操作系统,被广泛应用于服务器和开发环境中。它提供了一个命令行界面,允许用户通过Shell进行交互。
2. Shell高级程序设计:Shell是Linux操作系统中的命令解释器,允许用户通过命令行接口执行各种任务。在本项目中,Shell被用来编写脚本,实现自动化评测系统的一部分功能,如文件操作、程序调用等。
3. Bash:Bash是Linux系统中最常见的Shell,它是GNU项目的默认Shell,提供了一种命令行环境,支持变量定义、条件语句、循环结构等编程特性,便于编写复杂的自动化脚本。
4. MySQL数据库:MySQL是一种关系型数据库管理系统,用于存储和管理项目中的学生信息、题目信息和评测结果。SQL是用于与MySQL交互的语言,用于查询、插入、更新和删除数据。
5. 程序自动评测系统:系统主要目的是自动评估学生提交的C语言程序。它接受学生的代码提交,然后使用预设的测试用例进行测试,判断程序是否符合预期,如编译成功、运行时间和内存限制。
6. 数据存储需求:
- 学生信息:包括ID号、姓名、班级和学号,可以批量导入或逐条输入。
- 题目信息:包含题目ID、名称、描述、测试用例、程序运行时间和内存限制。
- 提交过程:记录每次提交的题目ID、提交时间、通过情况(如编译错误、运行超时、内存超出)。
7. 系统控制流程:
- 基本信息维护:由管理员管理学生和题目信息。
- 评测程序:学生程序在指定目录下运行,后台自动调用评测脚本进行检查。结果会记录在数据库中,如果未通过,会提供错误信息。
8. 可行性分析:
- 经济可行性:开源的Linux和MySQL降低了系统开发成本。
- 技术可行性:Shell和MySQL的组合足以实现自动评测功能。
- 操作可行性:系统设计为单机版,由管理员操作,简化了流程。
9. 系统架构:
- J1模块:负责基本信息的维护和设置,如学生和题目的增删改查。
- J2模块:负责程序的上传和自动评测,每60秒进行一次。
- 数据库:存储所有相关信息,包括学生信息表、题目信息表和提交过程表。
10. 开发工具:
- Linux操作系统:提供运行环境。
- Bash脚本:编写J1和J2模块的逻辑。
- MySQL数据库:存储和管理数据。
11. 详细设计:
- 测试题目编号:以"T"开头的4位整数,如T1234。
- 数据文件格式:与数据库表结构对应,用于数据交换。
通过以上分析,这个Linux三级项目主要涉及Linux环境下的自动化程序评测系统设计,利用Shell脚本实现自动化逻辑,MySQL作为数据存储和管理工具,旨在提高教师的阅卷效率和比赛的公平性。