PowerBuilder图书管理系统.docx

上传人:b****6 文档编号:4127974 上传时间:2022-11-28 格式:DOCX 页数:23 大小:1.55MB
下载 相关 举报
PowerBuilder图书管理系统.docx_第1页
第1页 / 共23页
PowerBuilder图书管理系统.docx_第2页
第2页 / 共23页
PowerBuilder图书管理系统.docx_第3页
第3页 / 共23页
PowerBuilder图书管理系统.docx_第4页
第4页 / 共23页
PowerBuilder图书管理系统.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

PowerBuilder图书管理系统.docx

《PowerBuilder图书管理系统.docx》由会员分享,可在线阅读,更多相关《PowerBuilder图书管理系统.docx(23页珍藏版)》请在冰豆网上搜索。

PowerBuilder图书管理系统.docx

PowerBuilder图书管理系统

重庆邮电大学2010/2011学年第一学期“数据库应用开发”课程  大型作业

学号2009214406

姓名 Uranus 

成绩     

明:

成。

得分

评阅人

一、概述(共10分)

图书管理系统是一种基于集中统一规划的数据库

数据管理新模式。

在对图书、读者的管理,其实是对图书、读者数

据的管理。

使用该系统之后,图书馆管理人员可以管理读者的登

记、图书的购入、借出、归还以及注销等;还可以查询某位读者、

图书的借阅情况,对当前借阅情况给出一些统计,给出统计图,以全面掌握图书的流通情况。

功能结构图:

 

得分

评阅人

①项目需求:

二、

需求分析(共20分)

根据图书馆工作的需要,图书管理系统应具备读者的登记、图

书的购入、借出、归还以及注销;查询某位读者、图书的借阅情

况;对当前借阅情况给出统计图;出版社信息的管理;系统权限的

2

设置;证件挂失、注销;系统帮助等功能,以方便图书馆的日常管理。

根据上述分析,设计程序功能如下。

①系统功能:

(1)图书信息的录入和删除;

(2)出版社信息管理;

(3)图书的检索(包括按作者姓名、出版时间、出版社名称、图书类别、书名、关键字等);

(4)图书的租借(包括借书登记、限借数量控制、还书登记、过期罚款计算等);

(5)借书证件的管理(包括办新证件,挂失、注销等)

(6)系统设置(主要是不同类型证件的可借书的总量和借书时间等)

(7)权限设置(包括登录权限,账号密码管理等)

(8)统计资料(包括惜出数量与库存数量的比例,各类图书数量

与总数量的比例,热门图书统计数据等各种信息资料的统计);(9)图书测览(包括对图书摘要的测览和新书测览);

(10)帮助信息。

得分

评阅人

用例图:

三、建模(共20分)

3

借/还书:

书籍的借阅管理

查询图书信息:

根据作者、出版信息等方式查找图书

新书入库:

录入新书信息

旧书销毁:

从数据库删除图书信息

证件管理:

管理借书证的相关信息

信息汇总:

将借阅信息等内容生成图表,方便了解流通情况出版社信息管理:

录入、删除出版社相关信息

权限管理:

设置登录权限,修改账号密码;设置不同证件的借书量、借书期限等。

得分

评阅人

四、数据库分析(共10分)

(一)E-R图:

4

(二)表的定义

5

数据库中,部分表的结构见表1~表5。

存放图书信息的表BookInfo的结构见表1。

其中图书编号具有惟一性,8位编码中最高2位为图书类型代码,例如电子类、计算机类等,通过表4“BookClass”表进行图书类型的管理,其余6位为图书顺序号。

表1BookInfo表

字段名

意义

数据类型

宽度

Null

PrimaryKey

BookID

图书编号

Numberic

8

No

ISBN

ISBN书号

Char

30

Yse

Title

书名

Char

40

Yse

Publish

出版日期

Char

Yse

Author

作者

Char

30

Yse

Words

字数(千

字)

Integer

Yse

PublisherID

出版社ID

Num

eric

4

Yse

Number

印刷册数

Integer

Yse

Price

定价

Money

Yse

Keyword

关键字

Char

30

Yse

Abstract

摘要

Varchar

400

Yse

表2Publisherlnfo表

字段名

意义

数据类型

宽度

Null

PrimaryKey

PublisherId

出版社ID

Numberic

4

No

Publisher

出版社名称

Char

30

Yes

Address

出版社地址

Char

0

Yes

Tel

电话

Char

16

Yes

Fax

传真

Char

16

Yes

Postcode

邮政编码

Numberic

6

Yes

http

网址

Char

16

Yes

出版社ID是代表出版社的代码,它与图书信息表(表1BookInfo表)相关联。

图书租借表(表3Loan表)记录了图书租借情况,借书证书ID与借书证表(表

5CertificateInfo表)相关联。

表3Loan表

6

表4BookClass

字段名

意义

数据类型

宽度

Null

PrimaryKey

ClassID

图书分类代号

Numric

2

No

Classname

图书分类名称

Char

30

Yes

表5CertificateInfo

字段名

意义

数据类型

宽度

Null

PrimaryKey

Cert_id

借书证书ID

Numric

5

No

Cert_name

证件名称

Char

10

Yes

Cert_value

证件号码

Numric

18

Yes

Name

姓名

Char

8

Yes

Depart

所在部门

Char

20

Yes

flag

标记

Tinyint

Yes

得分

评阅人

五、界面设计和代码实现(共30分)

(1)程序主界面

后,

面:

7

各模块功能已在图中标注出。

(2)系统登录

在主界面上点击“系统登录”图标,打开如下登陆界面:

本系统将用户权限分为三种:

普通用户、系统终端和系统管理

员。

普通用户只具备最基本的查询权限;系统终端可进行新书入

库,旧书注销,图书租借,证件管理,出版社信息管理等操作;系

8

统管理员拥有最高权限,可进行包括上述功能在内的所有操作。

当用户做出超出当前权限的操作时,系统会给出越权提示。

下面以系统管理员的身份进行程序功能的说明。

(3)新书入库

点击主界面上的新书入库图标或从图书管理菜单中选取,打开新书入库界面如下:

将新书信息录入后点击保存即可将信息保存至数据库。

点击新

建将在打开新的录入界面的同时保存当前信息。

上方的控制按钮可

用于一次性录入多本书籍信息时的查看及修改。

以下为保存按钮的关键代码:

Insertintobookinfo

(bookid,title,author,isbn,publish,words,publisher,number,price,keyword,abstract,class)//向bookinfo表中插入新信息

values(:

book_amount+1,:

sle_title.text,:

sle_author.text,:

sle_isbn.text

:

sle_publish.text,:

sle_words.text,:

sle_publisher.text:

sle_numb

9

er.text,:

sle_price.text,:

sle_keyword.text,:

mle_abstract.text:

dd

lb_1.text);

ifSQLCA.SQLCode<>0then

messagebox("保存失败","数据库错误代码:

"+string(SQLCA.SQLDBCode)&

+"~r~n数据库错误信息:

"+SQLCA.SQLErrText)//若保存出错

给出提示

rollback;

endif

其中红色部分为保存时的错误提示,程序中涉及数据库操作的部分多处使用该段代码,下文中将略去该段代码。

(4)旧书销毁

从图书管理菜单中选择旧书销毁功能,打开界面如下:

输入要删除的书籍ID后,点击删除记录按钮即可注销该书信

息。

也可先查询得到书籍ID后再进行删除操作。

以下为“删除记录”按钮的关键代码:

deletefrombookinfo//从bookinfo表删除信息

wherebookid=:

sle_delete.text;

10

操作完成后系统会进行相应提示。

(5)出版社信息管理

图书管理系统中应有出版社信息管理的功能,包括出版社信息的查询,录入等功能,故设计界面如下:

如图所示,该界面既可用以录入出版社信息,也可用以查找出版社信息,上方按钮与新书入库界面按钮功能相似。

保存按钮代码:

insertintoPublisherInfo//向publisherinfo表添加信息

(publisherid,publisher,address,tel,fax,postcode,http)

values(:

publisher_amount+1,:

sle_publisher.text,:

sle_address.text,:

sle

_tel.text,:

sle_fax.text,:

sle_postcode.text,:

sle_http.text);

新建按钮代码为在保存的基础上增加清空输入框的代码。

(6)书籍查询

图书管理系统最重要的功能之一即为书籍信息的查询功能,要

求能以多种方式查询书籍信息,如书名查找,作者查找等方式。

11

时还要求能够实现模糊查询。

查询界面如下:

通过查询方式下拉框可实现查询条件的设置,描述文本框中则

输入具体的查询信息。

点击开始查找按钮查询结果将显示在上方的

数据窗口中。

从图中可见已实现模糊查找功能。

当查询条件为日期

时,若输入的数据格式与日期类型不符则会给出提示。

双击查询结果可打开该书的详细信息。

若查询结果为空则给出提示。

当查询条件为出版时间段时,主要代码如下:

dw_1.setsqlselect(ls_oldsql+"where"+temp+"between'"+

sle_describe.text+"'and'"+sle_end_date.text+"'")//设置查询条件

dw_1.settransobject(sqlca)//设置事务对象dw_1.retrieve()

其中ls_oldsql由getsqlselect()得到。

实现模糊查询的代码如下:

dw_1.setsqlselect(ls_oldsql+"where"+temp+"like'%"+sle

_describe.text+"%'")

dw_1.settransobject(sqlca)

dw_1.retrieve()

其他查询条件代码与以上类似,不一一例举。

12

双击查看书籍信息的代码:

ifrow>0then

title_temp=dw_1.getitemstring(row,"title")//得到点击行对应书名open(w_detail)

endif

其中title_temp为该行对应书名。

(7)图书租借

图书租借作为图书管理系统最重要的一个部分,应当具有以下功能:

1.图书租借信息的记录

2.证件有效性的验证

3.超期罚款的缴纳

本程序的图书租借界面如下:

借书与还书操作共用一个界面。

输入借书证号后,系统会判断该证件是否存在,是否挂失或有

超期书目未归还,若有超期书目未归还则无法进行租借操作。

若证

13

件有效则证件信息会显示在右边方框中,借书记录中则会显示出该

证件上还未归还的书籍信息,同时会检验是否达到管理员规定的数

量上限。

输入图书编号及借书/还书日期后(日期由系统自动获取)

点击确认即可实现借/还书操作。

若有超期未还的书籍需先在还书界面中缴纳罚款方可继续借书。

相关关键代码:

ifmark=1then//判断证件是否有效

messagebox("提示","该证件已挂失")

elseifmark=2andgb_title.text="借书信息"thenmessagebox("提示","该证件有超期书籍未归还")

else

selectname,depart//查询证件信息

into:

sle_name.text,:

sle_depart.text

fromcertificateinfo

wherecert_id=:

sle_cert_id.text;

ifsle_name.text=''andsle_cert_id.text<>''thenmessagebox("提示","无效的证件号")

endif

ifmark=0andsle_name.text<>''then//判断证件状态sle_flag.text='正常'

elseifmark=1then

sle_flag.text='挂失'

elseifmark=2then

sle_flag.text='超期未还'

14

forfeit=day_forfeit*daysafter(loandates,today)messagebox("图书超期未还","须缴纳"+string(forfeit)+"元罚款

")

endif

ifsle_cert_id.text<>''then

dw_1.setsqlselect("select

bookinfo.bookid,bookinfo.title,bookinfo.author,bookinfo.publisher,loan.loandatesfrombookinfo,loanwherebookinfo.bookid=loan.bookidandloan.returndatesisnullandloan.cert_id="+sle_cert_id.text)//设置查询条件

dw_1.settransobject(sqlca)

dw_1.retrieve()

ifdw_1.rowcount()=book_limitanddw_1.rowcount()<>0and

gb_title.text="借书信息"then//计算数据窗口中行数

messagebox("提示","该借阅证最多只可借阅

"+string(dw_1.rowcount())+"本书")

endif

endif

endif

(8)阅读导航

阅读导航包括阅读摘要和新书预览两项功能,分别实现书籍摘要阅览及查看近半年出版的新书信息的功能。

效果如下:

新书预览实际上使用了查询界面的时间段查询功能。

打开查询

15

窗口的同时自动设置查询时间段为最近半年,其余部分与前面相同。

下面主要给出摘要界面的代码:

ifrow>0then

title_temp=dw_1.getitemstring(row,"title")//获得点击行对应标题selectabstract//查询摘要信息

into:

mle_abstract.text

frombookinfo

wheretitle=:

title_temp;

endif

(9)统计资料

该菜单主要实现的功能为数据的统计汇总,包括各类图书比

例,借出与库存比例,热门书统计功能。

通过使用游标等方式获取

相关数据并将之显示为饼状图或柱状图,相当直观。

具体实现效果如下:

16

实现上述功能的关键代码为:

gr_graphic.graphtype=Pie3D!

//设置图表样式

intclass,num[],temp,ord=1

selectcount(distinctclass)//查询不同书的总数into:

class

frombookinfo;

declarebook_curcursorfor//将每种书的数量存入数组selectcount(class)

frombookinfo

17

groupbybookinfo.class;

openbook_cur;

fetchbook_curinto:

temp;

dowhilesqlca.sqlcode=0

nnn[ord]=temp

ooo=ord+1

fetchbook_curinto:

temp;

loop

closebook_cur;

stringtemp2,name[]

ord=1

declarebook_cur2cursorfor//将每种书的借出数量存入数组

selectdistinctclass

frombookinfo;

openbook_cur2;

fetchbook_cur2into:

temp2;

dowhilesqlca.sqlcode=0

name[ord]=temp2

ord=ord+1

fetchbook_cur2into:

temp2;

loop

closebook_cur2;

gr_graphic.addseries("")

forord=1toclass//将数据传递给图表控件gr_graphic.addcategory(name[ord])

gr_graphic.adddata(1,num[ord],name[ord])

next

通过游标的使用统计数据能够实现实时更新,显示出最新的统计结果。

(10)权限设置

该操作必须具备系统管理员权限方可进行。

其功能为管理账户

信息,设置不同类型证件可借阅的数量及超期罚款等。

相关功能主要由两个数据窗口实现,如下图:

18

其中新增按钮的代码为:

temp=dw_2.rowcount()

dw_2.insertrow(temp+1)//新增一行

确定按钮代码为:

dw_1.update()//作出修改

dw_2.update()

ifSQLCA.SQLCode<>0then

messagebox("保存失败","数据库错误代码:

"+string(SQLCA.SQLDBCode)&

+"~r~n数据库错误信息:

"+SQLCA.SQLErrText)

rollback;

else

commit;

messagebox("修改成功","所作修改已成功存储")

close(parent)

endif

(11)证件管理

图书管理系统中需要有借书证信息管理功能,此处即为实现该

功能。

此界面能实现新证件的等级,证件的挂失、注销以及证件信息的查找功能。

19

查询的代码为:

ifddlb_condition.text='借书证号'then//判断查询条件

selectcert_id,cert_name,cert_value,name,depart,flag

into:

sle_cert_id.text,:

sle_cert_name.text,:

sle_cert_value.text,:

s

le_name.text,:

ddlb_depart.text,:

sle_flag.text

fromcertificateinfo

wherecert_id=:

sle_condition.text;//查询证件信息

elseifddlb_condition.text='身份证号'then

selectcert_id,cert_name,cert_value,name,depart,flag

into:

sle_cert_id.text,:

sle_cert_name.text,:

sle_cert_value.text,:

s

le_name.text,:

ddlb_depart.text,:

sle_flag.text

fromcertificateinfo

wherecert_value=:

sle_condition.text;

endif

ifsle_flag.text='0'then//显示证件状态

sle_flag.text='正常'

elseifsle_flag.text='1'then

sle_flag.text='挂失'

elseifsle_flag.text='2'then

sle_flag.text='超期未还'

endif

挂失的代码为:

20

updatecertificateinfo//更改certificateinfo表中对应行的标记setflag=1

wherecert_id=:

sle_cert_id.text;

注销的代码为:

deletefromcertificateinfo//删除表中对应数据

wherecert_id=:

sle_cert_id.text;

其余代码与前面类似,不再陈述。

(12)系统帮助

每个程序都应有帮助信息。

本程序除了下方的帮助栏之外也设

置有帮助文件(即本文档)。

另外还应有程序版本信息的查看功能,此处不做详细叙述。

查看帮助文件的代码为:

run('"D:

\MicrosoftOffice\Office12\winword.exe""2009214406雷雨.docx"')//用word打开指定文档

(本程序帮助文件从简处理)

得分

评阅人

六、总结(共10分)

在动手开始做之前,想象中这个程序应该并不难完成,虽然功

能要求很多,细节繁杂,但是应该不难做出来。

不过

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

当前位置:首页 > 初中教育 > 政史地

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

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