图书管理系统pb.docx
- 文档编号:18597451
- 上传时间:2023-08-20
- 格式:DOCX
- 页数:22
- 大小:525.35KB
图书管理系统pb.docx
《图书管理系统pb.docx》由会员分享,可在线阅读,更多相关《图书管理系统pb.docx(22页珍藏版)》请在冰点文库上搜索。
图书管理系统pb
《PowerBuilder程序设计》
课程设计
姓名:
班级:
学号:
辅导教师
时间:
摘要
随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。
管理信息系统是一个不断发展的新型学科,企业要生存要发展,要高效率地把企业活动有机地组织起来,就必须加强企业管理,即加强对企业内部的各种资源(人、财、物等)的有效管理,建立与自身特点相适应的管理信息系统。
本文介绍了在PowerBuider环境下采用“自上而下地总体规划,自下而上地应用开发”的策略开发一个管理信息系统的过程。
通过分析传统的人工管理图书馆的不足,创建了一套行之有效的计算机管理图书馆的方案。
文章详细介绍了图书管理信息系统的系统分析部分,包括可行性分析、组织机构分析、管理职能分析、业务流程分析、数据流程分析、数据字典、处理描述等等;系统设计部分主要介绍了系统功能设计和数据库设计;系统实现部分列出了几个主要的程序框图,并附带了一些主要的窗口和程序。
本系统界面友好,操作简单,比较实用。
【关键字】管理信息系统、图书管理、PowerBuider应用
第1章绪论
1.1概述
1.1.1设计思想
运用powebuilder9.0设计一个图书管理系统。
该系统要根据要求完成读者图书证的办理、注销功能;图书的新书入库、旧书报废功能;图书的查询功能;读者的查询功能;图书的借阅和归还功能等,要完成这些功能的查询要求用户登录该系统必须具备用户名和口令,而且登录等待时间内要求登录窗口可完成不同图片的转换功能。
而要整体完成以上要求系统必须具备菜单和工具栏。
登陆时要对登陆者设置权限,并且管理员有重新修改密码的权限。
为了可以顺利完成此系统可以按照下图所示设置相应的菜单完成相应的功能:
框架图:
1.1.2系统需求分析
设计图书管理系统需要做以下工作
1.建立一个名为student的数据库
2.创建所需要的表格
3.为表格填充内容
4.创建数据窗口对象,选择合适的数据源
5.生成数据窗口界面
6.新建需要的windows窗体对界面进行相应的设计
7.新建登陆窗体、主窗体、修改密码窗体,借书还书窗体等
8.相应的控件添加相应的代码实现相应的功能
1.2数据库种类选择
PowerBuilder提供了对各类数据库进行访问和管理的强大功能。
PowerBuilder内置的数据库管理系统ASA(AdaptiveServerAnywhere)的创建和使用,以及对其他数据库的访问。
图书管理系统所用到的数据库为ASA(AdaptiveServerAnywhere)数据库。
在PowerBuilder数据库应用环境中,需要了解以下4个重要概念。
(1)
物理数据库
物理数据库是一个磁盘文件,各种数据库对象和数据都保存在这个中,后缀为.dbf。
(2)
ODBC数据源
ODBC是微软公司为连接各种类型的数据库而提供的一种标准数据窗口。
(3)
日志文件
日志文件也是一个磁盘文件,用来记载相关数据库的环境及其操作,后缀名为.log。
(4)
DBPrifiles
DBPrifiles为数据库描述文件,仅在PowerBuilder的开发环境中使用。
PowerBuilder对数据库的操作分为以下步骤:
(1)创建数据库,如DBF,ASA等。
(2)定义ODBC数据源
(3)定义DBPrifiles
(4)连接数据库
第2章数据库设计
2.1用户表
2.2管理表
2.3借书还书表
2.4读者信息表
2.5图书表
2.6借阅表
第3章系统设计
3.1登录窗口及代码
代码
yy=sle_1.text
zz=sle_2.text
xx=ddlb_1.text
ifddlb_1.text="管理员"then
l_getname=trim(sle_1.text)
l_getmima=trim(sle_2.text)
ifl_getname=""orl_getmima=""then
messagebox("提示","用户名和密码不能为空!
")
endif
SELECT"glb"."name",
"glb"."password",
"glb"."qx"
INTO:
l_name,
:
l_mima,
:
l_qx
FROM"glb"
WHERE"glb"."name"=:
l_getname;
ifsqlca.sqlcode<>0then
messagebox("错误","没有此信息")
sle_1.text=""
sle_2.text=""
sle_1.setfocus()
return
endif
ifl_name=l_getnameandl_mima=l_getmimathen
messagebox("登录成功","欢迎使用!
")
open(w_a)
else
messagebox("错误","用户名或密码错误,不能登录该系统!
")
sle_1.text=""
sle_2.text=""
return
endif
else
l_getname=trim(sle_1.text)
l_getmima=trim(sle_2.text)
ifl_getname=""orl_getmima=""then
messagebox("提示","用户名和密码不能为空!
")
endif
SELECT"xsb"."xname",
"xsb"."password",
"xsb"."qx"
INTO:
l_name,
:
l_mima,
:
l_qx
FROM"xsb"
WHERE"xsb"."xname"=:
l_getname;
ifsqlca.sqlcode<>0then
messagebox("错误","没有此信息")
sle_1.text=""
sle_2.text=""
sle_1.setfocus()
return
endif
ifl_name=l_getnameandl_mima=l_getmimathen
messagebox("登录成功","欢迎使用!
")
open(w_a)
else
messagebox("错误","用户名或密码错误,不能登录该系统!
")
sle_1.text=""
return
endif
w_caidanchuangkou.m_管理窗口.enabled=false
w_caidanchuangkou.m_操作窗口.enabled=false
endif
close(parent)
3.2修改密码窗口及代码
修改按钮代码
ifxx="管理员"then
l_getname=trim(sle_1.text)
l_getmima=trim(sle_2.text)
l_newmima=trim(sle_3.text)
l_confmima=trim(sle_4.text)
ifl_getname=""orl_getmima=""then
messagebox("提示","用户名或密码不能为空",exclamation!
)
return
endif
SELECT"glb"."name",
"glb"."password",
"glb"."qx"
INTO:
l_name,
:
l_mima,
:
l_qx
FROM"glb"
WHERE"glb"."name"=:
l_getname;
ifsqlca.sqlcode<>0then
messagebox("错误","没有找到!
")
sle_1.text=""
sle_2.text=""
sle_3.setfocus()
return
endif
ifl_name=l_getnameandl_mima=l_getmimathen
ifl_newmima=l_confmimathen
UPDATE"glb"
SET"password"=:
l_confmima
WHERE"glb"."name"=:
l_getname;
ifsqlca.sqlcode<>0then
rollback;
messagebox("错误","修改密码失败",exclamation!
)
return
endif
commit;
messagebox("错误","修改密码成功",exclamation!
)
close(parent)
else
messagebox("错误","新密码和确认密码不一致,请重新输入",exclamation!
)
sle_3.text=""
sle_4.text=""
sle_3.setfocus()
endif
else
messagebox("错误","输入的用户名和密码不正确,请重新输入",exclamation!
)
sle_1.text=""
sle_2.text=""
sle_3.text=""
sle_4.text=""
sle_1.setfocus()
return
endif
else
l_getname=trim(sle_1.text)
l_getmima=trim(sle_2.text)
l_newmima=trim(sle_3.text)
l_confmima=trim(sle_4.text)
ifl_getname=""orl_getmima=""then
messagebox("提示","用户名或密码不能为空",exclamation!
)
return
endif
SELECT"xsb"."xname",
"xsb"."password",
"xsb"."qx"
INTO:
l_name,
:
l_mima,
:
l_qx
FROM"xsb"
WHERE"xsb"."xname"=:
l_getname;
ifsqlca.sqlcode<>0then
messagebox("错误","没有找到!
")
sle_1.text=""
sle_2.text=""
sle_3.setfocus()
return
endif
ifl_name=l_getnameandl_mima=l_getmimathen
ifl_newmima=l_confmimathen
UPDATE"xsb"
SET"password"=:
l_confmima
WHERE"xsb"."xname"=:
l_getname;
ifsqlca.sqlcode<>0then
rollback;
messagebox("错误","修改密码失败",exclamation!
)
return
endif
commit;
messagebox("错误","修改密码成功",exclamation!
)
close(parent)
else
messagebox("错误","新密码和确认密码不一致,请重新输入",exclamation!
)
sle_3.text=""
sle_4.text=""
sle_3.setfocus()
endif
else
messagebox("错误","输入的用户名和密码不正确,请重新输入",exclamation!
)
sle_1.text=""
sle_2.text=""
sle_3.text=""
sle_4.text=""
sle_1.setfocus()
return
endif
endif
3.3借书还书窗口及代码
查询代码
strings
s=sle_1.text
choosecaseddlb_1.text
case"读者编号"
dw_1.setfilter("readerid="+sle_1.text)
dw_1.filter()
case"读者姓名"
dw_1.setfilter("name='"+sle_1.text+"'")
endchoose
dw_1.retrieve()
确定的代码
ifdw_1.update()=1then
commit;
messagebox("成功","还书成功")
else
rollback;
messagebox("失败","还书失败")
endif
3.4办理图书证的窗口及代码
新增按钮的代码
longll_row
ll_row=dw_1.insertrow(0)
dw_1.scrolltorow(ll_row)
dw_1.setrow(ll_row)
点击办理按钮的代码
ifdw_1.update()=1then
commit;
messagebox("成功","办理成功")
else
rollback;
messagebox("失败","办理失败")
endif
注销按钮的代码
intli_select
li_select=messagebox("提示","是否注销?
",exclamation!
yesno!
)
ifli_select=1then
dw_1.deleterow(0)
endif
3.5图书管理窗口及代码
新书入库按钮代码
longll_row
ll_row=dw_1.insertrow(0)
dw_1.scrolltorow(ll_row)
dw_1.setrow(ll_row)
旧书报废按钮代码
intli_select
li_select=messagebox("提示","是否报废?
",exclamation!
yesno!
)
ifli_select=1then
dw_1.deleterow(0)
endif
更新按钮代码
ifdw_1.update()=1then
commit;
messagebox("成功","更新成功")
else
rollback;
messagebox("失败","更新失败")
endif
3.6图书查询窗口及代码
查询按钮代码
strings
s=sle_1.text
choosecaseddlb_1.text
case"图书编号"
dw_1.setfilter("bookid="+s)
dw_1.filter()
case"图书名"
dw_1.setfilter("name='"+s+"'")
dw_1.filter()
endchoose
dw_1.retrieve()
3.7用户注册窗口及代码
增加按钮代码
longll_row
ll_row=dw_1.insertrow(0)
dw_1.scrolltorow(ll_row)
dw_1.setrow(ll_row)
注册按钮代码
ifdw_1.update()=1then
commit;
messagebox("成功","注册成功")
else
rollback;
messagebox("失败","注册失败")
endif
删除按钮代码
intli_select
li_select=messagebox("提示","是否删除?
",exclamation!
yesno!
)
ifli_select=1then
dw_1.deleterow(0)
endif
第4章总结和致谢
本周的图书管理系统PB课程设计使我更深入的学习了PB这门课程。
一个系统开发之前需要做一些基础的准备。
首先就是分析需要建立哪些窗口然后建立数据库以及要用到的报表,充分的准备会使系统较顺利的完成。
做系统时需要认真的完成每一步,一点点的马虎就会令程序无法顺利进行下去,降低系统开发的效率。
窗口是应用程序与用户交互的界面,窗口能显示信息、从用户得到信息和响应用户的操作,所以窗口界面最好直观,让人一目了然。
在PB中利用数据库画板建立本地ASA数据库时,PB会自动进行有关的数据库配置并建立连接,建立时要仔细认真,以防数据库连接有错误。
在PB开发的应用程序中,由于操作类别的不同,要在不同的窗口之间进行切换。
菜单作为一种常用对象,能够为应用系统提供非常直观快捷的系统导航功能。
设计合理简洁的菜单会让操作用户感觉到一种亲切友好的交互氛围。
本周实训让我重新深入学习了PB这门课程,使我从中学到了很多的知识,在以后的学习中希望自己更加努力,从不断的学习中努力提高自己,学习更多的知识。
这次实训不仅有自己的努力还有老师和同学的帮助,特别是在她们的帮助下我的图书管理系统才得以顺利的完成,很感谢她们的帮助,她们教会我许多我不懂的知识,希望在以后的学习中我能够再接再厉,努力提高自己,能够在学习上也帮助他人,和同学们共同进步。
参考文献
[1]陈明,杨劲松,PowerBuilder8.0高级编程技术。
北京:
北京希望电子出版社,2002
【2】郑阿齐,殷红光,张为民,PowerBuilder实用教程。
北京:
电子工业出版社,2005
【3】崔巍.PowerBuilder8.0数据库应用系统开发教程。
北京:
清华大学出版社,2002
【4】陈桂友,孙同景,雷印胜。
PowerBuilder数据库开发技术。
北京:
机械工业出版社,2005
【5】明日科技。
PowerBuilder管理信息系统项目实例剖析。
北京:
人民邮电出版社,2005
【6】东方人杰,陈杰。
PowerBuilder10.0入门与提高。
北京:
清华大学出版社,2005
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 图书 管理 系统 pb