简单家庭财务管理系统设计_第1页
简单家庭财务管理系统设计_第2页
简单家庭财务管理系统设计_第3页
简单家庭财务管理系统设计_第4页
简单家庭财务管理系统设计_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、得分:课程设计报家庭财务管理系统设计姓名 班级 学号课程名称指导教师2011年12月23日 目 录1家庭财务管理系统需求分析32.家庭财务管理系统数据库设计 32.1 数据库关系分析 32.2 E-R图设计 42.3 数据表的生成43. 家庭财务管理系统的算法设计5 3.1连接数据库5 3.2添加数据5 3.3修改数据库内容6 3.4统计数据库信息64.软件项目开发过程 6 4.1根据E-R图创建数据库表7 4.2功能研发的准备工作7 添加ADO连接的支持8 为界面添加控件8 添加并修改OnInitDialog()类8 4.4 实现算法设计12 “添加”按钮的消息处理功能12 “修改”按钮的消

2、息处理功能13 “统计”按钮的消息处理功能14 5测试16家庭财务管理系统1家庭财务管理系统需求分析 家庭财务管理系统相对于企业的财务系统而言,要简单得多,毕竟收支方面的流程和种类都比较小,而且使用该系统的管理员也比较少。为了简单起见,本项目就实现家庭财务管理系统的支出方面进行讲解分析。家庭财务管理系统的概要功能如下:可以对每天的支出进行记帐,记帐要实现分类:(1)按不同的支出类型分类。(2)按不同的消费人员进行分类。可以对历史数据进行查询,查询要实现的功能是:(1)指定时间段,可以按类型进行该时间段的支出统计查询。(2)指定时间段,可以按消费人员进行该时间段的支出统计查询。(3)指定时间段,

3、可以同时按类型和消费人员进行该时间段的支出统计查询。根据前文所述的功能需求,在功能上可以分为两个模块:记帐的功能。查询并统计的功能。因此,在操作界面上也应该分两个区域分别为这两个功能提供用户的操作界面:日常功能:日常功能就是对日常的开支进行记帐。统计功能:统计功能就是根据用户输入的起止时间,对特定的类型和消费人员的支出进行统计。2.家庭财务管理系统的数据库设计2.1数据关系分析数据库的设计,首先应该从数据之间的相互关系入手。如果数据库系统比较复杂,则还需要进行规范化的项目管理流程,一般的数据库系统开发流程如下:(1)需求分析阶段(2)概念结构设计阶段(3)数据库详细设计阶段(4)应用程序开发阶

4、段(5)数据库系统实施阶段(6)数据库系统运行和维护阶段2.2E-R图设计概念模型就是对信息世界的抽象建模,狭义的信息世界可以专指数据库中的数据,那么概念模型就可以理解为对数据库数据的抽象建模。概念模型最常用的描述方法是E-R图(“实体联系”图)描述法,E-R图主要有3个要素:实体:实体是以矩形表示。实体就是数据库数据中具有实际意义的主体,如在前文分析的实体就是“消费人员”和“消费品”。属性:属性用椭圆表示。就是实体所拥有的特性,如果是在面向对象程序设计中,可以将“实体”和“属性”对应为“对象”和“对象中的数据成员”的关系。联系:联系用菱形表示。联系是实体与实体之间发生的动作、从属或其他依赖关

5、系。2.3数据库表的生成由E-R图生成数据库表是数据库系统研发的必要步骤,如果没有联系,只有单实体或孤立的实体的E-R图,转换方式很简单:(1)首先将实体名写成数据库表的表名。(2)然后将实体的属性写成数据库表的属性。(3)根据实际含义,将设定数据库属性的类型(整型、字符串型或日期类型等)。(4)设定主码。Budget表:Handler表:Type表:3.家庭财务管理系统的算法设计3.1连接数据库连接数据库的功能是所有数据库应用系统开发的必要过程,本项目采用ADO的连接方式进行连接。连接数据库的过程如下:初始化OLE,创建ADO连接。调用Open()函数,打开本地的数据库文件“Home.mdb

6、”。为界面读取初始化数据,传递SQL语句选择出相应的数据库元组。3.2添加数据 为数据库添加数据是数据库开发的重要功能,主要步骤如下:调用Open()函数打开数据集。调用AddNew()成员函数,告知系统开始添加数据。添加数据操作。调用Update()将添加的数据写回到磁盘的数据库文件中。调用Close()成员函数关闭数据集。3.3修改数据库内容 从应用程序种修改数据库的内容关键也在于传递SQL语句,使用SQL的更新语句即可,如下所示:update 表名 set DateA='某日期',Content='某内容',MoneyA=某金额,Handler='

7、某人',Type='某类型' where ID=某ID ;将该SQL语句存放在strSql字符串变量中,然后再调用Execute()函数执行即可。代码如下:m_pConnection->Execute(_bstr_t(strSql),&vAffected,adCmdText);3.4统计数据库信息 统计数据库的信息关键在于使用SQL语句的集函数,就是对数据表中的某属性进行集操作,这里使用的集函数是“和”操作,即“SUM()”函数,代码如下:select SUM(MoneyA) as SumMoneyA from Budget where DateA>

8、=某日期 and DateA<=某日期 and Type=某消费品类型 and Handler= 某消费人 ;4.软件项目开发过程4.1开发家庭财务管理系统项目的流程4.2根据E-R图创建数据库表 如下所示:4.3功能研发的准备工作在实现系统的添加、修改和统计功能之前,需要做一些准备工作,使整个项目的数据库连接和访问等能顺利进行,并使界面可以达到预期目标。准备工作的工作流程如图所示。为stdafx.h头文件添加ADO连接的支持代码如下:#import"c:programfilescommonfilessystemadomsado15.dll" no_namespace

9、 rename ("EOF", "adoEOF")为界面添加控件ID界面如下:添加并修改OnInitDialog()类: 代码如下:BOOL CHomeResDlg:OnInitDialog()CDialog:OnInitDialog();/ Add "About." menu item to system menu./ IDM_ABOUTBOX must be in the system command range.ASSERT(IDM_ABOUTBOX & 0xFFF0) = IDM_ABOUTBOX);ASSERT(ID

10、M_ABOUTBOX < 0xF000);CMenu* pSysMenu = GetSystemMenu(FALSE);if (pSysMenu != NULL)CString strAboutMenu;strAboutMenu.LoadString(IDS_ABOUTBOX);if (!strAboutMenu.IsEmpty()pSysMenu->AppendMenu(MF_SEPARATOR);pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);/ Set the icon for this dialo

11、g. The framework does this automatically/ when the application's main window is not a dialogSetIcon(m_hIcon, TRUE);/ Set big iconSetIcon(m_hIcon, FALSE);/ Set small icon/m_cobAnaType.AddString("全部类型");m_cobAnaHandler.AddString("全部人");m_cobAnaType.SetCurSel(0);m_cobAnaHandler.

12、SetCurSel(0);GetSystemTime(&m_CurTime);m_CurTime.wDay = 1;m_DateFrom.SetTime(&m_CurTime);m_CurTime.wMonth += 1;m_DateTo.SetTime(&m_CurTime);/ 初始化COM,创建ADO连接等操作AfxOleInit();m_pConnection.CreateInstance(_uuidof(Connection);/ 在ADO操作中建议语句中要常用try.catch()来捕获错误信息,/ 因为它有时会经常出现一些意想不到的错误。jingzhou

13、xutry / 打开本地Access库Demo.mdbm_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Home.mdb","","",adModeUnknown);catch(_com_error e)AfxMessageBox("数据库连接失败,确认数据库Demo.mdb是否在当前路径下!");return FALSE; /从数据库中读入经手人名单和类型名单_RecordsetPtrpHandlerRecordset;pHa

14、ndlerRecordset.CreateInstance(_uuidof(Recordset);trypHandlerRecordset->Open("SELECT * FROM Handler", / 查询DemoTable表中所有字段m_pConnection.GetInterfacePtr(), / 获取库接库的IDispatch指针adOpenDynamic,adLockOptimistic,adCmdText);catch(_com_error *e)AfxMessageBox(e->ErrorMessage(); _variant_t var;CS

15、tring strName;while(!pHandlerRecordset->adoEOF)var = pHandlerRecordset->GetCollect("Handler");if(var.vt != VT_NULL)strName = (LPCSTR)_bstr_t(var);m_cobHandle.AddString(strName);m_cobAnaHandler.AddString(strName);pHandlerRecordset->MoveNext();pHandlerRecordset->Close();pHandlerR

16、ecordset.Release();pHandlerRecordset = NULL;/CString strType;_RecordsetPtr pTypeRecordset;pTypeRecordset.CreateInstance(_uuidof(Recordset);trypTypeRecordset->Open("SELECT * FROM Type", / 查询DemoTable表中所有字段m_pConnection.GetInterfacePtr(), / 获取库接库的IDispatch指针adOpenDynamic,adLockOptimistic,

17、adCmdText);catch(_com_error *e)AfxMessageBox(e->ErrorMessage(); while(!pTypeRecordset->adoEOF)var = pTypeRecordset->GetCollect("Type");if(var.vt != VT_NULL)strType = (LPCSTR)_bstr_t(var);m_cobType.AddString(strType);m_cobAnaType.AddString(strType);pTypeRecordset->MoveNext();pTy

18、peRecordset->Close();pTypeRecordset.Release();pTypeRecordset = NULL;/读入当月的记录/CTime Today = CTime:GetCurrentTime();Load(Today.GetMonth(),Today.GetMonth() + 1);m_nHandler = 0;m_nType = 0;UpdateData(FALSE);return TRUE; / return TRUE unless you set the focus to a control4.4实现算法设计根据前文所创建的项目,在项目的对话框中设计

19、出前文所示的界面设计。界面上主要的功能按钮有:“添加”按钮:单击该按钮后,将对话框编辑控件的内容添加到数据库。“修改”按钮:单击该按钮后,使对话框编辑控件中与数据库对应的内容作出相应的修改。“统计”按钮:单击该按钮后,对指定时间段内的数据库内容,分消费品的经手人或消费品种类进行统计,并将统计结果显示在对话框相应的控件中。“添加”按钮的消息处理功能 双击“添加”按钮,添加该按钮的消息处理函数,代码如下:void CHomeResDlg:OnBtnAdd() UpdateData();_RecordsetPtrm_pRecordset;m_pRecordset.CreateInstance(_uu

20、idof(Recordset);trym_pRecordset->Open("SELECT * FROM Budget", / 查询DemoTable表中所有字段m_pConnection.GetInterfacePtr(), / 获取库接库的IDispatch指针adOpenDynamic,adLockOptimistic,adCmdText);catch(_com_error *e)AfxMessageBox(e->ErrorMessage(); CString strDate,strType,strHandler;GetDlgItem(IDC_DATETI

21、MEPICKER_DATE)->GetWindowText(strDate);m_cobType.GetWindowText(strType);m_cobHandle.GetWindowText(strHandler);/添加新记录m_pRecordset->AddNew();m_pRecordset->PutCollect("DateA",_variant_t(strDate);m_pRecordset->PutCollect("Content",_variant_t(m_strContent);m_pRecordset->

22、;PutCollect("MoneyA", _variant_t(m_fMoney);m_pRecordset->PutCollect("Handler", _variant_t(strHandler);m_pRecordset->PutCollect("Type", _variant_t(strType);m_pRecordset->Update();m_pRecordset->Close();m_pRecordset = NULL;CTime Today = CTime:GetCurrentTime();L

23、oad(Today.GetMonth(),Today.GetMonth() + 1);“修改”按钮的消息处理功能双击“修改”按钮,添加该按钮的消息处理函数,代码如下:void CHomeResDlg:OnBtnModify() /Load(m_tDate.GetMonth(),m_tDate.GetMonth() + 1);UpdateData();if(m_lCurID > 0)int nCurSel = 0;int nID = 0;CString strDate,strType,strHandler;m_Date.GetWindowText(strDate);m_cobType.Ge

24、tWindowText(strType);m_cobHandle.GetWindowText(strHandler);CString strSql;strSql.Format("update Budget set DateA='%s',Content='%s',MoneyA=%f,Handler='%s',Type='%s' where ID=%d",strDate,m_strContent,m_fMoney,strHandler,strType,m_lCurID);_variant_t vAffected;m

25、_pConnection->Execute(_bstr_t(strSql),&vAffected,adCmdText);CTime Today = CTime:GetCurrentTime();Load(Today.GetMonth(),Today.GetMonth() + 1);“统计”按钮的消息处理功能 双击“统计”按钮,添加该按钮的消息处理函数,代码如下:void CHomeResDlg:OnBtnAna() CString strAnaType,strAnaHandler,strDateFrom,strDateTo;m_DateFrom.GetWindowText(str

26、DateFrom);m_DateTo.GetWindowText(strDateTo);m_cobAnaType.GetWindowText(strAnaType);m_cobAnaHandler.GetWindowText(strAnaHandler);CString strSql,strTemp;strSql.Format("select SUM(MoneyA) as SumMoneyA from Budget where DateA>=#%s# and DateA<=#%s#",strDateFrom,strDateTo);if(strAnaType !=

27、 "全部类型")strTemp.Format(" and Type='%s'",strAnaType);strSql += strTemp;if(strAnaHandler != "全部人")strTemp.Format(" and Handler='%s'",strAnaHandler);strSql += strTemp;strTemp.Format("时间:%s-> %s",strDateFrom,strDateTo);m_ResList.AddString(strTemp);strTemp.Format("类型:%s",strAnaType);m_ResList.AddString(strTemp);strTemp.Format("经手人:%s",strAnaHandler);m_ResList.AddString(strTemp);_RecordsetPtr SumRecordset;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论