开发ERP软件应该遵守的22条规则
总结一下做管理软件,有哪些项是经过检验的条款,必须遵守的。
界面篇
1 要保存用户的偏号(profile/favourite)。 ASP.NET 2.0引入此功能,当用户修改默认的控件的属性时,框架应当保存用户的修改。显而易懂的例子是grid控件中的列顺序。用户修改之后,关闭窗体时,要可以保存起来,当用户再次打开时,应当加载用户上次的修改。
2 界面中的数据要有通一的导出方案。导出类型一般是Mircrosoft Excel, Microsoft Access, Text,CSV。Excel为第一需要考虑的导出格式。
3 半角全角输入转化。对于全角输入,应当转化为半角。全角半角长度不一样,但在界面中它的字符是一样的,应当默认的将用户全角的输入转化为半角。或是直接提示用户切换输入法,不允许全角输入。
4 使用标准的流行的报表开发技术和设计工具。自定义报表设计器很难控制稳定性,fyireport就是这样,即使有新功能也很难加入。再次,它的学习成本也比较高。推荐直接选择Crystal Report或是Reporting Services。
Crystal Report一直都没有大的改动,Reporting Services因为SQL Server昂贵的授权费用,因而产生了一些优秀的报表工具。但我仍然推荐用成熟的Crystal Report技术。
5 做好系统的三个门面窗体: Login, Splash,About。
登陆窗口的背景色要与主窗体一致,给用户的第一感觉的地方,要以稳重为主。我选择以微软网站的蓝色基调为主色。
Splash显示当前的程序的版本,授权用户信息。About对话框中显示license信息,以及客户服务联系方式。
6 界面中调用一项系统服务时,应该先检查它是否存在。比如即将显示报表界面,应当先检测报表服务是否存在,进行环境检测。运行事务时,应该先检测MSDTC服务是否已经启动。以.NET 4.5 为Target生成程序版本时,需要先检测.NET 4.5是否已经安装。
7 保持与服务器的连接,断线后要禁用用户输入。这需要引入心跳机制。
数据库篇
1 给每个日记帐表添加额外的五个字段。用来保存这笔记录的创建人,创建时间,最后修改时间,修改日期:
Created_By, Created_Date, Revised_By, Revised_Date
另一个字段是为维护数据(data fix)时,方便使用:添加一个自增列,identity(1,1) ,设置为每一个表的第一列。名字可以是RECNUM(record number), LineNO(line number) 等等。
2 统一的数据位数方案。比如
行号类: LineNo/EntryNo/RecordNo/Recnum 不显示小数点,
数量类:Qty/Quantity 6位小数
金额类:Amt/Amount 4位小数
3 对于通用的数据表,比如物料主档,客户主档,供应商主档,应该保守的留20个备用字段,以供客户填写自定义的信息。再完善的数据库字段,都有可能考虑不周到的地方。20个备用字段,应该可以满足大部分需求。
4 修改数据库排序规则,一般默认为USA标准的SQL_LATING_CP1_CI_AS。这样可以减少存储过程出错的机率。
另外,在安装SQL Server时,也要选取这个排序规则。
加密保护篇
1 用户登陆表中的密码,不能以明文保存。可以用盐或是MD5加密,或是可逆的加密,或是字符串混淆(比如给每个字符都加一定规则的字符串,到检测密码时,再反过来还原密码)。
2 提供几种方式的用户验证机制。认证类型:PASSWORD, DOMAIN。
传统的密码验证需要输入密码,如果改成域DOMAIN验证,不用输密码,根据当前用户直接登陆系统。
3 完善的license许可授权机制。虚拟机检测,硬件检测,过期时间检测,功能限制检测,试用版过期检测。
4 混淆.NET程序集,增加反编译难度。
程序开发篇
1 提供通用的跟踪机制解决方案。比如应有Debug.WriteLine输出跟踪信息,再截获这个输出,显示到log viewer程序中。或是应用UDP端口发送跟踪信息,再捕获显示到界面中。下面的代码可做参考
Trace.Listeners.Add(new TextWriterTraceListener("TextWriterOutput.log", "myListener"));
Trace.TraceInformation("Test message.");
// You must close or flush the trace to empty the output buffer.
Trace.Flush();
2 提供通用的附件管理功能。附件可以上传到数据库中,也可以直接保存一个路径引用。同时,需要写一个附件浏览器,可查看所有的带附件的功能的内容。
3 界面中Tab键的顺序要合理,遵守从上到下,从左到右的顺序。还可以做到Enter转成Tab,回车间转成Tab键。
4 源代码中,数字类型的值的格式要统一。0x开头的16进制,默认的是10进制。这两个格式应当统一。可以使用Windows 7的计算器功能实现快速修改一个16时制数为10时制数。
5 提供标准的数据操作功能。
数据存档(Archieve):可以把数据导出为EXCEL或是其它的格式
数据清理(Cleanup):可以清除数据表
数据再开始(Restart):只清除日记帐数据,而保留系统设置和主档数据
数据导入(Load): 从备份文件中加载数据,相当于导入数据。
6 界面上长时间的操作,要转成后台线程。界面中可以有BackgroundWorker,代码逻辑中,应该调用System.Threading.Thread的后台线程来计算。与此同时,界面中的光标也需要改变
this.Cursor=Cursors.WaitCursor;
...... long operation
this.Cursor=Cursors.Default;
7 经常留意代码效率改善方法,并把它应用到系统中。举例如下
1) 不要用string ax=”” 判断ax是否为空, ax.Length==0的效率高于ax==string.Emptyu 一般用as.IsNullorEmpty
2) 对于不改变的变量,用常量代替
3) 用Linq代替大量的foreach查询
4) MyType t=(MyType) t和t as MyType的效率比较
5) List<T>代替Array,Haset<T> ,Dictionary<K,V> 代替Hashtable
开发ERP软件应该遵守的22条规则的更多相关文章
- 总结开发ERP软件应遵循的一些基本原则
总结一下做管理软件,有哪些项是经过检验的条款,必须遵守的. 界面篇 1 要保存用户的偏号(profile/favourite). ASP.NET 2.0引入此功能,当用户修改默认的控件的属性时,框架 ...
- 2014年最热门的国人开发开源软件TOP100
2014年最热门的国人开发开源软件TOP100 不知道从什么时候开始,很多一说起国产好像就非常愤慨,其实大可不必.做开源中国六年有余,这六年时间国内的开源蓬勃发展,从一开始的使用到贡献,到推出自己很多 ...
- 推荐书籍 -《移动App测试的22条军规》
在今天的博文中,博主希望给大家分享一本博主同事黄勇的最新利作:<移动App测试的22条军规>.黄勇是ThoughtWorks资深敏捷QA和咨询师.对于我来说,和黄勇在一起的工作的这个项目, ...
- 2015 年最热门的国人开发开源软件 TOP 50
开源中国在 2015 年得到了快速的发展,单开源软件收藏量就接近 40000 款,其中不乏优质的国产开源项目.本文从软件的收藏.下载.访问等多角度挑选出了 2015 年最热门的国产开源软件前五十名,让 ...
- 使用 C# 开发智能手机软件:推箱子(十二)
这是"使用 C# 开发智能手机软件:推箱子"系列文章的第十二篇.在这篇文章中,介绍 Window/AboutDlg.cs 源程序文件. 这个源程序文件包括 AboutDlg 类,该 ...
- 使用 C# 开发智能手机软件:推箱子(二)
在上篇文章"使用 C# 开发智能手机软件:推箱子(一)"中.我对推箱子程序作了整体介绍.这次,我先介绍 Common/Fcl.cs 源程序文件. 1 using System; ...
- ARM开发工具软件命令具体解释---嵌入式回归第三篇
先从bootloader開始,由于临时眼下这些都会是裸机程序相关. 本人这里是VMwarm10.0上安装的红帽linux虚拟机.从以下的截图中能够看出 裸机开发流程: 这里先做第三步(第一步第二步已提 ...
- 使用 C# 开发智能手机软件:推箱子(十八)
这是"使用 C# 开发智能手机软件:推箱子" 系列文章的第十八篇.在这篇文章中.介绍 Window/SelectLevelDlg.cs 源程序文件. 这个源程序文件包括 Selec ...
- 【《Effective C#》提炼总结】提高Unity中C#代码质量的22条准则
引言 原则1尽可能地使用属性而不是可直接访问的数据成员 原则2偏向于使用运行时常量而不是编译时常量 原则3 推荐使用is 或as操作符而不是强制类型转换 原则4 推荐使用条件属性而不是if条件编译 原 ...
随机推荐
- Linux命令(2)- mv
mv 功能:可以用来移动文件或者将文件改名. 格式:mv [选项] 源文件或目录 目标文件或目录 说明:mv命令将文件重命名或将其移至一个新的目录中.第二个参数类型是文件时,mv命令完成文件重命名,此 ...
- Angularjs学习---angularjs环境搭建,ubuntu 12.04下安装nodejs、npm和karma
1.下载angularjs 进入其官网下载:https://angularjs.org/,建议下载最新版的:https://ajax.googleapis.com/ajax/libs/angular ...
- sd_cms置顶新闻,背景颜色突击显示
维护之前的一个客户网站,使用的是sd_cms系统,因为好久没有维护了,看到这网站的时候,真不敢相信,自己也曾做出过这样的网站. 客户要求置顶新闻始终在最上面,有背景颜色突击显示. 找到对应的代码,修改 ...
- spring expression
http://transcoder.baidu.com/from=1014517c/bd_page_type=1/ssid=0/uid=0/baiduid=C286FE95679B12426FD1A9 ...
- 【转】 全世界最短的IE判定
以前最短的IE判定借助于IE不支持垂直制表符的特性搞出来的. var ie = !+"\v1"; 仅仅需要7bytes!讲述外国人是如何把IE的判定从32 bytes一步步缩简成7 ...
- 根据UserAgent 获取操作系统名称
/// <summary> /// 根据 User Agent 获取操作系统名称 /// </summary> private sta ...
- 关于用CSS3画图形的一些思考
众所周知,用CSS3的圆角.转换可以画出各种不同的形状,制作不同的图案,早些前先驱者已画出经典的叮当猫,iphone手机等展示CSS3的强大实力,趁最近有空我也对CSS3进行了一些实践,颇有收获. 用 ...
- Registered Nurse in the US
注册护士移民美国的条件 美国护士RN考试介绍 美国注册护士考试复习 美国各州注册护士考试要求 CGFNS Registered nurse Top Paid Registered Nurses
- 做php网站后台开发,在Linux系统上进行更好吗?
1. PHP是开源软件,它在bsd/linux/win下都有很好的正式版及孪生版.并非开发php就必须要在linux下进行.主机服务商们习惯性的把asp与php分为两个主机系列几进行销售.由于asp只 ...
- 轻易实现基于linux或win运行的聊天服务端程序
对于不了解网络编程的开发人员来说,编写一个良好的服务端通讯程序是一件比较麻烦的事情.然而通过EC这个免费组件你可以非常简单地构建一个基于linux或win部署运行的网络服务程序.这种便利性完全得益于m ...