web课程设计课程管理系统.docx
- 文档编号:17503051
- 上传时间:2023-07-26
- 格式:DOCX
- 页数:80
- 大小:2.34MB
web课程设计课程管理系统.docx
《web课程设计课程管理系统.docx》由会员分享,可在线阅读,更多相关《web课程设计课程管理系统.docx(80页珍藏版)》请在冰点文库上搜索。
web课程设计课程管理系统
一、绪论
1.1概要描述
课程设计管理系统,实现课程信息管理的电子化,减轻管理人员的负担。
管理人员能够很好对课程进行管理。
长期以来,学校基本都是使用传统人工的方式管理学生课程信息,效率低、保密性差,随着计算机和网络技术的发展,使用计算机来管理课程信息已经成为发展趋势。
这样可以提高学生选课和成绩管理工作的效率,围绕此管理所需要的学生个人信息、课程和任课教师信息、所选课程信息进行管理及维护。
1.2团队分工
二、系统需求分析
2.1功能需求
系统整体的用例图如下:
图2.1系统用例图
管理员对课程信息进行增加、删除、编辑和查看;教师打印选课学生名单、班级成绩表、查看课程;学生可以查看自己已选课程的成绩、打印班级课程表、查询课程。
需要注意的是,由于课程设计任务书表达的不明确,所以我们将管理员和教师的功能合并到教师角色中。
数据流图如下:
图2.2数据流图
图2.3数据流图
三、系统设计
3.1系统采用的逻辑以及物理结构
图3.1
3.2系统的开发环境选择
(1)使用web的开发环境是myeclipse10;
(2)数据库使用的是SQLsserverr2008。
3.3系统的数据库设计(个人负责程序涉及的数据库)
表3.1系统数据库设计
表名
功能说明
选课表(choose)
存放选课信息
班级表(class)
存放班级信息
院系表(college)
存放院系信息
课程表(course)
存放课程信息
专业表(major)
存放专业信息
学生表(student)
存放学生信息
教师表(teacher)
存放教师信息
表3.2班级信息表class
序号
字段名
类型
是否为空
是否主键
描述
1
num
Varcher
否
是
主键、班级编号
2
name
Varchar
否
否
班级名称
3
teacher
Varchar
否
否
班级辅导员
4
time
Varchar
否
否
入学时间
5
major
Varchar
否
否
专业
表3.3教师信息表teacher
序号
字段名
类型
是否为空
是否主键
描述
1
num
Varchar
否
是
主键、教师编号
2
name
Varchar
否
否
教师姓名
3
course
Varchar
否
否
教师姓名
4
password
Varchar
否
否
密码
表3.4院系信息表college
序号
字段名
类型
是否为空
是否主键
描述
1
num
Varchar
否
是
主键、系编号
2
name
Varchar
否
否
院系名称
表3.5课程信息表class
序号
字段名
类型
是否为空
是否主键
描述
1
num
Varchar
否
是
主键、课程编号
2
name
Varchar
否
否
课程名称
3
time
Varchar
否
否
课程学时
4
score
Varchar
否
否
学分
5
style
Varchar
否
否
课程类型
6
starttime
Varchar
否
否
课程开始时间
7
endtime
Varchar
否
否
课程结束时间
8
classroom
Varchar
否
否
教室
9
teacher
Varchar
否
否
任课教师
10
allamount
Int
否
否
总人数
11
nowamount
Int
否
否
当前人数
12
condition
Varchar
否
否
课程状态
表3.6学生信息表student
序号
字段名
类型
是否为空
是否主键
描述
1
num
nchar
否
是
主键、学生学号
2
name
nchar
否
否
学生姓名
3
sex
Varchar
否
否
学生性别
4
birth
Varchar
否
否
学生出生日期
5
jg
Varchar
否
否
学生籍贯
6
mz
Varchar
否
否
学生名族
7
class
Varchar
否
否
学生班所在级
8
password
Varchar
否
否
密码
表3.7选课信息表xuanke
序号
字段名
类型
是否为空
是否主键
描述
1
num
Int
否
是
自增主键、选课编号
2
studentnum
Varchar
否
否
学生编号
3
coursenum
Varchar
否
否
课程编号
4
grade
Varchar
否
否
成绩
表3.8选课表xuanke
序号
字段名
类型
是否为空
是否主键
描述
1
Xuankexh
Int
否
是
自增主键
2
Cxh
Int
否
否
课程信息表主键
3
sgrade
Varchar
否
否
课程分数
4
Txh
Int
否
否
教师主键
图3.2E-R关系图
四、系统实现及测试
4.1系统模块功能介绍
(1)用户身份:
教师
当用户登录系统后,如果他的身份是管理员,那么他可以对学生信息进行增加、删除、修改和查询。
图4.1
以下代码为循环读出数据库总学生信息值:
<%
while(rs.next()){
%>
id=<%=rs.getString("num")%>&cla=<%=rs.getString("class")%>">编辑 btnDelete('<%=rs.getString("num")%>')">删除
<%}%>
当点击增加按钮时就会出现增加界面,显示出学生管理信息表中所有的字段,对于存在关联的字段的选项则从关联表中读出所有数据,以下拉列表的形式或者单选框的形式显示出来,方便用户选择,不需要手动写入,直接从下拉框或单选框中获取即可。
如果不填写课程编号或其他任何一个选项,就点击提交按钮,就会出现提示框,提醒你要将信息填写完整,否则无法提交。
上方有一个功能菜单导航,用户可以通过这些超链接直接进入到教师角色可以进行操作的其他界面。
图4.2
从数据库中获取课程种类下拉框中的值,代码如下:
<%while(rs.next()){%>
<%}%>
图4.3
当用户点击图表3右侧的编辑按钮,程序首先将这一行所对应的课程信息的主键值传给编辑处理界面,编辑页面接受主键值后,根据主键值从student表中读出这一列所对应的数据显示在如下界面中。
教师可以对课程中的任意一个信息进行更改。
对于像性别、班级这些选择可以直接从单选框和下拉框中更改,不需要手动输入数据。
图4.3
当用户点击删除按钮时,程序同样将这一行对应的主键值传给删除处理界面,同时会通过javascript弹出一个对话框,问用户是否确定删除,如果点击确定,则将与传过来的主键相对应的一整行删除掉;如果点击取消,就不对这一行进行处理,原始数据保留。
相关代码如下:
functionbtnDelete(id){
if(confirm("确认删除该条记录吗?
"))
location.href="tea_xsgl_del.jsp?
id="+id;
}
(2)用户身份:
学生
当登陆的用户是学生,他可以查询个人信息、进行课程信息查询、进行选课操作、查询成绩。
图4.4
当用户点击上方选课信息时,会显示所有的课程信息,包括课程编号、课程名称和状态。
如果该门课可选,则会在状态列里显示选择按钮,当用户点击选择按钮之后则会显示已选提醒用户该门课已经选择了。
显示如下:
图4.5
(3)登陆页面
当用户在进入系统之前,进入登陆界面,会看到如下页面:
图4.6
用户需要输入用户名、密码,选择身份,才能点击登陆按钮进行登陆,而且要求密码长度在6-10位之间。
如果三个中有一个没有输入或者选择,则会通过javascript弹出一个对话框,提醒用户输入完整。
相关实现的代码如下:
functioncheckForm(){
varuser=document.myForm.username.value;
if(user==""){
alert("用户名不能为空!
");
document.myForm.username.focus();
returnfalse;
}
varpwd=document.myForm.userpwd.value;
if((pwd.length<6)||(pwd.length>10)){
alert("密码长度在6到10位之间!
");
returnfalse;
}
varsf=document.myForm.usersf;
varflag=false;
for(vari=0;i if(sf[i].checked) flag=true; } if(! flag){ alert("身份不能为空! "); returnfalse; } } 如果用户全部填写,就会将表单信息提交到服务器loginProc.jsp程序进行相关处理。 程序会根据用户选择的身份,进入相关的数据库进行身份比对,判断用户名和密码是否一致。 如果用户名或密码有一个不正确,则会跳转到登陆错误界面,如下图: 图4.7 如果用户名和密码都正确,则会跳转到响应身份吧的主页面。 程序判定代码如下: while(rs.next()){ if(rs.getString("num").equals(name)) flag=true; } if(flag){ sql="selectpasswordfromstudentwherenum=? "; pstm=conn.prepareStatement(sql); pstm.setString(1,name); rs=pstm.executeQuery(); while(rs.next()){ tpwd=rs.getString("password"); } if(tpwd.equals(pwd)){ Cookiecookie1=newCookie("userName",name); Cookiecookie2=newCookie("userPwd",pwd); cookie1.setMaxAge(60*60); cookie2.setMaxAge(60*60); response.addCookie(cookie1); response.addCookie(cookie2); session.setAttribute("username",name); response.sendRedirect("student/student.jsp"); }else response.sendRedirect("error.html"); 4.2系统实现过程中遇到的主要疑难问题和解决方案 问题一: 课程信息管理的主模块显示不出来。 解决方案: sql语句错误,没有考虑表之间的关联,当查询包含外键的表时应该将关 联字段与主键值进行连接。 问题二: 在各分功能进行删除和编辑时,因为数据库各表之间的关联性,无法对其直接操作。 解决方案: 在进行删除和编辑前,要对其外键先进行操作,再对其本身进行操作。 问题三: 修改课程信息时,修改后的信息无法保存; 解决方案: PreparedStatement对象必须使用占位符,不能直接传递变量值。 问题四: 进行分页时已经将代码完全拷贝进去了,可是提交时还是出现“只进结果集不支持请求的操作”的错误: 解决方案: Statementstm=conn.createStatement();传递一个参数“ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY”,问题就解决了。 问题五: 界面布局不合理,不美观; 解决方案: 熟悉diV的使用,给需要修改样式的元素套一个diV,通过css对布局进行修改和美化;然后借鉴合肥学院的教务管理系统的UI,我们对其进行了截图和参考,然后完善了自己的页面布局。 4.3系统实现的特色之处(包括技术和功能) 系统的基本功能都是平时课堂中学习的内容,主要就是添加了分页功能。 我们在UI设计上,参照了合肥学院的教务管理系统,对于常规的界面进行了简单的美化。 4.4系统测试 进行多次试验,将数据库中已有的信息进行修改,观察数据库中的值是否有改变;登陆时输入错误信息,观察是否能登陆到页面。 总体测试方案就是多次试验观察结果。 基本功能可以实现。 五、总结 5.1不足 (1)数据库设计不合理,导致后序程序开发总是在不断的修改,这样可能导致系统产生更多的安全隐患,对系统的整体开发很不利。 (2)界面功能单一,只是实现了课程设计中老师要求的内容,没有对其进行扩充,只是简单的增删改查。 (3)因为课程设计任务书表达不明确,再加上我们团队对其理解和人物树有出入,系统没有管理员的角色,将管理员的所有功能合并到了教师角色中,可能会对用户使用上造成不便。 5.2总结 作为本小组的组长,我较称职的完成了我的工作,在缺少一人的情况下,我们3位成员较成功的完成了5人题。 从开始的系统分析与功能设计到分工再到整合最后在一起调试BUG等,我们3位成员一起成长,虽然过程中有许多磕磕绊绊,但是在我们的努力下全都一一克服了。 课程设计这段时间使我对web有了更深层次的了解,以前在浏览网页时,觉得它是一个很神秘的东西,好像很难做出来;上第一堂课时,我非常不相信张老师说的“等我们上完这学期后大家都能做出这些网页”这句话。 但是通过这段时间的实践,我也可以做出这些网页了,虽然我现在的技术不是很精细,做出来的网页也不够美观,功能可能也比较简单,但是我还是很开心,毕竟我在往前走,我在进步。 在课程设计中我遇到很多问题,首先是数据库设计的问题。 在没有真正开始编代码的时候,我们只是简单的设计了一下数据库,并没有深入的考虑当我们真正开发起来那些表之间应该有什么关系,只是按照任务书中直白的书面要求,对应的建了十几个表,可是当我们实际开发时,慢慢发现问题很多,只能一点一点的去补救,所以我现在很明确一点,就是以后做课程设计的时候一定要花足够的时间设计出一个合理完善的数据库。 除此之外,这两周的时间让我对web知识理解的更深一些,因为系统需要我们将平时学到的所有知识融会贯通,同时善于利用身边的资源,有不懂的问题可以向老师或同学请教,也可以通过网络获得我们想要的知识。 就像这次课程设计,我了解到了分页的方法,虽然不能解释分页每一行代码的意思,但是大致明白是怎么用的。 当然我的能力还是很有限的,通过这次的课程设计,我大致明确了以后的任务,要好好学习java和javaEE。 对于问题不仅要知道其然,还要知道其所以然。 参考文献 [1]邹建.深入浅出--SQLSERVER2005开发、管理与应用实例.人民邮电出版社,2008年. [2]樊月华.Web技术应用基础.清华大学出版社,2013年. [3]飞思科技产品研发著: JSP应用开发详解(第二版),电子工业出版社,2004年. [4]张洪伟著: TomcatWeb开发及整合应用,清华大学出版社,2006年. [5]陈刚著: Eclipse从入门到精通(第2版),清华大学出版社,2007年. [6]史济民等著: 软件工程—原理、方法与应用(第3版),高等教育出版社,2013年. [7]朱福喜著: 面向对象与Java程序设计,清华大学出版社,2011年. [8]郑人杰等著: 软件测试,人民邮电出版社,2014年. [9]赵彦著: JavaEE框架技术进阶式教程,清华大学出版社,2014年. [10]耿祥义著: Java课程报告,清华大学出版社,2013年. [11]肖磊等著: Java实用教程,人民邮电出版社,2013年. 附录 1、index.jsp <%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%> <% Stringpath=request.getContextPath(); StringbasePath=request.getScheme()+": //"+request.getServerName()+": "+request.getServerPort()+path+"/"; %> DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">
--
-->
ThisismyJSPpage.
2、login.jsp
<%@pagelanguage="java"contentType="text/html;charset=UTF-8"
pageEncoding="UTF-8"%>
DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http:
//www.w3.org/TR/html4/loose.dtd">
functioncheckForm(){
varuser=document.myForm.username.value;
if(user==""){
alert("用户名不能为空!
");
document.myForm.username.focus();
returnfalse;
}
varpwd=document.myForm.userpwd.value;
if((pwd.length<6)||(pwd.length>10)){
alert("密码长度在6到10位之间!
");
returnfalse;
}
varsf=document.myForm.usersf;
varflag=false;
for(vari=0;i if(sf[i].checked) flag=true; } if(! flag){ alert("身份不能为空! "); returnfalse; } }
<%
StringloginUserName="",loginUserPwd="";
Cookie[]cookies=request.getCookies();
if(cookies!
=null){
intlen=cookies.length;
for(inti=0;i Cookiecookie1=cookies[i]; if(cookie1.getName().equals("userName")) loginUserName=cookie1.getValue(); elseif(cookie1.getName().equals("userPwd")) loginUserPwd=cookie1.getValue(); } } %>
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- web 课程设计 课程 管理 系统
![提示](https://static.bingdoc.com/images/bang_tan.gif)