目录
1 背景与意义 2
1.1 课题背景 2
2 系统核心技术特点 3
2.1 web系统应用研究 3
2.1.1 N层体系结构 3
2.1.2 基于组件开发 3
2.2 JSP/Servlet对web应用系统的支持 4
2.3 SSH介绍 4
2.4 系统开发平台及运行环境 7
2.4.1 系统开发平台 7
2.4.2 运行环境 8
3需求分析 8
3.1系统需求 8
3.2功能需求分析 9
4系统总体设计 9
4.1设计思想 9
4.2数据库的设计 10
数据库物理表结构设计 10
5系统详细设计与实现 12
5.1 登录界面 12
5.2 主界面 12
5.3 用户管理 13
5.4 学生管理 13
5.5 用户添加 13
6系统测试 14
6.1 测试目的与目标 14
6.2 测试方法 14
6.3 测试结论 15
结 论 15
参考文献 15
致 谢 17
3需求分析
3.1系统需求
在传统的学生选课系统中,进行一次选课,教师需要首先安排好课程的学分,课程的上课时间和地点,然后教师需要收集学生上交上来的选课申请,进行统计分析,这样做一是耗费大量的财力人力,而且在收集过程中可能出现某些人没有提交甚至匿名提交胡乱填写的情况,毫无依据可查。最重要的是这样还可能造成学生因为接受到选课情况的延迟而造成学生没有办法选到适合自己的课程或者造成学生无法选课的情况。
当前盛行的学生选课系统,正是信息化建设的产物,它是传统的延伸。它可以利用互联网络和局域网,随时随地的让教师发布选课信息,查看学生的选课情况,对学生的选课成绩进行设置,这样更大的方便了学生可以进行网上选课。
3.2功能需求分析
本部分主要是介绍管理员模块的实现。
登陆
管理员登录:
系统将验证用户是否存在,输入信息是否正确,效验码的实现。
管理员注册:
系统将验证用户是否存在,以及用户信息是否合法。
添加功能:
添加老师用户:
管理员可以直接添加老师用户并可以上传老师头像等老师个人信息。
对老师申请注册进行审核:
老师可以在老师模块进行注册,要经过管理员审核确定后才生效。
审核功能:
课程的安排:
管理员进行对课程安排进行审核(包括对课程信息修改),审核成功后返回通 知老师。以课程表的形式显示安排。
课程申请:
管理员对老师和学生进行课程申请批准。
修改功能:
修改课程:管理员可以对课程安排修改但是有时间要求的,在选课前两天不能 修改课程。
删除功能:
删除课程:可以对安排好的课程进行删除但是有是有时间要求的在选课前 两天不能删除课程。
删除学生信息:对已经毕业的结业的学生进行删除,
留言板功能:
查看(删除)学生或老师留言。
模拟QQ聊天功能:实现管理员,老师,学生聊天。聊天用户名为学号(张三老师)
4系统总体设计
4.1设计思想
系统功能设计本着从用户角度出发的原则,要求实用,且符合用户提出的合理需求。系统设计在不违反系统整体性的基础上,可根据用户的需求进行二次开发,不断完善系统功能,便于系统的不断升级。
4.2数据库的设计
在数据库设计时,考虑到系统不同用户,不同权限,以及系统所使用范围和试卷的特有属性,分别建立了相应的表。本文转载自http://www.biyezuopin.vip/onews.asp?id=11023各个表的主键在表中也已相应标明。以下就是系统中几个关键的表。
根据以上的系统功能分析,可以得到数据库由以下几个部分组成:
(1)管理员表(admins表)
(2)课程信息表(courses表)
(3)课程选择表(courseschoice表)


<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0037)http://2school.wygk.cn/admin/main.asp -->
<HTML xmlns="http://www.w3.org/1999/xhtml">
<HEAD>
<TITLE></TITLE>
<META http-equiv=Content-Type content="text/html; charset=UTF-8">
<LINK href="images/style.css" type=text/css rel=stylesheet>
<STYLE>
.main_left {
TABLE-LAYOUT: auto;
BACKGROUND: url(images/left_bg.gif)
}
.main_left_top {
BACKGROUND: url(images/left_menu_bg.gif);
PADDING-TOP: 5px
}
.main_left_title {
PADDING-LEFT: 15px;
FONT-WEIGHT: bold;
FONT-SIZE: 14px;
COLOR: #fff;
TEXT-ALIGN: left
}
.left_iframe {
BACKGROUND: none transparent scroll repeat 0% 0%;
VISIBILITY: inherit;
WIDTH: 180px;
HEIGHT: 92%
}
.main_iframe {
Z-INDEX: 1;
VISIBILITY: inherit;
WIDTH: 100%;
HEIGHT: 92%
}
TABLE {
FONT-SIZE: 12px;
FONT-FAMILY: tahoma, 宋体, fantasy
}
TD {
FONT-SIZE: 12px;
FONT-FAMILY: tahoma, 宋体, fantasy
}
</STYLE>
<SCRIPT language=javaScript src="images/admin.js" type=text/javascript></SCRIPT>
<SCRIPT language=javascript src="images\Admin(1).js"></SCRIPT>
<SCRIPT>
var status = 1;
var Menus = new DvMenuCls;
document.onclick=Menus.Clear;
function switchSysBar(){
if (1 == window.status){
window.status = 0;
switchPoint.innerHTML = '
';
document.all("frmTitle").style.display="none"
}
else{
window.status = 1;
switchPoint.innerHTML = '
';
document.all("frmTitle").style.display=""
}
}
</SCRIPT>
<META content="MSHTML 6.00.2900.5726" name=GENERATOR>
</HEAD>
<BODY style="MARGIN: 0px">
<!--导航部分-->
<DIV class=top_table>
<DIV class=top_table_leftbg>
<DIV class=system_logo>
<IMG src="images/logo_up.gif">
</DIV>
<DIV class=menu>
<UL>
</UL>
</DIV>
</DIV>
</DIV>
<DIV style="BACKGROUND: #337abb; HEIGHT: 24px"></DIV>
<!--导航部分结束-->
<TABLE style="BACKGROUND: #337abb" height="92%" cellSpacing=0
cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD class=main_left id=frmTitle vAlign=top align=middle
name="fmTitle">
<TABLE class=main_left_top cellSpacing=0 cellPadding=0
width="100%" border=0>
<TBODY>
<TR height=32>
<TD vAlign=top></TD>
<TD class=main_left_title id=leftmenu_title>
常用快捷功能
</TD>
<TD vAlign=top align=right></TD>
</TR>
</TBODY>
</TABLE>
<IFRAME class=left_iframe id=frmleft name=frmleft src="left.jsp"
frameBorder=0 allowTransparency></IFRAME>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR height=32>
<TD vAlign=top></TD>
<TD vAlign=bottom align=middle></TD>
<TD vAlign=top align=right></TD>
</TR>
</TBODY>
</TABLE>
</TD>
<TD style="WIDTH: 10px" bgColor=#337abb>
<TABLE height="100%" cellSpacing=0 cellPadding=0 border=0>
<TBODY>
<TR>
<TD style="HEIGHT: 100%" onclick=switchSysBar()>
<SPAN class=navPoint id=switchPoint title=关闭/打开左栏><IMG
src="images/right.gif">
</SPAN>
</TD>
</TR>
</TBODY>
</TABLE>
</TD>
<TD vAlign=top width="100%" bgColor=#337abb>
<TABLE cellSpacing=0 cellPadding=0 width="100%" bgColor=#c4d8ed
border=0>
<TBODY>
</TBODY>
</TABLE>
<IFRAME class=main_iframe id=frmright name=frmright src=""
frameBorder=0 scrolling=yes></IFRAME>
<TABLE style="BACKGROUND: #c4d8ed" cellSpacing=0 cellPadding=0
width="100%" border=0>
<TBODY>
<TR>
<TD>
<IMG height=6 alt="" src="images/teble_bottom_left.gif"
width=5>
</TD>
<TD align=right>
<IMG height=6 alt="" src="images/teble_bottom_right.gif"
width=5>
</TD>
<TD align=right width=16 bgColor=#337abb></TD>
</TR>
</TBODY>
</TABLE>
</TD>
</TR>
</TBODY>
</TABLE>
<DIV id=dvbbsannounce_true style="DISPLAY: none"></DIV>
<SCRIPT language=JavaScript>
<!--
document.getElementById("dvbbsannounce").innerHTML = document.getElementById("dvbbsannounce_true").innerHTML;
//-->
</SCRIPT>
</BODY>
</HTML>
















