...
正好我有一个实验的东西;把文档贴出来,代码还没写;再给点分吧。
个人财务管理软件Accounter设计
一.Accounter的功能需求
核心业务:管理帐目,需要统计收入和支出,记录收入和支出的类型和相关数据。期待的结果,当前的收支平均值
(总共的月平均收入,月平均支出,上个月的月平均收入平均支出,或者按时间获得平均值,当前账户余额)对记录的统计信息进行分析,画出图像,显示出各种收支类别占
总共收支的比重。
财务管理需要有基本的输入输出接口,存储数据,查询数据,并对财务数据进行一定的分析。对存储数据进行加密(可选功能)
存储,使用xml或者普通流输出。
用户界面:1、主界面,需要指定当前的余额和统计时间段设置,可选的计算最近的收支平均值。2、输入界面,需要指定新添收支的数额,分类和日期;能根据选择日期不同查看当天
的收支数据。能对已输入的数据进行修改。对已输入的分类信息进行管理,提供添加,删除,编辑操作 3、输出,根据设置的时间段画出饼图,显示各个分类的收入支出占总数的比重。
根据时间段画出收入支出随时间的变化。
二.核心数据结构
使用一个xml文件保存收支条目,一个xml用来保存分类。条目信息是平行结构,分类是一个两层的树结构。
收支记录 AccountRecord.xml 结构:
主分类和次级分类分别保存,文件MainClass.xml结构:
...
ChildClass.xml结构
把类型分为两个文件是为了避免不用对象文件IO的冲突。
以上数据结构可以保证受限的输入可以生成统计表格。
三.主要类和接口
需要确定数据从磁盘读取到内存的时机,获取数据的方式,内存中保持数据的方式和数据被修改后更新同步的时机。
最佳方式是内存中不保存副本,通过对象访问存储库,所有读取和更改都直接反映到磁盘。
三个C#类, AccountRecordManager,管理积累条目;MainClassManager,管理主类别;ChildClassManager,管理子类别。
这三个类暴露出各自数据结构中的成员,提供一个Read()方法,控制游标移动。在get和set里实现对xml数据的直接读写。
还要提供查询功能。
才10分?我们是不想吝惜,可是你也太!!!~~~~~~~~~~
....10分写这么多东西。。。。