JAVAEE课设.docx
- 文档编号:18621960
- 上传时间:2023-08-20
- 格式:DOCX
- 页数:28
- 大小:1.94MB
JAVAEE课设.docx
《JAVAEE课设.docx》由会员分享,可在线阅读,更多相关《JAVAEE课设.docx(28页珍藏版)》请在冰点文库上搜索。
JAVAEE课设
软件学院
课程设计报告书
课程名称JAVAEE与中间件
设计题目学生个人成绩管理系统
专业班级软件10-2班
学号
姓名
指导教师
2013年1月
1设计时间
2013年1月21日---2013年1月27日
2设计目的
JavaEE课程设计是对所学JavaEE与中间件课程的小结,是提高学生对所学知识综合应用能力的一种方式,是集中实践性环节之一。
要求同学们对课程中所学习到的知识综合运用,开发有一定规模的JavaWeb程序。
3设计任务
(一)必备功能说明:
(1)功能描述:
用户以合法身份登录系统后,才能进行所有操作;用户可以添加、查看、修改和删除自己的成绩信息;计算各课程的平均分。
(2)添加学生成绩:
学生添加成绩信息(包括学号、姓名、课程名称、成绩);
(3)查看学生成绩:
查看所有课程的成绩;
(4)删除成绩:
学生可以删除自己的成绩;
(5)计算成绩平均分:
计算出所有成绩的平均分
(二)开发语言与开发环境:
MyEclipse、Java、数据库(sqlserver2000、mysql、oracle等任选一种)
4设计内容
4.1需求分析
4.1.1总体目标
(1)获得登陆界面传递的权限信息,设置用户是否可以使用(课程信息修改和删除,成绩信息录入、修改和删除)这些操作.
(2)进入学生成绩管理主窗口,设置等待操作状态
4.1.2具体目标
学生个人成绩管理系统需要实现以下功能:
学生信息管理:
用于对学生信息的录入,录入后对信息进行查询、修改或删除操作。
课程信息管理:
用于对课程信息的操作,包括录入课程信息,及对课程的查询、修改和删除操作。
成绩信息管理:
用于对成绩信息的管理操作,对学生课程成绩的录入,查询、修改及删除。
统计功能管理:
能够把所有学生的平均成绩信息和各科平均成绩信息按班级统计。
还有用户的登录,普通用户只能查询,不能做修改和删除操作,只有管理员才能做修改和删除并所有的操作。
本系统性能力求易于使用,具体有较高的扩展性和可维护性。
4.1.3数据建模(ER图)
图4-1学生成绩管理系统ER图
4.1.4系统功能建模(数据流程图)
E1
管理员
E2
普通用户
F1学生信息F5学生信息
F2学生信息
F3课程信息F6课程信息
F4课程信息
图4-2学生成绩管理系统顶层数据流图
E2
普
通
用
户
E1
管
理
员
F7学生信息
F8课程信息
F9学生信息
F10学生信息课程信息F11课程信息
图4-3学生成绩管理系统一层数据流图
4.1.5数据字典
数据字典是对数据流图的解释和说明,包含的内容如下:
(1)数据元素(数据流分量)。
数据元素是不可再分的数据单位,一般而言,包括如下内容:
数据项描述={数据项名,数据项含义说明,别名,数据类型,长度,取值范围,取值含义,与其他数据项的逻辑关系,数据项之间的联系}。
其中,后两项定义了数据的完整性约束条件,用于数据校验。
(2)数据流。
是数据结构在系统内传输的路径。
对数据流的描述通常包括如下内容:
{数据流名,说明,编号,数据流来源,数据流去向,组成(数据结构)}
名字:
添加、更改、删除信息
描述:
确保学生信息的准确
编号:
F1
组成:
姓名、学号、学院、性别、课程信息、用户密码
名字:
课程的统计、搜索
描述:
查询大学生课程的信息
编号:
F2
组成:
姓名、学号、学院、性别、统计各科成绩平均分、统计各个学生成绩平均分
名字:
查询(选定条件查询)
描述:
查询了解大学生学生信息信息、课程信息的情况
编号:
F3
组成:
学号号、姓名、性别、院系、课程名称、成绩、用户密码
名字:
权限分配
描述:
确保学籍档案的安全性,任何人不得随意的更改或删除信息
编号:
F4
组成:
用户密码、用户的身份验证、姓名
(3)数据存储。
数据存储是数据结构停留或保存的地方。
也是数据流的来源和去向之一。
可以是手工文档或手工凭单,也可以是计算及文档。
一般而言,应包括如下内容:
{数据存储名,说明,编号,输入的数据流,输出的数据流,组成(数据结构),数据量,存取频度,存取方式}。
名字:
学生信息库
描述:
一个学生的基本信息
编号:
D1
组成:
姓名、学号、性别、院系、课程名称、成绩
名字:
课程信息库
描述:
有关学生课程的信息
编号:
D2
组成:
姓名、学号、院系、课程名称、成绩
(4)数据处理。
处理过程的具体处理逻辑通常在详细设计过程中用判定表或判定树来描述。
在数据字典中,只需描述处理过程的说明性信息,通常包括以下内容:
{处理过程名,说明,输入数据流,输出数据流,处理}
名字:
学生信息课程信息录入管理
描述:
一个学生基本信息以及课程信息的输入
编号:
P1
输入/输出数据流:
学生的基本信息及课程信息
4.2总体设计
4.2.1系统层次图
JavaEE的体系结构有三层:
表示层、业务逻辑层和数据持久层。
开发一个SSH(Struts、Hibernate、Spring)项目,要遵循这三层模式。
图4-4系统体系结构
4.2.1.1表示层
在开发阶段,一般用DAO实现与数据库的交互,进行CRUD操作,完成对底层数据库的持久化访问。
这里的DAO实现类中用的了Spring整合Hibernate后提供的HibernateDaoSupport类。
4.2.1.2业务逻辑层
业务逻辑组件是为控制器提供服务的,它依赖于DAO组件,是对DAO的封装,通过业务逻辑的封装,让控制器无需直接访问DAO的方法,而是调用业务逻辑的方法。
4.2.1.3数据持久层
这里可以为项目添加Hibernate的开发能力。
添加Spring开发能力时,已经把所需JARs全部添加进去,这里不用再添加任何类库。
把Hibernate交由Spring来管理。
然后生成对应的POJO类及相应的映射文件,使这5个表全部生成对应文件,也可以一次选中所有表一起生成。
生成文件后要对这些文件的有些部分稍做修改,来实现它们之间的关系。
4.2.2数据库设计
Chart4-1UserLoginInformationChart
表4-1用户登录信息表
列名
数据类型
长度
可空
文字描述
username
password
varchar
varchar
50
50
N
Y
用户名
登录密码
Chart4-2CourseInformationChart
表4-2课程信息表
列名
数据类型
长度
可空
文字描述
cno
cname
sno
grade
varchar
varchar
varchar
int
50
50
50
4
N
Y
Y
Y
课程号
课程名
学号
成绩
Chart4-3StudentInformationChart
表4-3学生信息表
列名
数据类型
长度
可空
文字描述
sno
name
sex
yuanxi
varchar
varchar
varchar
varchar
50
50
50
50
N
Y
Y
Y
学号
姓名
性别
院系
Chart4-4StudentIndividualInformationChart
表4-4学生个人成绩表
列名
数据类型
长度
可空
文字描述
sno
name
sex
yuanxi
java
dbdesign
japanese
avagrade
varchar
varchar
varchar
varchar
int
int
int
int
50
50
50
50
4
4
4
4
N
Y
Y
Y
Y
Y
Y
Y
学号
姓名
性别
院系
java
数据库设计
日语
平均分数
Chart4-5StudentInformationStatisticsChart
表4-5课程信息统计表
列名
数据类型
长度
可空
文字描述
cno
cname
avagrade
varchar
varchar
int
50
50
4
N
Y
Y
课程号
课程名
平均成绩
4.3详细设计
4.3.1模块功能设计
Spring和Hibernate的整合,是由Spring的配置文件来管理Hibernate的配置,由Bean来实现数据库的连接,而他们的整合还提供了HibernateSupportDao类来实现DAO。
又从Struts2与Spring的整合中可以看出,Struts2也把Action类的生成交给了Spring,利用Spring的依赖注入,完成业务逻辑对象的生成,这样就完成了它们3个之间的整合。
JavaEE的体系结构有三层:
表示层、业务逻辑层和数据持久层。
开发一个SSH(Struts、Hibernate、Spring)项目,要遵循这三层模式。
分别用SSH实现这样的目的:
用Hibernate来完成数据的持久层应用,用Spring的Bean来管理组件(主要是DAO、业务逻辑和Struts的Action),而用Struts来完成页面的控制跳转。
一个项目往往很大,在项目开发中需要一个团队而不是一个程序员来完成。
这就需要整个团队协同工作,分工进行。
所以面对接口编程给团队开发提供了很大的空间,只要有了这些接口,其他程序员就可以直接调用其中的方法,不管这个接口中的方法是如何实现的。
开发一个项目,一般要先完成持久层数据连接,然后实现DAO,接着是业务逻辑,最后实现页面及控制逻辑。
4.3.1.1持久层数据
domain:
放置表对应的POJO类。
4.3.1.2DAO
dao:
放置DAO(数据访问对象)的接口,接口中的方法用来和数据库进行交互,这些方法由实现它们的类来实现。
3.2.3业务逻辑及控制逻辑
service:
放置业务逻辑接口。
接口中的方法用来处理用户请求,这些方法由实现接口的类来实现。
action:
放置对应的用户自定义的Action类。
由Action类调用业务逻辑来处理用户请求,然后控制跳转。
struts.xml:
配置Action。
4.4运行与测试
4.4.1连接数据库
publicstaticConnectiongetConnection(){
finalStringdriver="com.microsoft.jdbc.sqlserver.SQLServerDriver";
finalStringurl="jdbc:
microsoft:
sqlserver:
//localhost:
1433;databasename=mydb";
Connectioncon=null;
try{Class.forName(driver);
}catch(ClassNotFoundExceptione){
System.out.println("驱动加载失败!
");}
try{
con=DriverManager.getConnection(url,"sa","sa");
}catch(SQLExceptione){
e.printStackTrace();}
returncon;}
4.4.2系统界面的实现
图4-5用户登录界面
图4-6运行主界面
图4-7查询学生信息界面
图4-8添加学生信息界面
图4-9更新学生信息界面
图4-10删除学生信息界面
4.4.3系统主要功能实现
4.4.3.1struts.xml文件中部分代码
4.4.3.2功能实现部分代码
4.4.3.2.1action层
publicStringlogin(){
Useruser=newUser();
user.setUsername(username);
user.setPassword(password);
UserServiceuserService=newUserService();
if(userService.checkLogin(user)==true)
returnSUCCESS;
else
returnERROR;
}
publicStringAddStudent(){
Students=newStudent();
s.setSno(sno);
s.setName(name);
s.setSex(sex);
s.setYuanxi(yuanxi);
s.setJava(java);
s.setDbdesign(dbdesign);
s.setJapanese(japanese);
s.setAvagrade(avagrade);
StudentServicestudentService=newStudentService();
if(studentService.AddStudent(s))
return"showStudent";
else
return"failure";
publicStringDeleteStudent(){
Students=newStudent();
s.setSno(sno);
StudentServicestudentService=newStudentService();
if(studentService.DeleteStudent(s))
return"showStudent";
else
return"failure";
}
publicStringshowStudent(){
StudentServicestudentService=newStudentService();
Listlist=studentService.getStudent();
ActionContextactionContext=ActionContext.getContext();
Maprequest=(Map)actionContext.get("request");
request.put("list",list);
return"showStudent";
}
publicStringUpdateStudent(){
Students=newStudent();
s.setSno(sno);
s.setName(name);
s.setSex(sex);
s.setYuanxi(yuanxi);
s.setJava(java);
s.setDbdesign(dbdesign);
s.setJapanese(japanese);
s.setAvagrade(avagrade);
StudentServicestudentService=newStudentService();
if(studentService.UpdateStudent(s))
return"showStudent";
else
return"failure";
}
4.4.3.2.1DAO层
publicListgetStudent(){
Connectioncon=DBConnection.getConnection();
Listlist=newArrayList();
try{
PreparedStatementps=con.prepareStatement("selectname,sex,yuanxi,java,dbdesign,japanese,avagradefromStudentwheresno=?
");
ResultSetrs=ps.executeQuery();
while(rs.next()){
Students=newStudent();
s.setSno(rs.getString("sno"));
s.setName(rs.getString("name"));
s.setSex(rs.getString("sex"));
s.setYuanxi(rs.getString("yuanxi"));
s.setJava(rs.getInt("java"));
s.setDbdesign(rs.getInt("dbdesign"));
s.setJapanese(rs.getInt("japanese"));
intavagrade;
avagrade=(int)(rs.getInt("java")/3+rs.getInt("database")/3+rs.getInt("japanese")/3);
s.setAvagrade(avagrade);
list.add(s);
}
mit();
con.close();
}catch(SQLExceptione){
e.printStackTrace();
}
returnlist;
}
publicbooleanAddStudent(Studentstudent){
Connectioncon=DBConnection.getConnection();
PreparedStatementps=null;
intm=0;
try{
ps=con.prepareStatement("insertintoStudentvalues(?
?
?
?
?
?
?
)");
ps.setString(1,student.getSno());
ps.setString(2,student.getName());
ps.setString(3,student.getSex());
ps.setString(4,student.getYuanxi());
ps.setInt(5,student.getJava());
ps.setInt(6,student.getDbdesign());
ps.setInt(7,student.getJapanese());
m=ps.executeUpdate();
mit();
con.close();
}catch(SQLExceptione){
e.printStackTrace();
}
if(m!
=0){
returntrue;
}
else{
returnfalse;
}
}
publicbooleanDeleteStudent(Studentstudent){
Connectioncon=DBConnection.getConnection();
intm=0;
try{
PreparedStatementps=con.prepareStatement("deletefromStudentwheresno=?
");
ps.setString(1,student.getSno());
m=ps.executeUpdate();
mit();
con.close();
}catch(SQLExceptione){
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JAVAEE