PowerBuilder实习报告.doc_第1页
PowerBuilder实习报告.doc_第2页
PowerBuilder实习报告.doc_第3页
PowerBuilder实习报告.doc_第4页
PowerBuilder实习报告.doc_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验报告 图书管理与查询系统 随着IT产业和Internet获得了飞速发展,计算机应用已渗透到了各个领域,引起信息管理的革命,实现了信息的自动化处理,提高了处理的及时性和正确性。近年来,随着图书馆规模的不断扩大,图书数量也相应的增加,有关图书的各种信息量也成倍增加,面对着庞大的信息量,传统的人工方式管理会导致图书馆管理上的混乱,人力与物力过多浪费,图书馆管理费用的增加,从而使图书馆的负担过重,影响整个图书馆的运作和控制管理,因此,必须制定一套合理、有效,规范和实用的图书管理系统,对图书资料进行集中统一的管理。本次实验就是运用PowerBuilder和SQL Server开发一个小型的图书管理系统。一.实验目的(1)培养综合应用PowerBuilder进行应用程序设计和解决实际问题的能力。(2)加深对PowerBuilder的编程环境和编程方法的理解。(3)发挥个人的想像能力和分析能力,扩展思维空间。(4)掌握应用程序的基本设计方法。(5)巩固已经学到的编程技术,学会在编程中学会编程。二.实验要求(1)按照应用程序设计的四个阶段进行,熟悉每个阶段需要解决的问题以及解决问题的方法。(2)使用SQL SERVER2000 设计数据库和数据表,注意把握设计数据库的设计原则。(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.1 bookinfo字段名意义数据类型宽度NULLprimarykeybookid图书编号numeric8no是ISBNISBN书号char30yesbookclass图书分类代码numeric8yestitle书名charyespublishdate出版日期dateyesauthor作者char16yesWords字数integeryespublisher出版社名称numeric30yesnumber印刷册数integeryesprice定价moneyyeskeywords关键字char30yesabstract摘要vchar400yes表P.2 bookclass字段名意义数据类型宽度NULLprimarykeyclassID图书分类代码numeric8no是classname图书分类名称char30yes表P.3 publisherinfo字段名意义数据类型宽度NULLprimarykeypublisher出版社名称char30yesaddress出版社地址char50yestel电话char16yespublisherid出版社IDnumeric4no是fax传真char16yespostcode邮政编码numeric6yeshttp网址char16yes表P.4 loan字段名意义数据类型宽度NULLprimarykeybookid图书编号numeric8no是Stud_id学生号numeric8no是loandate借书日期dateyesloanruturn还书日期dateyesfine罚金moneyyesdelflag删除标志tinyintyes3.系统窗口设计和代码编写(1)系统登录窗口(w_login)给确认命令按钮cb_1的事件clicked编写代码:setpointer(hourglass!)if parent.wf_connect(sle_userid.text,sle_password.text)=-1 thenmessagebox(连接数据库错误!,连接失败+sqlca.sqlerrtext)haltelseopen(w_main)close(parent)end if给返回命令按钮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_的事件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=12gr_1.rotation=10gr_1.spacing=150gr_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编写代码:string ls_titlels_title=trim(sle_1.text)if not ls_title=thendw_1.retrieve(ls_title)elsemessagebox(数据不全!,请输入要查询的书名!)end ifsle_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编写代码:long ll_bookid,ll_publishid,ll_idate ld_publishdatestring ls_ISBN,ls_title,ls_author,ls_keywords,ls_words,ls_number,ls_priceif sle_1.text= or isnull(sle_1.text) thenmessagebox(缺少数据,请输入图书编号)sle_1.setfocus()returnelseif sle_3.text= or isnull(sle_3.text) then messagebox(缺少数据,请输入书名) sle_3.setfocus() return end ifif sle_4.text and not isnull(sle_4) thenif isdate(sle_4.text) thenld_publishdate=date(sle_4.text)else messagebox(输入数据错误,请使用“年月日”的日期格式) sle_4.setfocus() returnend ifend ifll_bookid=long(sle_1.text)select tsgl.bookidinto:ll_ifrom tsglwhere tsgl.bookid=:ll_bookid;if ll_i0 thenmessagebox(错误信息,图书编号第+string(ll_i)+号重号!请更正。)sle_1.setfocus()returnend ifls_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)insert into 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编写代码:string ls_titlels_title=trim(sle_1.text)if not ls_title=thendw_1.retrieve(ls_title)elsemessagebox(数据不全!,请输入要查询的书名!)end ifsle_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编写代码:long rowrow=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编写代码:string ls_bookidls_bookid=trim(sle_2.text)if not ls_bookid=then dw_1.retrieve(ls_bookid)else messagebox(数据不全!,请输入图书编号!)end ifsle_2.setfocus()long rowrow=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编写代码:string ls_bookidls_bookid=trim(sle_2.text)if not ls_bookid=then dw_1.retrieve(ls_bookid)else messagebox(数据不全!,请输入图书编号!)end ifsle_2.setfocus()long rowrow=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代码:string ls_authorls_author=trim(sle_1.text)if not ls_author= thendw_1.retrieve(ls_author)elsemessagebox(数据不全!,请输入作者的姓名!)end ifsle_1.setfocus()按出版日期“查询”的事件clicked代码:string ls_start,ls_enddate ld_start,ld_endif isdate(sle_2.text) then if isdate(sle_3.text)then ld_start=date(sle_2.text) ld_end=date(sle_3.text) dw_2.retrieve(ld_start,ld_end)elsemessagebox(数据错误,请重新输入结束时间!)end ifelsemessagebox(数据错误,请重新输入开始时间!)end ifsle_2.setfocus()按出版社名称“查询”的事件clicked代码:string ls_publisherls_publisher=trim(sle_4.text)if not ls_publisher= then dw_3.retrieve(ls_publisher)elsemessagebox(数据不全,请输入待查询的出版社名称!)end ifsl

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论