数据库课程设计文档.docx

上传人:b****8 文档编号:11437900 上传时间:2023-03-01 格式:DOCX 页数:45 大小:442.33KB
下载 相关 举报
数据库课程设计文档.docx_第1页
第1页 / 共45页
数据库课程设计文档.docx_第2页
第2页 / 共45页
数据库课程设计文档.docx_第3页
第3页 / 共45页
数据库课程设计文档.docx_第4页
第4页 / 共45页
数据库课程设计文档.docx_第5页
第5页 / 共45页
点击查看更多>>
下载资源
资源描述

数据库课程设计文档.docx

《数据库课程设计文档.docx》由会员分享,可在线阅读,更多相关《数据库课程设计文档.docx(45页珍藏版)》请在冰豆网上搜索。

数据库课程设计文档.docx

数据库课程设计文档

数据库系统原理课程设计报告

题目名称:

图书管理系统

班级:

计093-2

组长学号:

200925503201姓名:

李帅成绩:

组员学号:

200925503235姓名:

周福智成绩:

组员学号:

200925503249姓名:

陈春茹成绩:

2011年7月14日

第一章引言

本设计为一个基本的图书管理系统,系统对图书馆中常见的借书、还书、预定等活动以及相关的读者和管理员等基本信息进行管理。

整个系统从符合操作简便、界面友好、灵活、实用、安全的要求出发,完成借书、还书、预定管理的全过程,包括读者的增添、删除、修改和查询,新书入库、借出图书的录入、统计与查询,以及库存的统计等。

经过实际使用证明,本文所设计的图书管理系统可以满足图书馆读者、图书管理方面的需要。

通过对系统的初步调查,明确了系统开发的目标为:

按照管理信息系统的原理和方法,采用成熟、先进的信息技术和手段,支持图书馆读者、图书管理工作的全过程,加强图书管理活动中的各种信息资源的管理和应用,实现图书管理现代化,及时、准确地提供各种信息。

第二章系统分析

2.1现行系统的总目标

通过对图书馆工作流程的研究和详细地询问有关人员,对图书

馆的各个方面的工作流程有了具体的了解,经过和图书馆的相关人员

协商后,最终确定在图书管理系统中要具有以下几方面的内容:

主要实现的功能:

管理员:

1、读者类型的增加、查询、修改、删除

2、读者的注册、查询、修改、删除

3、图书类型的增加、查询、修改、删除

4、图书的入库、查询、修改、删除

5、图书预订记录的查看

6、图书的借阅和换回

、七廿

读者:

1、图书的查询、预订

2、读者密码的修改

3、预订记录的删除

第三章系统概要设计

3.1数据库设计

数据库设计是开发数据库及其应用系统的技术,也是信息系统开发和建设的重要组成部分。

具体的说,数据库设计是要在一个给定的应用环境中,通过合理的逻辑设计和有效的物理设计,构造较优的数据库模式,建立数据库及其应用系统,满足用户各种信息需求。

在系统的数据库设计中,首先对系统分析得到的数据字典中的数据存储进行分析,分析各数据存储之间的关系,然后得出系统的关系模式。

本系统用实体-联系图(简称E-R图)来描述系统的概念模型。

E-R图由实体、属性、联系三部分组成,其符号如图4.6所示:

实体属性联系

E-R图例

3.2实体描述本系统中所涉及的实体有6个,其结构如下:

管理员(管理员姓名、管理员密码、类型号)

读者(借书证号、姓名、性别、密码、单位、发证日期、所属类型)

图书(图书编号、类型号、图书名称、出版作者、剩余、单价、总量、进库日期、状态、备注)(状态有0、1两个值,0代表没有被预订,1代表被预订)

管理员类型(类型号、类型名称)

读者类型(类型号、类型名、借期、借阅册数)

图书类型(类型号、类型名)

五个关系:

借阅记录(编号、图书编号、借书证号、借阅日期、归还日期、借阅次数、状态)(状态有0、1、2三个值,0代表未还,1代表正常还回,2代表超期)

图书预定(编号、借书证号、图书编号、预订日期、状态)(状态有0、

1两个状态,0代表该预订的书没有被取走,1代表该预定的书已经被取走)

读者和读者类型(读者类型、读者类型类型名)管理员和管理员类型(管理员类型号、管理员类型类型号)图书和图书类型(图书类型名、图书类型类型名)

3.3联系描述

本系统中实体之间有5个联系,其关系如下:

(1)图书预订关系:

读者与图书之间的关系是1:

N,因为一个读者可以预订多本图书,一本图书只能被一个读者预订;

(2)图书借阅关系:

读者与图书的关系是1:

N,因为一个读者可以借阅多种图书,但一本图书只能被一个读者借阅;

(3)管理员与管理员类型:

关系是N:

1,因为一个管理员只能对应一个类型,一个类型可以对应多个管理员;

(4)读者与读者类型:

关系是N:

1,因为一个读者只能对应一个类型,一个类型可以对应多个读者;

(5)图书与图书类型:

关系是N:

1,因为一个图书只能对应一个类型,一个类型可以对应多个图书;

实体关系图

第四章系统详细设计

4.1数据库的逻辑设计

数据库的逻辑设计的任务就是把概念结构设计阶段的基本E-R

图转化为与选用具体机器上的DBMS产品所支持的数据模型相符合的逻辑结构,首先要实现的是E-R图关系模型的转化。

而为此要解决的问题是如何将实体和实体之间的联系转化为关系模式,如何确定

这些关系模式的属性和码。

对于实体,将每个实体转换为一个关系,实体的属性即为关系的属性,实体的码即为关系的码。

对于实体间的联系,可以分成三种情况:

1)若实体间的联系是1:

1,可以在两个实体转换成的两个关系中任意一个关系的属性中加入另一个关系的码。

2)若实体间的联系是1:

n,则在n端实体转换成的关系中加入1端实体转换成的关系码。

3)若实体间的联系是n:

m,则将联系转换为关系,关系的属性为诸个实体的码加上联系具有的属性,而关系的码则为诸实体的码的组合。

4.2数据库的实现

按照数据字典中的数据元素说明确定每个数据项的类型和长度,使每

个关系都对应一个数据库表:

1)读者表(reader)

主码

字段代码

字段名称

数据类型

长度

小数位数

可否为空

*

CerlD

借书证号

integer

Notnull

readername

姓名

Varchar

15

Notnull

sex

性别

Varchar

2

password

密码

Varchar

15

unit

单位

varchar

15

acctime

发证日期

datetime

readertype

所属类型

varchar

10

2)读者类型表(readertype)

主码

字段代码

字段名称

数据类型

长度

小数位数

可否为空

*

Typeid

类型号

varchar

Notnull

Typename

类型名

Varchar

10

Notnull

Datelimit

借期

integer

Notnull

borrowlimit

册数

integer

Notnull

3)管理员表(adminer)

主码

字段代码

字段名称

数据类型

长度

小数位数

可否为空

*

username

姓名

varchar

15

Notnull

password

密码

Varchar

25

Notnull

admintype

类型号

integer

4)管理员类型表(adminertype)

主码

字段代码

字段名称

数据类型

长度

小数位数

可否为空

*

Typeid

类型号

Integet

Notnull

Typename

类型名

Varchar

10

Notnull

5)图书表(book)

主码

字段代码

字段名称

数据类型

长度

小数位数

可否为空

*

Book_id

图书编号

Integer

Notnull

Type

图书类型

varchar

15

Bookname

图书名称

varchar

25

Notnull

Bookauthor

出版作者

varchar

15

Publisher

出版社

varchar

30

Price

单价

Integer

0

Sum

总量

Integer

2

have

剩余量

Integer

intime

r进库时间

Datetime

Flag

状态

Integer

Remarks

r备注

varchar

100

6)图书类型表(booktype)

主码

字段代码

字段名称

数据类型

长度

小数位数

可否为空

*

Typeid

类型号

Integet

Notnull

Typename

类型名

Varchar

15

Notnull

7)图书借阅表(borrowrecord)

主码

字段代码

字段名称

数据类型

长度

小数位数

可否为空

*

ID

编号

Integet

Notnull

BOOKID

图书号

Integet

Notnull

CERID

借书证号

Integet

Notnull

borrowTime

借阅时间

Integet

Notnull

returnTime

还书时间

datetime

Notnull

Sum

借阅次数

Integet

Flag

状态

Integet

8)图书借阅表(bookrecord)

主码

字段代码

字段名称

「数据类型1

长度

小数位数

可否为空

*

ID

编号

Integet

Notnull

BOOKID

图书号

Integet

Notnull

CERID

借书证号

Integet

Notnull

bookTime

预订时间

datetime

Notnull

Flag

状态

Integet

Notnull

 

4.3系统角色活动设计

管理员功能

 

4.4功能逻辑设计

 

 

读者/管理员注册

点击读削骨

.理処堆护+

7

W

 

读者/管理员信息修改

 

选崔个人

密码修改

新书入库

 

 

 

V

「,可;评;討卜]

J

图书查询

 

 

图书维护

 

V

点击ffi:

I(

借书

 

 

X

件询們阅记求

 

还书

4.5关于预订、借书、还书、删除预订记录的数据库操作说明

1、预订:

预订的前提条件是该书的剩余量为0,切该书没有被预订过(目前一本书只能被预订一次)。

否则点击预订,则会提示相应的信息。

预订时分别对数据库中的Book表和BookRecord表进行操作,在Book表中把Flag的值设为1,表示该书已经被预订了,同时在BookRecord表中插入一个相关的记录。

2、删除预订:

删除预订是预订的逆过程,首先删除BookRecord表中的相关的记录,然后把Book表中的相应的记录的Flag的值设置为0。

3、图书借阅:

图书借阅分别和3个表有关。

首先借阅之前要查询,这本书是不是被该读者预订过,若是,则把预定表中的Flag的值设置为1,

代表该预订的书已经被取走,再查看该书的剩余量是不是1,若是1

则提示此书已被预订,如果不是还得统计该读者现在借了多少书,书

的数量是不是等于他的类型规定的借阅册数,如果是,提示借阅册数

已满,如果不是,则在BorrowRecord表中插入一条记录,最后书的剩余量减1。

4、还书

还书时首先将现在的日期和BorrowRecord表中的换书日期做比较,如果现在的日期在表中的还书日期的后面,则说明这本书超期了,这时就把Flag设置为2,代表超期,如果没有超期,则设置为1,代表该书已经被换。

同时在Book表中的对应的记录的Have加1。

说明:

这四个操作都涉及到了多个表的操作,为了保证数据的一致性,均采用了事物,如果一系列操作中的一个不成功,那么就回滚。

 

(1)管理员模块:

 

读者模块:

4.6人机界面的设计

用户界面是指软件系统和用户交互的接口,良好的用户界面往往

可以提高用户使用系统的热情,并刺激他们的积极性。

461登录界面设计

为了保证系统的安全性,进入系统之前必须经过必要的安全性,简洁、清晰、友好是此设计的风格,如图所示:

用户登录界面

如果输入的用户名或者密码错误,就会弹出下面的窗口,见图所

示:

错误信息

如果输入的用户名或者密码正确,就会弹出下面的窗口,见图所

示:

提示信息

4・6・2系统基本信息界面设计

输入正确的用户名和密码后,即进入系统。

系统的基本操作界面

分读者和管理员:

1、读者相关界面

按书号查洵

ID;4用户宕;李帅

读者主界面

读者预订管理界面

 

按书号查找图书(按书名查找和它类似)

弟JWA火囘如匣5lffl呻耳•罔

图书模糊查询界面

读者我的信息界面

 

 

读者修改我的信息界面

 

 

2、管理员相关界面

管理员主界面

 

 

类型管理主界面

类型添加界面

 

类型查询界面

 

类型详细信息界面

类型修改界面

查看全部界面

预订管理界面

借阅管理界面

图书管理界面

图书类型管理界面

读者管理界面

余下没有列举的界面基本和类型管理的界面相同,这里就不

截图了

第五章小结(分个人)

5.1概述

图书管管理信息系统是一个典型的信息管理系统(MIS),其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。

对于前者要求建立起数据一致性和完善性强,数据安全性好的库,而对于后者则要求应用程序功能完善,易使用等特点,经过考虑,我使用JAVA开发,因为JAVA用起来比较方便,而且之前有过用JAVA连接数据库的经验。

5.2系统的功能

经过半个月左右的设计和开发,图书管理系统基本实现了之前确定的功能,

基本满足对图书的管理

5.3系统的特点

本系统的每一个管理子系统均做到内容详备合理、界面安排真观、查询检索功能强大。

采用数据累计保存,满足用户对历史资料的查询等优点。

系统登录,需要使用者键入用户名和口令,以防止XX的用户查询修改数据。

5.4系统开发的体会

李帅200925503201:

经过6天的努力,终于把数据库课程设计做完了。

终于可以送一口气了,尽管结果还是未知,但是过程比结果重要,通过课程设计,不仅使自己更加熟悉了课堂上学到的东西,而且还学到了很多课堂上没有学到的东

西。

在开始写代码之前,就想要往程序里面加触发器、加事物,但是自己对触发器一窍不通,对事物也是一知半解。

为了加上触发器,去网上参考了很多例子,逐渐了解了触发器的一些写法,最终写出了一个insert触发器和一个delete触发器。

事物对于这次课程设计很重要,因为在预订、删除预订、借书、还书四个过程中都涉及了多个表的操作,为了保证数据的一致性,就必须用到事物。

最后通过一个java的视频,学会了使用事物。

并且实现了预订、删除预订、借书、还书的4个事物,同时也更加熟悉了数据库的基本操作语言。

代码的编写参照了尚学堂网上商城的代码编写的方式,采取了面向对象的策

略,把各种需要用的功能都封装成了不同的方法,而且分成了后台和前台两个部

分,两个全部编写完成后进再进行集成测试。

通过接近1万行代码的编写,使自己更加深刻的理解了参考代码中分层封装的思想,使自己编写代码的水平有了些

还有一个就是团队的合作。

这次课程设计的数据库是大家共同讨论确定的,功能也是共同讨论确定的,所有功能都确定后大家进行了分工,周福智做管理员和管理员类型的部分,包括后台和前台,陈春茹做读者和读者类型的部分,包括前台和后台,我则做图书、图书类型、预订和借阅的部分,也是前台和后台。

因代码的编写同意要求是参照晚上商城的项目的编写风格,这个对我来说不太难,因为之前的软件工程的课程设计就是参照那个写的,思想上已经很容易接受了。

但是对其余两个人来说那种思想还是很难接受的。

但是最终他们都把代码写了出来,按着参考代码的风格,并且代码质量非常高,他们肯定付出了很多的努力。

而且当我纠结图书预订、借阅、还书的限制条件时,其他人总是能展开头脑风暴式的讨论,把自己能想到的全部说出来,最终我们确定了每个活动对应的逻辑,并用代码实现了,这些都让我非常感动,这就是合作的力量,这就是团队的力量。

通过课程设计,让我深深地明白了一个道理,世上无难事只怕有心人,遇到困难,只要肯干,就一定能把苦难解决。

周福智200925503235由于本系统开发时间的仓促和本人对开发工具的认识水平有限,在没有真正理解需求之前就匆忙开始制定开发计划,设计数据库表

的的结构并进行一些表单窗口的设计,造成了程序和文档有差错和出入。

在修改并完善E-R图后,再重新进行数据库表的结构和表单、菜单、报表的设计修改,

造成了时间的浪费,反而得不偿失。

而且图书预订一种书只能一个人预订,不能实现多人预订同一种书。

同时在还书等需要查询的界面,没有对查询结果为空时的提示。

还有就是界面没有经过美化,很不人性化,在做触发器的时候,刚开始想的很简单,就是一个简单的逻辑集合,整体完成受局部条件的约束,局部条件要是完成不了,那么触发器里面的所有语句全部不执行,同时在考虑触发器里面执行语句的时候,发现一个系统的好坏在于它的细节体现的方面,比如:

再删除

一本图书的信息的时候必须先删除这本书的借阅信息,预订信息,借阅记录,然

后才能删除概述的全部信息,同时发现,如果要删除一个读者的信息,执行过程要比删除一本书得信息要复杂的多,首先得先改变自己现预订书的状态(恢复没有预定的状态),触发器里面的事物就会再多一点,还有就是敲代码的时候得细心,代码的拼写错误很容易发生,但是改掉这个错误就是非常纠结,真的非常纠结,但是还是在同学的帮助下改了出来。

同时觉得团队合作对小组的效率的影响是非常关键的,甚至起着决定性的作

用,看到好多同学小组内的纷争多起,觉得应该首先处理好小组关系,然后再确定分工,毕竟小组内每个同学都有自己的长处,这个会跟快跟好的处理所遇到的实际的问题,遇到一些需要建议和见解的问题小组内部的商议非常重要,关键时

刻的一点小小的建议可能会改变真个软件体系的设计方案,因为软件的好坏总是

从细节方面体现出来的。

最后通过数据库课程设计的过程中发现我们所掌握的知识是那么的贫乏,以至于再设计的时候要考虑到在代码执行过程中是否能具体的实现,还有在体系结构和框架设计的时候的考虑方面的欠缺,觉得应该多一些练习才是,我觉得最重要的是细节,不管哪个方面,细节是造就完美的重要因素。

陈春茹200925503249在这次课程设计中,经过讨论了整个系统要实现的内容,抽象好数据库后,经过分工,我主要抽象了两个表,有读者,读者类型。

写了相关的接口,并且实现,及方法的封装。

然后,又写了相关的界面,并且实现了界面的增删改查的功能。

在此次管理信息系统的开发的过程中,遇到了很多问题。

比如,最初抽象数据库确定好实体后,对实体的属性确定时,按照自己的想象对属性的数据类型进行了确定,但是在后来实现时,数据库连接后,没办法实现数据的操作,最后牵一发而动全身,改了很多东西,在这个过程中,浪费了很多的时间,也明白了在真正动手做之前,应该对系统分析透彻,思考严谨,尽量减少不必要的错误。

在后来的界面的设计中,对按钮的事件监听,对事件的处理不是很完整,最后在同学的帮助下,终于找到了遗漏点,也逐渐明白了团队的协作的重要性。

通过这次的课程设计,对这两年的学习进行了全面的回顾与总结。

发现自己真正掌握的知识很有限,需要学的东西太多太多,在以后的学习中,我们眼界不至于只局限于一个特定的框架体。

对数据库的认识也有了一定的改变,有了一定的认识。

5.5致谢

在本次毕业设计中,指导老师无论在理论上还是在实践中,都给予我很大的

帮助,为我们提供了许多不可多得的珍贵意见,还有同学帮我解决了很多的问题,指出了设计的不足,并且提出了很多很可行的建议。

为此,我由衷的对老师的悉心指导和同学的帮助表示深深的感谢!

附录:

1、图书预订、删除预订、借书、还书代码

packagenmg」s.util;

importjava.sql.Connection;

importjava.sql.SQLException;

importjava.sql.Statement;

importjava.sql.Timestamp;

importjava.util.Date;

importjava.util.Iterator;

importjava.util.List;

importjavax.swing.JOptionPane;

importnmg.ls.book.Book;

importnmg.ls.book.BookMgr;

importnmg.ls.bookrecord.BookRecord;

importnmg.ls.bookrecord.BookRecordMgr;

importnmg.ls.borrow.Borrow;

importnmg.ls.borrow.BorrowMgr;

importnmg.ls.db.DB;

importccr.reader.Reader;

importccr.readertype.ReaderType;

importccr.readertype.ReaderTypeMgr;

publicclassUtilSQLServerDAOimplementsUtilDAO{

@Override

publicvoidyvDingBook(Readerreader,Bookbook){//TODOAuto-generatedmethodstubBookMgrbookMgr=newBookMgr();

BooktempBook=newBook();

BookRecordMgrbookRecordMgr=newBookRecordMgr();

Listbook_List=null;

BorrowMgrborrowMgr=newBorrowMgr();

Connectionconn=null;

Statementstmt=null;

book_List=bookMgr.selectBylD(book.getBook_id());

lteratori=book_List.iterator();while(i.hasNext()){

tempBook=(Book)i.next();

}if(book.getHave()>0){

JOptionPane.showMessageDialog(null,"此书有剩余,您可以直接借取!

”);

}elseif(bookRec

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

当前位置:首页 > 初中教育 > 语文

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

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