权限管理、用户权限系统、开源用户权限系统、信息化建设标准基础数据管理平台
代码改变世界

(15) 常用管理类软件需求征集 -- 通用菜单模块管理

2009-09-02 15:07  通用C#系统架构  阅读(4147)  评论(29编辑  收藏  举报

开发大型管理类软件项目时,经常会遇到庞大的菜单项的管理,例如我们现在开发的项目里,菜单项大概有400-500个以上,我们经常会需要:

1。要增加一个菜单项
2。要删除一个菜单项
3。要修改一个菜单项的名称
4。经常要菜单项的先后顺序要改变
5。菜单项要移动到其他菜单下的子菜单里
6。导出数据给客户看菜单的布局等
7。某些菜单是公开,所有用户都可以访问。
8。停用暂时某些菜单项,过段时间再开放。

虽然这些工作不是天天发生,但是自己维护数据库,看密密麻麻的一大堆数据,真的是会眼花缭乱,当只有50个以内的菜单新项,你通过直接维护数据里的数据,想怎么弄就可以怎么弄是可以的,但是数据有500个以上的数据,你想怎么折腾就像怎么折腾就很困难了,想随心所欲修改数据,维护数据就变得蛮困难了。

我们经常也会发现,某些菜单是公开的,就是所有的用户都可以访问的,有些菜单是有相应权限的人才可以访问,有些菜单也需要临时停用,可能开发好了,才启用,也不能是删除了,再恢复过来也很折腾,所以有一个类似是否生效的功能。

下图是密密麻麻的数据库里的数据,大概有500多条记录,顺序也是很乱的,因为菜单也不是一次性能成行的,不断的修改、增加、减少、移动最后才形成了500多个菜单项,你把这些数据想按理想化的维护,是很痛苦的事情了。


下图是我的后台C\S管理工具,我所有的应用程序都用这个一个后台进行统一配置管理设定权限等,可以开发不同的B\S的项目,原因是C\S的开发效率高,调试也方便,还有集成了系统报警信息的提醒功能等,还有简易的内部即时通讯工具。


后台管理工具里集成了一个简易的即时通讯工具、有报警消息即时提醒功能,也可以显示用户的在线状态,这个功能模块也很稳定,测试了很多次,在网络不稳定时,网络带宽很低时,也不会出现错误,程序都进行了优化,功能比较稳定成熟。
这个后台管理工具特别适合在公司内部使用,是按公司的组织机构显示用户,想找哪个部门的谁,沟通什么事情等很方便。


这个是我的菜单管理工具,我一般习惯性的叫“模块管理”,总觉得说是菜单管理有把范围限定得太小的感觉,可以对模块的顺序调整,不是自己手工输入排序码的那种,那种太笨了,不友善,我不喜欢,我觉得菜单的顺序不能调整,那会搞死人的,还是由按钮来控制排序顺序是很方便的,当然能支持拖动是最理想的,我技术能力还没能打到那个境界。


下面解图是编辑状态时的效果,按ESC就可以退出,我很重视键盘操作,这些常用的功能,一定要注意,不是非要点关闭,点退出才能退出窗体,那太笨重了,我的窗体也一般支持回车换行的功能,因为毕竟是是国产软件,应该符合大部分用户的习惯比较好,我们都习惯了回车换行。


这个是右键快捷菜单功能项目,这个还是蛮有必要的,操作起来会更简便一些,当然我的程序一般都支持拖动功能,树型机构上的数据都支持拖动功能。



模块配置功能就是让系统里的哪些模块生效,那些模块停用的功能设置部分。
 

下图是在B\S项目中的运行效果图


也没有什么过多的管理思想,就是把一个菜单模块表维护好,想怎么折腾就怎么折腾,这个模块涉及到的表也很少,如下图
我有自己配套的代码生成器,可以快速生成设计好的模型的相关代码,这样写程序也更快捷一些。


此功能模块的难点:
1。数据量比较庞大时,软件的运行速度一定要快,不能太慢。
2。数据的灵活排序问题解决。
3。移动菜单项时的逻辑判断。
4。树型机构的导航功能的窗体的代码的量很大,需要相应的页面操作逻辑处理的代码比较多。
5。即时通讯工具又跟其他很多模块集成在一起,运行又很稳定,一般菜鸟也是搞不定的。
6。开发一个稳定的即时通讯小软件,也是不是那么容易的,需要熟练的C\S开发经验。
7。模块管理是一个独立的部分,又需要受权限控制等的约束,这些都需要写得又合理又清晰。

我的观点:
我们什么都会,但是需要什么,想要什么都需要花时间去在去弄,别人弄的都不放心,别人写的程序质量不行,要么运行不稳定,要么效率不高,要么数据库设计得不合理,要么功能定位不正确,要么某些细节处理得不好,用起来不方便,要么就是界面态丑陋,代码太乱不好维护。

若真的是一个很菜的功能,或者是很一般的东西,我也不敢叫卖,我有时候会想,我做了10年开发,我什么东西可以为别人服务?我能做什么?我天天做开发,当然是我软件开发中遇到的问题,解决的问题,有提供给别人帮助的可能性,有变成产品化软件的希望,虽然大家没有消费工具类软件,消费组件类软件的习惯,大家的产品也不能得到别人的信任的情况下,我还是需要继续走这条不归路,一直努力,早晚会得到大家的认可的。别的我也不懂行,也干不了,只能把这条道走到黑了。

欢迎大家指点批评。



C# ASP.NET 通用权限设计、通用权限管理、通用权限组件、单点登录、集中式权限管理、统一授权体系、分级管理分级授权


微信扫一扫加好友