《数据库课程设计选课系统.docx》由会员分享,可在线阅读,更多相关《数据库课程设计选课系统.docx(14页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、摘 要本文通过分析浏览器/服务器结构的特点并结合选课的实际情况,提出了基于浏览器/服务器结构网上选课系统的基本设计思想,简要介绍了系统各功能模块及数据库的设计,着重讨论了用 ASP.NET技术和SQL Server 2000开发网上选课系统时的数据库访问技术和动态网页制作技术,并给出了部分实现代码。通过该系统,使学生可以方便地在校园网上进行网上选课。该B/S结构的系统在Windows XP系统和VS2005.NET平台下开发完成,使用C作为ASP.NET的开发语言,SQL Server 2000作为数据库。系统有较高的安全性和较好的性能。其中连接数据库的字符串可以随时在web.config里修
2、改,并经过编码加密,增加了灵活性,保护了数据库的安全。代码尽量使用存储过程和尽量减少数据库连接的打开时间等手段来提高性能。 本文中主要介绍了学生选课系统中的学生选课界面即对数据库的查询添加功能,并且附上了部分代码。关键词:网上选课,浏览器/服务器结构,ASP.NET,数据库管理系统摘 要11.需求分析32.系统功能与设计32.1 系统分析32.2 用户所具有的功能32.3 系统总体设计42.4 数据库的设计52.5 各个表的实现53系统界面说明63.1 系统登录界面63.2.查看必修课程列表页面83.3.查看选修课程列表页面93.4.查看已选课程页面11总 结13参考文献141 需求分析随着在
3、校大学生人数的不断增加,教务系统的数据量也不断的上涨。以往的选课方法是随堂报名。这种方法虽然直接,但是造成选课的盲目性和教务处处理数据的繁重性。为了减轻教务处工作,以及每个学生更好的选择自己所喜欢的科目。针对学生选课这一环节,本系统从学生网上自主选课以及教师的课程发布两个大方面进行了设计,基本实现了学生的在线信息查询、选课功能以及教师对课程信息发布的管理等功能。2 系统详细设计2.1 系统分析在本系统中,有三类用户:系统管理员,教师和学生。三种不同的用户所具有的操作权限以及操作内容均不一样。我负责的是学生这一部分本选课系统给予教师很大的自主权,系统管理员只负责向系统中添加学生和教师的个人信息以
4、及教学楼教室信息。系统管理员不参与开设课程、选择课程等,一切均由教师、学生等录网站自行完成。系统管理员设置一个选课时间段,在到达时间段以前,教师可以开设课程;到达时间段以后,学生可以登陆网站选择课程。对于学生用户,每个学生除了必须选择必修课程外,至少还要选择两门选修课程,学生可以对自己选课信息锁定,以免不小心被修改。当时候超过选课时段后,系统自动锁定学生的选课课程。系统可以根据学生的选课信息,生成一份学生自己的课表。课程结束后学生可登录网站查询成绩与学分。根据上面的要求,从操作功能上可以分为两个类:一个是通用操作,主要实现用户的登录注销和修改密码等;另一种是为不同用户定制不同操作2.2 用户所
5、具有的功能我主要负责学生用户界面的设计:显示和修改个人信息:学生登录系统后,可以查看和修改学生的个人信息,如姓名,性别,电话等。查看必修课程:学生登录后,可以查看所有的必修课程。查看该课程的信息,上课时间地点,开课教师信息等。选择选修课程:学生登录系统后,在所有选修课程中可以选择至少两门选修课程。同时可以查看相关信息。锁定选课信息:学生登录系统,确定了所选课程后,可以锁定自己的选课信息,以防被别人或则自己不小心修改。查看最终选课信息:学生登录系统后,可列出已选择的课程,若选课信息未被锁定,则可以退选,若所选课程少于两门,系统会提示选择的课程少于两门。查看学分和成绩:课程结束后,学生登录系统可查
6、看自己学习课程的成绩和已获的学分。2.3 系统总体设计根据系统的系统功能分析,可以划分以下几个模块,如图1所示用户登录身份验证模块设置选课时间模块录入信息模块开设课程模块编辑程序时间地点模块评分模块查看课程模块选课和锁定模块数据库模块 数据库访问模块 图1 系统总体设计2.4 数据库的设计 本系统的数据库实体主要有“学生”、“教师”、“教学楼”、“教室”、“课程”等。其中“教师”与“课程”存在“开设”联系,并且一个教师可以开设N门课程,即“教师”与“课程”之间是一对多的关系。同样“教学楼”与“教室”也存在一对多的关系。一个学生可以学习N门课程,一门课程可以有M个学生学习,即“学生”与“课程”之
7、间是多对多的关系。同样“课程”与“教室”之间也是多对多的关系。整个数据库可以用一个E-R图表示,如图2所示: 图2 数据库的设计图2.5 各个表的实现(1)Student表。Student表用来存储学生的个人信息,使用学号作为主键,如图3:图3 (2)Course表。Course表用来存储课程信息,Course表以课程编号为主键,设置课程编号自动增加1(通过建表的时候对属性列设置“标识”,并设置“标识递增量”为1)。表中开课教师Id为外键,所有“TId”的值必须是Teacher表中的“TId”值。设置外键关系可以通过在建立表的窗口中单击右键,在右键菜单中选择“关系”,在弹出的对话框中设置外键关
8、系。如图4:图4(3)SC表。SC表用于存储学生的选课信息,在SC表中学号和课程编号是主键,同时也是外键。如图5:图53系统界面说明下面是在线选课系统的预览,此处简单介绍本系统的部分功能。3.1 系统登录界面 图6 系统登录界面在用户名和密码处输入用户名和密码,在“用户类型”下拉列表框中选择“学生”,单击“登录”按钮,登录选课系统。主要代码如下: private void btnLogin_Click(object sender, System.EventArgs e) int type = Int32.Parse(ddlType.SelectedItem.Value); string use
9、r = txtUser.Text.Trim(); string inputkey = txtKey.Text.Trim(); string key = ; string sql = ; DataSet ds; switch( type ) case 1:/学生 /验证学生身份代码 break; case 2:/教师 break; case 3:/系统管理员 break; default; break; 3.2 查看必修课程列表页面 图7 查看比修课程 登录成功后,进入学生主页,点击“必修课程”链接,得到所有必修课程的列表,在列表中可以看到所有必修课程及课程的简单信息,如授课教师姓名、课程所占学
10、分等。在列表中可以点课程名称,如“计算机应用基础”链接,查看课程详细信息;点教师姓名,如“李萍”链接,查看教师的详细信息;点击“查看上课时间地点”链接,查看对应课程的上课时间和地点。在页面加载的时候从数据库读取所有必修课信息,代码如下:string sql = select Course.*,TName from Course,Teacher where CType like 必修 and Course.TId like Teacher.TId;/查询处所有必修课程信息 DataSet ds = Db.ExecuteSelectSql(sql); if ( ds != null & ds.Ta
11、bles.Count 0 ) dgCourse.DataSource = ds.Tables0; dgCourse.DataBind();/将查询结果绑定到DataGrid中 3.3.查看选修课程列表页面图8 查看选修课程 单击“选修课程”链接,查看所有选修课程列表,在列表中给出了比必修课程更多的信息,比如多了对应选修课程的前导课程、最大人数、当前已选人数等,对每个选修课程均有一个“选修该课程”的按钮,单击此按钮方可选择对应课程。主要代码如下: string sql = select x.*,TName,(select CName from Course as y where y.CId =
12、x.CPreCId) as CPreCName from Course as x,Teacher where x.CType like 选修 and x.TId like Teacher.TId;/查询该学生已选修的课程 DataSet ds = Db.ExecuteSelectSql(sql); if ( ds != null & ds.Tables.Count 0 ) dgCourse.DataSource = ds.Tables0; dgCourse.DataBind(); for ( int i = 0; i 0 & ds1.Tables0.Rows.Count 0 ) dgCours
13、e.Itemsi.Cells6.Text = ds1.Tables0.Rows00.ToString(); bool locked= bool.Parse(SessionLocked.ToString(); if ( ! locked ) lbLock.Text = 您尚未锁定选课信息!; else lbLock.Text = 选课信息已被锁定!; dgCourse.Columns9.Visible = false; 3.4.查看选课时间页面图9 查看选课时间查看选课时间代码如下: DateTime dtStart,dtEnd; try dtStart = DateTime.Parse(txt
14、timeStart.Text); dtEnd = DateTime.Parse(txtTimeEnd.Text); catch Response.Write(MyUtility.Alert(输入错误); return; StreamWriter sw = new StreamWriter(http:/localhost/sc/login.aspx,false); sw.WriteLine(dtStart.ToString();/写入开始时间 sw.WriteLine(dtEnd.ToString();/写入结束时间 sw.Close(); lbTime.Text = 选课时间为:+dtStar
15、t.ToString()+到+dtEnd.ToString();总 结经过一段时间的学习与实践,我选择的课题学生选课系统基本完成。其功能基本符合网络上的用户要求,能够在线选课,在线添加课程,在线查询课程等。虽然由于自己知识上的不足,有些地方有少许错误和容错性能比较低,但是还是可以基本完成选课系统应有的功能。 通过这次设计过程我得到了很多的宝贵经验,让我遇到困难时能够及时的发现并且想办法去解决,而不是向以往一样只是在那发呆,不知所措。通过这次设计我学会的不仅是知识,还有遇见困难时要冷静沉着,想想原因和为什么不知道怎么解决。相信下次做这方面的设计时,我会很轻松地去面对。参考文献1吴晨,ASP.NET+SQL Server-数据库开发与实例,清华大学出版社,出版2006年7月2(美)内格尔,C#高级编程(第4版),清华大学出版社,出版2006年10月3(美)solid,SQLServer2005从入门与精通(应用技术基础),清华大学出版社,出版2006年09月4(美)保罗ASP.NET 2.0经典教程C#篇人民邮电出版社,出版2007年5月
限制150内