数据库课程设计1215副本文档格式.docx
- 文档编号:21165883
- 上传时间:2023-01-28
- 格式:DOCX
- 页数:32
- 大小:378.19KB
数据库课程设计1215副本文档格式.docx
《数据库课程设计1215副本文档格式.docx》由会员分享,可在线阅读,更多相关《数据库课程设计1215副本文档格式.docx(32页珍藏版)》请在冰豆网上搜索。
数据库创建部分
一、创建数据库(SQLServer2008)
(1)图书管理数据库相关信息。
数据库名:
MBOOK
数据文件名:
日志文件名:
MBOOK_Log
图书管理系统的数据库为MBOOK,改数据库由读者(Treader)、图书(TBook)、借阅(TLend)、3个表构成,依托3个基本表创建视图、触发器、和存储过程。
创建数据库MBOOK的T-SQL语句如下。
CREATEDATABASEMBOOK
创建数据库MBOOK的界面如下图所示。
二、图书管理系统E-R图
三、图书管理系统基本表
(1)读者信息表
1、读者信息表结构
创建读者信息表,表名为“TReader”,表结构如下:
项目
字段名
类型与宽度
是否主键
是否允许空值
说明
借书证号
ReaderID
char(8)
√
×
姓名
Name
性别
Sex
bit
1:
男,0:
女
出生时间
Born
date
专业
Spec
char(12)
借书量
Num
Int
小于等于5,默认为0
照片
Photo
varbinary(MAX)
联系方式
Addr
xml
2、创建读者信息表
界面方式创建读者信息表。
界面如下:
3、读者信息表样本数据
(2)图书信息表
创建图书信息表,创建方式同上。
表名为“TBook”,表结构如下:
是否允许为空
IBSN
ISBN
出版物的代码
书名
BookName
char(40)
作译者
Author
char(16)
出版社
Publisher
char(30)
价格
Price
float
复本量
CNum
int
库存量
SNum
复本量=库存量+已经借阅的统计。
当借一本书时,book的库存量减1;
还一本书书事加1
内容提要
Summary
varchar(200)
封面照片
图书信息表样本数据:
(3)借阅表
1、借阅表结构
创建借阅表,创建方式同上。
表名为“TLend”,表结构如下所示:
图书ID
BookID
char(10)
char(18)
借书时间
LTime
datetime
2、借阅表样本数据
四、视图
创建“读者借阅图书”视图,名称为RBL。
通过“借书证号(ReaderID)”将读者表(TReader)和借阅表(TLend)联系起来,通过“ISBN”将借阅表(TLend)和图书信息表(TBook)联系起来,视图包含借书证号、图书ID、ISBN、书名、出版社、价格、借书时间等列。
(1)实现功能
把三个基本表联系起来,方便需要3个表关联的功能使用,如图所示:
五、存储过程
共有两个存储过程,分别为:
Book_Borrow、Book_Return
1、Book_Borrow
参数:
借书证号(in_ReaderID)、ISBN(in_ISBN)、图书ID(in_BookID)、执行信息(out_str)。
实现功能:
根据存储过程前三个参数,实现读者图书“借阅”。
第四个参数为输出参数,将存储过程的执行情况以字符串形式赋予此参数。
“借阅”存储过程代码:
USE[MBOOK]
GO
/******Object:
StoredProcedure[dbo].[Book_Borrow]******/
/******ScriptDate:
12/13/201116:
34:
06******/
SETANSI_NULLSON
SETQUOTED_IDENTIFIERON
CREATEPROCEDURE[dbo].[Book_Borrow]@in_ReaderIDchar(8),@in_ISBNchar(18),@in_BookIDchar(10),@out_strchar(30)OUTPUT
AS
BEGIN
IFNOTEXISTS(SELECT*FROMTReaderWHEREReaderID=@in_ReaderID)
BEGIN
SET@out_str='
该读者不存在'
RETURN0
END
IFNOTEXISTS(SELECT*FROMTBookWHEREISBN=@in_ISBN)
该图书不存在'
IF(SELECTNumFROMTReaderWHEREReaderID=@in_ReaderID)=5
读者借书量不能大于5'
IF(SELECTSNumFROMTBookWHEREISBN=@in_ISBN)=0
图书库存量为0'
IF@in_ISBNIN(SELECTISBNFROMTLendWHEREReaderID=@in_ReaderID)
读者已经借过该书'
IFEXISTS(SELECT*FROMTLendWHEREBookID=@in_BookID)
--SET@out_str='
该图书ID已存在'
set@out_str='
该图书已借出'
BEGINTRAN/*开始一个事务*/
INSERTINTOTLendVALUES(@in_BookID,@in_ReaderID,@in_ISBN,GETDATE())
IF@@ERROR>
0/*如果前面一条SQL语句出错则回滚事务并返回*/
ROLLBACKTRAN
执行过程中遇到错误'
UPDATETReaderSETNum=Num+1WHEREReaderID=@in_ReaderID
UPDATETBookSETSNum=SNum-1WHEREISBN=@in_ISBN
IF@@ERROR=0/*如果所有语句都不出错则结束事务并返回*/
COMMITTRAN
借书成功'
RETURN1
ELSE/*如果执行出错则回滚所有操作并返回*/
END
2、Book_Return
根据存储过程前三个参数,实现读者图书“还书”。
“还书”存储过程代码:
StoredProcedure[dbo].[Book_Return]******/
39:
08******/
CREATEPROCEDURE[dbo].[Book_Return]@in_ReaderIDchar(8),@in_ISBNchar(18),@in_BookIDchar(10),@out_strchar(30)OUTPUT
IFnotexists(SELECT*FROMTLendWHEREReaderID=@in_ReaderID)
该读者未借书'
该图书非馆内书籍'
END
deletefromTLendwhereBookID=@in_BookID
删除TLend表中的记录时出错了'
还书成功'
六、触发器
1、实现功能
当用户“还书”时,要删除借阅表(TLend)中的一条借书记录,读者信息表(TReader)中该读者的借书量减1;
图书信息表(TBook)中该图书记录的库存量加1.
2、实现方法
次功能可以通过创建借阅表(TLend)的DELETE触发器实现,触发器名称为:
TLend_delete。
创建触发器代码如下:
Trigger[dbo].[TLend_delete]******/
44:
51******/
CREATETRIGGER[dbo].[TLend_delete]ON[dbo].[TLend]
AFTERDELETE
AS
UPDATETReaderSETNum=Num-1WHEREReaderID=(SELECTReaderIDFROMdeleted)
UPDATETBookSETSNum=SNum+1WHEREISBN=(SELECTISBNFROMdeleted)
连接数据库部分
这一部分用到VisualStudio2008开发环境,利用C#语言构建图书管理系统窗口。
共有七个窗口,分别为:
主窗口、图书查询、借书、还书、读者管理、图书管理、关于。
下面分别介绍各个窗口实现的方法及关键代码。
一、主窗口
“主窗口”是所有子窗口的父窗体,因此主要功能是创建各个子窗体,下面是创建“读者管理”窗口的关键代码,其他窗口代码基本相似。
privatevoid读者管理ToolStripMenuItem_Click(objectsender,EventArgse)
{
Form1form1=newForm1();
form1.MdiParent=this;
form1.Show();
}
“主窗口”截图如下:
二、图书查询
查询图书信息。
可以按照四种方式查询,分别为ISBN、书名、作者、出版社。
点击不同按钮,实现不同的查询方式,并且支持模糊查询,在“图书信息”框中显示图书信息。
图书查询窗口如下所示:
实现代码如下(只贴出关键部分代码):
publicpartialclassForm4:
Form
{
stringstrcon="
DataSource=PENGHONGWEI\\SQL2008;
InitialCatalog=MBOOK;
IntegratedSecurity=True;
ConnectTimeout=10;
NetworkLibrary=dbnmpntw"
;
privatevoidForm4_Load(objectsender,EventArgse)
//TODO:
这行代码将数据加载到表“mBOOKDataSet3.TBook”中。
您可以根据需要移动或移除它。
this.tBookTableAdapter.Fill(this.mBOOKDataSet3.TBook);
}
privatevoidbutton1_Click(objectsender,EventArgse)
SqlConnectionconn=newSqlConnection(strcon);
stringsqlStrSelect="
select*fromTBook"
switch(tabControl1.SelectedIndex)
case0:
sqlStrSelect="
select[ISBN],[BookName],[Author],[Publisher],[Price],[CNum],[SNum]fromTBookwhere[ISBN]='
"
+textBox1.Text.Trim()+"
'
break;
case1:
select[ISBN],[BookName],[Author],[Publisher],[Price],[CNum],[SNum]fromTBookwhere[Author]like'
%"
+textBox2.Text.Trim()+"
%'
case2:
select[ISBN],[BookName],[Author],[Publisher],[Price],[CNum],[SNum]fromTBookwhere[BookName]like'
+textBox3.Text.Trim()+"
case3:
select[ISBN],[BookName],[Author],[Publisher],[Price],[CNum],[SNum]fromTBookwhere[Publisher]like'
+textBox4.Text.Trim()+"
try
SqlDataAdapteradapter=newSqlDataAdapter(sqlStrSelect,conn);
DataSetdstable=newDataSet();
adapter.Fill(dstable,"
testTable"
);
dataGridView1.DataSource=dstable.Tables["
];
dataGridView1.Show();
catch(Exceptionex)
MessageBox.Show(ex.Message);
finally
conn.Close();
三、借书
输入借书证号、ISBN以及要借的图书ID,点击“借书”按钮实现借书功能。
此窗体主要操作数据库的“RBL”视图和调用Book_Borrow存储过程。
点击“查询”按钮时,可以查询当前借书证号的借书记录。
“借书”按钮实现代码如下:
privatevoidbutton2_Click(objectsender,EventArgse)//借书
if(textBox1.Text.Trim()=="
||textBox2.Text.Trim()=="
||textBox3.Text.Trim()=="
)
MessageBox.Show("
借书证号,ISBN,图书ID输入完整!
return;
SqlCommandcmd=newSqlCommand("
Book_Borrow"
conn);
cmd.CommandType=CommandType.StoredProcedure;
SqlParameterinReaderID=newSqlParameter("
@in_ReaderID"
SqlDbType.Char,8);
inReaderID.Direction=ParameterDirection.Input;
inReaderID.Value=textBox1.Text.Trim();
cmd.Parameters.Add(inReaderID);
SqlParameterinISBN=newSqlParameter("
@in_ISBN"
SqlDbType.Char,18);
inISBN.Direction=ParameterDirection.Input;
inISBN.Value=textBox2.Text.Trim();
cmd.Parameters.Add(inISBN);
SqlParameterinBookID=newSqlParameter("
@in_BookID"
inBookID.Direction=ParameterDirection.Input;
inBookID.Value=textBox3.Text.Trim();
cmd.Parameters.Add(inBookID);
SqlParameteroutReturn=newSqlParameter("
@out_str"
SqlDbType.Char,30);
outReturn.Direction=ParameterDirection.Output;
cmd.Parameters.Add(outReturn);
onn.Open();
cmd.ExecuteNonQuery();
MessageBox.Show(outReturn.Value.ToString());
catch
借书出错!
button1_Click(null,null);
四、还书
与“借书”功能相反,窗口大体相似。
此窗体主要操作数据库的“RBL”视图和调用Book_Return存储过程并激发TLend_delete触发器。
点击“还书”按钮实现还书功能。
窗口如下:
“还书”按钮的单击事件关键代码如下:
privatevoidbutton2_Click(objectsender,EventArgse)//还书
Book_Return"
cmd.Para
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库课程设计1215 副本 数据库 课程设计 1215
![提示](https://static.bdocx.com/images/bang_tan.gif)