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

随笔档案-2010年05月

走火入魔.NET从C/S单点登录到B/S系统的例子,SUID(System Unique Identification)

2010-05-30 19:14 by 通用C#系统架构, 2236 阅读, 收藏, 编辑
摘要: 这个是C/S里调用单点登录B/S的代码部分,实现单点登录,只需要一行代码就可以,怕别人看不懂,就把代码也抓了图贴上来了 阅读全文

大恶人吉日嘎拉之走火入魔闭门造车之.NET疯狂架构经验分享系列之(十二)多语言支持

2010-05-26 14:32 by 通用C#系统架构, 1793 阅读, 收藏, 编辑
摘要: 虽然平时很少接触老外的项目、也很少碰到老外,但往往赚大钱的人是经常跟老外做买卖的人居多,他们大多需要网站是全英文的,我们往往上手有一个成熟的中文的网站或者软件,例如成熟的B2C网上购物系统,但是没办法也没精力再做一个全英文的系统维护,只能让手上的项目既能支持中文也能支持多语言版本,还是维护一套程序比较可行一些,同时维护改进好几套程序,还是有点儿难度、工作量。 阅读全文

大恶人吉日嘎拉之走火入魔闭门造车之.NET疯狂架构经验分享系列之(十一)插件模式集成

2010-05-25 10:22 by 通用C#系统架构, 2156 阅读, 收藏, 编辑
摘要: 其实我们大多情况下,都不想了解细节,只是能用就可以了,例如我们买了一个菜刀,只是为了做饭时用用,而并不想关心制作菜单过程中的细节、甚至炼钢的细节等等,通用权限管理组件也是一样的道理,只是拿过来能用、好用就可以了。 下面的程序是已C/S插件模式运行的参考,做了一个最简单的主程序,然后在主程序里调用各权限组件的实际运行效果。 阅读全文

走火入魔权限管理系统、对多系统的集中权限管理配置实现参考

2010-05-23 12:28 by 通用C#系统架构, 1851 阅读, 收藏, 编辑
摘要: 用一个简单的B2C的网上商场来说,分了3个子系统实现的。 1)前台购物网站:实现用户在网站上购买商品的动作,与用户的交互部分。 2)后台配置管理网站:实现网站后台的商品管理、价格管理、订单管理等等管理配置功能部分。 3)系统配置管理工具:信息系统管理员用的,用来配置整个系统的权限配置,参数配置、数据字典管理功能部分。 阅读全文

2010年05月15-16日在宁波实施小额外贸网站B2C、商品展示网站心得体会总结

2010-05-20 09:31 by 通用C#系统架构, 1418 阅读, 收藏, 编辑
摘要: 把心得体会都写下来等带老了、再来看看 01:相对外贸行业、IT软件行业是穷光蛋了,大概在5年前,我就看那个老板开始创业,5年时间过去了,再看那个老板已经开了N多个公司、公司有N多车,还在宁波购买了4层楼的办公楼,当然是那种科技园区里的别墅一样的小办公楼,价值也有几百万的吧,整个员工也就20几号人员吧,相比之下,我们的老板有接近100个人的队伍,一年也没能盈利多少,我感觉老板平时也累得很,选一个好的行业投资、真的是太重要,比平时工作是否拼命努力,更重要一些,获取IT软件行业未来的前途应该还是光明的。 阅读全文

程序员需要更强的沟通协调能力-对普通员工、有效的沟通能力可能比技术能力更重要

2010-05-17 21:40 by 通用C#系统架构, 3925 阅读, 收藏, 编辑
摘要: 最近充分感受到,程序员的沟通交流能力,太重要了,甚至是比技术能力还重要,很多程序员都习惯与有问题不说出来闷在心里。 1:有些有难度的东西搞不定,也不跟领导讲一下 -- 不找同事问、不找技术领导问、自己闷头研究,好几天也弄不好;其实嘴巴一张、你身边就有寂寞高手闲着没事看新闻呢,你一问,人家其实也很容易给你露一手的,求求你了,大哥,你有问题能否问一下身边的人?这些人可都是过来人,很多经验都是有的呀。 阅读全文

完善《通用权限管理组件使用说明书V3.0.doc》,修正错别字、语句通顺、条理清晰化、能拿得出手,愿支付辛苦费

2010-05-16 17:16 by 通用C#系统架构, 2131 阅读, 收藏, 编辑
摘要: 这个文档,已经是前后修改了三遍,但是总感觉距离完美有一些距离,现在写得虽然还及格,但是还是有些水,总想做个彻底、能拿得出手的东西,大家值得阅读的参考资料。 自己没能力完善、就花钱找人来完善,找更专业的人来完善,希望能写出个像样的技术文档来,追求对阅读的人也是一种享受的境界。 阅读全文

第21章 典型业务案例应用

2010-05-13 13:11 by 通用C#系统架构, 2138 阅读, 收藏, 编辑
摘要: 21.1 文档管理 文档管理模块可以灵活管理公司的内部文档,可以进行添加、修改、删除、移动文档的操作,可以灵活组织文档目录,界面如下图。 阅读全文

10年磨一剑,软件编程走火入魔之:把简单的功能做个彻彻底底、把劳动成果重复利用

2010-05-11 23:06 by 通用C#系统架构, 24280 阅读, 收藏, 编辑

 

 

   十一休假,杭州西湖边逛了一圈只能用人山人海来形容,浙大紫金港校区也逛了一圈风景如画,建设得真不错很棒,假期就去了这2个地方,然后在家里陪老婆、看孩子、洗尿布、打了几局星际争霸,在网上接了一个B/S架构的内部管理类定制软件、淘宝上收了600元辛苦费后就开始行动了、现在把整个开发过程讲解分享如下文。

 

客户需求

   一个简单的项目管理信息的,添加、删除、编辑、查询等功能的实现,把大的框架做好就可以,细节他会自己完善好,想想也很简单的一样,本以为1天时间就足可以搞定了,结果足足干了3天才算竣工,由于客户也是软件开发人员,沟通起来也比较顺畅一些,否则可能不止需要3天了。

 

   项目虽然很小,但是由于跟我的主营方向是一致的,同时也想锻炼一下做项目的成熟程度有多高、有多快,所以也没嫌弃钱多钱少,开开心心就把这个项目开始启动了。项目虽然小但五脏俱全来形容了这个活儿了。

   很多必要的功能虽然在需求里没有提到,但是都是需要做好的,例如:

         01:系统的登录功能、这个是必然要有的。

         02:记住密码功能,而且是需要有加密功能的。

         03:退出系统的功能,总需要能安全退出系统的吧。

         04:用户管理功能,例如哪些用户才能登录到系统里来?

         05:用户修改密码功能,停用功能,设置密码功能等。

         06:用户可以访问那些菜单等?

         07:用户有哪些操作权限等?

         08:角色管理功能,用户角色关系功能,角色的权限功能。

         09:友善的菜单导航功能。

         10:没有权限的友善提示功能。

         11:附件的管理、上传、下载、删除等等。

         12:查询分页功能等等,虽然都没提出,但是这些功能都需要做好的。

 

 

整体开发思路

 

数据库分2个设计:业务数据 + 权限数据,互相不干扰,相互比较独立一些。

整个系统分3个种干系人: 开发人员 + 系统管理员 + 操作人员,他们对系统各自的期望值及操作的内容如下图。

为了快速搞定项目,毕竟项目的预算很有限,所有有些功能模块能不开发就不开发,那我们就用现成的成熟组件,通用权限管理系统,做为用户账户管理、权限管理

菜单管理的核心组件,这样可以大大的提高工作效率,可以灵活配置管理这个小型B/S项目信息管理系统了。

 

 

项目的具体开发制作步骤

 

步骤1:项目虽然很小,但是还是按规范的软件开发步骤比较好,我们还是本着先有设计后有开发的思路,先不急着写代码,我们先把数据库结构设计好,本系统应该只设计一个表就可以了,我们先要想好哪些数据用什么格式保存,都需要哪些字段来表示各种属性,效果图如下,我们用了数据库建模工具PowerDesigner,来设计我们的业务模型中的数据模型吧,这就是所谓的开发上的领域模型吧,其实这个设计还是蛮关键的,设计乱了后面都会乱套了。

 

步骤2:通过用设计好的模型,我们先手工建立相应的数据库及数据表。

 

步骤3:下图是已经建立好的数据的效果图,Project是业务数据库、Project表是项目信息表,后面的Base_Sequence 用于产生序列及唯一排序号、Base_Comment 用于修改记录保存功能,这些不用重复设计,直接从UserCenterV30数据中心里复制过来结构就可以了,为了在软件里显示一些数据出来,可以通过手工方式先录入一些演示数据,这样成就感会更多一些、信心也更足一些,因为很快就可以在软件里显示数据出来了。

 

步骤4:生成好相应的数据表后,可以用代码生成器生成一些没有多少商业逻辑的代码了,所谓的添加、删除、修改、查询的代码都不用写了,直接用代码生成器生成好就可以了,虽然这个技术不怎么先进,但是省事省心,对技术的要求也很低,生成好的代码也比较规范一些,而且还支持多种数据库,还是蛮好的,若生成好后,数据库结构有变化了,也没关系,重新生成一下就可以了,生成代码1分钟足够了,顶多是命名空间可能需要整理一些就可以了,属于是很经得起折腾的做法了。

 

步骤5:将生成好的代码,复制到相应的位置上,适当的修正一下命名空间什么的,因为是一个很小的项目,根本不用分层啥的,分那么多层也是多余的,其实分目录就足够可以了,若很懒惰的话目录都可以不用分了,分层其实更适合大型软件项目,小项目以见效最快为主,没必要搞个7-8个层,这里是是1个层也没分,只是分了一些目录,显得思路更清晰一些。

 

步骤6:代码生成器不能生成所有的代码,有些代码还是有商业逻辑的,需要人工编写,其中ProjectManager.cs 中的代码就是有具体商业逻辑的代码,这部分代码无法靠代码生成器自动生成好,需要按自己的需要进行编写的,这里有2个功能,一个是查询功能的实现、另一个是更新数据时需要有修改记录的功能,需要详细记录数据被变更的全过程,这些代码都需要人工编写好,页面上会调用这些代码。

 

步骤7:接下来该是规划整个系统的菜单的时候,需要好好规划一下软件的菜单,到底需要有哪些菜单,都叫什么名字?当然这一步也可以在在最后做,我们同通用权限管理组件可以灵活规划整个系统的菜单,基本上想怎么设置就怎么设置,想怎么托摘、想怎么排序都可以,规划菜单时会很爽,当然不只是开发人员用起来爽、而且系统管理员今后维护时也会很爽,系统的整个菜单都可以灵活配置权限、可以灵活更改,而不是写死的菜单,将来不依赖开发人员也可以灵活配置管理,灵活设置各种权限限制等等。

 

步骤8:接下来,需要把相应的添加、修改、查询、删除功能页面做出来,可以考虑到今后可能会扩展很多模块进来,所有目录规划得合理一些,说不定还要做人事管理、考勤管理、薪资管理、工作日志管理等等很多模块,其实都是大同小异而已,更多是技术是体现在细节功能及业务逻辑的深入程度上。

 

步骤9:菜单配置好,页面制作好后,就可以实现登录系统的页面了,当然这个也是用了现成的通用权限管理系统的登录页面,只需要制作一个登录界面,然后调用相应的登录API就可以了,自然就可以达到离职人员不能登录、没有权限的用户不能登录、停用账户不能登录,不能重复登录、限制登录的IP地址等等额外的其他功能都可以集成在里面了,开发人员也不用关心更多的细节,省心省事了。 

 

步骤10:登录好后,通用权限管理系统的底层API,自然会显示有权限的菜单,无权访问的菜单也不会出来了,哪个用户可以访问哪个菜单等等,都可以通过通用权限管理工具灵活配置管理,当然那个工具是给系统管理员、开发人员、实施人员使用的,并不是为了给普通业务操作员使用定位的。软件的最终运行效果就如下图了,由于是系统管理登录的所有菜单都能显示了,当然这里还需要一个成熟稳定的分页组件。

 

 

   底层代码生成器生成的代码,可能只占用这个系统的代码的 1/3左右,但是编写这些代码的时间也省了,整个开发过程不是可以节省1/3了,而且是纯体力劳动而已。整个权限管理等可能需要整个系统开发的1/3左右的精力,若这部分也不用开发了,又可以节省整个软件项目开发的1/3时间。整个框架的稳定完善,也可以说是占用整个软件开发项目的1/3时间是应该的,若是2手空空开始开发的话。

   那我们的项目采用了 代码生成器 + 数据库访问组件 + 通用权限组件 + 成熟的B/S开发框架 足足可以节省一个管理软件项目开发的 2/3 的开发时间,可以把精力全部放在另外的 1/3 的业务逻辑优化、界面细节优化上。

   这样也大大的降低了软件项目的开发的失败风险,谁说你不会在前面的2/3时间上失败呢?未必能走到后面的1/3时间上来啊,对吧。  

 

开发总结

 

  目前3天内搞定一个独立的内部管理系统,而且五脏俱全的是我从业10年左右的最快记录,当然若第二次做类似的东西,可能有希望2天内可以搞定了。

 

  经过多年的积累,手上才会有一个运行稳定、可以灵活配置的B/S开发架构,虽然看看都很简单,但是最起码不断完善几年后,才会达到铜墙铁壁的程度,我们经常会发现,开发一个小小的软件,往往1个月也开发不完,很可能是由于没有稳定的B/S开发架构导致的,这个架构也不是说技术,就是一个美观的整体效果良好的运行稳定的B/S系统吧,从头开发的B/S架构,由于需要调整很多细节环节、特别是页面、菜单的美观设计等上会耗费很多精力。

   有时候界面设计良好、程序思路严谨、用户交互效果好的B/S空框架也能卖出几万元,以前不能理解,现在是彻底能体会了,稳定的B/S架构的确可以值一些钱,因为是经过精雕细刻后才能形成最后的劳动成果的。

 

   软件的大体效果做到这里,大概花费了3天时间、接下来可能要花费的时间会更多,应该不止3天了,可能是30天,因为很多业务上的细节会耗费很多时间来调整,例如新增页面的先后输入的内容,页面输入的检查、页面的美观设计、光标的顺序优化、回车优化,输入内容的完善补充等等,查询页面的排序顺序优化、查询内容的先后顺序排版、表格中各列的宽度调整,一些提醒颜色的优化等等会有很多细节问题上还要耗费很久时间的, 做软件其实就是做细节,你需要有一个良好的B/S开发框架,否则全部自己弄,不知道什么时候才能弄好,有个良好的框架、再有良好的例子程序,整个管理系统,就是一个量的问题了,其次就是很多细节的优化上,会花费很多时间。

   

    有良好的稳定的B/S开发框架,前期工作只用了3天,若没有这个,从头开始做,可能30天也做不完,更不会把大多精力都花费在业务逻辑的细节优化上,可能更多的精力都耗费在B/S系统架构的稳定、优化上了,那这个软件的质量就更没保障了。

 

    有了稳定的B/S开发框架后,才好进行大规模生产、大量招聘人员做开发工作,若这些都没有,招聘来一大堆开发人员,那很可能局面就乱套了,大家就容易乱来了。

 

    ProjectManager.cs手工编写的商业逻辑代码如下:

代码
//------------------------------------------------------------
// All Rights Reserved , Copyright (C) 2010 , Jirisoft , Ltd .
//------------------------------------------------------------

using System;
using System.Data;
using System.Data.Common;
using System.Collections.Generic;

namespace Project
{
    
using DotNet.DbUtilities;
    
using DotNet.Manager;
    
using DotNet.Utilities;
    
using DotNet.Business;

    
/// <summary>
    
/// ProjectManager
    
/// 项目跟进表
    
///
    
/// 修改纪录
    
///
    
///        2010-09-28 版本:1.0 JiRiGaLa 创建主键。
    
///
    
/// 版本:1.0
    
///
    
/// <author>
    
///        <name>JiRiGaLa</name>
    
///        <date>2010-09-28</date>
    
/// </author>
    
/// </summary>
    public partial class ProjectManager : BaseManager, IBaseManager
    {
        
public DataTable Search(string userId, string searchValue)
        {
            
// 一、这里是开始进行动态SQL语句拼接,字段名、表明都进行了常量定义,表名字段名发生变化时,很容易就知道程序哪里都调用了这些。
            string sqlQuery = string.Empty;
            sqlQuery 
= " SELECT * "
                    
+ " FROM " + this.CurrentTableName
                    
+ " WHERE " + ProjectTable.FieldDeleteMark + " =  0 ";

            
// 二、我们认为 userId 这个查询条件是安全,不是人为输入的参数,所以直接进行了SQL语句拼接
            if (!String.IsNullOrEmpty(userId))
            {
                sqlQuery 
+= " AND " + ProjectTable.FieldCreateUserId + " = '" + userId + "'";
            }

            
// 三、这里是进行参数化的准备,因为是多个不确定的查询参数,所以用了List。
            List<DbParameter> dbParameters = new List<DbParameter>();

            
// 四、这里看查询条件是否为空
            searchValue = searchValue.Trim();
            
if (!String.IsNullOrEmpty(searchValue))
            {
                
// 五、这里是进行支持多种数据库的参数化查询
                sqlQuery += " AND (" + ProjectTable.FieldKeHuMingCheng + " LIKE " + DbHelper.GetParameter(ProjectTable.FieldKeHuMingCheng);
                sqlQuery 
+= " OR " + ProjectTable.FieldKeHuXiangMuMingCheng + " LIKE " + DbHelper.GetParameter(ProjectTable.FieldKeHuXiangMuMingCheng);
                sqlQuery 
+= " OR " + ProjectTable.FieldCreateUserRealname + " LIKE " + DbHelper.GetParameter(ProjectTable.FieldCreateUserRealname);
                sqlQuery 
+= " OR " + ProjectTable.FieldDescription + " LIKE " + DbHelper.GetParameter(ProjectTable.FieldDescription) + ")";

                
// 六、这里是判断,用户是否已经输入了%
                if (searchValue.IndexOf("%"< 0)
                {
                    searchValue 
= "%" + searchValue + "%";
                }

                
// 七、这里生成支持多数据库的参数
                dbParameters.Add(DbHelper.MakeInParam(ProjectTable.FieldKeHuMingCheng, searchValue));
                dbParameters.Add(DbHelper.MakeInParam(ProjectTable.FieldKeHuXiangMuMingCheng, searchValue));
                dbParameters.Add(DbHelper.MakeInParam(ProjectTable.FieldCreateUserRealname, searchValue));
                dbParameters.Add(DbHelper.MakeInParam(ProjectTable.FieldDescription, searchValue));
            }
            sqlQuery 
+= " ORDER BY " + ProjectTable.FieldSortCode + " DESC ";

            
// 八、这里是将List转换为数组,进行数据库查询
            return DbHelper.Fill(sqlQuery, dbParameters.ToArray());
        }
        
        
/// <summary>
        
/// 更新(带有修改记录功能)
        
/// </summary>
        
/// <param name="projectEntity">实体</param>
        
/// <param name="changeLog">修改记录</param>
        
/// <returns>影响行数</returns>
        public int Update(ProjectEntity projectEntity, bool changeLog)
        {
            
// 若不需要修改记录
            if (!changeLog)
            {
                
return this.UpdateEntity(projectEntity);
            }

            String changeMessage 
= String.Empty;

            
// 获取原来的数据
            ProjectEntity oldProjectEntity = this.GetEntity((int)projectEntity.Id);
            
if (oldProjectEntity.KeHuXiangMuMingCheng != projectEntity.KeHuXiangMuMingCheng)
            {
                changeMessage 
+= "客户项目名称被修改为:" + projectEntity.KeHuXiangMuMingCheng + " 原值:" + oldProjectEntity.KeHuXiangMuMingCheng + "<br>";
            }
            
if (oldProjectEntity.KeHuMingCheng != projectEntity.KeHuMingCheng)
            {
                changeMessage 
+= "客户名称被修改为:" + projectEntity.KeHuMingCheng + " 原值:" + oldProjectEntity.KeHuMingCheng + "<br>";
            }

            
if (oldProjectEntity.KaiGaiRiQi != projectEntity.KaiGaiRiQi)
            {
                
// changeMessage += "开改模日期被修改为:" + ((DateTime)projectEntity.KaiGaiRiQi).ToString(BaseSystemInfo.DateFormat) + " 原值:" + ((DateTime)oldProjectEntity.KaiGaiRiQi).ToString(BaseSystemInfo.DateFormat) + "<br>";
            }

            
if (!String.IsNullOrEmpty(changeMessage))
            {
                BaseCommentManager commentManager 
= new BaseCommentManager(this.DbHelper, this.UserInfo);
                commentManager.Add(
"工程管理", projectEntity.Id.ToString(), projectEntity.KeHuXiangMuMingCheng, changeMessage, false, String.Empty, falsethis.UserInfo.IPAddress);
            }

            
return this.UpdateEntity(projectEntity);
        }
    }
}

 

 

 

通用权限管理组件使用说明书

2010-05-11 22:04 by 通用C#系统架构, 1832 阅读, 收藏, 编辑
摘要: 整体数字化建设项目 通用权限管理组件 使用说明书 阅读全文

第6章 职员(员工)管理

2010-05-11 21:39 by 通用C#系统架构, 2409 阅读, 收藏, 编辑
摘要: 职员管理功能模块主要是对公司内部员工数据进行管理,有新建员工数据、更改员工信息、员工部门变更等等。 职员(员工)管理功能主要是为了用在企业内部信息化管理系统开发的,在人力资源管理系统中的可二次开发。 阅读全文

第5章 角色权限设置

2010-05-11 15:56 by 通用C#系统架构, 4062 阅读, 收藏, 编辑
摘要: 第5章 角色权限设置 基于角色的授权管理是最基本的权限管控体系,安全可控有多少重要?例如公司市值有500亿财富,但是信息系统不安全不可控,可能一夜之间就被黑客都转账走、被坏人转走了哭都来不及了。穷等叮当响想的时候买保险不是很重要,但是真有了绝大财富后安全可控比什么都重要,庞大核心信息系统的安全可控尤为重要,一定要用一个强 阅读全文

第1章 通用权限管理组件简介

2010-05-11 14:01 by 通用C#系统架构, 12294 阅读, 收藏, 编辑
摘要: 本软件模块的严谨设计定位、精心编码实现、不断维护推广、持续优化改进主要是为了做一个可以高度重复利用辛苦的劳动成果,并有偿提供给所需的人们,另想成为国人值得骄傲的知名软件功能模块,可供国内管理类开发人员在日常工作中进行灵活二次开发利用的模块,开发管理类软件的必备工具之一,同事本软件的系统架构可供广大业余兴趣爱好者模仿。 阅读全文

第24章 产品报价、技术支持、售后服务

2010-05-11 11:10 by 通用C#系统架构, 3518 阅读, 收藏, 编辑
摘要: 24.1 产品及服务报价 一)产品报价部分: 免费提供部分:网上发布的相关技术文章、例子代码、应用程序,案例分析等。 学习版(50元):核心源代码 + 数据库 + 数据库设计文档 + C\S配置程序源码 + B\S 简易例子程序,需要提供学生证复印件、针对大学在校大学生的优惠版, 不提供安装、实施服务,疑难问题解答等服务。 阅读全文

第4章 组织机构(部门)管理

2010-05-11 10:54 by 通用C#系统架构, 5949 阅读, 收藏, 编辑
摘要: 通俗的讲,就是一个集团公司,划分几个区域,每个区域都有什么分公司,每个分公司都有哪些部门一样,哪些部门又有那些子部门等。 当然也可以是外贸公司的全球性客户、合作伙伴的分布情况管理、或者是一个行政管理单位的按地区划分的行政机构的树型管理。 一般使用信息化系统的公司,大多是人数众多、地域分布相对广有异地分支机构的更迫切使用信息化管理系统,关键商业数据都需要依靠信息化技术及时进行沟通协调,提高办事效率。 阅读全文

第3章 用户(账户)管理

2010-05-11 09:33 by 通用C#系统架构, 4919 阅读, 收藏, 编辑
摘要: 用户(账户)管理模块主要由申请用户(账户)、用户(账户)审核、用户(账户)编辑、创建用户(账户)、设置用户(账户)密码、设置用户(账户)有效状态、删除用户(账户)等等功能部分组成。 阅读全文

第13章 序列(流水号)管理

2010-05-11 00:25 by 通用C#系统架构, 2821 阅读, 收藏, 编辑
摘要: 序列(流水号)管理菜单如下图,主要起多种数据库的兼容性主键生成、数据表的排序字段的生成、单据流水号生成功能等。 本系统的多数据库支持功能,主要是依靠了底层的序列生成器的兼容性主键思想来实现的,例如不同数据库的有不同的主键生成思想,例如Oracle数据库用序列功能产生主键的较多、SQLServer数据库用自增量做为主键的产生方法较多,但是这些方法都有一定的局限性、若遇到数据库移植问题,需要修改很多代码才能达到目的。 阅读全文

第12章 菜单权限项设置

2010-05-10 18:25 by 通用C#系统架构, 2911 阅读, 收藏, 编辑
摘要: 操作权限配置管理模块是本系统的核心模块,在此模块里进行操作权限的定义、配置、分类、管理等维护工作,可以在本模块进行操作权限添加、修改、删除、拖动、停用操作权限等功能,进入本模块的菜单如下图。 阅读全文

第10章 系统日志管理

2010-05-09 23:16 by 通用C#系统架构, 7468 阅读, 收藏, 编辑
摘要: 系统里的任何操作、任何的模块的访问、任何服务的调用,用户的登录情况等等都会被记录起来,方便日后追查之用。 若记录日志影响了系统的整体性能,不需要进行日志记录功能,可以在配置文件中设置开关选项,可以取消日志记录功能。 日常应用中,不建议去掉日志记录功能,日志管理模块主要由用户账户访问情况、按用户账户查询,按模块菜单查询,按日期查询等四个功能部分组成。 阅读全文

第14章 系统异常情况记录

2010-05-09 22:41 by 通用C#系统架构, 1844 阅读, 收藏, 编辑
摘要: 系统日常维护、管理配置、二次开发过程中发生的所有异常信息都会被进行记录,方便开发人员排查错误及修正错误时成为有力依据。 系统中发生的异常记录可以逐条打印清单、发送邮件给相关的开发人员、系统配置上线后,还可以进行统一的整理、清理工作,方便监控在日常使用过程中发生的异常情况。 阅读全文

第9章 数据字典(选项)管理

2010-05-09 22:16 by 通用C#系统架构, 5822 阅读, 收藏, 编辑
摘要: 数据字段(选项)管理模块主要是为了灵活控制整个系统中的可选项数据,可以按用户的习惯或者用户的个性化要求进行灵活配置管理。 同时这部分数据也可以在开发多种业务系统时有一定的重复利用价值,将数据导入到新的业务系统里重复利用,一些选项数据就不用重新反复录入了,可以提高新项目的开发实施速度。 阅读全文

第7章 内部通讯录

2010-05-09 20:53 by 通用C#系统架构, 2264 阅读, 收藏, 编辑
摘要: 我们经常会遇到找不到某个同事的联系方式或是某个新来同事的联系方式怎么也找不到,公司发放的通讯录里还有一些很早已离职人员的联系方式等。公司需要及时整理最新的内部通讯录,高效沟通协调,每次都人工更新通讯录一方面是工作效率低,另一方面这个工作也很繁琐、没有技术含量,重复性也多,经常有变动。 当进入一个公司后,往往不知道哪个是哪个,谁叫什么名字,谁是复杂哪个方面的?若有一个内部通讯录,可以比较轻易的看到哪个人的照片是什么样的?这个人又叫什么名字,这个人又是负责哪个方面的,那我们可以用更短的时间了解公司的人员结构,更快融入到公司工作当中。 阅读全文

第16章 修改密码

2010-05-09 17:05 by 通用C#系统架构, 1615 阅读, 收藏, 编辑
摘要: 第16章 修改密码 手机的快速进步,现在都是手机扫一扫,微信扫一扫,支付宝扫一扫的登录模式;或用手机号码 + 忘记密码发短信的方式进行认证了,时代在快速进步日新月异。 修改密码模块主要是对用户账户密码进行修改操作,在修改密码界面必须输入原密码、新设置的密码后按确定即可完成对密码的修改,若原密码输入错误将无法进行新密码的 阅读全文

第15章 关于本软件

2010-05-09 15:56 by 通用C#系统架构, 1609 阅读, 收藏, 编辑
摘要: 第15章 关于本软件 本功能主要是为了显示软件的版权信息内容,例如软件名称、版本号等信息。这些版权信息可以在相应的配置文件、源代码中进行配置修改;先有功能可作为开发者的参考,进行简单的修改达到重复利用的目的。 图15-1 关于本软件菜单 图15-2 软件版权信息 版权页面上点任意鼠标键就可以退出页面返回信息管理系统主页, 阅读全文

第18章 退出系统

2010-05-09 15:32 by 通用C#系统架构, 1375 阅读, 收藏, 编辑
摘要: 第18章 退出系统 退出系统后,应该更新用户的在线状态,已退出系统的用户设置为离线状态。每次退出系统时都进行提示确认,若客户觉得操作麻烦、还可以进行个性化的配置,直接退出系统不进行确认操作。 图18-1 退出系统菜单 点退出系统菜单,会弹出确认对话框。 图18-2 退出系统确认页面 默认情况下光标停留在选项“否(N)” 阅读全文

第17章 重新登录

2010-05-09 15:13 by 通用C#系统架构, 1475 阅读, 收藏, 编辑
摘要: 重新登录系统时,技术层面需要处理的事情主要有:用户的在线状态变化、用户的权限发生变化、用户的菜单显示方式会变化、用户的即时信息收发情况会发生变化,取消登录不应退出当前的信息管理系统应该返回原来操作员的操作界面。 阅读全文

第2章 登录系统

2010-05-08 21:06 by 通用C#系统架构, 5274 阅读, 收藏, 编辑
摘要: 很早的时候曾听别人说,印度软件公司中有些软件开发人员可能一直负责开发系统登录功能,当时觉得不就是一个登录系统的功能嘛?把用户名、密码输入好后按一下登录按钮不就可以了?哪里有什么那么多好做的功能?后来随着对管理软件的深入理解、接触过很多客户后才真正体会到,真正做好一个登录窗体也的确不是那么容易的事情,一个软件的质量是否好?设计开发者是否想得足够周到?行家从登录窗体上也能知道个一二。 阅读全文

软件编程走火入魔之:女人的脸,男人的代码

2010-05-08 19:42 by 通用C#系统架构, 1901 阅读, 收藏, 编辑
摘要: 程序员大多都是爷们,可能不大知道女人为了小脸蛋要投入多大精力和金钱(其中也有我们程序员辛苦Coding出的血汗钱)。她们每天又是如何精心在保养?如果你有女朋友、老婆了应该会很容易明白这个道理,通常在这么个小小的面积上投资的比重很大很大,就算名花有主了嫁人了也一样会持续精心养护。 阅读全文

软件公司的管理规范化了、编制都齐全了,一般小公司是承受不了的这么庞大的开支的

2010-05-07 13:33 by 通用C#系统架构, 2051 阅读, 收藏, 编辑
摘要: 1:上图中没有测试部门、质量保证部门(成果难积累、质量没保障的软件)。 2:上图没有客户服务部门(开发人员来提供服务、思路乱套、无法安心做开发)。 阅读全文

技术水平的确很高,正规公司为什么还是不录用这些人(注技术不好的更没戏)

2010-05-06 11:41 by 通用C#系统架构, 9543 阅读, 收藏, 编辑
摘要: 时间宝贵的、建议直接看评论,评论往往比文章更精彩!反对的、希望不要点击、阅读量过大导致总想写上几篇文章上来,不能怪总发表首页文章。 最近2个月公司一直在招聘.NET开发人员,接下来的一年里,公司也会一直招聘.NET开发人员,在这招聘过程中,也遇到了一些高手,的确是技术很过硬的高手,但是往往这些人,最终没有被公司录用,我简单的分析了原因,一下当参考用、未必是正确的。 阅读全文

程序员找老婆 -- 相亲节目引发的一点思绪

2010-05-03 22:55 by 通用C#系统架构, 2831 阅读, 收藏, 编辑
摘要: 最近国内的相亲节目都很火爆,杭州台的、湖南台的、江苏卫视的都很有意思我也经常看看,现在回想曾经“程序员找老婆真不容易”啊,包括我自己的找老婆经历也是颇有挫折。 杭州台的相亲才会赢节目相对看得比较多,其实很多女孩子都要求男孩子有个房子,不管再帅再有能耐,没房子,一般就不太容易成了、或者被动很多,社会还是很现实的、生活有很冷酷的一面。 阅读全文

2000W条数据的Oralce数据库SQL查询优化经验 - 机会总会留给有准备的人

2010-05-01 22:17 by 通用C#系统架构, 8385 阅读, 收藏, 编辑
摘要: 无论你写了什么、做了什么、别人都觉得你没啥的、写得不好、不深入,给你泼N多冷水,但是往往这些泼冷水的家伙往往大多是狗屁不是的家伙,甚至大多是马甲而已,有本事大家都多写写文章,用文章、用实力来证明写得更好就足可以让大家心服口服了。 阅读全文


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


微信扫一扫加好友



点击右上角即可分享
微信分享提示