版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
得分:课程设计报家庭财务管理系统设计姓名班级学号课程名称指导老师201目录1.家庭财务管理系统需求分析…………32.家庭财务管理系统数据库设计………32.1数据库关系分析……………32.2E-R图设计…………………42.3数据表的生成………………43.家庭财务管理系统的算法设计……53.1连接数据库……53.2添加数据………53.3修改数据库内容………………63.4统计数据库信息………………64.软件项目开发过程…………………64.1依据E-R图创建数据库表……74.2功能研发的打算工作…………7添加ADO连接的支持……8为界面添加控件…………8添加并修改OnInitDialog()类…………84.4实现算法设计…………………12“添加”按钮的消息处理功能…………12“修改”按钮的消息处理功能…………13“统计”按钮的消息处理功能…………145.测试……………16家庭财务管理系统1.家庭财务管理系统需求分析家庭财务管理系统相对于企业的财务系统而言,要简洁得多,终归收支方面的流程和种类都比较小,而且运用该系统的管理员也比较少。为了简洁起见,本项目就实现家庭财务管理系统的支出方面进行讲解分析。家庭财务管理系统的概要功能如下:可以对每天的支出进行记帐,记帐要实现分类:(1)按不同的支出类型分类。(2)按不同的消费人员进行分类。可以对历史数据进行查询,查询要实现的功能是:(1)指定时间段,可以按类型进行该时间段的支出统计查询。(2)指定时间段,可以按消费人员进行该时间段的支出统计查询。(3)指定时间段,可以同时按类型和消费人员进行该时间段的支出统计查询。依据前文所述的功能需求,在功能上可以分为两个模块:记帐的功能。查询并统计的功能。因此,在操作界面上也应当分两个区域分别为这两个功能供应用户的操作界面:日常功能:日常功能就是对日常的开支进行记帐。统计功能:统计功能就是依据用户输入的起止时间,对特定的类型和消费人员的支出进行统计。2.家庭财务管理系统的数据库设计2.1数据关系分析数据库的设计,首先应当从数据之间的相互关系入手。假如数据库系统比较困难,则还须要进行规范化的项目管理流程,一般的数据库系统开发流程如下:(1)需求分析阶段(2)概念结构设计阶段(3)数据库具体设计阶段(4)应用程序开发阶段(5)数据库系统实施阶段(6)数据库系统运行和维护阶段2.2E-R图设计概念模型就是对信息世界的抽象建模,狭义的信息世界可以专指数据库中的数据,那么概念模型就可以理解为对数据库数据的抽象建模。概念模型最常用的描述方法是E-R图(“实体-联系”图)描述法,E-R图主要有3个要素:实体:实体是以矩形表示。实体就是数据库数据中具有实际意义的主体,如在前文分析的实体就是“消费人员”和“消费品”。属性:属性用椭圆表示。就是实体所拥有的特性,假如是在面对对象程序设计中,可以将“实体”和“属性”对应为“对象”和“对象中的数据成员”的关系。联系:联系用菱形表示。联系是实体与实体之间发生的动作、从属或其他依靠关系。2.3数据库表的生成由E-R图生成数据库表是数据库系统研发的必要步骤,假如没有联系,只有单实体或孤立的实体的E-R图,转换方式很简洁:(1)首先将实体名写成数据库表的表名。(2)然后将实体的属性写成数据库表的属性。(3)依据实际含义,将设定数据库属性的类型(整型、字符串型或日期类型等)。(4)设定主码。Budget表:Handler表:Type表:3.家庭财务管理系统的算法设计3.1连接数据库连接数据库的功能是全部数据库应用系统开发的必要过程,本项目采纳ADO的连接方式进行连接。连接数据库的过程如下:初始化OLE,创建ADO连接。调用Open()函数,打开本地的数据库文件“Home.mdb”。为界面读取初始化数据,传递SQL语句选择出相应的数据库元组。3.2添加数据为数据库添加数据是数据库开发的重要功能,主要步骤如下:调用Open()函数打开数据集。调用AddNew()成员函数,告知系统起先添加数据。添加数据操作。调用Update()将添加的数据写回到磁盘的数据库文件中。调用Close()成员函数关闭数据集。3.3修改数据库内容从应用程序种修改数据库的内容关键也在于传递SQL语句,运用SQL的更新语句即可,如下所示:update表名setDateA='某日期',Content='某内容',MoneyA=某金额,Handler='某人',Type='某类型'whereID=某ID;将该SQL语句存放在strSql字符串变量中,然后再调用Execute()函数执行即可。代码如下:m_pConnection->Execute(_bstr_t(strSql),&vAffected,adCmdText);3.4统计数据库信息统计数据库的信息关键在于运用SQL语句的集函数,就是对数据表中的某属性进行集操作,这里运用的集函数是“和”操作,即“SUM()”函数,代码如下:selectSUM(MoneyA)asSumMoneyAfromBudgetwhereDateA>=某日期andDateA<=某日期andType=某消费品类型andHandler=某消费人;4.软件项目开发过程4.1开发家庭财务管理系统项目的流程4.2依据E-R图创建数据库表如下所示:4.3功能研发的打算工作在实现系统的添加、修改和统计功能之前,须要做一些打算工作,使整个项目的数据库连接和访问等能顺当进行,并使界面可以达到预期目标。打算工作的工作流程如图所示。为stdafx.h头文件添加ADO连接的支持代码如下:#import"c:\programfiles\commonfiles\system\ado\msado15.dll"\no_namespace\rename("EOF","adoEOF")为界面添加控件ID界面如下:添加并修改OnInitDialog()类:代码如下:BOOLCHomeResDlg::OnInitDialog(){ CDialog::OnInitDialog(); //Add"About..."menuitemtosystemmenu. //IDM_ABOUTBOXmustbeinthesystemcommandrange. ASSERT((IDM_ABOUTBOX&0xFFF0)==IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX<0xF000); CMenu*pSysMenu=GetSystemMenu(FALSE); if(pSysMenu!=NULL) { CStringstrAboutMenu; strAboutMenu.LoadString(IDS_ABOUTBOX); if(!strAboutMenu.IsEmpty()) { pSysMenu->AppendMenu(MF_SEPARATOR); pSysMenu->AppendMenu(MF_STRING,IDM_ABOUTBOX,strAboutMenu); } } //Settheiconforthisdialog.Theframeworkdoesthisautomatically //whentheapplication'smainwindowisnotadialog SetIcon(m_hIcon,TRUE); //Setbigicon SetIcon(m_hIcon,FALSE); //Setsmallicon // m_cobAnaType.AddString("全部类型"); m_cobAnaHandler.AddString("全部人"); m_cobAnaType.SetCurSel(0); m_cobAnaHandler.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()来捕获错误信息, //因为它有时会常常出现一些意想不到的错误。jingzhouxu try { //打开本地Access库Demo.mdb m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;DataSource=Home.mdb","","",adModeUnknown); } catch(_com_errore) { AfxMessageBox("数据库连接失败,确认数据库Demo.mdb是否在当前路径下!"); returnFALSE; } //从数据库中读入经手人名单和类型名单 _RecordsetPtr pHandlerRecordset; pHandlerRecordset.CreateInstance(__uuidof(Recordset)); try { pHandlerRecordset->Open("SELECT*FROMHandler",//查询DemoTable表中全部字段 m_pConnection.GetInterfacePtr(), //获得库接库的IDispatch指针 adOpenDynamic, adLockOptimistic, adCmdText); } catch(_com_error*e) { AfxMessageBox(e->ErrorMessage()); } _variant_tvar; CStringstrName; 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(); pHandlerRecordset.Release(); pHandlerRecordset=NULL; ////////////////////////////////////////////////////////////////////////// CStringstrType; _RecordsetPtrpTypeRecordset; pTypeRecordset.CreateInstance(__uuidof(Recordset)); try { pTypeRecordset->Open("SELECT*FROMType",//查询DemoTable表中全部字段 m_pConnection.GetInterfacePtr(), //获得库接库的IDispatch指针 adOpenDynamic, adLockOptimistic, 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(); } pTypeRecordset->Close(); pTypeRecordset.Release(); pTypeRecordset=NULL; //读入当月的记录 // CTimeToday=CTime::GetCurrentTime(); Load(Today.GetMonth(),Today.GetMonth()+1); m_nHandler=0; m_nType=0; UpdateData(FALSE); returnTRUE;//returnTRUEunlessyousetthefocustoacontrol}4.4实现算法设计依据前文所创建的项目,在项目的对话框中设计出前文所示的界面设计。界面上主要的功能按钮有:“添加”按钮:单击该按钮后,将对话框编辑控件的内容添加到数据库。“修改”按钮:单击该按钮后,使对话框编辑控件中与数据库对应的内容作出相应的修改。“统计”按钮:单击该按钮后,对指定时间段内的数据库内容,分消费品的经手人或消费品种类进行统计,并将统计结果显示在对话框相应的控件中。“添加”按钮的消息处理功能双击“添加”按钮,添加该按钮的消息处理函数,代码如下:voidCHomeResDlg::OnBtnAdd(){ UpdateData(); _RecordsetPtr m_pRecordset; m_pRecordset.CreateInstance(__uuidof(Recordset)); try { m_pRecordset->Open("SELECT*FROMBudget",//查询DemoTable表中全部字段 m_pConnection.GetInterfacePtr(), //获得库接库的IDispatch指针 adOpenDynamic, adLockOptimistic, adCmdText); } catch(_com_error*e) { AfxMessageBox(e->ErrorMessage()); } CStringstrDate,strType,strHandler; GetDlgItem(IDC_DATETIMEPICKER_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->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; CTimeToday=CTime::GetCurrentTime(); Load(Today.GetMonth(),Today.GetMonth()+1);}“修改”按钮的消息处理功能双击“修改”按钮,添加该按钮的消息处理函数,代码如下:voidCHomeResDlg::OnBtnModify(){ //Load(m_tDate.GetMonth(),m_tDate.GetMonth()+1); UpdateData(); if(m_lCurID>0) { intnCurSel=0; intnID=0; CStringstrDate,strType,strHandler; m_Date.GetWindowText(strDate); m_cobType.GetWindowText(strType); m_cobHandle.GetWindowText(strHandler); CStringstrSql; strSql.Format("updateBudgetsetDateA='%s',Content='%s',MoneyA=%f,Handler='%s',Type='%s'whereID=%d", strDate,m_strContent,m_fMoney,strHandler,strType,m_lCurID); _variant_tvAffected; m_pConnection->Execute(_bstr_t(strSql),&vAffected,adCmdText); CTimeToday=CTime::GetCurrentTime(); Load(Today.GetMonth(),Today.GetMonth()+1); }}“统计”按钮的消息处理功能双击“统计”按钮,添加该按钮的消息处理函数,代码如下:voidCHomeResDlg::OnBtnAna(){ CStringstrAnaType,strAnaHandler,strDateFrom,strDateTo; m_DateFrom.GetWindowText(strDateFrom); m_DateTo.GetWindowText(strDateTo); m_cobAnaType.GetWindowText(strAnaType); m_cobAnaHandler.GetWindowText(strAnaHandler); CStringstrSql,strTemp; strSql.Format("selectSUM(MoneyA)asSumMoneyAfromBudgetwhereDateA>=#%s#andDateA<=#%s#", strDateFrom,strDateTo); if(strAnaType!="全部类型") { strTemp.Format("andType='%s'",strAnaType); strSql+=strTemp; } if(strAnaHandler!="全部人") { strTemp.Format("andHandler='%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); _RecordsetPtrSumRecordset; _var
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 辰阳明德小学S版四年级语文下册教案(表格式)
- 博大精深的中华文化教学参考教案新人教必修
- 《萝卜回来了》教学设计
- 《物流运输实务》电子教案
- 旅游景区导游聘用合同范本
- 养猪场租赁合同:养殖产业转型
- 医疗美容医师聘用合同
- 健身房宿舍管理员招聘启事
- 咖啡馆冬季空调租赁合同范文
- 影剧院指示牌安装协议
- 部编版2024-2025学年语文五年级上册第4单元-单元测试卷(含答案)
- 期中 (试题) -2024-2025学年人教PEP版英语六年级上册
- 大学与文化传承智慧树知到期末考试答案章节答案2024年浙江大学
- 2024年心理咨询师(中科院心理研究所版)考试题库大全-上(单选题)
- 2024春形势与政策课件当前国际形势与中国原则立场
- 2024年舟山继续教育公需课考试题库
- 一年级拼音默写表
- 2024届高考英语阅读理解命题说题课件
- 软件正版化培训课件
- 第二单元 遵守社会规则 复习课件 部编版道德与法治八年级上册
- 《思想道德与法治》 课件 第四章 明确价值要求 践行价值准则
评论
0/150
提交评论