本项目采用PowerBuilder12.6作为IDE,PowerBuilder(简称PB)是一种快速应用程序开发工具(RAD),和Delphi、Visual Basic齐名。
(资料图)
本项目开发的图书管理系统可以作为演示系统,或者作为一个PB入门项目,用于PB练手或者老项目维护时对PB的温习。
gitee开放源码地址为:https://gitee.com/radarfyh/library_manager.git
本项目用于演示,系统需求说明书暂时不编写。
系统采用C/S架构,Server采用Oracle数据库,Client采用PB提供的Window和DataWindow对象。总体业务架构设计如下图:
oracle数据库的安装请参考如下文章:完美方案:win7/win10下正确安装oracle 10g
Oracle数据库管理系统可以采用10g或者11g,这两个版本有何区别,请参考如下文章:Oracle 10g和11g比较
总体设计说明书暂时不编写。
数据库建模采用ER方法,实体划分:用户、图书,图书分类操作结果单独设计一个关系:图书分类,用户和图书的关系形成借还记录。
(1)数据库逻辑设计(采用PowerDesigner工具)如下图:
(2)数据库物理设计(采用PowerDesigner工具)如下图:
PB访问Oracle数据库采用OCI接口,如果PB连接Oracle数据库出现问题,请参考如下文章试试:32位IDE访问Oracle 数据库错误的解决
数据库设计说明书暂时不编写。
(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关键属性设置参见源代码,不在此列出。
PB支持可视化窗口界面设计,这是他能快速开发应用程序的原因之一。下图是窗口设计总图:
具体设计参见源码。
PB是事件驱动的,所以几乎所有代码都在控件的事件中。具体事件的代码编写参见源码,其中有详细的注释。
执行后主界面如下图:
分类管理界面如下图:
用户管理界面如下图:
图书管理界面如下图:
借书管理界面如下图:
记录查询界面如下图:
关于界面如下图:
gitee开放源码地址为:https://gitee.com/radarfyh/library_manager.git