家庭财务管理系统数据库技术及应用课程设计报告_第1页
家庭财务管理系统数据库技术及应用课程设计报告_第2页
家庭财务管理系统数据库技术及应用课程设计报告_第3页
家庭财务管理系统数据库技术及应用课程设计报告_第4页
家庭财务管理系统数据库技术及应用课程设计报告_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

1、XXXX民族大学高级数据库技术及应用课程设计报告课程设计题目:家庭财务管理系统所属学院:信息科学与工程学院软件学院专业年级:2010网络XX:郭璇学号:9指导教师:葛丽娜蒋荣萍专业资料 TOC o 1-5 h z .课程设计名称.2.课程设计目的.2.系统概述.2.系统需求分析.2 HYPERLINK l bookmark6 o Current Document 系统分析.2 HYPERLINK l bookmark8 o Current Document 系统需要实现的功能.2.系统设计说明.2 HYPERLINK l bookmark10 o Current Document 系统E-R图

2、设计.3 HYPERLINK l bookmark12 o Current Document 系统数据库设计4 HYPERLINK l bookmark14 o Current Document .实现方案描述.4 HYPERLINK l bookmark16 o Current Document 信息管理.4读取信息.4添加信息.6删除信息.8 HYPERLINK l bookmark24 o Current Document 信息查询.8按收支人员统计查询8按类型进展统计查询.11同时按类型和人员查询.16.课程设计总结19课程设计名称家庭财务管理系统。二.课程设计目的1、通过本次课程设计

3、,对之前课程中学习的VisualC+6.0编程技术和数据库系统与应用进展一次综合的使用。2、通过开发小型数据库应用系统,充分地实践数据库系统开发的全过程,将书本中学到的数据库理论、数据库设计原理与技术应用到实践中,提高学生的动手能力。三.系统概述随着经济的开展,人们的消费水平越来越高,消费的类型也在根本的柴米油盐上多了精神层次上的消费。但是这并不能让我们盲目消费,因此,家庭财务管理系统可对每天的收支进展记账,让我们清楚的知道家庭的收支情况。平衡收支情况能让我们的生活更加稳定,不会盲目消费,也可在有剩余闲钱的时候去娱乐放松一下。四系统需求分析系统分析家庭财务管理系统可以对家庭成员,收支类型管理,

4、并根据成员和收支类型添加和管理相应的收支信息。可对每个时间段中某成员或某类型的收支进展统计查询。系统需要实现的功能实现家庭财务管理系统支出的相关功能,可以对每天的支出进展记账,记账要实现分类:1、按不同的支出类型分类;2、按不同的消费人员进展分类。可以对历史数据进展查询,查询要实现的功能:1、指定时间段,可以按类型进展该时间段的支出统计查询。2、指定时间段,可以按消费人员进展该时间段的支出统计查询。3、指定时间段,可以同时按类型和消费人员进展该时间段的支出统计查询。注:对历史数据的查询需要实现的是:设定消费,那么可以查看该消费人员在特定时间段的消费总额,或者设定消费类型,那么可以查看在特定时间

5、段该消费类型总额为多少。扩展功能:能同时实现家庭财务管理系统收入的相关功能,具体功能按照自己的想法实现。五系统设计说明5.1系统E-R图设计CXJ成支出类型/D员2v、/O:收入(金额)收入类型5.2系统数据库设计字段名字MnameMnoSex字段类型Char(10)Char(2)Char(2)主键是外键是否为空描述成员名字成员编号成员性别家庭成员表MemberAgePhoneintChar(11)是成员年龄成员支出类型表Consume字段名字ameo字段类型Char(20)Char(2)主键是外键是否为空描述支出类型名称支出类型编号成员支出表CM字段名字字段类型主键外键是否为空描述Mname

6、Char(10)是是成员名字ameChar(20)是是支出类型名称CtimeDatetime是支出时间CmoneyMoney支出金额收入类型信息Ine字段名字InameIno字段类型Char(20)Char(2)主键是外键是否为空描述收入类型名称收入类型编号成员收入信息IM字段名字字段类型主键外键是否为空描述MnameChar(10)是是成员名字InameChar(20)是是收入类型名称ItimeImoneyDatetimeMoney是收入时间收入金额六.实现方案描述信息管理读取信息对表格中的信息进展读取,方便用户查看已有的信息,对相应的信息进展管理。第一条:点击”第一条按钮,显示表中第一条信

7、息。上一条:点击”上一条按钮,显示上一条信息,假设直接点此按钮,从第一条记录开场显示。假设记录已是第一条,提示用户已经是第一条信息。下一条:点击“下一条按钮,显示下一条信息,假设直接点此按钮,从第一条记录开场显示。假设记录已是最后一条,提示用户已经是最后的信息。读取信息功能代码voidCMemberInfoDialog:OnTOOLBARMemberFirst()/TODO:AddyourmandhandlercodehereMyMemberInfoSet.MoveFirst();移动到第一条记录DisplayRecord()/更新窗口显示voidCMemberInfoDialog:OnTOO

8、LBARMemberPrevious()/TODO:Addyourmandhandlercodehereif(m_MemberID.IsEmpty()MyMemberInfoSet.MoveFirst();DisplayRecord();elseif(!MyMemberInfoSet.IsBOF()不是第一条记录MyMemberInfoSet.MovePrev();if(!MyMemberInfoSet.IsBOF()DisplayRecord();elseMyMemberInfoSet.MoveNext();AfxMessageBox已是第一条信息!);/*elseMyMemberInfoS

9、et.MoveNext();AfxMessageBox(已是第一条信息!);*/voidCMemberInfoDialog:OnTOOLBARMemberNext()/TODO:Addyourmandhandlercodehereif(m_MemberID.IsEmpty()MyMemberInfoSet.MoveFirst();DisplayRecord();elseif(!MyMemberInfoSet.IsEOF()/不是移动到了最后一条MyMemberInfoSet.MoveNext();/移动到下一条记录if(!MyMemberInfoSet.IsEOF()/下一条不是移动到了最后一

10、条DisplayRecord();elseMyMemberInfoSet.MovePrev();AfxMessageBox已是最后一条信息!);elseMyMemberInfoSet.MovePrev();AfxMessageBox。已是最后一条信息!);添加信息为每一个表格添加记录,对于不能为空的选项,在用户未填写的时候做出相应的提示,只有正确输入后才能添加。但由于主码要唯一,所以要进展判断用户输入的信息是否与表中记录冲突,如果冲突,提示用户修改相应的选项。正确无误后可以将记录保存到相应的表格里,实现对信息的添加。添加信息功能代码voidCMemberInfoDialog:OnTOOLBAR

11、MemberSave()/TODO:AddyourmandhandlercodehereUpdateData(true);/读入输入的资料if(m_MemberName.IsEmpty()AfxMessageBoxC请输入成员名字!);elseif(m_MemberID.IsEmpty()AfxMessageBoxC请输入成员编号!);elseim_MemberSex.IsEmpty()AfxMessageBoxC请输入成员性别!);elseim_MemberAge100)AfxMessageBox(,成员年龄应在到!);els。CStringFind_MName;CStringFind_MN

12、o;Find_MNo.Format(SELECT*FROMMemberWHEREMno=%s,m_MemberID);if(MyMemberInfoSet_MNo.IsOpen()/关闭表MyMemberInfoSet_MNo.Close();if(!MyMemberInfoSet_MNo.Open(AFX_DB_USE_DEFAULT_TYPE,Find_MNo)AfxMessageBoxC成员信息表翻开失败!);if(MyMemberInfoSet_MNo.GetRecordCount()!=0)AfxMessageBoxC成员编号不能重复,请修改后再保存!);if(MyMemberInf

13、oSet_MNo.IsOpen()MyMemberInfoSet_MNo.Close();return;elseFind_MName.Format(SELECT*FROMMemberWHEREMname=%s,m_MemberName);if(MyMemberInfoSetMName.IsOpen()/关闭表MyMemberInfoSet_MName.Close();if(!MyMemberInfoSet_MName.Open(AFX_DB_USE_DEFAULT_TYPE,Find_MName)AfxMessageBox成员信息表翻开失败!);if(MyMemberInfoSet_MName

14、.GetRecordCount()!=0)AfxMessageBox成员名字不能重复,请修改后再保存!);if(MyMemberInfoSet_MName.IsOpen()MyMemberInfoSet_MName.Close();return;MyMemberInfoSet.AddNew();/如果是添加记录,就调用添加记录的函数处理MyMemberInfoSet.m_Mname=m_MemberName;/对应变量更新MyMemberInfoSet.m_Mno=m_MemberID;MyMemberInfoSet.m_Sex=m_MemberSex;MyMemberInfoSet.m_Ag

15、e=m_MemberAge;MyMemberInfoSet.m_Phone=m_MemberPhone;MyMemberInfoSet.Update();MyMemberInfoSet.Requery();AfxMessageBox(保存成功!);/m_Add=false;/设置添加状态为falseDisplayRecord()/更新显示删除信息用户点击“删除按钮,可以对当前信息进展删除。因为删除信息后不可恢复,所以当用户删除信息时,再次询问是否要删除,只有用户确认后才能删除。删除信息功能代码voidCMemberInfoDialog:OnTOOLBARMemberDelete()/TODO:

16、Addyourmandhandlercodehereintret=MessageBox是否要删除该记录?,提示,MB_OKCANCEL);if(ret=1)MyMemberInfoSet.Delete();/删除记录MyMemberInfoSet.Requery();AfxMessageBox(删除成功!);else;DisplayRecord()/更新显示信息查询按收支人员统计查询按家庭成员查询收支情况,在下来列表中可供用户选择已用的成员,防止出现打错字等麻烦。用户选择时间,在相应的时间段查询信息。如果该成员在该时段没有收支情况,提示用户没有该成员的记录,如果有便在下来列表中显示详情和总额。

17、如果选择的时间有错,提示用户重新输入。清输入查询成员名字消费日期从201V1/197支出信息详情消费总额示例编辑框元返回按支出人员统计查询界面和功能代码voidCSelect_CM_By_Member:OnBUTTONSelect()/TODO:Addyourcontrolnotificationhandlercodeherem_List.DeleteAllItems();UpdateData(true);if(m_MemberName.IsEmpty()AfxMessageBoxC请输入要查询的成员名字!);return;if(m_BeginTimem_EndTime)AfxMessageB

18、oxC时间输入有错,请重新输入!);return;if(m_MemberName=全部)m_TotalMoney=0;while(!By_MemberSet.IsEOF()if(m_BeginTimeBy_MemberSet.m_Ctime|By_MemberSet.m_Ctimem_EndTime)By_MemberSet.MoveNext();continue;CStringMname=By_MemberSet.m_Mname;CStringame=By_MemberSet.m_ame;Mname.TrimRight();ame.TrimRight();CStringCtime=By_Me

19、mberSet.m_Ctime.Format(%Y-%m-%d);CStringCMoney=By_MemberSet.m_Cmoney;m_List.InsertItem(0,);m_List.SetItemText(0,0,Mname);m_List.SetItemText(0,1,ame);m_List.SetItemText(0,2,Ctime);m_List.SetItemText(0,3,CMoney);intMoney=atoi(CMoney);m_TotalMoney+=Money;By_MemberSet.MoveNext();UpdateDatafalse);return;

20、elseCStringSelectMember;SelectMembePSELECT*FROMCMWHEREMname=;SelectMember+=m_MemberName;SelectMember+=;if(By_MemberSet.IsOpen()By_MemberSet.Close();if(!By_MemberSet.Open(AFX_DB_USE_DEFAULT_TYPE,SelectMember)AfxMessageBox(Mumber表翻开失败!);if(By_MemberSet.GetRecordCount()=0)AfxMessageBoxC此成员不存在,请确认后再输入!)

21、;if(By_MemberSet.IsOpen()By_MemberSet.Close();return;while(m_BeginTimeBy_MemberSet.m_Ctime|By_MemberSet.m_Ctimem_EndTime)if(旧y_MemberSet.IsEOF()By_MemberSet.MoveNext();elseAfxMessageBox此成员在此时段无消费记录!);if(By_MemberSet.IsOpen()By_MemberSet.Close();return;m_TotalMoney=0;while(!By_MemberSet.IsEOF()if(m_B

22、eginTimeBy_MemberSet.m_Ctime|By_MemberSet.m_Ctimem_EndTime)ByMemberSet.MoveNext();continue;CStringMname=By_MemberSet.m_Mname;CStringame=By_MemberSet.m_ame;CStringCtime=By_MemberSet.m_Ctime.Format(%Y-%m-%d);CStringCMoney=By_MemberSet.m_Cmoney;Mname.TrimRight();ame.TrimRight();m_List.InsertItem(0,Mnam

23、e);m_List.SetItemText(0,1,ame);m_List.SetItemText(0,2,Ctime);m_List.SetItemText(0,3,CMoney);intMoney=atoi(CMoney);m_TotalMoney+=Money;By_MemberSet.MoveNext();UpdateData(false);return;按类型进展统计查询按收支类型查询收支情况,在下来列表中可供用户选择已用的类型,防止出现打错字等麻烦。用户选择时间,在相应的时间段查询信息。如果该类型在该时段没有收支情况,提示用户没有该类型的记录,如果有便在下来列表中显示详情和总额。如

24、果选择的时间有错,提示用户重新输入。 TOC o 1-5 h z n局首姿类型查询亘114a1111miiii-iiii-in-niiiim1111kii1114111miiiimiiiit1hiiiim-iiiihhiiiiimiiiiH-iiiji,入I!类型名称|-查询!I酒费日期A2013/1/19Q-到2013rH19力|-(I.III支出信息详情iI,I哨费总额示例编辑框元I色色色色 色红黄蓝绩 颜XKHK二中.可修编.返回按类型进展统计查询界面和功能代码BOOLCSelect_CM_By_Consume:OnInitDialog()CDialog:OnInitDialog();/

25、TODO:AddextrainitializationhereCStringSelectAll;SelectAll=SELECT*FROMCM;if(SelectAllConsume.IsOpen()SelectAllConsume.Close();if(!SelectAllConsume.Open(AFX_DB_USE_DEFAULT_TYPE,SelectAll)AfxMessageBox消费信息表翻开失败!);while(!SelectAllConsume.IsEOF()m_SelectConsumeName.AddString(SelectAllConsume.m_ame);Selec

26、tAllConsume.MoveNext();m_List.InsertColumn(0,消费者);m_List.InsertColumn(1,7肖费类型);m_List.InsertColumn(2,时间);m_List.InsertColumn(3,“金额(元);RECTrect;m_List.GetWindowRect(&rect);intwid=rect.right-rect.left;m_List.SetColumnWidth(0,wid/4-5);m_List.SetColumnWidth(1,wid/4);m_List.SetColumnWidth(2,wid/4);m_List

27、.SetColumnWidth(3,wid/4);m_List.SetExtendedStyle(LVS_EX_FULLROWSELECT);/TODO:AddextrainitializationhereCStringsqlStr;sqlStr=SELECT*FROMCM;if(!By_ConsumeSet.Open(AFX_DB_USE_DEFAULT_TYPE,sqlStr)/翻开数据表AfxMessageBox。支出信息表翻开失败!);returnTRUE;/returnTRUEunlessyousetthefocustoacontrol/EXCEPTION:OCXPropertyPa

28、gesshouldreturnFALSEvoidCSelect_CM_By_Consume:OnBUTTONSelect()/TODO:Addyourcontrolnotificationhandlercodeherem_List.DeleteAllItems();UpdateData(true);if(m_ConsumeName.IsEmpty()AfxMessageBox(,请输入要查询的消费类型!);return;if(m_BeginTimem_EndTime)AfxMessageBoxC时间输入有错,请重新输入!);return;if(m_ConsumeName=全部)/m_Total

29、Money=0;while(旧y_ConsumeSet.IsEOF()if(m_BeginTimeBy_ConsumeSet.m_Ctime|By_ConsumeSet.m_Ctimem_EndTime)By_ConsumeSet.MoveNext();continue;CStringMname=By_ConsumeSet.m_Mname;CStringame=By_ConsumeSet.m_ame;Mname.TrimRight();ame.TrimRight();CStringCtime=By_ConsumeSet.m_Ctime.Format(%Y-%m-%d);CStringCMone

30、y=By_ConsumeSet.m_Cmoney;m_List.InsertItem(0,);m_List.SetItemText(0,0,Mname);m_List.SetItemText(0,1,ame);m_List.SetItemText(0,2,Ctime);m_List.SetItemText(0,3,CMoney);intMoney=atoi(CMoney);m_TotalMoney+=Money;By_ConsumeSet.MoveNext();UpdateDatafalse);return;elseCStringSelectConsume;SelectConsume=ELEC

31、T*FROMCMWHEREame=;SelectConsume+=m_ConsumeName;SelectConsume+-;if(By_ConsumeSet.IsOpen()By_ConsumeSet.Close();if(!By_ConsumeSet.Open(AFX_DB_USE_DEFAULT_TYPE,SelectConsume)AfxMessageBox消费类型表翻开失败!);if(By_ConsumeSet.GetRecordCount()=0)AfxMessageBox此成员不存在,请确认后再输入!);if(By_ConsumeSet.IsOpen()By_ConsumeSet

32、.Close();return;while(m_BeginTimeBy_ConsumeSet.m_Ctime|By_ConsumeSet.m_Ctimem_EndTime)if(!By_ConsumeSet.IsEOF()By_ConsumeSet.MoveNext();elseAfxMessageBox此消费类型在此时段无消费记录!);if(By_ConsumeSet.IsOpen()By_ConsumeSet.Close();return;/m_TotalMoney=0;while(旧y_ConsumeSet.IsEOF()if(m_BeginTimeBy_ConsumeSet.m_Cti

33、me|By_ConsumeSet.m_Ctimem_EndTime)By_ConsumeSet.MoveNext();continue;CStringMname=By_ConsumeSet.m_Mname;CStringame=By_ConsumeSet.m_ame;CStringCtime=By_ConsumeSet.m_Ctime.Format(%Y-%m-%d);CStringCMoney=By_ConsumeSet.m_Cmoney;Mname.TrimRight();ame.TrimRight();m_List.InsertItem(0,Mname);m_List.SetItemTe

34、xt(0,1,ame);m_List.SetItemText(0,2,Ctime);m_List.SetItemText(0,3,CMoney);intMoney=atoi(CMoney);m_TotalMoney+=Money;By_ConsumeSet.MoveNext();UpdateData(false);return;同时按类型和人员查询按收支类型和成员查询收支情况,在下来列表中可供用户选择已用的类型和成员,防止出现打错字等麻烦。用户选择时间,在相应的时间段查询信息。如果该类型和成员在该时段没有收支情况,提示用户没有该的记录,如果有便在下来列表中显示详情和总额。如果选择的时间有错,提

35、示用户重新输入。可按成员般型直询陵I请输入成员名字类型名称查询消费日期从2013/1/19m_EndTime)AfxMessageBoxC时间输入有错,请重新输入!);return;if(m_ConsumeName=全部|m_MemberName=全部)/m_TotalMoney=0;while(!SelectCM.IsEOF()if(m_BeginTimeSelectCM.m_Ctime|SelectCM.m_Ctimem_EndTime)SelectCM.MoveNext();continue;CStringMname=SelectCM.m_Mname;CStringame=SelectC

36、M.m_ame;Mname.TrimRight();ame.TrimRight();CStringCtime=SelectCM.m_Ctime.Format(%Y-%m-%d);CStringCMoney=SelectCM.m_Cmoney;m_List.InsertItem(0,);m_List.SetItemText(0,0,Mname);m_List.SetItemText(0,1,ame);m_List.SetItemText(0,2,Ctime);m_List.SetItemText(0,3,CMoney);intMoney=atoi(CMoney);m_TotalMoney+=Money;SelectCM.MoveNext();UpdateDatafalse);return;elseCStringSelectCMInfo;SelectCMInfo=SELECT*FROMCMWHEREame=;SelectCMInfo+=m_ConsumeName;SelectCMInfo+=andMname=;SelectCMInfo+=m_MemberName;SelectCMInfo+=;if(SelectCM.IsO

温馨提示

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

评论

0/150

提交评论