基于PowerBuilder开发的图书管理系统
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于PowerBuilder开发的图书管理系统相关的知识,希望对你有一定的参考价值。
基于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
以上是关于基于PowerBuilder开发的图书管理系统的主要内容,如果未能解决你的问题,请参考以下文章
基于SpringBoot 2.x开发的简易版图书管理系统(实现对图书的CRUD)
基于SpringBoot 2.x开发的简易版图书管理系统(实现对图书的CRUD)
基于Spring+SpringMVC+MyBatis开发书评网(十四)后台管理之新增图书信息 + 分页查询 + 更新图书信息 + 删除图书信息