jsp作业设计Word下载.docx

上传人:b****7 文档编号:22164828 上传时间:2023-02-02 格式:DOCX 页数:20 大小:109.99KB
下载 相关 举报
jsp作业设计Word下载.docx_第1页
第1页 / 共20页
jsp作业设计Word下载.docx_第2页
第2页 / 共20页
jsp作业设计Word下载.docx_第3页
第3页 / 共20页
jsp作业设计Word下载.docx_第4页
第4页 / 共20页
jsp作业设计Word下载.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

jsp作业设计Word下载.docx

《jsp作业设计Word下载.docx》由会员分享,可在线阅读,更多相关《jsp作业设计Word下载.docx(20页珍藏版)》请在冰豆网上搜索。

jsp作业设计Word下载.docx

班级数据实体:

用于记录班级的基本信息,包括班级号、教师、课程、教室、和上课时间。

这些数据由管理员进行录入和维护(如果与学校排课系统等结合,数据就由那些系统来提供)。

以上的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

密码

表13.2 

student学生信息表

学生编号

4

Jiguan

籍贯

5

Department

所在系

6

Sex

性别

7

mark

学分

8

tel

联系电话

9

email

电子邮箱

classes班级信息表

id

班级编号

tea_id

cour_id

room_id

教室号

cour_time

上课时间

表13.3 

course课程信息表

课程编号

name

课程名

prepare

预选课程

dep

表13.4 

teacher教师信息表

教师编号

title

职称

pssword

表13.6 

enrol学生课程及成绩信息表

stu_id

class_id

accept

是否被接收

score

成绩

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, 

`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, 

创建数据表teacher的SQL语句:

CREATETABLE`teacher`( 

`title`varchar(32)defaultNULL, 

创建数据表course的SQL语句:

CREATETABLE`course`( 

`prepare`varchar(32)defaultNULL, 

`dep`varchar(32)defaultNULL, 

创建数据表classes的SQL语句:

CREATETABLE`classes`( 

`tea_id`varchar(32)defaultNULL, 

`cour_id`varchar(32)defaultNULL, 

`room_id`varchar(32)defaultNULL, 

`cour_time`varchar(32)defaultNULL, 

(`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'

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,如果当前的不可用.

if(session==null||!

session.isOpen()){

session=openSession();

tLocalsess.set(session);

}catch(HibernateExceptione){

//抛出HibernateException异常

e.printStackTrace();

returnsession;

//关闭session

publicstaticvoidcloseSession(){

tLocalsess.set(null);

if(session!

=null&

&

session.isOpen()){

session.close();

//抛出InfrastructureException异常

//开始事务

publicstaticvoidbeginTransaction(){

//声明Transaction类型对象tx,并付初值

Transactiontx=(Transaction)tLocaltx.get();

if(tx==null){

tx=currentSession().beginTransaction();

tLocaltx.set(tx);

//抛出InfrastructureException异常

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1