摘要
随着计算机技术的飞速发展,信息网络已成为社会发展的重要保证。如何以网络为纽带快速、高效、方便地实现知识传递,以现代化手段促进教学改革,是教育工作者要解决的问题。传统的教学方式体现出教师和学生不能同步的问题,现在有一种教学方式就是基于网络的教学,它实现了在网络上学生和教师互动。
网上教学辅助系统是面向教师和学生的辅助系统, 基于JSP技术的网络教学平台是体现校园网的优势,通过此平台,学生、老师可以不受时间、空间、地域的限制,进行教学互动。相比较传统教学更容易提高教学效率。
整个系统界面简洁、操作方便,包含了用户操作模块:普通用用户登录;学生提交作业、查看课件、提出问题和在线答题;教师发布课件、批改作业、更新试卷、解答问题等;还包含了管理员操作模块:系统管理员登录、维护等功能。
本系统语言选择java,具体采用JSP +SQL Server开发。系统的实现是在SQL Server数据库上并基于B/S结构。
关键词:软件工程;网上教学; JSP;B/S;SQL SERVER 2000
ABSTRACT
With the computer technically developing so fast, the information network has become the important guarantee that the society develop. To take the network as the link fast, it is how highly effective,how to improve the reform of teaching, conveniently realizes the knowledge transmission. In the platform, the student may be spatial, the region limited, not really realizing the on-line browsing course content, to complete the study work, function and so on .Now,there is a way of teaching students based on networks.It can be made student and teacher in the same platform.
The on-line teach assistant system faces to the teacher and students’ network teaching system, In this platform system structure, the function has carried on the detailed analysis, and introduced in the design uses essential technology and could be unlimited time and district.Compared to old system,it can improve the efficiency better.
The system is succinct in every management, containing the general user and registration, search , examination and download. The students submit the studywork, the examination class and the result. It focus on how to solve the problem that is hard to solve and it provides some ways about design idea.
The system adopts java ,JSP and SQL Server 200 technology. The System adopts SQL Server database and based on the B / S structure.
Keywords: Software Project;Teaching Network; JSP;B/S;SQL SERVER 2000
目 录
2. 1. 3.系统数据流图…………………………………………………………………...4
2.2.2.1.设计方案………………………………………………………………………5
2.2.2.2.实施步骤………………………………………………………………………6
4.1设计错误…………………………………………………………………………..28
4.2配置错误…………………………………………………………………………..28
5.1 系统完成结果…………………………………………………………………….29
5.2 系统讨论结果…………………………………………………………………….29
6. 总结................................................31
参考文献................................................32
致 谢……………………………………………………………....33
1. 引言
1.1课题的来源,意义和目标
近年来,随着计算机的普及,管理系统的应用也得到迅速发展,计算机越来越广泛的应用于各个领域。随着学生人数的增多,传统教学局限性,使得软件工程网上教学辅助系统成为教学管理的迫切需要。
传统的教学方式表现出在老师和学生不能同步;例如:作业必须由人上交、提问只能在课堂上提出;这样既浪费了各自的时间又使教学效率变得较低。而网上教学辅助系统,实现了电子教学;它可以随时随地让学生和老师进行互动。通过整个系统能时时监控,以便随时对教学进行管理,大大提高了管理效率、工作效率。
网上教学辅助系统的目标就是学生和老师可以互动。可以实现学生查看课件、上传作业、在线提问、答题等功能;老师可以上传课件、在线回答、更新试卷等功能;管理员可以更新用户信息、维护等功能。
1.2. 完成的内容与设计结果
1.2.1.设计的内容
软件工程网上教学辅助系统由教师教学系统、学生学习系统和教学管理系统三大模块组成,这些模块之间相互联系,相互配合构成一个完整的网络教学系统。
主要设计的内容:
1、教师教学系统与学生学习系统
教师教学系统与学生学习系统的功能相对应,主要包含以下几个模块:
(1) 网上作业:作业环节是对所学知识理解和巩固的过程。
(2) 在线测试:教师可以完成试题添加,试题管理。
(3) 讨论答疑 :在界面上采用了BBS形式,提问与回答的过程是异步的, 学生将学习中遇到的问题用留言的形式公布在网上,教师通过此模块进行答疑。教师也可以在网上发布讨论题,引导学生进行学术研究和讨论
(5) 网上交流:通过此模块可以解决个别学生的概念模糊,解题思路混乱等问题。
2、教学管理系统
系统分为人员管理、课程管理、作业管理、考试管理和讨论交流管理。
(1) 人员管理:包括系统管理员、教师和学生管理。其中管理员可以对所有人员进行添加、修改、删除和查询,同时还可以对教师的所有权限进行分配。
(2) 课程管理:包括课程添加、课程查询和课件管理。
(3) 作业管理:可以查看、修改和删除作业。
(4) 考试管理:试题添加、修改和删除。
3、普通用用户登录;搜索课件、查看作业、下载课件等操作
(1)普通用用户登录;
普通用户可以登录个人信息到软件工程网上教学辅助系统,成为普通用户。
(2)搜索课件、查看作业、下载课件等
普通用户登录软件工程网上教学辅助系统以后可以进行搜索信息或者资料、查看信息或者资料、下载信息等功能,
4、系统管理员登录、维护等功能。
系统管理员在软件工程网上教学辅助系统上登录、维护信息的等功能。
5、 其他基本功能
系统同时要具备其他的系统的基本功能:新用户添加,用户登录,用户退出、删除用户等
1.2.2.设计结果
完成的软件工程网上教学辅助系统是提供给用户的一个查看教学的平台,界面简约、明快、方便,功能是学生、老师可以在线操作。例如:学生查看课件、老师上传课件。
2. 总体设计与实施方案
2.1.总体设计
2.1.1.设计目标
整个系统界面简洁、操作方便,包含了普通用用户登录;搜索课件、查看课件、下载课件等操作;学生提交作业、查看课件、提问和在线答题;教师发布课件、查看作业、更新试卷、解答问题;系统管理员登录、维护等功能。
2.1.2.系统结构
本系统分为三大块:教师、学生、管理员系统;模块结构如下:
图1系统模块
2.1.3.系统结构数据流图:
数据流图表现了用户、系统、数据库的关系。
图2数据流图
2.2.实施方案
2.2.1. 设计环境需求与程序设计语言选择
为了开发一个安全、稳定的系统,选择以下开发平台:
硬件环境:建议使用CPU cellon1.7G、内存256以上的机器,因为J2EE和JAVA BEEN很占内存运行起来确实不容乐观。
软件环境: jDK1.5、Eclipse、MS SQL SERVER 2000、Dreamweaver MX、tomcat5.5
等;
本系统采用MS SQL SERVER 2000作为后台数据库,最初拟定的数据库选择有MS SQL Server、ORACLE、BEA的PointBase。 因为整个系统在windows下开发, ORACLE针对小型系统又相对较臃肿,而且我相对最熟悉且简单的MS SQL SERVER 2000,所以后台数据库就选择了MS SQL SERVER 2000;
程序设设计语言为:JSP、J2EE
1.J2EE技术,也就是Java 2 Platform Enterprise Edition,即Java2企业版。它是由Sun公司发起的,J2EE是现在市场上的主流产品。J2EE标准是过去几年中开发的许多重要应用最终促成的一个与厂家无关的公共标准。它将许多分散的Java技术整合到一起,组合成一个完整的企业标准。
本系统设计使用浏览器+jsp(servlet)+SQL SEVER
Servlet及JSP
Servlet及JSP都是基于Java的技术。Servlet是用来扩展Web服务器功能的网络组件,它基于请求/响应机制。JSP和Servlet非常相似,但JSP并不是纯Java代码。
本系统采用三层结构:
三层客户机/服务器应用程序使用一个中间或中间层,应用程序服务器,它在客户机应用程序和后端数据库之间操作。中间层存储了系统的商业逻辑,并协调客户机上与后端数据库交互的显示。
使用三层体系结构是出于以下两个动机: 改进的可伸缩性、可用性和性能
2、JSP技术:JSP是一种卓越的Java技术,它基于强大的Java语言,可在任何Web或应用服务器上运行,与Java Enterprise API(Java 企业应用编程接口)紧密结合,可快速创建高性能的Web应用程序。它将内容的生成和显示进行分离,使Web开发人员能专注于应用逻辑的处理;利用可重用的组件(Java Btens\EJB),加快了总体开发速度,并提高了系统质量,采用标识简化页面编程,降低了开发人员的难度。
3、 XML与HTML技术:XML和HTML一样属于标记语言,可以通过标记来描述数据的结构,并且它允许用户自行视描述数据的需要,随意地制定不同的标记,这和HTML有着极大的差别,除此之外,XML不同于HTML对于所有的标记都已经定义了显示格式的意义,
4. SQL Server
SQL Server 是一个关系数据库管理系统。SQL Server 2000, 是Microsoft 公司推出的SQL Server 数据库管理系统的新版本。它增加了许多更先进的功能,具有使用方便、可伸缩性好、与相关软件集成程度高等优点。运行Microsoft Windows 2000 的大型多处理器的服务器等多种平台使用。
2.2.2.方案与实施步骤
2.2.2.1设计方案
利用B/S结构:即Browser/Server(浏览器/服务器)结构,是随着Internet技术的兴起,对C/S结构的一种变化或者改进的结构。在这种结构下,用户界面完全通过WWW浏览器实现,一部分事务逻辑在前端实现,但是主要事务逻辑在服务器端实现,形成所谓3-tier结构。B/S结构,用通用浏览器就实现了原来需要复杂专用软件才能实现的强大功能,并节约了开发成本,是一种全新的软件系统构造技术。随着Windows 98/Windows 2000将浏览器技术植入操作系统内部,这种结构更成为当今应用软件的首选体系结构。显然B/S结构应用程序相对于传统的C/S结构应用程序将是巨大的进步。
利用JSP编程技术及SQL数据库管理与建立,来实现两者的链接,并且运用SQLSERVER语言实现对其数据库进行访问或者修改。
2.2.2.2实施步骤
1.根据网上教学辅助系统工程特点,制定出用于软件工程的教学方案
2.依据总体方案对系统的设计进行更完善的修改。
3.做出系统的概要设计,并对系统进行分析和可行性实验。
4.对系统进行具体的实现,模块的联接。
3. 系统的设计与实现/程序的编制
3.1. 数据设计
3.1.1. 数据库信息表设计
由于软件工程网上教学辅助系统要实现,整个数据数据信息都要存储、更新;课件资源等信息都是动态变化的。这涉及多个页面、多个功能,所有的操作都要与数据库联系。系统为这些,动态信息设计了以下主要数据库表:
人员表:存储登录软件工程网上教学辅助系统个人信息。Id为编号、name为名称、
Password为密码、sex为性别、department为所在系、jiguan为籍贯、tel为电话、
E_mail为邮箱、mark为标记。
表3.1人员表
列名 | 数据类型 | 长度 | 允许空 |
id | char | 10 | |
name | char | 10 | |
password | char | 10 | |
sex | char | 10 | 是 |
department | char | 10 | 是 |
jiguan | varchar | 50 | 是 |
tel | char | 10 | 是 |
E_mail | varchar | 50 | 是 |
mark | int | 4 | 是 |
课件表:存储每门课程的课件存放路径及课程的基本信息。Id为编号、Coursewarename为课件名称、addtime为添加时间、filename为系统文件的名称、
Path为上传课件的路径、teacherid为老师的编号、remark为课件的标记。
表3.2课件表
列名 | 数据类型 | 长度 | 允许空 |
id | int | 4 | |
Coursewarename | varchar | 50 | 是 |
addtime | datetime | 8 | 是 |
filename | varchar | 50 | 是 |
path | varchar | 100 | 是 |
teacherid | varchar | 50 | 是 |
remark | varchar | 200 | 是 |
试卷表:存储试卷信息。Id为试卷的编号、papersname为试卷名称、addtime添加时间、remark为试卷标记。
表3.3试卷表
列名 | 数据类型 | 长度 | 允许空 |
id | int | 4 | |
papersname | varchar | 50 | 是 |
addtime | datetime | 8 | 是 |
remark | varchar | 200 | 是 |
作业表:用于存放教师布置的课后作业。字符为:作业名称、时间、路径等信息。
Id为作业编号、 homeworkname为作业的名称、 addtime为上传时间、 filename为在系统文件的名称、 path为上传文件的路径、 stuid为学生的编号、 remark为作业标记、 isRead为是否阅读。
表3.4作业表
列名 | 数据类型 | 长度 | 允许空 |
id | int | 4 | |
homeworkname | varchar | 50 | 是 |
addtime | datetime | 8 | 是 |
filename | varchar | 50 | 是 |
path | varchar | 100 | 是 |
stuid | varchar | 50 | 是 |
remark | varchar | 200 | 是 |
isRead | int | 4 | 是 |
问题:用于存放学生的提问问题和老师解答问题的表。
Id为编号、 title为标题、 content为问题内容、 addtime为上传时间、 stuid为学生的编号、 isresolved为是否解决、 answertitle为答案标题、 answercontent回答内容、 teacherid为老师编号。
表3.5问题表
列名 | 数据类型 | 长度 | 允许空 |
id | int | 4 | |
title | varchar | 50 | |
content | varchar | 200 | 是 |
addtime | datetime | 8 | 是 |
stuid | varchar | 50 | 是 |
isresolved | char | 10 | 是 |
answertitle | varchar | 50 | 是 |
answercontent | varchar | 200 | 是 |
teacherid | varchar | 50 | 是 |
考试信息表:用于存放考试内容。Id为编号、 papersid为试卷编号、 title试卷标题、 type类型 optionA、B、C、D为选项、 answer为答案。
表3.6考试信息表
列名 | 数据类型 | 长度 | 允许空 |
id | int | 4 | |
papersid | int | 4 | 是 |
title | varchar | 200 | 是 |
type | varchar | 50 | 是 |
optionA | varchar | 50 | 是 |
optionB | varchar | 50 | 是 |
optionC | varchar | 50 | 是 |
optionD | varchar | 50 | 是 |
answer | varchar | 200 | 是 |
管理员:用于存放管理员信息。Id 为管理员编号、password为密码。
表3.7管理员表
列名 | 数据类型 | 长度 | 允许空 |
id | varchar | 50 | |
password | varchar | 50 |
答案表: 用于存放学生在线做答的答案信息。Id为编号、 quesid为问题编号、 answer为答案、 stuid 为学生编号、pspersid为试卷编号。
表3.8考试答案表
列名 | 数据类型 | 长度 | 允许空 |
id | int | 4 | |
quesid | int | 4 | |
answer | varchar | 50 | 是 |
stuid | char | 10 | 是 |
pspersid | int | 4 | 是 |
课程表:用于存储课程信息 id为课程编号、 name为课程名称、 dep为系、 mark 为标记、detail为课程介绍。
表3.9课程表
列名 | 数据类型 | 长度 | 允许空 |
id | varchar | 50 | |
name | varchar | 50 | |
dep | varchar | 50 | 是 |
mark | varchar | 50 | 是 |
detail | varchar | 500 | 是 |
教师表:用于存储教师个人信息。Id为编号、 name为名称 title为职称、 password为密码。
表3.10教师信息表
列名 | 数据类型 | 长度 | 允许空 |
id | char | 10 | |
name | varchar | 50 | |
title | char | 10 | 是 |
password | char | 10 |
上传信息表:用于存放上传文件本地的路径信息。Id为编号、 wid_name为文件所在大的名称、 path为路径、 min_path为具体路径、 sizes为大小、 times为时间、 ip为上传者的机IP
表3.11上传信息表
列名 | 数据类型 | 长度 | 允许空 |
id | int | 4 | |
wid_name | varchar | 7 | 是 |
path | nvarchar | 60 | 是 |
min_path | nvarchar | 60 | 是 |
sizes | int | 4 | 是 |
times | varchar | 50 | 是 |
ip | varchar | 20 | 是 |
3.1.2. 数据库的实现
上述的数据表存储信息,系统进行数据库连接具体实现要核心代码:
public class DataBaseConnection
{
/**
*一个静态方法,返回一个数据库连接
*这样达到了对数据库统一控制的目的
*/
//#MySQL 数据库连接信息
//#MySQL 数据库驱动程序
//String MySQLDriver="org.gjt.mm.mysql.Driver"
//#MySQL数据库连接字符串。
//#upload 为数据库名,user为登录用户名,password为登录密码。
//String MySQLURL="jdbc:mysql://localhost:3306/upload?user=sa&password=&useUnicode=true&characterEncoding=GBK"
//#SQL Server 数据库连接信息
//#SQL Server 驱动程序
//String SQLDriver="net.sourceforge.jtds.jdbc.Driver";
//#SQL Server 数据库连接字符串
//#upload 为数据库名,user 为登录用户名,password 为登录密码。
//String SQLURL="jdbc:jtds:sqlserver://localhost:1433/upload;user=sa;password=";
public static Connection getConnection()
{
Connection con=null;
String SQLDriver="com.microsoft.jdbc.sqlserver.SQLServerDriver";
String SQLURL="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=upload;user=sa;password=123456";
try
{
Class.forName(SQLDriver).newInstance();
con=DriverManager.getConnection(SQLURL);
}
catch(Exception e)
{
e.printStackTrace();
}
return con;
}
};
//在其他文件里面就可以直接调用Connection con=DataBaseConnection.getConnection();
来获得数据库的连接
3.2. 系统模块的设计
本系统具体分为:用户操作、管理员操作模块
3.2.1用户操作模块
a 用户的登录模块
用户可以注册成为系统用户,填写相应的个人信息;系统也要为用户提供一个以用户身份登陆的接口;当用户个人信息需要修改时,如地址变更等,应能及时更改,这点暂有管理员代为修改。
用户登录的核心代码:
jsp:useBean id="ss" scope="page" class="stu.login">//引用login类
<jsp:setProperty name="ss" property="*" />
</jsp:useBean>
<jsp:useBean id="db" scope="page" class="stu.sqlBean"/>
<%
String sql="";
String kind=ss.getKind();
String pw="";
ResultSet rs =null;
String id=ss.getId();
System.out.println("进入验证");
sql="select password from "+kind+" where id='"+id+"' ";//SQL用查询的语句
System.out.println();
rs=db.executeQuery(sql); //查询用户信息
if(rs.next()){
pw=rs.getString("password").trim();}
if(ss.getPassword().trim().equals(pw)) //判断用户是否登录成功
{
System.out.println("进入验证====通过验证");
session.setAttribute("id",String.valueOf(id)); //在session中缓存用户信息
int flag=ss.getFlag();
session.setAttribute("flag",String.valueOf(flag));
response.sendRedirect("main.jsp?flag="+flag);//重定向用户请求
out.print(flag);
}
else {
String message= "登陆失败,用户名或密码有误!!";
session.setAttribute("error",String.valueOf(message));
response.sendRedirect("index.jsp?error='error'");}
%>
用户可以在本页面登录:
图3.1用户登录
用户登录后的主页面为下图,此为系统的主界面;用户可以在这里进行具体操作:
c 查询课件、下载课件等功能
普通用户可以在软件工程网上教学辅助系统上查询课件、下载课件等功能
查询的代码:
String search=request.getParameter("search");//获取参数
String searchby=request.getParameter("searchby");
String textvalue=request.getParameter("textvalue");
ResultSet rs=null;
if(search!=null) //判断输入查询值不为空
{
if(textvalue==null||textvalue.equals(""))//未输入查询条件,默认为查询全部信息
rs=db.executeQuery("select * from homework"); //从db数据表中获值
else{
if(searchby.trim().equals("0")) //查询条件为课件编号
{
rs=db.executeQuery("select * from homework where id="+textvalue);//查询相应信息
}else if(searchby.trim().equals("1"))//查询条件为课件名称
{
rs=db.executeQuery("select * from homework where homeworkname='"+textvalue+"'");
}
}
}
else
rs=db.executeQuery("select * from homework");
ResultSetMetaData rsmd = rs.getMetaData();
int numberOfColumns = rsmd.getColumnCount();
int ccc=0;
while(rs.next()){
ccc++;
id=rs.getString(1);
String url=rs.getString(5); //获取相对应的值
String fullurl=request.getRealPath("/")+url;
String filename=rs.getString(4);
查询课件的页面为:
图3.3查询课件页面
学生可以在网上下载老师发的课件,可以了解课程内容。
下载的代码:
byte[] buffer = new byte[4096];//缓存区
BufferedOutputStream output = null;
BufferedInputStream input = null;
try {
output = new BufferedOutputStream(response.getOutputStream());//创建输出流
input = new BufferedInputStream(new FileInputStream(filefullname));
int n = (-1);
while ((n = input.read(buffer, 0, 4096)) > -1) {
output.write(buffer, 0, n);//循环读入输入流中的数据并由输出流输出
}
response.flushBuffer();//清除缓存
}
catch (Exception e) {
}
finally { //关闭输入、输出流
if (input != null) input.close();
if (output != null) output.close();
}
学生下载课件的页面为:
图3.4下载课件页面
d. 学生提交作业、查看课件、提问和在线答题
学生登录软件工程网上教学辅助系统以后可以进行提交作业、查看课件、提问和考试等功能。
上传中用到jspsmartupload,jspSmartUpload是由www.jspsmart.com网站开发的一个可免费使用的全功能的文件上传下载组件,适于嵌入执行上传下载操作的JSP文件中。
上传时就是上传连接数据库的核心代码为:
con=DataBaseConnection.getConnection();//连接数据库
Statement stmt=con.createStatement();//创建stmt语句
String sql1="select count(*) from up_imges";//定义SQL语句
ResultSet rs=stmt.executeQuery(sql1);//执行查询操作
rs.next();
sum=rs.getInt(1);//获取总行数
}
catch(Exception e)
{
e.printStackTrace();
}
if(sum>=1)
{
con=DataBaseConnection.getConnection();
Statement stmt=con.createStatement();
String sql2="select top "+spage+" * from up_imges";
ResultSet rs2=stmt.executeQuery(sql2);
while(rs2.next())
{
if(n>(cpage-1)*ipage-1)
{
m++;
int id=rs2.getInt(1);
String wid_name=rs2.getString(2);//获取查询数据
String path=rs2.getString(3);
String min_path=rs2.getString(4);
int size=rs2.getInt(5);
String time=rs2.getString(6);
String ip=rs2.getString(7);
学生上传作业的页面:
图3.5上传作业页面
学生可以在线答题,下面就是学生在线打开的试卷并作答的页面:
图3.6下线答题页面
e 教师发布课件、批改作业、试卷、解答问题
教师登录软件工程网上教学辅助系统以后可以进行发布课件、批改作业、考试内容和时间、解答问题
更新信息的核心代码:
String id=request.getParameter("id");//获取参数
String admin_id = (String)session.getAttribute("id"); //从session中获取用户信息
if(admin_id==null){response.sendRedirect("login.jsp");}//重定向
String insert=request.getParameter("insert");
if(insert!=null){
String name=request.getParameter("name");
String remark=request.getParameter("remark");
String sql="update papers set papersname='"+name+"',remark='"+remark+"'