数据库原理及应用课设报告.docx

上传人:b****3 文档编号:27066787 上传时间:2023-06-26 格式:DOCX 页数:23 大小:1.52MB
下载 相关 举报
数据库原理及应用课设报告.docx_第1页
第1页 / 共23页
数据库原理及应用课设报告.docx_第2页
第2页 / 共23页
数据库原理及应用课设报告.docx_第3页
第3页 / 共23页
数据库原理及应用课设报告.docx_第4页
第4页 / 共23页
数据库原理及应用课设报告.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

数据库原理及应用课设报告.docx

《数据库原理及应用课设报告.docx》由会员分享,可在线阅读,更多相关《数据库原理及应用课设报告.docx(23页珍藏版)》请在冰豆网上搜索。

数据库原理及应用课设报告.docx

数据库原理及应用课设报告

数据库课程设计报告

 

系(院):

计算机科学学院

专业班级:

软工*****

姓名:

****

学号:

20******

指导教师:

*****

设计时间:

2015.12.*********

设计地点:

4教机房

 

一、课程设计目的

通过对图书管理系统的系统分析、系统设计、编码和调试等工作的实践,熟悉管理信息系统的开发过程、设计方法及相关编程技术,熟练掌握数据库设计的基本理论及方法。

 

二、设计任务及要求

要求完成一个具有一定实用价值的图书管理系统,主要任务包括:

①在MicrosoftSQLServer2000/2005/2008环境下建立图书管理系统所使用的数据库,利用企业管理器或查询分析器建立各种数据库对象,包括:

数据表、视图、约束、存储过程和触发器等;

②掌握ADO.NET编程技术,对MSSQLServer数据库进行连接和操纵;

③掌握使用C#语言开发一个数据库应用系统的基本方法和步骤,熟悉一些基础功能的实现方法,如:

数据维护(插删改等操作),数据查询、浏览和Excel导出,统计与报表,用户登录和权限管理等。

④了解C/S或B/S应用程序的多层体系结构及三层架构方案设计思想,了解迭代式开发,熟悉面向对象设计方法及其分析与设计过程,了解UML文档及其开发过程中的作用。

指导书说明:

(1)开发环境与目标:

微软C#、SQLServer,基于C/S结构的Windows应用程序。

(2)仅给出了部分功能的设计与实现,以说明面向对象分析与设计的一般方法以及关键编程技术,其它功能部分需要自己完成。

(3)为减少篇幅和降低阅读门槛,没有追求使用标准的UML设计文档和术语。

三、需求分析

1.开发背景

当今时代是飞速发展的信息时代。

在各行各业中离不开信息处理,这正是计算机被广泛应用于信息管理系统的环境。

计算机的最大好处在于利用它能够进行信息管理。

使用计算机进行信息控制,不仅提高了工作效率,而且大大的提高了其安全性。

尤其对于复杂的信息管理,计算机能够充分发挥它的优越性。

计算机进行信息管理与信息管理系统的开发密切相关,系统的开发是系统管理的前提。

2.系统准备

操作系统:

Windowsxp/7/8

数据库系统:

SQLServer2005/2008/2012

客户端开发工具:

EclipseKEPLER

知识准备

熟悉SQLServer2005/2008/2012的使用;

熟悉Java语言及其数据库编程技术。

了解:

迭代式开发过程、UML设计文档、设计模式;以及图书馆相关业务知识。

3.迭代式开发

迭代式开发(统一过程UP)系统开发被组织成一系列固定的短期(一段为2-6周)小项目,称为迭代;每次迭代都产生可执行的系统。

每次迭代都包括计划、需求、分析、设计、编码、测试等过程以及文档编写工作;第一次迭代考虑系统的核心功能,随后的迭代逐步扩展系统功能;每次迭代的成果(含需求、分析、设计、代码和文档等)均为下一次迭代的工作基础,直至满足最终需求。

这种开发过程是基于面向对象方法的。

4.系统分析

系统边界与约定

(1)系统限定在实体书库的借阅和管理等业务范围;

(2)不考虑图书馆的电子书库、订购、情报、人事管理等业务;

(3)不考虑图书馆的跨区分布情况,如长江大学图书馆包括多个校区图书馆;

(4)不考虑图书的通借通还,如长江大学读者可在湖北省高校任何一家图书馆借还图书;

(5)不考虑珍藏图书的借阅业务;

(6)暂不考虑与校园一卡通系统的外部接口。

一卡通系统为外部系统(外部参与者),卡内记录有身份及相关信息,该系统负责身份验证工作。

(7)期刊库和论文库的借阅和管理等业务可作为二期项目目标,视本系统使用情况而定。

需求概要

(1)图书管理系统的基本功能需求包括:

读者管理、图书管理、借阅管理、用户登录与用户管理等;其它功能需求包括:

读者查询与预约借书*、统计与报表*、数据备份*、书架

管理*、期刊管理*、期刊借阅*、论文管理*、论文借阅*等。

(*表示留待以后的迭代周期完成,下同)

(2)相关领域概念:

借书证(读者)、图书、借还书记录。

(3)系统外部参与者:

读者、借书证管理员、图书管理员、借阅管理员、系统管理员。

将图书馆工作人员划分为借书证管理、图书管理、借阅管理等三类人员;系统管理员负责数据库和软件系统管理,包括各类管理员用户的创建和授权、数据库备份等工作

5.功能概述

图书管理系统的一般用户具有以下功能:

(1)登录验证

(2)个人借阅信息查询

图书管理系统的管理员具有以下功能:

(1)登录验证

(2)图书管理:

删除,修改,查询,添加图书信息

(3)读者管理:

删除,修改,查询,添加读者信息

(4)读者类型管理:

删除,修改,查询,添加读者的读者类型

(5)浏览学生的借阅图书的情况

6.领域模型

领域概念小结

读者=读者号(借书证号)、姓名、性别、所在单位、电话、邮箱地址、办证日期、照片、借书证状态、已借书数量、密码、管理角色。

(借书证状态:

有效、挂失、注销)

读者类别=读者类别号、读者类别名称、可借书数量、可借书天数、可续借次数,罚款率,证件有效期。

图书=书号、书名、作者、出版社、出版日期、ISBN、分类号、语言、页数、单价、内容简介、图书封面、图书状态。

(图书状态包括:

在馆、借出、遗失、销毁、卖出)

借阅信息=借书顺序号、读者号、书号、借书操作员、借书日期、应还日期、续借次数、

还书操作员、还书日期,超期天数、应罚款金额、实际罚款金额。

领域模型

图1图书管理系统概念模型(V1)

重要提示:

在领域模型建立后、以及数据库设计完成后,均应检查所有的用例文档(检查重点:

事件流、前置条件和后置条件),检查两者的一致性,发现缺漏点及矛盾之处,并进行修正。

四、总体设计

4.1数据库设计与实现

1.操作表(tb_operator)

序号

字段名

数据类型

说明

1

id

int

id(主键)

2

name

varchar(12)

姓名

3

sex

varchar

(2)

性别

4

age

int

年龄

4

identityCard

varchar(30)

身份证号

5

workdate

datetime

工作时间

6

tel

varchar(25)

电话

7

admin

bit

管理员权限

8

password

varchar(10)

密码

2.读者信息表(tb_reader)

序号

字段名

数据类型

说明

1

name

varchar(10)

读者姓名

2

sex

varchar

(2)

性别,男/女

3

age

int

年龄

4

identityCard

varchar(30)

身份证

5

date

datetime

日期

6

maxNum

int

最大借书量

7

tel

varchar(50)

电话

8

keepMoney

money

押金

9

zj

int

证件类型

10

zy

Int

11

ISBN

varchar(13)

国际书号

12

bztime

datetime

办证日期

3.图书信息表(tb_bookInfo)

序号

字段名

数据类型

说明

1

ISBN

Varchar(13)

国际标准书号号【标识列,主键】

2

typeId

Int

Id

3

bookName

varchar(40)

书名

4

writer

varchar(21)

作者

5

translator

varchar(30)

翻译者

6

publisher

varchar(50)

出版社

7

date

smalldatetime

出版日期

8

Price

money

价格

4.借阅信息表(tb_borrow)

序号

字段名

数据类型

说明

1

id

int

id【主键】

2

bookISBN

varchar(13)

国际书号

3

operatorId

int

操作者编号

4

readerISBN

varchar(13)

读者编号

5

isback

int

是否归还

6

borrowDate

DateTime

借书日期

7

backDate

DateTime

还书日期

5.订书表(tb_order)

序号

字段名

数据类型

说明

1

ISBN

Varchar

国际书号【主键】

2

date

datetime

日期

3

number

int

数量

4

operater

Varchar(6)

操作员

5

checkAndAceept

int

是否接收

6

zk

float

5.库存表(tb_stockpile)

序号

字段名

数据类型

说明

1

ISBN

varchar(13)

国际书号【主键】

2

Amount

int

数量

4.2三层架构简介

采用三层体系结构,即表示层、业务逻辑层和数据访问层,如图1所示,图中箭头表示调用和依赖关系。

图2三层架构示意图

表示层(USL):

也称UI,提供交互式界面,形式:

JFrame或HTMLWeb界面。

业务逻辑层(BLL):

实现业务功能,为表示层提供服务,形式:

类库。

数据访问层(DAL):

实现数据访问功能(如数据库、文件等数据的读取、保存和更新),为业务逻辑层提供服务,形式:

类。

com.yan.dal.DAO类提供了对SQLServer数据库的一般访问方法。

实体类(model):

描述一个业务实体的类,也即应用系统所涉及的业务对象。

对数据库来讲,每个数据表对应于一个实体类,数据表的每个字段对应于类的一个属性。

表示层、业务逻辑层、数据访问层都依赖于业务实体。

各层之间数据的传递主要是实体对象,业务信息封装在实体对象中。

 

4.3搭建三层架构解决方案

在Eclipse中创建新的Java项目,命名为LibraryMIS,包括4个包:

com.yan.gui(Java窗口应用程序)、com.yan.dal(数据访问层),com.yan.model(实体类集合)、com.yan.bll(业务功能集合)。

4.4类总体设计(迭代1)

实体类、数据访问层类、业务逻辑层类、表示层窗口类的初步设计,实体类、数据访问层、业务逻辑层的类设计

其中,实体类、数据访问和业务逻辑模块分别设置了一个抽象类(业务逻辑层为通用类),供模块中其他类继承和扩展。

这有利于统一方法接口,便于不同层次之间的调用。

4.5Model层实体类设计

在com.yan.model包中添加4个实体类:

reader、operater、bookInfo、order、borrow、stockpile,分别对应4个数据库表。

实体类的属性与数据库表结构保持一致(名称、类型);实体类应尽量简单,除了实体对象的复制与比较等方法外,不宜添加过多方法。

例reader类

在com.yan.model包中添加新Java类reader.java。

添加Java类文件reader.java

表字段映射为实体类属性的基本方法如下:

privateStringName;

publicStringgetName(){

returnName;

}

publicvoidsetName(StringName){

this.Name=Name;

}

4.6BLL层类设计

BLL层类的成员函数设计,可在实现用例的过程中去发现和完成,用例实现主要包括UI层窗口类、BLL层类、DAL层类等方法的设计与实现。

4.7部分重要代码

五、详细设计与实现

5.1部分代码实现

 

1.连接数据库

protectedstaticStringdbClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver";

protectedstaticStringdbUrl="jdbc:

sqlserver:

//localhost:

1433;"

+"DatabaseName=Library;SelectMethod=Cursor";

protectedstaticStringdbUser="sa";

protectedstaticStringdbPwd="9109005439enter";

protectedstaticStringsecond=null;

privatestaticConnectionconn=null;

privateDao(){

try{

if(conn==null){

Class.forName(dbClassName).newInstance();

conn=DriverManager.getConnection(dbUrl,dbUser,dbPwd);

}

else

return;

}catch(Exceptionee){

ee.printStackTrace();

}

}

 

2.对数据库的操作

示例:

publicstaticOperatercheck(Stringname,Stringpassword){

inti=0;

Operateroperater=newOperater();

Stringsql="select*fromtb_operatorwherename='"+name

+"'andpassword='"+password+"'andadmin=1";

ResultSetrs=Dao.executeQuery(sql);

try{

while(rs.next()){

Stringnames=rs.getString

(1);

operater.setId(rs.getString("id"));

operater.setName(rs.getString("name"));

operater.setGrade(rs.getString("admin"));

operater.setPassword(rs.getString("password"));

if(names!

=null){

i=1;

}

}

}catch(Exceptione){

e.printStackTrace();

}

Dao.close();

returnoperater;

}

 

3.model层

示例:

bookInfo.java

packagecom.yan.model;

importjava.sql.Date;

publicclassBookInfo{

privateStringISBN;

privateStringtypeid;

privateStringwriter;

privateStringtranslator;

privateStringpublisher;

privateDatedate;

privateDoubleprice;

privateStringbookname;

publicStringgetBookname(){

returnbookname;

}

publicvoidsetBookname(Stringbookname){

this.bookname=bookname;

}

publicDategetDate(){

returndate;

}

publicvoidsetDate(Datedate){

this.date=date;

}

publicStringgetISBN(){

returnISBN;

}

publicvoidsetISBN(Stringisbn){

ISBN=isbn;

}

publicDoublegetPrice(){

returnprice;

}

publicvoidsetPrice(Doubleprice){

this.price=price;

}

publicStringgetPublisher(){

returnpublisher;

}

publicvoidsetPublisher(Stringpublisher){

this.publisher=publisher;

}

publicStringgetTranslator(){

returntranslator;

}

publicvoidsetTranslator(Stringtranslator){

this.translator=translator;

}

publicStringgetTypeid(){

returntypeid;

}

publicvoidsetTypeid(Stringtypeid){

this.typeid=typeid;

}

publicStringgetWriter(){

returnwriter;

}

publicvoidsetWriter(Stringwriter){

this.writer=writer;

}

}

4.bll层

示例1:

主界面Library.java

packagecom.yan.bll;

importjava.awt.BorderLayout;

importjava.awt.Dimension;

//importjava.awt.Dialog.ModalExclusionType;

importjava.awt.event.ComponentAdapter;

importjava.awt.event.ComponentEvent;

import.URL;

importjavax.swing.ImageIcon;

importjavax.swing.JButton;

importjavax.swing.JDesktopPane;

importjavax.swing.JFrame;

importjavax.swing.JInternalFrame;

importjavax.swing.JLabel;

importjavax.swing.JMenu;

importjavax.swing.JMenuBar;

importjavax.swing.JToolBar;

importjavax.swing.UIManager;

importjavax.swing.WindowConstants;

importjavax.swing.border.BevelBorder;

importcom.yan.gui.BookLoginIFrame;

importjava.awt.Font;

/**

*主窗体

*

*/

publicclassLibraryextendsJFrame{

privatestaticfinalJDesktopPaneDESKTOP_PANE=newJDesktopPane();

publicstaticvoidmain(String[]args){

try{

UIManager.setLookAndFeel(UIManager

.getSystemLookAndFeelClassName());

newBookLoginIFrame();//登录窗口

}catch(Exceptionex){

ex.printStackTrace();

}

}

publicstaticvoidaddIFame(JInternalFrameiframe){//添加子窗体的方法

DESKTOP_PANE.add(iframe);

}

publicLibrary(){

super();

setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

//setModalExclusionType(ModalExclusionType.APPLICATION_EXCLUDE);

setLocationByPlatform(true);

setSize(800,600);

setTitle("图书馆管理系统");

JMenuBarmenuBar=createMenu();//调用创建菜单栏的方法

setJMenuBar(menuBar);

finalJLabellabel=newJLabel();

label.setBounds(0,0,0,0);

label.setIcon(null);//窗体背景

DESKTOP_PANE.addComponentListener(newComponentAdapter(){

publicvoidcomponentResized(finalComponentEvente){

Dimensionsize=e.getComponent().getSize();

label.setSize(e.getComponent().getSize());

label.setText("

+size.height+"src='"

+this.getClass().getResource("/backImg.jpg")

+"'>");

}

});

DESKTOP_PANE.add(label,newInteger(Integer.MIN_VALUE));

getContentPane().add(DESKTOP_PANE);

}

/**

*创建工具栏

*

*@returnJToolBar

*/

privateJMenuBarcreateMenu(){//创建菜单栏的方法

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

当前位置:首页 > 党团工作 > 党团建设

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

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