1、PowerBuilder课程设计系 部: 专 业: 姓 名: 班 级: 学 号: 指导老师: 2011年6月课程设计摘要人工的图书管理都显得十分的落后而且效率低下,尤其在查询方面效率低。为了适应现代化的环境,许多的管理事务都由电脑来管理,从而提高了管理的速率。本次设计就是针对现存以上的各种缺点,将在现有的管理软件的基础上作很大程度的改善,使图书管理系统能够快捷的实施一些管理功能。 基于 WINDOWS XP开发研制,该系统软件针对图书的服务范围及工作特点,设计了新书入库模块、旧书报废模块、图书检索模块、读者查询模块、读着注册模块、借书还书模块和等。它能使工作人员从繁重的工作中解脱出来,大大减轻
2、了工作量,减少人为的工作失误,全面提高图书的管理效率及服务质量。 该系统为单机版,相应的硬件设备也分为单机型的方案。适用于各个图书的信息管理。本系统基于好用、易用、美观的原则为用户定制了一套统一的人机界面。在此设计中,主要的技术有:PowerBuilder9.0的数据库应用,以及各控件的使用等。关键字:图书管理、WINDOWS XP、模块、PowerBuilder9.0的数据库应用。目录第一章 绪论31.1 概述31.1.1 设计思想31.1.2 系统需求分析31.2 数据库种类选择41.3 程序语言简4第二章 系统分析62.1 系统结构组成62.2 系统中各模块的功能6第三章 数据库设计83
3、.1 创建数据库83.2 连接数据库93.3 数据库中表的结构设计9第四章 系统设计114.1 界面的设计114.1.1 登录窗口的设计114.1.2 新书入库口界面设计124.1.3 旧书报废界面设计134.1.4 图书证注册界面设计134.1.5 图书证注销界面设计154.1.6 图书查询界面设计154.1.7 读者查询界面设计174.1.8 借阅管理界面设计184.1.9 还书管理界面设计204.2 菜单设计21第五章 总结及致谢22参考文献23第一章 绪论1.1 概述1.1.1 设计思想图书管理系统是以业务处理为基础,以客户为中心,以减少人力物力,提高工作效率为目标的信息系统,超越了传
4、统的图书管理系统概念,提高了运营水平、建立高效率工作效率。图书管理系统是整个图书办公系统的重要组成部分,具有快速查找图书和管理图书,读着信息等功能。提供了读者管理,图书管理等自动化管理的功能,从而实现了图书管理的自动化。主要提供了读者图书证的办理、以及注销功能;图书的新书入库、旧书报废功能;图书的查询功能,包括按图书编号、按图书名称进行查询等;读者的查询功能,包括按读者证号、按读者姓名进行查询等;读者对图书的借阅和归还功能。图书管理系统应当具备以下基本性能:提供完善而方便的数据输入手段,以便全面、正确、及时地录入各种原始数 据,并将它们转化为系统所需要的形式。在录入过程中对数据的合法性进行必要
5、的校核,拒绝非法数据进入系统。屏幕输出应尽量满足使用者的要求,直观醒目,简单易学,界面友好清晰,合乎使用习惯。用户输入错误时能有相应的提示 。结构简单明了,层次清楚,便于管理,易于扩充。便于用户查找相关的图书信息,并查看相关图书信息的详细信息。1.1.2 系统需求分析图书管理系统是基于Windows操作系统基础上,通过对大量的图书馆管理系统的研究和分析并结合对图书信息管理进行分析提出来的。对原有图书信息管理的非图形界面操作以及原有功能不强的数据库系统的不稳定性、不可扩充性、难以移植等,原有系统功能覆盖面不广等缺陷相应提出了一些要求。1、系统以功能强大的Windows系列操作系统作为操作系统平台
6、,使其具备优良的可视化图形操作界面,大力提高系统的可操作性和交互性尽量减少操作员的负担,让他们更方便、更快捷、更简单的进行操作。2、提高系统的可维护性。系统的数据要求能随时进行备份与恢复,基于图书管理系统的局限性这里就不要求数据能与其他数据库进行交流(及共享数据)。1.2 数据库种类选择PowerBuilder是优秀的数据库前端开发工具,能与各种数据库相连接,可以与本地数据库相连,也可以与数据库服务器构成C/S体系结构,还可以与应用服务器,数据库服务器构成B/S体系结构。PowerBuilder作为一种数据库应用程序的开发工具,一般访问的是后台服务器上的大型数据库。但是PowerBuilder
7、自身也带有本地的数据库管理系统SYBASE SQL ANYWHERE,该数据库可以直接移植到网络环境下运行的其他数据库中,并且该系统创建简单,易学,而且可以与PowerBuilder运行在同一台计算机上,利用它我们可以创建本地的数据库,由于利用ODBC接口来实现应用程序和远程数据库或本地数据库的连接在操作上并没有太大的区别,所以本系统面利用PowerBuilder自带的数据库管理系统SYBASE SQL ANYWHERE来创建本地数据库。1.3 程序语言简介PowerBuilder是著名的数据库应用开发工具生产厂商PowerSoft公司推出的产品(PowerSoft现已被数据库厂商Sybase
8、所收购),它完全按照客户机/服务器体系结构研制设计,在客户机/服务器结构中,它使用在客户机中,作为数据库应用程序的开发工具而存在。由于PowerBuilder采用了面向对象和可视化技术,提供可视化的应用开发环境,使得我们利用PowerBuilder,可以方便快捷地开发出利用后台服务器中的数据和数据库管理系统的数据库应用程序。其主要特点如下: (1) 可视化、多特性的开发工具。全面支持Windows或WindowsNT所提供的控制、事件和函数。 PowerScript语言提供了几百个内部函数,并且具有一个面向对象的编译器和调试器,可以随时编译新增加的代码,带有完整的在线帮助和编程实例。 (2)功
9、能强大的面向对象技术。支持通过对类的定义来建立可视或不可视对象模型,同时支持所有面向对象编程技术。(3)支持高效的复杂应用程序。对基于Windows环境的应用程序提供了完备的支持,这些环境包括Windows、WindowsNT和WinOS/2。开发人员可以使用PowerBuilder内置的Watcom C/C+来定义、编译和调试一个类。 (4)企业数据库的连接能力。PowerBuilder的主要特色是DataWindow(数据窗口),通过DataWindow可以方便地对数据库进行各种操作,也可以处理各种报表,而无需编写SQL语句,可以直接与Sybase、SQLServer、Informix、O
10、racle等大型数据库连接。 (5)强大的查询、报表和图形功能。PowerBuilder提供的可视化查询生成器和多个表的快速选择器可以建立查询对象,并把查询结果作为各种报表的数据来源。 PowerBuilder主要适用于管理信息系统的开发,特别是客户机/服务器结构。PowerBuilder一个很大的特点就是提出了数据窗口对象的概念。数据窗口对象也是PowerBuilder中的一种对象类型,与其它对象不同的是数据窗口对象是专门为了访问后台的数据库服务的,在数据窗口对象中我们定义了数据的来源和数据的显示风格,这样在应用程序中我们就可以把精力完全放在程序的运行流程控制上,而不用关心具体数据的来源,因
11、为我们在数据窗口对象中已经定义好了数据的来源。如果需要使用数据库中不同的数据也只要对数据窗口对象进行修改就可以了。特别要指出的是PowerBuilder在数据窗口对象中提供了丰富的数据显示方式,可以满足各种不同需要。PowerBuilder是一种面向对象的开发工具,各种WINDOWS应用程序中常见的窗口、菜单、控件等在PowerBuilder中都是一个个的对象。在PowerBuilder中我们还可以创建自己的用户对象。特别要指出的是PowerBuilder提供了对面向对象方法中的各种技术的全面支持,我们可以利用面向对象方法中的对象的封装性、继承性、多态性等特点使得我们开发的应用程序具有极大的可
12、重用性和可扩展性,而这一点正是软件工程中对应用程序所提出的重要目标。PowerBuilder使用的编程语言叫做PowerScript,也是一种高级的,结构化的编程语言。PowerScript提供了一套完整的嵌入式SQL语句,开发人员可以像使用其它语句一样自由使用SQL语言,这样就大大增强了程序操纵和访问数据库的能力。可以说PowerBuilder既适合初学者快速学习数据库的开发,又可以让有经验的开发人员开发出功能强大的数据库,是一种适用面非常广的开发工具。第二章 系统分析2.1 系统结构组成本系统包含有登录窗口,主窗口这两个主要窗口,在主窗口中还包含管理窗口,操作窗口,系统窗口,查询窗口,关于
13、窗口等子窗口。其系统结构如下图所示:登录窗口主窗口(含菜单)自定查询条件操作窗口系统窗口查询窗口关于窗口管理窗口借书还书系统登录退出系统读者管理图书管理介绍本系统2.2 系统中各模块的功能(1)登录功能模块:用户登录,用户输入用户名和密码后才能登录系统;(2)管理窗口模块:主要包括读者管理和图书管理。图书管理中又包含新书入库和旧书报废的功能,在新书入库的模块中用户输入图书信息,可以将图书保存到数据库中,而旧书报废模块可以根据设置的条件,查询得到后从数据库中删除图书信息;读者管理中也包含两个模块,图书证办理和图书证注销这两个功能。(3)查询窗口模块:包含了图书查询和读者查询两个功能模块,图书查询
14、模块可以根据用户输入的条件信息,快速查找到满足条件的图书信息。同样读者查询也是一样的道理,也是根据用户输入的信息,快速查找读者信息。(4)操作窗口模块:本模块包含了借书管理和还书管理两个功能模块,借书管理模块用户可以查找到自己所需要的图书信息,然后在去借阅图书。还书管理模块是实现还书功能,更改数据库中相关表的信息。(5)关于窗口模块:主要包含了本系统的相关信息。第三章 数据库设计3.1 创建数据库1、在PowerBuilder主窗口中,选择系统工具条上的数据库图标,打开数据库【Database】窗口,以此单击【ODB ODBC】和【Utilities】左边的【+】号,使之展开,如下图所示:2、
15、选中【Create ASA Database】双击鼠标左键,弹出创建ASA数据库对话框,在【Database Name】文本框中输入数据库路径和文件名,在【User ID】中输入用户标识,默认为DBA,在【Log Name】文本框中输入日志文件名,单击【OK】按钮即可完成数据库的创建。如下图所示:3.2 连接数据库在Script的open事件中输入sql代码实现数据库的连接:SQLCA.DBMS = ODBCSQLCA.AutoCommit = FalseSQLCA.DBParm = ConnectString=DSN=图书管理系统;UID=DBA;PWD=sqlconnect using S
16、QLCA;/连接数据库if SQLCA.SQLCode0 then/检测连接MessageBox(错误,无法连接数据库,错误信息为:+String(SQLCA.SQLDBCode)+;+SQLCA.SQLErrText)Returnend if3.3 数据库中表的结构设计(1)用户表是用户登录表,用于存放用户名和密码,其结构如下表所示字段名类型说明用户名字符型管理员用户名密码字符型管理员密码(2)图书表是用于存放图书信息的表,其结构如下表所示字段名类型说明书号字符型主键书名字符型图书的名字 出版社字符型图书的出版社作者字符型图书的作者出版日期日期型图书的出版日期定价数值型图书的价格在库与否字符
17、型图书有没有在库(3)读者信息表,用于存放读者的个人信息,其结构如下表所示字段名类型说明读者编号字符型主键姓名字符型读者的姓名证件号码字符型读者的身份证号电话字符型读者的联系电话地址字符型读者的住址信息(4)借书还书表,用于存放借书还书的情况信息,其结构如下表所示字段名类型说明读者编号字符型主键书号字符型主键借书日期日期型借书的日期还书日期日期型还书的日期备注字符型图书是否归还第四章 系统设计4.1 界面的设计4.1.1 登录窗口的设计新建一个窗体文件,命名为w1,在窗体上拖放三个静态文本控件,两个单行编辑器,和两个命令按钮。其界面如下图所示:在登录按钮cb_1中编辑click()事件代码:s
18、tring pw,pw1pw=sle_2.textselect 密码 into :pw1 from 用户表 where 用户名=:sle_1.text;if sle_1.text= thenmessagebox(提示,用户名不能为空!)elseif sle_2.text= thenmessagebox(提示,密码不能为空!)elseif pw=pw1 thenopen(w2)close(parent)elsemessagebox(提示,用户名或密码错误)sle_1.text=sle_2.text=sle_1.setfocus()end if4.1.2 新书入库口界面设计新建一个窗体文件,命名为
19、rk,在窗体上拖放7个静态文本控件,6个单行编辑器,和两个命令按钮。其界面如下图所示:保存按钮的click()事件代码为:string sm,sh,cbs,zzdate cbrqdouble djsm=sle_2.textsh=sle_1.textcbs=sle_4.textzz=sle_3.textcbrq=date(sle_5.text)dj=double(sle_6.text)insert into 图书表(书名,书号,出版社,作者,出版日期,定价,在库与否)values(:sm,:sh,:cbs,:zz,:cbrq,:dj,是);if SQLCA.SQLCode=0 thenCOMMI
20、T;messagebox(提示!,图书入库完成!)ELSEROLLBACK;messagebox(提示!,图书入库失败!)END IF4.1.3 旧书报废界面设计新建一个窗体文件,命名为bf,在其窗体上拖放三个静态文本控件,两个单行编辑器,和一个命令按钮。其界面如下图所示:“报废”按钮的click()事件代码为:string lx,srlx=ddlb_1.textsr=sle_1.textif lx=按书号 thendelete from 图书表 where 图书表.书号=:sr;elseif lx=按书名 then delete from 图书表 where 图书表.书名=:sr;end i
21、f if SQLCA.SQLCode=0 thenCOMMIT;messagebox(提示!,图书报废完成!)ELSEROLLBACK;messagebox(提示!,图书报废失败!)END IF4.1.4 图书证注册界面设计新建一个窗体文件,命名为zc,在其窗体上拖放六个静态文本控件,五个单行编辑器,和两个命令按钮。其界面如下图所示:注册按钮的click()事件代码为:string dzbh,xm,zjh,dh,dzdzbh=sle_1.textxm=sle_2.textzjh=sle_3.textdh=sle_4.textdz=sle_5.textinsert into 读者信息表(读者编号
22、,姓名,证件号码,电话,地址)values(:dzbh,:xm,:zjh,:dh,:dz);if SQLCA.SQLCode=0 thenCOMMIT;messagebox(提示!,注册完成!)ELSEROLLBACK;messagebox(提示!,注册失败!)END IF取消按钮的click()事件代码为:sle_1.text=sle_2.text=sle_3.text=sle_4.text=sle_5.text=sle_1.setfocus()4.1.5 图书证注销界面设计新建一个窗体文件,命名为tushuzhengzhuxiao,在其窗体上拖放两个静态文本控件,一个单行编辑器,和一个命令
23、按钮。其界面如下图所示:注销按钮的click()事件代码为:string bhbh=sle_1.textdelete from 读者信息表 where 读者信息表.读者编号=:bh; if SQLCA.SQLCode=0 thenCOMMIT;messagebox(提示!,图书证注销完成!)ELSEROLLBACK;messagebox(提示!,图书证注销失败!)END IF4.1.6 图书查询界面设计新建一个窗体文件,命名为tushucx,在其窗体上拖放10个静态文本控件,一个单行编辑器,一个下拉列表框和一个命令按钮。其界面如下图所示:查询按钮的click()事件代码为:string lx,
24、srstring bookname,bookno,publish,writer,day,price,zkyflx=ddplb_1.textsr=sle_1.textif lx=按书名 thenselect 图书表.书名,图书表.书号,图书表.出版社,图书表.作者,图书表.出版日期,图书表.定价,图书表.在库与否into :bookname,:bookno,:publish,:writer,:day,:price,:zkyffrom 图书表where 图书表.书名=:sr;elseif lx=按书号 thenselect 图书表.书名,图书表.书号,图书表.出版社,图书表.作者,图书表.出版日期
25、,图书表.定价,图书表.在库与否into :bookname,:bookno, :publish,:writer,:day,:price,:zkyffrom 图书表where 图书表.书号=:sr;end if if SQLCA.SQLCode=0 thenst_4.text=书名:+booknamest_5.text=书号:+booknost_6.text=出版社:+publishst_7.text=作者:+writerst_8.text=出版日期:+dayst_9.text=定价:+pricest_10.text=在库与否:+zkyfCOMMIT;ELSEROLLBACK;messageb
26、ox(提示!,查询的信息不存在!)END IF4.1.7 读者查询界面设计新建一个窗体文件,命名为duzhcx,在其窗体上拖放八个静态文本控件,一个单行编辑器,一个下拉列表框和一个命令按钮。其界面如下图所示:读者查询按钮的click()事件代码为:string xz,pstring bh,name,no,dh,dzxz=ddplb_1.textp=sle_1.textif xz=按姓名 thenselect 读者信息表.读者编号,读者信息表.姓名,读者信息表.证件号码,读者信息表.电话,读者信息表.地址into :bh,:name,:no,:dh,:dzfrom 读者信息表where 姓名=:
27、p;elseif xz=按读者编号 thenselect 读者信息表.读者编号,读者信息表.姓名,读者信息表.证件号码,读者信息表.电话,读者信息表.地址into :bh,:name,:no,:dh,:dzfrom 读者信息表where 读者编号=:p;end if if SQLCA.SQLCode=0 thenst_4.text=读者编号:+bhst_5.text=姓名:+namest_6.text=证件号码:+nost_7.text=电话:+dhst_8.text=地址:+dzCOMMIT;ELSEROLLBACK;messagebox(提示!,查询的信息不存在!)END IF4.1.8
28、借阅管理界面设计新建一个窗体文件,命名为jygl,在其窗体上拖放十二个静态文本控件,五个单行编辑器和两个命令按钮。其界面如下图所示:借阅按钮的click()事件代码为:string bh,sh,bzdate jsrq,hsrqbh=sle_2.textsh=sle_3.textbz=未还jsrq=date(sle_4.text)hsrq=date(sle_5.text)insert into 借书还书表(读者编号,书号,借书日期,还书日期,备注) values(:bh,:sh,:jsrq,:hsrq,:bz); if SQLCA.SQLCode=0 thenCOMMIT;messagebox(
29、提示!,图书借阅成功!)ELSEROLLBACK;messagebox(提示!,图书借阅失败!)END IF查询按钮的click()事件代码为:string bookname,bookno,publish,writer,day,zkyf,srsr=sle_1.textselect 图书表.书名,图书表.书号,图书表.出版社,图书表.作者,图书表.出版日期,图书表.在库与否into :bookname,:bookno,:publish,:writer,:day,:zkyffrom 图书表where 图书表.书名=:sr;if SQLCA.SQLCode=0 thenst_3.text=书名:+b
30、ooknamest_4.text=书号:+booknost_5.text=出版社:+publishst_6.text=作者:+writerst_7.text=出版日期:+dayst_8.text=在库与否:+zkyfCOMMIT;ELSEROLLBACK;messagebox(提示!,查询的信息不存在!)END IF4.1.9 还书管理界面设计新建一个窗体文件,命名为hsgl,在其窗体上拖放三个静态文本控件,两个单行编辑器和一个命令按钮。其界面如下图所示:还书按钮的click()按钮的事件代码为:string bh,shbh=sle_1.textsh=sle_2.textupdate 借书还书
31、表set 备注=已还where 借书还书表.读者编号=:bh and 借书还书表.书号=:sh; if SQLCA.SQLCode=0 thenCOMMIT;messagebox(提示!,还书成功!)ELSEROLLBACK;messagebox(提示!,还书失败!)END IF4.2 菜单设计1、选择【file】菜单下的【new】命令,弹出创建对象窗口,选择【PB Object】选项卡,选中【Menu】图标,双击左键或单击【OK】按钮,即可创建一个菜单文件,命名为caidan。如下图所示:2、选中菜单名,右击弹出的快捷菜单中选择Insert Submenu Item 为菜单添加菜单项,然后再
32、为菜单设置子菜单项,其结构如下图所示:3、设置好菜单结构后,然后在设置各个菜单所对应的窗体对象,最后将该菜单添加到窗口W2上。第五章 总结及致谢一周的实训已经结束,在这次实训中我对PowerBuilder9有了更深的了解和认识也对这个学期学的知识得到巩固。在这次设计中,我涉及到了一个软件设计开发过程中的每一个环节,也正是这种全方位的接触,让我对一个软件的设计开发过程有了更深的了解。经过一个周的努力,虽然可以实现基本的功能,但是功能还不是很完善。管理员和普通用户的权限没有设置好,登陆后的功能还不够完善,有的地方效率不高,而且随着使用者的不同,系统的明朗度不够,所以系统的维护是非常重要的。还有就是
33、没有用户注册页面以及查询信息的显示,这也是本系统最欠缺的地方。由于学习PowerBuilder9时间不是很长,系统在设计过程中,难免存在不足之处。在程序结构上系统设计得还不够紧密,对一些问题,如数据库的设计上没有统一,造成部分数据冗余。其次,安全性上考虑不够仔细等等。虽然设计已接近尾声,但我想我的这个设计不会因为设计的结束而停止,在今后的学习中,再就这些问题进行完善,争取做出一个完全能够适应当前的图书管理系统。在整个毕业设计过程中,指导教师和同学给了我极大的帮助,并给予我悉心的关怀与指导,在此表示衷心地感谢。老师认真负责的工作态度、严谨的治学风格,使我深受启发。开发的同时,和同学们之间的相互探讨也使我获益匪浅,在开发工具的选择上,他给了我不少的指导,在此也表示衷心地感谢。参考文献【1】 费雅洁. PowerBuilder程序设计(第二版). 高等教育出版社. 2009【2】 朱爱民,柯建勋. PowerBuilder9.0与系统开发. 清华大学出版社. 2003【3】李卓玲. 数据库系统原理与应用. 电子工业出版社. 2001