《家庭财务管理系统》数据库技术及应用课程设计报告.docx

上传人:b****4 文档编号:3962415 上传时间:2023-05-06 格式:DOCX 页数:29 大小:118.03KB
下载 相关 举报
《家庭财务管理系统》数据库技术及应用课程设计报告.docx_第1页
第1页 / 共29页
《家庭财务管理系统》数据库技术及应用课程设计报告.docx_第2页
第2页 / 共29页
《家庭财务管理系统》数据库技术及应用课程设计报告.docx_第3页
第3页 / 共29页
《家庭财务管理系统》数据库技术及应用课程设计报告.docx_第4页
第4页 / 共29页
《家庭财务管理系统》数据库技术及应用课程设计报告.docx_第5页
第5页 / 共29页
《家庭财务管理系统》数据库技术及应用课程设计报告.docx_第6页
第6页 / 共29页
《家庭财务管理系统》数据库技术及应用课程设计报告.docx_第7页
第7页 / 共29页
《家庭财务管理系统》数据库技术及应用课程设计报告.docx_第8页
第8页 / 共29页
《家庭财务管理系统》数据库技术及应用课程设计报告.docx_第9页
第9页 / 共29页
《家庭财务管理系统》数据库技术及应用课程设计报告.docx_第10页
第10页 / 共29页
《家庭财务管理系统》数据库技术及应用课程设计报告.docx_第11页
第11页 / 共29页
《家庭财务管理系统》数据库技术及应用课程设计报告.docx_第12页
第12页 / 共29页
《家庭财务管理系统》数据库技术及应用课程设计报告.docx_第13页
第13页 / 共29页
《家庭财务管理系统》数据库技术及应用课程设计报告.docx_第14页
第14页 / 共29页
《家庭财务管理系统》数据库技术及应用课程设计报告.docx_第15页
第15页 / 共29页
《家庭财务管理系统》数据库技术及应用课程设计报告.docx_第16页
第16页 / 共29页
《家庭财务管理系统》数据库技术及应用课程设计报告.docx_第17页
第17页 / 共29页
《家庭财务管理系统》数据库技术及应用课程设计报告.docx_第18页
第18页 / 共29页
《家庭财务管理系统》数据库技术及应用课程设计报告.docx_第19页
第19页 / 共29页
《家庭财务管理系统》数据库技术及应用课程设计报告.docx_第20页
第20页 / 共29页
亲,该文档总共29页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

《家庭财务管理系统》数据库技术及应用课程设计报告.docx

《《家庭财务管理系统》数据库技术及应用课程设计报告.docx》由会员分享,可在线阅读,更多相关《《家庭财务管理系统》数据库技术及应用课程设计报告.docx(29页珍藏版)》请在冰点文库上搜索。

《家庭财务管理系统》数据库技术及应用课程设计报告.docx

《家庭财务管理系统》数据库技术及应用课程设计报告

 

广西民族大学

 

高级数据库技术及应用

课程设计报告

 

课程设计题目:

家庭财务管理系统

所属学院:

信息科学与工程学院

软件学院

专业年级:

2010网络

姓名:

郭璇

学号:

110263100129

指导教师:

葛丽娜蒋荣萍

 

一.课程设计名称………………………………………………….……………….2

二.课程设计目的………………………………………………….……………….2

三.系统概述……………………………………………………….……………….2

四.系统需求分析………………………………………………….……………….2

4.1系统分析……………………………………………….…………………..2

4.2系统需要实现的功能………………………………….………………….2

五.系统设计说明………………………………………………….……………….2

5.1系统E-R图设计………………………………….………………………...3

5.2系统数据库设计……………………………………………………………4

六.实现方案描述………………………………………………….……………….4

6.1信息管理…………………………………………….……………………..4

6.1.1读取信息…………………………………….……………………...4

6.1.2添加信息…………………………………….……………………...6

6.1.3删除信息…………………………………….……………………...8

6.2信息查询…………………………………………….……………………..8

6.2.1按收支人员统计查询……………………….……………………....8

6.2.2按类型进行统计查询……………………….……………………...11

6.2.3同时按类型和人员查询…………………….……………………..16

七.课程设计总结…………………………………………………………………19

一.课程设计名称

家庭财务管理系统。

 

二.课程设计目的

1、通过本次课程设计,对之前课程中学习的VisualC++6.0编程技术和数据库系统与应用进行一次综合的使用。

2、通过开发小型数据库应用系统,充分地实践数据库系统开发的全过程,将书本中学到的数据库理论、数据库设计原理与技术应用到实践中,提高学生的动手能力。

 

三.系统概述

随着经济的发展,人们的消费水平越来越高,消费的类型也在基本的柴米油盐上多了精神层次上的消费。

但是这并不能让我们盲目消费,因此,家庭财务管理系统可对每天的收支进行记账,让我们清楚的知道家庭的收支情况。

平衡收支情况能让我们的生活更加稳定,不会盲目消费,也可在有剩余闲钱的时候去娱乐放松一下。

 

四.系统需求分析

4.1系统分析

家庭财务管理系统可以对家庭成员,收支类型管理,并根据成员和收支类型添加和管理相应的收支信息。

可对每个时间段中某成员或某类型的收支进行统计查询。

4.2系统需要实现的功能

实现家庭财务管理系统支出的相关功能,可以对每天的支出进行记账,记账要实现分类:

1、按不同的支出类型分类;

2、按不同的消费人员进行分类。

可以对历史数据进行查询,查询要实现的功能:

1、指定时间段,可以按类型进行该时间段的支出统计查询。

2、指定时间段,可以按消费人员进行该时间段的支出统计查询。

3、指定时间段,可以同时按类型和消费人员进行该时间段的支出统计查询。

注:

对历史数据的查询需要实现的是:

设定消费,则可以查看该消费人员在特定时间段的消费总额,或者设定消费类型,则可以查看在特定时间段内该消费类型总额为多少。

扩展功能:

能同时实现家庭财务管理系统收入的相关功能,具体功能按照自己的想法实现。

 

五.系统设计说明

5.1系统E-R图设计

5.2系统数据库设计

家庭成员表(Member)

字段名字

字段类型

主键

外键

是否为空

描述

Mname

Char(10)

成员名字

Mno

Char

(2)

成员编号

Sex

Char

(2)

成员性别

Age

int

成员年龄

Phone

Char(11)

成员电话

支出类型表(Consume)

字段名字

字段类型

主键

外键

是否为空

描述

Cname

Char(20)

支出类型名称

Cno

Char

(2)

支出类型编号

成员支出表(CM)

字段名字

字段类型

主键

外键

是否为空

描述

Mname

Char(10)

成员名字

Cname

Char(20)

支出类型名称

Ctime

Datetime

支出时间

Cmoney

Money

支出金额

收入类型信息(Income)

字段名字

字段类型

主键

外键

是否为空

描述

Iname

Char(20)

收入类型名称

Ino

Char

(2)

收入类型编号

成员收入信息(IM)

字段名字

字段类型

主键

外键

是否为空

描述

Mname

Char(10)

成员名字

Iname

Char(20)

收入类型名称

Itime

Datetime

收入时间

Imoney

Money

收入金额

 

六.实现方案描述

6.1信息管理

6.1.1读取信息

对表格中的信息进行读取,方便用户查看已有的信息,对相应的信息进行管理。

第一条:

点击“第一条”按钮,显示表中第一条信息。

上一条:

点击“上一条”按钮,显示上一条信息,若直接点此按钮,从第一条记录开始显示。

若记录已是第一条,提示用户已经是第一条信息。

下一条:

点击“下一条”按钮,显示下一条信息,若直接点此按钮,从第一条记录开始显示。

若记录已是最后一条,提示用户已经是最后的信息。

读取信息功能代码

voidCMemberInfoDialog:

:

OnTOOLBARMemberFirst()

{

//TODO:

Addyourcommandhandlercodehere

MyMemberInfoSet.MoveFirst();//移动到第一条记录

DisplayRecord();//更新窗口显示

}

voidCMemberInfoDialog:

:

OnTOOLBARMemberPrevious()

{

//TODO:

Addyourcommandhandlercodehere

if(m_MemberID.IsEmpty())

{

MyMemberInfoSet.MoveFirst();

DisplayRecord();

}

else

{

if(!

MyMemberInfoSet.IsBOF())//不是第一条记录

{

MyMemberInfoSet.MovePrev();

if(!

MyMemberInfoSet.IsBOF())

DisplayRecord();

else

{

MyMemberInfoSet.MoveNext();

AfxMessageBox("已是第一条信息!

");

}

}

/*else

{

MyMemberInfoSet.MoveNext();

AfxMessageBox("已是第一条信息!

");

}*/

}

}

voidCMemberInfoDialog:

:

OnTOOLBARMemberNext()

{

//TODO:

Addyourcommandhandlercodehere

if(m_MemberID.IsEmpty())

{

MyMemberInfoSet.MoveFirst();

DisplayRecord();

}

else

{

if(!

MyMemberInfoSet.IsEOF())//不是移动到了最后一条

{

MyMemberInfoSet.MoveNext();//移动到下一条记录

if(!

MyMemberInfoSet.IsEOF())//下一条不是移动到了最后一条

DisplayRecord();

else

{

MyMemberInfoSet.MovePrev();

AfxMessageBox("已是最后一条信息!

");

}

}

else

{

MyMemberInfoSet.MovePrev();

AfxMessageBox("已是最后一条信息!

");

}

}

}

6.1.2添加信息

为每一个表格添加记录,对于不能为空的选项,在用户未填写的时候做出相应的提示,只有正确输入后才能添加。

但由于主码要唯一,所以要进行判断用户输入的信息是否与表中记录冲突,如果冲突,提示用户修改相应的选项。

正确无误后可以将记录保存到相应的表格里,实现对信息的添加。

添加信息功能代码

voidCMemberInfoDialog:

:

OnTOOLBARMemberSave()

{

//TODO:

Addyourcommandhandlercodehere

UpdateData(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{

CStringFind_MName;

CStringFind_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;

}

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;//设置添加状态为false

DisplayRecord();//更新显示

}

}

}

6.1.3删除信息

用户点击“删除”按钮,可以对当前信息进行删除。

因为删除信息后不可恢复,所以当用户删除信息时,再次询问是否要删除,只有用户确认后才能删除。

删除信息功能代码

voidCMemberInfoDialog:

:

OnTOOLBARMemberDelete()

{

//TODO:

Addyourcommandhandlercodehere

intret=MessageBox("是否要删除该记录?

","提示",MB_OKCANCEL);

if(ret==1)

{

MyMemberInfoSet.Delete();//删除记录

MyMemberInfoSet.Requery();

AfxMessageBox("删除成功!

");

}

else

;

DisplayRecord();//更新显示

}

 

6.2信息查询

6.2.1按收支人员统计查询

按家庭成员查询收支情况,在下来列表中可供用户选择已用的成员,避免出现打错字等麻烦。

用户选择时间,在相应的时间段内查询信息。

如果该成员在该时段内没有收支情况,提示用户没有该成员的记录,如果有便在下来列表中显示详情和总额。

如果选择的时间有错,提示用户重新输入。

按支出人员统计查询界面和功能代码

voidCSelect_CM_By_Member:

:

OnBUTTONSelect()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

m_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;

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)

{

By_MemberSet.MoveNext();

continue;

}

CStringMname=By_MemberSet.m_Mname;

CStringCname=By_MemberSet.m_Cname;

CStringCtime=By_MemberSet.m_Ctime.Format("'%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;

}

}

6.2.2按类型进行统计查询

按收支类型查询收支情况,在下来列表中可供用户选择已用的类型,避免出现打错字等麻烦。

用户选择时间,在相应的时间段内查询信息。

如果该类型在该时段内没有收支情况,提示用户没有该类型的记录,如果有便在下来列表中显示详情和总额。

如果选择的时间有错,提示用户重新输入。

按类型进行统计查询界面和功能代码

BOOLCSelect_CM_By_Consume:

:

OnInitDialog()

{

CDialog:

:

OnInitDialog();

//TODO:

Addextrainitializationhere

CStringSelectAll;

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_FULLROW

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2