jsp版学生成绩管理系统课程设计报告.docx
《jsp版学生成绩管理系统课程设计报告.docx》由会员分享,可在线阅读,更多相关《jsp版学生成绩管理系统课程设计报告.docx(23页珍藏版)》请在冰豆网上搜索。
![jsp版学生成绩管理系统课程设计报告.docx](https://file1.bdocx.com/fileroot1/2023-1/23/b5cccfa9-448a-4d12-9274-ed79b686ebf7/b5cccfa9-448a-4d12-9274-ed79b686ebf71.gif)
jsp版学生成绩管理系统课程设计报告
《java语言程序设计》课程设计报告
设计题目:
学生成绩管理系统
班级:
计算机四班学号:
20104777
报告人姓名:
蔺天震
指导老师:
费老师
实验地点:
东校区机房
完成起止日期:
2010--2011学年第二学期16周
一、引言2
二、功能规划3
1学生的需求3
2老师的需求3
3管理员的需求3
三、具体设计4
1、数据库设计:
4
2、程序界面设计:
8
3、servlet设计:
12
四、程序测试22
1、测试项目22
2、各模块的测试结果
22
五、课程设计感想22
六、总结23
学生成绩管理系统设计报告
•、引言
1.1课程设计目的
(1)复习,巩固Java语言的基础知识,进一步加深对Java语言的理解和掌握;
(2)课程设计为我们提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼我们的分析解决实际问题的能力,提高学生适应实际,实践编程的能力;
(3)培养我们在项目开发中团队合作精神,创新意识及能力。
1.2题目说明
一个学生成绩管理系统,能够实现对学生、老师基本信息、课程信息、成绩信息的管理。
学生端:
能够实现查看自己的成绩、排名、选课信息等;
老师端:
能够让老师查看学生的信息、查看学生的成绩、输入学生的成绩;管理员端:
能够实现对学生和老师的综合管理,能查看所有的学生、老师的基本信息和课程信息,能够添加、修改老师学生的课程信息和密码等。
二、功能规划
1学生的需求
(1)在第一时间查询自己所有的成绩(自己的平时成绩、卷面成绩、总成绩)
(2)查询某一科成绩
(3)查询自己的上课信息及选课信息
(4)修改登录密码
2老师的需求
(1)查询某一学生的所有成绩(平均成绩,总成绩)
(2)查询某一学生某一科成绩,该科平均成绩,所在名次,最高成绩,最低成绩
(3)查询某一班级的成绩(所有成绩,某一学期的所有成绩,某一学期的某一科目的所有成绩)
(4)对某一科成绩进行统计(及格人数,及格率,不及格人数,不及格率,优秀人数,优秀率,某一分数段的人数)
(5)录入考试成绩和补考成绩(自己所教授的那一科成绩)
(6)查询自己的上课信息
(7)修改登录密码
3管理员的需求
(1)查询某一学生的所有成绩(平均成绩,总成绩)
(2)查询某一学生某一科成绩,该科平均成绩,所在名次,最高成绩,最低成绩
(3)查询某一班级的成绩(所有成绩,某一学期的所有成绩,某一学期的某一科目的所有成绩)
(4)对某一科成绩进行统计(及格人数,及格率,不及格人数,不及格率,优秀人数,优秀率,某一分数段的人数)
(5)录入成绩和修改成绩
(6)对学生和老师进行管理
(7)数据库管理
三、具体设计
本系统MVC三层模式进行开发,使模型,视图和控制分开,业务逻辑和显示分开,这样有利于错误的查找和系统的升级。
该系统适用于各个学校,其功能主要为:
成绩管理:
用于对成绩的录入、修改、汇总、排名以及查询等操作。
系统框图:
登录
1、数据库设计:
数据库中共有老
idname
师、学生、管理
22b
员、课程、老师
课程信息、学生课程信息六张表,
分别如下:
课程信息:
学生课程信息:
ccuneic
扣dte^d
greiel
砂2
gnde
credt
ranKhg
BBM1O01
201附771111
99
S3
78
4
5
201G4学生信息:
S9
77
4
匚i
BBMU
2&1C4/Jt11h
88
59
4
1
id
rams
糊rd
ttleje
$pe:
iaty'
20101111
qq
20101111
m—
20104777
ra
201M777
20104787
2fll)4;87
Wl韭技术
id
jfflue
ctlleje
password
老师信息:
1111
sii
ni
2222
2222
老师课程信息:
leadcour^&Klisfirwsh
mi
BBDD4014
1
mi
BB001008
0
uh
BB001D02
0
2222
BBWIOO^
1
连接数据库的类设计如下:
packageDateBase;
importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.ResultSet;
importjava.sql.SQLException;
importjava.sql.Statement;
publicclassDbUtile{
publicConnectionconnection=null;
publicResultSetresultSet=null;
publicStatementstatement=null;
privateStringDb_Driver="com.mysql.jdbc.Driver";
privateStringDb_url="jdbc:
mysql:
//localhost:
3306/studentmanagesystem";privateStringDb_user="root";
privateStringDb_password="sa";
publicDbUtile(){//构造方法连接数据库
try{
Class.forName(Db_Driver);
connection=
DriverManager.getConnection(Db_url,Db_user,Db_password);
statement=connection.createStatement(;
}
catch(java」ang.ClassNotFoundExceptiore){
System.out.println「加载驱动器有错误:
"+e.getMessage();}catch(SQLExceptione){
System.out.println("连接数据库有错误:
"+e.getMessage();
}
}
publicintexecuteInsert(Stringsql){〃插入记录
intnum=0;
System.out.println(sql);
try{
num=statement.executeUpdate(sql);
}
catch(SQLExceptionex){
System.out.println("执行插入有错误:
"+ex.getMessage(》;
}
returnnum;
publicResultSetexecuteQuery(Stringsql){//查询记录
resultSet=nuII;
try{
resuItSet=statement.executeQuery(sql);
}
catch(SQLExceptionex){
System.out.println("执行查询有错误:
"+ex.getMessage(》;
}
returnresultSet;
}
publicintexecuteDelete(Stringsql){//删除记录
intnum=0;
try{
num=statement.executeUpdate(sql);
}catch(SQLExceptionex){
System.out.println("执行删除有错误:
"+ex.getMessage(》;}returnnum;
}
publicintexecuteUpdate(Stringsql){〃更改记录
intnum=0;
try{
num=statement.executeUpdate(sql);
}catch(SQLExceptionex){
System.out.println("执行修改有错误:
"+ex.getMessage(》;}returnnum;
}
publicvoidclose(){〃关闭Connection对象
try{
if(resultSet!
=null)
resultSet.close();
statement.close();
connection.close();
}
catch(Exceptionend){
System.out.println("执行关闭Connection对象有错误:
"+
end.getMessage();
}
}
}
2、程序界面设计:
通过程序的要求可知该程序有jsp页面或Html页面以及servlet组成。
Jsp主要负责与用户的交互实现视图页面的功能,而servlet主要负责页面跳转控制以及数据处理的功能。
由实验的要求具体的实验设计如下:
A、用户通过一个登陆页面,输入用户名、密码,然后该jsp页面将请求发
送给处理用户身份验证的servlet,该servlet获取数据库的信息进行校验,如果用户的身份合法则跳转到应用程序的主界面,否则给出错误的提示信息,并且要求用户重新输入用户名和密码重新登陆。
登陆页面的设计图如下所示:
B、对于程序的主界面主要实现对于用户需要的导航功能以及实现具体的操作功能。
该程序的主界面主要有三个Html的Framset构成,分别为
欢迎使川
用尸名:
程址码*
・学生去耶苦理员
topFrame,leftFrame,mainFrame组成,leftFrame主要实现程序的导航,而mainFrame具体的实现程序的功能。
主界面设计界面如下:
管理员登录成功界面:
蜀陆曲龙小
使用本策统诲注蕙:
員邮估昱苦蚩
u为了忆述帐户安全.第窝连陆匸请址时修也営码=
2,£4討诸注跖
注■養薰
C、具体的功能设计如下:
1、学生的功能:
(1)、查询个人成绩
flpje*"偎ffi,爭号
谍担茗做平时壶绩
氐弋沖.于分基贞排窑
柑时MBBW1001
廿忻化学wsa
7*A5
BBuiJlOO:
分斩化学实港9?
糾
Tf43
OBti(J40l4
再序設"H■昱就’.凸召占,制99
闘ji7
(2)、查询课程:
rwffa
谨丽写-
僂程茗称
亍时
学分
试卷亍时
诽按孚尉F
BBfiCJOOl
5)■斬化学54
3
0
54
BBOOIOQ2
分忙比学込岭
知
3
S-I
DD«(MOH
程芋豈计搖础c.^5
45
25
0
45
(3)
输入密码;
隔认密码】
曲«s
、修改密码
.虫说第
2、老师的功能:
(1)、查询学生烬:
孚生学号
学生燥fc
平时感綾
期未成缤总蜩学井荃点
排名
20101777
99W―亍
-_-«-*a■.h—
)
W真共哺t
(2)、录入学生成绩;
湘录入般皴
1半号妊容
Tfd戚華
20104777前天霍
1/Ijjl三共:
1
(3)、查看课程信息:
瀑程宇号
课程名特—
学时
学廿试验学时
讲授学时
—阶析花学—
$4
旷0
>4
3、管理员功能:
(1)、老师信息管理
工号:
Him11
性容;U1B
学USUIS夏
酉哮员断祁型
(2)、学生信息管理
(3)、课程信息管理:
3、servlet设计:
擁改学生信息学号:
2O1NZT7姓名:
窗衽专业:
计算桃科学与拽朮学院:
[si
课号*
屯称:
学小
学分t
试航学时:
因为本程序应用的servlet较多,所以这里只简单介绍几个
J.田Morvla七
.J,ChooseCourseServlet.java
r?
]CourseServletjava
丄rvl^tjava
-,.卩|DeIeteStuCourseServlet.j3va
.IjDeleteTeaCouritSe(Yltl.jdwd
•站ExitServlet.java
.JInputScoreS&rvlet.java
』InputServletjdVd
-jT]InputUnp^EsScoreServlet.java
J]InsertCourseServlet.java
①InserEServietJava
.J][nsert£tuCoLiirse£eirv^t.java
J.dInsert!
eaCourseServletjava
.>.JjListStuServletjava
.JjLoginServletJova
t>aQueryCourseServlet.java
.JjKesetlnpu宅5亡rvlrtja甘日
.JReactPWScrvtet.java
.[]^how^rore^prvlptjavs
iJjSho^vUnpass&coreServfetjava
.JStuCcjuileServlet.jdtfd
':
ljTRa^COre^ervIptjava
>J|UpdateStuServlet.java
_FAiib._」_■_〒__尸.il—
(1)、LoginServlet登录控制
packageservlet;
importjava.io.10Exception;
importjavax.servlet.ServletException;
importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;
importjavax.servlet.http.HttpSession;
importDAO.ManageDAO;
importDAO.StudentDAO;
importDAO.TeacherDAO;importDAOImpl.ManageDAOImpI;importDAOImpl.StudentDAOImpI;
importDAOImpl.TeacherDAOImpl;importDate.Manage;
importDate.Student;importDate.Teacher;
publicclassLoginServletextendsHttpServlet{
publicLoginServlet(){super();
}
publicvoiddestroy。
{
super.destroy()〃Justputs"destroy"stringinlog
//Putyourcodehere
}
publicvoiddoGet(HttpServletRequesfequest,HttpServletResponseresponse)throwsServletException,lOException{
request.setCharacterEncoding("utf-8")
response.setContentType("text/html");
intn=Integer.parseInt(request.getParameter(”n"));
Stringid=request.getParameter("id");
Stringpassword=request.getParameter("password");
booleanb=false;
if(n==1){
StudentDAOsd=newStudentDAOImpl();
b=sd.login(id,password);
if(b){
HttpSessionsession=request.getSession();
session.setAttribute("id",id);
session.setAttribute("identity","1");
Studentstu=sd.queryByID(id);
session.setAttribute("stu",stu);
response.sendRedirect("main.html");
}else
response.sendRedirect("error.jsp");
}elseif(n==2){
TeacherDAOtd=newTeacherDAOImpl();
b=td.login(id,password);
if(b){
HttpSessionsession=request.getSession();
session.setAttribute("identity","2");
session.setAttribute("id",id);
Teachertea=td.queryByID(id);
session.setAttribute("tea"tea);
response.sendRedirect("tea_main.html");
}else
response.sendRedirect("error.jsp");
}else{
ManageDAOtd=newManageDAOImpl();
b=td.login(id,password);
if(b){
HttpSessionsession=request.getSession();session.setAttribute("identity","3");
session.setAttribute("id",id);
Manageman=td.queryByID(id);
session.setAttribute("man",man);response.sendRedirect("man_main.html");
}else
response.sendRedirect("error.jsp");
}
}
publicvoiddoPost(HttpServletRequestequest,HttpServletResponsaesponse)throwsServletException,IOException{
doGet(request,response);
}
publicvoidinit()throwsServletException{
//Putyourcodehere
}
}
(2)、InsertServlet输入学生成绩
packageservlet;
importjava.io.IOException;
importjava.io.PrintWriter;
importjava.util.Vector;
importjavax.servlet.ServletException;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
importjavax.servlet.http.HttpSession;
importDAO.TeacherDAO;
importDAOImpl.TeacherDAOImpI;
publicclassInputServletextendsHttpServlet{
publicInputServlet(){super();
}
publicvoiddestroy。
{
super.destroy()〃Justputs"destroy"stringinlog
//Putyourcodehere
}
publicvoiddoGet(HttpServletRequesfequest,HttpServletResponseresponse)throwsServletException,lOException{
request.setCharacterEncoding("utf-8")
response.setContentType("text/html");
HttpSessionsession=request.getSession();
Stringcourseid=request.getParameter("courseid");
Stringid=(String)session.getAttribute("id");
intn=Integer.parseInt((String)session.getAttribute("len"));
Stringgrade1;
Stringgrade2;
Stringgrade;
TeacherDAOtd=newTeacherDAOImpl();
for(inti=0;igrade1=request.getParameter("grade1"+(i+1));
grade2=request.getParameter("grade2"+(i+1));
grade=request.getParameter("grade"+(i+1));
Stringstuid=request.getParameter("stuid"+(i+1));
td.inputGrade(grade1,grade2,courseid,stuid,grade);
}
td.ranking(courseid,id);
td.changeFinish(id,courseid);
this.getServletConfig().getServletContext().getRequestDispatcher("/in