家庭理财数据库课程设计报告.docx
- 文档编号:11767018
- 上传时间:2023-04-01
- 格式:DOCX
- 页数:34
- 大小:1.70MB
家庭理财数据库课程设计报告.docx
《家庭理财数据库课程设计报告.docx》由会员分享,可在线阅读,更多相关《家庭理财数据库课程设计报告.docx(34页珍藏版)》请在冰豆网上搜索。
家庭理财数据库课程设计报告
华北科技学院
数据库应用
课程设计说明书
班级:
姓名:
设计题目:
家庭理财系统
设计时间:
2013.12.23至2014.1.3
指导教师:
评语:
_________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
评阅成绩:
____评阅教师:
_____
设计总说明
在如今的社会生活中,收入与支出也呈现多样化,收入方向相对来收比较稳定,但是支出却包罗万象,像平时的手机话费、上网费用、衣食住行等等都需要财产的支出,在这种社会背景下,家庭理财显得越来越重要,这让我们能够更好的把握自己的财产来源和去向。
及时的控制和计划个人及家庭的消费,使得在家庭生活中避免出现没钱现象,也避免在生活中出现钱花了却不知道去向,个人及家庭经济出现混乱的现象。
家庭理财应当慎重。
俗话说“你不理财,财不理你”,只有通过合理的理财,才能够有效的管理家庭资产的合理运用。
家庭理财软件不仅可以帮你记帐,更多的是可以实时掌握家庭的收入与支出,掌握资金的变动情况,同时还可以统计出资金的主要流向,从而更合理的分配资金。
正因为家庭理财越来越重要,所以开发一个应用于家庭理财的小软件也越来越重要。
在本次的数据库课程设计中我开始了家庭理财系统的开发过程。
家庭理财系统采用C++6.0编写前台应用于数据的操作,可以进行用户注册、用户注销,用户登录系统,收入的添加、删除、修改、查询,支出的添加、删除、修改、查询,可以进行余额的查询,基本上满足家庭理财的需求。
采用SQL2008开发后台,承担的数据的保存、修改和删除,在C++与SQL数据库之间采用ODBC方式连接。
关键词个人理财管理;VisualC++6.0;SQL2008;
第1章绪论
本课程设计是在学习了数据库系统和C++语言等有关课程后,通过实际的操作来熟悉数据库和相关软件的连接和操作应用,能够培养独立的完成对相关课题或者项目的分析能力、设计能力和调试能力。
通过课本与实践的结合,使学生更好的掌握相关的课程知识。
家庭理财系统登录须有数据库中的账号信息,系统可以对条目进行查询、添加、修改、删除等操作,方便用户对财产收入支出的管理。
课程设计,着重培养的是学生的自学能力,以及独立分析互联网上和图书馆里的各种资料,用来丰富自己的知识并且提高对SQL、VC++等软件的实际操作能力。
通过这次的课程设计,使我们对已经学习过的数据库课程的进一步的掌握,对知识进行最大程度的消化融汇。
因此这次的课程设计对我们来说具有非常重要的作用:
为以后学习工作做必要的准备和实践,提高自身对数据库开发的能力。
第2章总体设计
总体系统结构设计
本软件在登录后进入主界面,主界面有四个功能共用户选择,有支出管理、收入管理、余额管理和退出功能。
功能设计图如图2.1.所示。
图2.1系统功能结构图
第3章数据库设计与实施
3.1数据库设计
数据库的概念结构设计阶段是整个数据库设计的关键,它通过对用户需求进行综合、归纳与抽象,形成一个独立于具体DBMS的概念模型
3.1.1需求分析
3.1.1.1数据字典
数据项是数据库的关系中不可再分的数据单位,下表分别列出了数据的名称、数据类型、长度、取值能否为空。
利用SQLServer2008建立“grlcxt”数据库,其基本表清单及表结构描述如下:
数据库中用到的表:
数据库表名
关系模式名称
备注
YHB
用户表
用户信息表
SR
收入表
收入信息表
ZC
支出表
支出信息表
YHB基本情况数据表,结构如下:
字段名
字段类型
NotNull
说明
ID
Char
Primarykey,NotNull
用户编号
Name
char
NotNull
用户姓名
Sex
char
NotNull
性别
Password
char
NotNull
密码
bithdate
char
NotNull
出生日期
zhy
char
NotNull
职业
SR数据表,结构如下:
字段名
字段类型
约束控制
说明
ID
Char
NotNull
用户编号
Name
char
NotNull
用户姓名
b_Date
char
notnull
时间
Type
char
null
收入类型
Amount
money
null
收入金额
Comment
char
null
备注
ZC情况数据表,结构如下:
字段名
字段类型
约束控制
说明
ID
Char
NotNull
用户编号
Name
char
NotNull
用户姓名
b_Date
char
notnull
时间
Title
char
null
支出类型
Amount
money
null
支出金额
Comment
char
null
备注
由需求分析的结果可知,本系统设计的实体包括:
(1)用户基本信息:
用户编号,用户姓名,用户密码,性别,出生日期,职业。
(2)收入基本信息:
用户编号,用户姓名,记录日期,收入类型,收入金额,备注。
(3)支出基本信息:
用户编号,用户姓名,记录日期,支出类型,支出金额,备注。
3.1.1.2创建流程图:
依据数据字典创建数据流图:
图3.1数据流图
3.1.1.3创建视图:
YECX(余额查询)
字段名
字段类型
约束控制
说明
总收入
money
NotNull
来自视图zzr
总支出
money
NotNull
来自视图zzc
余额
money
notnull
总收入-总支出
Yhdl(用户登录)
字段名
字段类型
约束控制
说明
ID
Char
NotNull
用户编号
Name
char
NotNull
用户姓名
Password
char
notnull
用户密码
Zzc(总支出)
字段名
字段类型
约束控制
说明
总支出
money
NotNull
来自ZC表
Zsr(总收入)
字段名
字段类型
约束控制
说明
总收入
money
NotNull
来自SR表
3.1.1.4E-R图
图3.2实体及其属性图
3.1.2逻辑设计:
逻辑结构的任务是把概念结构设计阶段设计好的基本E-R图转化为宜选用的DBMS所支持的数据模型相符合的逻辑结构,并对其进行优化。
对于个人理财系统数据库,收入支出信息表这个关系,考虑到数据库的完整性,其关系模式中对实体的定义如下:
用户表:
(用户编号,用户姓名,用户密码,性别,出生日期,职业)
收入表:
(用户编号,用户姓名,记录日期,收入类型,收入金额,备注)
支出表:
(用户编号,用户姓名,记录日期,支出类型,支出金额,备注)
3.1.3物理设计:
创建索引,索引根据表中的一列或若干列按照一定顺序建立的列值与记录行之间的对应关系表。
在表中创建索引可以快速读取数据,保证数据的唯一性,实现表与表之间的参照完整性。
在SR与ZC表中分别建立时间索引。
3.2数据库的实施
3.2.1创建数据库
在创建数据库时,在SQLServer查询分析器中键入以下代码完成数据库的建立。
CREATEDATABASEgrlcxt
ON
PRIMARY
(
NAME='grgrlcxt_DATA1',
FILENAME='F:
\VC\grlcxt_DATA1.mdf',
size=20MB,
MAXSIZE=UNLIMITED,
FILEGROWTH=10%
),
(
NAME='grlcxt_DATA2',
FILENAME='F:
\VC\grlcxt_DATA2.ndf',
size=5MB,
MAXSIZE=100MB,
FILEGROWTH=10%
)
LOGON
(
NAME='grlcxt_log1',
FILENAME='F:
\VC\grlcxt_log1.ldf',
size=50MB,
MAXSIZE=1000MB,
FILEGROWTH=10%
)
结果如图:
图3.2创建数据库
3.2.2创建表
在创建表时在查询分析器中键入如下代码完成表的创建。
usegrlcxt
go
createtableSR
(
IDnchar(20)notnull,
Namenchar(15)notnull,
b_Datenchar(15)notnull,
Typenchar(15)null,
Amountmoneynull,
Commentnchar(50)null
)
createtableYHB
(
IDnchar(20)notnull,
Namenchar(15)notnull,
Passwordnchar(15)notnull,
Sexnchar
(2)null,
birthdaymoneynull,
zhynchar(10)null
)
createtableZC
(
IDnchar(20)notnull,
Namenchar(15)notnull,
b_Datenchar(15)notnull,
Typenchar(15)null,
Amountmoneynull,
Commentnchar(50)null
)
结果如图:
图3.3、创建表
3.2.3创建视图
在创建表时在查询分析器中键入如下代码完成表的创建。
usegrlcxt
go
createviewzzc
as
selectSUM(Amount)as'总支出'
fromZC,YHB
WHEREYHB.ID=ZC.ID
usegrlcxt
go
createviewzsr
as
selectSUM(Amount)as'总收入'
fromSR,YHB
WHEREYHB.ID=SR.ID
usegrlcxt
go
createviewYE
as
select总收入-总支出as'余额'
fromzzc,zsr
usegrlcxt
go
createviewYHSR
as
selectYHB.ID,YHB.Name,SR.b_Date,SR.Type,SR.Amount,SR.Comment
fromYHB,SR
WHEREYHB.ID=SR.ID
usegrlcxt
go
createviewYHZC
as
selectYHB.ID,YHB.Name,ZC.b_Date,ZC.Title,ZC.Amount,ZC.Comment
fromYHB,ZC
WHEREYHB.ID=ZC.ID
结果如下图:
图3.4视图的创建
3.2.4创建索引
在创建表时在查询分析器中键入如下代码完成表的创建。
Usegrlcxt
go
createindexaa
onSR(b_Date)
Usegrlcxt
go
createindexbb
onZC(b_Date)
图3.5索引创建
第4章系统界面设计与实现
4.1登录模块
每个软件的应用都需要登录,家庭理财系统的运行首先要通过登录,登录的用户名和密码都是指定好的。
当用户名和密码都输入正确时才能登录成功并跳转到主功能界面,如图4.1和图4.2所示。
当用户名与密码不匹配时提示错误,具体如图4.3所示。
图4.1用户名和密码输入正确
图4.2成功登录并跳转到主功能界面
图4.3用户名或密码错误登录失败
在登录界面的设计时用到的函数代码如下:
voidyhdl:
:
OnButton1()
{
UpdateData(true);
CDatabasem_database;
CLoginSet*m_recordset=newCLoginSet(&m_database);
CStringstrSQl;
strSQl.Format("selectName,PasswordfromYhdlwhereName='%s'ANDPassword='%s'",m_yhname,m_yhmm);
m_recordset->Open(AFX_DB_USE_DEFAULT_TYPE,strSQl);
if(m_recordset->GetRecordCount()==0)
{
AfxMessageBox("用户名或密码错误!
");
}
else{
m_database.Close();
AfxMessageBox("登录成功!
");
zjmb;
b.DoModal();
}
}
4.2系统的详细设计
4.2.1主界面设计
本软件的主要功能是对家庭个人日常的财产收入支出条目进行记录、修改、查询和删除等管理操作。
所以在软件的主界面上提示用户选择所要进行的操作。
在主界面上设计了三个按钮,分别是收入管理、支出管理、余额管理。
当点击其中一个按钮时,会跳转到相应操作的界面,跳转功能的实现是运用了DoModal()函数,同时要在头文件中包含相应跳转到页面的类的头文件。
例如跳转到收入管理界面,过程如下:
在函数voidzjm:
:
OnButton2()中添加代码zcglz;z.DoModal();同时在头文件中包含#include"zcgl.h"。
为了美观在主界面上添加了背景图片。
主界面如图4.4所示。
图4.4软件主界面
4.2.2收入界面设计
收入管理界面的功能是针对收入进行一系列操作,如添加记录,修改记录,删除记录,查询记录,当操作成功是会有相应的正确操作提示;
如一下图片所示:
图4.5收入界面
图4.6成功添加记录
图4.7时间为空添加记录失败
图4.8修改成功
图4.9删除成功
在查询功能中分当天查询和以前的查询
图4.10一天内的查询结果
图4.11退出收入管理
4.2.3支出管理界面设计
收入管理界面的功能是针对收入进行一系列操作,如添加记录,修改记录,删除记录,查询记录,当操作成功是会有相应的正确操作提示;
如一下图片所示:
图4.12支出窗口
图4.13成功添加记录
图4.14添加记录失败
备注:
其他功能基本与收入管理基本相同,所以就不一一展示
4.2.4余额查询界面设计
本界面操作就是查询总收入,总支出,余额。
查询记录功能如图所示。
图4.15余额管理界面
图4.16余额查询界面
4.2.5用户注册界面的设计
每个家庭中都会有各自的家庭成员每个成员有不同的收入支出,所以本系统可以有多个用户,进行各自的操作,用户注册如下图所示。
图4.17用户注册
4.2.6用户注销界面的设计
用户注销时,同时将数据库中他的收入支出删除,用户注销如下图所示:
图4.18用户注销
第5章总结
在这次数据库课程设计中,我的课题是《个人理财系统》,我的题目是“家庭理财系统”。
在大二第一学期我所选的也是同一个课题,记得当初的数据是保存在文本里面的,存在着读取和查找的麻烦。
在本次课程设计中,我所选的课题还是这个课题,我所想的是将自己在上学期的比较麻烦的的查找问题进行修改,让整个系统更加完善,使上学期没有实现的功能在本次课程设计中得以体现。
在本次课程是设计一个完整的数据库应用平台,将数据库作为后台,MFC开发前台操作界面,在整个程序设计过程中,我感觉耗费时间最多的就是如何编写代码使得MFC界面可以对数据库进行打开、查找、添加、删除、保存,同时这也是整个程序最重要的一部分。
在数据库创建数据时,我除了创建三个基本表,还创建了大量的视图,因为在视图中我提更大量的规则,使得MFC对数据库进行查询时,更加适合用户的使用心理。
因为课程设计是一个独立的技能训练,在系统开发过程中许多东西都是课本上没有的东西,这些没有的东西就得靠自己主动去图书馆查询图书资料,网络XX信息,还有问同学老师。
在无形中提高了自己的动手能力,锻炼了自己的独立思考的能力,使得自己更加的独立,同时也拉近了与同学之间的关系。
通过本次课程设计发现这其中需要的很多知识都是我们没有接触过的,去图书馆查资料的时候才发现我们前面所学到的仅仅是皮毛,hi啊有很多需要我们掌握的东西我们根本不知道。
同时也发现很多已经学过的东西我们没有理解到位,不能灵活运用与实际,不能很好的用来解决问题,这就需要我们不断的大量实践,通过不断的自学,不断的发现问题,思考问题,进而解决问题。
在这个过程中我们将深刻理解所学知识,同时也可以学到不少很实用的东西。
很多东西都没有那么简单,尤其是看起来简单的东西往往越麻烦,我们能做到的就是好好设计细心操作,因为在程序开发过程中,往往已经设计好的程序得到结果不是自己想要的,只好抛弃从头开始,也有是因为自己敲错了一个代码,导致程序出现问题,反反复复修改半天才发现原来就是那么一定小毛病,而就是这点小毛病花费了自己半天时间。
所以在程序开发的时候,我们要做的是好好的规划,根据需求一步步设计好程序,按照自己的设计来开发程序,同时在程序开发过程中要注重细心,稳重,出现错误也不要慌,认认真真的该,错误总会有消除的时候,不是有句话说好的软件都是一步一步修改出来的吗?
两周时间很快就过去了,本次数据库课程设计也快结束了,我们也有了各自的劳动成果,我们不仅仅是有自己的设计成果,还提高了本分设计能力。
同时也有部分不足,在以后的学习生活中一步步将这些不足解决掉。
参考文献
[1].郑阿奇,刘启芬,顾韵华.SQL Server实用教程(第三版).北京:
电子工业出版社,2012.
[2].张荣梅.Visual C++ 程序设计案例教程[M].北京:
北京大学出版社,2009
[3]王瑞,于速.VisualC++数据库系统开发完全手册[M].北京:
人民邮电出版社,2006.
[4]朱景德,陈品华.SQLServer数据库系统技术[M].陕西:
西安电子科技大学出版社,2008.
[5]王珊,萨师煊.数据库系统概论.第四版.高等教育出版社,2006
[6]宋辉,曲向丽,宋振龙.VisiualC++实用培训教程.第一版.人民邮电出版社,2008
附录
部分源程序代码
1.登录控制:
voidyhdl:
:
OnButton1()
{
UpdateData(true);
CDatabasem_database;
CLoginSet*m_recordset=newCLoginSet(&m_database);
CStringstrSQl;
strSQl.Format("selectName,PasswordfromYhdlwhereName='%s'ANDPassword='%s'",m_yhname,m_yhmm);
m_recordset->Open(AFX_DB_USE_DEFAULT_TYPE,strSQl);
if(m_recordset->GetRecordCount()==0)
{
AfxMessageBox("用户名或密码错误!
");
}
else{
m_database.Close();
AfxMessageBox("登录成功!
");
zjmb;
b.DoModal();
}
}
2.收入添加记录;
voidsygl:
:
OnButton1()
{
CDatabasem_database;
if(!
m_database.Open(_T("grlcxt")))
MessageBox("打开数据库失败。
。
。
");
UpdateData(true);
if(!
UpdateData())
return;
TRY{
CStringsql;
sql.Format("InsertintoSR(ID,Name,b_Date,Type,Amount,Comment)VALUES('%s','%s','%s','%s','%s','%s')",m_idi,m_namei,m_rq,m_lx,m_sm,m_bz);
try{
if(m_rq.IsEmpty()){
MessageBox("日期不能为空!
");
return;
}
//CDatabasem_database;
m_database.ExecuteSQL(sql);
MessageBox("添加记录成功!
");
}catch(CDBExceptione){
MessageBox("错误!
");
}
}
CATCH(CDBException,ex)
{
AfxMessageBox(ex->m_strError);
AfxMessageBox(ex->m_strStateNativeOrigin);
}
AND_CATCH(CException,e)
{
TCHARszError[100];
e->GetErrorMessage(szError,100);
AfxMessageBox(szError);
}
END_CATCH
}
3.收入修改记录控制:
voidsygl:
:
OnButton2()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
CDatabasem_database;
if(!
m_database.Open(_T("grlcxt")))
MessageBox("打开数据库失败。
。
。
");
UpdateData(true);
CStringsql;
sql.Format("updateSRsetID='%s',Name='%s',b_Date='%s',Type='%s',Amount='%s',Comment='%s'whereComment='%s'",m_idi,m_namei,m_rq,m_lx,m
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 家庭理财 数据库 课程设计 报告