学生选课系统信息系统分析与设计课程设计.docx
《学生选课系统信息系统分析与设计课程设计.docx》由会员分享,可在线阅读,更多相关《学生选课系统信息系统分析与设计课程设计.docx(20页珍藏版)》请在冰豆网上搜索。
![学生选课系统信息系统分析与设计课程设计.docx](https://file1.bdocx.com/fileroot1/2023-7/24/28bc549e-2c20-4fc9-b1e7-67b6c03729d6/28bc549e-2c20-4fc9-b1e7-67b6c03729d61.gif)
学生选课系统信息系统分析与设计课程设计
1前言3
1.1系统简介3
1.2开发目的3
2可行性分析3
3系统分析5
3.1数据流图5
3.2系统需求分析5
4系统设计6
4.1系统功能模块设计6
4.2数据库设计7
4.2.1数据字典7
4.2.2数据表8
4.3代码设计10
4.3.1学号的代码设计10
4.3.2班级代码设计10
4.3.3课程号代码设计11
4.4结构设计11
4.4.1概念结构设计11
4.4.2逻辑结构设计14
4.4.3物理结构以及存储文件15
4.5具体设计15
4.5.1界面设计15
4.5.2系统模块设计21
5总结24
1前言
1.1系统简介
当今时代是飞速发展的信息时代。
在各行各业中离不开信息处理,这正是计算机被广泛应用于信息管理系统的环境。
计算机的最到好处在于利用它能够进行信息管理。
使用计算机进行信息控制,不仅提高了工作效率,而且大大的提高了其安全性。
尤其对于复杂的信息管理,计算机能够充分发挥它的优越性。
计算机进行信息管理与信息管理系统的开发密切相关,系统的开发是系统管理的前提。
本系统就是为了管理好学生选课信息而设计的。
学生选课作为一种信息资源的集散地,包含很多的信息数据的管理。
由于数据繁多,容易丢失,且不易查找。
总的来说,缺乏系统,规范的信息管理手段。
尽管有的学校有计算机,但是尚未用于信息管理,没有发挥它的效力,资源闲置比较突出,这就是管理信息系统的开发基本环境。
数据处理手工操作,工作量大,出错率高,出错后不易更改。
造成了时间上的浪费。
基于这个问题,我认为有必要建立一个学生选课系统,使学生选课信息管理工作规范化、系统化、程序化,避免学生选课管理的随意性,提高信息处理的速度和准确性,能够及时、准确、有效的查询和修改选课情况。
1.2开发目的
系统的主要使用对象是需要选课的学生。
学生在选课是要察看各个课程的详细信息,还要选择一些感兴趣的课程,需要生成课表,在发现课程有冲突后能够修改先前选择的信息。
需要随学生选课的变化,计算相应的总学分。
在全部选定后,打印报表。
系统还需要管理员来查看和修改学生的总体选课情况,课程信息和学生信息。
2.可行性分析
本系统的可行性分析包括以下几个方面的内容:
1.技术可行性。
由于校园网络的普遍应用,使得网上选课非常的方便,无需再进行网络的建设。
通过校园网,学生可以在校园网的任何地方完成选课过程。
数据库技术的使用,可以开发出实用、简便、高效的基于网络的信息管理系统,因此技术上是可以实现的。
2.经济可行性。
由于校园网已经普及,因此在网络设备上不需要进行大量的投入。
加上学生选修课系统只要求客户端具备浏览器的基本功能,就能实现网上选课。
因此在校园的计算机实验室、公共机房,或者是学生在寝室使用自己的电脑都无需安装专门的选课软件,就可实现网上选课功能。
因此,从经济上来说,开发网上选课不需要很大量的投入,硬件上只需web服务器和数据库服务器即可。
3.系统分析
3.1数据流图
3.2系统需求分析
通过对系统需求进行分析,我们可以确定系统中有三类用户:
管理员、教师和学生。
各类用户的具体描述如下:
(1)管理员
描述:
管理员维护整个系统,包括课程设置,选课时段设置,选课前学生不可登录;选课结束,学生只可查询,管理员对选课结果进行统计;查询选课情况,对学生的选课申请进行处理,进行用户管理;限制最大选课人数;排课、发布选课信息;数据备份和恢复等。
(2)教师
描述:
教师撰写教师反馈,反馈选课信息,对排课者提出反馈意见,供排课者在排课时参考使用。
查询课程基本情况、学生情况。
(3)学生
描述:
在选课系统中查询课程、教室信息,查看教师反馈,提交选课申请,撤销申请,查询选课情况,登录系统,进行个人信息修改等与选课有关的活动。
根据上面所述,我们对该选课系统进行了划分,分为三个主要功能,即登录控制、排课和选课,分别对应三个子系统,即登录子系统、排课子系统和选课子系统。
其中,登录子系统是前提,排课子系统是基础,选课子系统是关键。
登录子系统区分排课者(即系统管理员),教师和学生这三者的不同身份,给出不同的权限,在页面中根据身份判断其相应具有的权限,进行不同的操作。
排课子系统主要供排课者使用,其中设定选课时间段,进行排课并检测排课冲突,发布选课信息都是选课的前提和基础。
选课子系统是本系统要实现的最终目的。
选课子系统主要供学生选课使用,在这里可以进行与选课有关的活动,包括课程浏览查询、选课、退选课程。
4.系统设计
4.1系统功能模块设计
4.2数据库设计
4.2.1数据字典
根据数据流程分析,对系统数据进行分析和汇总,建立系统数据字典。
下面列出部分数据字典内容。
(1)排课
数据流编号:
A01
系统名:
网上选课系统
条目名:
排课
输入:
课程信息表,教学楼信息表,教师信息表,院系信息表
输出:
排课表,选课通知表
描述:
排课者按年级排课。
排课表内容包括课程代号,课程名称,受课院系,专业代码,专业名称,教师代号,考察方式,学分,开课时间,上课时间,地点,开课院系,最大上课人数和课程选则限制(必修或选修)等。
在排课过程中,排课者可以查询教室使用情况和院系课程设置。
在排课者提交排课表以后,系统应当确保该排课方案中没有时间冲突和教室冲突。
如果有冲突,系统应该提示排课者具体冲突产生的原因。
(2)选课
数据流编号:
A02
系统名:
网上选课系统
条目名:
选课
输入:
排课表,选课通知表,教师反馈表
输出:
学生选课表
描述:
学生可以在规定的时间段内选课。
该规定时间段由排课者通过发布消息通知教师和学生。
选课过程如下:
学生在选课表上单击课程号,则该信息被提交到服务器,并显示学生的选课结果。
选课表的内容包括排课表的全部内容。
如果一门课程已经达到最大选课人数,则不能再选择这门课程。
如果有学生退课,则该门课程的已选人数减1。
(3)设定选课时间段
数据流编号:
A03
系统名:
网上选课系统
条目名:
设定选课时间段
输入:
选课时间段表输出:
选课时间段表
描述:
排课者应该设定选课时间段。
学生只能在此设定的时间段内选课和退课。
4.2.2数据表
数据库中的相关表结构如表所示:
学生信息表(stu_inform)表4-1
字段名
数据类型
长度范围
是否为空
字段说明
学号
Char
8
否
姓名
Nvarchar
是
性别
Char
2
是
班级
Nvarchar
是
出生年月日
datetime
是
是否已选课
char
是
教师表表4-2
字段名称
字段含义
数据类型及长度
约束
默认值
Tno
教师号
varchar(15)
主键
Tname
姓名
varchar(15)
非空
Tsex
性别
varchar
(2)
男
Tage
年龄
int
>0或<100
Tpass
密码
varchar(15)
课程表表4-3
字段名称
字段含义
数据类型及长度
约束
默认值
Cno
课程号
varchar(15)
主键
Cname
课程名
varchar(15)
非空
Credit
学分
int
Ctime
年龄
varchar(15)
Cbegintime
班级
varchar(15)
选课表表4-4
字段名称
字段含义
数据类型及长度
约束
默认值
Sno
课程号
varchar(15)
主键,外键
Cname
课程名
varchar(15)
主键,外键
Grade
成绩
Int
>=0或<=100
登录信息表(stu_login)表4-5
字段名
数据类型
长度范围
是否为空
字段说明
学号
Char
8
否
用户名
Nvarchar
是
密码
Nvarchar
是
权限代号
Char
3
是
教师课程关系表表4-6
字段名称
字段含义
数据类型及长度
约束
默认值
Tno
教师号
varchar(15)
主键,外键
Cno
课程号
varchar(15)
外键
4.3代码设计
4.3.1学号的代码设计
管理信息系统的代码有七种门类,按照人员代码的设计要求,考虑到学校有大一到大四共四个年级,且每个年级人数不超过四位数,年级用入学年份表示,因此使用组合码,并用10位字符表示。
设计方案如图所示。
AABBBCCDEE
入学顺序号
班级号
专业
院系
入学年份
4.3.2班级代码设计
班级代码采用两位字符表示,采用方案如图所示。
X Y
班级号
年级号
4.3.3课程号代码设计
S c
课程代码
课程编号
表4-6
课程代码
课程名称
授课老师
上课地点
上课时间
节次
Sc00001
社交礼仪
*****
*****
*****
*****
Sc00002
石油工程概论
*****
*****
******
*****
Sc00003
证券学概论
*****
******
******
*****
……
……
……
……
……
……
4.4结构设计
4.4.1概念结构设计
E-R模型如图4-1、4-2所示。
图4-2排课过程E-R图
(二)选课子系统
1.系统涉及到的实体
E-R模型如图4-3、4-4所示。
图2-3选课过程实体及其属性
图4-3选课过程E-R图
图4-4选课过程E-R图
(三)合并上述E-R图,得到系统的总E-R图,如图4-5所示。
图4-5系统的总E-R图
4.4.2逻辑结构设计
根据以上的分析,将E-R模型转换成逻辑模型,如下所示:
(1)将实体转化为关系模型:
管理员(编号,用户名,密码,用户类型)
课程(课程编号,面向专业编号,学分,限选性质,教师编号,考察方式,最大选课人数,课程名称,开课院系编号,面向的年级)
选课通知(通知编号,通知标题,通知内容,通知时间,是否为“热点”)
选课时间段(开始选课时间,终止选课时间)
学生(学号,用户名,密码,用户类型,用户编号)
(2)将各关系转化为实体模型:
排课(时间,地点)
选课(成绩)
(3)将合并后的概念模型转化为关系模型:
管理员(编号,用户名,密码,用户类型)
课程(课程编号,面向专业编号,学分,限选性质,教师编号,考察方式,最大选课人数,课程名称,开课院系编号,面向的年级)
选课通知(通知编号,通知标题,通知内容,通知时间,是否为“热点”)
选课时间段(开始选课时间,终止选课时间)
学生(学号,用户名,密码,用户类型,用户编号)
发布(通知编号,编号)
设置(编号,用户名,密码,用户类型,开始选课时间,终止选课时间)
4.4.3物理结构以及存储文件:
将以上的逻辑模型转化为物理模型,如下所示:
图4-6选课过程E-R图
4.5具体设计
4.5.1界面设计
创建登录窗口
登录窗口主要是用来登录主界面的一个关卡,根据用户的不同设有不同的权限,其主界面如图4-8所示。
图4-7登录窗口界面
其登录事件代码如下:
//定义两个变量
stringpassword,username
//Profilestu_select
SQLCA.DBMS="ODBC"
SQLCA.AutoCommit=False
SQLCA.DBParm="ConnectString='DSN=stu_select;UID=;PWD='"
//连接数据库
connect;
//检索用户名和密码记录
SELECTstu_login.学号,
stu_login.用户名,
stu_login.密码,
stu_login.权限代号
INTO:
stu_no,
:
username,
:
password,
:
gl_no
FROMstu_login
WHEREstu_login.用户名=:
sle_1.text;
//判断用户输入的用户名是否正确
ifsle_1.text=""orsle_2.text=""then
messagebox("错误!
",
"用户名或密码不能为空!
",exclamation!
ok!
2)
else
ifusername=sle_1.textandpassword=sle_2.textthen
open(w_main)
close(w_login)
else
messagebox("错误!
",
"用户名或密码错误,请重新输入!
",exclamation!
ok!
2)
endif
endif
创建个人信息窗口
单击主窗口的“查看学生个人信息”选项后,进入此窗口界面,在本窗口主要实现对登录学生信息的查看,以验证学生信息是否正确,下图为个人信息窗口界面,如图4-8所示。
图4-8学生个人详细信息窗口
其中open事件代码如下:
//定义全局变量
stringstu_no
stringlogin_name
stringgl_no
dw_1.settransobject(sqlca)
stringuser_name,student_no
//检索用户的学号
SELECTstu_login.学号,
stu_login.用户名
INTO:
student_no,
:
user_name
FROMstu_login
WHEREstu_login.用户名=:
login_name;
//根据学号查询用户的详细信息
dw_1.setfilter("")
dw_1.setfilter("stu_inform_学号='"+student_no+"'")
dw_1.retrieve()
图4-9选课过程E-R图
其中一些主要程序代码如下:
(1)open事件代码
dw_1.settransobject(sqlca)
dw_1.retrieve()
(2)“查找”按钮的click事件代码
dw_1.setfilter("")
ifsle_1.text=""orsle_1.text="请在此输入查询内容"then
messagebox("错误!
","请输入查询内容!
")
sle_1.eventgetfocus()
else
ifrb_1.checked=truethen
//精确查找
choosecaseddlb_1.text
case"课程代号"
dw_1.setfilter("课程代号='"+sle_1.text+"'")
case"课程名称"
dw_1.setfilter("课程名称='"+sle_1.text+"'")
case"授课教师"
dw_1.setfilter("授课教师='"+sle_1.text+"'")
case"上课时间"
dw_1.setfilter("上课时间='"+sle_1.text+"'")
endchoose
else
//模糊查询
choosecaseddlb_1.text
case"课程代号"
dw_1.setfilter("课程代号like"+"'%"+sle_1.text+"%'")
case"课程名称"
dw_1.setfilter("课程名称like"+"'%"+sle_1.text+"%'")
case"授课教师"
dw_1.setfilter("授课教师like"+"'%"+sle_1.text+"%'")
case"上课时间"
dw_1.setfilter("上课时间like"+"'%"+sle_1.text+"%'")
endchoose
endif
endif
//检索数据
dw_1.retrieve()
(3)“选课”按钮click事件代码
open(w_course_add)
(4)“查看课表”按钮click事件代码
open(w_course_table)
图4-10选课过程E-R图
4.5.2系统模块设计
模块设计的主要方法是结构化方法,主导思想是以系统的逻辑功能设计和数据流关系为基础,将本系统分解为功能明确,易于修改,大小适中的模块结构。
本系统主要分为三大模块:
登录模块、排课模块、选课模块。
系统各模块功能如下图所示:
图4-11选课过程E-R图
系统各模块功能说明:
1登录模块
(1)选择不同身份登录系统
本系统有三种类型的用户:
管理员、教师和学生。
当不同的用户登录系统选择不同的用户类型时,他们就会分别拥有不同的权限。
管理员的权限最大,主要是拥有排课权限、设置选课时段权限和发布选课信息权限。
教师的主要权限是反馈排课信息。
学生的主要权限是进行选课,退课。
(2)修改密码
每个用户登录后,都可更改初始密码,以增强系统的安全性。
(3)退出
每个用户登录系统后单击退出,就可退出系统。
这样,他们遗留在Session对象中的信息就会被清除,同样增强了系统的安全性。
2排课模块
本模块是选课系统的基础。
(1)已排排课表
管理员在排课过程中,可以点击已排排课表来显示已经排好的选课信息,并可对此信息进行增、删、改、查。
在排课者提交排课表后,系统应当确保该排课方案中没有时间冲突和教室冲突。
如果有冲突,系统应该提示排课者具体冲突产生的原因。
(2)备份排课表
管理员对排课信息进行修改后,可以点击备份排课表,对新的排课信息进行备份。
(3)导入排课表
管理员可以把以前的排课信息导入到排课表,这样可以增加排课的灵活性和方便性。
此外,管理员还可以把以前的排课信息删除。
(4)对未排的课程排课
排课者可以对课程信息表,院系信息表,教师表中的信息进行联合查询后,在教学楼信息表中选择相应的教室,并选则相应的时间。
在排课者提交排课表后,系统应当确保该排课方案中没有时间冲突和教室冲突。
如果有冲突,系统应该提示排课者具体冲突产生的原因。
(5)设定选课时间段
排课者应该设定选课时间段。
学生只能在此设定的时间段内选课。
如果学生不在选课时间段内选课,系统应该显示提示信息。
(6)发布选课信息
排课完成以后,排课者可以在选课系统中发布关于选课的各种消息。
(7)查看教师反馈
排课和选课模块都可查看教师反馈。
3选课模块
(1)查看可选择的课程信息
学生在选课时可以查询所有课程的详细信息,如课程简介、课时、学分、考察方式等内容。
学生也可以按课程代号查询选课信息,或者按教师代号查询选课信息。
(2)提交选课申请
学生若想选择某门课程,只要点击相应的课程号,就可选课。
如果该选课操作引起选课冲突(如超过最大选课人数或重复选择同一门课程),系统就会提示出错信息。
(3)退课
学生在选课时间段内可以删除某门已选的课程。
该信息被提交到服务器,服务器返回该删除信息为弹出式窗口。
(4)显示学生选课表
学生选完某门课程后,在选课页面的左侧,就可以显示该学生相应的选课信息。
(5)查看教师反馈
排课和选课模块都可查看教师反馈。
5.总结
本系统界面简洁,操作方便。
本系统可以实现“教师反馈“,“选课查询“,”课程查询“,”课程设置“,”教室安排“,”课表查询“,”排课系统“,”进入选课“等功能,达到了选课系统的基本要求,具有实用价值。
通过这次毕业设计,我对数据库方面的知识有了进一步的认识,尤其是存储过程的使用。
使用SQL存储过程有很多优点,如下所示:
(1)SQL存储过程执行起来比SQL命令文本快得多。
当一个SQL语句包含在存储过程中时,服务器不必每次执行它时都要分析和编译它。
(2)可以在多个网页中调用同一个存储过程,这使得站点易于维护。
如果一个SQL语句需要做某些改动,只要做一次即可。
(3)可以在存储过程中利用Transact-SQL的强大功能。
一个SQL存储过程可以包含多个SQL语句。
可以使用变量和条件,这意味着可以用存储过程建立非常复杂的查询,以非常复杂的方式更新数据库。
(4)最后,这也许是最重要的,在存储过程中可以使用参数,可以传送和返回参数,还可以从SQLRETURN语句得到一个返回值。
由于设计MIS经验不足,我们小组虽然顺利的完成了系统的分析、设计和调试工作,但是本系统仍需进一步扩充和完善,使之更符合实际的应用。
如在选课的功能基础上,增加选修课成绩的登记和管理功能等。
通过这次毕业设计,我充分体会到理论知识的重要性,但更加体会到实践的重要性。
只有通过实践,我们才能发现并解决问题,才能真正掌握一项技术。
我会在将来的软件设计、开发过程中进一步学习,不断提高自己的专业技能。