基于PowerBuilder开发的图书管理系统

2022-12-20 10:23:21 来源:51CTO博客

基于PowerBuilder开发的图书管理系统


前言

本项目采用PowerBuilder12.6作为IDE,PowerBuilder(简称PB)是一种快速应用程序开发工具(RAD),和Delphi、Visual Basic齐名。


(资料图)

本项目开发的图书管理系统可以作为演示系统,或者作为一个PB入门项目,用于PB练手或者老项目维护时对PB的温习。

gitee开放源码地址为:​​​https://gitee.com/radarfyh/library_manager.git​​


1. 需求说明

总体需求用于管理小型图书馆或者图书室,图书管理员能够使用本系统维护用户,对图书分类和入库,并提供借还操作用户管理提供增删改查功能分类管理提供图书分类的增删改查功能图书管理提供图书的入库、出库、查询等功能借书管理提供用户对图书的借还操作、查询功能

本项目用于演示,系统需求说明书暂时不编写。


2. 系统设计

系统采用C/S架构,Server采用Oracle数据库,Client采用PB提供的Window和DataWindow对象。总体业务架构设计如下图:

oracle数据库的安装请参考如下文章:​​​完美方案:win7/win10下正确安装oracle 10g​​

Oracle数据库管理系统可以采用10g或者11g,这两个版本有何区别,请参考如下文章:​​​Oracle 10g和11g比较​​

总体设计说明书暂时不编写。


3. 数据库设计

数据库建模采用ER方法,实体划分:用户、图书,图书分类操作结果单独设计一个关系:图书分类,用户和图书的关系形成借还记录。

(1)数据库逻辑设计(采用PowerDesigner工具)如下图:

(2)数据库物理设计(采用PowerDesigner工具)如下图:

PB访问Oracle数据库采用OCI接口,如果PB连接Oracle数据库出现问题,请参考如下文章试试:​​​32位IDE访问Oracle 数据库错误的解决​​

数据库设计说明书暂时不编写。


4. 数据库脚本和数窗设计

(1)数据库脚本导出和修改

使用PowerDesigner可以导出Oracle脚本,导出之前需要做如下设置,注意我使用Oracle 11g,所以下面假定使用11g。

选择菜单“Change current DBMS ...”,打开change the target dbms窗口,在其中设置目标数据库为oracle 11g,如下图:选择菜单“Edit Current DBMS ...”,在General选项卡的左边树中选择Oracle Version 11G-->Script-->Sql-->Format-->CaseSensitivityUsingQuote,然后点选No,如下图:选择菜单“Generate Database...”,在General选项卡中设置脚本文件导出文件夹和名称,最后点确定就会导出SQL建库脚本,如下图:

导出的SQL脚本没有表空间、用户、授权脚本,需要加上。索引、非空列、默认值、主键、外键均需检查是否正确,再增加一些测试记录,形成最终的脚本放在SQL目录下。

(2)数窗设计

本项目采用PB作为IDE,中间层采用DataWindow(简称:数窗或者DW),DataWindow是PB提供的中间层对象,作为数据库和窗口之间的联系纽带。数窗设计如下:

dw_type 分类管理对象

浏览编辑图书分类记录,如下图:

关键属性包括:Freeform风格、QuickSelect数据源、选择t_type表的所有列、ID升序排列、边框样式采用ShadowBox。

dw_book 图书管理对象

浏览编辑图书记录,如下图:

关键属性包括:Grid 风格、QuickSelect数据源、选择 t_book 表的所有列、不设排序、边框样式采用Raised、列标题背景为Button Face、typeid列的Style Type=DropDownDW、typeid列的DataWindow=dw_book_type、typeid列的Display Column=id、typeid列的Data Column=id、company列的属性和typeid列的属性类似设置。

还有两个子对象:dw_book_type,dw_book_company,前者(dw_book_type)用作图书分类列的数据源,如下图:

关键属性包括:Tabular 风格、QuickSelect数据源、选择t_type表的所有列、ID升序排列、边框样式采用ShadowBoxtype表的所有列、ID升序排列、边框样式采用ShadowBox。

后者(dw_book_company)用作出版社列的数据源,如下图:

关键属性包括:Tabular 风格、External数据源(外部数据源定义为ID/string/5和title/string/20,斜杠分隔的第一个数据是列名,第二个是数据类型,第三个是长度)、列标题背景为Button Face、列对象的Display ONLY属性值为TRUE、列对象的Show Focus Rectangle设为false。

dw_user 用户管理对象

浏览编辑用户记录,如下图:

关键属性包括:Freeform风格、QuickSelect数据源、选择t_user表的所有列、ID升序排列、边框样式采用ShadowBox。

dw_log 借还管理对象

记录借还操作,如下图:

关键属性设置参见源代码,不在此列出。

有两个子对象:dw_log_book 和 dw_log_user,前者(dw_log_book )用作图书单列的数据源,如下图:

其关键属性设置参见源代码,不在此列出。

后者(dw_log_user)用作用户单列的数据源,如下图:

dw_log_user关键属性设置参见源代码,不在此列出。

查询类对象包括:dw_query_user 和 dw_query_log前者(dw_query_user )用作用户查询选择,如下图:

注意这里需要创建一个query对象,命名为q_user,数据源就关联这个query对象,其他关键属性设置参见源代码,不在此列出。

后者(dw_query_log)用于选择指定用户的借书记录,如下图:

dw_query_log关键属性设置参见源代码,不在此列出。


5. 窗口设计

PB支持可视化窗口界面设计,这是他能快速开发应用程序的原因之一。下图是窗口设计总图:

具体设计参见源码。


6. 事件代码

PB是事件驱动的,所以几乎所有代码都在控件的事件中。具体事件的代码编写参见源码,其中有详细的注释。


7. 系统测试

执行后主界面如下图:

分类管理界面如下图:

用户管理界面如下图:

图书管理界面如下图:

借书管理界面如下图:

记录查询界面如下图:

关于界面如下图:


8. 开放源码

gitee开放源码地址为:​​https://gitee.com/radarfyh/library_manager.git​​

标签: 关键属性 边框样式 属性设置

上一篇:每日快播:vivo 推荐业务 x DeepRec:全链路优化实践
下一篇:环球热推荐:Go 实现线性查找算法和二分查找算法