论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
应用中心
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
qidao123.com技术社区-IT企服评测·应用市场
»
论坛
›
软件与程序人生
›
云原生
›
【排课小工具】项目需求的搜集与整合
【排课小工具】项目需求的搜集与整合
用户国营
论坛元老
|
2024-5-18 14:26:32
|
显示全部楼层
|
阅读模式
楼主
主题
1732
|
帖子
1732
|
积分
5196
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
计划写一系列漫笔,记录一个工具软件的开发过程,这是第一篇漫笔,写本篇漫笔的初志是帮助我整理一下当前的需求详情,同时复习近来所需的软件工程相关知识,如果能对读者有所帮助,那算是这篇文章产生的额外价值了。需要注意的是,这不是一篇遵循尺度规格的需求文档,因为其中可能夹杂着知识注解和引用,以及个人观点。
背景信息
在小学练习期间(2024年3月1日 - 2024年7月10日),与老师的交流中发现,每当新学期开始都要人工排一次课表,并且这个过程较为繁琐,总是遇到教师课程冲突的状态,一旦发生这种情况,在重排的过程中就会影响到诸多已经排好的项目。如果能够解决上述排课冲突题目,那将会给排课老师带来极大的便利,这便是我着手开发这个小工具的初志。除此以外,在近来的软件设计师资格测验备考期间,较为全面但却相当浅薄的学习了软件工程相关知识,思量到使用工程化的方法流程解决该课题的过程会增进我的软件工程技能,这是我能坚持做这件事的原因。以上便是该项目的背景信息。
需求概述
该软件的定位是一个具有单一功能小工具,运行在单一用户的电脑上,在操作上,该用户通过某种方式输入课程相关数据,提交过后程序将全年级的课表以某种格式输出出来。排课效果应遵行基本的原则是一个教师不能在同一天的同一课次出现在两个或多个不同的班级,除此之外还有一些次要约束。用户期望每个班级的课表以一个带有指定样式的 Word 文件输出出来。用户希望该工具的操作界面应该尽可能简单,数据的输入可以在 Excel 表格中举行,输出的信息可以直接投入使用,而不必再次经过手工处置惩罚。
在与实际用户详细沟通需求之前,我已经交付了一个简陋的应用原型,该原型实现了用户所需的主要功能,在该原型下,用户的工作流是这样的:首先用户在一个 Excel 工作区中分别建立
课表模板
、
课程信息
、以及
职责分配信息
这三个表,完成上述表格的编辑后,打开软件将该 Excel 工作区导入,并选择课表的输出路径,其中一个可选项为是否在输出效果中显示每节课的教师名称,随后提交数据,程序输出一个 Excel 工作区,该工作区中包含所有班级的课表数据。
用户对此软件的使用工作流比较满意,在背面的交流中用户依旧表示可以继续沿用这种数据的输入与输出方式,在操作界面上不需要有过多的更改。经过进一步地沟通,现在基本上已经可以确定用户的需求有哪些:
界面需求
用户对于程序操作页面没有添加新的要求,所以可以延续原型的样子。
在输入上延续原始的输入方式,即用户在 Excel 工作区中编辑三个表,分别是课表模板表、课程信息表以及教师职责信息表。
模板信息表的第一行用来标注星期(从星期一到星期五),第一列用来标注上课的节次,在接下来的行和列中,空单元格预留给待分配的课表项目,将固定分配的课表项目填写到指定位置,这代表该年级中的每个班级都会在这个时刻上这节课,且不会出现课程冲突,这种固定项往往出现在天天的最后一节课或者每周的班会课。
课程信息表的第一行数据为四个课程属性:序号、课程名、每周上课次数以及优先级,其中优先级决定了那些学科分布在课表的前列,那些分布在后列。经过商议,该用户不需要编辑优先级这一列的值,因为一年级的课程信息几乎没有变动过,总是语文、数学以及科学占满了每个班级、每一天的前两节课,其余的科目不做过多的限定。所以在接下来的设计中不在提供给用户编辑优先级的接口。
教师职责信息表的第一行数据为课程信息数据,该行数据应该与课程信息表中的课程名信息保持一致,其实这两个表可以合并为一个表。第一列数据为班级,每个班级以及科目决定一位教师,这是这三个表中最为关键的一个表。
在输出上用户提出了新的需求。用户希望每个班级的课表输出在一个 Word 表格文件中,并且设置为指定的样式,这样就可以直接使用该输出效果打印每个班级的课表。该样式是这样的:
功能需求
编号
名称
说明
1
无时间冲突
在某一时刻(同一天的同一节次)一个教师不能被分配到两个或两个以上不同的班级
2
分级添补
高优先级的科目应尽可能添补课表的前半部门,低优先级的科目只有在高优先级科目分配完成后前半部门依旧存在空缺的情况下才能分配到前半部门
3
完备性检测
要确保所有教师负责的科目的总节次的数量等于全年级课表可分配节次的总数。同时每个班级各个科目被分配的相应课程的节次总数等于课程信息表中指定的次数。
4
非连续性分配
不能让同一个班级在同一天中连续上同一个学科的课程
5
均匀分配
同一学科的课程应尽可能均摊到每一天中
总结
除了上述界面需求以及功能需求外,用户在性能、文档、安全保密、可靠性以及其他非功能需求上没有做要求,所以我自然不必在这些需求上投入过多的时间和精力。在已经开发完成的原型程序中,已经实现了上述功能需求中的第 1,4,5 条,可是代码相适时人难以直视。焦点文件是一个 python 单文件,GUI 使用 QT 构建,终极形成的竟然是一个超过 44M 的可执行文件。暂且不谈这个程序的臃肿程度,在我的焦点代码中,使用的 for 循环层数达到了 4 层,我希望接下来能够找到一种实用于课表的数据结构以及算法来缓解这种题目。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
用户国营
论坛元老
这个人很懒什么都没写!
楼主热帖
Beta 阶段事后分析
iOS全埋点解决方案-APP和H5打通 ...
Android studio实现网上订餐app
Ubuntu22.04+ROS2中实现Moveit2控制gaz ...
一键设置 Docker 环境:具体指南与最佳 ...
完整版彻底卸载SQL Server2019
mysql主从搭建
分布式锁
复杂「场景」数据导入导出
【云原生】-如何搭建配置Docker私有仓 ...
标签云
渠道
国产数据库
集成商
AI
运维
CIO
存储
服务器
浏览过的版块
人工智能
linux
MES
快速回复
返回顶部
返回列表