2013年8月26日星期一

OA系统实践(一) 概述 - zs234

本邮件内容由第三方提供,如果您不想继续收到该邮件,可 点此退订
OA系统实践(一) 概述 - zs234  阅读原文»

从本篇博文开始,我为大家简单介绍一下办公自动化(Office Automation,简称OA)。


1、OA简介
OA是将现代办公和计算机网络的功能相结合的一种新型办公方式,是针对日常工作,改变传统手工办公效率低下现状的一种变革。


2、OA范围
OA的工作核心是提高日常的办公效率,因此我们日常工作的所有内容都可以归入OA处理的范畴,如:文字处理、文件誊写、传真、申请审批、办公用品、公文管理、会议管理、资料管理、档案管理、客户管理、订货销售,库存管理,生产计划,器材需求,技术管理,质量管理,成本、财务计算、劳资、人事管理等等,这些都是日常办公工作的处理范围。


3、OA发展
OA并不是一个新出现的事务,它也有自己的发展轨迹。通常我们认为OA的发展到目前位置经历了五个阶段:
1、个人办公阶段,即PC机加办公软件阶段。
2、资源共享阶段,即随局域网和关系型数据库出现的而实现文件共享、信息共享的阶段。
3、协同工作阶段,即以协同工作类软件为基础,以协同工作和知识管理为目标的办公自动化阶段
4、系统集成阶段,即将OA作为整个组织内部信息化建设的基础,将其与企业内各个业务系统进行集成,对数据进行集中处理的阶段。
5、移动办公阶段,即随着移动网络的发展,办公人员随时随地的使用OA进行办公的阶段。


虽然,我们认为OA经历了上述的五个阶段,但这五个阶段对于不同的企业和部分可能由于资金和需求的不同所处的阶段也不同,这一点大家一定要理解!


4、OA分类
不同行业、不同层次的人员对OA的看法和理解也各有不同。例如:
1、对于企业高层领导而言,OA是决策型办公系统。因为OA能够运用科学的数学模型,为企业领导提供正确决策参考和依据。
2、对于中层管理者而言,OA是管理型办公系统。因为OA能够增强管理层对组织的控制力,及时发现、解决问题,从而降低经营风险、减少差错、防止低效办公,把握业务进程,提高经营效率。
3、对于普通员工而言,OA是事务型办公系统。因为OA提供了良好的办公手段和环境,不需要走传统繁琐的手工审批流程,一切关于公司流程化的工作都可以定位在OA系统,让系统自己来解决,能够使其准确、高效,愉快地工作。


尽管对于OA存在各种不同的理解,但人们普遍认为:OA能够完成除了生产控制之外的一切信息处理与管理的集合。


到此为止,我们关于OA概念上的描述就介绍完毕了,大家只需要简单了解一下就可以了。接下来我会做一个小型的OA系统,请继续关注!


本文链接:http://www.cnblogs.com/zs234/p/3284556.html,转载请注明。

C++ const && 二叉树合集 - Matrix_R  阅读原文»

话说昨天因为校园网的问题导致现在才发博文~唉,想吐槽~

这个是昨天写的,觉得,用来回顾还是很不错的,比较具体的都在笔记中,尤其我觉得里面经验性的东西还是不错的。

2013-8-26

今天在回顾我以前写的笔记,笔记时间应该是在大二。话说,现在我在实验室一边听着胡彦斌的《葬英雄》一边写着学习笔记~

看了以往的笔记,感觉,以前的字写的确实不怎么样,现在嘛,嘿嘿,也不怎么样。不过,感觉还是很不一样的。想想当初学习C++的辛苦,在看着现在写出来的程序,觉得自己还是进步了不少的。C++这门语言,应该算是最难学的语言了吧,我觉得汇编是比C++简单些的。

还有一点,对于一门语言是否精通,我觉得有个很简单的标准,简单的有点苛刻,就是,能否独立的制作这门语言的编译器。如果连编译器都做出来了,那绝对是精通的。你应该会认同吧?

回到正题。

之前在写一些模板类和函数的时候,经常会遇到因为函数参数使用了引用类型而导致不能传递常量参数的情况。这种情况,我当时还是觉得有点无解的。毕竟C++中引用的本质是常指针,也就是:type * const typename;作为指针,肯定是要指向某个变量的地址的,使用空指针和未初始化的指针要命的。但是今天看了我两年前的笔记,突然发现,C++对于常引用提供了很好的解决方法,就是声明一个const的引用参数,形式如下:

1 int testfunction(const int & n)
2
3 {
4
5 return n;
6
7 }

对于这样的函数,给n传递一个常数,比如10,是能够正常使用的。其原理,我没搞懂,一般来说,汇编指令中的常数一般是夹杂在指令码中的,而引用的本质是指针,唉,哪位大神明白其原理,还望指导一下。

另外其实有个事情我上个学期的时候意识到的一点就是,当一个函数参数使用了const声明的时候,是有多一重好处的,就是,能够同时允许使用常量以及变量。比如,字符串类的构造函数其参数就是这样的,声明为const类型后,就能够使用字符串常量以及指向字符串的指针,好用得很。当然了,const最本质的限制就是,不能对传递来的数据进行更改,但是这里我记着存在两种逻辑,EffectiveC++中讲过的。

刚才上面提到了使用我之前对于CString类制作的尝试,在这里我刚才想了半天,只记得是和C++的const成员函数相关,但是具体是什么忘记了。刚才在书翻了半天,找到了const成员函数这一块,一看,就想起来了。其实const成员函数,我个人觉得最主要的用途之一,其实是为类的const类型对象提供相应的方法。

书中给了这样的一个例子,简单的两行代码。

1 onst Stock land = Stock(“balabalabala”);
2
3 land.show();

如果show函数不是cosnt成员数,编译器将拒绝(这词用的好)第二行代码,原因就是,show函数无法保证land中的值不会被修改。一般函数(非成员函数)是通过参数来保证的,而很显然,show函数无参数,无法保证。

这里想要调用show函数唯一的方法就是在类的声明中保证show函数不会修改参数,也就是将其声明为const类型的成员函数。就这样。

同时在我当时的代码的相关函数,比如复制构造函数也因此而导致了问题,因为赋值构造函数的参数是const类型的,因此导致当时未声明为const类型的函数在其中出现违规调用的情况,哪怕函数的功能其仅仅是返回一个字符串首地址。对我来说,这个教训还是很深刻的。后来解决方案也很简单,就是,将相关的函数声明为const类型,problem solved。

C++这门语言要注意的细节还真的是不少的。

另外关于const类型,还有一点要谈的,就是我在上个学期的一个小尝试,比较有趣,之前的博客园文章中貌似也发表过的,今天再长谈一番。

这个尝试就是,去修改一个类型为const的整数的值。当时出现这个念头,很大程度上是因为当时我对于数据存储的理解,也就是,内存中的数据用来表示什么,完全决定于你把它当成什么。

为了稍微体现一下我的这个观点,我在这先写一小段代码,展示下结果。

代码如下:

1 int num_str = 0x00313233;
2
3 cout << hex << num_str << endl;
4
5 cout << (char *)&num_str << endl;

输出结果:

就这么一段很简单的代码,输出结果却完全不一样,尽管,源自同一片内存

另外上面这段代码涉及大端小端的问题,有兴趣请留言啊。

接着往下说,就是如何修改一个const常量的值。这个是因为C/C++中,const常量是有内存去存储的,而非宏之类的单纯替换。这个方法和上面代码的方法是一致的,通过类型转换,将其改变为你想要的类型来进行翻译和使用。看着这段代码:

1 const int constval = 10;
2
3 int * pnval = (int *)&constval;
4
5 *pnval = 9;
6
7 cout << constval << endl;

现在看这段代码,觉得蛮有几分调皮的意思。而且这里的值和以前的那篇文章貌似都是一样的。

这段代码你运行后,一般的结果依旧是10,原因的话,我当时看了一下汇编代码,应该是编译器优化,最后一行的constval的值被直接用常数10给取代了。但是如果你以调试的模式来查看,就会发现,在第三行代码运行后,cosntval的值被改为了9.就是这样的。

现在有截图了,看运行截图:

现在,我们换个类型,改为结构体,来使编译器放弃这种优化,代码如下:

1 struct teststruct
2
3 {
4
5 int val;
6
7 };
8
9 const teststruct constval = {10};
10
11 teststruct * pnval = (teststruct *)&constval;
12
13 pnval->val = 9;
14
15 cout << constval.val << endl;

运行结果:

代码整体上是差不多的,但是在这里,结果如预期的那样,确实被修改了。

所以在这里,对于什么const也好,结构也好,指针也好,其存储本质都是内存中以字节为单位排列的二进制数,其意义,不同的解释方式会有不同的结果。

你当它是什么,他就是什么。

今天上午的时候不小心把流量超了,下午去买了张校园网充值卡,结果,到现在还是上不了网……同志,我不知道你看到这文章会是什么时候……

闲着也是闲着,室友们打逆战,当时我就比较感慨这种联网游戏是怎么实现的~唉,腾讯还是挺NB的。我上不了网,所以干脆把数据结构之二叉树又写一遍,写数据结构又不需要上网~

这次写二叉树,没用模板,但是改的话,还是比较快的。这个大家都懂得,我用char类型的做在是因为其输入方便。

二叉树的建立本次采用的是用先序的方式,#表示下一节点为空,常规的字符为节点数据。相信熟悉二叉树的同学和前辈们都了解的~

先看节点类和二叉树类的声明:

1 class BinaryNode
2
3 {
4

没有评论:

发表评论