软件工程,选课系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
学生选修课管理系统
软件工程课程设计
班级:电算08-1
学号:25、30
姓名:孙兰兰、王雅萍
指导老师:***
目录
一、选题依据 (1)
1.1选题背景 (1)
二、系统需求分析 (1)
2.1可行性分析 (1)
2.2结构化分析方法 (2)
2.2.1 功能需求图 (2)
2.2.2 顶层DFD图 (3)
2.2.3 第一层DFD图 (3)
2.2.4 第二层DFD图 (4)
3.1建立系统用例模型 (7)
4.1建立动态模型 (10)
4.4.1活动图 (10)
4.4.2协作图 (12)
4.4.3状态图 (13)
4.4.4类图 (14)
三、软件设计 (15)
3.1数据库设计 (15)
3.1.1设计内容 (15)
3.1.2设计要求 (16)
3.1.3数据库表结构 (16)
四、总结 (18)
学生选修课管理系统
一、选题依据
1.1选题背景
“选课”是现在高校行政管理工作中一项很重要的课题。
而且是每个学期都必须要面对的问题。
选课工作做不好,学生不知道自己将要学习的课程,老师也不知道自己将要讲授的课程,教务处的排课计划、教室安排等其他调度工作也无从做起。
因此,如何解决高校教务管理中的选课工作便成为了如今各大高校面临的很实际的问题。
随着近几年高校的持续扩招,学生人数逐年增加。
为了满足广大学生的求学需要,各个高校的师资力量、硬件配置也随之增强。
这样一来,日常行政部门的工作也就越来越繁重,这一点在选课这块显得尤为突出。
而传统的手工操作,即费时又费力,而且容易出错,工作效率较低。
因此,拥有一套实用、高效、完善的在线选课系统就显得尤为重要,它可以提升高校的教育质量和教学管理质量,提高工作效率,降低行政成本。
大学期间总会有很多公共选修课,以往的选课方法是随堂报名。
这种方法虽然直接,但是造成选课的盲目性,有些课堂选课时人满为患,有些课堂无人选课。
原因是传统的选课方法没有预见性,大家没有事先协调好。
并且学生选课存在这样的特点:公选课较多,学生人数众多,学生可根据自己的专业及兴趣选择公选课程进行学习,而且学生对课程的要求有较大差异。
使用了网上选课系统以后,可以在开课前就在网上选课,每个学生的课程在开课前就确定好,学生通过本系统可以了解课题相关信息,进行自主选题,能够满足不同学生对不同题目的不同要求,有利于发挥学生的长处,而且能够充分利用学校的各类教学资源。
使用本系统有三个角色,即管理员、学生和教师用户。
管理员的权限最高,包括设置系统登陆信息, 用户基本信息、选课信息的录入、查看、修改、删除等,同时还具有查询各个模块的功能。
老师和学生可以实现基本信息查询和进行选课的相关操作,如添加选课信息,退选等。
二、系统需求分析
2.1可行性分析
(1) 经济上的可行性
系统界面友好,操作简单,系统的配置要求不高,实现可行,因此经济可行。
该系统可以容易实现学生、老师与学校之间的联系,在Internet上实现完成部分教务工作,提高办事效率。
(2) 技术上的可行性
随着互联网的蓬勃发展,越来越多的机构将科研管理与Internet融合到一起,以方便个高校管理。
在这样一个社会背景下,基于Windows和SQL Server 2005 ,运用先进的 技术、先进的C#语言,采用B/S模式开发的学生网上选课系统,将学生、老师、管理员、有机地结合在一起,有效地提高管理水平和效率。
随着科学技术的不断提高,计算机科学日渐成熟,基于以上的技术在现今比较容易实现。
(3) 操作上的可行性
该系统操作方便,简单。
2.2结构化分析方法
系统功能模块基本将本系统划分为三大模块,即学生选课模块、教师开课模块以及管理员管理模块。
(1)学生选课模块:在这个模块中,允许学生修改个人信息,浏览基本的课程;并实现主要的选课功能,包括填写选课信息、查看已选课程、修改选课等。
(2)教师开课模块:这个模块主要是让教师申请教课,同时教师可以修改个人信息、浏览基本课程以及查看学生的选课情况等。
(3)管理员管理模块:这个模块的功能比较多,主要包括创建课程的指定任课老师、设定课程人数、统计学生选课信息、发通知等等。
(4)通用功能模块:即用户登录、密码修改等功能的实现。
2.2.1 功能需求图
图2-1 学生选课管理系统的功能需求图
2.2.2 顶层DFD图
根据分析得到的系统功能要求,画出学生选修课管理系统的分层DFD图。
首先画出顶层的DFD图如图2-2所示。
顶层确定了系统的范围,其外部实体为管理员、教师和学生。
图2-2 学生选课系统顶层DFD图
2.2.3 第一层DFD图
在顶层DFD图的基础上再进行分解,对系统功能需求做进一步分解:
(1)用户登录
获取用户输入的用户名及密码;
若出现用户名、密码错误或不匹配现象,反馈错误提示;
在用户名及密码都正确的前提下,支持密码修改。
(2)选课系统
首先发布选课通知,即先对教师发出通知(教师得到通知后才可申请教课),然后对学生发出通知(此时已安排完有关选修课的所有信息)
创建课程指定任课教师
设定课程的人数和开课时间安排
分配账号及密码(由于是管理员操作此部分)。
(3)教师开课
获取教师申请教课的信息,包括教师信息及其所要教的课程课程信息;
提供教师浏览课程的功能,即课程时间、教室等的安排;并提供查询学生选课情况的功能,即选此门课程的名单等;
处理和统计教师对学生成绩的评定。
(4)学生选课
提供学生修改个人信息的功能;
提供学生浏览全部选修课信息的功能,然后接受学生的选课操作;
获取学生及其所选课程的信息后,提供学生浏览自己所选课程的安排情况;
得到选课系统的指令,在相应时间内可以让学生修改自己的选课;
将选课系统统计好的成绩信息反馈给学生供其浏览。
通过以上分析,建立第一层DFD图,如图2-3所示。
图2-3 学生选课系统的第一层DFD图
2.2.4 第二层DFD图
第一层已将系统分为用户登录、学生选课、教师开课、选课系统4个加工。
课程信息添加:管理员用户登录后,进入课程信息管理功能单元,输入课程号,课序号,课程名称,教师姓名,开设院系这些数据后提交数据,完成课程信息地添加操作,此时在选课表中将出现刚才添加的课程的有关信息。
课程信息修改:管理员用户登录后,进入课程信息管理功能单元,如果是已经登录了,选择要修改的课序号,选定后就可以修改该选定课程的课程编号,课序号,课程名称,教师姓名,提交后就得到该门课程修改后的信息。
课程信息删除:管理员用户登录后,进入课程信息管理功能单元,如果是已经登录,选择要删除的课程的课序号,提交后,就将选定课程删除了。
已选课程信息的维护:管理员用户登录后,进入选课程功能单元,就可以看到学生已选的课程,可以通过选择相应的课程号来将相应学生的选课记录删除。
用户信息添加:管理员用户登录后,进入用户信息管理功能单元,如果是已经登录进入,输入用户名,用户密码,但是此时的用户必须与学生信息管理系统中的学生相对应,即用户必须是存在的。
提交后就将新用户添加到了用户组里面,即这个用户可以使用该系统了。
用户信息修改:管理员用户登录后,进入用户信息管理功能单元,如果是已经登录进入,选择要修改的用户的用户名,点击后就可以修改该用户的密码。
点击提交后就完成了该
用户信息的修改,就得到了该用户修改后的信息。
用户信息删除:管理员用户登录后,进入用户信息管理功能单元,如果是已经登录进入,选择要删除的用户的用户名,提交之后就将该用户删除了。
用户组里面将不存在改用户。
学生选课:学生用户登录后,进入选课管理功能单元,如果是已经登录进入,输入课程号,课序号,提交之后系统会在已存在的课程信息表中查询该生所属专业应修的课程,如果该门课程存在就可以看到选择的课程出现在了课程列表里面,同时该记录也会出现在已选课程信息里面。
如果不存在则输出错误提示信息“没有该门课程”。
成绩查询:学生用户登录后,进入成绩查询功能单元,如果是已经登录进入,点击“选课成绩查询”及相应学期,就可以看到该门课程的成绩,同时点击全部课程就可以看到全部的课程信息及对应的课程成绩,和该学期的学分。
成绩录入:教师用户登录后,进入成绩录入功能单元,选择相应学生的学生编号,输入该学生的成绩,提交之后就完成了成绩的录入。
该成绩即可对应的出现在相应学生相应课程的成绩列表之内。
在第一层分解的基础上,对四个加工进一步分解,图2-4为学生选课模块的二层DFD 图。
图2-4 学生选课模块加工分解图
学生选课模块加工
①登录:通过用户名及密码登录学生选课系统→验证当前用户权限。
②课程信息浏览:让学生可以详细的了解课程情况。
③选课目标:学生可以选择要选修的课程。
选课概述:前提条件(正确登录、同一
选课选修两次第二次不计学分)→点击选课项→提交→提示选课情况
④修改选课:由于主观或客观原因要求退课。
修改选课概述:前提条件(限定的课程
开设人数已满,或是不足规定人数取消该课程安排的信息,以及个人在规定日期前可以修改选课等)
⑤成绩查询:登录选课系统→选择用户“学生”→输入密码,提交→提示登录成功或
错误信息→选择“选修课成绩查询”,选择学期→查到对应成绩。
“教师开课”加工的第二层分解:
图2-5 教师管理模块加工分解图
3.1建立系统用例模型
(1) 角色确定
①管理员:对学生和教师基本资料维护,对课程基本资料进行添加、 删除、 更新或查询等;
②学生:进行课程预览,选课信息查询,进行选课,成绩查询等; ③教师:查询课程及课程报名人数情况,进行成绩评定等; (2) 确定用例
与管理员有关的用例:发布通知、分配帐号密码、注销或修改用户状态、创建课程 定任课老师、设定课程人数、统计学生选课信息;
与学生有关的用例:修改个人信息、选课操作、修改选课、浏览课程、查询成绩与教师有关的用例:申请教课、浏览课题、查询学生选课情况、成绩评定 (3) 建立系统用例图
如图所示的是学生选课系统的高层用例图、管理员管理子系统用例图、教师管理子系统用例图以及学生选课子系统的用例图。
图2-1 学生选课系统的高层用例图
用户管理
课程信息管理
课程信息查询
修改密码
图2-2 管理员管理子系统用例图
①发放通知:此用例包含两种情况,一是相对于教师的,二是相对于学生的。
相对于教师,即对于选课信息录入后发放给教师的通知,相对于学生即是在安排完选课相应的教师、选课限定人数等规则后发放给学生的通知。
②学生及教师列表:对于学生的个人信息、选课信息,教师的个人信息、对应教受的课程信息等的查询、删除、修改等操作。
③可选课程列表:在限定人数已满或是人数不够不进行课程开设等情况下对于课程选择的限定。
④学生已选课程列表:在课程修完教师评定相应成绩后,对于学生已选课程的成绩统计以及录入发放。
⑤管理员添加及密码修改:根据实际情况进行添加、修改等。
成绩评定图2-3 教师管理子系统用例图
成绩查询
图2-4 学生选课子系统用例图
4.1建立动态模型
动态模型包括活动图、顺序图和协作图等。
4.4.1活动图
图2-5描述的是学生选课操作的活动图。
在图中,学生从登录选课系统到选课完成需经历一系列过程。
首先输入用户名和密码登录系统,系统给出提示,若登录成功后则进行课程信息查询。
然后对信息进行详细查看,例如选课时间安排、教师安排、人数安排等,之后可点击选择课程并提交确认,此时系统也会给出提示,若成功选择给出课程详细信息,否则将提示人数已满的限制信息。
修改所选课程,也必须找到自己已选课程列表并进行删除,然后再按相同方法进行选课,最终完成选课。
当然修改课程过程中,也要注意修改时间的限定,因为管理员也要统计学生及其所选课程的信息,所以必须在规定时间进行修改。
经过活动图的可视化效果,可更清楚了解此过程。
图2-5 学生选课操作的活动图
(1)顺序图
学生选课操作的顺序图及管理员管理操作的子系统分别如图2-6和图2-7所示。
图2-6 学生选课操作顺序图
:
管理员
图2-7 管理员管理操作子系统顺序图
4.4.2协作图
: 学生 : 学生
图2-8 学生选课操作的协作图
图2-9描述了管理员管理操作时的协作图。
参与交互的对象有课程信息模块、课程安排
模块及面向教师、学生。
此图主要考虑通过对象之间的交互共同完成选课操作的过程,各信
息流向及标明的顺序更好诠释出管理员进行管理时所需对象及时间上的配合。
: 学生
图2-9 管理员管理操作的协作图
图2-10描述了教师评定成绩的协作图。
参与的交互对象有课程信息模块、成绩评定模块、成绩管理模块以及学生。
首先教师进入课程信息模块,选择自已所教授的选修课,进而得到所有学生信息。
然后通过反馈的信息及自己记录的考勤情况(如特定安排取消的课时等)进入成绩评定模块。
一般是将所有学生进行统一打分,若不是统一的情况或是有修改等情况都可进入成绩管理模块进行相应操作。
在规定日期前上交评定成绩信息后再反馈给学生。
: 学生
图2-10 教师评定成绩的协作图
4.4.3状态图
图2-11描述了学生这个特定对象所有可能的状态及其引起状态转移的事件。
学生在选课操作中其生存周期中所处的不同状态、转换时的条件,虽然看似较为简单,但并不可忽视。
对于此信息的详细设计,可进一步用于用类状态的设计和编制类。
确定选课
学生登录页面选课页面
选课信息查询页面
系统审查
登录失败
图2-11 学生登录选课的状态图
4.4.4类图
类模型是面向对象方法的核心,类模型从对象的角度描述系统的组成,描述对象及相互间的关系。
系统已在前面进行过简单描述,通过检查问题陈述中的所有名词短语和代词,得到初始类:
学生 教师 管理员 选课操作 选课管理 申请教课 成绩管理 成绩查询 用户管理 课程信息 可选课程 学生已选课程
经过分析最后得到教师、学生、管理员、课程信息及系统维护这几个类。
并标识出类的名称及属性。
如下图所示:
三、软件设计
3.1数据库设计
3.1.1设计内容
设计一个以班级为单位的选课数据库,能够实现学生自主选课功能,并能实现学生信息、课程信息、学生选课信息、教室信息、授课教师信息等的创建、更新、删除、修改,数据库完整性检查、冲突检测、查询优化以及数据库角色、权限的分配,实现数据库的备份等事务处理以保证数据的完整性、一致性、安全性、可靠性。
图3-1 学生选课系统总E-R图
3.1.2设计要求
1、功能要求:
(1) 设计数据对象(表、视图、规则、函数等),完成学生自主选课,实现对于数据库完整性的检查;
(2) 根据用户不同,指派不同权利:管理员具有dbo权限,学生具有插入选课表、退课表权限,查询课程表权限,确保数据库的安全性;
(3) 能够实现对于学生选课信息、课程信息、授课教师信息、教室使用信息的查询;
(4) 设计触发器/存储过程,优化数据库查询、冲突检测、扩展数据库完整性和数据操纵功能;
(5) 设计选课时间段,在指定时间段内,允许选课、退课;
(6) 完成数据库的备份等事务处理,保证数据库的一致性,可靠性;
2、实现要求;
(1) 根据功能要求,建立概念模型,设计各功能块的E-R图,对其合并,形成系统总E-R 图, 如图3-1所示。
(2) 利用T-SQL实现数据库,关系表,视图,数据类型,存储过程及其他数据对象的建立、更新、修改及数据库完整性检查;
(3) 利用企业管理器实现角色及用户权利的定义。
3.1.3数据库表结构
(1)表名:学生信息表
标识:Info_student
学生信息表包括学号、姓名、性别、出生日期、院部、专业、班级、密码8个字段。
描述:学生在选课之前已经具备的各自的详细资料,并且由学院安排分配其密码(口令)。
表3-2
(2)表名:课程信息表
标识:Info_course
课程信息表包括课程号、课程名称、学时、学分、教师、类型6个字段。
描述:学生可以查询某门课程的详细情况,如课程简介、教材、课时、学分、考察方式和相
关课程等内容。
(3)表名:教师信息表
标识:Info_teacher
教师信息表包括工号、姓名、性别、联系电话、密码5个字段。
、
(4)表名:学生选课信息表
标识:Info_selected
学生选课信息表包括学号、姓名、班级、课程、学分5个字段。
描述:学生可以查询自己已选的课程及修完课程后的学分。
四、总结
这次的软件工程课程设计,我们做的是“学生选修课管理系统”,通过几个星期对其各阶段任务的分析实验操作(确定课题、可行性研究与计划、需求分析、设计等),使我们对这门课程有了更深层次的了解,同时也学到了很多东西。
首先确定课题,弄清选题依据后,进行了可行性研究,可行性研究的主要任务不是具体解决系统中的问题,而是以最小的代价在尽可能短的时间内确定问题是否值得解决,是否能够解决,因此我们考虑了经济、技术与操作上的可行。
接着是需求分析阶段,这部分任务用了较长的时间,因为除了用传统的结构化分析方法外,还用了面向对象的分析方法。
刚开始用结构化的方法时,由于对系统的了解程度不够,有很多方面都考虑的不周全。
通过进行数据流程图的划分,使功能模块的实现看起来更具体。
我们总共划分到第二次数据流,按照“自定而下,逐层分解”的总原则划分,逐层到每一层的复杂度。
比较有难度的就是用面向对象的方法分析了,这种方法以前自己没有使用过,只是通过课程来了解其含义,理解起来也很空洞。
一开始我们都觉得很难上手,在建立用例模型的时候,如何确定执行者、用例、用例之间的关系;在建立动态模型的时候,状态图、顺序图、协作图、活动图等都是如何定义与细化的;在建立静态模型的时候,如何分析确定类、确定类与类之间的关系等等都阻碍着分析的前行。
为了解决这些问题,我们也不乏做了很多工作,比如把书上的各小节的例子与案例分析都仔细的研究了几遍,然后通过借鉴其它书本及网上搜索的资料,并根据我们所选系统定义的功能以及操作过程再反复斟酌,进一步对系统进行了较好的分析。
同时通过两人之间的讨论配合,也是问题难度有了一定减弱。
然后我们又花了两周进行设计阶段的工作,这部分我们熟悉了一个软件开发工具——Rational Rose。
用word来画模型图还是比较复杂,至少说很花时间的,用rose工具大大节约了时间并且减少了出错率,同时也使得我们对UML建模有了一个专业上的认知。
之后根据需要对系统进行了数据结构的设计,这部分内容比较简洁,因为我们平时就有用到选课系统,所包含的具体结构相对而言较为清楚。
总之,此次课程设计最大的收获就是对于建模语言UML有了深层次的理解。
用例模型由若干个用例图组成,在UML中构成用例图的主要元素是用例和执行者及它们之间的联系;构成类图的主要成分是类及类之间的关系,类的识别、类属性与操作识别都是非常细节的一部分;动态模型描述了系统的动态行为和控制结构,顺序图侧重于用例的行为在过程行为中的操作次序,是一种交互图;而活动图又描述了用例及对象的活动,操作实现中完成的工作;此外,状态图针对于对象、子系统或系统的生存周期;协作图则侧重于相互合作对象间的交互关系。
这些训练了我们的实践性,使设计能力、分析和解决问题的能力有了较好的提高。
电算08-1
王雅萍、孙兰兰。