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

下载本文档

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

文档简介

.广西民族大学高级数据库技术及应用课程设计报告课程设计题目: 家庭财务管理系统..所属学院: 信息科学与工程学院软件学院专业年级: 2010 网络姓名: 郭璇学号: 指导教师: 葛丽娜 蒋荣萍word专业资料.目 录一.课程设计名称⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ .⋯⋯⋯⋯⋯⋯.2二.课程设计目的⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ .⋯⋯⋯⋯⋯⋯.2三.系统概述⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ .⋯⋯⋯⋯⋯⋯.2四.系统需求分析⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ .⋯⋯⋯⋯⋯⋯.24.1系统分析⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.⋯⋯⋯⋯⋯⋯⋯..24.2系统需要实现的功能 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.⋯⋯⋯⋯⋯⋯⋯.2五.系统设计说明⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ .⋯⋯⋯⋯⋯⋯.25.1系统E-R图设计⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.⋯⋯⋯⋯⋯⋯⋯⋯⋯...35.2系统数据库设计⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 4六.实现方案描述⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ .⋯⋯⋯⋯⋯⋯.46.1信息管理⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.⋯⋯⋯⋯⋯⋯⋯⋯..4读取信息⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.⋯⋯⋯⋯⋯⋯⋯⋯...4添加信息⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.⋯⋯⋯⋯⋯⋯⋯⋯...6删除信息⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.⋯⋯⋯⋯⋯⋯⋯⋯...86.2信息查询⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.⋯⋯⋯⋯⋯⋯⋯⋯..8按收支人员统计查询⋯⋯⋯⋯⋯⋯⋯⋯⋯.⋯⋯⋯⋯⋯⋯⋯⋯8按类型进行统计查询⋯⋯⋯⋯⋯⋯⋯⋯⋯.⋯⋯⋯⋯⋯⋯⋯⋯...11同时按类型和人员查询 ⋯⋯⋯⋯⋯⋯⋯⋯.⋯⋯⋯⋯⋯⋯⋯⋯..16七.课程设计总结 ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 19word专业资料.word专业资料.一. 课程设计名称家庭财务管理系统。.课程设计目的、通过本次课程设计,对之前课程中学习的VisualC++6.0编程技术和数据库系统与应用进行一次综合的使用。、通过开发小型数据库应用系统,充分地实践数据库系统开发的全过程,将书本中学到的数据库理论、数据库设计原理与技术应用到实践中,提高学生的动手能力。三. 系统概述随着经济的发展,人们的消费水平越来越高,消费的类型也在基本的柴米油盐上多了精神层次上的消费。但是这并不能让我们盲目消费,因此, 家庭财务管理系统可对每天的收支进行记账,让我们清楚的知道家庭的收支情况。 平衡收支情况能让我们的生活更加稳定, 不会盲目消费,也可在有剩余闲钱的时候去娱乐放松一下。四. 系统需求分析4.1系统分析家庭财务管理系统可以对家庭成员, 收支类型管理,并根据成员和收支类型添加和管理相应的收支信息。可对每个时间段中某成员或某类型的收支进行统计查询。4.2 系统需要实现的功能实现家庭财务管理系统支出的相关功能,可以对每天的支出进行记账,记账要实现分类:1、按不同的支出类型分类;2、按不同的消费人员进行分类。可以对历史数据进行查询,查询要实现的功能:、指定时间段,可以按类型进行该时间段的支出统计查询。word专业资料.、指定时间段,可以按消费人员进行该时间段的支出统计查询。、指定时间段,可以同时按类型和消费人员进行该时间段的支出统计查询。注:对历史数据的查询需要实现的是:设定消费,则可以查看该消费人员在特定时间段的消费总额,或者设定消费类型,则可以查看在特定时间段该消费类型总额为多少。扩展功能:能同时实现家庭财务管理系统收入的相关功能,具体功能按照自己的想法实现。五.系统设计说明5.1系统E-R图设计word专业资料.性别编号 年龄姓名电话成员时间 时间支出 收入金额金额支出类型 收入类型名称 编号 名称 编号5.2系统数据库设计家庭成员表( Member )字段名字字段类型主键外键是否为空描述MnameChar(10)是成员名字MnoChar(2)成员编号word专业资料.Sex Char(2) 成员性别Age int 成员年龄Phone Char(11) 是 成员支出类型表(Consume)字段名字字段类型主键外键是否为空描述CnameChar(20)是支出类型名称CnoChar(2)支出类型编号成员支出表(CM)字段名字字段类型主键外键是否为空描述MnameChar(10)是是成员名字CnameChar(20)是是支出类型名称CtimeDatetime是支出时间CmoneyMoney支出金额收入类型信息( Income )字段名字字段类型主键外键是否为空描述InameChar(20)是收入类型名称InoChar(2)收入类型编号成员收入信息( IM)word专业资料.字段名字字段类型主键外键是否为空描述MnameChar(10)是是成员名字InameChar(20)是是收入类型名称ItimeDatetime是收入时间ImoneyMoney收入金额六.实现方案描述6.1信息管理读取信息对表格中的信息进行读取,方便用户查看已有的信息,对相应的信息进行管理。第一条:点击“第一条”按钮,显示表中第一条信息。上一条:点击“上一条”按钮,显示上一条信息,若直接点此按钮,从第一条记录开始显示。若记录已是第一条,提示用户已经是第一条信息。下一条:点击“下一条”按钮,显示下一条信息,若直接点此按钮,从第一条记录开始显示。若记录已是最后一条,提示用户已经是最后的信息。读取信息功能代码voidCMemberInfoDialog::OnTOOLBARMemberFirst(){//TODO:AddyourcommandhandlercodehereMyMemberInfoSet.MoveFirst(); //移动到第一条记录DisplayRecord(); //更新窗口显示}voidCMemberInfoDialog::OnTOOLBARMemberPrevious(){TODO:Addyourcommandhandlercodehereif(m_MemberID.IsEmpty()){MyMemberInfoSet.MoveFirst();word专业资料.DisplayRecord();}else{if(!MyMemberInfoSet.IsBOF()) //不是第一条记录{MyMemberInfoSet.MovePrev();if(!MyMemberInfoSet.IsBOF())DisplayRecord();else{MyMemberInfoSet.MoveNext();AfxMessageBox( "已是第一条信息 !");}}/*else{MyMemberInfoSet.MoveNext();AfxMessageBox(" 已是第一条信息!");}*/}}voidCMemberInfoDialog::OnTOOLBARMemberNext(){TODO:Addyourcommandhandlercodehereif(m_MemberID.IsEmpty()){MyMemberInfoSet.MoveFirst();DisplayRecord();}else{if(!MyMemberInfoSet.IsEOF()) //不是移动到了最后一条{MyMemberInfoSet.MoveNext(); //移动到下一条记录if(!MyMemberInfoSet.IsEOF()) //下一条不是移动到了最后一条DisplayRecord();else{MyMemberInfoSet.MovePrev();AfxMessageBox( "已是最后一条信息 !");}word专业资料.}else{MyMemberInfoSet.MovePrev();AfxMessageBox( "已是最后一条信息 !");}}}添加信息为每一个表格添加记录,对于不能为空的选项,在用户未填写的时候做出相应的提示, 只有正确输入后才能添加。但由于主码要唯一,所以要进行判断用户输入的信息是否与表中记录冲突, 如果冲突,提示用户修改相应的选项。正确无误后可以将记录保存到相应的表格里, 实现对信息的添加。添加信息功能代码voidCMemberInfoDialog::OnTOOLBARMemberSave(){TODO:AddyourcommandhandlercodehereUpdateData(true);//读入输入的资料if(m_MemberName.IsEmpty())AfxMessageBox( "请输入成员名字 !");elseif(m_MemberID.IsEmpty())AfxMessageBox( "请输入成员编号 !");elseif(m_MemberSex.IsEmpty())AfxMessageBox( "请输入成员性别 !");elseif(m_MemberAge<0||m_MemberAge>100)AfxMessageBox( "成员年龄应在到 !");else{CString Find_MName;CString Find_MNo;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))AfxMessageBox( "成员信息表打开失败 !");if(MyMemberInfoSet_MNo.GetRecordCount()!=0){AfxMessageBox( "成员编号不能重复 ,请修改后再保存 !");if(MyMemberInfoSet_MNo.IsOpen())MyMemberInfoSet_MNo.Close();return;word专业资料.}else{Find_MName.Format( "SELECT*FROMMemberWHEREMname='%s'",m_MemberName);if(MyMemberInfoSet_MName.IsOpen()) //关闭表MyMemberInfoSet_MName.Close();if(!MyMemberInfoSet_MName.Open(AFX_DB_USE_DEFAULT_TYPE,Find_MName))AfxMessageBox( "成员信息表打开失败 !");if(MyMemberInfoSet_MName.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_Age=m_MemberAge;MyMemberInfoSet.m_Phone=m_MemberPhone;MyMemberInfoSet.Update();MyMemberInfoSet.Requery();AfxMessageBox( "保存成功!");//m_Add=false;// 设置添加状态为 falseDisplayRecord(); //更新显示}}} 删除信息用户点击“删除”按钮,可以对当前信息进行删除。因为删除信息后不可恢复,所以当用户删除信息时,再次询问是否要删除,只有用户确认后才能删除。删除信息功能代码word专业资料.voidCMemberInfoDialog::OnTOOLBARMemberDelete(){//TODO:Addyourcommandhandlercodehereintret=MessageBox("是否要删除该记录?","提示",MB_OKCANCEL);if(ret==1){MyMemberInfoSet.Delete(); //删除记录MyMemberInfoSet.Requery();AfxMessageBox( "删除成功!");}else;DisplayRecord(); //更新显示}6.2信息查询按收支人员统计查询按家庭成员查询收支情况,在下来列表中可供用户选择已用的成员,避免出现打错字等麻烦。用户选择时间,在相应的时间段查询信息。如果该成员在该时段没有收支情况, 提示用户没有该成员的记录,如果有便在下来列表中显示详情和总额。如果选择的时间有错,提示用户重新输入。word专业资料.按支出人员统计查询界面和功能代码voidCSelect_CM_By_Member::OnBUTTONSelect(){TODO:Addyourcontrolnotificationhandlercodeherem_List.DeleteAllItems();UpdateData(true);if(m_MemberName.IsEmpty()){AfxMessageBox( "请输入要查询的成员名字 !");return;}if(m_BeginTime>m_EndTime){AfxMessageBox( "时间输入有错,请重新输入 !");return;}if(m_MemberName== "全部"){m_TotalMoney=0;while(!By_MemberSet.IsEOF()){if(m_BeginTime>By_MemberSet.m_Ctime||By_MemberSet.m_Ctime>m_EndTime){By_MemberSet.MoveNext();continue;}CStringMname=By_MemberSet.m_Mname;CStringCname=By_MemberSet.m_Cname;Mname.TrimRight();Cname.TrimRight();CStringCtime=By_MemberSet.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,Cname);m_List.SetItemText(0,2,Ctime);m_List.SetItemText(0,3,CMoney);intMoney=atoi(CMoney);m_TotalMoney+=Money;word专业资料By_MemberSet.MoveNext();}UpdateData(false);return;.}else{CStringSelectMember;SelectMember= "SELECT*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){AfxMessageBox( "此成员不存在,请确认后再输入 !");if(By_MemberSet.IsOpen()){By_MemberSet.Close();}return;}while(m_BeginTime>By_MemberSet.m_Ctime||By_MemberSet.m_Ctime>m_EndTime){if(!By_MemberSet.IsEOF())By_MemberSet.MoveNext();else{AfxMessageBox( "此成员在此时段无消费记录 !");if(By_MemberSet.IsOpen()){By_MemberSet.Close();}return;}}m_TotalMoney=0;while(!By_MemberSet.IsEOF()){if(m_BeginTime>By_MemberSet.m_Ctime||By_MemberSet.m_Ctime>m_EndTime){word专业资料.By_MemberSet.MoveNext();continue ;}CStringMname=By_MemberSet.m_Mname;CStringCname=By_MemberSet.m_Cname; "'%Y-%m-%d'" );CStringCMoney=By_MemberSet.m_Cmoney;Mname.TrimRight();Cname.TrimRight();m_List.InsertItem(0,Mname);m_List.SetItemText(0,1,Cname);m_List.SetItemText(0,2,Ctime);m_List.SetItemText(0,3,CMoney);intMoney=atoi(CMoney);m_TotalMoney+=Money;By_MemberSet.MoveNext();}UpdateData( false);return;}} 按类型进行统计查询按收支类型查询收支情况,在下来列表中可供用户选择已用的类型,避免出现打错字等麻烦。用户选择时间,在相应的时间段查询信息。如果该类型在该时段没有收支情况,提示用户没有该类型的记录,如果有便在下来列表中显示详情和总额。如果选择的时间有错,提示用户重新输入。word专业资料.按类型进行统计查询界面和功能代码BOOLCSelect_CM_By_Consume::OnInitDialog(){CDialog::OnInitDialog();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_Cname);SelectAllConsume.MoveNext();}m_List.InsertColumn(0, "消费者");m_List.InsertColumn(1, "消费类型");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.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( "支出信息表打开失败 !");}return TRUE; //returnTRUEunlessyousetthefocustoacontrol//EXCEPTION:OCXPropertyPagesshouldreturnFALSEword专业资料.}voidCSelect_CM_By_Consume::OnBUTTONSelect(){TODO:Addyourcontrolnotificationhandlercodeherem_List.DeleteAllItems();UpdateData(true);if(m_ConsumeName.IsEmpty()){AfxMessageBox("请输入要查询的消费类型!");return;}if(m_BeginTime>m_EndTime){AfxMessageBox( "时间输入有错,请重新输入 !");return;}if(m_ConsumeName== "全部"){m_TotalMoney=0;while(!By_ConsumeSet.IsEOF()){if(m_BeginTime>By_ConsumeSet.m_Ctime||By_ConsumeSet.m_Ctime>m_EndTime){By_ConsumeSet.MoveNext();continue ;}CStringMname=By_ConsumeSet.m_Mname;CStringCname=By_ConsumeSet.m_Cname;Mname.TrimRight();Cname.TrimRight(); "'%Y-%m-%d'" );CStringCMoney=By_ConsumeSet.m_Cmoney;m_List.InsertItem(0, "");m_List.SetItemText(0,0,Mname);m_List.SetItemText(0,1,Cname);m_List.SetItemText(0,2,Ctime);m_List.SetItemText(0,3,CMoney);intMoney=atoi(CMoney);m_TotalMoney+=Money;By_ConsumeSet.MoveNext();}UpdateData( false);word专业资料.return;}else{CStringSelectConsume;SelectConsume= "SELECT*FROMCMWHERECname='" ;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.Close();}return;}while(m_BeginTime>By_ConsumeSet.m_Ctime||By_ConsumeSet.m_Ctime>m_EndTime){if(!By_ConsumeSet.IsEOF())By_ConsumeSet.MoveNext();else{AfxMessageBox( "此消费类型在此时段无消费记录 !");if(By_ConsumeSet.IsOpen()){By_ConsumeSet.Close();}return;}}//m_TotalMoney=0;while(!By_ConsumeSet.IsEOF()){if(m_BeginTime>By_ConsumeSet.m_Ctime||By_ConsumeSet.m_Ctime>m_EndTime)word专业资料.{By_ConsumeSet.MoveNext();continue ;}CStringMname=By_ConsumeSet.m_Mname;CStringCname=By_ConsumeSet.m_Cname; "'%Y-%m-%d'" );CStringCMoney=By_ConsumeSet.m_Cmoney;Mname.TrimRight();Cname.TrimRight();m_List.InsertItem(0,Mname);m_List.SetItemText(0,1,Cname);m_List.SetItemText(0,2,Ctime);m_List.SetItemText(0,3,CMoney);intMoney=atoi(CMoney);m_TotalMoney+=Money;By_ConsumeSet.MoveNext();}UpdateData( false);return;}}同时按类型和人员查询按收支类型和成员查询收支情况, 在下来列表中可供用户选择已用的类型和成员, 避免出现打错字等麻烦。用户选择时间,在相应的时间段查询信息。如果该类型和成员在该时段没有收支情况,提示用户没有该的记录,如果有便在下来列表中显示详情和总额。 如果选择的时间有错,提示用户重新输入。word专业资料.按类型和人员统计查询界面和功能代码voidCSelect_CM::OnBUTTONSelect(){TODO:Addyourcontrolnotificationhandlercodeherem_List.DeleteAllItems();UpdateData(true);if(m_ConsumeName.IsEmpty()){AfxMessageBox("请输入要查询的消费类型!");return;}if(m_MemberName.IsEmpty()){AfxMessageBox( "请输入要查询的成员名字 !");return;}if(m_BeginTime>m_EndTime){AfxMessageBox( "时间输入有错,请重新输入 !");return;}word专业资料.if(m_ConsumeName== "全部"||m_MemberName== "全部"){m_TotalMoney=0;while(!SelectCM.IsEOF()){if(m_BeginTime>SelectCM.m_Ctime||SelectCM.m_Ctime>m_EndTime){SelectCM.MoveNext();continue;}CStringMname=SelectCM.m_Mname;CStringCname=SelectCM.m_Cname;Mname.TrimRight();Cname.TrimRight(); "'%Y-%m-%d'" );CStringCMoney=SelectCM.m_Cmoney;m_List.InsertItem(0, "");m_List.SetItemText(0,0,Mname);m_List.SetItemText(0,1,Cname);m_List.SetItemText(0,2,Ctime);m_List.SetItemText(0,3,CMoney);intMoney=atoi(CMoney);m_TotalMoney+=Money;SelectCM.MoveNext();}UpdateData( false);return;}else{CStringSelectCMInfo;SelectCMInfo= "SELECT*FROMCMWHERECname='" ;SelectCMInfo+=m_ConsumeName;SelectCMInfo+= "'andMname='" ;SelectCMInfo+

温馨提示

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

评论

0/150

提交评论