# 2.2. 总体概述

## 2.2.1. 软件介绍

该Online Judge系统旨在为计算机专业学生提供一个在线编程评测平台，帮助学生练习编程、提高编程能力，并为教师提供一个自动化的作业和考试评测工具。通过即时反馈，学生可以快速了解自己的编程问题并加以改进，从而提高学习效率和编程技能，同时方便教师对班级教学进行管理。

## 2.2.2. 软件功能概述

该软件系统包含以下主要功能：

* **用户管理**：支持用户的注册、登录以及权限控制功能。区分普通用户和管理员（教师）权限，确保不同角色的功能访问合理分配
* **题目管理**：管理员（教师）负责创建和编辑题目、管理题目的标签分类。同时，所有用户均可浏览题目。
* **评测管理**：只有登录用户才能实现代码的提交和评测，用户可以查看评测结果和历史提交记录。支持用户更换编辑器主题以优化使用体验
* **教学管理**：管理员（教师）可以从题库中布置作业，学生能够查看作业并提交作答，实现教学活动的线上化
* **用户界面管理**：用户可以查看历史题目、已布置的作业以及自己的学习进展，增强学习体验和管理便利性

## 2.2.3. 用户特征

该系统的潜在用户包括：

* **学生**：主要是计算机专业的学生，他们使用该系统来进行编程练习和提交作业。这些用户具有从初学者到高级开发者不等的编程水平。
* **教师**：主要负责编程课程的教学活动，包括布置编程作业、监控学生的学习进度、评估学生的编程能力以及成绩。
* **系统管理员**：管理系统的总体配置、用户账户和权限，负责题库的更新与维护，确保系统的稳定运行和数据安全。

## 2.2.4. 运行环境

**硬件平台**：

* **服务器**：至少需要双核CPU、4GB内存和100GB存储空间。
* **客户端设备**：PC、笔记本电脑、移动设备等。

**操作系统**：

* **服务器端**：Ubuntu 20.04, CentOS
* **客户端**：支持Windows、macOS、Linux等操作系统。

**编译系统**：

* **Python**：Python 3.x
* **C/C++**：GCC 9, G++
* **Java**：Java Development Kit

**数据库**：

* **主数据库**：PostgreSQL 10
* **辅助缓存/消息系统**：Redis

**相关软件**：

* **浏览器**：支持最新版本的Chrome、Firefox、Edge等主流浏览器。
* **开发工具**：包括代码编辑器、版本控制工具（如Git）、构建和测试工具等。

**其他支持软件**：

* **Docker**
