个人账本管理系统

上传人:仙*** 文档编号:30356466 上传时间:2021-10-10 格式:DOC 页数:18 大小:619KB
返回 下载 相关 举报
个人账本管理系统_第1页
第1页 / 共18页
个人账本管理系统_第2页
第2页 / 共18页
个人账本管理系统_第3页
第3页 / 共18页
点击查看更多>>
资源描述
软件工程课程设计报告-个人帐本管理一、需求分析1、 系统开发背景当今社会是一个信息与科技并行的时代,在社会中消费时每个人都有的社会行为,消费与人的日常生活是息息相关的,一个人如果有一个很好的消费观的话能给自己带来很到好处。鉴于此目的,编写了一个小型的个人账本管理系统。此系统是一个简单的系统,可以管理个人的日常消费,可以为一般人所使用。对于业务较多的用户来说此系统就不是一个很好的选择。2、 软件主要组成及功能l 收入模块功能:录入收入任何时间录入你所得到的收入(共有以下几种选择:1、工资;2、奖金;3、其他收入;);输入你所的到的金额;录入金额的原因(可选);l 支出模块功能:支出的记录什么时候什么类型的支出(1、生活费;2、日常用品;3、休闲娱乐;4、社交应酬;5、交通费;6、通讯费;7、医疗保健;8、其他支出)输入支出的金额什么原因的支出l 查询模块功能:查询以选择查询的类型(1、支出;2、收入;3、全部)时间(1、今天;2、昨天;3、本周;4、上周;5、本月;6、上月;7、本年;8、去年;9、全部;)以及什么类别消费的金额在什么范围之类的记录将时间,类别,金额,备注显示出来l 统计模块功能:统计选择统计的类型(1、支出;2、收入;)时间(1、今天;2、昨天;3、本周;4、上周;5、本月;6、上月;7、本年;8、去年;9、全部;)什么类别统计的方式(1、总和;2、平均值;3、最大值;4、最小值;)将时间,类别,方式,数值显示出来l 管理模块功能:完成系统相应的管理可以对数据库进行备份数据库的还原查看日志操作。l 修改模块功能:对已有数据进行修改更新操作对记录进行修改对记录删除。l 退出模块退出此系统3、 用户特点及一般约束4、 功能需求(DFD图)收入顶层图:一层图:支出顶层图:一层图:查询顶层图:一层图:统计顶层图:一层图:管理顶层图:一层图:修改顶层图:一层图:5、 外部接口需求在用户界面方面要求对每一个操作都以主界面为前提弹出相应的对话框,硬软件接口方面没有特别的需求,一般用户都可以直接使用。6、 性能需求因为系统本身较小,实际使用的人群的特点,响应时间可能有不同的要求。7、 软件属性需求在数据的检索、数据的增删改方面必须做到丝毫不差,满足软件开发的正确性的要求。必须充分考虑软件的异常处理机制以及软件的复用性,以增强软件的健壮性。在软件的保密性方面可以不用考虑,此软件主要是面向小型用户,对系统的保密没有要求。所开发出来的软件必须是可维护的,要有可以升级的空间,要预留接口,方便后面软件的升级。8、 数据需求(ER图)二、项目概要设计1、 总体设计(系统总流程图)2、 各个界面的截图及相应的操作规则在第一次运行是要首先运行此文件对控件进行注册。l 第一次运行的结果如图所示l 收入l 支出l 查询l 统计l 管理l 退出三、详细设计1、 进行项目详细设计工作;2、 写出详细设计说明书。四、编 码1、此系统用MFC来编写。2、编码分工:3、各个模块核心代码查询模块:/ CSelect 消息处理程序void CSelect:OnBnClickedOk() /确定查询/ TODO: 在此添加控件通知处理程序代码UpdateData(true);CString type,date,kind,count,start,end;m_type.GetLBText(m_type.GetCurSel(),type);m_date.GetLBText(m_date.GetCurSel(),date);m_kind.GetLBText(m_kind.GetCurSel(),kind);m_count.GetLBText(m_count.GetCurSel(),count);CTime t = CTime:GetCurrentTime();int tyear,tmonth,tday;CString year,month,day;tyear=t.GetYear();tmonth=t.GetMonth();tday=t.GetDay();if(date=今天)year.Format(_T(%d),tyear);if(tmonth10)month.Format(_T(0%d),tmonth);elsemonth.Format(_T(%d),tmonth);if(tday= +start+and 时间= +count+ order by 时间asc);_RecordsetPtr m_pRecordset;m_pRecordset = m_AdoConn.GetRecordSet(_bstr_t)sql);m_list.DeleteAllItems();while(m_AdoConn.m_pRecordset-adoEOF=0)m_list.InsertItem(0,_T();m_list.SetItemText(0,0,(_bstr_t)m_pRecordset-GetCollect(_T(时间);m_list.SetItemText(0,1,(_bstr_t)m_pRecordset-GetCollect(_T(类别);m_list.SetItemText(0,2,(_bstr_t)m_pRecordset-GetCollect(_T(金额);m_list.SetItemText(0,3,(_bstr_t)m_pRecordset-GetCollect(_T(备注);m_pRecordset-MoveNext();str=m_list.GetItemText(0,0);if(str=_T()m_list.DeleteAllItems();m_date.GetLBText(m_date.GetCurSel(),str1);m_kind.GetLBText(m_kind.GetCurSel(),str2);m_count.GetLBText(m_count.GetCurSel(),str3);str4=_T(无此记录);m_list.InsertItem(0,_T();m_list.SetItemText(0,0,str1);m_list.SetItemText(0,1,str2);m_list.SetItemText(0,2,str3);m_list.SetItemText(0,3,str4);管理模块:void CManage:OnBnClickedButton1() /数据库备份/ TODO: 在此添加控件通知处理程序代码m_button1.EnableWindow(false);m_button2.EnableWindow(true);m_static.SetWindowTextW(_T(请选择备份目录:);m_static.ShowWindow(SW_SHOW);m_button.ShowWindow(SW_SHOW);m_edit.ShowWindow(SW_SHOW);m_edit.SetWindowTextW(_T();flag=1;strname=_T();UpdateData(false);Invalidate(true);void CManage:OnBnClickedButton2() /数据库还原/ TODO: 在此添加控件通知处理程序代码m_button2.EnableWindow(false);m_button1.EnableWindow(true);m_static.SetWindowTextW(_T(请选择还原文件目录:);m_static.ShowWindow(SW_SHOW);m_button.ShowWindow(SW_SHOW);m_edit.ShowWindow(SW_SHOW);m_edit.SetWindowTextW(_T();flag=-1;strname=_T();UpdateData(false);Invalidate(true);void CManage:OnBnClickedButton3() /察看日志/ TODO: 在此添加控件通知处理程序代码CFile file;CTime t=CTime:GetCurrentTime();int tyear,tmonth,tday,thour,tmin,tsec;CString year,month,day,hour,min,sec;tyear=t.GetYear();tmonth=t.GetMonth();tday=t.GetDay();thour=t.GetHour();tmin=t.GetMinute();tsec=t.GetSecond();year.Format(_T(%d),tyear);month.Format(_T(%d),tmonth);day.Format(_T(%d),tday);hour.Format(_T(%d),thour);min.Format(_T(%d),tmin);sec.Format(_T(%d),sec);CString str;str=year+_T()+month+_T()+day+_T( )+hour+_T(:)+min+_T( 察看日志rnrn);void CManage:OnBnClickedButton4() /浏览/ TODO: 在此添加控件通知处理程序代码if(flag=1)UpdateData(true);TCHAR szDirMAX_PATH;BROWSEINFO bi;ITEMIDLIST *pidl;bi.hwndOwner = this-m_hWnd;bi.pidlRoot = NULL;bi.pszDisplayName = szDir;bi.lpszTitle = _T(请选择目录);bi.ulFlags = BIF_RETURNONLYFSDIRS;bi.lpfn = NULL;bi.lParam = 0;bi.iImage = 0;pidl = SHBrowseForFolder(&bi);if(pidl = NULL) return;if(!SHGetPathFromIDList(pidl, szDir) return;else strname=szDir;UpdateData(false); else if(flag=-1)CFileDialog dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY,_T(数据库文件|moneyback.db|);if(dlg.DoModal()=IDOK)strname=dlg.GetPathName();if(strname!=_T()UpdateData(false);收入模块:/ CIncome 消息处理程序void CIncome:OnBnClickedOk() /确定按钮/ TODO: 在此添加控件通知处理程序代码UpdateData(true);if(m_count.IsEmpty()MessageBox(_T(金额不能为空);return ;ADOConn m_AdoConn;m_AdoConn.OnInitADOConn();_bstr_t sql;sql = select * from mymoney;_RecordsetPtr m_pRecordset; m_pRecordset=m_AdoConn.GetRecordSet(sql);CString mydate,mykind;m_date.GetLBText(m_date.GetCurSel(),mydate);m_kind.GetLBText(m_kind.GetCurSel(),mykind);mydate.Remove( );trym_pRecordset-AddNew();/添加新行m_pRecordset-PutCollect(类型,(_bstr_t)_T(0);m_pRecordset-PutCollect(时间,(_bstr_t)mydate);m_pRecordset-PutCollect(类别,(_bstr_t)mykind);m_pRecordset-PutCollect(金额,(_bstr_t)m_count);m_pRecordset-PutCollect(备注,(_bstr_t)m_remark);m_pRecordset-GetFields()-GetItem(类型)-Value = (_bstr_t)_T(0);m_pRecordset-GetFields()-GetItem(时间)-Value = (_bstr_t)mydate;m_pRecordset-GetFields()-GetItem(类别)-Value = (_bstr_t)mykind;m_pRecordset-GetFields()-GetItem(金额)-Value = (_bstr_t)m_count;m_pRecordset-GetFields()-GetItem(备注)-Value = (_bstr_t)m_remark;m_pRecordset-Update();m_AdoConn.ExitConnect();catch(.)MessageBox(_T(操作失败);return;统计模块:/ CCount 消息处理程序void CCount:OnBnClickedOk() /确定统计/ TODO: 在此添加控件通知处理程序代码UpdateData(true);CString type,date,kind,way,start,end;m_type.GetLBText(m_type.GetCurSel(),type);m_date.GetLBText(m_date.GetCurSel(),date);m_kind.GetLBText(m_kind.GetCurSel(),kind);m_way.GetLBText(m_way.GetCurSel(),way);if(type=支出)type=_T(1);elsetype=_T(0);CTime t = CTime:GetCurrentTime();int tyear,tmonth,tday;CString year,month,day;tyear=t.GetYear();tmonth=t.GetMonth();tday=t.GetDay();if(date=今天)year.Format(_T(%d),tyear);month.Format(_T(%d),tmonth);day.Format(_T(%d),tday);start=year+_T(-)+month+_T(-)+day;end=year+_T(-)+month+_T(-)+day;ADOConn m_AdoConn;m_AdoConn.OnInitADOConn();CString sql;if(kind!=_T(所有收入)&kind!=_T(所有支出)&way=_T(总和)sql.Format(_T(select sum(金额) as my from mymoney where 类型= +type+ and 类别= +kind+ and 时间= +start+and 时间adoEOF=0)m_list.InsertItem(0,_T();m_list.SetItemText(0,0,date);m_list.SetItemText(0,1,kind);m_list.SetItemText(0,2,way);trym_list.SetItemText(0,3,(_bstr_t)m_pRecordset-GetCollect(_T(my);catch(.)m_list.SetItemText(0,3,_T(0);m_pRecordset-MoveNext();支出模块:/ COutlay 消息处理程序void COutlay:OnBnClickedOk()/ TODO: 在此添加控件通知处理程序代码UpdateData(true);if(m_count.IsEmpty()MessageBox(_T(金额不能为空);return ;ADOConn m_AdoConn;m_AdoConn.OnInitADOConn();_bstr_t sql;sql = select * from mymoney;_RecordsetPtr m_pRecordset; m_pRecordset=m_AdoConn.GetRecordSet(sql);CString mydate,mykind;m_date.GetLBText(m_date.GetCurSel(),mydate);m_kind.GetLBText(m_kind.GetCurSel(),mykind);mydate.Remove( );trym_pRecordset-AddNew();/添加新行m_pRecordset-PutCollect(类型,(_bstr_t)_T(1);m_pRecordset-PutCollect(时间,(_bstr_t)mydate);m_pRecordset-PutCollect(类别,(_bstr_t)mykind);m_pRecordset-PutCollect(金额,(_bstr_t)m_count);m_pRecordset-PutCollect(备注,(_bstr_t)m_remark);m_pRecordset-GetFields()-GetItem(类型)-Value = (_bstr_t)_T(1);m_pRecordset-GetFields()-GetItem(时间)-Value = (_bstr_t)mydate;m_pRecordset-GetFields()-GetItem(类别)-Value = (_bstr_t)mykind;m_pRecordset-GetFields()-GetItem(金额)-Value = (_bstr_t)m_count;m_pRecordset-GetFields()-GetItem(备注)-Value = (_bstr_t)m_remark;m_pRecordset-Update();m_AdoConn.ExitConnect();catch(.)MessageBox(_T(操作失败);return;五、项目测试1、 黑盒测试用例:2、 白盒测试用例:3、 黑盒测试记录:4、 白盒测试记录:
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!