教务处排课系统建模
教务管理系统UML模型

静态图首页
17
配 置 图
静态图首页
18
动态图
时序图
协作图 状态图 活动图
目錄
19
系统的时序图
• • • • • • • 管理员登录时序图 教务学籍管理时序图 学生注册时序图 学生登录时序图 学生选课时序图 教师登录时序图 教师成绩录入时序图
动态图首页
20
返回
21
教务学籍管理时序图
返回
22
返回
返回
39
学生成绩查询活动图
返回
40
系 统 管 理 员 修 改 学 生 资 料 活 动 图
返回
41
42
4
需求层次图:
流程
5
系统需求分析
(1)基础资料 要求能够对院系、专业、 教师、课程、班级等信息进行查询。 (2)教学管理 要求能够对学生成绩信息 进行查询,修改,删除。
(3)用户管理 要求能够添加用户和修改 密码。
6 流程
角色的确定
UML中,角色代表位于系统之外和 系统进行交互的一类对象,本系统中创 建主要的角色有:
教务管理系统UML模型
11级计科2班 李江慧090511233 沈良慧090511237 符 鹤090511231
分工情况:
前期--------李鸣:主要负责资料的收集和准备工作。
李江慧:主要负责用例图、对象图、类图、状态 图和部分协作图的绘制; 沈良慧:主要负责时序图、协作图、活动图的绘 制。
中期
后期 ------符鹤:主要负责组件图、配置图的绘制,幻灯片和 文档的制作。
2
教务管理系统
软件需求 分析 UML基本模型
系统需求 分析
3
软件需求分析
学生选课系统完整的UML建模

信息系统集成技术及应用题目:UML系统分析设计、建模与实现学号:100430112022姓名:杨家建专业:计算机技术指导教师:舒远仲UM L系统分析设计与建模以简单的学生选课系统进行详细的系统分析与建模。
(一)系统用例图1•首先根据需求分析可知:管理员维护课程信息,对其进行添加、修改、删除等。
学生可以在线查询课程信息,并进行选课,也可以在规定时间内更改选修 的课程。
我们发现系统中的参与者有:管理员和学生,然后从参与者的角度就可 以发现系统的用例,并绘制出系统的用例图,如图 1所示:图1学生选课系统用例图2.对部分用例进行描述:“添加课程”用例1) 用例名:添加课程2) 执行者:管理员3) 目的:管理员通过系统界面进入,添加所要开设的课程,确认无误后将其信息保 存到数据库中,以供学生选择。
4)过程描述:5) 管理员选择进入管理界面,用例开设修改课程停开课程A —管理员vvinclude>><<include>>添加课程vvinclude>><<extend>>删除课程查询课程信息6)系统提示输入管理密码7)管理员输入密码8)系统验证密码9)A1:密码错误10)进入管理界面,系统显示目前所建立的全部课程信息11)管理员选择添加课程12)系统提示输入新课程信息13)管理员输入信息14)系统验证是否和已有的课程冲突15)A2 :有冲突16)10 )系统添加新课程,提示课程添加成功17)11 )系统重新进入管理界面,显示所有课程18 )12 )用例结束19 )异常事件流处理:20 )A1 :密码错误:1)系统提示再次输入。
2)用户确认后进入第5)步。
21 )A2 :有冲突:1)系统提示冲突,显示冲突的课程信息。
2)用户重新输入,验证无误后进入第10 )步。
选课”用例1)用例名:选课2)执行者:学生3)目的:学生进入选课系统界面,浏览的课程,最后选择一门自己喜欢的课程并提交。
排课管理系统建设方案

排课管理系统建设方案一、项目背景记得那些年里,学校的课程安排总是让人头疼。
老师们为了排课,不惜熬夜,甚至有时候还要吵架。
这就是我们的项目背景:一个急需改善的排课现状。
二、项目目标我们的目标很简单,就是通过建立一个高效、智能的排课管理系统,让老师们从繁琐的排课工作中解放出来,让他们有更多的时间去关注教学质量和学生的成长。
三、系统架构1.前端设计前端设计要简洁、易用。
就像那些年流行的APP一样,要让老师们一眼就能看懂,上手就能用。
考虑到老师们年龄层次的不同,我们采用扁平化设计,降低操作难度。
2.后端设计后端设计要稳定、高效。
就像那些年我们一起开发的系统一样,要能够承受大量的数据请求,保证系统运行稳定。
我们采用分布式架构,提高系统的并发处理能力。
3.数据库设计数据库设计要合理、安全。
就像那些年我们一起学习的数据库知识一样,要确保数据的完整性和一致性。
我们采用关系型数据库,结合NoSQL数据库,实现数据的高效存储和查询。
四、功能模块1.排课管理这个模块是核心,就像那些年我们手动排课一样,要实现课程的自动安排。
我们可以根据老师的教学任务、学生的选课情况,自动课程表。
2.教师管理这个模块要实现对教师信息的管理,就像那些年我们熟悉的教师档案一样,包括教师的基本信息、教学任务、课程安排等。
3.学生管理这个模块要实现对学生的管理,就像那些年我们的学生档案一样,包括学生的基本信息、选课情况、成绩管理等。
4.课程管理这个模块要实现对课程的管理,就像那些年我们的课程表一样,包括课程的开设、调整、查询等功能。
5.统计分析五、实施计划1.需求分析这个阶段要充分了解学校的排课需求,就像那些年我们调研市场需求一样,收集各方面的意见,确保系统功能的完整性。
2.系统设计这个阶段要根据需求分析,进行系统架构和模块设计,就像那些年我们一起画的系统架构图一样,明确各部分的职责和关系。
3.系统开发这个阶段要按照设计文档,进行系统开发,就像那些年我们一起编程一样,攻克一个个难题,实现系统功能。
毕业论文用PlayCASE建模工具开发教务处学籍管理系统

毕业论文用P l a y C A S E建模工具开发教务处学籍管理系统Have an independent personality. November 2, 2021毕业论文――用PlayCASE建模工具开发教务处学籍管理系统目录一. 课题介绍“教务处学籍管理系统”是电子信息职业技术学院宝山道院区教务处针对当前学籍管理工作的需要开发研制的一个应用型软件,是列入我院院级科研立项的项目之一;它的使用对促进我院教务管理特别是学籍管理的科学化、规范化和信息的网络化将起到积极的作用;研制“教务处学籍管理系统”是为了寻找一种较为规范的解决方案旨在减轻教务管理人员繁重的工作负担,规范教学计划、课程名称、教师编号等的制定使用,简化教学任务检索、成绩查询、考勤管理等工作的劳动强度和复杂程度,解决了教务处学生信息管理工作中的现代化手段问题,进而进一步提高我院教务处计算机管理水平;“教务处学籍管理系统”应用范围从新生的信息录入开始到毕业离校,贯穿整个学生在校期间的管理工作;根据这一全过程的工作特点,可以全面地利用计算机作为辅助管理手段进行学生学籍管理的工作,能有效地防止目前全国大学生管理系统“平台式”的软件在开发上的大众性,更适合于我院学籍管理要求,强化了查询统计功能同时友好的用户界面将更方便于教务管理人员的日常使用;二. 系统设计分析1.开发工具使用“教务处学籍管理系统”,使用PlayCASE建模工具作为前端上游的系统分析、设计模型;系统模型通过划分,生成相对独立的功能模块;生成的功能模块转为后端下游的开发原型,使用PowerBuilder 作为开发工具,用以实现实际的功能;目前,国内大部分的MIS系统开发仍旧停留在原始的手工开发模式上,这不仅无法提高工程质量,而且由于没有统一的开发标准或未形成总体的开发风格,不利于MIS系统生存周期的延长;传统的开发模式,同时极大的限制了MIS系统软件在用户实际使用过程中的完善;因为传统的开发模式在开发工程中只强调整个开发过程的其中一部分或几部分,不能贯穿开发的全程;在出现开发预期没有考虑的问题时,由于没有全面的系统开发模型往往对出现的问题无法修补;在国外,已经普遍采用系统模型开发工具,并且已经基本形成统一的标准;依据标准的系统模型开发工具已经有很多,有很多软件开发工具都有自己的前端上游模型开发工具;如Sybase公司为PowerBuilder定制的前端上游模型开发工具PowerDesigner;在这次毕业设计中,我们使用了国产的系统模型开发工具PlayCASE;我们希望能够找出一些使用系统模型开发工具比使用传统的开发模式的优势;试着通过使用PlayCASE并结合现代软件工程的思想,能够快速建立系统模型,合理划分各个功能模块;PlayCASE创造性地把业务调查、需求定义、总体设计、详细设计及程序生成等软件开发过程结合为一体,适合生命周期法、原型法及其混合形式,极大地提高了软件系统开发的效率和质量,满足了个方面的需要;PlayCASE的集成理念体现在软件生命周期的纵横两个方面,通过三位一体建模实现统一的形式支持生命周期;使用PlayCASE开发应用软件,可以最大限度的减少软件开发完成后出现功能不全的问题,更不会出现闭门造车的情况,造成软件给谁用、有什么用都说不清楚的问题,这种问题在开发软件产品时是十分容易出现的;PlayCASE的最主要的作用是提供了从需求建模向软件建模平滑过渡,并且可以良好的支持后端开发工具的;PlayCASE为程序员提供了功能强大的可视化数据库建模工具和程序设计工具,十分便于数据库系统的概念设计、逻辑设计、物理设计和行为设计;我在小组中的分工是,依据前端上游分析划分的各个主功能模块,使用现代软件工程的分析和细化方法,将主功能模块再次划分成实现功能独立的节点模块,并通过开发工具PB 实现;2.开发使用环境开发平台:Windows 2000 Advanced Server Service Pack 3数据库平台:Microsoft SQL Server 2000 企业版开发工具:PowerBuilder Build 8004Microsoft Development Environment 2003 Visual Studio 2003仅作为最终程序发布使用3.功能模块图4.设计分析根据我在小组内的分工,我主要负责:分解上游开发生成的功能模块,将其细化成为可以使用开发工具实现的终端模块;分析功能模块提出的功能,划分逻辑,并依据上游提供的数据库结构模型设计出实现功能的算法;设计交互界面,完成代码设计,进行初步测试;合并应用程序,完成系统测试、用户确认测试;三. 系统设计实现1.设计总量(1)信息输入模块窗口(2)制定教学计划w_plan:制定各专业教学计划;(3)教学任务窗口w_assignment:由教学计划自动生成教学大纲的主要内容;(4)教学大纲输入w_jxoutline:制定教学大纲;(5)标识编辑窗口w_edit_f_t_s_j:设计整个系统使用的各种标识;(6)代码编辑窗口w_edit_d_s_c:制定系、专业、班级、课程、教师情况以及各对应的代码信息;(7)学生基本信息输入w_student_input:输入在校学生的基本信息、家庭情况和学习情况;(8)学生正考成绩录入w_student_score:输入学生的考试成绩;(9)学生补考录入w_student_score_makeup:输入学生的补考成绩;(10)信息修改模块窗口(11)教学计划修改w_plan_edit:完成对现有教学计划的修改、补充;(12)教学任务修改w_assignment_edit:完成对现有教学任务的修改以教学计划为基础; (13)学生成绩修改w_student_score_edit:完成对现有学生成绩的修改,以全部考试成绩和补考成绩两种方式查询修改;(14)学生基本信息校对w_z_student_snumedit:校对学生基本信息的输入情况,包含修改功能;(15)信息查询模块窗口(16)学生成绩查询w_score_query:用于查询指定学生的各个学期的单科或全部成绩(17)学生统计信息查询w_query:整合在学学生人数的全部功能查询,完整显示详细的统计信息内容和总数统计;(18)不及格情况查询w_makeup_query:以指定条件查询在学学生的不及格人数、人次和详细内容;(19)不及格情况明细w_nopass_list:显示全院不及格学生的详细情况;(20)统计显示模块窗口(21)成绩图形显示w_score_count:以图形方式显示成绩统计正态分布图(22)打印模块模块(23)教学计划打印w_plan_print:打印教学计划;(24)教学任务打印w_assignment_print:打印教学任务;(25)学生成绩打印w_score_print:打印各学期的各班学生成绩;(26)成绩检索打印w_query_print:打印学生成绩汇总信息,排名情况;(27)学籍卡打印w_student_score_table_1:打印学生的学籍卡包括学生基本信息和学生在学成绩;(28)用户管理模块窗口(29)用户权限管理w_user_login:管理准许登陆系统的用户权限此窗口的权限最高;2.典型模块窗口介绍主窗口w_main窗口要求:以框架方式构建主窗口,由主窗口打开的窗口作为框架下的窗口,同时在窗口菜单下添加打开窗口的选项;自动记录快捷菜单栏的位置;窗口界面和结果生成示例:主要控件脚本:主窗口w_main.打开事件open闭事件close击事件clicked:击事件clicked:开事件open定义事件ue_open择事件selectionchanged 择事件selectionchanged择事件selectionchanged 择事件selectionchanged 击事件clicked:打开事件open:自定义事件ue_open:击事件clicked:打开事件open:自定义事件ue_open:窗体体积改变事件resize:关闭窗口事件close:击事件clicked单击事件clicked开事件openSQLCACommit ;uf_menu,0刷新安钮cb_retrieve.单击事件clicked:uf_findchild1 //刷新菜单项新建按钮cb_new:新建角色;= "新建登陆用户"ib_new = Trueis_menuid = ""uf_reset1 //复位树型控件= ""= ""删除按钮cb_del:删除现有角色;= Falsestring ls_login //登陆名string ls_password //登陆密码ls_login =if ls_login = "" then= TrueReturnend ifDELETE FROM loginWHERE = :ls_login ;if = 0 thenCommit ;Commit ;= ""= ""elseRollBack ;Messagebox"提示","无法删除该记录可能已经不存在",Information,OK,1 end if= True保存按钮cb_save:保存对角色权限的修改;= Falsestring ls_login //登陆名string ls_password //登陆密码string ls_templs_login =ls_password =if ib_new thenif ls_login = "" thenMessagebox"提示","请输入登陆名",Information,OK,1= TrueReturnelseif ls_password = "" thenMessagebox"提示","请输入登陆密码",Information,OK,1= TrueReturnelseif is_menuid = "" thenif Messagebox"提示","您没有为新建用户建立权限,新建用户将无法使用系统请确认是否保存",Information,YesNo,1 <> 1 then= TrueReturnend ifend ifSELECT INTO :ls_tempFROM loginWHERE = :ls_login ;if = 0 thenCommit ;Messagebox"提示","登陆名已存在,请重新填写登陆名",Information,OK,1= TrueReturnelseif = -1 thenMessagebox"提示","登陆名验证错误,无法确定登陆名是否已存在无法保存新建用户信息,请重新操作",Exclamation,OK,1= TrueReturnend ifINSERT INTO loginlogin,password,popedomVALUES :ls_login,:ls_password,:is_menuid ;if = 0 thenCommit ;Commit ;= ""= ""ib_new = FalseelseRollback ;Messagebox"提示","无法保存新建用户信息,请重新操作",Exclamation,OK,1= TrueReturnend ifelseif ls_login = "" thenMessagebox"提示","登陆名为空,无法保存",Information,OK,1= TrueReturnelseif ls_password = "" thenMessagebox"提示","登陆密码为空,无法保存",Information,OK,1= TrueReturnend ifSELECT INTO :ls_tempFROM loginWHERE = :ls_login ;if = 0 thenUPDATE loginSET login = :ls_login,password= :ls_password,popedom = :is_menuidWhere login = :ls_login ;Commit ;Commit ;elseif = 100 thenMessagebox"提示","当前登陆名不存在,无法更新~n提示:如果新建用户登陆请单击新建按钮;",Exclamation,OK,1= TrueReturnelseif = -1 thenMessagebox"提示","登陆名验证错误,无法确定登陆名是否已存在无法保存新建用户信息,请重新操作",Exclamation,OK,1= TrueReturnend ifend if= "登陆用户"= True四. 系统测试测试是程序设计中占工作量比重较大的工作,是程序设计必不可少的环节;它对参与测试的人员要求较高,而且原则上程序的原始设计人员是不应该涉及较多的,尤其是针对代码的测试,如单元测试;由于小组的人手不足,我除了负责完成我的程序开发外,还要完成我设计的代码的测试工作;在最初的设计过程中,首先涉及测试工作的是功能窗口包含的函数和窗口控件的事件脚本;测试方法采用单元测试通常采取的白盒测试和黑盒测试相结合的方法;测试函数只使用白盒测试,通过对函数中各分支进行遍历测试来寻找潜在的错误和设计缺陷;函数没有使用黑盒测试,是因为函数是为完成某个独立的工作而设计的,它会被所属窗口控件的某个事件脚本调用,在测试窗口控件的事件脚本时就间接的对函数进行了黑盒测试;测试窗口控件的事件脚本同时使用了白盒测试和黑盒测试;首先通过白盒测试的遍历分支来寻找脚本中的设计错误;设计针对脚本的测试程序,有条件的调用某个控件的事件,通过设置断点来反馈程序的运行状况;主要使用黑盒测试来寻找该脚本在功能上的缺陷,寻找与设计要求不相符的地方;黑盒测试是在窗口设计并针对代码进行第一次单元测试完成后进行的;在黑盒测试中尽量模仿用户实际的使用情况,来对窗口进行功能上的测试;而且在测试过程中我还请用户进行早期的功能确认测试;在各模块开发基本完成后,在请用户进行确认测试之前,为了保险起见小组内部首先进行了确认测试;测试工作主要是由前端上游的设计人员进行,用各模块的开发任务对照程序进行功能上的确认测试,用以减少模块实现功能与开发任务不对应的情况;小组内部的确认测试通过后,用户进行了确认测试,反映良好;系统的整体性能测试和系统试运行是在小组内部和用户方面同时进行的;系统整体性能测试主要是系统的负重测试和健壮性测试;负重测试采用增加终端的访问量来进行测试;比如多台终端同时访问,加大终端的系统负荷等;健壮性测试是采用具有一定使用破坏力的方法来进行测试;比如在频繁访问数据库的时候将网络关闭,这样测试系统对突然发生错误的反映能力和处理能力;到目前为止,系统的试运行正常,没有发现重大错误;在测试过程中发现的错误已经全部修补完成,而且还没有发现因修补错误而带来的新的错误;。
教务管理系统UML模型.ppt

精选
§3系统类模型
3.2类图 根据系统划分的三类包图,分别讨论
人员信息包,接口包和事务包中的类图 分别为: 1、人员信息包内的类图 2、接口包内的类图 3、事务包内的类图
精选
人员信息包内的类图
精选
接口信息包内的类图
精选
系统事务信息包内的类图
精选
精选
§1 建立系统用例模型
(1)角色的确定
UML中,角色代表位于系统之外和系统 进行交互的一类对象,本系统中创建主要 的角色有: 教务员 教师 学生
精选
(2)创建用例 教务管理系统根据运行流程可分为以下的几个用
例: 用户登录 学籍管理 排课管理 成绩管理 选课管理 教学管理 系统维护
教务管理系统UML模型
精选
问题概述
在高校日常管理中,教务管理模式的科学 化与规范化,管理手段的信息化与自动化 对于学校的总体发展产生深远的影响,由 于管理内容过多,处理的过程也非常复杂, 随着学校人员的增加,教务管理系统的信 息量大幅上升,因此往往很难及时准确地 掌握教务信息的运作状态,所以迫切需要 现代化管理要求的教务管理系统。
解整个进程过程的操作过程,本系统中 主要的活动图有如下几个:学生成绩查 询活动图、教务员修改学生资料活动图、 学生选课活动图以及教师成绩录入活动 图
精选
学 生 成 绩 查 询 活 动 图
精选
教 务 员 学 生 资 料 修 改 活 动 图
精选
学 生 选 课 活 动 图
精选
教 师 成 绩 录 入 活 动 图
2.3协作图 主要包括如下几个协作图 ①教务学籍管理协作图 ②学生注册协作图 ③学生选课协作图 ④教师成绩录入协作图
精选
教 务 学 生 学 籍 管 理 协 作 图
高校教务管理系统数据库模型

高校教务管理系统数据库模型一、需求分析设计数据库,需求分析是关键;需求分析就是作文的提纲,而文章的正文就是我们接下来要设计的数据库;数据库以需求分析来进行总体布局、设计、建立。
需求分析的质量决定你数据库的价值,所以这是数据库设计的核心,也是最耗时、最复杂的阶段。
对教务管理系统进行模块划分,分步进行设计和管理:1、学生信息管理该模块是教务工作人员进行对学生信息的管理,进行学生信息的添加、修改、删除。
在进行信息的添加时,首先在新的窗口进行学生信息的录入,在保存的时候要进行学生学号是否有重复的检查,如果添加的学生编号有重复就要对用户进行提示。
只有在不重复的情况下才能进行信息的添加。
在进行信息的删除时,要首先打开提示窗口让用户确认是否要删除,只有在用户确认的情况下才能进行信息的删除。
在进行信息的修改时,要根据用户选定的学生进行修改,即列出用户选定的学生的所有信息,在这个基础上进行学生信息的修改。
2、教师信息管理教务工作人员通过此模块来管理教师信息,包括教师信息的添加、修改、删除等。
信息的添加时,需要验证教师的编号是否重复;删除和和修改学生信息,和学生信息管理模块相同。
3、院系管理此模块是用来管理院系的信息,包括班级院系的添加,修改,删除等。
在进行信息的添加时,需要进行班级的编号是否重复的检查,如院系编号重复则对用户进行提示,不重复则添加成功。
院系管理模块的删除和修改和学生信息管理模块相同。
4、课程信息管理教务工作人员通过该模块来管理课程的基本信息,包括课程信息的添加,修改,删除和班级课程的设置等,具体做法同前面的模块。
5、成绩管理教务工作人员通过该模块来进行学生成绩的管理,在进行学生成绩的添加时,可用它来为学生设置所在班级的课程表来直接输入成绩。
6、打印管理教务工作人员可以通过打印模块来打印学生成绩信息,选课表和班级表。
可以根据班级、学生学号、课程编号来打印学生成绩单,打印前还要可以预览所要打印的报表。
大学教务管理系统——UML模型

某大学教务管理系统UML模型随着高校校园网的建设和Internet技术的引进,基于校园网和Internet的应用系统的开发正在蓬勃发展。
教务管理师高校教学管理的一向重要工作,现代化的高校教务管理需要现代化的信息管理系统支持。
新世纪背景下,高校教育体制进行了大规模的改革,招生人数逐年增加,教学计划不断更新。
在高校日常管理中,教务管理无疑是核心工作,重中之重。
其管理模式的科学化与规范化,管理手段的信息化与自动化对于学校的总体发展产生深远的影响,由于管理内容过多,繁琐,处理的过程也非常复杂,并且随着学校人员的增加,教务管理系统的信息量大幅上升,因此往往很难及时准确地掌握教务信息的运作状态这使得高校教务管理的工作量大幅度增加,另外,随着教育改革的不断深化,教学管理模式也在发生变化,例如实施学分制、学生自主选课等。
这一切都有赖于计算机网络技术和数据库技术的支持,在这样的形势下建立和完善一个集成化的教务管理系统势在必行。
目前,国内高校都开发了自己基于校园网的教务管理系统。
由于其教务管理模式不尽相同,不同学校的实际教务管理情况各有自己的特点,因而各高校需要针对自己的教务管理模式和特点建立自己的教务管理系统。
本设计是基于某高校的教务管理模式开发的基于校园网的教务管理系统。
这样一个系统不仅可以降低工作量、提高办公效率,而且使分散的教务信息得到集中处理,对减轻教务工作负担、提高教务管理水平、实现教务管理的现代化具有重要意义。
1.建立系统用例模型1.1确定系统模型的参与者仔细分析教务管理系统问题描述。
在UML中,角色代表位于系统之外和系统进行交互的一类对象,本系统中创建主要的角色有以下三类:(1)教务员:教务员在教学管理系统中对全体学生进行用户登录、学籍管理、选课管理、教学管理和成绩管理,并且对教师进行登录管理、教学管理和成绩管理。
教务处工作人员处理日常的系统维护,例如维护和及时更新学生,教师信息以及安排选课等。
(2)教师:教师根据教务系统的选课安排进行教学,将学生的考试成绩录入此系统。
教务管理系统UML模型

§1 建立系统用例模型
(1)角色的确定
UML中,角色代表位于系统之外和系统 进行交互的一类对象,本系统中创建主要 的角色有: 教务员 教师 学生
(2)创建用例 教务管理系统根据运行流程可分为以下的几个用
例: 用户登录 学籍管理 排课管理 成绩管理 选课管理 教学管理 系统维护
§1.1建立用例图
建立如下四个用例图 (一)顶层用例图 (二)学生角色用例图 (三)教师角色用例图 (四)教务员角色用例图
顶层用例图
学 生 角 色 用 例 图
教 师 角 色 用 例 图
教 务 员 角 色 用 例 图
§2 建立系统动态模型
2.1活动图 经过活动图的建模可以比较清楚地了
解整个进程过程的操作过程,本系统中 主要的活动图有如下几个:学生成绩查 询活动图、教务员修改学生资料活动图、 学生选课活动图以及教师成绩录入活动 图
学 生 成 绩 查 询 活 动 图
教 务 员 学 生 资 料 修 改 活 动 图
学 生 选 课 活 动 图
教 师 成 绩 录 入 活 动 图
§2建立动态模型
2.2顺序图 主要包括如下几个顺序图 ①教务学籍管理顺序图 ②学生注册顺序图 ③学生选课顺序图 ④教师成绩录入顺序图
教 务 成 绩 录 入 协 作 图
§3系统类模型
3.1系统包图 将整个教务管理系统划分为人员信息、 接口和事务3个包,分别控制不同的应 用。
系统包图
§3系统类模型
3.2类图 根据系统划分的三类包图,分别讨论
人员信息包,接口包和事务包中的类图 分别为: 1、人员信息包内的类图 2、接口包内的类图 3、事务包内的类图
问题概述
在高校日常管理中,教务管理模式的科学 化与规范化,管理手段的信息化与自动化 对于学校的总体发展产生深远的影响,由 于管理内容过多,处理的过程也非常复杂, 随着学校人员的增加,教务管理系统的信 息量大幅上升,因此往往很难及时准确地 掌握教务信息的运作状态,所以迫切需要 现代化管理要求的教务管理系统。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
教务处排课系统建模
摘要:为解决教务处排课系统选课问题,通过对问题的分析,设计解决问题的主要数据结构,再设计出算法程序,从时间、教师、周开课次数、冲突检测及解决等方面处理排课问题。
关键词:排课系统,数据结构,算法,冲突检测,建模。
每年开学时需要选课,有时排课系统会出现各种各样的问题,一部分是因为排课系统本身的算法问题。
设计一个合理算法对于学生选课方便至关重要,以下是一个排课系统的介绍。
1.排课系统的基本要求:
1.必修课尽可能的排在上午;例如,数学、英语、专业课等安排在上午,而
体育、计算机、实验等安排在下午。
2.一个教师如果上午连续上四节课,尽可能的将四节课都安排在一个教室;
3.一周上多次的课程尽可能间隔至少一天,比如高数,如果一周上六节课,
则尽可能安排周1、3、5上午上课;因此同一节的课程一周最多上六节课,且只能在周一、周三、周五。
4.同一专业的课程不能有冲突。
2. 问题的描述:
根据排课的优先级,应该先将全校各个专业本学期的专业课安排好,再考虑教师的教学问题,即如果某一个教师某天上午或下午连续教四节课,确保后一节课的教室号与前一节相同。
判断同一课程一周上几次,一次则可以在五天中无课程的时间中随机抽取一天安排课程,两次则可以分为周一和周
三、周二和周四、周三和周五三周时间来排课,三次则只能是周一、周三、
周五一种排课时间。
3.基本算法的描述:
设要安排的课程为{ C1 , C2 , ., Cn} ,课程总数为n , 而各门课程每周安排次数为{ N1 , N2 , ., Nn} ;每周教学日共5 天,即星期一~至星期五;每个教学日最多安排4 次课程教学,即1 ~ 2 节、3 ~4 节、5 ~ 6 节和7 ~8 节(以下分别称第1 、2 、3 、4 时间段) . 在这种假设下,显然每周的教学总时间段数为5 ×4 = 20 ,并存在以下约束关系:
n ≤20 (1)
N = 6n,i =1,Ni ≤20 (2)
自动排课问题是:设计适当的数据结构和算法, 以确定{ C1 , C2 , ……, Cn } 中每个课程的教学应占据的时间段,并且保证任何一个时间段仅由一门课程占据.
4. 主要数据结构
对于每一门课程,分配2 个字节的“时间段分配字”(无符号整数) :{ T1 , T2 , ., Tn} . 其中任何一个时间段分配字(假设为Ti ) 都具有如下格式: Ti 的数据类型C为:unsigned int 。
Ti 的最高位是该课程目前是否是有效的标志,0 表示有效,1 表示无效(如停课等) ;其它各位称为课程分配位, 每个课程分配位占连续的3 个位(bit) ,表示某教学日(星期一~星期五) 安排该课程的时间段的值,0 表示当日未安排,1 ~ 4 表示所安排的相应的时间段(超过4 的值无效) .在这种设计下, 有效的时间段分配字的值应小于32 768 (十六进制8000) , 而大于等于32 768 的时间段分配字对应于那些当前无效的课程(既使课程分配位已设置好也如此) , 因此很容易实现停课/ 开课处理. 5.排课算法
在上述假设下,自动排课算法的目标就是确定{ C1 , C2 , ., Cn} 所对应的{ T1 , T2 , ., Tn} .
从安排的可能性上看,共有20 !/ (20 - N) !种排法。
如果有4 门课,每门课一周上2 次,则N = 8 ,这8 次课可能的安排方法就会有20 !/ (20 - 8) ! = 5 079 110 400 ,即50 多亿种. 如果毫无原则地在其中选择一种方案,将会耗费巨大量的时间. 所以排课的前提是必须有一个确定的排课原则。
采用轮转分配法作为排课原则:从星期一第1 时间段开始按{ C1 , C2 , ., Cn} 中所列顺序安排完各门课程之后(每门课安排 1 次) ,再按该顺序继续向后面的时间段进行安排,直到所有课程的开课次数符合{ N1 , N2 , ., Nn} 中给定的值为止. 在算法描述中将用{ C[1 ] , C[2 ] , ., C[ n ]} 表示{ C1 , C2 , ., Cn} , 对{ N1 , N2 , ., Nn}和{ T1 , T2 , ., Tn} 也采用同样的表示法.
算法1 排课算法
输入{ C1 , C2 , ., Cn} 、{ N1 , N2 , ., Nn} .
输出{ T1 , T2 , ., Tn} .
①初始化:
星期值week = 1
时间段值segment = 1
{ T [1 ] , T [2 ] , ., T [ n ]} 中各时间段分配字清零
②新一轮扫描课程:
置继续处理标志flag = 0
对课程索引值c-index = 1 ,2 , ., n 进行以下操作:
如果N[c-index ] > 0 ,则做以下操作:
把segment 的值写入T[c-index ]的第(week - 1) 3 3~week 3 3 - 1 位中N[c-index ]的值减1
如果N[c-index ] > 0 ,则置flag = 1
如果week = 5 并且segment = 4
则:置flag = 1 并转③
否则:如果segment = 4
则:置segment = 1 且week 增1
否则:segment 增1
检测是否已全部安排完毕:
如果flag = 1
则:转②
否则:转③
③检测是否成功:
如果flag = 1
则:开课次数过多
否则:课程安排成功
④算法结束
6.冲突检测算法
有时在自动排课完毕后,需要人工调整某些课程的安排时间,如把第i 门课程在人工干预下改成星期数为week 、时间段为segment 的位置,则根据上述数据结构需做如下运算:
T [ i ] = T [ i ] &(~(7 << (week - 1) * 3) ) + (segment << (week - 1)*3) ,
其中&、~和n 分别为按位与、按位取反和按位左移运算符(下同) .问题是如何判断是否已有其它课程安排在同一个时间段上. 设人工调整的时间段分配
字为T[1 ] ,则该问题描述为:判断时间段分配字T [1 ] 与{ T[2 ] , T [3 ] , ., T [ n ]} 中的某个分配字是否存在相同课程分配位上的相等的非零时间段值, 或者说{ T [2 ] , T [3 ] , .,T[ n ]} 中是否存在与T [1 ] 冲突的时间段分配字. 为简化起见,在以下算法描述中假设所有时间段分配字的最高位为0.
算法2 冲突检测算法
输入T1 和{ T2 , ., Tn} .
输出与T1 冲突的{ T2 , ., Tn} 中的时间段分配字.
①对c-index = 2 ,3 , ., n 做以下操作:
初始化屏蔽字mask = 7
对星期值week = 1 ,2 ,3 ,4 ,5 做以下操作:
如果T[1] & mask 等于T[c-index] & mask ,而且二者不等于0 则: T[ 1 ]与T[c-index ]相冲突,转①
mask 左移3 位(或乘8)
②算法结束
7.总结:
通过以上算法及数据结构,将其编写为程序,可以对教务处的排课系统进行数据处理,从而可以解决出现的一部分问题。