SSH学生成绩管理系统.docx
《SSH学生成绩管理系统.docx》由会员分享,可在线阅读,更多相关《SSH学生成绩管理系统.docx(19页珍藏版)》请在冰豆网上搜索。
SSH学生成绩管理系统
湖北民族学院科技学院2011年秋季期末试卷
A或B
卷
课程
高级Web技术
使用班级
制卷份数
考生姓名
命题人
张华
教研室审核人
单位审核人
答题纸数
班级
题号
一
二
三
四
五
六
七
八
九
十
十一
合计
学号
评分
分数
阅卷人
要求:
1、命题一律用A4纸;
2、除填空题、选择题外,题间不留空。
考查形式为论文撰写,要求如下:
(1)内容:
以一个实际SSH系统(Struts+Hiberate+Spring)为核心,从系统产生背景、问题提出、问题分析、系统分析、系统设计、系统实现等方面进行阐述。
(2)具体要求:
1、题名要求简明扼要,能反映论文主题;摘要必须说明研究目的、方法、结果、结论,字数200字左右为宜,忌与引言及结论中的内容雷同;
2、字数3000~5000字
3、论文参考架构(请注意各级内容的字体格式,以示区分)
论文标题(三号黑体)
班级、学号、姓名(五号宋)
摘要(五号黑):
内容(五号宋)
关键字(五号黑):
内容(五号宋)
1 引言
2系统设计 (小三黑)
2.1设计原则(四号黑)
正文(五号宋)
2.2功能模块划分
3系统实现
3.1实现技术
3.2具体实现
3.3性能优化(如果有的话)
4 结束语
对基于SSH的学生成绩管理系统
班级:
K0309316学号:
k030931605姓名:
邓贵青
摘要:
基于C/S和B/S模式的传统成绩管理系统,存在系统层次架构不清,侵入性强,复用性低等缺陷,而且增加了管理人员的工作量和复杂度.鉴于此,采用MVC模式和SSH技术,构建分层的体系结构,使成绩管理的业务逻辑与控制逻辑分离开来,并在此基础上设计并实现了基于B/S模式的学生成绩管理系统.实际应用表明,基于SSH技术的成绩管理系统框架层次清晰,降低了模块间的耦合度,提高了复用的粒度,增强了系统模块的可复用性、灵活性和可维护性.
关键词:
学生成绩管理系统设计SSH技术维护性
Basedonthestudents'achievementofSSHmanagementsystem
Abstract
BasedonC/SandB/Smodelofthetraditionalperformancemanagementsystem,existingsystemlevelarchitectureisnotclear,invasivestrong,reuselowgradedefect,butalsoincreasethemanagementpersonnel'sworkloadandcomplexity.Inviewofthis,theMVCpatternandSSHtechnology,constructingthesystemofthelayeredstructure,makethebusinesslogicoftheperformancemanagementandcontrollogicseparated,andonthebasisofdesignandrealizetheB/Smodelbasedonstudentachievementmanagementsystem.ThepracticalapplicationshowsthatthetechnologybasedonSSHperformancemanagementsystemframeworkdistinctlevel,reducethecouplingbetweenmodules,andimprovethereuseofparticlesize,enhancethesystemmoduleofthereusability,flexibilityandmaintainability.
Keywords:
Students'performancemanagementsystemdesignSSHtechnology
Maintenance
要求:
(1)整合Struts2、Spring和Hibernate框架
(2)实现“登录”功能
(3)实现“学生信息管理”功能
(4)实现“学生成绩管理”功能
(5)实现分页功能
目的:
掌握Struts2的开发步骤
掌握Hibernate的开发步骤
掌握Spring的开发步骤,理解依赖注入、AOP、事务管理等
掌握Struts2、Spring和Hibernate框架的整合
掌握分页技术
思路:
1、建库建表
2、利用分层思想,建package
3、添加Spring开发能力
4、添加Hibernate开发能力
5、生成Hibernate所需的POJO类和映射文件
6、开发DAO层
(1)新建DAO层接口。
(2)新建DAO层实现类(该类要实现DAO层接口,继承HibernateDaoSupport类)。
(3)在Spring配置文件中增加该DAO层实现类的定义,并需要依赖注入一个SessionFactorybean的引用。
7、开发Service层
(1)新建Service层接口。
(2)新建Service层实现类,该类中需要声明所调用DAO层接口,并生其setter方法。
(3)在Spring配置文件中增加该Service层实现类的定义,并需要依赖注入DAO层的bean。
8、实现WEB层
(1)在web.xml中增加struts2的过滤器和Spring的监听器。
(2)增加Spring和Struts2的整合文件struts.properties。
(3)新建所需的jsp文件。
(4)新建Action类,该类要继承ActionSupport,同时该类要依赖注入Service的bean(声明+setter方法)。
(5)在Spring配置文件中增加该Action类的定义,并注入Service层的bean。
(6)在struts.xml中增加该Action的定义,其中class的属性是在Spring中定义的该Actionbean的id。
9、部署运行
实验步骤:
1、建库、建表
建立数据库xscj,建立xsb、dlb、zyb、kcb、cjb等。
学生信息表:
xsb
列名
描述
数据类型
可空
默认值
说明
XH
学号
Char(6)
×
无
主键
XM
姓名
Char(8)
×
无
XB
性别
bit
×
无
1:
男,0:
女
CSSJ
出生时间
datetime
√
无
ZY_ID
专业ID
int
×
无
ZXF
总学分
int
√
无
BZ
备注
Varchar(200)
√
无
ZP
照片
mediumblob
√
无
登录表:
dlb
列名
描述
数据类型
可空
默认值
说明
id
标识
int
×
自增1
主键,自增
xh
登录号
char(6)
×
无
外键,xsb中xh
kl
口令
char(20)
×
无
专业表:
zyb
列名
描述
数据类型
可空
默认值
说明
id
ID
int
×
自增1
主键
zym
专业名
char(12)
×
无
rs
人数
int
√
0
fdy
辅导员
char(8)
√
无
课程表:
kcb
列名
描述
数据类型
可空
默认值
说明
kch
课程号
Char(3)
否
无
主键
kcm
课程名
Char(12)
是
无
kxxq
开课学期
smallint
是
无
1-8
xs
学时
int
是
0
xf
学分
int
是
0
连接表:
xs_kcb
列名
描述
数据类型
可空
默认值
说明
xh
学号
char(6)
主键
kch
课程号
char(3)
主键
成绩表:
cjb
列名
描述
数据类型
可空
默认值
说明
Xh
学号
Char(6)
否
无
主键
Kch
课程号
Char(3)
否
无
主键
Cj
成绩
int
是
0
xf
学分
int
是
0
2、设计系统架构
利用分层架构模式,设计系统架构,系统可分为表示层、业务逻辑层和数据持久层。
如下图所示:
建立相应package。
3、添加Spring开发能力
(1)定义UserLibrary
(2)增加Spring开发能力(添加jar包——使用UserLibrary,新建applicationContext.xml)
注:
可以不增加UserLibrary,直接把需要的jar包拷贝到classpath下。
4、实现Hibernate持久层
(1)添加Hibernate开发能力
添加jar包:
如果第一步中已增加,此步可以省略。
注意:
需要把Hibernate交由Spring来管理,其中包括在Spring中配置“dataSource”和“sessionFactory”
(2)通过MyEclipse中Hibernate反向工程,分别生成表对应的POJO类及相应的映射文件。
注意:
所有的POJO类和映射文件(*.hbm.xml)放在org.model这个package下。
难点1:
xsb(学生表)的映射文件中需要设置和专业的多对一关系,参考代码如下:
xmlversion="1.0"encoding="utf-8"?
>
DOCTYPEhibernate-mappingPUBLIC"-//Hibernate/HibernateMappingDTD3.0//EN"
"
难点2:
成绩表(cjb)中需要配置复合主键,因为成绩表中的主键是由xh和kch组成,参考代码如下:
xmlversion="1.0"encoding="utf-8"?
>
DOCTYPEhibernate-mappingPUBLIC"-//Hibernate/HibernateMappingDTD3.0//EN"
"
--
MappingfileautogeneratedbyMyEclipsePersistenceTools
-->
--复合主键配置其中两个key-property,分别对应两个主键-->
对应的POJO类由复合主键的POJO类和成绩表的POJO类组成,参考代码如下:
CjbId.java
packageorg.model;
publicclassCjbIdimplementsjava.io.Serializable{
privateStringxh;
privateStringkch;
publicCjbId(){
}
publicCjbId(Stringxh,Stringkch){
this.xh=xh;
this.kch=kch;
}
publicStringgetXh(){
returnthis.xh;
}
publicvoidsetXh(Stringxh){
this.xh=xh;
}
publicStringgetKch(){
returnthis.kch;
}
publicvoidsetKch(Stringkch){
this.kch=kch;
}
}
Cjb.java
packageorg.model;
publicclassCjbimplementsjava.io.Serializable{
privateCjbIdid;
privateIntegercj;
privateIntegerxf;
publicCjb(){
}
publicCjb(CjbIdid){
this.id=id;
}
publicCjb(CjbIdid,Integercj,Integerxf){
this.id=id;
this.cj=cj;
this.xf=xf;
}
publicCjbIdgetId(){
returnthis.id;
}
publicvoidsetId(CjbIdid){
this.id=id;
}
publicIntegergetCj(){
returnthis.cj;
}
publicvoidsetCj(Integercj){
this.cj=cj;
}
publicIntegergetXf(){
returnthis.xf;
}
publicvoidsetXf(Integerxf){
this.xf=xf;
}
}
重点:
所有的映射文件需要在Spring配置文件中注册,参考applicationContext.xml如下:
5、实现DAO
所有DAO层的实现类需要继承HibernateDaoSupport类,参考代码如下:
packageorg.dao.imp;
importjava.util.List;
importorg.dao.DlDao;
importorg.model.Dlb;
importorg.springframework.orm.hibernate3.support.HibernateDaoSupport;
publicclassDlDaoImpextendsHibernateDaoSupportimplementsDlDao{
publicbooleanexistXh(Stringxh){
Listlist=getHibernateTemplate().find("fromDlbwherexh=?
",xh);
if(list.size()>0)
returntrue;
else
returnfalse;
}
publicDlbfind(Stringxh,Stringkl){
Stringstr[]={xh,kl};
Listlist=getHibernateTemplate().find("fromDlbwherexh=?
andkl=?
",str);
if(list.size()>0)
return(Dlb)list.get(0);
else
returnnull;
}
publicvoidsave(Dlbuser){
getHibernateTemplate().save(user);
}
}
注意:
所有DAO层的实现类都需要在Spring配置,并且必须获得一个SessionFactory的引用,然后才能完成持久化访问。
换句话说,DAO的实现类都交由Spring容器的Bean来管理。
参考Spring中的配置DAO的部分代码如下“
6、实现业务逻辑层(Service层)
主要实现对DAO层的调用。
难点1:
依赖注入
依赖注入首先要在需要注入的类中声明一个变量(对象),同时生成该变量(对象)的setter方法。
其次需要在Spring配置文件中设置需要注入的对象。
例如,需要在登录的DlServiceManage类中注入DlDaoImp实例化后的对象,步骤有二:
首先,在DlServiceManage中声明dlDao,同时生成dlDao的setter方法,参考代码如下:
packageorg.service.imp;
importorg.dao.DlDao;
importorg.model.Dlb;
importorg.service.DlService;
publicclassDlServiceManageimplementsDlService{
//对DlDao进行依赖注入
privateDlDaodlDao;
publicvoidsetDlDao(DlDaodlDao){
this.dlDao=dlDao;
}
publicbooleanexistXh(Stringxh){
returndlDao.existXh(xh);
}
publicDlbfind(Stringxh,Stringkl){
returndlDao.find(xh,kl);
}
publicvoidsave(Dlbuser){
dlDao.save(user);
}
}
其次,在Spring的配置文件中进行配置: