JSP学生成绩管理系统Word格式.docx
《JSP学生成绩管理系统Word格式.docx》由会员分享,可在线阅读,更多相关《JSP学生成绩管理系统Word格式.docx(17页珍藏版)》请在冰豆网上搜索。
成绩:
指导教师签字:
2013年12月23日
目录
第1章实训的目的与要求1
1.1实训设计目的1
1.2实训设计的实验环境1
1.3实训设计的预备知识1
1.4实训设计要求1
第2章实训设计内容2
2.1开发背景简述2
2.2系统设计内容2
2.3需求分析3
2.3.1系统逻辑设计3
2.3.2系统功能需求分析5
2.4系统实现8
2.4.1系统的详细设计8
2.4.3程序源代码10
2.5测试分析13
第3章实训总结15
参考资料16
第1章实训的目的与要求
1.1实训设计目的
《动态网页设计》是计算机相关专业的必修专业基础课程,其实践性、应用性很强。
实践教学环节是必不可少的一个重要环节。
本课程的程序设计专题实际是计算机相关专业学生学习完《JAVA程序设计》及《动态网页设计》等课程后,进行的一次全面的综合训练,JSP动态网页设计的设计目的是加深对理论教学内容的理解和掌握,使学生较系统地掌握程序设计及其在网络开发中的广泛应用,基本方法及技巧,为学生综合运用所学知识,利用软件工程为基础进行软件开发、并在实践应用方面打下一定基础。
1.2实训设计的实验环境
硬件要求能运行Windows2000操作系统的微机系统。
JSP动态网页设计语言及相应的集成开发环境:
J2SDK和ECLIPSE开发工具及Tomcat服务器。
1.3实训设计的预备知识
熟悉JAVA语言及ECLIPSE开发工具、Tomcat服务器。
1.4实训设计要求
按JSP动态网页设计的设计指导书提供的课题,要求学生在自行完成各个操作环节,并能实现且达到举一反三的目的,完成一个项目解决一类问题。
要求学生能够全面、深入理解和熟练掌握所学内容,并能够用其分析、设计和解答类似问题;
对此能够较好地理解和掌握,能够进行简单分析和判断;
能编写出具有良好风格的程序;
掌握JSP动态网页设计的基本技能和面向对象的概念和方法编程技术。
同时培养学生进行分析问题、解决问题的能力;
培养学生进行设计分析、设计方法、设计操作与测试、设计过程的观察、理解和归纳能力的提高。
第2章实训设计内容
2.1开发背景简述
一直以来学生的成绩管理是学校工作中的一项重要内容,我国的大中专院校的学生成绩管理水平普遍不高。
随着办学规模的扩大和招生人数的增加,建立一个成绩维护系统是非常必要的。
普通的成绩管理已不能适应时代的发展,因为它浪费了许多的人力和物力。
在当今信息时代这种传统的管理方法必然被以计算机为基础的信息管理系统所代替。
为了提高成绩管理的效率,我选择了学生成绩管理系统作为毕业设计的课题。
本系统在大多数成绩管理系统的基础上,主要增加了教师对成绩的操作,教师改完试卷后不用在往学院的教务处办公室报送成绩,可以直接的把成绩上传到网络上,学生也可以方便快速的查询到自己的成绩,考试后教务管理人员也不必总呆在学院的办公室,他们都不受时间,位置,空间的限制,只要有上网的条件,在家里就可以完成有关成绩的录入,更新,管理,查询和删除。
本系统将会改变以前靠手工管理学生成绩的状况,提高工作效率。
希望能为老师和学校的工作带来便利。
2.2系统设计内容
随着高校办学规模的扩大和招生人数的增加,学生成绩管理维护是学校管理中异常重要的一个环节,作为学校,除了育人,就是育知,学生成绩管理的计算机化是整个学校教务管理中的重要一部分,介于它的重要性,学生成绩管理系统的开发与应用就逐渐提入议程,并占着越来越重要的份量。
运用学生成绩管理维护系统可以减轻学院教学人员的工作量,缩小开支,提高工作效率与准确率,能够节省时间,学生也能够尽快的知道自己的考试成绩,投入新的课程的学习或复习这次没有考过的课程。
而学生成绩管理系统的应用也为今天的民办教育在未来市场的竞争力有所提高。
在现代高科技的飞跃发展,人们工作习惯的改变,特别是电脑的大量普及,人们生活节奏越来越快,怎样提高工作效率是人们首先考虑的问题。
学生成绩管理是一个非常繁琐与复杂的一项工作,一个原因就是工作量大,不好管。
对于一个学校而言,管理好学生的成绩,是非常重要的。
因此开发出一套学生成绩管理系统是非常必要的。
建立学生成绩管理系统,采用计算机对学生成绩进行管理,进一步提高办学效益和现代化水平。
帮助广大教师提高工作效率,实现学生成绩维护工作流程的系统化、规范化和自动化。
为了使系统在学院的管理中发挥更大的作用,实现工作过程的计算机化,提高工作效率和工作质量,现提出如下的系统开发目标:
(1)系统应具有实用性、可靠性和适用性,同时注意到先进性。
(2)对各个数据库进行动态管理,防止混乱。
(3)不同用户有不同的查询和修改权限,防止非法查询,非法修改。
(4)能够对查询结果进行分类汇总,实现报表打印和下载。
(5)方便用户的操作,尽量减少用户的操作。
2.3需求分析
2.3.1系统逻辑设计
通过上述的功能模块分析,设计成绩管理E-R图,如图所示,成绩管理E-R图共有两个实体,用户实体、课程实体。
其中成绩属性是从成绩管理E-R图的关系中产生。
用户和课程实体间是多对多的关系。
图2.1总体E-R图
根据上述E-R图分析,该系统会产生三个数据表,分别是用户表、课程表、成绩表,以下是对各个表的详细介绍。
用户表如表1.1,其中学生学号为登录时学生用的账号;
使用删除标记的目的是为了实现假删除操作,方便恢复数据库中的数据。
删除标记为0时表示未删除学生信息,为1时表示已删除学生信息。
Type是为了区分用户的登录权限,这样做可以很好的保护数据的安全性,其中0表示学生用户,1表示教师用户。
表1.1User(用户信息表)
字段名称
类型
长度
主键
是否为空
字段含义
备注
id
int
2
是
否
用户ID
Sno
Varchar
20
用户学号
登录账号
nickname
用户姓名
password
用户密码
tel
50
用户电话
email
4
用户电子邮箱
address
用户家庭地址
type
用户权限
0为学生
1为教师
s_delsign
用户删除标记
0为未删除
1为已删除
表1.2为课程信息表,sort为学生选课情况,0为必修课、1为选修课,老师添加学生成绩信息时,选择必修课,数据库表中对应的是0,选择选修课,数据库表中对应的是1。
表1.2course(课程信息表)
课程ID
Cno
10
课程号
Cname
8
课程名称
teacher
授课教师
time
3
学时
sort
选课情况
表1.3为学生成绩表,Cno和Sno是User(用户表)和course(课程表)的主键,为了将User(用户表)和course(课程表)联系起来,产生了sc(成绩表),Grade是两个表新生成的成绩字段。
表1.3sc(学生成绩表)
成绩ID
11
学号
Grade
成绩
2.3.2系统功能需求分析
本系统的开发主要是为提高目前学校管理的效率,重点解决了成绩管理混乱、教师修改成绩不方便、不及时等问题,有效地利用了各学校现有的电脑与网络资源,促进学校全面展开信息化教学,同时也给老师和学生提供一个互相交流的平台,可以实现跨空间、跨时间的交流,极大的提高了工作、学习效率。
成绩管理系统主要是提供网上成绩管理平台。
用户通过登录功能进行角色判断。
教师功能包括实现课程、年级安排和教学计划分配,以及对用户的基本信息进行管理。
教师具有发布成绩信息、个人信息、修改信息等功能。
学生的功能有查看分数,查看个人信息等。
对系统用例图进行分析,设计出成绩管理系统顶层用例图,如图2.2。
图2.2成绩管理系统的顶层用例图
用例图说明:
教师需要对登录用户信息及学生成绩信息的管理,学生可以对个人成绩及个人信息的查询,当发现有错误信息时可以及时和教师联系,并可以随时了解自己的成绩情况,避免挂科耽误补考等事件的发生。
下面是教师管理子系统的用例图,如图2.3。
图2.3教师管理子系统的用例图
教师添加学生的信息,教师可通过网络检查各位同学的成绩情况,对于需要修改的成绩教师要及时修改,及时反馈学生成绩的情况。
学生需要查看自己各科的成绩,及时了解自己的成绩信息,如果有需要补考的,要及时和老师交流参加补考。
图4.1是成绩管理业务流程图。
图2.4成绩管理业务流程图
2.4系统实现
2.4.1系统的详细设计
登录模块首先创建一个DBSqlConn对象,连接数据库。
然后使用stmt.executeQuery()执行SQL语句,从用户表中读取用户账号Sno、密码password和权限type值,与用户输入的信息进行比较,如果匹配成功,用session保留该用户的id值和权限,根据权限值跳转至用户页面。
如果匹配失败,则跳转到错误页提示请重新登录。
用户登录页面如图2.5。
图2.5用户登录页面
如果学生登录时输入了错误的账号和密码,结果就会像如图2.6所示:
图2.6学生登录错误信息图
学生登录成功后的界面如图2.7所示:
图2.7学生登录成功图
教师负责管理课程信息、成绩信息以及用户的基本信息,下面对主要功能进行介绍。
教师登录成功后的界面
主要功能有注册用户,查询信息,查询成绩等功能,如图2.8。
图2.8教师登录后的页面
2.4.3程序源代码
用户登录页面代码实现如下:
Stringusername=request.getParameter("
username"
);
//用此方法把密码和权限值也读出来
Stringsql="
select*fromteacherwheretype='
"
+type+"
'
andSno='
+username+"
andpassword='
+password+"
;
try{conn=db.getConnection();
//连接数据库
stmt=conn.createStatement();
rs=stmt.executeQuery(sql);
}...…
while(rs.next()){
if(role.equals("
1"
)){session.setAttribute("
ID_AM"
rs.getString("
t_id"
));
//保存用户ID值
session.setAttribute("
user"
"
admin"
//保存用户权限值
response.sendRedirect("
T_user.jsp"
...…
}
增加学生信息代码如下:
publicstaticbooleanaddUser(Connectionconn,Userus)throwsSQLException{
Statementstmt=null;
try{conn.setAutoCommit(false);
stmt.executeUpdate("
insertintouser(Sno,password,nickname,tel,email,address,type)"
+"
values('
+us.getSno()+"
'
+us.getPassword()+"
+us.getNickname()+"
+us.getTel()+"
+us.getEmail()+"
+us.getAddress()+"
+us.getType()+"
)"
修改学生信息代码如下:
publicbooleanupdUser(Connectionconn,Userus)throwsSQLException{
try{conn.setAutoCommit(false);
updateuser"
setSon='
+"
password="
+
nickname="
email='
tel='
+
address='
+us.getAddress()+"
type='
whereid="
+sc.getId());
stmt.close();
查询学生信息代码如下:
select*fromuserwheredelflag=0"
if(sel.equals("
)){sql=sql+"
andSnolike'
+tex+"
elseif("
2"
.equals(sel)||sel.equals("
andnicknamelike'
"
3"
.equals(sel)||sel.equals("
andemaillike'
4"
)){sql="
else{sql="
}
添加成绩信息代码实现如下:
sql="
insertintocourse(c_number,c_name,c_period,c_type)
values('
+request.getParameter("
number"
)+"
name"
period"
type"
stmt.executeUpdate(sql);
PlanShowServlet?
type=1"
//添加课程成功
修改成绩信息代码实现如下:
publicbooleanupdScore(Connectionconn,Coursesc)throwsSQLException{
updatecourse"
+"
setteacher='
+sc.getTeacher()+"
Cno="
+sc.getCno()+"
sort="
+sc.getSort()+"
Cname='
+sc.getCname()+"
'
删除学生成绩信息代码实现如下:
try{conn=newDB().getConnection();
conn.setAutoCommit(false);
deletefromuserwhereid="
+id);
mit();
conn.setAutoCommit(true);
returntrue;
close();
删除课程信息代码实现如下:
deletefromcoursewhereCno="
学生查看个人成绩代码实现如下:
try{conn=newDB().getConnection();
Coursesc=newCourse();
rs=stmt.executeQuery("
select*fromscwhereid="
if(rs.next()){
sc.setId(rs.getInt("
id"
sc.setCname(rs.getString("
Cname"
sc.setStudent(rs.getString("
student"
sc.setTeacher(rs.getString("
teacher"
sc.setGrade(rs.getFloat("
Grade"
sc.setSort(rs.getString("
sort"
2.5测试分析
软件测试是软件开发过程的重要组成部分。
是在软件投入运行前,对软件需求分析、设计规格说明和编码的最终复审,是软件质量保证的关键步骤。
软件测试是为了发现错误而执行程序的过程。
软件测试在软件生存期中横跨两个阶段:
通常在编写每一个模块之后就对它做必要的测试(称为单元测试)。
编码和单元测试属于软件生存期中的同一个阶段。
在结束这个阶段后对软件系统还要进行各种综合测试,这是软件生存期的另一个独立阶段,即测试阶段。
本次测试主要针对成绩管理系统进行系统测试,主要包括功能测试、界面测试以及成绩管理系统任务书中列出的系统功能和性能测试,例如登录管理、用户管理、成绩管理等,在测试过程中发现的所有错误都需要改正。
当以教师的身份成功登录学生成绩管理系统后,点击查询成绩,出现乱码,并提示java.lang.NullPointerException,通过反复的查找代码,并用System.out.println("
jjjjj"
+sc.getTeacher());
等语句,检查是否是未取到教师的值,最后发现问题是虽然定义了数据库连接等语句,但是没有实例化数据库对象,通过添加DBdb=newDB解决了这个问题。
以教师身份登录成功后,当我查询出成绩后,点击预览,虽然成功进入预览页但是课程号的值为空,经过使用System.out.println(sc.getCon());
得知课程号没有取到,这时回到WebModel页,查看SQL语句,发现是没有查询Con这个字段,所以当我修改过查询语句后,成功获得课程号的值。
表2.1test(测试表)
测试项
测试过程
预期结果
实际结果
结论
教师登录
使用教师的用户名和密码登录
进入教师界面,并显示相应功能
通过
学生登录
使用学生的用户名和密码登录
进入学生界面,并显示相应功能
进入学生界面,并显示显示相应功能
用户管理
增加、修改、删除、浏览用户信息
成功,并提示操作成功
成绩管理
增加、修改、删除、浏览成绩信息
课程管理
增加、删除课程信息
查询学生信息
选择页面的查询信息项,输入查询条件
正确显示相应查询结果
查询学生成绩
选择页面的查询成绩项,输入查询条件
第3章实训总结
通过对系统进行需求分析、设计等一系列工作,将系统分为三个模块:
登录模块、教师模块、学生模块,最终使系统实现了教师管理个人信息、管理成绩信息;
学生查看个人信息、查询个人成绩等功能。
系统的界面美观友好,操作方便,将在很大程度上提高学校成绩管理效率,基本完成本次毕业设计目标。
第一次接触这个系统时,需求只有两条,而且描述的很不清楚。
米老师和吴老师交流了很长时间,但是需求仍然很模糊,模模糊糊的懂了点,硬着头皮把需求实现了,结果根本不是老师的意思。
我们作为程序开发者,需求的分析需要我们和用户共同来分析。
但这个系统并不是我们完全开发的,它是借用了另一个系统,需要将其进行部分改动,这样我们就需要明确的需求和文档了。
但是,一方面由于第一次做JSP方向的系统开发,对系统开发所使用的技术、工具等有一个从熟练到精通的过程,并且对程序的开发又缺少经验。
另一方面由于毕业设计的时间有限,系统难免会有很多不足,需要进一步调试,所以要完成一