《数据库课程设计》 0图书管理信息系统文档格式.docx
- 文档编号:22356864
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:42
- 大小:722.63KB
《数据库课程设计》 0图书管理信息系统文档格式.docx
《《数据库课程设计》 0图书管理信息系统文档格式.docx》由会员分享,可在线阅读,更多相关《《数据库课程设计》 0图书管理信息系统文档格式.docx(42页珍藏版)》请在冰豆网上搜索。
4、系统设计
1、体系结构
要求使用多层(三层)C/S或B/S模式开发该系统。
简单的客户/服务器体系结构的数据库应用系统开发周期短,能够适应大部分中小型数据库应用系统的要求(当客户端数量少于50时),但是,随着数据库应用的日益发展、数据容量的不断增加、客户端数量的不断增多,这种体系结构显示出了诸多缺陷。
你知道有哪些缺陷吗?
所谓三层体系结构,是在客户端与数据库之间加入了一个“中间层”。
它是指逻辑上的三层结构,即使在一台机器上也可构成三层体系结构的应用系统。
三层分别为表示层、业务逻辑层和数据访问层。
表示层(USL):
为客户提供对应用程序的访问,以Windows应用程序或Web应用程序的形式提供实现的功能。
业务逻辑层(BLL):
实现应用程序的业务功能,以类库的形式为表示层提供服务。
数据访问层(DAL):
实现整个系统所有的数据库连接、数据存取操作,以组件类库的形式为业务逻辑层提供服务。
此外,实体类,简单地说是描述一个业务实体的类。
业务实体直观一点的理解就是整个应用系统业务所涉及的对象,从数据存储来讲,业务实体就是存储应用系统信息的数据表,将数据表中的每一个字段定义成属性,并将这些属性用一个类封装,这个类就称为实体类。
业务实体可以认为属于业务逻辑层,当然,可以将业务实体单独作为一层,称为业务实体层。
表示层、业务逻辑层、数据访问层都依赖于业务实体。
各层之间数据的传递主要是实体对象(业务信息封装在实体对象中)。
使用业务实体类有什么好处?
你知道吗?
2、功能框图
该系统主要由五大功能模块组成:
图书管理、读者管理、借阅管理、数据统计和系统管理。
各大功能模块又由一些子功能模块构成,其功能框图如下。
3、数据库结构
1.读者类别表(TB_ReaderType)
序号
字段名
数据类型
说明
1
rdType
SmallInt
读者类别【主键】
2
rdTypeName
Nvarchar(20)
读者类别名称【非空、唯一】
3
CanLendQty
Int
可借书数量
4
CanLendDay
可借书天数
5
CanContinueTimes
可续借的次数
6
PunishRate
Float
罚款率(分/天/本)
7
DateValid
证书有效时间(年数)
【非空,0表示永久有效】
分析提示:
读者类别可以是学生(专科生、本科生、研究生)、教师(助教、讲师、副教授、教授、后勤与行政人员)、其它社会人员,以及系统管理员、图书管理员、读者管理员、借还书管理员等。
2.读者信息表(TB_Reader)
rdID
读者序号【主键】
rdName
nvarchar(20)
读者姓名
rdPwd
nvarchar(20)
读者密码,初值为“123”
rdSex
Nchar
(1)
性别,-男/女
读者类别【外键TB_ReaderType.rdType,非空】
rdDept
单位代码/单位名称
rdPhone
nvarchar(25)
电话号码
8
rdEmail
电子邮件
9
rdDateReg
datetime
读者登记日期/办证日期
10
rdBorrowQty
已借书数量(缺省值0)
(1)可将系统管理员、图书管理员、办证管理员、借还书管理员等信息放入该表;
或者将管理员另外建表,与读者信息分开单独进行设计。
(2)读者调离或学生毕业时,会办理借书证的注销手续,注销前必须归还所有图书,建议增加一个“注销日期”字段,表明其已经失效。
(3)读者密码应考虑加密存储。
(4)单位可以采用名称,若采用代码则需另建一张表:
单位代码与名称对照表,这样按单位统计时数据将会很规范。
3.图书信息表(TB_Book)
bkID
图书序号或条码号【主键】
bkCode
Nvarchar(20)
图书编号(如:
TP316-21-123)
bkName
Nvarchar(50)
书名
bkAuthor
Nvarchar(30)
作者
bkPress
出版社
bkDatePress
出版日期
bkISBN
Nvarchar(15)
书号
bkCatalog
分类名
bkLanguage
语言,0-中文,1-英文,2-日文,3-俄文,
4-德文,5-法文
bkPages
页数
11
bkPrice
Money
价格
12
bkDateIn
DateTime
入馆日期
13
bkBrief
Text
内容简介
14
bkCover
image
图书封面照片
15
bkIsInLab
NChar
(1)或bit
是否在馆(借出)
(1)同一种书籍实际上可能购买多本,图书入库时对每本书进行编号(条码号),另外,图书编号(如:
TP316-21-123)是统计分析的重要依据,故实用软件会将该表拆分为3张表格:
图书分类表、图书书目信息表、馆藏图书表。
(2)因图书遗失或老旧,需要进行出库(或卖出、销毁)处理,故实用软件需要考虑图书的三种状态:
在馆、借出、出库。
4.借阅信息表(TB_Borrow)
BorrowID
Numeric(12,0)
借书顺序号【主键】
读者序号【外键TB_Reader.rdID】
图书序号【外键TB_Book.bkID】
ldContinueTimes
续借次数(第一次借时,记为1)
ldDateOut
借书日期
ldDateRetPlan
应还日期
ldDateRetAct
实际还书日期
ldOverDay
超期天数
ldOverMoney
超期金额
ldPunishMoney
罚款金额
lsHasReturn
Bit
是否已经还书,缺省为0-未还
OperatorLend
借书操作员
OperatorRet
还书操作员
借阅信息即用于图书的借还管理,同时又是统计分析的主要信息来源,故要求保持其历史信息。
设计时不能以(读者序号+图书序号)为关键字,否则读者不能第二次借阅同一本书了。
4、功能模块
1.图书管理
图书入库(添加图书信息):
图书管理员可以将新书添加到数据库中。
图书出库(注销图书信息):
图书删除。
图书信息查询:
所有用户可以按指定的组合条件查询图书,查询结果可以显示、预览、打印、导出到Excel文件。
对于图书管理员,可以删除图书和修改部分字段的内容。
2.读者管理
读者管理员可以添加读者类别和修改读者类别。
读者管理员可以添加读者信息,可以按指定的组合条件查询读者,查询结果可以显示、预览、打印和导出到Excel文件,还可以删除(注销)读者和修改部分字段的内容。
读者可以修改个人信息、密码和查阅个人的借阅信息。
3.借阅管理
读者管理员可以给读者借书、续借和还书。
还书时如果图书超期,提示超期的天数,并计算罚款,记录归还相关信息。
读者管理员还可按读者信息查询指定期间内的历史借阅信息和当前未还信息,按图书信息查询指定期间内的历史借阅信息和当前借阅读者信息。
查询结果可以显示、预览、打印和导出到Excel文件。
4.数据统计
图书管理员和读者管理员可以做如下统计:
按图书的个别属性进行分类统计(如:
图书编号前几位、出版社、出版年、入馆日期年、是否在馆等);
按借阅的个别属性进行分类统计(如:
读者类型、单位代码、借阅天数等)。
统计结果可以显示、预览、打印和导出到Excel文件。
5.系统管理
系统管理员可以浏览、添加、修改和删除用户信息。
5、界面设计和实现[含代码与实现界面]
1.登录窗口
所有用户只有正确登录后,方可进入该系统,登录窗口如下。
2.菜单设计
不同角色的用户登录后,有不同的菜单,每个菜单对应不同的功能。
3.查询图书信息
图书管理员、读者管理员和读者均可查询图书信息,如下图。
Ø
输入查询条件:
图书序号采用完全匹配;
图书编号采用左匹配;
图书名称、作者、出版社采用模糊匹配;
出版日期、入馆日期、库存数量支持区间条件。
4.添加图书信息
只有图书管理员可以添加图书信息,如下图。
输入或选择相关图书的信息。
起始序号是系统自动获得到的最后入馆图书的序号加1,然后根据图书本数,自动生成图书序号。
图书封面从扫描的文件得到,上传后存储到数据库相应记录中。
按下“添加”按钮,向“图书信息表”中添加1条记录,成功添加后,显示提示信息。
5、添加读者信息
只有读者管理员才可以添加读者信息,如下图。
6.借书、还书
读者管理员可以借书、还书,如下图。
输入读者编号后,系统自动显示读者姓名等信息;
输入图书序号或图书名称,系统自动显示图书信息。
按下“借书”按钮,向“借阅信息表”中添加1条记录(续借次数为0,计划还书日期为当前系统日期加上该读者可借书的最大天数,是否已经还书为0,借书操作员)。
六、系统实现
1.登入界面实现
namespaceBookManager
{
publicpartialclassFrmLogin:
Form
{
publicFrmLogin()
InitializeComponent();
}
intrdId;
privatevoidbtnLogin_Click_1(objectsender,EventArgse)
stringsqlCon=ConfigurationManager.ConnectionStrings["
sqlcon"
].ConnectionString;
SqlConnectionconn=newSqlConnection(sqlCon);
try
conn.Open();
stringstrcon="
SELECTTB_Reader.rdID,TB_Reader.rdPwd,TB_ReaderType.rdTypeNameFROMTB_ReaderINNERJOINTB_ReaderType"
+"
ONTB_Reader.rdType=TB_ReaderType.rdType"
whereTB_Reader.rdID='
"
+txtUserCode.Text.Trim()+"
'
;
SqlCommandcmd=newSqlCommand(strcon,conn);
SqlDataReaderreader=cmd.ExecuteReader();
if(reader.Read())
{
rdId=reader.GetInt32(0);
if(reader.GetString
(1)==txtUserPwd.Text)
if(reader.GetString
(2)=="
SysAdmin"
)
FrmSysAdminf1=newFrmSysAdmin();
f1.ID1=rdId;
f1.ShowDialog();
//this.Close();
elseif(reader.GetString
(2)=="
BookAdmin"
FrmBookAdminf2=newFrmBookAdmin();
f2.ID2=rdId;
f2.ShowDialog();
ReaderAdmin"
FrmReaderAdminf3=newFrmReaderAdmin();
f3.ID3=rdId;
f3.ShowDialog();
BorrowAdmin"
FrmBorrowAdminf4=newFrmBorrowAdmin();
f4.ID4=rdId;
f4.ShowDialog();
else
FrmStudentsf5=newFrmStudents();
f5.ID5=rdId;
f5.ShowDialog();
MessageBox.Show("
密ü
码?
错洙?
误ó
,?
请?
重?
新?
输?
入?
!
?
"
提?
示?
:
阰"
);
txtUserPwd.Text="
txtUserPwd.Focus();
用?
户§
名?
不?
存?
在ú
或ò
请?
txtUserCode.Text="
//txtUserPwd.Text="
txtUserCode.Focus();
catch(SystemExceptionex)
//连?
接ó
数簓据Y库a失骸?
败悒?
+ex.Message,"
MessageBoxButtons.OKCancel,MessageBoxIcon.Information);
finally
//如?
果?
处鋦于?
数簓据Y库a连?
状痢?
态?
if(conn.State==ConnectionState.Open)
//关?
闭?
SQL连?
conn.Close();
//释酣?
放?
所ù
占?
的?
资哩?
源′
conn.Dispose();
privatevoidBtnCancle_Click_1(objectsender,EventArgse)
this.Close();
}
2.查询图书
publicpartialclassFrmBookInfo:
publicintBookInfo;
publicintbkManage;
publicstringbkID;
publicFrmBookInfo()
privatevoidbtnQuery_Click(objectsender,EventArgse)
stringstr2="
SELECTbkIDAS条?
号?
bkCodeAS图?
书酣?
编括?
bkNameAS书酣?
bkAuthorAS作痢?
者?
bkPressAS出?
版?
社?
bkDatePressAS出?
日?
期ú
bkCatalogAS分?
类え?
"
bkLanguageAS语?
言?
bkIsInLabAS是?
否?
管ü
FROMTB_BookwherebkNamelike'
%"
+tbName.Text+"
%'
orbkAuthor='
+tbAuthor.Text+"
SqlDataAdapterda=newSqlDataAdapter(str2,conn);
DataSetds=newDataSet();
da.Fill(ds);
dataGridView1.DataSource=ds.Tables[0];
privatevoidtoolStripButton7_Click(objectsender,EventArgse)
privatevoidtsbtnBookDetail_Click(objectsender,EventArgse)
FrmBookDetailfrmdet=newFrmBookDetail();
frmdet.bkId=bkID;
frmdet.ShowDialog();
privatevoiddataGridView1_SelectionChanged(objectsender,EventArgse)
bkID=dataGridView1.CurrentCell.OwningRow.Cells[0].Value.ToString();
privatevoidFrmBookInfo_Load(objectsender,EventArgse)
if(bkManage==2)
toolStrip1.Visible=false;
label7.Visible=false;
label8.Visible=false;
tbAuthor.Visible=false;
tbName.Visible=false;
btnQuery.Visible=false;
this.Text="
图?
理え?
toolStrip2.Visible=false;
privatevoidtsbtnAdd_Click(objectsender,EventArgse)
FrmBookDetailfd=newFrmBookDetail();
fd.bkAdd=bkManage;
fd.ShowDialog();
privatevoidtsbtnScan_Click(objectsender,EventArgse)
strings="
bkDateInAS入?
库a日?
FROMTB_Book"
SqlDataAdapterda=newSqlDataAdapter(s,conn);
privatevoidtsbtnback1_Click(objectsender,EventArgse)
privatevoidtsbtnDelete_Click(objectsender,EventArgse)
FrmBookDeletefbdel=newFrmBookDelete();
fbdel.ShowDialog();
privatevoidbtnUpd
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库课程设计 数据库课程设计 0图书管理信息系统 数据库 课程设计 图书 管理信息系统