PowerBuilder实习报告.docx

上传人:b****9 文档编号:25283999 上传时间:2023-06-07 格式:DOCX 页数:33 大小:1.98MB
下载 相关 举报
PowerBuilder实习报告.docx_第1页
第1页 / 共33页
PowerBuilder实习报告.docx_第2页
第2页 / 共33页
PowerBuilder实习报告.docx_第3页
第3页 / 共33页
PowerBuilder实习报告.docx_第4页
第4页 / 共33页
PowerBuilder实习报告.docx_第5页
第5页 / 共33页
点击查看更多>>
下载资源
资源描述

PowerBuilder实习报告.docx

《PowerBuilder实习报告.docx》由会员分享,可在线阅读,更多相关《PowerBuilder实习报告.docx(33页珍藏版)》请在冰豆网上搜索。

PowerBuilder实习报告.docx

PowerBuilder实习报告

实验报告图书管理与查询系统

随着IT产业和Internet获得了飞速发展,计算机应用已渗透到了各个领域,引起信息管理的革命,实现了信息的自动化处理,提高了处理的及时性和正确性。

近年来,随着图书馆规模的不断扩大,图书数量也相应的增加,有关图书的各种信息量也成倍增加,面对着庞大的信息量,传统的人工方式管理会导致图书馆管理上的混乱,人力与物力过多浪费,图书馆管理费用的增加,从而使图书馆的负担过重,影响整个图书馆的运作和控制管理,因此,必须制定一套合理、有效,规范和实用的图书管理系统,对图书资料进行集中统一的管理。

本次实验就是运用PowerBuilder和SQLServer开发一个小型的图书管理系统。

一.实验目的

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

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

(3)发挥个人的想像能力和分析能力,扩展思维空间。

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

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

二.实验要求

(1)按照应用程序设计的四个阶段进行,熟悉每个阶段需要解决的问题以及解决问题的方法。

(2)使用SQLSERVER2000设计数据库和数据表,注意把握设计数据库的设计原则。

(3)要求设计的应用程序界面友好,操作方便。

(4)应用程序的界面和风格没有具体要求,个人按照自己的思路去做,发挥自己的创造能力。

(5)提供较为完善的差错控制与友好的用户界面,尽量避免误操作。

(6)系统开发的总目标是实现内部图书借阅管理的系统化、规范化和自动化。

三.系统功能分析

图书管理系统是该系统软件的重要内容之一,该子系统为图书资料的管理和动态调整提供了决策依据,有利于及时针对性的对新书进行订货入库。

它的主要功能包括:

新书入库,旧书注销,借书,还书,图书统计,帮助信息等。

下面是图书管理系统的主要功能的简单描述:

1.图书管理

这是图书馆最重要的模块之一,它将对图书馆中的书籍进行管理操作,所有的原始数据输入都是在这里实现的,有了这里的数据输入,才能开始以后的诸如借书、还书等操作。

(1)新书入库管理

该功能是进行新书的入库登记,即将新书信息加入到BookInfo表中。

(2)旧书注销管理

该功能是将需要淘汰或销毁的旧书通过两种检索方式检索出来并从数据库表BookInfo中删除。

(3)出版社信息管理

该功能是管理出版社信息,具有添加、删除、修改、确认等功能。

2.图书检索管理

图书查询系统是该系统软件的另一个重要内容之一。

它是一个面向读者的综合查询系统,采用与管理系统相同的数据库,具有唯一的功能即查询。

它提供了如下几种查询方式:

(1)按作者姓名查询,要求使用者输入作者姓名进行模糊查询。

(2)按出版日期查询,在这种查询方式下又分为几种查询。

有:

按某个阶段查询,查询某个时间段内出版的图书;按某个日期查询,查询某个日期出版的图书;按某个日期之前查询,查询某个日期之前出版的图书;按某个日期之后,查询某个日期之后出版的图书。

(3)按出版社名称查询,要求使用者输入出版社名称进行模糊查询。

(4)按书名查询,按图书的名称进行图书的模糊查询。

(5)按关键字查询,按图书的关键字进行图书的模糊查询。

3.图书租借管理

(1)借书管理

该功能是办理图书借书登记,将借书信息添加到Loan表中。

(2)还书管理

该功能是办理还书手续在Loan表中填写还书日期登记和加注删除标志。

4.图书浏览管理

(1)阅读摘要

该功能是浏览图书和图书的摘要,通过查询某书的名称来浏览该书的摘要内容。

(2)新书预览

该功能是最近半年内出版的新书以及该书的摘要。

5.统计资料管理

(1)各类图书比例

该功能是按照图书分类,统计各类图书数量占该图书总量的比例。

(2)库存与借出比例

该功能是统计库存和借出的比例。

(3)热门图书统计

该功能是对一些借出图书的频率较高的图书进行统计。

6.帮助信息

该功能提供系统的帮助信息,版本信息以及系统的一些设置。

四.系统设计过程

1.系统功能模块图

2.数据库设计

表P.1bookinfo

字段名

意义

数据类型

宽度

NULL

primarykey

bookid

图书编号

numeric

8

no

ISBN

ISBN书号

char

30

yes

bookclass

图书分类代码

numeric

8

yes

title

书名

char

yes

publishdate

出版日期

date

yes

author

作者

char

16

yes

Words

字数

integer

yes

publisher

出版社名称

numeric

30

yes

number

印刷册数

integer

yes

price

定价

money

yes

keywords

关键字

char

30

yes

abstract

摘要

vchar

400

yes

表P.2bookclass

字段名

意义

数据类型

宽度

NULL

primarykey

classID

图书分类代码

numeric

8

no

classname

图书分类名称

char

30

yes

表P.3publisherinfo

字段名

意义

数据类型

宽度

NULL

primarykey

publisher

出版社名称

char

30

yes

address

出版社地址

char

50

yes

tel

电话

char

16

yes

publisherid

出版社ID

numeric

4

no

fax

传真

char

16

yes

postcode

邮政编码

numeric

6

yes

http

网址

char

16

yes

表P.4loan

字段名

意义

数据类型

宽度

NULL

primarykey

bookid

图书编号

numeric

8

no

Stud_id

学生ID号

numeric

8

no

loandate

借书日期

date

yes

loanruturn

还书日期

date

yes

fine

罚金

money

yes

delflag

删除标志

tinyint

yes

3.系统窗口设计和代码编写

(1)系统登录窗口(w_login)

给确认命令按钮cb_1的事件clicked编写代码:

   setpointer(hourglass!

   ifparent.wf_connect(sle_userid.text,sle_password.text)=-1then

    messagebox("连接数据库错误!

","连接失败"+sqlca.sqlerrtext)

    halt

   else

     open(w_main)

     close(parent)

    endif

给返回命令按钮cb_2的事件clicked编写代码:

close(parent)

(2)主窗口(w_main) 

给图片P_2的事件clicked编写代码:

Open(w_1)

给图片P_3的事件clicked编写代码:

Open(w_2)

给图片P_4的事件clicked编写代码:

Open(w_3)

给图片P_5的事件clicked编写代码:

Open(w_4)

给图片P_6的事件clicked编写代码:

Open(w_5)

给图片P_7的事件clicked编写代码:

close(parent)

(3)统计资料窗口(w_1)

给图片P_1的事件clicked编写代码:

Open(w_1_1)

给图片P_2的事件clicked编写代码:

Open(w_1_2)

给图片P_3的事件clicked编写代码:

Open(w_1_3)

a.各类图书比例窗口(w_1_1)

给窗口w_1_1的事件open编写代码:

dw_1.settransobject(sqlca)

给查询命令按钮cb_1的事件clicked编写代码:

dw_1.retrieve()

给返回命令按钮cb_2的事件clicked编写代码:

Close(parent)

b.热门图书统计窗口(w_1_2)

给窗口w_1_2的事件open编写代码:

gr_1.addseries("计算机")

gr_1.addseries("哲学")

gr_1.addseries("经济学")

gr_1.adddata(1,100,1)

gr_1.adddata(2,80,1)

gr_1.adddata(3,60,1)

gr_1.adddata(4,130,1)

gr_1.adddata(1,88,2)

gr_1.adddata(2,60,2)

gr_1.adddata(3,66,2)

gr_1.adddata(4,100,2)

gr_1.adddata(1,60,3)

gr_1.adddata(2,100,3)

gr_1.adddata(3,70,3)

gr_1.adddata(4,100,3)

gr_1.adddata(1,130,4)

gr_1.adddata(2,80,4)

gr_1.adddata(3,99,4)

gr_1.adddata(4,120,4)

给图片按钮pb_1的事件clicked编写代码:

Close(parent)

c.库存与借出比例窗口(w_1_3)

给窗口w_1_3的事件open编写代码:

gr_1.elevation=12

gr_1.rotation=10

gr_1.spacing=150

gr_1.addcategory("一季度")

gr_1.addcategory("二季度")

gr_1.addcategory("三季度")

gr_1.addcategory("四季度")

gr_1.addseries("借出数量")

gr_1.addseries("库存数量")

gr_1.adddata(1,80,1)

gr_1.adddata(2,100,1)

gr_1.adddata(1,150,2)

gr_1.adddata(2,200,2)

gr_1.adddata(1,100,3)

gr_1.adddata(2,300,3)

gr_1.adddata(1,100,4)

gr_1.adddata(2,500,4)

给图片按钮pb_1的事件clicked编写代码:

Close(parent)

(4)图书浏览窗口(w_2)

给图片P_1的事件clicked编写代码:

Open(w_2_1)

给图片P_2的事件clicked编写代码:

Open(w_2_2)

a.阅读摘要窗口(w_2_1)

给窗口w_2_1的事件open编写代码:

dw_1.settransobject(sqlca)

给检索命令按钮cb_1的事件clicked编写代码:

stringls_title

ls_title=trim(sle_1.text)

ifnotls_title=""then

dw_1.retrieve(ls_title)

else

messagebox("数据不全!

","请输入要查询的书名!

")

endif

sle_1.setfocus()

b.新书预览窗口(w_2_2)

给窗口w_2_2的事件open编写代码:

dw_1.settransobject(sqlca)

dw_1.retrieve()

给上一条命令按钮cb_1的事件clicked编写代码:

dw_1.scrollpriorrow()

给返回命令按钮cb_2的事件clicked编写代码:

close(parent)

给下一条命令按钮cb_3的事件clicked编写代码:

dw_1.scrollnextrow()

(5)图书管理窗口(w_3)

给图片P_1的事件clicked编写代码:

Open(w_3_1)

给图片P_2的事件clicked编写代码:

Open(w_3_2)

给图片P_3的事件clicked编写代码:

Open(w_3_3)

a.新书录入窗口(w_3_1)

给确认命令按钮cb_1的事件clicked编写代码:

longll_bookid,ll_publishid,ll_i

dateld_publishdate

stringls_ISBN,ls_title,ls_author,ls_keywords,ls_words,ls_number,ls_price

ifsle_1.text=""orisnull(sle_1.text)then

messagebox("缺少数据","请输入图书编号")

sle_1.setfocus()

return

elseifsle_3.text=""orisnull(sle_3.text)then

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

sle_3.setfocus()

return

endif

ifsle_4.text<>""andnotisnull(sle_4)then

ifisdate(sle_4.text)then

ld_publishdate=date(sle_4.text)

else

messagebox("输入数据错误","请使用“年—月—日”的日期格式")

sle_4.setfocus()

return

endif

endif

ll_bookid=long(sle_1.text)

selecttsgl.bookid

into:

ll_i

fromtsgl

wheretsgl.bookid=:

ll_bookid;

ifll_i<>0then

messagebox("错误信息","图书编号第"+string(ll_i)+"号重号!

请更正。

")

sle_1.setfocus()

return

endif

ls_ISBN=trim(sle_2.text)

ls_title=trim(sle_3.text)

ls_author=trim(sle_5.text)

ls_words=trim(sle_6.text)

ls_number=trim(sle_8.text)

ls_price=trim(sle_9.text)

ls_keywords=trim(sle_10.text)

insertinto"tsgl"

("bookid",

"ISBN",

"title",

"publishdate",

"author",

"words",

"publishid",

"number",

"price",

"keywords",

"abstract")

values

(:

ll_bookid,

:

ll_publishid,

:

ls_ISBN,

:

ld_publishdate,

:

ls_title,

:

ls_author,

:

ls_keywords,

:

ls_words,

:

ls_price,

:

ls_number

:

mle_1.text);

sle_1.text=""

sle_2.text=""

sle_3.text=""

mle_1.text=""

sle_4.text=""

sle_5.text=""

sle_6.text=""

sle_7.text=""

sle_8.text=""

sle_9.text=""

sle_10.text=""

sle_1.setfocus()

给返回命令按钮cb_2的事件clicked编写代码:

close(parent)

b.旧书销毁窗口(w_3_2)

给窗口w_3_2的事件open编写代码:

dw_1.settransobject(sqlca)

给查询命令按钮cb_1的事件clicked编写代码:

stringls_title

ls_title=trim(sle_1.text)

ifnotls_title=""then

dw_1.retrieve(ls_title)

else

messagebox("数据不全!

","请输入要查询的书名!

")

endif

sle_1.setfocus()

给删除命令按钮cb_2的事件clicked编写代码:

dw_1.deleterow(dw_1.getrow())

给返回命令按钮cb_3的事件clicked编写代码:

close(parent)

c.出版社窗口(w_3_3)

给窗口w_3_3的事件open编写代码:

dw_1.settransobject(sqlca)

给上一条命令按钮cb_1的事件clicked编写代码:

dw_1.scrollpriorrow()

给下一条命令按钮cb_2的事件clicked编写代码:

dw_1.scrollnextrow()

给添加命令按钮cb_3的事件clicked编写代码:

longrow

row=dw_1.insertrow(dw_1.getrow())

dw_1.setrow(row)

dw_1.scrolltorow(row)

dw_1.setfocus()

给删除命令按钮cb_4的事件clicked编写代码:

dw_1.deleterow(dw_1.getrow())

给修改命令按钮cb_5的事件clicked编写代码:

dw_1.update()

给显示命令按钮cb_6的事件clicked编写代码:

dw_1.retrieve()

给返回命令按钮cb_7的事件clicked编写代码:

close(parent)

给存盘命令按钮cb_8的事件clicked编写代码:

dw_1.update()

(6)图书租借窗口(w_4)

给图片P_1的事件clicked编写代码:

Open(w_4_1)

给图片P_2的事件clicked编写代码:

Open(w_4_2)

a.借书窗口(w_4_1)

给窗口w_4_1的事件open编写代码:

dw_1.settransobject(sqlca)

dw_2.settransobject(sqlca)

给查询命令按钮cb_1的事件clicked编写代码:

stringls_bookid

ls_bookid=trim(sle_2.text)

ifnotls_bookid=""then

dw_1.retrieve(ls_bookid)

else

messagebox("数据不全!

","请输入图书编号!

")

endif

sle_2.setfocus()

longrow

row=dw_2.insertrow(0)

dw_2.setrow(row)

dw_2.scrolltorow(row)

dw_2.setfocus()

给借书命令按钮cb_2的事件clicked编写代码:

dw_2.update()

给切换到还书命令按钮cb_3的事件clicked编写代码:

close(parent)

open(w_4_2)

给返回命令按钮cb_4的事件clicked编写代码:

close(parent)

b.还书窗口(w_4_2)

给窗口w_4_1的事件open编写代码:

dw_1.settransobject(sqlca)

dw_2.settransobject(sqlca)

给查询命令按钮cb_1的事件clicked编写代码:

stringls_bookid

ls_bookid=trim(sle_2.text)

ifnotls_bookid=""then

dw_1.retrieve(ls_bookid)

else

messagebox("数据不全!

","请输入图书编号!

")

endif

sle_2.setfocus()

longrow

row=dw_2.insertrow(0)

dw_2.setrow(row)

dw_2.scrolltorow(row)

dw_2.setfocus()

给借书命令按钮cb_2的事件clicked编写代码:

dw_2.update()

给切换到还书命令按钮cb_3的事件clicked编写代码:

close(parent)

open(w_4_1)

给返回命令按钮cb_4的事件clicked编写代码:

close(parent)

(7)图书检索窗口(w_5)

给窗口w_5的事件open编写代码:

tab_1.tabpage_1.dw_1.settransobject(sqlca)

tab_1.tabpage_2.dw_2.settransobject(sqlca)

tab_1.tabpage_3.dw_3.settransobject(sqlca)

tab_1.tabpage_4.dw_4.settransobject(sqlca)

tab_1.tabpage_5.dw_5.settransobject(sqlca)

tab_1.tabpage_6.dw_6.settransobject(sqlca)

给推退出命令按钮cb_1的事件clicked编写代码:

close(parent)

下面的图片和代码是:

按作者姓名“查询”的事件clicked代码:

stringls_author

ls_author=trim(sle_1.text)

ifnotls_author=""then

dw_1.retrieve(ls_author)

else

messagebox("数据不全!

","请输入作者的姓名!

")

endif

sle_1.setfocus()

按出版日期“查询”的事件clicked代码:

stringls_start,ls_end

dateld_start,ld_end

ifisdate(sle_2.text)then

ifisdate(sle_3.text)then

ld_start=date(sle_2.text)

ld_end=date(sle_3.text)

dw_2.retrieve(ld_start,ld_end)

else

messagebox("数据错误","请重新输入结束时间!

")

endif

else

messagebox("数据错误","请重新输入开始时间!

")

endif

sle_2.setfocus()

按出版社名称“查询”的事件clicked代码:

stringls_publisher

ls_publisher=trim(sle_4.text)

ifnotls_publi

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

当前位置:首页 > 小学教育 > 数学

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

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