网上选课系统课程设计Word格式.docx
《网上选课系统课程设计Word格式.docx》由会员分享,可在线阅读,更多相关《网上选课系统课程设计Word格式.docx(17页珍藏版)》请在冰豆网上搜索。
在经济上完全可行。
(3)操作可行性-----界面设计时充分考虑管理人员的习惯,使得操作简单;
数据录入迅速、规范、可靠;
统计准确;
制表灵活;
适应力强;
容易扩充。
第2章内容主要是:
系统需求分析包括,现有系统介绍;
系统的实体分析,实体关系图。
2
二系统分析与总体设计
2.1系统分析
在本系统中,有三类用户:
系统管理员,教师和学生。
三种不同的用户所具有的操作权限以及操作内容均不一样。
本选课系统给予教师很大的自主权,系统管理员只负责向系统中添加学生和教师的个人信息以及教学楼教室信息。
系统管理员不参与开设课程、选择课程等,一切均由教师、学生等录网站自行完成。
系统管理员设置一个选课时间段,在到达时间段以前,教师可以开设课程;
到达时间段以后,学生可以登陆网站选择课程。
教师用户登陆网站后可以开设课程,为自己的课程编辑上课时间和地点,当系统中出现时间地点冲突的时候,系统向教师用户报告并推荐一个时间地点。
每门课程可以是必修或则选修,教师为每门课程设置一个学分,并可以在课程结束后给予分数,如果学生及格,学生将获得该课程的学分。
对于学生用户,每个学生除了必须选择必修课程外,至少还要选择两门选修课程,学生可以对自己选课信息锁定,以免不小心被修改。
当时候超过选课时段后,系统自动锁定学生的选课课程。
系统可以根据学生的选课信息,生成一份学生自己的课表。
课程结束后学生可登录网站查询成绩与学分。
根据上面的要求,从操作功能上可以分为两个类:
一个是通用操作,主要实现用户的登录注销和修改密码等;
另一种是为不同用户定制不同操作。
1.通用操作
(1)登录与注销
每个用户都可以用自己的帐号登录系统。
用户操作完成后推出系统,注销后可以重新登录系统。
(2)修改密码
每个用户第一次登录都用默认密码(教师和学生与帐号一样)。
2.用户所具有功能
(1)系统管理员
设置选课时间段:
系统管理员通过此项功能设置选课时段,只有在选课时间段里,
学生才可以选择课程,超过次时间段,学生选课信息被自动所
定,不得修改。
3
录入学生与教师个人信息:
通过此项功能可以实现对教师和学生的个人信息添加
删除。
录入教学楼教室信息:
通过此项功能可以把学校里所有的教学楼教室的信息录入
到系统中,以便教师在开设课程时候设置上课的教室。
(2)教师用户
显示和修改个人信息:
教师用户登录系统后,可以查看和修改教师的个人信息,
如姓名,电话,E-mail地址等。
开设课程:
教师用户登录系统后,可以开设课程,可以设置该课程为必修课程或
则选修课程,可以设置该课程的最大人数。
教师还可以为该课程设置
一个前导课程,若学生没有学习或则选择前导课程则不能选择该课
程。
编辑课程上课时间:
教师在开设了课程后,可以灵活地设置上课时间和地点。
给学生分数:
课程结束后,教师用户登录系统,可以为学过
课程的学生给予相应的成绩,若及格,给予学生学分。
(3)学生用户
学生登录系统后,可以查看和修改学生的个人信息,如姓
名,性别,电话等。
查看必修课程:
学生登录后,可以查看所有的必修课程。
查看该课程的信息,上
课时间地点,开课教师信息等。
选择选修课程:
学生登录系统后,在所有选修课程中可以选择至少两门选修课程。
同时可以查看相关信息。
锁定选课信息:
学生登录系统,确定了所选课程后,可以锁定自己的选课信息,
以防被别人或则自己不小心修改。
查看最终选课信息:
学生登录系统后,可列出已选择的课程,若选课信息未被锁
定,则可以退选,若所选课程少于两门,系统会提示选择的
课程少于两门。
查看学分和成绩:
课程结束后,学生登录系统可查看自己学习课程的成绩和已获
的学分。
4
2.2系统总体设计
在前面的系统的系统功能分析中,将系统划分成10个模块,如图:
用户登录身份验证模块
编
辑设选查程录开置课看序入评设选和课时信分课课锁程间息模程时定模地模模块间模块点块块模块模块块
数据库
访问模
块
数据库模块
图2.1系统功能模块图
用户登录身份验证模块验证用户名和密码,并根据不同的用户类型,跳转到对应的页面中。
设置选课时间模块提供给系统管理员修改选课时间段。
录入信息模块提供给系统管理员,用来录入学生和教师信息,以及录入教学楼教室等信息。
开设课程模块提供给教师用户,用来开设一门必修课程或则选修课程。
编辑课程时间地点模块提供给教师用户,编辑课程的上课时间地点友好的界面和操作。
评分模块用于教师用户给选修该教师开设的课程的学生评分。
查看课程模块包括查看必修课程、查看选修课程、查看已选课程、查看课程成绩单。
选课和锁定模块中实现选择选修课程和锁定选课信息的功能。
5
三详细设计
3.1数据库系统分析
本系统的数据库实体主要有“学生”、“教师”、“教学楼”、“教室”、“课程”等。
其中“教师”与“课程”存在“开设”联系,并且一个教师可以开设N门课程,即“教师”与“课程”之间是一对多的关系。
同样“教学楼”与“教室”也存在一对多的关系。
一个学生可以学习N门课程,一门课程可以有M个学生学习,即“学生”与“课程”之间是多对多的关系。
同样“课程”与“教室”之间也是多对多的关系。
整个数据库可以用一个E-R图表示,如图:
N1NM教师课程开设学生选修
M上课地点时间教室管理员
1属于教学楼
图3.1整体E-R图
E—R图中的实体图:
教学
楼ID
教学楼
教学
楼名称
图3.2教学楼实体E-R图
6
教室
ID
教学教室
教室
名称
图3.3教师实体E-R图
电子邮
件学号电话
姓名地址学生
性别学分
年龄登陆密
码
图3.4学生实体E-R图
课程编号
前导课程课程名称
编号
课程
课程简介开课教师
最大人数学分
图3.5课程实体E-R图
7
学号
选课课程
号
成绩
图3.6选课实体E-R图
教师编号
个人简介姓名
教师
电子邮件性别
电话年龄
图3.7教师实体E-R图
开始周次上课教室ID课程时间地
点
上课时间结束周次
图3.8课程时间地点实体E-R图
8
帐号
管理员
密码
图3.9管理员实体E-R图
3.2数据库逻辑设计
数据库逻辑设计就是将E—R图转换为关系模型的过程,即将所有实体和关系转换成一系列的关系模式。
转换过程中常见规则有:
(1)一个实体型转换为一个关系模式;
(2)一个一对一的联系可转换成一个独立的关系模式,也可与任意一端对应的关系模式合并;
(3)一个一对多的联系可以转换成一个独立的关系模式,也可与多的那一端对应的关系模式合并;
(4)一个多对多的关系转换成一个关系模式。
根据以上四条规则,下面将E—R图转换成关系模型。
对于“教学楼”、“教室”和两者之间的关系,就可以根据规则(3)转换成两个关系模式
教学楼(教学楼ID,教学楼名称)
教室(教室ID,教学楼ID,教室名称)
对于“学生”、“课程”和它们之间的“选修”关系就可以规则(4)转换成三个关系模式。
学生(学号,姓名,性别,年龄,登陆密码,学分,地址,电话,电子邮件)课程(课程编码,课程名称,开课教师编号,学分,最大人数,课程简介,前导课程编号)
选课(学号,课程编号,成绩)
依次类推,剩下的关系转换成下面三个关系模式:
教师(教师编号,姓名,性别,年龄,电话,电子邮件,个人简介)课程时间地点(课程编号,开始周次,结束周次,上课时间,上课教室ID)管理员(帐号,密码)
9
3.3系统界面设计
下面是在线选课系统的设计,此处简单介绍本系统的部分功能实现。
1.查看必修课程列表页面,如图5-2:
图3-10必修课程列表
登录成功后,进入学生主页,点击“必修课程”链接,得到所有必修课程的
列表,在列表中可以看到所有必修课程及课程的简单信息,如授课教师姓名、课
程所占学分等。
在列表中可以点课程名称,如“计算机应用基础”链接,查看课程详细信息;
点教师姓名,如“李萍”链接,查看教师的详细信息;
点击“查看上课时间地点”
链接,查看对应课程的上课时间和地点。
在页面加载的时候从数据库读取所有必修课信息,代码如下:
stringsql="
selectCourse.*,TNamefromCourse,TeacherwhereCTypelike'
必修'
and
Course.TIdlikeTeacher.TId"
;
//查询处所有必修课程信息
DataSetds=Db.ExecuteSelectSql(sql);
if(ds!
=null&
&
ds.Tables.Count>
0)
10
{
dgCourse.DataSource=ds.Tables[0];
dgCourse.DataBind();
//将查询结果绑定到DataGrid中
}
2.查看选修课程列表页面,如图5-3:
图3-11选修课程列表
单击“选修课程”链接,查看所有选修课程列表,在列表中给出了比必修
课程更多的信息,比如多了对应选修课程的前导课程、最大人数、当前已选人数
等,对每个选修课程均有一个“选修该课程”的按钮,单击此按钮方可选择对应
课程。
主要代码如下:
selectx.*,TName,(selectCNamefromCourseasywherey.CId=x.CPreCId)as
11
CPreCNamefromCourseasx,Teacherwherex.CTypelike'
选修'
andx.TIdlikeTeacher.TId"
//查询该学生已选修的课程
for(inti=0;
i<
ds.Tables[0].Rows.Count;
i++)
sql="
selectcount(*)fromSCwhereCId="
+ds.Tables[0].Rows[i]["
CId"
].ToString();
DataSetds1=Db.ExecuteSelectSql(sql);
if(ds1!
ds1.Tables.Count>
0&
ds1.Tables[0].Rows.Count>
dgCourse.Items[i].Cells[6].Text=ds1.Tables[0].Rows[0][0].ToString();
boollocked=bool.Parse(Session["
Locked"
].ToString());
if(!
locked)
lbLock.Text="
您尚未锁定选课信息~"
else
选课信息已被锁定~"
dgCourse.Columns[9].Visible=false;
3.查看已选课程页面,如图5-4:
12
图3-12已选课程页面
在上一步查看选修课程的列表中,选择“计算机密码学”、“计算机图形学”、
“线性代数”三门课程后,点击“已选课程”链接查看已经选择的课程列表,在
列表中除了可以看到与上一步中相同的信息外,还可以查看到课程成绩。
刚才选
择的三门课程的成绩均为0,当课程结束后,教师登录本系统给所有学生评分,
学生再次浏览此页面可查看到课程的成绩,若成绩合格,学生可获得对应课程的
学分。
锁定课程代码如下:
selectcount(*)fromSCwhereSIdlike'
"
+Session["
Id"
].ToString()+"
'
intnCourse=0;
ds.Tables[0].Rows.Count>
nCourse=Int32.Parse(ds.Tables[0].Rows[0][0].ToString());
if(nCourse<
2)
Response.Write(MyUtility.Alert("
您必须选择至少两门选修课程!
));
13
return;
//先将所有必修课程加入到选课表中再锁定
selectCIdfromCoursewhereCType='
DataSetds2=Db.ExecuteSelectSql(sql);
if(ds2!
ds2.Tables.Count>
ds2.Tables[0].Rows.Count;
stringcid=ds2.Tables[0].Rows[i][0].ToString();
insertintoSC(SId,CId,Score)values('
"
+cid+"
0)"
Db.ExecuteSql(sql);
updateStudentsetSLocked=1whereSIdlike'
if(Db.ExecuteSql(sql)==1)
Session["
]="
true"
Response.Redirect("
Selectedcourse.aspx"
);
14
四程序的调试与运行结果说明
4.1错误信息类和错误显示页面
在用户使用系统过程中,可能由于用户操作失败或则网络原因等,系统运行会出现一些错误,为了便于统一,本系统定义专用的错误信息类和错误显示页面。
在错误信息类ErrorInfo类中,定义了所有的本系统中所出现的错误情况和函数Message。
函数Message根据错误情况得到相应显示字符串。
错误显示页面根据URL中错误代码参数显示不同的错误信息。
4.2登录页面
登录页面是所有用户公用的功能。
不同的用户登录到系统中将转向不同的页面。
解决方法运用了ASP.NET的内置对象Session记录用户登录信息,同样也可以在网站里随时判断用户是否已经登录。
4.3选修课程提示
当学生单击“选修课程”链接,查看所有选修课程列表,在列表中给出了对应选修课程的前导课程、最大人数、当前已选人数等,对每个选修课程均有一个“选修该课程”的按钮,单击此按钮即可选择对应课程。
选择完成后有提示选课成功,如图4-1,当只选择一门课程锁定时有选课出错提示,如图4-2。
图4-1选课成功图4-2选课出错
15
五.课程设计总结
回顾该系统从选题,到调研、需求分析、设计、编码实现、测试等,论文的撰写,这系列连贯的过程,感想颇多,收获也很多。
大致的总结几点,如下:
1(设计开发一个软件,首先要了解所涉及到行业的现状,一定要想办法进行行业调研,从不同途径获取该行业的专业知识。
合理安排系统设计开发时间,进行实际开发会发现需求分析与系统设计占主要的时间,如果前面的工作做好了,编码实现占用的时间很短。
所以我们要借助软件工程的思想---对软件开发过程进行控制。
2.在开发一个系统时,前期的分析准备工作非常的重要。
对于系统的需求要明确,这样才能做到有的放矢。
特别是对于系统中数据的存储和重要算法的设计,设计的不好会出现大量的冗余,不仅浪费存储空间,还影响查询效率。
例如:
系统中图的存储设计和求最短路径算法设计。
3.在设计的初期,对一个功能模块的设计,要想出两种或两种以上方案,这样可以进行比较,从而获得更佳的设计方案,设计开发过程中一定要吸取经验教训,避免返工。
尤其是一些重要算法或功能。
在对具体实现功能模块进行编程时,要养成良好的加注释的习惯,这样的话不仅能理清思路,而且可以为以后的调试程序带来很大的方便。
4.独立思考的同时,要虚心向别人请教,可以达到事半功倍的效果。
在具体编程实现系统功能的过程中,我遇到了不少的问题,我曾通过不同渠道向老师、同学、上相关网站、到BBS论坛寻求答案,收到了很好的效果。
5.懂得充分利用网络资源,因为实地调研的时间是非常有限的,所以需求分析中大部分分析结构都是在我阅读专业书籍,网络资料后得出的。
由于在外面工作以及其他原因,我无法借到专业书籍,只好在浩瀚的网络中寻找我所需要的资料,这无形当中培养了我通过网络获取资料信息的能力。
通过本次课程设计,我不但学到了