预算管理系统开发随笔(一)

    前两天主管谈到需要对单位的预算开支做一个简单的管理软件,结合最近对C#的学习,我决定用C#来制作这个程序,程序的功能很简单 ,希望能通过这个程序的制作熟悉C#Winform应用程序的开发。我会把开发过程详细的记录下来,希望大家就软件的设计和编码上的问题多提建议.   
一、需求分析。
   程序要实现对每笔划分到单位的预算的使用情况进行管理,要求具有一定的安全控制手段。 
   对于预算管理要求实现的功能如下:
   1、可以很直观的管理每一笔预算,对于预算的性质和预算资金的设用状态必须有详细的记录。
   2、每笔预算可能用于若干项目,要求追踪每个项目的详细资料和资金拨付情况。 
   3、大的预算可能包含小的预算和若干项目。
二、概要设计
    数据库选择:Access(足够了)
    安全控制手段: 程序建立用户表,存储每个用户的用户名密码。每个用户均可以修改自己的密码,特殊的admin内置用户可以删除用户和添加新用户。
    数据模型:分析预算和项目的关系,很明显类似于系统的文件和文件夹的关系,文件夹可能包含文件夹和文件,而文件则保存具体的数据。 这里预算可以包含小预算和具体的项目,而实际资金的使用最终是通过项目来完成的。 每笔预算和每个项目应该记录的信息如下:
   

预算:

项目

名称    名称   
备注 备注
预算金额 预算金额
已分配金额  分配金额=预算金额
已支付金额 已支付金额
子预算列表 使用单位
子项目列表 项目类别
是否固定资产
支出日期
资金类别
经办单位

    报表需求:待定。
三、详细设计:
    因为项目在某种程度上也是一种预算,所以抽象出基类BudgetBase包含预算的基本操作,预算(Budget)和项目(ProjectBudget)做为它的两个子类。

namespace BudgetControl
{
    
public class BudgetBase
    
{
        
Data member
        
//返回预算金额
        public abstract decimal GetBudgetAmount();   
        
//返回已支付金额
        public abstract decimal GetPayedAmount();
        
//返回已非配金额
        public abstract decimal GetAssignedamount();
    }

}

 

namespace BudgetControl
{
    
public class Project: BudgetBase
    
{
        
//使用单位
        private string m_usedDepartment;

        
public string UsedDepartment
        
{
            
get return m_usedDepartment; }
            
set { m_usedDepartment = value; }
        }

        
//经办单位
        private string m_manageDepartment;

        
public string ManageDepartment
        
{
            
get return m_manageDepartment; }
            
set { m_manageDepartment = value; }
        }

        
//项目类别
        private string m_projectType;

        
public string ProjectType
        
{
            
get return m_projectType; }
            
set { m_projectType = value; }
        }


        
//是否固定资产
        private string m_isFixedAssets;

        
public string IsFixedAssets
        
{
            
get return m_isFixedAssets; }
            
set { m_isFixedAssets = value; }
        }


        
//立项日期
        private DateTime m_createdDate;

        
public DateTime CreatedDate
        
{
            
get return m_createdDate; }
            
set { m_createdDate = value; }
        }


        
//资金类别
        private string m_cashType;

        
public string CashType
        
{
            
get return m_cashType; }
            
set { m_cashType = value; }
        }





        
public override decimal GetAssignedamount()
        
{
            
throw new Exception("The method or operation is not implemented.");
        }

        
public override decimal GetPayedAmount()
        
{
            
throw new Exception("The method or operation is not implemented.");
        }

    }

}

 

namespace BudgetControl
{
    
public class Budget: BudgetBase
    
{
        
private List<Budget> m_subBudgets;
        
private List<Project> m_subProjects;
        
public override decimal GetAssignedamount()
        
{
            
throw new Exception("The method or operation is not implemented.");
        }

        
public override decimal GetPayedAmount()
        
{
            
throw new Exception("The method or operation is not implemented.");
        }

    }

}





 

posted @ 2006-03-19 00:11  riordan  阅读(973)  评论(1编辑  收藏  举报