《太原理工大学软件工程实验报告资料.docx》由会员分享,可在线阅读,更多相关《太原理工大学软件工程实验报告资料.docx(20页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、本科实验报告 课程名称: 软件工程导论 实验项目: 教务管理系统之子系统 学院课程安排报告 实验地点: 专业班级: 学号: 学生姓名: 指导教师: 2015 年 5 月 15 日项目说明 教务管理系统之子系统 学院课程安排1 系统简介每个学期的期中,学校教务处会分类向各个学院发出下各学期的教学计划,包括课程名称、课程代码、课时、班级类别(本科、专科、成人教育、研究生)、班号等;学院教学主管人员根据教学任务要求给出各门课程的相关限制(如:任课教师的职称、上课的班数、最高和最低周学时数等);任课教师自报本人授课计划,经所在教研室协调任可,将教学计划上交学院主管教学计划的人员,批准后上报学校教务处,
2、最终由教务处给出下个学期全学院教师的教学任务书。假设上述排课过程全部由人工操作,现要求为上述过程实现计算机自动处理过程。2 限定条件( 1 )原则上,每位教师每学期主讲的课程门数不超过 2 门。( 2 )严格限制:每位教师每年教学工作量不得低于 300 ,不得超过 600 。( 3 )本学期出现严重教学事故的教师不能承担下各学期的主讲任务。( 4 )本系统的输入项至少包括:教务处布置的教学计划和工作量计算子系统、学院教师自报的授课计划和学院制定的有关授课限制条件。( 5 )本系统的输出项至少包括:教务处最终下达全院教师的教学任务书和学院各个班级下各学期的课程表(可以不含上课地点)。附工作量计算
3、子系统中的课堂教学工作量计算方法(简化计算):1 单班课 计划学时 *1.0 双班课 计划学时 *1.3 三班课 计划学时 *1.6 四班课 计划学时 *2.02 双语教学 计划学时 * 合班系数 *2.03 精品课程 国家级精品课程 计划学时 * 合班系数 *1.5 省级精品课程 计划学时 * 合班系数 *1.1软件需求分析1 任务概述1.1 目标: 根据输入的各类信息及限制条件,给出教学任务书。 1.2 运行环境: win7 系统, java 语言, SQL 数据库。1.3 条件与约束:( 1 )原则上,每位教师每学期主讲的课程门数不超过 2 门。( 2 )严格限制:每位教师每年教学工作量
4、不得低于 300 ,不得超过 600 。( 3 )本学期出现严重教学事故的教师不能承担下各学期的主讲任务。1.4 功能描述: 教务计划的录入,任课教师信息上传与查看,根据输入的数据与限制条件给出教学任务书。2 数据描述2.1 输入输出: 输入项至少包括:教务处布置的教学计划和工作量计算子系统、学院教师自报的授课计划和学院制定的有关授课限制条件,输出项至少包括:教务处最终下达全院教师的教学任务书和学院各个班级下各学期的课程表(可以不含上课地点)。2.2 数据流图: ( a )顶层数据流图( b ) 0 层数据流图( c ) 1 层数据流图2.3 数据字典(1) 数据流条目 相关限制 = 任课教师
5、的职称 + 上课的班数 + 最高周学时数 + 最低周学时数 任课教师的职称 = 教授 + 研究生 教学计划 = 课程名称 + 课程代码 + 课时 + 班级类别 + 班号 + 计划学时 + 合班系数 班级类别 = 本科 + 专科 + 成人教育 + 研究生 授课计划 = 课程名称 + 班级类别 + 班号 教学任务书 = 课程名称 + 课程代码 + 课时 + 班级类别 + 班号 课表 = 课程名称 + 课程代码 + 课时 + 班级类别 + 班号 教学任务 = 课程名称 + 课程代码 + 课时 + 班级类别 + 班号 合格名单 = 课程名称 + 课程代码 + 课时 + 班级类别 + 班号 已通过计划
6、= 教工号 + 课程名称 + 课程代码 + 课时 + 班级类别 + 班号 未通过人员 = 教工号 通过名单 = 教工号 + 课程名称 + 课程代码 + 课时 + 班级类别 + 班号(2) 数据存储条目 文件名:课程信息 组成:教工号 + 课程名称 + 课程代码 + 课时 + 班级类别 + 班号 + 限制条件 + 计划学时 + 合班系数 + 已被选择 | 未被选择 + 通过 | 未通过 组织方式:索引文件,以课程代码为关键 文件名:教学任务书 组成:教工号 + 课程名称 + 课程代码 + 课时 + 班级类别 + 班号 + 计划学时 + 合班系数 组织方式:索引文件,以课程代码为关键 文件名:学生
7、信息 组成:学号 + 班号 + 密码 组织方式:索引文件,以学号为关键 文件名:老师信息 组成:教工号 + 密码 + 授课计划是否通过限定条件 + 是否出现严重教学事故 组织方式:索引文件,以教工号为关键 文件名:人员信息 组成:教务号 + 密码 组织方式:索引文件,以教务号为关键(3) 数据项 课程名称:别名:无 类型:字符型 长度: 2 汉字 15 课程代码:别名:无 类型:整型 长度: 5 位 课时:别名:无 类型:整型 长度: 2 位(4) 加工条目 加工名:教务管理系统 编号:无 输入:授课计划,教学计划,限制条件 输出:教学任务书,课表 加工名:录入储存处理 编号: 1 输入:相关
8、限制,教学计划 加工逻辑:将审查通过的教学计划添加相关限制,放入课程信息中 加工名:学生查询 编号: 2 输入:学生信息 输出:课表 加工逻辑: If 是学生 Then 将教学任务书改为课表 Else 退出 加工名: 编号: 3 输入:授课计划、老师信息 加工逻辑: if 合格 根据设定的条件判断是否满足为合格计划 加工名:限定条件 编号: 3 输入:授课计划、老师信息 加工逻辑: If 合格 Then 修改课程信息 Else 修改老师信息为授课计划未通过限定条件 加工名:老师查询 编号: 4 输入:教工号 输出:教学任务 加工逻辑: If 是老师 Then 根据教学计划书给出教学任务 Els
9、e 退出 加工名:教务处 编号: 5 输入:教务号 输出:教学任务书 加工逻辑: if 是教务人员 Then if 审核通过 Then 下达教学计划书 Else 修改课程信息 Else 退出 加工名:审查 编号: 1.1 输入:教学计划 输出:合格名单 加工逻辑:将满足计划的课程变为名单 加工名:再次审查 编号: 1.2 输入:合格名单 输出:课程信息 加工逻辑:查看相应教学计划是否添加了限制 加工名:有效性检查 编号: 2.1 输入:学号 输出:有效查询 加工逻辑:检查输入的学号是否有密码对应 加工名:排课系统 编号: 2.2 输入:教学任务书 输出:课表 加工逻辑:将教学任务书根据班号划分
10、课程为课表 加工名:是否满足条件 编号: 3.1 输入:授课计划、教师信息 输出:已通过的计划、未通过的人员 加工逻辑: if 满足条件 Then 输出已通过的计划 Else 输出未通过的人员 加工名:更新信息 编号: 3.2 输入:已通过的计划、未通过的人员 输出: 课程信息 | 未通过人员 加工逻辑: if 是计划 Then 修改课程信息 Else 修改教师信息为授课计划未通过限定条件 加工名:检查 编号: 4.2 输入:教工号 输出:有效值 加工逻辑:检查输入的教工号是否有密码对应 加工名:查询 编号: 4.2 输入:课程信息和教学任务书 输出:教学任务 加工逻辑:根据课程信息和教学任务
11、书查看教学任务 加工名:审核 编号: 5.1 输入:教务号 输出:有效值 加工逻辑:检查输入的教务号是否有密码对应 加工名:审计 编号: 5.2 输入:有效值,课程信息 输出:通过名单 加工逻辑:判断课程是否可以通过,给出通过名单 加工名:更新信息 编号: 5.3 输入:通过名单 输出:课程信息、教学任务书 加工逻辑:修改课程信息是否通过并给出教学任务书3 数据库描述 采用 SQL 数据库,信息放在服务器端数据库中,各种用户根据权限不同登陆系统,进行相关操作。4 其他需求 接口需求:用户接口需求,软件接口需求。 用户界面需求:相对简洁易懂,好操作。 软件总体设计要求从需求分析的数据流图导出系统
12、结构图,并进行优化,画出系统的软件结构图。部分部分部分部分部分软件详细设计1. 设计部分:是否满足条件算法名称 CON对 A 部分细化为If y 为单班课 x=x+a*1If y 为双班课 x=x+a*1.3If y 为三班课 x=x+a*1.6If y 为四班课 x=x+a*2.0If y 为双语教学 x=x+a*2.0If y 为国家级精品课程 x=x+a*b*1.5If y 为省级精品课程 x=x+a*b*1.1Return x功能:判断老师提交的授课计划是否满足条件输入:授课计划和老师信息 老师 主讲的课程门数 的课程为 z 老师 出现严重教学事故 c=1 老师未出现严重教学事故 c=
13、0 班级类别为 y 计划学时为 a 合班系数为 b输出:已通过的计划输入到课程信息 未通过的人员输入到教师信息2. 设计部分:有效性检查算法名称 check1功能:判断学生输入的账号输入:学生账号和学生信息 a 为输入的账号 b 数据库中保存的学生账号 C 为输入的密码 d 数据库中保存的账号密码输出:有效信息到排课系统 无效输入则退出系统附 1 的部分代码package 详细设计代码;public class Test public static void main(String args) int i=0,x=0; if ( z =2)i+; if (300= A =600)i+; if
14、( c =0)i+; if ( i=3 )System. out .println( pass ); else System. out .println( nopass ); 软件测试1. 单元测试(白盒测试) 第一个大模块: 1.1 审查: 测试用例:课程名称 + 课程代码 + 课时 + 班级类别 + 班号 + 计划学时 + 合班系数 依次去掉各项输入,第一轮去掉一个,第二轮去掉两个,以此类推。 1.2 再次审查: 测试用例:任课教师的职称 + 上课的班数 + 最高周学时数 + 最低周学时数 依次去掉各项输入,第一轮去掉一个,第二轮去掉两个,以此类推。 第二个大模块: 2.1 有效性检查 测
15、试用例:学号 + 密码 学号(是否存在) 密码(是否正确) 2.2 排课系统 测试用例:学号 + 课程名称 + 课程代码 + 课时 + 班级类别 + 班号 依次去掉各项输入,第一轮去掉一个,第二轮去掉两个,以此类推。 第三个大模块: 3.1 是否满足条件 测试用例: Z 2 300 A 600 C=0 Z 2 300 A 600 C=0 Z 2 A 300 或 A 600 C=0 Z 2 300 A 600 C 0 Z 2 A 300 或 A 600 C=0 Z 2 A 300 或 A 600 C 0 Z 2 300 A 600 C 0 Z 2 A 300 或 A 600 C 0 3.2 更新
16、信息 测试用例:教工号 + 课程名称 + 课程代码 + 课时 + 班级类别 + 班号 依次去掉各项输入,第一轮去掉一个,第二轮去掉两个,以此类推。 第四个大模块: 4.1 检查 测试用例:教工号 + 密码 教工号(是否存在) 密码(是否正确) 4.2 查询 测试用例: 教工号 + 课程名称 + 课程代码 + 课时 + 班级类别 + 班号 + 限制条件 + 计划学时 + 合班系数 + 已被选择 | 未被选择 + 通过 | 未通过 依次去掉各项输入,第一轮去掉一个,第二轮去掉两个,以此类推。 第五个大模块: 测试用例: 5.1 审核 测试用例:教务号 + 密码 教务号(是否存在) 密码(是否正确)
17、 5.2 审计 测试用例:教工号 + 课程名称 + 课程代码 + 课时 + 班级类别 + 班号 + 限制条件 + 计划学时 + 合班系数 + 已被选择 | 未被选择 + 通过 | 未通过 依次去掉各项输入,第一轮去掉一个,第二轮去掉两个,以此类推。 5.3 更新信息 测试用例:教工号 + 课程名称 + 课程代码 + 课时 + 班级类别 + 班号 依次去掉各项输入,第一轮去掉一个,第二轮去掉两个,以此类推。2. 集成测试 ( 黑盒测试 ) 利用自底向上集成方法,根据功能划分简略的示意图 3. 确认测试(黑盒测试) 由专门的测试人员和用户参加进行测试。4. 系统测试 验证功能是否满足需求,考虑安全性,可靠性,性能等多方面因素。实验心得: 花了很多时间去参考书上和网上的例子,最终选定用面向过程的方法来做项目,前期花了很多时间画图,初步构建了一个项目的模型出来,然而其实只是简单的做了做,因为 sql 才刚开设课程,只能实现部分的代码编写,自己还有很多需要学习的地方。如果有机会下次要试试用面向对象的方法,用 UML 来做做项目,增强自己的能力。
限制150内