排课系统毕业设计文档说明2资料.docx
- 文档编号:24520329
- 上传时间:2023-05-28
- 格式:DOCX
- 页数:26
- 大小:768.06KB
排课系统毕业设计文档说明2资料.docx
《排课系统毕业设计文档说明2资料.docx》由会员分享,可在线阅读,更多相关《排课系统毕业设计文档说明2资料.docx(26页珍藏版)》请在冰豆网上搜索。
排课系统毕业设计文档说明2资料
1绪论
随着计算机网络的兴起,人们更倾向使用通过网络来获取信息。
针对这一点,故本系统采用B/S架构,让用户在实用性与视觉上有更好的享受,操作更加便捷。
用户只须遵照一定的数据录入规范,就可以实现课程选择、教学安排、自动排课与课表结果显示。
从而完成课程教务管理系统的总体功能。
1.1系统开发的设想目标
1.学生端登录课程教务管理系统查询本班的课表,查询空闲教室作为自习室。
2.普通教师登录课程教务管理系统,选择自己所教授的专业课;向教务管理员提交空闲教室申请,作为临时教学的安排。
3.系教学负责人的职责是为每个班安排课程、授课教师;及修改班级课程、授课教师的教学安排。
4.教务管理员将各个系的教学计划进行汇总,进行排课,安排适当的教室。
排课后的结果以课表形式显示;供教师、学生查看自己的课表或查看教室以便利用于自习或临时的教学安排。
1.2系统开发的意义
该系统是针对减轻各学院、学校的教学工作任务量为目标,让广大教学计划负责人从烦重的的教学安排中获得放松。
1.3设计作品研究的主要内容
本作品的研究方向主要集中于让教师更方便的选课,教学负责人能以更高的效率安排班级的课程,任课教师。
教务管理员能以更快速的方法为班级的课程安排上课时间、地点,更加充分利用教室。
以减少大量的人力、物力。
1.4本章小结
指出开发课程教务管理系统的目标,为缓解教学计划人员工作量与提高工作效率而开发此系统。
2需求分析
由于该课程教务管理系统面对的使用对象是学院及别的,规模不是太大故我采用的是极限编程的思路,只注重程序的最终结果而缺少一些条条框框的的说明性文字。
我觉得这样有助于我的编程速度,并且能很快进入下一个迭代。
所以我选择了极限编程。
2.1系统开发环境
(1)网站开发环境
网站开发环境:
MicrosoftVisualStudio2010集成开发环境。
网站开发语言:
VisualStudio2010中的C#语言。
网站后台数据库:
SQLServer2008。
开发环境运行平台:
Windows7以上操作系统。
(2)服务器端
操作系统:
Windows7以上操作系统。
Web服务器:
Internet信息服务(IIS)管理器。
浏览器:
IE11以上。
(3)客户端
浏览器:
InternetExplorer11。
2.2系统流程图
系统流程图讲解了整个系统的运行的三个模块,学生模块、教师模块、教务管理员模块。
采用系统流程图便于梳理整个系统的运行流程。
如图2-1所示。
2.3数据流图实例(DFD)
数据流图讲述了对数据处理环节。
以该课程教务管理系统为例。
(1)激活学生或教师要想使用系统必须先进行激活,此时数据操作是更新学生表或教师表的信息。
(2)选课与教学安排首先由每个系的教学负责人从学院的总专业课表里选取本系所要开设的课程。
然后隶属该系的教师根据本系开设的课程选择自己所教的课程。
教师选择好所教授的课程后。
教学负责人再安排班级的课程与任课教师。
(3)安排上课地点每个系的教务负责人将教学安排提交给教务管理员后,教务管理员安排每个班的上课地点及时间。
图2-2与图2-3分别给出学生与教师激活账号与登录的流程。
图2-2学生或教师激活账号的流程图
图2-3用户进入系统的流程图
图2-4给出教师选课、教学负责人安排教学计划、教务管理员负责安排课表的流程。
图2-4安排课表总流程图
2.3系统简介与功能简介
2.3.1系统简介
1.学生端登录课程教务管理系统查询本班的课表,查询空闲教室作为自习室。
2.普通教师登录课程教务管理系统,选择自己所教的专业课。
向教务管理员提交空闲教室申请,作为临时教学的安排。
3.系教学负责人为每个班安排课程、授课教师。
也可修改班级课程、更换上课教师。
4.教务管理员将各个系的教学计划进行汇总,进行排课,安排适当的教室。
以供教师、学生查看自己的课表。
查看教室以便利用于自习或临时的教学安排。
2.3.2设想中的系统各功能模块说明
本款课程教务管理系统有三个模块。
1.教务管理员模块:
实现的功能有学院总课程的导入、学生信息的导入、教师信息的导入及删改查。
完成教学排课后,学生、教师能够查看自己的课表了解上课的时间地点,教师与学生还可查看教室,以便学生能找到空余的教室作为自习室。
教师查询空余的教室向教务和教务管理员提出申请,以作临时教学安排。
2.教师模块
教师模块又有两个子模块,一个普通教师、一个是每个系的教学负责人。
系教学负责人:
从学院的总课表里选择自己本专业的课程,以供每个系的教师选择。
同时负责为每个班级安排课程及授课教师。
班级的课程及授课教师安排完成后还可以进行修改,删除,查询。
普通教师:
够查看自己的课程信息,从学院的课表选择自己要教的课程,查询自己的课表;向教务管理员申请教室作为临时教学安排。
3.学生模块
学生能够查看自己的课程信息,查看教室的空缺情况,作为自己上自习的地方。
亦可进行自己的信息查看、修改。
2.4本章小结
通过系统流程图和数据流图对课程管理系统要实现的功能进行了系统需求分析。
3数据库部分的设计
3.1数据库需求分析
根据课程教务管理系统功能,得出如下需求信息。
1.本系统是针对院级课程的教务管理。
2.教师能够选课且能查看课表。
3.学生能查看本班的课表。
4.系教学负责人能对班级进行教学计划的安排,包括安排课程与授课教师。
5.教务管理员根据教学计划安排教室及上课时间,以供学生、教师查看课表。
3.2数据库概念设计
对课程教务管理系统流程图和数据流图的分析及数据库需求分析,确立该系统所需要的数据库实体对象分别为“学生”,“教师”,“系教学负责人”,“班级”,“课程”,“教务管理员”。
(1)班级与学生的实体联系E-R图,如图3-1所示。
显示每个同学的归属情况。
图3-1班级与学生的实体联系E-R图
(2)教师与课程的实体联系E-R图,指明教师所教授的课程,如图3-2所示。
图3-2教师与课程的实体联系E-R图
(3)系教学负责人与班级的实体联系E-R图,如图3-3所示。
每个系的负责人为班级安排课程与授课教师。
图3-3系教学负责人与班级的实体联系E-R图
(4)教务管理员与班级的实体联系E-R图,如图3-4所示。
教务管理员安排所有班级上课地点及时间。
(5)学生、班级、教师、课程、系教学负责人、教务管理员之间的E-R联系关系,如图3-5所示。
指明教务管理员要想安排班级的上课时间及地点,每个系的教学负责人必须先将每个班的课程及每门课的任课教师提交到教务管理员那里。
3.3数据库逻辑结构设计
在设计完数据库实体E-R图之后,需要根据实体E-R图设计数据表结构。
下面的表是后台数据库用到的表。
1.major(学院表)记录学院的编号及名称,如图3-6所示。
图3-6学院表
2.majorCourse(专业课程表)记录整个学院开设的课程。
专业课程表的属性包括专业编号、专业名称、总学时,周数,学分,有无实验课。
如图3-7所示。
图3-7专业课程表
3.majorCourseClassify(系课程表)记录每个系的课程,包括课程编号与名称。
如图3-8所示。
图3-8系课程表
3.student_Info(学生表)记录学生的身份信息,如图3-9所示。
学生的属性有学号、姓名、性别、出生日期、电话号码,邮箱,家庭住址。
图3-9学生表
4.teacher_Info(教师表)记录教师的身份信息,如图3-10所示。
教师的属性有编号、姓名、性别、出生日期、电话号码,邮箱,家庭住址。
图3-10教师表
5.administer(教务管理员表)记录教务管理员身份信息,如图3-11所示。
图3-11教务管理员表
6.majorCourseClassify(系课表)记录每个系开设的课程,如图3-12所示。
图3-12系课表
7.classInfo(班级表)记录班级信息,包括班级编号、名称、人数及隶属系如图3-13所示。
图3-13班级表
8.cls_course(班级课表)记录班级课程表,如图3-14所示。
图3-14班级课表
9.teach_course(教师课程表)记录教师的课程,如图3-15所示。
图3-15教师课程表
10.tblTeacherStudentCourse(班级教学表)记录班级的课程与任课教师之间的对应关系,如图3-16所示。
图3-16班级教学表
11.schOfInfScienceAndEngineeringExperimentalBuilding(实验教学楼信息表)记录学院实验楼的信息,如图3-17所示。
图3-17实验教学楼信息表
12.schOfInfScienceAndEngineeringExperimentalBuildingUsing(班级实验课表)记录班级实验课的上课地点与时间,如图3-18所示。
图3-18班级实验课表
13.schOfInfScienceAndEngineeringAcademicBuildingInfo(学院教学楼信息表)记录学院教学楼的信息,如图3-19所示。
图3-19院教学楼信息表
14.schOfInfScienceAndEngineeringAcademicBuildingUsing(班级专业课表)记录班级专业课的上课地点及上课时间。
如图3-20所示。
图3-20班级专业课表
3.4本章小结
该章阐述课程教务管理系统后台数据库的概念设计和逻辑结构的设计的实现。
数据库的概念设计部分画出了各个实体间联系的E—R图,逻辑结构的设计将E-R图实例对象转化为表结构。
4系统设计及其实现
系统使用说明对于使用者来说是非常重要的,系统使用说明书详细介绍了系统的主要功能,并让用户快速了解该系统的主要功能,从而熟悉运用。
故本章挑出本系统几个重要的逻辑模块进行功能的介绍。
系统主要框架如图4-1所示。
图4-1系统主要框架
4.1登录模块
1.登录界面,用户在使用系统前先判断用户的身份,从而进入不同的页面进行不同权限的操作。
如图4-2所示。
图4-2登录界面
4.2教学安排模块
1.教务管理员界面,完成本学院总课程的上传与修改。
如图4-3所示,
上传学院的总专业课
图4-3上传专业课界面
这是教务管理员在上传总课程后对课程的修改。
如图4-4所示。
图4-4修改专业课界面
2.系教学负责人与普通教师共用一个选课界面。
在教务管理员将总课程上传以后,系教学负责人选择本系开设的课程,然后每个系的教师根据自己教授的课程,进行课程选择。
如图4-5所示。
图4-5选课界面
3.班级课程安排界面,系教学负责人为每个班级安排课程。
如图4-6所示。
图4-6班级课程安排界面
4.班级课程删除界面。
如果班级要上的课选错,教学负责人可以将班级错选的课程删除掉。
如图4-7所示。
图4-7课程删除界面
5.班级安排任课教师界面,系教学负责人为每个班级的每门课程安排授课教师。
如图4-8所示。
图4-8安排任课教师界面
6.修改班级课程的任教教师界面。
若因突发情况的上某课的教师不能来上某个班的课,可修改上这门课的教师。
如图4-9所示。
图4-9修改任课教师界面
4.3课表显示模块
课表显示页面。
在教务管理员进行排课操作以后,能显示班级及教师的上课地点,上课时间,及教室的使用情况。
如图4-10所示。
图4-10课表显示页面
排课的算法思路:
将待排课班级的课程以教室的空闲时段为基点进行教室安排。
每个教室星期一至星期五正好有20个空闲时段,一个空闲时段2个课时,故按如下规律进行安排。
1、3、5早上第1节,2、4下午第3节为第一个规律
1、3、5下午第3节,2、4下午第1节为第二个规律
1、3、5早上第2节,2、4下午第4节为第三个规律
1、3、5下午第4节,2、4下午第2节为第四个规律
完成四个规律为教室的一个生命周期,接着又对下一个教室进行这四个规律的操作。
直至所有班级的课程排完算法结束。
代码请见附录。
4.4本章小结
经过从需求分析到体系结构设计再到编码,真是一个很辛苦的过程。
以上测试的是系统的主要功能,均可正常运行。
至此开发也算基本完成。
5总结
系统开发之前我曾进行过几次分析,本以为不会太难,可在自己亲自动手的时候发现真的有许多难点。
接下来我将一一阐述这次我在开发过程遇到的难点,与获得的收获。
注册模块,要实现一个注册界面完成学生与教师两重身份的辩识并将激活信息注入相应的后台数据库表。
登录模块,当用户的用户名有误或密码有误时,进行对应的提示。
教师选课与系教学负责人选课亦是同一个界面,程序进行权限识别分别进行数据回显。
当是系教学负责人显示院系所有的课程,系教学负责人选择本系的课程。
当是普通教师时显示本系的课程以供选择。
进行公共课程教师安排与班级合班亦是一个难点,既要显示教师同时也要显示要合班而上的班级,增、删、改时还要注意控件的隐藏与显示,逻辑判断也有点复杂。
不过最为复杂的当属排课算法。
第一步先进行选排的是班级的专业课,它以学院的专业教学楼教室为基准,按照1、3、5早上第1节,2、4下午第3节为第一个规律,1、3、5下午第3节,2、4下午第1节为第二个规律,1、3、5早上第2节,2、4下午第4节为第三个规律,1、3、5下午第4节,2、4下午第2节为第四个规律进行选排。
1个节次两个课时。
以便让其后的实验课尽量处于文化课的后面。
达到先理论后实践的目的。
同时再排的过程中还要判断教师课程的冲突性,若冲突标记位向后移以错开冲突时间。
四个规律走完一圈后教室的20个空缺基本被使用。
直到所有班级的课程已安排好上课教室后,退出班级的专业课算法。
第二步实验课排法,也以教室为基点查看班级及教师在那个时段是否有空,并且能够实现教室的单双周利用。
第三步公共课排法,也以教室为基点查看班级及教师在那个时段是否有空,并且能够让合班的班级安排在同一个时间同一间教室上课。
进行以上三个算法,就可以查看班级的课表,教师的课表,教室的使用表。
这次毕业设计给我最大的收获是体验到算法的重要性,因为算法的设计我进行了三次更改,因为前两次虽然代码冗长,可排课的效果很差,常常会出现教师的课程的冲突性与班级上课时间的冲突性。
改进后虽然代码大大减少可功能更完善,在录入的数据没有问题的情况下,基本上没有教师班级教学时间上的冲突。
完成这次设计后我深感自己的无知,以后会更加加强自己对算法的学习与掌握。
6参考文献
[1]刘志成,宁云智.数据库系统原理与应用(SQLServer2005)[M].北京:
机械工业出版社.2010年.
[2]赵荣娇,任建智.超实用的CSS代码段[M].北京:
电子工业出版社.2014年.
[3]李振,郭旭辉.ASP.NET编程从基础到应用[M].北京:
清华大学出版社.2014年.
[4]博客园.ASP.NET中Repeater嵌套.
7附录
专业课的部分排课算法代码如下:
publicclassmajorCourseWorkoutAteachingScheduleBll
{
weeklyTimeIntervalListmodel=newweeklyTimeIntervalList(newList
publicmajorCourseWorkoutAteachingScheduleBll()
{
//1、3、5早上第1节,2、4下午第1节
model.WeeklyTimeIntervalList.Add(newweeklyTimeInterval(1,1));
model.WeeklyTimeIntervalList.Add(newweeklyTimeInterval(3,1));
model.WeeklyTimeIntervalList.Add(newweeklyTimeInterval(5,1));
model.WeeklyTimeIntervalList.Add(newweeklyTimeInterval(2,3));
model.WeeklyTimeIntervalList.Add(newweeklyTimeInterval(4,3));
//1、3、5下午第1节,2、4早上第1节
model.WeeklyTimeIntervalList.Add(newweeklyTimeInterval(1,3));
model.WeeklyTimeIntervalList.Add(newweeklyTimeInterval(3,3));
model.WeeklyTimeIntervalList.Add(newweeklyTimeInterval(5,3));
model.WeeklyTimeIntervalList.Add(newweeklyTimeInterval(2,1));
model.WeeklyTimeIntervalList.Add(newweeklyTimeInterval(4,1));
//1、3、5早上第2节,2、4下午第2节
model.WeeklyTimeIntervalList.Add(newweeklyTimeInterval(1,2));
model.WeeklyTimeIntervalList.Add(newweeklyTimeInterval(3,2));
model.WeeklyTimeIntervalList.Add(newweeklyTimeInterval(5,2));
model.WeeklyTimeIntervalList.Add(newweeklyTimeInterval(2,4));
model.WeeklyTimeIntervalList.Add(newweeklyTimeInterval(4,4));
//1、3、5下午第2节,2、4早上第2节
model.WeeklyTimeIntervalList.Add(newweeklyTimeInterval(2,2));
model.WeeklyTimeIntervalList.Add(newweeklyTimeInterval(4,2));
model.WeeklyTimeIntervalList.Add(newweeklyTimeInterval(1,4));
model.WeeklyTimeIntervalList.Add(newweeklyTimeInterval(3,4));
model.WeeklyTimeIntervalList.Add(newweeklyTimeInterval(5,4));
classify(60,1,49);
classify(80,50,80);
}
publicvoidclassify(intclassSize,intsmall,intmax)
{
int[]oddOrEvenNumber=newint[]{0,1,2};
stringsql="select*fromschOfInfScienceAndEngineeringAcademicBuildingInfowhereaccommodateTheNumberOfPeople=@accommodateTheNumberOfPeople";
SqlParameter[]pms=newSqlParameter[]{
newSqlParameter("@accommodateTheNumberOfPeople",SqlDbType.Int){Value=classSize}
};
majorCourseWorkoutAteachingScheduleDllmajorCourseWorkoutAteachingScheduleDllModel=newmajorCourseWorkoutAteachingScheduleDll();
intr=1;//学生记录的标号
intrepeater=0;
using(SqlDataReaderclassroomReader=majorCourseWorkoutAteachingScheduleDllModel.select(sql,CommandType.Text,pms))
{
if(classroomReader.HasRows)
{
while(classroomReader.Read())
{
schOfInfScienceAndEngineeringAcademicBuildingUsingModclassroomInfo=newschOfInfScienceAndEngineeringAcademicBuildingUsingMod();
classroomInfo.ClassroomNum=classroomReader.GetString(0);
foreach(weeklyTimeIntervaliteminmodel.WeeklyTimeIntervalList)
{
stringsqlRow="usp_getBblTeacherStudentCourseViewDataByPage";
SqlParameter[]pmsRowSql=newSqlParameter[]{
newSqlParameter("@pagesize",SqlDbType.Int){Value=1},
newSqlParameter("@pageindex",SqlDbType.Int){Value=r},//@startingPoint——terminationPoint人数范围
newSqlParameter("@startingPoint",SqlDbType.Int){Value=small},
newSqlParameter("@terminationPoint",SqlDbType.Int){Value=max},
newSqlParameter("@judge",SqlDbType.Int){Value=1},
newSqlParameter("@pagecount",SqlDbType.Int){Direction=ParameterDirection.Output}
};
tblTeacherStudentCourseViewModtblTeacherStudentCourseViewModel=newtblTeacherStudentCourseViewMod();
using(SqlDataReaderreader=majorCourseWorkoutAteachingScheduleDllModel.select(sqlRow,CommandType.StoredProcedure,pmsRowSql))
{
if(reader.HasRows)
{
if(reader.Read())
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 系统 毕业设计 文档 说明 资料