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