`

开发ERP软件应该遵守的22条规则

阅读更多
原帖地址:http://www.cnblogs.com/JamesLi2015/archive/2013/06/17/3139664.html

总结一下做管理软件,有哪些项是经过检验的条款,必须遵守的。


界面篇


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();

 

<style><!--<br/>.csharpcode, .csharpcode pre<br/>{<br/>font-size: small;<br/>color: black;<br/>font-family: consolas, "Courier New", courier, monospace;<br/>background-color: #ffffff;<br/>/*white-space: pre;*/<br/>}<br/>.csharpcode pre { margin: 0em; }<br/>.csharpcode .rem { color: #008000; }<br/>.csharpcode .kwrd { color: #0000ff; }<br/>.csharpcode .str { color: #006080; }<br/>.csharpcode .op { color: #0000c0; }<br/>.csharpcode .preproc { color: #cc6633; }<br/>.csharpcode .asp { background-color: #ffff00; }<br/>.csharpcode .html { color: #800000; }<br/>.csharpcode .attr { color: #ff0000; }<br/>.csharpcode .alt <br/>{<br/>background-color: #f4f4f4;<br/>width: 100%;<br/>margin: 0em;<br/>}<br/>.csharpcode .lnum { color: #606060; }<br/>--></style>

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;

<style><!--<br/>.csharpcode, .csharpcode pre<br/>{<br/>font-size: small;<br/>color: black;<br/>font-family: consolas, "Courier New", courier, monospace;<br/>background-color: #ffffff;<br/>/*white-space: pre;*/<br/>}<br/>.csharpcode pre { margin: 0em; }<br/>.csharpcode .rem { color: #008000; }<br/>.csharpcode .kwrd { color: #0000ff; }<br/>.csharpcode .str { color: #006080; }<br/>.csharpcode .op { color: #0000c0; }<br/>.csharpcode .preproc { color: #cc6633; }<br/>.csharpcode .asp { background-color: #ffff00; }<br/>.csharpcode .html { color: #800000; }<br/>.csharpcode .attr { color: #ff0000; }<br/>.csharpcode .alt <br/>{<br/>background-color: #f4f4f4;<br/>width: 100%;<br/>margin: 0em;<br/>}<br/>.csharpcode .lnum { color: #606060; }<br/>--></style>

 


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


 




 


<style><!--<br/>.csharpcode, .csharpcode pre<br/>{<br/>font-size: small;<br/>color: black;<br/>font-family: consolas, "Courier New", courier, monospace;<br/>background-color: #ffffff;<br/>/*white-space: pre;*/<br/>}<br/>.csharpcode pre { margin: 0em; }<br/>.csharpcode .rem { color: #008000; }<br/>.csharpcode .kwrd { color: #0000ff; }<br/>.csharpcode .str { color: #006080; }<br/>.csharpcode .op { color: #0000c0; }<br/>.csharpcode .preproc { color: #cc6633; }<br/>.csharpcode .asp { background-color: #ffff00; }<br/>.csharpcode .html { color: #800000; }<br/>.csharpcode .attr { color: #ff0000; }<br/>.csharpcode .alt <br/>{<br/>background-color: #f4f4f4;<br/>width: 100%;<br/>margin: 0em;<br/>}<br/>.csharpcode .lnum { color: #606060; }<br/>--></style>

本文链接

分享到:
评论

相关推荐

    ERP沙盘模拟经营规则.pdf

    ERP沙盘模拟经营规则.pdf ERP沙盘模拟经营规则是企业沙盘模拟经营的规则和指导方针,本规则...ERP沙盘模拟经营规则是企业沙盘模拟经营的指导方针和规则,企业需要遵守这些规则,确保企业的沙盘模拟经营得以顺利进行。

    abap开发小规则和注意点

    ABAP 开发中有一些小规则和注意点需要遵守,以提高编程效率和代码质量。下面是 ABAP 开发中的一些小规则和注意点: 1. 在 REPORT 上面的注释中写创建人、创建时间、目的。 2. 锁定:所有表都是存放在透明表中,...

    《ERP沙盘模拟实训教程》第三章.pptx

    总的来说,ERP沙盘模拟实训强调了市场竞争的公平性和企业经营的策略性,通过模拟实际操作,帮助学习者理解如何在遵守规则的同时制定有效的市场策略,提升企业的竞争力。这不仅适用于理论学习,也对实际商业环境中的...

    注册管理软件

    例如,当公司推出新版本的软件或者针对不同客户群体提供不同功能的定制版软件时,系统可以自动根据预设规则生成相应的许可证,避免手动操作带来的繁琐和错误。 注册管理软件的主要特点可能包括: 1. **许可证管理*...

    erp生产实习总结.docx

    3. **学习市场规则与企业运营规则**:企业必须遵守市场规则,如市场划分、销售策略、生产线购置和维护、产品生产和原材料采购等。熟悉并掌握这些规则能够避免错误决策,例如在模拟中因不了解规则导致的未能及时购买...

    ERP程序撰写规范.pptx

    ERP程序撰写规范主要关注的是团队合作中的代码一致性、可读性和维护性。规范的主要目标是减少因编码风格差异带来的...在开发ERP程序时,遵循这些规范能有效减少错误,提高代码质量,从而提升整个项目的效率和成功率。

    沙盘运行器

    C++/C# 软件开发工程师 月薪15000 技术总监- 武汉 月薪30000 android 开发工程师 月薪20000 高级算法工程师 月薪30000 地图导航上市公司 产品经理 月薪20000 【上海斐讯数据】招聘JAVA工程师 【德邦物流】高薪诚聘 ...

    XX软件股份有限公司质量手册.doc

    手册详细规定了公司的质量管理政策、组织结构、职责分配、质量体系要素以及一系列相关流程,旨在提升软件开发、交付和服务的效率与可靠性。 质量手册首先介绍了公司的基本情况,沈阳东大阿尔派软件股份有限公司成立...

    Honeywell O5100SDK_v1.7

    在信息技术领域,软件开发工具包(SDK)是开发者的重要武器,它提供了构建应用程序所需的库、文档、示例代码和工具。Honeywell O5100SDK_v1.7正是这样一个针对Honeywell O5100数据采集器的SDK,为开发者提供了一个...

    电路OrCAD实习报告.doc

    OrCAD是一款广泛应用于电子设计自动化(EDA)领域的软件,由ORCAD公司开发,自八十年代末推出以来,因其强大的功能和广泛的应用范围,成为全球众多电子工程师的首选工具。这款软件主要包括Capture和PSpice两个主要...

    电信计费系统完整代码 -源码.zip

    在IT行业中,源码的公开通常用于学习、研究或二次开发,对于初学者和专业开发者来说都是宝贵的资源。 电信计费系统是电信运营商用来管理客户账单、计费和收费的关键组件。它涉及多个关键模块,包括用户管理、套餐...

    Configuring Siebel Business Applications

    - **自定义开发**:利用Siebel提供的开发工具进行二次开发,满足特定需求。 #### 五、美国政府权利条款 对于美国政府用户或代表美国政府使用的个人或机构,文档特别提到了适用的法律和规定。根据联邦采购条例(FAR...

    EDI最全面基础知识

    在描述中提到,EDI被应用于多种开发软件,如VC(Visual C++)、Delphi、VB(Visual Basic)和C#。这些是微软开发的编程环境,用于构建各种类型的应用程序,包括那些处理和实现EDI功能的系统。开发者可以利用这些工具...

    JDE产品成本核算和制造会计中文文档

    4. 知识产权的保护同样体现在对软件中所包含的第三方软件组件的说明中,例如GNU libgmp库、Adobe PDF库和DLInterface等,这些组件同样受其各自许可证的保护,并且用户需要遵守这些组件的使用条款。 5. 对于危险应用...

    EBS项目成本

    文档中还提到了软件的适用范围和限制,即该软件并不是为使用在任何可能造成人身伤害的内在危险性应用中而开发或打算的。这些信息表明,Oracle对于其产品的安全性和适用性有明确的说明和责任限制。 综上所述,Oracle...

    51报名管家weixin小程序

    "51报名管家微信小程序"是一款专为活动报名管理设计的应用程序,主要针对的是微信平台。这款小程序提供了全面的报名管理功能,使得组织者...同时,理解并遵守微信的开发规则,能够确保小程序顺利上线并提供优质服务。

    企业微信服务商教案文档.zip

    - API接口:企业微信提供了丰富的API接口,允许服务商进行二次开发,实现个性化功能集成,如自定义菜单、消息推送等。 - 开发环境搭建:学习如何配置开发环境,包括获取开发者密钥、设置回调域名等步骤。 - SDK...

    银行信贷管理系统详细设计说明书.doc

    * 银行信贷管理系统中的模块命名需要遵守相关的命名规则,例如使用英文缩写、使用数字编号等。 模块汇总: * 银行信贷管理系统中的模块包括贷款管理模块、信用卡管理模块、存款管理模块等。 * 模块汇总表可以用来...

    ANSYS SPEOS 法规库

    ANSYS SPEOS是一款高级光学仿真软件,广泛应用于汽车、建筑、照明、电子等行业,用于模拟光照效果、热辐射以及视觉舒适度等。该软件的强大功能之一是其内置的法规库,这使得用户在进行设计时能够确保符合各种国家和...

Global site tag (gtag.js) - Google Analytics