实验图书管理系统.docx

上传人:b****5 文档编号:5651408 上传时间:2022-12-30 格式:DOCX 页数:30 大小:181.63KB
下载 相关 举报
实验图书管理系统.docx_第1页
第1页 / 共30页
实验图书管理系统.docx_第2页
第2页 / 共30页
实验图书管理系统.docx_第3页
第3页 / 共30页
实验图书管理系统.docx_第4页
第4页 / 共30页
实验图书管理系统.docx_第5页
第5页 / 共30页
点击查看更多>>
下载资源
资源描述

实验图书管理系统.docx

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

实验图书管理系统.docx

实验图书管理系统

实验图书管理系统

一实验目的

(1)培养综合应用PowerBuilder进行应用程序设计和解决实际问题的能力;

(2)加深对PowerBuilder编程环境和编程方法的理解;

(3)发挥各人的想像能力和分析能力,拓展思维空间;

(4)掌握应用程序设计的基本方法;

(5)巩固已经学到的编程技术,学会在编程中学习编程。

二实验要求

(1)图书信息的录入和删除,出版社信息管理等;

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

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

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

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

三实验内容

详细步骤:

数据库的设计:

创建数据库,数据库名user,在数据库里建表1~表4,表1Bookinfo为存放图书信息表,表2certificateinfo证件表为证件表,表3LOAN图书租借表,表4SET系统设置表,表如下:

表1Bookinfo

字段名

意义

数据类型

宽度

Null

PrimaryKey

BookID

图书编号

Char

8

No

ISBN

ISBN书号

Char

30

Yse

Title

书名

Char

40

Yse

Publish

出版日期

Char

Yse

Author

作者

Char

30

Yse

Words

字数(千字)

Integer

Yse

PublisherID

出版社ID

Char

4

Yse

Number

印刷册数

Char

Yse

Price

定价

Money

Yse

Keyword

关键字

Char

30

Yse

Abstract

摘要

Varchar

400

Yse

 

表2certificateinfo

 

字段名

意义

数据类型

宽度

Null

PrimaryKey

Cert_id

借书证书ID

Char

5

No

Cert_name

证件名称

Char

10

Yes

Cert_value

证件号码

Char

18

Yes

Name

姓名

Char

8

Yes

Depart

所在部门

Char

20

Yes

flag

标记

Tinyint

Yes

表3LOAN

表4SET

 

1.创建菜单

创建一个菜单,菜单名为caidan,所有窗口在菜单中实现。

2.创建窗口对象

登陆界面

(1)主界面:

创建一个新的弹出式窗口对象,Title为“图书管理系统”关联菜单“caidan”

界面如下:

(2)图书管理:

a.新书录入界面:

创建一个新的弹出式窗口对象,

(1)布置窗口中的静态文本控件

窗口中只有一个标题使用静态文本控件,在窗口控件下拉列表工具栏图标中选择静态文本控件,然后在窗口上单击,生成静态文本控件。

在Text属性栏中输入“新书录入”。

(2)布置窗口中的单行编辑框控件

在窗口控件下拉列表工具栏图标中选择单行编辑框控件,然后在窗口上单击,生成单行编辑框控件。

使用Ctrl和T组合键进行外观复制生成5个单行编辑框。

单行编辑框的名称

控件名称

说明字段

Sle_bookid

图书编号

Sle_isbn

ISBN书号

Sle_publish

书名

Sle_author

作者

Sle_words

字数

Sle_publisberid

出版社ID

Sle_number

印刷册数

Sle_price

定价

Sle_keyword

关键字

Sle_abstract

摘要

(3)布置窗口中的多行编辑框控件

在窗口控件下拉列表工具栏图标中选择多行编辑框控件,然后在窗口上单击,生成多行编辑框控件。

其名称Name为“dw_abstract”,选中Hscrollbar和Vscrollbar。

多行编辑框控件用于输入摘要。

(4)布置窗口中的“确定”按钮控件

在窗口控件下拉列表工具栏图标中选择命令按钮控件,然后在窗口上单击,生成命令按钮控件。

窗口中共有两个命令按钮控件,设置一个按钮的Text属性为“确定”,名称为cb_ok.选中default属性。

“确定”按钮的Clicked事件脚本为;

stringstr_BookId,str_ISBN,str_Title,str_Author,str_PublisherID,str_Keyword,str_Abstract

longI_Words,I_price,i,I_Number,Flag1

datestr_Publish

ifsle_bookid.text=""thenreturnmessagebox("缺少数据","请输入图书编号")

str_BookId=trim(sle_bookid.text)

str_ISBN=trim(sle_isbn.text)

str_Title=trim(sle_title.text)

str_Publish=date(sle_publish.text)

str_Author=trim(sle_author.text)

str_PublisherID=trim(sle_publisherid.text)

I_Number=long(sle_number.text)

str_Keyword=trim(sle_keyword.text)

str_Abstract=trim(mle_abstract.text)

I_Words=long(sle_words.text)

I_Price=long(sle_price.text)

Flag1=0

selectBookID

into:

i

fromBookInfo

whereBookID=:

str_BookId;

ifi<>0thenmessagebox("书号重复","书号重复,请重新输入!

")

INSERTINTO"BookInfo"

("BookID",

"ISBN",

"Title",

"Publish",

"Author",

"Words",

"PublisherID",

"Number",

"Keyword",

"Abstract",

"Price",

"Flag")

VALUES

(:

str_BookId,

:

str_ISBN,

:

str_Title,

:

str_Publish,

:

str_Author,

:

I_Words,

:

str_PublisherID,

:

I_Number,

:

str_Keyword,

:

str_Abstract,

:

I_Price,

:

Flag1);

sle_bookid.text=""

sle_isbn.text=""

sle_title.text=""

sle_publish.text=""

sle_author.text=""

sle_publisherid.text=""

sle_number.text=""

sle_publisherid.text=""

sle_keyword.text=""

mle_abstract.text=""

sle_words.text=""

sle_price.text=""

sle_bookid.setfocus()

(3)关联新书录入窗口m到菜单中

打开创建主菜单选择新书录入菜单,添加事件的脚本为:

open(m)

(4)具体界面如下:

b.旧书销毁界面:

创建一个新的弹出式窗口对象

(1)布置窗口中的静态文本控件

窗口中只有一个标题使用静态文本控件,在窗口控件下拉列表工具栏图标中选择静态文本控件,然后在窗口上单击,生成静态文本控件。

在Text属性栏中输入“旧书销毁”。

(2)按书号检索

按书号查询的数据窗口对象是一个条件查询的数据窗口,其设计步骤为:

l)单击New图标按钮,弹出“New”对话框;

2)选择DataWindow选项页,双击FreeForm图标,弹出“ChooseDataSourceforFreeFormDataWindow”对话框;

3)选择“SQLSelect”数据源方式,单击“Next”按钮,弹出“SelectTable”对话框;

4)在Table列表框中选择student表,单击“Open”按钮,这时弹出Select画板;

5)单击菜单Design∣RetrievalArguments…弹出SpecifyRetrievalArguments”对话框,在Name栏中输入ls_name,在Type下拉列表框中选择String,单击“OK”按钮,对话框关闭:

6)在Select画板的TableLayout子窗口中的表框中列出了student表的全部字段的名称,每单击一个字段,该字段就变为蓝底白字,表示选中,同时,会在上面的“SelectionList:

”区域中排列出该宇段。

如果单击选中的字段,就会变为不被选中,该字段从上面的排列中消失。

单击每一个字段,将全部字段选中;

7)在Select画板的Where子窗口中单击Colunm栏,右边出现一个“▼”符号,单击“▼”按钮,弹出student表的所有字段,选择“student”.“name”,在右边的Value栏中,单击右键,选择弹出菜单中的“Arguments...”,弹出一个小窗口,内部有刚才定义的变量“:

Is_name”,单击选中它,单击“Paste”按钮,“:

ls_name”就出现在Value栏中。

8)单击“Return”图标按钮,弹出“SelectColorlBorderSettings”对话枢,单击“Next”按钮,弹出“ReadytoCreateFreeFormDataWindow”对话框。

,该对话框对数据窗口对象的主要属性进行了小结。

单击“Finish”按钮,弹出“SpecifyRetrievalArguments”对话框,要求对检索变量ls_name进行赋值,以便对数据库进行数据检索,并将检索结果放到Preview子窗口中。

可以在Value栏中输人一个姓名后按“OK”键进行检索,也可以按“Cancel”键不进行检索,然后进入数据窗口对象画板。

9)在数据窗口对象画板中,将字段名称改为中文,调整字段的位置和大小,设置文字颜色、背景颜色和字段边框;

10)选择菜单Edit∣Select∣SelectColunms,将所有字段全部选中,然后在Properties属性卡中选择Edit页,选中“DisplayOnly”复选框,不选中“AutoSelection”复选框;

11)保存数据窗口对象名称为d1。

(4)编写脚本:

在“查询”按钮的Clicked事件脚本为;

stringstr_bookid

str_bookid=trim(sle_bookid.text)

ifnotstr_bookid=""then

dw_bookid.retrieve(str_bookid)

else

MessageBOX("数据不全","请输入待删除的书名。

")

endif

sle_bookid.setFocus()

在“确定销毁”按钮的Clicked事件脚本为;

stringstr_bookid

longi

str_bookid=trim(sle_bookid.text)

delete

from"BookInfo"

whereBookID=:

str_bookid;

dw_bookid.retrieve(str_bookid)

selectBookID

into:

i

from"BookInfo"

whereBookID=:

str_bookid;

ifi=0thenmessagebox("提示",string(str_bookid)+"的信息已经不存在")

sle_bookid.text=""

(5)关联新书录入窗口n到菜单中

打开创建主菜单选择旧书销毁菜单中,添加事件的脚本为:

open(n)

(6)具体界面如下:

(4)图书查询:

图书查询包括两个查询:

按书名查询,按日期查询。

(这里只写按书名查询详细步骤,按日期查询和按书名查询功能一样,略之)

1)设计步骤如下:

创建一个新的弹出式窗口对象。

数据窗口对象选择Grid风格。

增加一个检索参数RetrievalArgument为ls_author,在Select画板的Where子窗口中设计的条件为:

"bookinfo"."author"like:

ls_author

保存数据窗口对象

(2)布置一个静态文本控件,其Text为“按书名查询”,一个单行编辑框,为Name为“sle_author”;一个命令按钮,Text属性为“查询”,选中“Default”复选框;还有一个数据窗口控件,其Name为dw_author”;DataObject为d5,选中HScrollBar和VScrollBar复选框。

保存所做的工作。

(3)编写脚本:

在“确定”按钮的Clicked事件脚本为;

stringstr_title

str_title=trim(sle_title.text)

ifnotstr_title=""then

dw_title.retrieve(str_title)

else

MessageBOX("数据不全","请输入书名(可以不全)!

")

endif

sle_title.setFocus()

在a窗口的Open事件中,再增加数据窗口dw_author使用数据库的事物对象和初始化的代码:

dw_author.SetTransObject(SQLCA)

(4)关联新书录入窗口m到菜单中

打开创建主菜单选择按作者查询菜单,添加事件的脚本为:

open(a)

两个界面如下:

按书名查询

按日期查询

(5)证件管理:

a.办新证件

创建一个新的弹出式窗口对象,窗口名“student”。

(1)布置窗口中的静态文本控件

窗口中只有一个标题使用静态文本控件,在窗口控件下拉列表工具栏图标中选择静态文本控件,然后在窗口上单击,生成静态文本控件。

在Text属性栏中输入“办新证件”。

2)布置窗口中的单行编辑框控件

在窗口控件下拉列表工具栏图标中选择单行编辑框控件,然后在窗口上单击,生成单行编辑框控件。

使用Ctrl和T组合键进行外观复制生成5个单行编辑框。

单行编辑框的名称

控件名称

说明字段

Sle_cert_id

借书证ID

Sle_cert_value

证件号码

Sle_departy

所在部门

(3)布置窗口中的单选钮和组合框控件

窗口中共有两组单选钮,一组为性别选择,另一组为党团员选择。

性别选择单选钮的设计方法为:

在窗口控件下拉列表工具栏图标中选择组合框控件,然后在窗口上单击,生成组合框控件、再选择单选钮控件,在组合框中单击,生成单选钮控件。

设置其名称为rb_zero,Text为“0”,选中Checked属性;同样再在组合框中放置一个单选钮控件,设置其名称为rb_first,Text为“1”,不选中Checked属性;rb_two,Text为“2”,不选中Checked属性。

(说明:

标记中的0是合法用户能借阅书籍,1是该证已挂失,2是该用户已经在黑名单里。

(4)布置窗口中的下拉列表框控件

在窗口控件下拉列表工具栏图标中选择下拉列表框控件,然后在窗口上单击,生成下拉列表框控件。

输入下拉列表框控件名称为ddlb_cert_name,不选中Sorted属性,选中Vscrollbar属性。

单击下拉列表框控件后拖动下边框,调整下拉列表框展开后的长度。

同样输入下拉列表框控件名称为ddlb_departy,不选中Sorted属性,选中Vscrollbar属性。

单击下拉列表框控件后拖动下边框。

(5)布置窗口中的命令按钮控件

在窗口控件下拉列表工具栏图标中选择命令按钮控件,然后在窗口上单击,生成命令按钮控件。

窗口中共有两个命令按钮控件,设置一个按钮的Text属性为“提交”,名称为cb_ok.选中default属性;设置一个按钮的Text属件为“退出”,名称为cb_exit,选中Cancel属性。

(6)编写脚本:

单击选中证件名称下拉列表框控件,选择右键弹出菜单中的Script菜单项,进人SCript子窗口,选择事件下拉列表框中的Constructor事件,输人以下脚本:

this.additem("教师")

this.additem("学生")

同时在所在部门下拉列表框控件,选择右键弹出菜单中的Script菜单项,进人SCript子窗口,选择事件下拉列表框中的Constructor事件,输人以下脚本:

this.additem("计算机科学系")

this.additem("英语系")

this.additem("工商管理系")

this.additem("经济系")

this.additem("信息管理系")

this.additem("艺术系")

this.additem("机械系")

this.additem("建筑系")

在“确定”按钮的Clicked事件脚本为;

stringID,depart,name,Cname,Cvalue,Ctype,flag

inti

ID=trim(sle_cert_id.text)

selectCert_id

into:

i

fromCertificateInfo

whereCert_id=:

ID;

ifi<>0then

messagebox("重复","借书证ID重复,请重新输入!

")

sle_cert_id.text=""

sle_cert_id.setfocus()

return

endif

ifsle_cert_id.text=""then

messagebox("缺少数据","请输入借书证ID")

sle_cert_id.setfocus()

return

elseifsle_name.text=""then

messagebox("缺少数据","请输入姓名")

sle_name.setfocus()

return

endif

ifsle_cert_value.text=""then

messagebox("缺少数据","请输入证件号")

return

elseifsle_depart.text=""then

messagebox("缺少数据","请输入系别或部门")

return

endif

ifddlb_cert_type.text=""then

messagebox("缺少数据","请选择借书证类型")

return

elseifddlb_cert_name.text=""then

messagebox("缺少数据","请输入证件名称")

return

endif

name=trim(sle_name.text)

Cvalue=trim(sle_cert_value.text)

Cname=trim(ddlb_cert_name.text)

depart=trim(sle_depart.text)

Ctype=trim(ddlb_cert_type.text)

flag="0";

insertinto"CertificateInfo"

("Cert_id",

"Name",

"Cert_name",

"Cert_value",

"Depart",

"Cert_type",

"flag"

values

(:

ID,

:

name,

:

Cname,

:

Cvalue,

:

depart,

:

Ctype,

:

flag

);

sle_cert_id.text=""

sle_name.text=""

ddlb_cert_name.text=""

sle_cert_value.text=""

sle_depart.text=""

ddlb_cert_type.text=""

sle_cert_id.setfocus()

在“退出”按钮的Clicked事件脚本为;

close(book_jszzhuce)

(7)关联新书录入窗口student到菜单中

打开创建主菜单到办新证件菜单中,添加事件的脚本为:

open(student)

(8)具体界面如下:

b.证件管理

创建一个新的弹出式窗口对象,窗口名“lose”。

设计步骤如下:

1)首先按借书证ID进行检索,显示出这个人的证件信息,之后设置四个按钮:

确定、挂失、解锁、销毁,之后在每个按钮里输入脚本。

2)编写脚本:

在“确定”按钮的Clicked事件脚本为;

stringID

ID=trim(sle_ID.text)

ifnotsle_ID.text=""then

dw_ID.retrieve(ID)

else

messagebox("错误","请输入借书证号")

endif

在“挂失”按钮的Clicked事件脚本为;

stringID

longi

ID=trim(sle_ID.text)

update"CertificateInfo"

set"flag"=1

where"Cert_id"=:

ID;

ifnotsle_ID.text=""then

dw_ID.retrieve(ID)

else

messagebox("错误","请输入借书证ID")

endif

在“解锁”按钮的Clicked事件脚本为;

stringID

longi

ID=trim(sle_ID.text)

update"CertificateInfo"

set"flag"=0

where"Cert_id"=:

ID;

ifnotsle_ID.text=""then

dw_ID.retrieve(ID)

else

messagebox("错误","请输入借书证ID")

endif

在“销毁”按钮的Clicked事件脚本为;

stringID

longi

ID=trim(sle_ID.text)

delete

from"CertificateInfo"

where"Cert_id"=:

ID;

ifnotsle_ID.text=""then

dw_ID.retrieve(ID)

else

messagebox("错误","请输入借书证ID")

endif

在lose窗口的Open事件中,再增加数据窗口dw_cert_id

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

当前位置:首页 > 高中教育 > 语文

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

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