Jsp课程设计实验报告.docx
《Jsp课程设计实验报告.docx》由会员分享,可在线阅读,更多相关《Jsp课程设计实验报告.docx(25页珍藏版)》请在冰点文库上搜索。
Jsp课程设计实验报告
《jsp程序设计》
Jsp课程设计实验报告
题目
学生成绩管理系统
专业
班级
姓名
指导教师
2011年6月28日
一、绪论
1、系统开发背景
一直以来学生的成绩管理是学校工作中的一项重要内容,许多学校的学生成绩管理系统做得都相当的完善,但是随着办学规模的扩大和扩招,有些系统就会逐渐出现一些漏斗或者是不完善的地方。
普通的成绩管理系统已经不能适应时代的发展,因为它浪费了许多的人力和物力,在当今信息时代这种传统的管理方法必然被以计算机为基础的管理系统所代替。
为了提高成绩管理的效率,我选择了学生成绩管理系统作为jsp的课程设计。
2、项目开发的目标
希望能做出一个完善的系统,实现分类别的管理。
能实现管理员、教师和学生三种身份的登录,同时也能实现各登陆身份的相关操作。
3、系统开发所用的技术设备
(1)、数据库技术的现状与发展
数据库是在现在的无论大型系统还是小型系统中都频繁出现的一门计算机软件技术,数据库技术是信息系统的核心和基础,它的出现极大的促进了计算机应用向各行各业的渗透。
(2)、JSP
当前所做的系统无非都采用.net和jsp两种技术进行设计,它有很多的技术特征,如:
跨平台、分离静态内容和动态内容、可重复使用的组建、沿用了JavaServlet的所有功能及能预编译。
二、需求分析
1、系统需求分析
学生信息管理系统是对学生的基本信息和成绩信息进行管理,主要包括添加、修改和删除学生的基本信息及课程的基本信息;录入、修改和删除学生的成绩信息,对基本信息、成绩信息进行查询、排序及统计等操作,从而实现学生信息管理的自动化与计算机化。
本课题将实现一个简化的学生信息管理系统。
用户浏览器web服务器数据库服务器
2、用户需求
(1)、学生的需求
<1>、查询自己的基本资料
查询自己的所有成绩,包括自己的平均成绩和总成绩。
<2>、查询自己的所有成绩,包括自己的平均成绩和总成绩。
<3>查询某一科成绩,该科平均成绩,所在名次,最高成绩,最低成绩。
<4>、学生可以添加自己的基本信息。
(2)、老师需求
<1>、查询某一学生的所有成绩,平均成绩和总成绩。
<2>、查询某一学生某一科成绩,该科平均成绩,所在名次,最高成绩,最低成绩。
<5>、录入成绩(自己所教授的那一科成绩)
(3)、管理员的需求
<1>、查询某一学生的所有成绩,平均成绩和总成绩。
<2>、查询某一学生某一科的成绩,该科平均成绩,所在名次,最高成绩,最低成绩)。
<3>、查询某一班级的成绩(所有成绩,某一学期的所有成绩,某一学期的某一科目的所有成绩)。
<5>、录入信息、修改信息和删除信息。
3、系统框架图如下:
4、系统设计思想
(1)、采用现有的资源以及充分利用学校的现有资源,减少开发中的财力以及无力和时间,提高系统开发的水平。
(2)、系统就满足学校的需求,例如成绩的录入、查询、更新、删除以及学生成绩的排名等操作。
(3)、系统具备数据库维护功能,及时根据用户需求进行数据跟新、删除、添加等操作。
5、系统设计分析
该系统适用于各个学校,其功能主要为:
成绩管理:
用于对成绩的录入、修改、添加、汇总、排名以及查询等操作。
三、数据库的设计
1、本系统将数据存储在七个表中,这七个表分别是:
(1)、学生表(见下表):
保存学生的基本信息,包括学生的姓名,登录系统时的密码,学生的学号,出生年月以及性别。
学生表
字段名称
中文解释
保存类型
默认值
长度
可否为空
主键
sno
学号
varchar
无
12
否
是
name
姓名
varchar
无
24
否
否
password
密码
varchar
无
24
否
否
sex
性别
char
(男或女)
2
否
否
Birthdate
出生年月
datetime
无
否
否
(2)、教师表(见下表):
保存教师的信息,包括教师的教师编号,
登录系统系统时的用户名和密码。
教师表
字段名称
中文解释
保存类型
默认值
长度
可否为空
主键
Tno
教师编号
varchar
无
12
否
是
name
登录名
varchar
无
24
否
否
password
密码
varchar
无
24
否
否
(3)、班级表(见下表):
保存班级的编号及班级的名称。
班级表
字段名称
中文解释
保存类型
默认值
长度
可否为空
主键
classesnum
班级编号
varchar
无
12
否
是
classes
班级名称
varchar
无
24
否
否
(4)、教师所担任课程的表(见下表):
保存教师编号,所教科目和班级名称。
教师所担任课程的表
字段名称
中文解释
保存类型
默认值
长度
可否为空
主键
Tno
教师编号
varchar
无
12
否
是
subject
所教科目
varchar
无
24
否
否
classes
班级名称
varchar
无
24
否
否
(5)、管理员表(见下表):
保存管理员的编号,登录系统时的用户名和密码。
管理员表
字段名称
中文解释
保存类型
默认值
长度
可否为空
主键
Mno
管理员编号
varchar
无
12
否
是
name
用户名
varchar
无
24
否
否
password
密码
varchar
无
24
否
否
(6)、成绩表(见下表):
保存有关学生的成绩的一些信息,本系统主要是对于该表的操作。
成绩表
字段名称
中文解释
保存类型
默认值
长度
可否为空
主键
sno
学号
varchar
否
12
否
是
name
课程名称
varchar
否
24
否
否
classes
班级
varchar
否
24
否
否
property
科目性质
varchar
否
24
否
否
term
学期
varchar
否
24
否
否
terchar
教师名称
varchar
否
14
否
否
grade
成绩
int
否
否
否
(7)、课程表(见下表):
保存有关学生的课程的一些信息。
课程表
字段名称
中文解释
保存类型
默认值
长度
可否为空
主键
cno
课程号
varchar
无
12
否
是
cname
课程名
varchar
无
24
否
否
Tname
教师姓名
varchar
无
24
否
否
score
学分
varchar
无
4
否
否
2、建立数据库的命令如下:
CreatedatabaseStudentmange
3、建立数据表的命令如下:
(1)、建立学生表
--createtableStudent(
--snovarchar(12)primarykeynotnull,
--namevarchar(24)notnull,
--passwordvarchar(24)notnull,
--Sexchar
(2)check(Sexin('男','女')),
--Birthdatedatetimenotnull,
--);
(2)、建立教师表
--createtableteacher(
--Tnovarchar(12)primarykeynotnull,
--namevarchar(24)notnull,
--passwordvarchar(24)notnull,
--);
(3)、建立班级表
--createtableclasses(
--classesnumvarchar(12)primarykeynotnull,
--classesvarchar(24)notnull,
--);
(4)、建立教师所教科目表
--createtableteacher_subject(
--Tnovarchar(12)primarykeynotnull,
--subjectvarchar(24)notnull,
--classesvarchar(24)notnull,
--foreignkey(Tno)referencesteacher(Tno),
--);
(5)、建立管理员表
--createtablemanage(
--Mnovarchar(12)primarykeynotnull,
--namevarchar(24)uniquenotnull,
--passwordvarchar(24)notnull,
--);
(6)、建立成绩表
--createtablescore1(
--snovarchar(12),
--cnovarchar(12),
--classesvarchar(24)notnull,
--termvarchar(24)notnull,
--gradeintcheck(gradebetween0and100),
--primarykey(sno,cno),
--foreignkey(sno)referencesStudent(sno),
--foreignkey(cno)referencescourse(cno),
--);
(7)、建立课程表
--createtablecourse(
--cnovarchar(12)primarykey,
--Tnamevarchar(24)notnull,
--cnamevarchar(24)notnull,
--scorevarchar(4)notnull,
补充:
因为在建立数据表当中的成绩表的时候,没有考虑周到那个成绩应该是只能在0-100之间取值,所以对成绩表(score)修改了约束条件,语句如下:
altertablescore
addconstraintgradecheck(gradebetween0and100);
四、关键技术及代码
本系统在连接数据库的地方用了javabean,在留言板的那一部分应用了serverlet和dreamweave的一些相关知识,以及jsp的相关知识。
1、管理员登录代码
<%@pagecontentType="text/html;charset=gb2312"%>
<%@pageimport="java.util.Date,java.text.*"%>
--导入用到的类包文件-->
<%
Datenowday=newDate();//获取当前日期
inthour=nowday.getHours();//获取日期中的小时
SimpleDateFormatformat=newSimpleDateFormat("yyyy-MM-ddHH:
mm:
ss");//定义日期格式化对象
Stringtime=format.format(nowday);//将指定日期格式化为"yy-MM-ddHH:
mm:
ss"形式
%>
学生成绩管理系统
body{
background-color:
#000;
background-image:
url(../images/08102301183279494%5B1%5D.jpg);
}
body,td,th{
color:
#F0C;
}
'宋体';font-size:
xx-large;color:
yellow;">
学生成绩管理系统
现在时间:
<%=time%>
用户名或密码错误,请重新登录
用户名:
密 码:
2、从数据库中获取用户名和密码的代码。
<%@pagecontentType="text/html;charset=gbk"import="java.sql.*"%>
<%@pageimport="java.io.*"%>
<%@pageimport="java.util.*"%>
<%@pageimport="java.sql.*"%>
学生成绩管理系统<%!
Stringsql;
%>
<%
request.setCharacterEncoding("GBK");
Stringname=request.getParameter("name");
Stringpassword=request.getParameter("password");
StringdriverClass="com.microsoft.sqlserver.jdbc.SQLServerDriver";
StringDBurl="jdbc:
sqlserver:
//127.0.0.1:
1433;DatabaseName=Studentmange";
StringDBname="lmj";
StringDBpassword="123456";
try{
Class.forName(driverClass);//加载驱动程序
Connectionconn=DriverManager.getConnection(DBurl,DBname,DBpassword);
sql="selectname,passwordfromTeacherwherename='"+name+"'andpassword='"+password+"'";
PreparedStatementpstmt=conn.prepareStatement(sql);//实例化数据库操作对象
ResultSetrs=pstmt.executeQuery();
if(rs.next())
{
response.sendRedirect("../teacher.jsp");
}
else
{
response.sendRedirect("teacherindex2.jsp");
}
rs.close();
pstmt.close();
conn.close();
}
catch(Exceptione)
{
out.println(e);
}
%>
3、留言板的相关代码。
(1)、登录留言板的相关代码
body,td,th{
color:
#F0F;
}
body{
background-color:
#000;
background-image:
url(images/denglubeijing2.jpg);
}
留言者:
留言标题:
留言内容:
查看留言
(2)、编译的三个java程序
<1>、serverlet
packageliuyanban.servlet;
importjava.io.IOException;
importjava.util.ArrayList;
importjava.util.Date;
importjavax.servlet.ServletContext;
importjavax.servlet.ServletException;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
importjavax.servlet.http.HttpSession;
importcom.yxq.toolbean.MyTools;
importcom.yxq.valuebean.WordSingle;
publicclassWordServletextendsHttpServlet{
protectedvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{
doPost(request,response);
}
protectedvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{
//以下代码用来获取表单中字段内容并进行转码
Stringauthor=MyTools.toChinese(request.getParameter("author"));
Stringtitle=MyTools.toChinese(request.getParameter("title"));
Stringcontent=MyTools.toChinese(request.getParameter("content"));
//获取当前时间并格式化时间为指定格式
Stringtoday=MyTools.changeTime(newDate());
WordSinglesingle=newWordSingle();
single.setAuthor(MyTools.changeHTML(author));
single.setTitle(MyTools.changeHTML(title));
single.setContent(content);
single.setTime(today);
HttpSessionsession=request.getSession();ServletContextscx=session.getServletContext();
ArrayListwordlist=(ArrayList)scx.getAttribute("wordlist");if(wordlist==null)
wordlist=newArrayList();
wordlist.add(single);scx.setAttribute("wordlist",wordlist);response.sendRedirect("show.jsp");
}
}
<2>、toolbean
packageliuyanban.toolbean;
importjava.io.UnsupportedEncodingException;
importjava.text.SimpleDateFormat;
importjava.util.Date;
publicclassMyTools{
/**
*@功能转换字符串中属于HTML语言中的特殊字符
*@参数source为要转换的字符串
*@返回值String型值
*/
publicstaticStringchangeHTML(Stringsource){
StringchangeStr="";
changeStr=source.replace("&","&");//转换字符串中的“&”符号
changeStr=changeStr.replac