在线选课系统的设计与实现
1、目 录
1 绪论... 1
1.1论文研究背景... 2
1.2国内外研究现状... 2
1.3论文研究目的及意义... 2
1.4拟解决的问题... 3
1.5可行性分析... 4
2 相关软件及技术介绍... 5
2.1B/S结构简介... 5
2.2运行环境... 5
2.3Dreamwear 8. 6
2.4MySQL数据库... 6
2.5JSP技术... 7
2.6JavaBean介绍... 7
2.7本章小结... 9
3 系统总体设计... 10
3.1系统体系结构及各模块功能... 10
3.2数据库的设计... 13
3.3数据库连接... 16
3.4本章小结... 18
4 系统详细设计与实现... 19
4.1用户权限设计和管理... 19
4.2学生的操作... 21
4.3管理员的操作... 24
4.4系统退出... 28
4.5本章小结... 28
5 结论... 29
致谢... 31
参考文献... 32
附录 33
2、系统体系结构及各模块功能
本系统是为高校学院制定的个人选课及管理的现代化信息平台,学生能过浏览器进行网上选课和并且可以查询自己的选课计划及所选课程进度。同时,管理员可以通过游览器进行课程添加、删除和修改。这无论对于学生和教师管理员来说都节省了大量的工作量。充分利用网上选课系统来提高教学选课管理的效率,实现全面网络化、规范化和集成化。
系统分为以下三大模块来实现以上设计思想:
用户登录模块: 根据用户名,密码,用户类别 转发用户到不同的模块。
学生模块: 查看课程,选报课程,撤销选报课程,查询个人选课计划,学生登录注销,重新登录,学生个人资料修改。
管理员(教师)模块:查询课程信息,录入一门新的课程信息,修改一门课程的相关信息,删除一门课程,查询选课情况,设置选课时段。
根据功能的不同可以将本系统划分为四个主模块,五个子模块:
(1)身份验证:通过登录才可进入选课系统,登录信息提交后检验登录者的身
份是否合法,合法,则转入对应的操作界面。在本系统中,只有两种身份:学生、管理员(教师)。在本系统中管理员的登录和学生登录不在同一输入框。分为管理员登录和学生登录,再其对登录的身份验证,是否存在数据库中。
(2)选课:用于学生的网上选课,查看被选课程的时间及其选课的数量,完成该学期的选课任务。
(3)信息管理
Ø 信息浏览:信息浏览包括已选课程浏览、被选课程浏览、公共信息浏览、
已发布课程信息浏览。已选课程浏览是为学生提供的查看自己已经选择的课程信息。被选课程浏览用于学生重新选择课程。已发布课程信息浏览用于各代课老师查询自己已经发布的课程信息。
Ø 信息查询:信息查询包括教师个人信息查询、课程查询、选课名单查询。
课程查询通过课程编号(或者开课号)来查询该课程的相关介绍,包括课程内容、开课时间、地点等内容。通过选课名单的查询可以查看该学期选择某一门课程的学生情况。
(4)信息修改
修改:信息修改包括选课信息的修改,课程发布信息的修改,密码的修改,学生密码的修改,学生选课的修改。
本系统采用基于B/S模式的两层体系结构(Browser /Web Server /DatabaseServer),以JSP + JavaScript + JavaBeans + MySQL实现,http服务器由Apache + Tomcat服务器组成。
在中小型的开发团队或开发项目中,很多人选择了JSP+JavaBean的开发模式,但这种模式下,SQL语句应该写在什么位置,很多人,包括我自己都会走很多的弯路。很多书上要么推荐SQL语句写在bean中,让SQL调用即可(理由是这样子比较规范),要么推荐SQL语句写在SQL文件中(理由是方便开发,开发速度很快),但我在实际开发中,发现采用上述两种方式都不是很好,下面我将我的方法说一下,希望得到大家的指正。
我认为在做列表查询时,即按照某种条件查询某个表,一行一行的显示时,SQL语句应该写在JSP中,因为表中肯定会有些字段需要将代码转换成实际的含义,需要两个或更多的表关联查询,如果写在bean中,则要将返回结果再用bean进行转换,这种运行方法是非常不好的,而且也会严重影响数据库的运行速度。这时,若将SQL语句写在JSP中,执行放在bean中执行,这就加快了数据库的查询速度。相反如果写在bean中,开发及维护都会很不方便(因为 bean基本上都是单表操作的)。
原则:
(1) 采用多个连接查询,将所有需要转换显示的数据项转换成相应的含义;
(2) SQL写在JSP程序中,调用bean方法执行并得到数据结果列表。
而在进行单条详细信息修改时,则这条select查询语句应该写在bean中,bean返回该记录的所有字段信息,其中包含了那些需要将代码转换成实际的含义的字段,然后再将这些字段用bean的方法得到实际含义。这个操作与关联查询操作速度是一样的。
原则:
(1) 写在bean中;
(2) JSP页面不用关心具体的SQL语句,传进参数Id,传出详细结果;
(3) 需要转换显示的数据项,如果要求只读,仅作单纯的转换;
(4) 需要转换显示的数据项,如果允许编辑,则提供下拉列表方便选择,缺省
值=该数据的实际含义。