jsp作业设计.docx
- 文档编号:9028701
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:20
- 大小:109.99KB
jsp作业设计.docx
《jsp作业设计.docx》由会员分享,可在线阅读,更多相关《jsp作业设计.docx(20页珍藏版)》请在冰豆网上搜索。
jsp作业设计
统分析完成后,进入系统设计阶段,这是整个系统实现过程呢个中非常重要的一个阶段。
良好的系统设计将会使开发顺利地进行。
13.5.1 数据库逻辑结构设计
数据库设计是系统设计中非常重要的一个环节。
数据是一切系统设计的基础,通俗的说数据库设计就像高楼大厦的根基一样,如果设计不合理、不完善,将在系统开发过程中、甚至到后期的系统维护、功能变更和功能扩充时,引起较多问题,严重时甚至要重新设计,重做大量已完成工作。
根据功能模块划分的结果可知,本系统的用户有三类:
管理员、学生和教师。
由于管理员、学生和教师的权限和操作功能大不相同,因此在本系统中需要分别进行数据记录。
首先需要如下3个数据实体:
❑ 管理员数据实体:
只需要记录管理员的登录名、姓名和密码,其中登录名和密码是管理功能模块登录验证时所必需的。
❑ 学生数据实体:
包括学生号、密码、学生姓名、性别、学生所在系、籍贯、联系电话、电子邮件。
这些信息中,密码、联系电话和电子邮件由学生自己进行维护,管理员在学生入学时根据填写的信息初始化学生信息,在以后的维护过程中,仅在特殊情况下对信息进行修改操作。
❑ 教师数据实体:
包括教师号、密码、教师姓名、职称。
这些信息有管理员初始化好,如果有所改动都要由管理员维护。
除了以上三个系统用户实体外,学生课程及成绩管理系统还要对学生课程和班级进行管理,这就又需要如下的两个数据实体:
❑ 课程数据实体:
用于记录所有课程的基本信息,包括课程的课程号、课程名、学分、系别和预选修情况。
这些信息由学校的工作人员已管理员的身份登录后进行维护。
❑ 班级数据实体:
用于记录班级的基本信息,包括班级号、教师、课程、教室、和上课时间。
这些数据由管理员进行录入和维护(如果与学校排课系统等结合,数据就由那些系统来提供)。
以上的5个实体是基本的数据实体。
作为学生课程及成绩管理系统,还要记录学生选课和学分情况,因此又有如下的实体:
❑ 学生课程及成绩数据实体:
包括学生号、所上课班级、是否被老师接收和所给学分。
❑ 根据以上的分析,设定每一个数据实体都有一个ID作为它的惟一标识,那么这六个数据实体的关联关系如图13.28所示(其中管理员数据实体相对独立,这里没有列出关系图)。
图13.28 数据实体关系图
基于上面的设计,开始设计表,表与表之间相互关联,共同存储着系统所需要的数据。
在设计数据库表的过程中,一般要遵循几条原则:
❑ 数据库的一个表最好只存储一个实体或对象的相关信息,不同的实体最好存储在不同的数据表中,如果实体还可以再划分,实体的划分原则是,划分后得实体比当前系统要开发实体的复杂度小;
❑ 数据表的信息结构一定要合适,表的字段的数量一般不要过多;
❑ 扩充信息和动态变化的信息一定要分别放在不同的表里;
❑ 多对多的表关系尽量不出现。
设计数据库表及表间关系,通过下图13.29表示。
图13.29 数据库表关系图
13.5.2 创建数据库
首先要创建一个数据库,可以使用MySQL的辅助图形化界面工具SQLyog,这个工具的下载安装已经在前面章节介绍过了,如果读者还不熟悉MySQL或SQLyog这个工具,可以参考前面的相关章节。
使用SQLyog连接到MySQL,然后创建数据库STU,并为新建的数据库添加用户并设置权限(单击菜单【Tools】|【UserManager】|【Adduser】或直接按快捷键Ctrl+U)。
可以将对于这个新建数据库的所有权限全都赋给这个用户。
接下来要在这个数据库中创建数据表,由前面的分析得知这个系统中需要建立6张数据表,它们分别为
❑ 管理员表(admin):
用于存放管理员用户的数据记录。
❑ 学生信息表(student):
用于存放学生的基本信息。
❑ 教师信息表(teacher):
用于存放所有上课教师的基本信息。
❑ 课程信息表(course):
用于存放所有开课课程的数据记录基本信息。
❑ 班级信息表(classes):
用于存放所有与班级相关的信息。
❑ 学生课程及成绩表(enrol):
用于存放所有学生课程及成绩信息。
这6张数据表的字段说明如表13.1~表13.6所示。
表13.1 admin管理员表
序号
字段
含义
类型
1
Id
管理员编号
Int
2
Name
姓名
Varchar
3
Password
密码
Varchar
表13.2 student学生信息表
序号
字段
含义
类型
1
Id
学生编号
Varchar
2
Name
姓名
Varchar
3
Password
密码
Varchar
4
Jiguan
籍贯
Varchar
5
Department
所在系
Varchar
6
Sex
性别
Varchar
7
mark
学分
Int
8
tel
联系电话
Varchar
9
电子邮箱
Varchar
表13.2 classes班级信息表
序号
字段
含义
类型
1
id
班级编号
Varchar
2
tea_id
姓名
Varchar
3
cour_id
密码
Varchar
4
room_id
教室号
Varchar
5
cour_time
上课时间
Varchar
表13.3 course课程信息表
序号
字段
含义
类型
1
id
课程编号
Varchar
2
name
课程名
Varchar
3
mark
学分
Int
4
prepare
预选课程
Varchar
5
dep
所在系
Varchar
表13.4 teacher教师信息表
序号
字段
含义
类型
1
id
教师编号
Varchar
2
name
姓名
Varchar
3
title
职称
Varchar
4
pssword
密码
Varchar
表13.6 enrol学生课程及成绩信息表
序号
字段
含义
类型
1
stu_id
学生编号
Varchar
2
class_id
班级编号
Varchar
3
accept
是否被接收
Varchar
4
score
成绩
Varchar
13.5.3 创建表的脚本文件
根据数据库字段设计,编写的创建数据库表的SQL语句如下:
创建数据表admin的SQL语句:
CREATETABLE`admin`(
`id`int(16)NOTNULL,
`name`varchar(32)defaultNULL,
`password`varchar(32)defaultNULL,
PRIMARYKEY (`id`)
)
创建数据表student的SQL语句:
CREATETABLE`student`(
`id`varchar(32)NOTNULL,
`name`varchar(32)defaultNULL,
`password`varchar(32)defaultNULL,
`jiguan`varchar(32)defaultNULL,
`department`varchar(32)defaultNULL,
`sex`varchar(32)defaultNULL,
`mark`int(11)defaultNULL,
`tel`varchar(32)defaultNULL,
`phone`varchar(32)defaultNULL,
`email`varchar(32)defaultNULL,
PRIMARYKEY (`id`)
)
创建数据表teacher的SQL语句:
CREATETABLE`teacher`(
`id`varchar(32)NOTNULL,
`name`varchar(32)defaultNULL,
`password`varchar(32)defaultNULL,
`title`varchar(32)defaultNULL,
PRIMARYKEY (`id`)
)
创建数据表course的SQL语句:
CREATETABLE`course`(
`id`varchar(32)NOTNULL,
`name`varchar(32)defaultNULL,
`mark`int(11)defaultNULL,
`prepare`varchar(32)defaultNULL,
`dep`varchar(32)defaultNULL,
PRIMARYKEY (`id`)
)
创建数据表classes的SQL语句:
CREATETABLE`classes`(
`id`varchar(32)NOTNULL,
`tea_id`varchar(32)defaultNULL,
`cour_id`varchar(32)defaultNULL,
`room_id`varchar(32)defaultNULL,
`cour_time`varchar(32)defaultNULL,
PRIMARYKEY (`id`),
KEY`FK_Reference_4`(`tea_id`),
KEY`FK_classes`(`cour_id`),
CONSTRAINT`classes_ibfk_1`FOREIGNKEY(`cour_id`)REFERENCES`course`(`id`),
CONSTRAINT`FK_Reference_4`FOREIGNKEY(`tea_id`)REFERENCES`teacher`(`id`)
)
创建数据表enrol的SQL语句:
CREATETABLE`enrol`(
`class_id`varchar(32)defaultNULL,
`stu_id`varchar(32)defaultNULL,
`accept`varchar(32)defaultNULL,
`score`varchar(32)defaultNULL,
KEY`FK_enrol`(`class_id`),
KEY`FK_Reference_2`(`stu_id`),
CONSTRAINT`enrol_ibfk_1`FOREIGNKEY(`class_id`)REFERENCES`classes`(`id`),
CONSTRAINT`enrol_ibfk_2`FOREIGNKEY(`stu_id`)REFERENCES`student`(`id`)
)
为了方便后面的开发,在这里先象数据库中admin表里插入一条数据,SQL语句如下:
insertinto`stu`.`admin`(`id`,`name`,`password`)values('1','admin','admin')
13.5.4 目录和包结构
在进行程序设计和开发之前,要设计目录和包的结构。
良好的结构会使代码逻辑清楚且容易阅读。
一般一个设计良好的结构都有其共同的特点,就是逻辑清楚。
本系统的目录结构如图13.30所示。
图13.30 目录及包结构
在这个目录结构中,MyStuMan是项目的根目录也是项目的名称。
其下src目录用于存放原文件,所有的Java类都定义在这个文件夹下。
WebRoot目录是发布时网站的根目录,其下放置JSP页面,WEB-INF目录下存放系统的配置文件,如web.xml等。
这个目录结构是通用的目录结构,读者可以根据需要进行相应的修改。
13.5.5 定义HibernateUtil
本系统采用Struts+Hibernate技术进行开发,由Hibernate进行数据对象的操作,这里定义一个HibernateUtil类负责初始化Hibernate。
由它创建全局的SessionFactory实例,并且提供创建Session实例、关闭Session实例以及打开/关闭事务以及重新创建SessionFactory实例的实用方法。
而且所有方法均为静态方法。
HibernateUtil类是用2个ThreadLocal类型的属性以保持在一次请求过程中共享单一的Session和Trasaction实例,Session和Trasaction实例可以跨越多个一次请求的多个方法,这有助于实现集合属性的延迟加载等Hibernate特性。
HibernateUtil代码如下:
packagecom.stuman.dao.hibernate;
importorg.hibernate.HibernateException;
importorg.hibernate.Session;
importorg.hibernate.SessionFactory;
importorg.hibernate.Transaction;
importorg.hibernate.cfg.Configuration;
publicclassHibernateUtil{
privatestaticfinalSessionFactorysessionFactory;
static{
try{
//创建SessionFactory
sessionFactory=newConfiguration().configure()
.buildSessionFactory();
}catch(Throwableex){
ex.printStackTrace();
System.out.println("InitialSessionFactorycreationfailed.");
thrownewExceptionInInitializerError(ex);
}
}
publicstaticfinalThreadLocaltLocalsess=newThreadLocal();
publicstaticfinalThreadLocaltLocaltx=newThreadLocal();
//取得session
publicstaticSessioncurrentSession(){
Sessionsession=(Session)tLocalsess.get();
//打开一个新的session,如果当前的不可用.
try{
if(session==null||!
session.isOpen()){
session=openSession();
tLocalsess.set(session);
}
}catch(HibernateExceptione){
//抛出HibernateException异常
e.printStackTrace();
}
returnsession;
}
//关闭session
publicstaticvoidcloseSession(){
Sessionsession=(Session)tLocalsess.get();
tLocalsess.set(null);
try{
if(session!
=null&&session.isOpen()){
session.close();
}
}catch(HibernateExceptione){
//抛出InfrastructureException异常
}
}
//开始事务
publicstaticvoidbeginTransaction(){
//声明Transaction类型对象tx,并付初值
Transactiontx=(Transaction)tLocaltx.get();
try{
if(tx==null){
tx=currentSession().beginTransaction();
tLocaltx.set(tx);
}
}catch(HibernateExceptione){
//抛出InfrastructureException异常
}
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- jsp 作业 设计