本人对下述需求进行了代码实现,使用ssm框架。涉及到Java的动态编译方面的知识,另外,评分通过获取后台数据库中的测试用例,动态执用例进行评分。

需要源码的可以扫码关注公众号『嗜码』,回复「程序题批改系统」即可获取源码,源码使用的 spring mvc 框架。

文章目录

  • 1 需求分析
    • 1.1 系统简介
    • 1.2 需求说明
    • 1.3 用例分析
      • 1.3.1 用例与角色
      • 1.3.2 用例图
      • 1.3.3 用例描述
  • 2 系统设计
    • 2.1 实体关系建模
    • 2.2 数据库设计
    • 2.3 界面设计
      • 2.3.1 页面跳转关系
      • 2.3.1 页面设计
    • 2.4 系统组件模型

1 需求分析

1.1 系统简介

  在计算机教育领域,尤其是程序设计类课程,教学内容基本上是理论与实践相结合。对于的传统的手动批改源代码和程序的方式通常会耗费教师巨大的精力,也难以保证结果公正性,因此程序题自动批改系统备受关注。目前应用较为广泛的的程序自动批改系统是ACM/ICMP的Online Judge程序批改系统,但是在多数的程序设计类课程中,ACM/ICMP并不适用。ACM/ICMP系统只能够处理标准的输入输出程序,并且给出对或错两种结果,无法像手工批改一样,对各方面进行打分,同时给出具体的分数以及错误原因。

  因此,设计一个程序题智能批改系统,采用提交-反馈的模式,让学生在离开老师的情况下,可以自己编写程序并交给系统进行批改,同时教师可在后台查看学生的学习情况,并予以反馈。这不仅提高了学生编写程序的积极性,也驱动学生去深入学习编程,大大减轻了教师的工作量。

1.2 需求说明

  程序题智能批改系统可用于让学生在没有老师的监督下,独立编写程序并通过系统提交给后台。教师在后台可查看学生的学习情况,并针对不同学生的答题情况予以反馈。主要需求如下:

  • 学生可以在线编程,并支持本地调试
  • 学生可以将编写好的代码提交到服务器端,并查询自己的成绩
  • 教师可以题库进行管理,例如:增加题目、修改答案等等
  • 教师可以对学生成绩进行管理,并可查看成绩分析报告
  • 教师可以在线批改学生代码,并予以反馈
  • 管理员可以对学生及教师信息进行管理

1.3 用例分析

1.3.1 用例与角色

学生:

  • 查询相关个人基本信息
  • 查询成绩
  • 在线编程答题
  • 提交代码
  • 测试代码
  • 下载代码
  • 问题反馈

教师:

  • 题库管理
  • 查询个人基本信息
  • 在线批改
  • 生成成绩分析报告
  • 代码安全检测
  • 成绩管理

管理员:

  • 管理学生基本信息
  • 管理教师基本信息

1.3.2 用例图

1.3.3 用例描述

用例名称:成绩查询
描述:学生查询个人成绩信息
标识符:UC01
角色:学生
前置条件:学生成功登录系统
主事件流:
1.学生点击个人信息连接,跳转到个人信息页面
2.点击题目,查询所得成绩
3.用例结束
其他事件流: 1.学生未答题,未显示分数
用例名称:在线编程答题
描述:学生进行在线编程答题
标识符:UC02
角色:学生
前置条件:学生成功登录系统并点击题目
主事件流:
1.学生选择题目类型
2.学生点击题目链接
3.跳转到程序编写界面进行编程
4.下载代码进行本地调试
5.用例结束
其他事件流:
后置事件流:学生点击“保存”按钮
用例名称:测试代码
描述:学生对编写好的代码进行测试
标识符:UC03
角色:学生
前置条件:学生编写好代码并点击“测试”按钮
主事件流:
1.学生编写代码
2.学生点击“测试按钮”
3.系统检查代码的安全性
4.返回测试结果
5.用例结束
其他事件流:
1.学生关闭窗口,提示“保存代码”
2.学生编写的代码运行异常,警告“疑似病毒”
后置事件流:学生点击“提交”按钮
用例名称:提交代码
描述:学生对测试好的代码进行提交
标识符:UC04
角色:学生
前置条件:学生编写好代码并点击“提交”按钮
主事件流:
1.学生编写代码
2.代码通过安全测试
3.学生点击“提交按钮”
4.用例结束
其他事件流:
1.学生代码安全测试未通过,提交按钮禁用
后置事件流:无
用例名称:下载代码
描述:学生下载教师提供的参考代码
标识符:UC05
角色:学生
前置条件:教师上传参考代码
主事件流:
1.学生选择题目
2.点击参考代码链接进行下载
3.用例结束
其他事件流:无
后置事件流:无
用例名称:问题反馈
描述:学生对题目的疑惑在留言中反馈
标识符:UC06
角色:学生
前置条件:无
主事件流:
1.学生输入问题内容
2.学生点击提交按钮 3.用例结束
其他事件流:
1.输入的内容为空,提示“输入的内容为空”
后置事件流:
1.管理员审核通过,反馈显示
用例名称:题库管理
描述:教师对编程题目进行管理
标识符:UC07
角色:教师
前置条件:教师成功登录系统
主事件流:
1.教师点击题库管理链接
2.教师可以增加或批量导入题目,并设置答案及上传参考代码
3.教师可以批量删除题目
4.教师可以修改题目信息,可以修改题目答案
5.教师可以对所有题目进行条件查询或者模糊查询
6.教师点击保存按钮,完成对题库的管理操作
7.用例结束
其他事件流:
1.关闭页面时,教师批量导入未点击保存按钮,提醒用户保存
2.查询条件为空,查询所有题目
后置事件流:
1.所有增加或者修改的题目信息均保存到数据库中,学生看到新的题目信息
用例名称:在线批改
描述:教师在线对学生编写的代码进行批改并予以评价反馈
标识符:UC08
角色:教师
前置条件:教师成功登录系统
主事件流:
1.教师点击在线批改按钮,系统自动打分。
2.教师可以点击查看某个学生的具体答题情况,并予以评价
3.教师可对学生所提疑问进行在线解答
4.教师可以导出学生所写的代码
5.用例结束
其他事件流:
1.代码安全检测未通过,程序不予以执行
后置事件流:
1.题目的得分信息保存到数据库中,学生可看到自己的成绩
用例名称:成绩管理
描述:教师对学生的成绩信息进行管理
标识符:UC09
角色:教师
前置条件:教师成功登录系统
主事件流:
1.教师点击学生成绩信息管理按钮
2.教师可以修改学生的成绩信息
3.教师可以删除学生的成绩信息
4.教师可以按条件查询学生的成绩信息
5.教师点击保存,完成对学生信息管理的操作
6.用例结束
其他事件流:
1.查询条件为空,查询所有的学生信息
后置事件流:
1.修改的成绩信息保存到数据库中,学生可看到自己修改后的成绩
用例名称:生成成绩分析报告
描述:生成学生的成绩分析报告
标识符:UC10
角色:教师
前置条件:教师成功登录系统,点击了成绩管理按钮
主事件流:
1.教师点击学生成绩信息管理按钮
2.教师点击了生成学生成绩报告
3.教师可以按不同条件对成绩进行统计分析
4.教师可以下载生成的分析报告
5.用例结束
其他事件流:无
后置事件流:无
用例名称:学生信息管理
描述:管理员对学生信息进行管理操作
标识符:UC11
角色:系统管理员
前置条件:管理员成功登录系统,并点击学生信息管理
主事件流:
1.管理员点击学生信息管理
2.管理员可以批量导入学生信息
3.管理员可以删除学生信息
4.管理员可以修改学生信息
5.管理员可以进行条件查询或者模糊查询
6.管理员点击保存完成对学生信息管理的操作
7.用例结束
其他事件流:
1.点击保存,学生信息为空或者不符合要求,提示“学生信息不符合要求”
后置事件流:
1.对于新增的学生,学生可以通过账号密码登录系统
用例名称:教师信息管理
描述:管理员对教师信息进行管理操作
标识符:UC12
角色:系统管理员
前置条件:管理员成功登录系统,并点击教师信息管理
主事件流:
1.管理员点击教师信息管理
2.管理员可以批量导入教师信息
3.管理员可以删除教师信息
4.管理员可以修改教师信息
5.管理员可以进行条件查询或者模糊查询
6.管理员点击保存完成对教师信息管理的操作
7.用例结束
其他事件流:
1.点击保存,教师信息为空或者不符合要求,提示“学生信息不符合要求”
后置事件流:
1.对于新增的教师,教师可以通过账号密码登录系统

2 系统设计

2.1 实体关系建模

   实体关系模型直接从现实世界中抽象出实体类型和实体间联系,建立实体关系模型是系统设计的第一步。就本系统而言,「学生」(Student)、「教师」(Teacher)、「管理员」(Admin)、「问题」(Question)、「提交」(Submission)、「通知」(Notification)、「笔记」(Note)、「附件」(Enclosure)、「成绩」(Grade)以及「留言」(Message)都是经常出现的名词,它们也都是从需求描述中识别出来的「实体」。通过建立实体之间相应的关系,从而得到实体关系模型,以完成设计需求。

   程序题智能批改系统是一个小型的在线编程评判系统,系统共11个实体类型,下图显示了它们之间的所有模型和关系。

2.2 数据库设计

  本系统数据库使用MySQL5.0,一种关系数据库管理系统,数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,增加了速度并提高了灵活性。MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。本系统数据库中数据存放于10张表中,所有“id”键字段都是Java类型的Integer。数据库结构图如下图。

​ 图2-2 数据库图

2.3 界面设计

2.3.1 页面跳转关系

  • 系统首页展示的是教师发布的题目、推荐文章以及学生发布的笔记

  • 学生登录进入学生后台,可查询自己的成绩、在线答题以及管理笔记等

  • 教师登录进入后台可管理题库、发布通知、发布文章以及生成成绩分析报告

  • 管理员登录进入后台可以管理学生以及老师的信息

    页面跳转图分别如下图:

    ​ 图2-3 首页跳转图


​ 2-4 学生后台页面跳转图


​ 2-5 在线编程页面跳转图


​ 2-6 教师后台页面跳转图

​ 2-7 学生管理页面跳转图

2.3.1 页面设计


2-8 登录页面


2-8学生登录后主页

2-9 学生编程主页

2.4 系统组件模型


欢迎加我微信,一起交流,互相学习,共同进步!


关注公众号『嗜码』。回复关键字「前端」、「Python」、「Java」、「Android」、「小程序」、「Vue」等获取免费精品学习资料。

程序题智能批改系统需求分析相关推荐

  1. 基于微信小程序电动车智能充电系统(微信小程序毕业设计)

    基于微信小程序电动车智能充电系统 微信小程序电动车智能充电系统,后台基于java编程语言,ssm框架,mysql数据库,前端采用微信小程序,本系统分为用户和管理员两个角色,其中用户的主要功能是注册和登 ...

  2. 零售业智能运营系统需求分析

    项目前景: 为实体零售企业打造一个基于运营商用户数据的智能运营系统.通过提供可视化的客户分析结果和可靠的产品销售评估图表,帮助企业确定智能化的运营方案,实现精准营销,提高门店转化率,节约运营成本,树立 ...

  3. 【物联网】esp8266 + 物联网平台 + 微信小程序的智能环境监测系统

    文章目录 成果演示 项目介绍 原理 设备端 ------ NodeMcu 物联网平台 ----- 巴法云 与设备端建立TCP连接,实现订阅/发布 设备端发送信息到巴法云 设备端从巴法云接收信息 客户端 ...

  4. [附源码]JAVA+ssm计算机毕业设计高考志愿智能填报系统(程序+Lw)

    项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclis ...

  5. c语言程序题是如何判分的,C语言编程题判分系统的研究与实现

    摘要: 随着计算机技术和因特网的发展,B/S模式的教学系统在高校教学中显得越来越重要.C语言程序设计是计算机专业的一门重要的基础课程,具有实践性强的特点,在教学中应加大实践教学比例.本文利用网络技术开 ...

  6. (附源码)小程序智能养老系统平台 毕业设计170900

    智能养老系统平台的设计与实现 摘 要 随着互联网趋势的到来,各行各业都在考虑利用互联网将自己推广出去,最好方式就是建立自己的互联网系统,并对其进行维护和管理.在现实运用中,应用软件的工作规则和开发步骤 ...

  7. C#毕业设计——基于C#+asp.net+SQL server的通用作业批改系统设计与实现(毕业论文+程序源码)——作业批改系统

    基于C#+asp.net+SQL server的通用作业批改系统设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于C#+asp.net+SQL server的通用作业批改系统设计与实现,文章 ...

  8. STM32毕业设计——基于STM32+MQTT+WiFi技术的智能家居系统设计与实现(毕业论文+程序源码)——智能家居系统

    基于STM32+MQTT+WiFi技术的智能家居系统设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于STM32+MQTT+WiFi技术的智能家居系统设计与实现,文章末尾附有本毕业设计的论文 ...

  9. 【附源码】Java计算机毕业设计面向企业人力资源管理网上智能考勤系统(程序+LW+部署)

    项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclis ...

最新文章

  1. 最新数据:一图看清全球393家独角兽公司
  2. docker-compose报错:(root) Additional property mail-service is not allowed
  3. log4j按天生成且有按照文件大小分割_论文阅读TGM:轨迹生成
  4. java属于以下哪种语言_Java属于以下哪种语言?
  5. 电脑开机3秒就重启循环_手机怎么才能投屏到电脑上?3个方法,小屏1秒变大屏,涨知识了...
  6. 第一章 计算机网络参考模型
  7. 获取listview当前滚动的高度
  8. java嵌入chrome内核
  9. c# lu分解的代码_线性方程组的分解法——LU分解法
  10. 新东方辞退6万员工,蘑菇街裁员80%!大厂裁员潮之下,职场人如何掌握自己的命运?...
  11. 谈谈用户体验与风控的平衡性
  12. C++设计模式 命令模式(服务员命令厨师)
  13. 那些年我做的毕业设计
  14. 借助智能手机应用程序和可穿戴设备在夏季塑造身材
  15. CSS中-moz-、-ms-、-webkit-、-o-的意义
  16. C#Office.Interop.Excel.dll读写表格
  17. 头像总撞脸,如何定制化头像?几行Python代码实现人像动漫化
  18. GdPicture.NET SDK Crack,编辑、捕获或打印文档
  19. .net 导入Excel2007
  20. excel 公式 单引号 concat_电气计算速度慢?62套自动计算EXCEL表格,输入数据秒出结果...

热门文章

  1. python实现一个简单的猜数游戏
  2. 需求经理作业——第二组头脑风暴结果
  3. 博图V14安装(无图流程)S7-1200
  4. 【Arduino实验02 LED流水灯】
  5. 家庭记账本最好的选择
  6. Infortrend CS分布式NAS集群强项之性能篇
  7. word中如何设置页码从任意页开始算起(图文版)
  8. SAP 登录后默认T-CODE
  9. 今日芯声 | 雷军小米十周年演讲官宣:一碗滚烫的小米粥,开启了沸腾的十年...
  10. db107s-ASEMI整流桥堆怎么测量好坏,万用表测量DB107S四脚