EaBIM一直以来积极响应国家“十二五”推进建筑业信息化的号召,对建筑领域的信息技术开展深入技术交流和探讨!致力于打造“BIM-建筑师-生态技术”三位一体综合资源交流共享平台,希望为BIM与可持续设计理念及技术的普及做出微小的贡献!!!

EaBIM

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

搜索
查看: 4220|回复: 68
打印 上一主题 下一主题

[数据库程序设计] 预算管理系统开发

[复制链接]

1514

主题

7465

帖子

1万

积分

admin

Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10

积分
12404

社区QQ达人

跳转到指定楼层
楼主
发表于 2014-1-9 15:28:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
前两天主管谈到需要对单位的预算开支做一个简单的管理软件,结合最近对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.");

                               
登录/注册后可看大图
        }

                               
登录/注册后可看大图
    }

                               
登录/注册后可看大图
}

上此写的BudgetBase  Budget   Project三个类在后来的程序编写过程中发现, 系统需要维护的仅仅是一个预算的列表,在预算下面只包含项目就可以满足需求了.因此修改设计,取消BudgetBase类.   修改Budget类代表预算,Project代表项目. 添加相应的数据成员.
    程序现在实现的功能包括:
        1、一个登录窗体,用来核对用户名和密码及用来管理用户的相应模块。
        2、对于预算的新增、修改、删除操作。
        3、对于项目的新增、修改、删除操作。
        4、按照项目的属性进行分类浏览操作。

                               
登录/注册后可看大图

随后附上程序的源代码,及可执行文本。
这里记录一些开发过程中的一些收获:
1、DataGridView这个控件的绑定问题。
    以前一直用Delphi做数据库程序,刚开始对.net的数据绑定很不适应。 对于显示预算列表的这个DataGridView
我在后台绑定了一个BindingList<Budget>做为数据源,为了得到当前选择的是那一项这个信息,又在中间插入了budgetBindingSource对象,这个对象可以提供Current属性,可以得到当前选择的是那一项这个信息。
    对于显示Project列表的这个DataGridView我使用的是DataGridView-->BindingSource-->DataTable这样的绑定,对于这个列表的处理中值得注意的是, DataView 的RowFilter属性的作用, 使用这个属性可以方便的实现对于结果集的筛选,项目分类浏览功能的实现充分利用了这一点。
2、Access数据库的列的起名问题
    开发过程中发现,Operator表名为password的列在插入新用户的过程中总是报错,后更改这个列的名称为pwd后解决问题。 估计是和Access的保留内容冲突(只是猜想)。
3、vs2005 team edtion的Deploy项目可以比较方便的制作程序的安装包,使用还算方便,对于小程序,推荐!
源码:

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 转播转播 分享分享 分享淘帖 支持支持 反对反对

相关帖子

工作时间:工作日的9:00-12:00/13:30-18:00,节假日不在线,请勿留言

5

主题

565

帖子

563

积分

BIM专业负责人

Rank: 4Rank: 4Rank: 4Rank: 4

积分
563

社区QQ达人

推荐
发表于 2015-12-11 13:36:21 | 只看该作者
可以去中国BIM威客平台看看真实项目私活

14

主题

2892

帖子

2085

积分

BIM经理

Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6

积分
2085
推荐
发表于 2016-3-17 11:34:33 | 只看该作者
o(*////▽////*)q  路过……

3

主题

839

帖子

1326

积分

BIM经理

Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6

积分
1326
4F
发表于 2014-2-21 14:34:27 | 只看该作者
路过!!!
不发表意见……

28

主题

924

帖子

2115

积分

BIM经理

Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6

积分
2115
6F
发表于 2014-3-10 12:10:24 | 只看该作者
(*^__^*) 嘻嘻……

3

主题

140

帖子

529

积分

BIM专业负责人

Rank: 4Rank: 4Rank: 4Rank: 4

积分
529

社区QQ达人

7F
发表于 2014-3-11 10:44:23 | 只看该作者

路过!!!
不发表意见……

23

主题

538

帖子

1101

积分

BIM项目负责人

Rank: 5Rank: 5Rank: 5Rank: 5Rank: 5

积分
1101
8F
发表于 2014-3-12 14:47:40 | 只看该作者
路过!!!
不发表意见……

32

主题

830

帖子

1383

积分

BIM经理

Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6

积分
1383
11F
发表于 2014-3-12 15:03:01 | 只看该作者
顶......
楼下跟上.....

3

主题

778

帖子

1337

积分

BIM经理

Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6

积分
1337
12F
发表于 2014-3-12 15:18:13 | 只看该作者
顶......
楼下跟上.....

12

主题

861

帖子

1353

积分

BIM经理

Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6

积分
1353
14F
发表于 2014-3-14 11:43:54 | 只看该作者
顶......
楼下跟上.....
*滑块验证:
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|EaBIM网 ( 苏ICP备2020058923号-1  苏公网安备32011502011255号

GMT+8, 2024-11-23 11:05

Powered by Discuz! X3.2 Licensed

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表