java学生成绩排名系统.docx
《java学生成绩排名系统.docx》由会员分享,可在线阅读,更多相关《java学生成绩排名系统.docx(21页珍藏版)》请在冰豆网上搜索。
java学生成绩排名系统
软件学院
课程设计报告书
课程名称JavaEE与中间件
设计题目学生成绩排名系统
专业班级
学号
姓名
指导教师
2013年1月
1设计时间
2013年1月21日-2013年1月26日
2设计目的
JavaEE课程设计是对所学JavaEE与中间件课程的小结,是提高学生对所学知识综合应用能力的一种方式,是集中实践性环节之一。
要求同学们对课程中所学习到的知识综合运用,开发有一定规模的JavaWeb程序。
3设计任务
学生成绩排名系统:
(1)功能描述:
用户以合法身份登录系统后,才能进行所有操作;登录系统时,有两种权限:
管理员权限和学生用户权限。
管理员用户可以查看所有学生的成绩信息(假设只有一门课程),以及对所有学生的成绩进行排名;学生用户可以添加、查看和删除自己的成绩信息。
(2)添加学生成绩:
学生添加成绩信息(包括学号、姓名、成绩);
(3)查看学生成绩:
管理员可以查看所有学生的成绩,学生用户只能查看自己的成绩;
(4)删除成绩:
学生可以删除自己的成绩;
(5)对成绩排名:
管理员对所有学生成绩进行排名。
4设计内容
4.1需求分析
成绩排名成为学校教学管理中十分复杂的管理工作之一,单纯的采用传统的手工处理已经不符合教育和管理的要求,而计算机具有运算速度快,处理能力强等特点,很自然地进入到这一应用领域中。
因此为了保证学校的信息流畅,工作高效,有必要设计一个学生成绩排名系统。
这不但能使教务人员从复杂的成绩管理中解脱出来,而且对于推动教学的发展也起到了非常重要的作用。
随着学校规模的不断扩大,专业,班级,学生的数量急剧增加,有关学生成绩的各种信息量也成倍增长,而目前许多高校的学生成绩排名仍停留在复杂的人工操作上,重复工作较多,工作量大,效率低,因此,迫切需要开发基于互联网的个人成绩排名系统。
此次课程设计为设计一个就是设计一个这样的学生个人成绩排名系统,该系统要求用户以合法身份登录后才能进行所有操作。
用户以合法身份登录系统后,才能进行所有操作;登录系统时,有两种权限:
管理员权限和学生用户权限。
管理员用户可以查看所有学生的成绩信息(假设只有一门课程),以及对所有学生的成绩进行排名;学生用户可以添加、查看和删除自己的成绩信息。
4.1.1总体目标
设计一个学生成绩排名系统,该系统要求用户以合法身份登录后才能进行所有操作。
用户以合法身份登录系统后,才能进行所有操作;登录系统时,有两种权限:
管理员权限和学生用户权限。
管理员用户可以查看所有学生的成绩信息(假设只有一门课程),以及对所有学生的成绩进行排名;学生用户可以添加、查看和删除自己的成绩信息。
4.1.2具体目标
实现以下功能:
(1)添加学生成绩:
学生添加成绩信息(包括学号、姓名、成绩);
(2)查看学生成绩:
管理员可以查看所有学生的成绩,学生用户只能查看自己的成绩;
(3)删除成绩:
学生可以删除自己的成绩;
(4)对成绩排名:
管理员对所有学生成绩进行排名。
4.1.3系统数据建模(ER图)
E-R方法是“实体-联系方法”(Entity-RelationshipApproach)的简称。
它是描述现实世界概念结构模型的有效方法。
E-R图提供了表示实体类型、属性和联系的方法,是用来描述现实世界的概念模型。
图1系统ER图
4.2.4系统功能建模(数据流程图)
数据流图简称DFD,它用来描述目标系统的逻辑结构,它是由实体部分,处理部分,数据存储部分和数据流四部分组成,为了使数据流图所描述逻辑结构更加清晰,容易阅读,对数据流图作如下说明:
图2学生成绩排名系统数据流图
4.2.5数据字典
(一)数据流的描述
数据流名称:
学号
简述:
学生的学号
数据流来源:
数据库
数据流去向:
jsp页面
数据项组成:
查询的学生学号
数据流名称:
姓名
简述:
学生或管理员的姓名
数据流来源:
数据库
数据流去向:
jsp页面
数据项组成:
显示的学生或管理员姓名
数据流名称:
id
简述:
管理员的id
数据流来源:
数据库
数据流去向:
jsp页面
数据项组成:
管理员id
数据流名称:
成绩
简述:
学生姓名和成绩
数据流来源:
数据库
数据流去向:
查询页面
数据项组成:
学号+成绩
数据流名称:
密码
简述:
学生或管理员的登录密码
数据流来源:
数据库
数据流去向:
jsp页面
数据项组成:
数字
数据流名称:
操作信息
简述:
管理员或学生用户的操作
数据流来源:
jsp页面
数据流去向:
数据库
数据项组成:
增、删、查
(二)处理逻辑的描述
处理逻辑名称:
添加学生成绩
简述:
学生登入后对学号、姓名、成绩的添加
输入的数据流:
学生学号、姓名、成绩
处理描述:
学生录入的成绩信息经过系统处理存储到数据库中
输出数据流:
学号、成绩信息
处理逻辑名称:
删除学生成绩
简述:
学生登入后对自己成绩的删除
输入的数据流:
学生用户名和密码
处理描述:
学生删除的信息经过系统处理后移除数据库
输出数据流:
学生新成绩
处理逻辑名称:
查看学生成绩
简述:
学生登入后对学号、姓名、成绩、课程名称的查看
输入的数据流:
用户信息
处理描述:
通过查看处理显示学生成绩
输出数据流:
学生成绩
处理逻辑名称:
成绩排名信息
简述:
管理员对学生成绩进行排名
输入的数据流:
学生的成绩
处理描述:
系统对学生成绩进行排名
输出数据流:
排名后的学生成绩
(三)外部实体描述
外部实体名称:
学生
简述:
确定学生权限进行特定操作
输出数据流:
学生信息
外部实体名称:
管理员
简述:
确定管理员权限进行特定操作
输出数据流:
学生成绩信息
外部实体名称:
成绩信息
简述:
通过系统操作显现成绩信息
输出数据流:
用户对数据操作后数据的最终情况
4.2总体设计
4.2.1系统层次图
系统层次图如下:
图3系统层次图
4.2.2数据库设计
表1stu表
列名数据类型长度允许空文字描述
♀snovarchar50Y学号
kindvarchar50Y类型
namevarchar50Y姓名
Passwordvarchar10Y密码
表2course表
列名数据类型长度允许空文字描述
snovarchar50Y学生学号
♀cnamevarchar50课程名称
gradefloat10Y学生成绩
4.3详细设计
主要代码如下:
1与数据库的连接
packageutil;
importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.SQLException;
publicclassDBConnection{
publicstaticConnectiongetConnection(){
finalStringdriver="com.microsoft.jdbc.sqlserver.SQLServerDriver";
finalStringurl="jdbc:
microsoft:
sqlserver:
//localhost:
1433;databasename=mydb";
Connectioncon=null;
try{
Class.forName(driver);
}catch(ClassNotFoundExceptione){
//e.printStackTrace();
System.out.println("驱动加载失败!
");
}
try{
con=DriverManager.getConnection(url,"sa","sa");
con.setAutoCommit(false);
}catch(SQLExceptione){
e.printStackTrace();
}
returncon;
}
publicstaticvoidmain(String[]args){
//TODOAuto-generatedmethodstub
System.out.print(DBConnection.getConnection());
}
}
2用户登录页面的实现:
<%@pagelanguage="java"import="java.util.*"pageEncoding="GBK"%>
<%@taglibprefix="s"uri="/struts-tags"%>
<%
Stringpath=request.getContextPath();
StringbasePath=request.getScheme()+":
//"+request.getServerName()+":
"+request.getServerPort()+path+"/";
%>
DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">
">
MyJSP'Login.jsp'startingpage
--
-->
formaction="login">
textfieldname="sno"label="学号">
textfield>
passwordname="password"label="密码">
password>
radiolist="#{1:
'普通用户
',2:
'管理员'}"name="radio1"listValue="value"listKey="key">
radio>
submitvalue="登录">
submit>
form>
3StudentDAO:
(部分)
publicclassStudentDAO{
publicStudentgetStudent(Studentstudent){
Connectioncon=DBConnection.getConnection();
Students=null;
try{
PreparedStatementps=con.prepareStatement("select*fromstuwheresno=?
andkind=?
");
ps.setString(1,student.getSno());
ps.setString(2,student.getKind());
ResultSetrs=ps.executeQuery();
if(rs.next()){
s=newStudent();
s.setSno(rs.getString("sno"));
s.setKind(rs.getString("kind"));
s.setName(rs.getString("name"));
s.setPassword(rs.getString("password"));
}
mit();
con.close();
}catch(SQLExceptione){
e.printStackTrace();
}
returns;
}
publicListgetGrades(Studentstudent){
Connectioncon=DBConnection.getConnection();
Listlist=newArrayList();
try{
PreparedStatementps=con.prepareStatement("select*fromcoursewheresno=?
");
ps.setString(1,student.getSno());
ResultSetrs=ps.executeQuery();
while(rs.next()){
Coursecourse=newCourse();
course.setCname(rs.getString("cname"));
course.setGrade(rs.getFloat("grade"));
list.add(course);
}
mit();
con.close();
}catch(SQLExceptione){
e.printStackTrace();
}
returnlist;
}
publicvoidgetAddGrades(Studentstudent,Coursecourse){
Connectioncon=DBConnection.getConnection();
try{
PreparedStatementps=con.prepareStatement("insertintocoursevalues(?
?
?
)");
ps.setString(1,student.getSno());
ps.setString(2,course.getCname());
ps.setFloat(3,course.getGrade());
ps.executeUpdate();
mit();
con.close();
}catch(SQLExceptione)
{
e.printStackTrace();
}
}
publicvoidgetDeleteGrades(Studentstudent,Coursecourse){
Connectioncon=DBConnection.getConnection();
try{
PreparedStatementps=con.prepareStatement("deletefromcoursewheresno=?
andcname=?
");
ps.setString(1,student.getSno());
ps.setString(2,course.getCname());
ps.executeUpdate();
mit();
con.close();
}catch(SQLExceptione){
e.printStackTrace();
}
}
4StudentAction:
(部分)
publicclassStudentActionextendsActionSupport{
privateintradio1;
privateStringsno;
privateStringpassword;
privateStringkind;
privateStringaddname;
privatefloataddgrade;
privateStringdeletename;
privateStringupdatename;
privatefloatupdategrade;
privatestaticStudentstudent=newStudent();
publicStringgetSno(){
returnsno;
}
publicvoidsetSno(Stringsno){
this.sno=sno;
}
publicStringgetPassword(){
returnpassword;
}
publicvoidsetPassword(Stringpassword){
this.password=password;
}
publicStringgetAddname(){
returnaddname;
}
publicvoidsetAddname(Stringaddname){
this.addname=addname;
}
publicfloatgetAddgrade(){
returnaddgrade;
}
publicvoidsetAddgrade(floataddgrade){
this.addgrade=addgrade;
}
publicStringgetDeletename(){
returndeletename;
}
publicvoidsetDeletename(Stringdeletename){
this.deletename=deletename;
}
publicStringgetUpdatename(){
returnupdatename;
}
publicvoidsetUpdatename(Stringupdatename){
this.updatename=updatename;
}
publicfloatgetUpdategrade(){
returnupdategrade;
}
publicvoidsetUpdategrade(floatupdategrade){
this.updategrade=updategrade;
}
publicintgetRadio1(){
returnradio1;
}
publicvoidsetRadio1(intradio1){
this.radio1=radio1;
}
publicStringgetKind(){
returnkind;
}
publicvoidsetKind(Stringkind){
this.kind=kind;
}
publicStringlogin(){
student.setSno(sno);
student.setPassword(password);
StudentServicestudentService=newStudentService();
if(radio1==1)
student.setKind("普通用户");
else
student.setKind("管理员");
if(studentService.checkUser(student)==true){
if(student.getKind().equals("普通用户"))
return"success1";
else
return"success2";
}else
return"failure";
}
publicStringshowAllGrades(){
StudentServicestudentService=newStudentService();
Listlist=studentService.getGrades(student);
ActionContextact=ActionContext.getContext();
Maprequest=(Map)act.get("request");
request.put("students",list);
return"showgrades";
}
publicStringaddCourse(){
Coursecourse=newCourse();
course.setCname(addname);
course.setGrade(addgrade);
StudentServicestudentService=newStudentService();
studentService.getAddGrades(student,course);
Listlist=studentService.getGrades(student);
ActionContextact=ActionContext.getContext();
Maprequest=(Map)act.get("request");
request.put("addcourse",list);
return"addcourse";
}
5Struts配置文件:
xmlversion="1.0"encoding="GBK"?
>
DOCTYPEstrutsPUBLIC
"-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.0//EN"
"http:
//struts.apache.org/dtds/struts-2.0.dtd">
--处理中文乱码-->
--此处的class属性值不是实际的类-->
/index.jsp