稳定运行多年的系统架构(可用来学习或开发大型项目)
系统框架说明系统框架是非常重要的软件基础架构,它就如DELPHI一样提供了一个开发平台,在这个平台上可以开发出任意的数据库系统软件(如HR系统,ERP系统,进销存等等),架构封装了常用的功能于基类中,提供一个企业级系统所需要的所有功能(如身份验证,菜单注册,权限控制、动态菜单等等),拥有一套成熟稳定的框架即可以快速的开发出应用软件,能大大提高开发速度和软件稳定性。
本C/S软件架构利用面向对象编程的特性,把诸如权限控制,消息传送等技术放在基类窗体,然后所有窗体从基类继承,派生窗体加入各自独特的功能,如新增修改删除操作无须写一句代码,可以大大减少工作量,提高系统可维护性。运用此框架能实现快速开发任意数据库系统。
开发工具:DELPHI 7
数据库:SQL SERVER 2000
第三方控件:4个(一起赠送)
主界面:
本框架特性:
本框架EXE+DLL的组织方式,一个模块(如采购管理,库存管理等)编译成一个DLL,所有功能窗体都包含在里面,由主EXE调用,增加模块独立性,如某个模块有更新只需更新相应的DLL,方便发布更新,同时也减少了主程序的体积。
主程序跟DLL之间全部采用消息机制系,增强模块独立性,DLL与主程序共享链接,不管打开N个DLL都只有一个数据库链接。主程序与DLL共享全局数据,如登陆用户信息在主程序中设置好的在任一DLL窗体中都可以调用,方便开发者使用。
主程序的工具栏按扭是征对于所有窗体的可用,其状态根据当前窗体的权限而定,如打印和导出按扭根据当前用户是否有权限来决定灰色还是可用的。这样使系统更加专业化。
每一个窗体都保存了一个当前窗体的记录类型数据,此数据由初始化时设置,保存当前窗体对应的菜单编号,类名,窗体类型等等,方便用户知晓当前功能模块的信息。
所有窗体都由基类窗体BaseForm继承,由此派生出几种常用的窗体基类,如普通对话框窗体,普通子窗体,有表格子窗体,有固定列的窗体,编辑子窗体,查询子窗体等等,窗体要实现的基础功能都放在这些基类窗体,从而在开发时这些窗体的实例就无需写代码就可以实现所有基础功能,如所有数据的新增,修改,删除,导出等操作无须写一句代码,这样大大提高开发速度。
图1 窗体继续关系图
窗体表格采用cxGrid6.22控件,这套控件有以下优点:
1、 字段排序功能,有图样标识顺排或逆排
2、 单个或多个字段多个过滤值过滤,表格下会显示过滤条件描述,
3、 字段可以显示或隐藏(点击表格左上角)
4、 每个列可设置为固定列,多表头,设置各种汇总数据(求和,平均值,记录行数)等等,
5、 完整导出EXCEL,包括导出颜色,记录数等,在本框架此功能已封装在基类窗体了,实例窗体直接拥有这个功能。
权限设置:
1、 菜单显示权限:
系统只显示当前用户有打开权限的菜单,没有权限的菜单不会列出来。系统初始化时,根据这份权限表动态生成菜单。
2、 默认权限(参阅功能模块管理\新增菜单):
系统预设6个默认权限([新增],[修改],[删除],[审核],[导出EXECL],[打印]),用户新增一个菜单就自动添加这些默认权限,可根据当前窗体实际情况设置是否有这些权限,这样设计可以节省用户设计权限的时间。
图2
3、 用户扩展权限:
每个窗体的功能各式各样,不可能只有默认的6个权限,所以系统设计了可以由用户自定义权限,可增加任意多个权限,扩充系统功能。
图3
4、 部门权限:
系统DEMO是HR系统,每个用户可操作部门各不相同,这里可让用户设置可操作哪些部门。
5、用户组权限:
以组的形式来管理权限,当更新了某个组的权限后,其组内的所有用户就会马上更新权限,这样提高权限设置的效率。
拥有菜单和TreeView两种显示菜单的方式,由用户选择习惯的操作方式,两个控件都调用同一入口函数显示窗体。可以显示多级菜单。
登陆管理:
验证系统合法性,防止非法用户进入。输错三次(可设置)密码自动退出。
[更改密码]:
用户可以通过此界面更改自己的密码。
[用户权限管理]:
增加用户及修改单个用户资料及权限。为保障系统安全,此功能只对系统管理员可见
[用户组权限管理]:
编辑用户组资料,保存时可将权限更新到每个组内成员中去。为保障系统安全,此功能只对系统管理员可见
[登出系统]:
不退出系统的情况下换另一个用户登陆,相当于WINDOWS的注销
[系统锁定]:
当暂时有时离开桌面时,使用此功能使系统锁定状态,输入密码以后才能解开。
[已分配权限用户查询]:
界面列出所有功能菜单,点击某个菜单时右边表格会显示出此菜单已分配给哪些用户,这样可以非常清楚权限的分配情况。为保障系统安全,此功能只对系统管理员可见
菜单注册(功能模块管理):
此界面用于添加修改菜单,设置默认权限和自定义权限,当你新加一个功能窗体,在这里简单的加一个菜单注册,重启系统就可以看到。为保障系统安全,此功能只对系统管理员可见。
系统全局关联数据:
此功能使系统性能得到很大提升,系统初始化时将所有需用到的关联的数据一次性加载到本地数据集中,当需要使用关联数据(如工号关联带出姓名)的窗体,则直接使用这些内存中的数据,不用再从服务器取数据,减少服务器资源的消耗。
当关联数据有变动时,基础窗体会传送窗体给主程序,由主程序将全局关联数据集重新加载,这样保证数据是最新的,而哪些数据变动后会更新,则只需要菜单表里设置一下就可以了,其它的全部由基类窗体自动实现。
图1 系统启动时加载常用数据
动态报表:
系统经常要做各种报表,客户也可能按照自己要求定制报表,此功能提供了非常灵活的报表创建功能。此功能可以根据以下三种为数据来源:
1、 表:以表为数据来源,设置了以表名以后,可以自动带出所有字段,
2、 SQL语句:以SQL语句查询的数据为来源,设置了SQL语句以后,可以自动带出所有字段。
3、 存储过程:当上述两个值都为空,则取存储过程作为数据源,存储过程以“SP_DynamicReport_+报表编号” 为存储过程名。
你可以将某个字段作为查找条件,可以设置某个字段的关联属性(如:人事表的部门编号带出部门表的部门名称),当所有设置完后,点击菜单会自动创建窗体和所有控件,自动生成查询条件窗体,这一切都无须再写代码,不须生成PAS文件,大大提高开发速度,做出的软件也对客户具有较大的吸引力,因为这个功能让客户自定义报表。
动态编辑窗体:
系统经常需要编辑数据,此功能以完全自动的方式生成编辑窗体,只须要系统设置一下要编辑的表和字段,打开菜单就会自动生成窗体和所有编辑控件,用户可以在这些窗体上实现新增、修改、删除功能,本功能还可以设置某字段为非空字段,在保存前系统会进行非空检查。此项功能不用生成PAS文件,只须简单设置,这样可以提高开发速度。
自动生成窗体文件:
此功能与动态编辑窗体类似,区别在于这里会生成PAS/DFM文件,用户设置一个表后,根据字段名生成相应的控件,然后将PAS文件加入到工程中就可以看到窗体,也可以设置查找条件、非空、关联设置等,生成PAS文件是为了便于开发人员扩展功能。
标签式窗体(如下图):
此功能为本框架一大特色,一般的系统框架都是常规MDI窗体,打开N个子窗体后都只能看到当前一个窗体,不方便进行切换,而本框架每打开一个窗体会自动生成一个标签页,用户可以一目了然打开了几个窗体,当需要用到哪个窗体时,只需要点击该标签即可。此功能使用一个小技巧,实现方法很简单,并非将窗体画在PAGE上,查阅原代码即可知晓。
编辑窗体在不同编辑状态时(如新增或修改)会自动设置相应按扭的Enabled属性(如新增状态时删除按钮不可用等),这样使软件更加专业化。
每次用户登陆系统时都会记录在LOG表中,记录哪个用户什么时候登陆,哪台机登陆,如发生用户异常操作可即时查出。
系统消息通知功能:
系统中有许多需通知用户的消息,如有加班单须要用户审核,采购货物到货后都需要在系统中有提示信息,本框架提供了这个功能。系统录入数据将消息保存到数据库表,系统每隔几秒种去扫描消息表,查看有无新消息,有则在任务栏冒泡显示信息,当用户点击冒泡提示时会弹出消息列表窗体,双击某一条消息会弹出对应的窗体,这样的使用户操作更方便,软件更专业化。
消息采用分类的形式,每条消息都属于一个类别,每个类别对应打开一个窗体,而每条消息也可以自带属于本条消息的参数,这样既减少消息数据存储量也增加系统稳定性。
窗体打开时会调用本窗上次的审核人显示为默认,窗体保存时调用一个方法可以将审核保存到注册表中,方便下次显示。
(范例参阅加班申请/审核)。
所有表都有[创建用户],[创建时间],[更新用户],[更新时间]四个字段,当发现输入错误数据时可以即时发现是哪个用户输入的。而这四个字段是由框架自动赋值的,无须再写语句
批次录入数据
拥有批次数据一次插入的基类,继承这个类可实现快速插入成批数据的功能,如输入整个部门100人的加班单,按一般操作须录入100次,而继承这个窗体只须操作一次就即产生100条记录。大大提高录入速度。(参阅加班申请的添加多人)
报表管理
报表打印功能已集成在框架内,开发者只须在窗体上设置好一个报表,当窗体打开时框架会自动将报表列表加载到主程序界面按扭上,用户可以选择任一报表,点击后即弹出报表,此功能已封装好,无须开发者再写代码。
客户端自动更新
拥有自动更新功能,用户每次打开EXE是会检查系统文件有否更新,有则下载到本地再打开主程序,无则直接打开主程序。
常用菜单功能(相当于桌面):
每个用户可能拥有的功能有很多,可经常使用的功能就几个,本框架提供常用菜单功能,用户可某个菜单加入到常用菜单中,系统启动时会自动将常菜加载到TreeView中。
桌面导航功能
在架构桌面上定义流程图示,直接点击某个图示可进入对应的窗体。增加系统专业性。
记录操作用户操作LOG
用户对每一个界面的每一个动作(新增,修改,删除)都可以记录下来,写入一个LOG文件中(图2),方便以后责任追溯。此功能已由基类实现,无须再写代码。
用户还可以设置哪些窗体哪些动作须记录(图1),灵活设置。
图1
图2
试用版设计方法
如果软件发给用户试用就要做成试用版,本框架对启用日期进行加密,然后到期后即使用记更改日期,或重装程序也无法启动。
多国语言
系统拥有多国语言功能,在系统初始化将配置好的语言包列表列在登陆框上(图1),用户选择了哪个语言表就调用相应的资源自动替换,这工作框架会自动完成。用户只须设置语言包资源而。
系统中可用一个控件将每个界面的字串自动生成放在语言包里,大大减轻工作量。
图1
图2中文语言包
图3英文语言包
图4 语言包
万能通用查询对话框:
用户录入数据时可能不记得编号,只记得名称(如不记得工号,只记得姓名),此时就需要查询对话框帮助用户按名称来查询某条记录。
此功能在某个编辑控件按一下后弹出通用查询窗体,然后可以按某些关键字模糊查(图1),快速定位用户所需数据,大大提高查找录入速度。而且查询窗所需的数据,SQL语句则可以自由配置,开发人只需调且一个方法即可实现这些功能,里面的实现机制已由框架封装在基类了。
如果在查询框的数据不够齐全,需要增加,只需点击“编辑数据”按扭就可以打开相关窗体进行新增修改删除了。
图1通用查询对话框
高质量OOP的源码编写,每个过程都有文字说明,有表结构说明文档,参研源码可以学习到很多软件开发方面新的思想及实现方式。有很高的参考价值。每个功能点都提供了范例程序源码,加快开发人员理解框架操作。
此框架已稳定使用了几年,曾用此开发出十几套数据库软件,在各个企业内成功部署。
框架使用了几个第三方控件,购买时一并附送。
http://user.qzone.
我已做了DEMO操作录像,要的人先看一下,有购买意向请上Q详聊。
录像地址:http://www.
用户名:dinghello_132
密码:12345678
点击“更多功能”,“网盘”就可以看到下载文件了
qq: 864339754