记账软件模型(一)

记账软件模型(一)

编制程序不是生活,而只是生活的一部分。在编写程序的时候,老是关注编写语言的细节,使用的算法和调用的函数。很少会重视系统科学的解决开发需求的问题。其实编制程序的主要目的就是解决遇到的实际应用问题,因此,好多方法不是局限在已的算法和方法上,还有好多是,日常生活中的基本引用。

自己想着将日常常见的生活问题,融入到软件开发的需求中。于是就想到制作一个记账软件。这个是日常生活中最常见的计算程序。刚好利用软件开发的方法,将需求转换成具体的功能。

也是想将平常工作中使用的开发技巧融入其中。因为大多数教材都是归纳的方式,列举好多零散的例子,每个例子不连贯,解释每一个知识点的时候,也仅限于告诉我们这个可以这样用。我想着使用一个例子将所有的知识点全部串联起来,学习起来更有规律性。

后期我仔细分析了一下开发需求,其实软件功能实现的方法非常多,但其中都有一个基本方法。我们主要是将基本给出分析和解释。读者随着学识逐渐增多,自己就可以逐渐替换或优化现有的基本方法。

记账软件,其实也有一个基本模型,和两个主要操作收入支出。为了保证这个模型正常运行,逐渐完善其功能。尽量将常用的知识点灌溉其中。

基本模型

记账keep accounts软件的原理很简单,就是求当前的余额,那么余额是怎么得来的呢,是收入减去支出就等于余额。

余额 = 收入 – 支出

那么需要输入的内容,就是收入金额和支出金额,需要显示的内容就是余额。

 

问题到此,好像已经基本成型,那么首先我们需要处理的就是怎样表示这三个参数,假如我们将余额用balance,收入用Income 和支出用expenditure。就目前技术来看,函数变量使用字符比较合理。

那么我们需要将这个三个内容得依次显示出来

记账 Keep Accounts

-----------------------------

收入    支出    余额

 

Process returned 0 (0x0)   execution time : 0.016 s

Press any key to continue.

这样显示,似乎好像有些太简单了,如果内容过多了,就很难看出来,数字的对关系。那么需要一种格式化输出的

                              记账 KEEP ACCOUNTS

+------------------------------------------------------------------------------------------------------------------------+

|           收入         |           支出         |           余额         |

+------------------------------------------------------------------------------------------------------------------------+

 

Process returned 0 (0x0)   execution time : 0.062 s

Press any key to continue.

这样显示似乎有点感觉,下边的记录对应表头,显然就是一个简单的账单。

第一个收入处理

添加一笔记录,例如今天发工资3500元,那么这个就是一个收入。

Incom模块设计,需要用户输入收入的金额,例如,输入工资3500元。

看样子好像可以,进行记录金额数据,但是总觉得这个表格少点什么。其实从表格的结构来说,就是表格少了一个底边,需要将数据包裹到表框中。

可能有些读者,觉得只要功能在就可以了,还整些没用的框框干什么,随后我会告诉大家这个表框意义。(讲解“集中规律”)

那么这个底部边框和制作标题栏一样

这样再看,似乎看着好看一点了,边框看上去更完整一些。

关于边框,这个问题是一个很有意思的问题,不过我们先不要分清主次,主要还是处理记账的问题,边框的问题,后期会重新新讨论。可能有些读者认为,先将主题程序设计好,在说这些表格,其实记账的原理很简单,很容易通过字符显示去实现,所以我们一开始从格式化输出动手,这也是展示各种输出好方式。

第一个支出处理

接下来我们说说支出的问题

Expenditure模块设计,需要用户输入支出的金额,例如,取出150元用来交电话费。

 

可能用户会发现,怎么收入和支出分别,显示并不能,集中到一起。为了解决这个问题我们需要制作一个数组,其逻辑结构是:

收入

支出

余额

A1

 

 

 

B1

C1

 

B2

C2

数组也是一种数据结构,根据这个需求可以定义个10行3列的数组,我们给他取名叫Arraybox,表示出来就是Arraybox[10][3]。

这样就可以将收入的结果和支出的结果放到一起,当然余额的计算结果也可以放入其中。从上边的逻辑关系来看,余额的计算等于收入减去支出,C1 = A1 – B1,此处可能有些人看不明白,我们将逻辑表从新更改一下

收入

支出

余额

A1

0

A1

A1

B1

C1

A2=C1

B2

C2

在第一行的时候,没有支出,那么余额自然是A1,到第二行的时候,有了支出B1,那么余额的计算,先将第一行的余额A1写入第二行的收入,然后在用收入减去支出B1,这个样子这个公式的得来就是C1 = A1 –B1后边依次类推。

这种计算方式是类似日常做的丁字帐,在此简单的程序中,我们先已此方式计算,随着开发知识和财务的知识增长,我们会已另一种方式计算,后期在详细讨论。

经过一番改造后


现在再看这个程序显示的结果,是不是已经框架成型。其实这个模型已经完成,可能细心的读者,会发现两边的数字,好多都不对,只是拼凑的结果。

我们现在这版本成为1.0版本,它简单的模型。

真正的重头戏,还是在2.0版本之后。

代码点评

程序中需要评说的是两个内容,一个是表格的制作,另一个是模块化思路。

表格的制作可能早期多数是使用,边框符号和特殊字符组成,其主要的目的是想让信息显示标准化,完全模仿现实世界的账簿。

模块化制作,主要是尽量将独立的功能集中起来,编制成可调用的函数,在后期是使用的时候“组合调用”,编制程序中最主要的思路就是,模块化编写。

 

表格制作

表格的制作,其实在C语言中,方法非常丰富,但是这个模型的开发,我是故意倾向C++风格。主要是我为后期的类体的使用做准备。使用表格制作后,可以方便嵌入式开发,因为好多,只要不断的修改边框尺寸,就可以适用各种机型显示尺寸。

常用函数:

名称

实例

解释

setw()

Cont << setw(n )

设置输出字符显示宽度

Setfill()

Cout << setfill(‘-’)

设置填充字符

 

 

 

 

表格一般由表头和底边组成,中间是表格。

记账软件的表头:

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

///显示记账标题,依次显示收入,支出,余额

/**

 * 功能显示记账,

 *

**/

///设置边框长度

const int defwidth = 80;

const int defa = 15;

const int defb = 11;

 

void TitleTable()

{

    ///标题居中显示

    cout << endl<< endl;

    cout << setw( defwidth/ 2+ 8) <<"记账 KEEP ACCOUNTS"<< endl;

    cout << setfill('-');

    cout << "+" << setw( defwidth- 2) <<"+" << endl;

    cout << setfill(' ');

    cout << "|" << setw( defa) <<"收入"<< setw(defb);

    cout << "|" << setw( defa) <<"支出"<< setw(defb);

    cout << "|" << setw( defa) <<"余额"<< setw(defb);

    cout << "|" <<endl;

    cout << setfill('-');

    cout << "+" << setw( defwidth- 2) <<"+" << endl;

    cout << setfill(' ');

}

 

记账软件的表格底边

70

71

72

73

74

75

76

77

78

79

80

81

82

/**

 * 功能:表格的底部

**/

void BottomTable()

{

    ///底部边框

    cout << setfill('-');

    cout << '+' << setw( defa+ defb )

         << '+' << setw( defa+ defb )

         << '+' << setw( defa+ defb )

         << '+' << endl;

    cout << setfill(' ');

}

 

资源下载:

http://vdisk.weibo.com/s/uJlEtfMbmmhs2

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章