8 Star 0 Fork 0

zhj124 / 排考

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

排考系统是为了方便管理而产生的软件,往年要进行此操作就必须下发Excel形式的报名表,报名完成之后,再统计,排考。现通过系统直接录入考场,录入报名信息,之后自动生成排考结果,操作简单方便。

考场管理

考场表:考场ID,考场名,所属校区,所属楼名,房间号

考试表:考试ID,考试名,报名开始时间,报名结束时间,排考开始时间,排考结束时间,考试开始时间,考试结束时间 考试-考场关联表:记录ID,考试ID,考场ID

考场/考试管理模块制作要求:

  1. 根据上述表和字段设计数据库及类;
  2. 制作包含增删查改的考场管理模块;
  3. [提高要求]该模块需要支持Excel导入和导出。

最后,提供接口: IExamService

  • List GetActiveExam(DateTime now); // 获取处于报名期间的所有考试
  • ExamInfo GetExamInfo(Guid examId); // 获取一场考试,包括这场考试中用到的所有考场

ExamInfo数据结构:包含所有Exam的字段,增加List Rooms字段表示该场考试所用到的所有考场。


报名管理

在拥有考场和考试相关信息后,用户需要通过报名模块进行报名:

报名表:报名表ID,证件类型(枚举: 教工卡,身份证,护照和港澳台通行证 ),证件编号,工作单位(枚举,值可自定义),手机号,性别,[开户银行,银行卡号(这两个字段仅限证件类型不为教工卡的填写)],监考校区(枚举:思明校区,海韵校区,翔安校区),监考教师乘车地点(枚举,自定义几个值即可,权限监考翔安校区填写),去年是否参与过监考,监考科目 ID(监考科目在考试表中选择)

报名管理模块制作要求:

  1. 根据上述表和字段设计数据库及类;
  2. 根据上述字段设计word格式的报名表;
  3. 根据设计内容制作包含增删查改的报名管理模块;
  4. [提高要求]制作Excel导入和导出功能。

TIPS:

  1. 在制作报名模块时,需要用到的 考试表的记录 可以直接使用模拟数据;
  2. 使用到的监考科目,通过IExamService获取;
  3. 编写时,请尽可能的不要直接从数据库中读取考试/考场管理模块的数据。

自动排考/排考管理

在报名完成后,系统根据考试和报名相关内容进行排考,规则如下:

  1. 每个考场的两个监考尽可能性别不同;
  2. 每个考场的两个监考必须来自不同的部门;
  3. 每个考场的两个监考尽可能是老带新(即一个参加过去年的监考,一个没有参加过);
  4. 每个考场的两个监考必须不能是两个新老师(即两个老师都没有参加过去年的监考);
  5. 在无法分配时,必须显示考场无法分配的原因。

数据表如下: 考场分配表:分配记录ID,考试ID,考场ID,监考1报名ID,监考2报名ID,是否正确分配(枚举:正确分配,分配但有问题,无法分配),分配规则描述(字符串存一个JSON,表述无法分配时,是由于上述5条规则无法处理)

TIPS:

  1. 自动分配后,必须所有考试的所有考场都要包含,如果考场老师无法按照上述规则分配,则报名ID显示Guid.Empty,规则描述里写明违反哪些规则;
  2. 分配时,违反指明 必须 或者 必须不 的条目为 无法分配;
  3. 分配时,违反指明 尽可能 的条目为 分配但有问题;
  4. [提高]如果监考性别比例无法男女搭配,那么尽可能的让少的那种性别分开一些(比如,十个考场,只有5位男老师,那尽可能的让男老师在1,3,5,7,9号考场,而不是1,2,3,4,5号考场);
  5. 制作时,使用模拟数据;
  6. 所需要的数据请自行读取数据库。

最后,考场分配完需要使用可视化的界面显示。在可视化界面中,需要显示每个考场是否正确分配,需要可以查询到所有未分配的考场和所有有问题的考场。之后,管理员就应当可以使用可视化界面修改考场分配。 管理员界面修改分配后,需要按上述5条规则检查,但无论是必须必须不还是尽可能的条目,都视为尽可能。例如,管理员强行分配一个考场里有两个相同部门的老师,也可以通过,但界面显示时,要显示“分配但有问题”,并且列出问题原因是什么。 最后,应当可以导出考场分配的Excel[提高,Excel请自行设计]。

TIPS:

  1. 数据请读数据库;
  2. 请自行找一组做自动分配的。

排考管理/自动排考 后端开发

已完成:定义所有业务对象、生成所有数据库、定义部分api、实现部分增删改查

数据库

建库建表

Alt text

主项目添加对新建项目的引用

常用的程序包控制台指令:

  1. 业务迁移:add-migration <迁移的名字> -context NetContext 然后要更新数据库: Update-Database 移除程序包指令: Remove-Migration -context NetContext

架构

Models

业务对象,和数据库表一一对应,只需操作业务对象,即可对数据库进行操作

Dao

Repositories 里放了对所有数据库表的操作对象

Service

Controller

使用增加数据的api时,不能传ID,ID会自动生成,传了ID会不能正确地把请求体json转为对象。

业务梳理

增加Registion 增加ExamRoom 增加Exam

手动调整排考

PUT 修改排考,参数是两个老师的id 如果不满足”必须“的条件,调整失败 api定义:

手动调整排考成功后,需要前端重新查询

自动排考

Alt text Alt text 满足尽可能条件的;不满足尽可能条件的;不满足必须条件的;未分配监考人的

PUT 对所有数据进行自动排考,即生成或更新所有ExamRoomAllocation 已经写好了部分的规则判断(输入ExamRoomAllocation对象,输出bool) 可以有未分配的记录 (助教好像说可以动态规划之类的)演示时要说算法复杂度 最好有极端的测试数据

任务分配

1人基于以上分析和已有的代码做自动分配算法 1人进行postman之类的简单测试,有问题群里提 1人实现导出Excel,帮助测试,尝试解决bug

空文件

简介

取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
1
https://gitee.com/xmuzhj124/examination-scheduling.git
git@gitee.com:xmuzhj124/examination-scheduling.git
xmuzhj124
examination-scheduling
排考
master

搜索帮助