详细设计说明书
1引言
1.1编写目的
为了方便本系统的使用者和软件开发者双方对该软件的出示规定有一个共同的理解,使之成为整个开发工作的基础、明确系统需要实现的功能、明确需求边界,特编辑此文档。本文档一经确认,将成为系统开发人员进行开发及用户对系统验收的依据。
本文描述了自动排课系统的系统结构,分析本项目的各模块,主要叙述了这个模块的功能、性能和结构等方面,明确了接口、类、属性、方法等设计要素。
1.2背景
- 待开发的软件系统的名称:自动排课系统。
- 本项目由东北林业大学教务处提出,指派给农信吴彦祖进行开发,主要是针对各大高校教务排课使用。
- 本项目采用客户机/服务器原理,客户端程序是建立在Windows xp系统及以上,以Visual Studio 2019,SQL SERVER为开发工具和数据库
- 。
1.3定义
C#:开发编程语言
SQL SEREVER:系统服务器所使用的数据库关系系统(DBMS)
SQL:一种用于访问查询数据库的语言
事务流:数据进入模块后可能有多种路径进行处理。
主键:数据库表中的关键域。值相互不同。
外部主键:数据库表中与其他主键关联的域。
ROLLBACK:数据库的错误恢复机制。
缩写:
系统:自动排课系统。
SQL:结构化查询语言。
ATM:异步传输模式。
UML:统一建模语言、是一套用来设计软件蓝图的标准建模语言,是一种从软件分析、设计到编写程序规范的标准化建模语言。
UDP:无连接的传输层协议。
分布式代理:可隐藏服务器ip,减少服务器危险;
服务器代理:可验证用户数据的正确性,以及安全性,进行处理
三级代理:减轻服务器压力。
1.4参考资料
(1)王先国等.软件工程实践教程.北京:电子工业出版社,2010
(2)李龙澎.软件工程课程设计.北京:机械工业出版社,2010
(3)张海藩.软件工程导论.北京:清华大学出版社,2008
2程序系统的结构
教务管理员模块
教务管理员拥有最高权限,是该系统的admin,拥有专业、教师、课表、个人信息等多方面管理,具体如图3.1所示。
教师模块
作为教务管理员逻辑意义上的下级,教师也能实现线上排课条件删选后排课,也能对自身信息进行修改,具体如图3.2所示。
教师用例图
3程序1(标识符)设计说明
3.1程序描述
学校自动排课系统采用B/S架构,SQL SERVER为后台数据库,采用计算机对专业信息,教师信息,排课条件,课表信息等进行实时管理,进一步完善学校教务对学生课程方面的管理。帮助教务管理员和教师提高日常办公效率,将更多的时间用在学生知识教育上,该系统实现从开设新专业,开设新教学任务,加入排课系统并自动排序(或人工手动),到最后的课表导出的一体化流程。为了促使该系统在教务日常排课管理工作中发挥更大的作用,合理实现管理流程中体现计算机信息化服务水准,提高教务水平和工作质量
3.2功能
3.3性能
响应时间:任何系统操作时间响应时间<0.5s
运行时间:全天候在线,7天*24小时。
数据转换与传输:系统可满足同时在线人数>3000人的情况
提示信息:系统将在用户操作后0.5s之内作出响应
语言适应性:软件支持中文和英文两种显示界面
可扩展适应性:如果时间允许或用户需求,开发人员将在该模块上实现更多的功能,并且能和原模块良好兼容
3.4输人项
标识 | 数据类型 | 长度 | 输入方式 | 安全保密 | |
账号 | txtCardNo | Char | 10 | 键盘输入 | 中 |
密码 | txtCardNo | Char | 10 | 键盘输入 | 中 |
3.5输出项
名称 | 标识 | 数据类型 | 长度 | 输入方式 | 安全保密 |
学号 | txtSID | Char | 10 | 自动 | 中 |
院系 | txtDept | Char | 10 | 自动 | 中 |
类型 | txtType | Char | 5 | 自动 | 中 |
课程 | txtCourse | Char | 5 | 自动 | 中 |
姓名 | txtName | Char | 5 | 自动 | 中 |
开课日期 | txtOnDate | Date | 12 | 自动 | 中 |
结课日期 | txtOffDate | Date | 12 | 自动 | 中 |
上课时间 | txtOnTime | Date | 12 | 自动 | 中 |
下课时间 | txtOffTime | Date | 12 | 自动 | 中 |
3.6算法
算法思想介绍:
1.当前课程:对教师获得一个4*5的时间空闲矩阵,对专业年级获得一个4*5的时间空闲矩阵。
2.然后进行或操作,空闲的地方就可以进行课程安排,如果空闲地方不足安排课程,那么就判断为自动排课失败。
3.对于时间空闲矩阵需要考虑禁忌排课条件和自身的已经排课的条件。
具体操作实现:
先获得周次,先判断周次是否合适,zc1为待判断周次,zc2为忙碌周次,如果周次不相交,就是可以排课,那么久返回ture。
再产生教师时间空闲表,教师时间空闲表是一个4*5的时间空闲表,0表示空闲,1表示不空闲,刚开始时初始化都是空闲,首先考虑教师自身禁忌排课的条件,tabootype为条件类型,0是教师条件,1是专业条件,shenhe为审核条件,0表示未审核,1表示审核通过,2表示审核未通过,如果周次安排不上,则为忙碌,然后再考虑已排课程,如果周次安排不上,则为忙碌,返回时间空闲表。
产生专业年级空闲表,首先考虑教师自身禁忌排课条件,再考虑已排课程,然后返回时间空闲表。
再进行教师空闲表和专业年级空闲表或操作,返回空闲时间表。
安排上课次数,按照匹配优先法则,越靠前越优先,例如周安排次数3中1-3-5的星期一排在前面就优先安排,将课程taskid安排在table里面,每周上课time次,成功就返回true。
然后进行自动排课,首先清空原课表,查看教学任务的专业和年级,进行排课,课程的优先顺序为专业必修、准予限选、专业任选,然后逐门安排上课时间,对教师获得一个4*5的时间空闲矩阵,对专业年级获得一个4*5的时间空闲矩阵,然后进行或操作,空闲的地方就可以进行课程安排,如果空闲地方不足安排课程,那么就判断为自动排课失败。
3.7流程逻辑
3.8接口
3.9存储分配
名称 | 标识 | 数据类型 | 长度 |
学号 | txtSID | Char | 10 |
院系 | txtDept | Char | 10 |
类型 | txtType | Char | 5 |
课程 | txtCourse | Char | 5 |
姓名 | txtName | Char | 5 |
开课日期 | txtOnDate | Date | 12 |
结课日期 | txtOffDate | Date | 12 |
上课时间 | txtOnTime | Date | 12 |
下课时间 | txtOffTime | Date | 12 |
3.10注释设计
说明准备在本程序中安排的注释,如:
- 加在模块首部的注释;
- 加在各分枝点处的注释;
- 对各变量的功能、范围、缺省条件等所加的注释;
- 对使用的逻辑所加的注释等等。
3.11限制条件
(1)专业基础知识不牢固:
本次项目开发过程中涉及的知识较多,给项目开发人员带来一定的困难
解决方案:进行相应的培训
(2)经验欠缺:
成员开发经验不足,使项目质量难以保证
解决方案:不断实践
(3)软件性能的影响:
本次开发过程中部分软件可能容易出现死机现象
解决方案:选择合适的软件,搭建良好的配置开发环境
主要问题:
- 没有经费和硬件设施有限
- 用户需求不清,存在误解二义性
- 第一次开发软件,开发人员没有实际经验
- 时间有限,没有足够的开发时间
3.12测试计划
测试用例:选取有代表性的数据,避免使用穷举法
测试方法:使用白盒测试发,语句覆盖、判定覆盖、条件覆盖等操作。
3.13尚未解决的问题
说明在本程序的设计中尚未解决而设计者认为在软件完成之前应解决的问题。
4程序2(标识符)设计说明
用类似F.3的方式,说明第2个程序乃至第N个程序的设计考虑。
......