信息系统分析与设计课程设计 图书管理系统.docx
《信息系统分析与设计课程设计 图书管理系统.docx》由会员分享,可在线阅读,更多相关《信息系统分析与设计课程设计 图书管理系统.docx(40页珍藏版)》请在冰豆网上搜索。
信息系统分析与设计课程设计图书管理系统
河南理工大学
计算机科学与技术学院
课程设计报告
2010—2011学年第二学期
课程名称信息系统分析与设计
设计题目图书借阅管理系统
学生姓名孟凡伟
学号310809030117
专业班级信管08-01
指导教师吴岩
2011年07月01日
1前言……………………………………………………………………
2系统分析……………………………………………………………
3系统设计……………………………………………………………
3.1概念结构设计………………………………………………
3.2逻辑结构设计…………………………………………………
4系统实现…………………………………………………………
5总结………………………………………………………………
6参考文献……………………………………………………………
图书借阅管理系统
1前言
随着图书馆和书店的图书的数量逐渐增加,图书的品种也越来越多,并且书籍的借出、归还日益频繁,需要处理大量的数据,假如使用计算机进行图书的购入、借出和归还以及读者、图书的管理和查询进行管理,就可以大大提高工作效率。
所以图书管理系统的开发显得尤为重要。
我就做了图书借阅管理系统这一项目。
关键词:
图书管理、用例图、交互图、需求分析。
2系统分析
图书管理系统在我们实际生活中,特别是大学生的生活中有非常实用的价值它的实用性主要表现在以下几个方面:
(1)可以加强对读者借阅情况的控制,防止信息遗漏。
(2)可以提高对数据处理的及时性和准确性。
(3)使得在图书信息管理上更科学,便于查阅。
(4)大大降低了管理的成本。
本图书管理系统的主要功能有:
系统管理、信息管理、日常操作和信息查询四大主要模块。
系统管理包括:
系统登录、修改密码、关于界面。
信息管理包括:
图书信息管理和读者信息管理。
日常操作包括:
图书借阅操作和图书归还操作。
信息查询包括:
图书资料查询和读者资料查询。
图1-1图书借阅管理系统用例图
登录系统用例的描述:
简短描述
登录系统用例使管理者与借阅者可以进入系统。
逐步描述
1.管理者与借阅者分别输入自己的用户名与密码。
2.当用户名与密码符合时,进入系统。
查询用例的描述:
简短描述
查询用例使管理者与借阅者可以查询相关信息。
逐步描述
1.管理者与借阅者进入系统。
2.管理者与借阅者登陆查询界面。
3.管理者可以查询图书借出量和图书剩余量。
4.借阅者查询自己已借书数量,归还日期,已借书的剩余天数,可以借的书的名称,还可以查询自己的学籍信息。
借书用例的描述:
简短描述
借书用例使借阅者可以借阅书籍。
逐步描述
1.借阅者把要借的书籍展示给管理者。
2.管理者进入借书界面。
3.管理者扫描图书上的条形码,与此同时扫描借阅卡。
4.当此借阅者存在,并且借阅数量未超过所规定的最大数量时,显示借书成功。
否则,借书失败。
还书用例的描述:
简短描述
还书用例使借阅者可以把已借图书归还到图书馆。
逐步描述
1.借阅者把要还的图书显示给管理者。
2.管理者进入还书界面。
3.管理者扫描图书上的条形码。
4.当该图书未超期时,显示还书成功;当该图书超期时,扫描借阅卡,扣除相应的费用,然后显示还书成功。
预约图书用例的描述:
简短描述
预约图书用例使借阅者可以预先约定要借的图书,以便以后借阅。
逐步描述
1.借阅者登录系统,进入预约图书界面。
2.输入想要借阅图书的相关信息进行查询。
3.当该图书未被借走时,点击预约,可以预约该图书,显示预约成功;当该图书已被借走时,则不能预约该图书,显示预约失败。
管理信息用例的描述:
简短描述
管理信息用例使管理者可以添加、修改、删除读者的信息以及图书的信息。
逐步描述
1.管理者登录系统,进入管理信息界面。
2.根据新购入的图书,管理者添加新入图书的信息;当一些图书信息需要修改时,修改相关图书信息:
当一些图书需要出库时,管理者删除这些图书的信息。
3.当有新的借阅者时候,添加新借阅者的信息;当一些借阅者的信息需要修改的时候,点击修改这些借阅者的信息;当一些借阅者退出,即不是该书库的借阅者的时候,删除这些借阅者的信息。
维护系统用例的描述:
简短描述
维护系统用例使管理者可以修改登录的密码,使系统更加安全。
逐步描述
1.管理者进入系统,进入维护系统界面。
2.点击修改密码按钮,输入两次旧密码,在输入两次新密码。
3.当两次旧密码一样并且正确,同时两次新密码相同时,显示修改密码成功。
该信息自动保存到系统。
退出系统用例的描述:
简短描述
退出系统用例使管理者与借阅者可以退出该系统。
逐步描述
1.管理员与借阅者进入系统主界面。
2.当管理员与借阅者点击退出系统按钮时,则退出该系统。
图1-2图书借阅管理系统的类图
图1-3图书借阅管理系统的状态图
查询用例的方案描述:
借阅者希望获得图书的相关信息
1.借阅者登录进入系统。
2.借阅者进入查询界面,输入查询条件。
3.借阅者获得了所需要的信息。
借书用例的方案描述:
借阅者希望借阅所需图书
1.管理者登录系统,进入借书界面。
2.借阅者把图书和借阅卡给管理者。
3.管理者扫描借阅卡和图书的条形码。
4.当借阅者借书的数量不超过所规定的数量时,借书成功,系统自动更新图书信息和借阅者的借阅记录。
还书用例的方案描述:
借阅者希望归还所借的图书
1.管理者登录系统,进入还书界面。
2.借阅者把图书给管理者,管理者扫描图书上的条形码。
3.当图书不超期时,显示还书成功,系统自动更新图书信息和借阅者的借阅记录。
读者管理用例的方案描述:
管理者希望对借阅者的信息进行操作
1.管理者登录系统,进入读者管理界面。
2.管理者对读者信息进行添加、修改、删除等操作。
3.管理者把操作结果保存到系统中。
图书管理用例的方案描述:
管理者希望对图书信息进行操作
1.管理者登录系统,进入图书管理界面。
2.管理者对图书信息进行添加、修改、删除等操作。
3.管理者把操作结果保存到系统中。
图1-4查询协作图
图1-5图书借阅协作图
图1-6还书协作图
图1-7读者管理协作图
图1-8图书管理协作图
图1-9查询活动图
图1-10借书活动图
图1-11还书活动图
图1-12添加图书活动图
图1-13修改图书活动图
图1-14删除图书活动图
3系统设计
3.1概念结构设计
概念结构设计以用户易于理解的形式表达信息,这与数据库的具体细节无关它涉及的数据独立于具体的DBMS和计算机硬件。
它能真实、充分地反映现实世界中事务和事务之间的联系,能满足用户对数据的各种处理要求。
易于改进和扩充。
本系统的E-R图如下:
出版时间
出版社
作者
类别
书名
现存数量
条形码
借书时间
图书借阅
还书时间
编号
已借书数
还书时间
借书时间
登记时间
读者
性别
类别
姓名
图书总数
入馆时间
借书期限
图书价格
图书编号
图书
n
1
住址
单位部门
图1-15系统E-R图
3.2逻辑结构设计
该系统需要的数据库中应包括四个数据表。
表1-1读者信息表
表1-2图书信息表
表1-3图书借阅记录表
表1-4用户信息表
关系模式如下:
图书信息表(图书编号,条形码,书名,作者,出版社,出版时间,类别,现存数量,图书总数,入馆时间,图书价格,借书期限)
读者信息表(编号,姓名,性别,类别,单位部门,住址,登记时间,借书时间,还书时间,已借书数)
图书借阅记录表(图书编号,条形码,书名,编号,借阅者,借还时间,借还状态)
用户信息表(用户名,密码,权限)
4系统实现
系统登录界面及其代码:
“确定”按钮的click事件代码:
setexacton
LOCATEFORALLTRIM(用户名)=ALLTRIM(thisform.text1.Value)
IFFOUND()ANDALLTRIM(密码)=ALLTRIM(thisform.text2.Value)
userquanxian=alltrim(用户信息表.权限)
messagebox("欢迎使用本系统",4+32,"系统提示")
DOFORM系统界面
thisform.Release()
else
messagebox("帐号或密码错误",48,"系统警告")
thisform.text1.Value=""
thisform.text2.Value=""
thisform.text1.SetFocus()
ENDIF
SETEXACTOFF
“退出”按钮click事件的代码:
thisform.release
clearevents
quit
系统主界面及代码如下:
Init事件代码:
do图书管理菜单.mprwiththis,.T.
mand1.visible=.F.
mand2.visible=.F.
mand3.visible=.F.
mand4.visible=.F.
mand5.visible=.F.
mand6.visible=.F.
mand7.visible=.F.
mand8.visible=.F.
mand9.visible=.F.
docase
caseuserquanxian="2"
mand1.visible=.T.
mand2.visible=.T.
mand6.visible=.T.
mand7.visible=.T.
mand8.visible=.T.
mand9.visible=.T.
caseuserquanxian="1"
mand1.visible=.T.
mand2.visible=.T.
mand3.visible=.T.
mand4.visible=.T.
mand5.visible=.T.
mand6.visible=.T.
mand7.visible=.T.
mand8.visible=.T.
mand9.visible=.T.
endcase
“借书”按钮的click事件代码:
doform借书
“还书”按钮的click事件代码:
doform还书
“图书管理”按钮的click事件代码:
doform图书管理
“读者管理”按钮的click事件代码:
doform读者管理
“资料查询”按钮的click事件代码:
thisform.pageframe1.visible=.T.
“打印报表”按钮的click事件代码:
doform打印报表
“密码维护”按钮的click事件代码:
doform密码维护
“关于”按钮的click事件代码:
doform关于
“退出”按钮的click事件代码:
yorn=messagebox("确定退出",4+32,"图书管理系统")
ifyorn=6
thisform.release
clearevents
quit
endif
读者管理界面及代码:
“确定”按钮click事件代码:
sele读者信息表
locatefor编号=upper(allt(thisform.text1.value))
ifnotfound()
=messagebox("没有该读者的编号!
",0+64+0,"提示")
gotop
endif
thisform.refresh
“清除”按钮click事件代码:
thisform.text1.value=''
thisform.text1.setfocus
“向左”按钮click事件代码:
sele读者信息表
if.not.bof()
skip-1
mand1.setfocus
thisform.refresh
endif
“向右”按钮click事件代码:
sele读者信息表
if.not.eof()
skip
mand2.setfocus
thisform.refresh
endif
“删除”按钮click事件代码:
x=messagebox("真的删除编号为"+allt(thisform.text2.value)+"的信息吗?
",4+32+256,"重要提示")
ifx=6
delete
thisform.refresh
else
return.F.
endif
“增加”按钮click事件代码:
sele读者信息表
appendblank
gobottom
thisform.refresh
“关闭”按钮click事件代码:
thisform.release
图书管理表单界面及代码:
“确定”按钮click事件代码:
sele图书信息表
ifthisform.optiongroup1.option1.value=0
locatefor条形码=upper(allt(thisform.text2.value))
ifnotfound()
=messagebox("没有该图书的条形码!
",0+64+0,"提示")
gotop
endif
endif
ifthisform.optiongroup1.option1.value=1
locatefor图书编号=upper(allt(thisform.text1.value))
ifnotfound()
=messagebox("没有该图书编号!
",0+64+0,"提示")
gotop
endif
endif
mand3.enabled=.T.
thisform.refresh
“清除”按钮click事件代码:
thisform.text2.value=''
thisform.text1.value=''
thisform.text1.setfocus
“前一条记录”按钮click事件代码:
sele图书信息表
if.not.bof()
skip-1
mand3.setfocus
thisform.refresh
endif
“后一条记录”按钮click事件代码:
sele图书信息表
if.not.eof()
skip
mand4.setfocus
thisform.refresh
endif
“删除”按钮click事件代码:
x=messagebox("真的删除编号为"+allt(thisform.txt图书编号.value)+"的图书吗?
",4+32+256,"重要提示")
ifx=6
delete
thisform.refresh
else
return.F.
endif
“增加”按钮click事件代码:
sele图书信息表
appendblank
gobottom
thisform.refresh
“关闭”按钮click事件代码:
thisform.release
资料查询界面及其代码:
图书查询界面及代码:
“查询”按钮click事件代码:
select图书信息表
docase
casethisform.pageframe1.page1.Combo1.displayvalue="图书编号"
setfilterto图书信息表.图书编号=alltrim(thisform.pageframe1.page1.text1.value)
thisform.refresh
casethisform.pageframe1.page1.Combo1.displayvalue="条形码"
setfilterto图书信息表.条形码=alltrim(thisform.pageframe1.page1.text1.value)
thisform.refresh
casethisform.pageframe1.page1.Combo1.displayvalue="书名"
setfilterto图书信息表.书名=alltrim(thisform.pageframe1.page1.text1.value)
thisform.refresh
casethisform.pageframe1.page1.Combo1.displayvalue="作者"
setfilterto图书信息表.作者=alltrim(thisform.pageframe1.page1.text1.value)
thisform.refresh
casethisform.pageframe1.page1.Combo1.displayvalue="出版社"
setfilterto图书信息表.出版社=alltrim(thisform.pageframe1.page1.text1.value)
thisform.refresh
casethisform.pageframe1.page1.Combo1.displayvalue="类别"
setfilterto图书信息表.类别=alltrim(thisform.pageframe1.page1.text1.value)
thisform.refresh
casethisform.pageframe1.page1.Combo1.displayvalue="现存数量"
setfilterto图书信息表.现存数量=val(thisform.pageframe1.page1.text1.value)
thisform.refresh
endcase
“刷新”按钮click事件代码:
thisform.pageframe1.page1.refresh
“退出查询”按钮click事件代码:
thisform.pageframe1.visible=.F.
读者查询及代码如下:
“查询”按钮click事件代码:
select读者信息表
docase
casebo1.displayvalue="编号"
setfilterto读者信息表.编号=alltrim(thisform.pageframe1.page2.text1.value)
thisform.refresh
casebo1.displayvalue="姓名"
setfilterto读者信息表.姓名=alltrim(thisform.pageframe1.page2.text1.value)
thisform.refresh
casebo1.displayvalue="性别"
setfilterto读者信息表.性别=alltrim(thisform.pageframe1.page2.text1.value)
thisform.refresh
casebo1.displayvalue="住址"
setfilterto读者信息表.住址=alltrim(thisform.pageframe1.page2.text1.value)
thisform.refresh
casebo1.displayvalue="已借书数"
setfilterto读者信息表.已借书数=val(thisform.pageframe1.page2.text1.value)
thisform.refresh
endcase
“刷新”按钮click事件代码:
thisform.pageframe1.page2.refresh
“退出查询”按钮click事件代码:
thisform.pageframe1.visible=.F.
借书界面及其代码:
图书编号的“确定”按钮click事件代码:
sele图书信息表
ifthisform.optiongroup1.option1.value=0
locatefor条形码=upper(allt(thisform.text2.value))
ifnotfound()
=messagebox("没有该图书的条形码!
",0+64+0,"提示")
gotop
else
mand3.enabled=.T.
endif
endif
ifthisform.optiongroup1.option1.value=1
locatefor图书编号=upper(allt(thisform.text1.value))
ifnotfound()
=messagebox("没有该图书的编号!
",0+64+0,"提示")
gotop
else
mand3.enabled=.T.
endif
endif
thisform.refresh
“清除”按钮click事件代码:
thisform.text2.value=''
thisform.text1.value=''
thisform.text1.setfocus
读者信息的“确定”按钮click事件代码:
sele读者信息表
locatefor编号=(allt(thisform.text13.value))
ifnotfound()
=messagebox("没有该读者的编号",0+64+0,"提示")
gotop
endif
thisform.refresh
“清除”按钮click事件代码:
thisform.text13.value=''
thisform.text13.setfocus