# 2.4. 功能需求

## 2.4.1 功能需求概要

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

## 2.4.2 功能需求详细说明

* **FR1用户管理模块**
  * FR1.1用户注册
    * 内容：允许用户注册账号成为系统会员。
    * 输入：⽤户名、密码、邮箱、⽤户⻆⾊等。
    * 输出：注册成功提示或错误信息。
  * FR1.2用户登录
    * 内容：登录⽤户的账号。
    * 输⼊：⽤户名、密码、邮箱、⽤户⻆⾊等。
    * 输出：登录成功提示或错误信息。
  * FR1.3权限控制
    * 内容：根据⽤户的⻆⾊赋予⽤户不同的权限
    * 输⼊：⽤户⻆⾊信息。
    * 输出：给该⽤户授权对应的权限。
* **FR2题目管理模块**
  * FR2.1题目创建
    * 内容：允许管理员创建算法题⽬。
    * 输⼊：使⽤markdown语法的题⽬⽂本。
    * 输出：创建成功或失败的信息提示。
  * FR2.2题目浏览
    * 内容：允许⽤户使⽤滚轮浏览题⽬列表，或通过题⽬和算法关键词筛选题⽬。
    * 输⼊：⿏标滚轮信息或题⽬和算法关键词⽂本。
    * 输出：⼀个题⽬列表。
  * FR2.3编辑题目
    * 内容：允许管理员编辑题⽬的⽂本、样例、限制等信息。
    * 输⼊：使⽤markdown语法的题⽬⽂本。
    * 输出：编辑成功或失败的信息提示。
  * FR2.4题目分类
    * 内容：允许管理员通过设置题⽬的算法类别对其分类。
    * 输⼊：某⼀题⽬的关键字⽂本。
    * 输出：将该题⽬分类到对应类别。
* **FR3编译管理模块**
  * FR3.1提交代码
    * 内容：⽤户可以提交代码以解决特定的编程问题。
    * 输⼊：⽤户提交的源代码。
    * 输出：提交确认，代码进⼊评测队列。
  * FR3.2得分结果查看
    * 内容：⽤户提交的代码评测完成后，⽤户可以查看评测结果。
    * 输⼊：⽤户请求查看特定提交的评测结果。
    * 输出：显示评测结果，包括是否通过、运⾏时间、消耗内存、错误信息等。
  * FR3.3历史记录查询
    * 内容：⽤户可以查询和查看⾃⼰过往提交的历史记录和评测结果。
    * 输⼊：⽤户请求查看历史评测记录。
    * 输出：显示⽤户的历史提交和评测结果列表。
  * FR3.4编辑器主题更换
    * 内容：允许⽤户根据⾃身需求改变编辑器主题，如字体⼤⼩、主题颜⾊等。
    * 输⼊：点击下拉框后选择字体⼤⼩、主题颜⾊等选项。
    * 输出：根据⽤户的选择改编编辑器主题。
* **FR4教学管理模块**
  * FR4.1作业布置
    * 内容: 教师⽤户可以向班级内⽤户布置作业, 学⽣⽤户会收到相应的题⽬。
    * 输⼊: ⽤户请求提交作业布置。
    * 输出: 显示布置对象、时间、成功与否等信息。
  * FR4.2详细跟踪
    * 内容：系统允许教师⽤户对学⽣⽤户的学习情况进⾏详细跟踪，包括但不限于学习进度、 作业完成情况、提交历史等。
    * 输⼊：教师⽤户请求查看学⽣⽤户的详细学习情况。
    * 输出：系统显示学⽣⽤户的学习情况报告，包括作业提交情况、题⽬解答情况、评测结果等。
  * FR4.3成绩管理
    * 内容：系统允许教师⽤户对学⽣⽤户的成绩进⾏管理，包括但不限于作业成绩、测试成 绩等。
    * 输⼊：教师⽤户请求查看或管理学⽣⽤户的成绩。
    * 输出：系统显示学⽣⽤户的成绩列表，教师⽤户可以进⾏成绩录⼊、修改或查看操作。
* **FR5用户界面模块**
  * FR5.1历史题目查看
    * 内容：系统允许⽤户查看已解决或已尝试过的历史题⽬，以便复习或参考。
    * 输⼊：⽤户请求查看历史题⽬记录。
    * 输出：系统显示⽤户解决或尝试过的题⽬列表，包括题⽬名称、解题时间等信息。
  * FR5.2作业查看
    * 内容：系统允许⽤户查看已布置的作业及相关信息，包括作业内容、截⽌时间等。
    * 输⼊：⽤户请求查看已布置的作业。
    * 输出：系统显示已布置的作业列表，包括作业名称、截⽌时间等信息。
  * FR5.3学习情况查看
    * 内容：系统允许⽤户查看⾃⼰的学习情况，包括但不限于已解决的题⽬数量、学习时⻓等。
    * 输⼊：⽤户请求查看个⼈学习情况。
    * 输出：系统显示⽤户的学习统计信息，包括解题数量、学习时⻓等。

## 2.4.3 功能需求分级

经过问卷调查，我们发现用户对于oj系统的功能需求重要性评估如下（从大到小）： 题库，及时反馈，讨论区，竞赛参与，排名系统 对于题目类型的重要性评估如下（从大到小）： 基础算法，数据结构，机器学习
