家庭理财数据库课程设计报告_第1页
家庭理财数据库课程设计报告_第2页
家庭理财数据库课程设计报告_第3页
家庭理财数据库课程设计报告_第4页
家庭理财数据库课程设计报告_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

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

文档简介

1、华 北 科 技 学 院数据库应用课程设计说明书班级: 姓名: 设计题目: 家庭理财系统 设计时间: 2013.12.23 至 2014.1.3 指导教师: 评 语:_评阅成绩: 评阅教师: 28 / 32文档可自由编辑打印目 录设计总说明II第1章 绪论1第2章 总体设计2总体系统结构设计2第3章 数据库设计与实施33.1数据库设计33.1.1需求分析33.1.2逻辑设计:63.1.3物理设计:63.2数据库的实施63.2.1创建数据库63.2.2创建表73.2.3创建视图83.2.4创建索引9第4章 系统界面设计与实现114.1登录模块114.2系统的详细设计134.2.1主界面设计134.

2、2.2收入界面设计144.2.3支出管理界面设计184.2.4余额查询界面设计204.2.5用户注册界面的设计204.2.6用户注销界面的设计21第5章 总 结22参 考 文 献24附 录25设计总说明在如今的社会生活中,收入与支出也呈现多样化,收入方向相对来收比较稳定,但是支出却包罗万象,像平时的手机话费、上网费用、衣食住行等等都需要财产的支出,在这种社会背景下,家庭理财显得越来越重要,这让我们能够更好的把握自己的财产来源和去向。及时的控制和计划个人及家庭的消费,使得在家庭生活中避免出现没钱现象,也避免在生活中出现钱花了却不知道去向,个人及家庭经济出现混乱的现象。家庭理财应当慎重。俗话说“你

3、不理财,财不理你”,只有通过合理的理财,才能够有效的管理家庭资产的合理运用。家庭理财软件不仅可以帮你记帐,更多的是可以实时掌握家庭的收入与支出,掌握资金的变动情况,同时还可以统计出资金的主要流向,从而更合理的分配资金。正因为家庭理财越来越重要,所以开发一个应用于家庭理财的小软件也越来越重要。在本次的数据库课程设计中我开始了家庭理财系统的开发过程。家庭理财系统采用C+6.0编写前台应用于数据的操作,可以进行用户注册、用户注销,用户登录系统,收入的添加、删除、修改、查询,支出的添加、删除、修改、查询,可以进行余额的查询,基本上满足家庭理财的需求。采用SQL2008开发后台,承担的数据的保存、修改和

4、删除,在与SQL数据库之间采用ODBC方式连接。关键词 个人理财管理;Visual C+ 6.0;SQL2008;第1章 绪论本课程设计是在学习了数据库系统和C+语言等有关课程后,通过实际的操作来熟悉数据库和相关软件的连接和操作应用,能够培养独立的完成对相关课题或者项目的分析能力、设计能力和调试能力。通过课本与实践的结合,使学生更好的掌握相关的课程知识。家庭理财系统登录须有数据库中的账号信息,系统可以对条目进行查询、添加、修改、删除等操作,方便用户对财产收入支出的管理。课程设计,着重培养的是学生的自学能力,以及独立分析互联网上和图书馆里的各种资料,用来丰富自己的知识并且提高对SQL、VC+等软

5、件的实际操作能力。通过这次的课程设计,使我们对已经学习过的数据库课程的进一步的掌握,对知识进行最大程度的消化融汇。因此这次的课程设计对我们来说具有非常重要的作用:为以后学习工作做必要的准备和实践,提高自身对数据库开发的能力。第2章 总体设计总体系统结构设计本软件在登录后进入主界面,主界面有四个功能共用户选择,有支出管理、收入管理、余额管理和退出功能。功能设计图如图2.1.所示。删除添加删除添加用户登录支出管理查询查询收入管理修改修改主界面余额管理退出查询 图2.1 系统功能结构图第3章 数据库设计与实施3.1数据库设计数据库的概念结构设计阶段是整个数据库设计的关键,它通过对用户需求进行综合、归

6、纳与抽象,形成一个独立于具体DBMS的概念模型3.1.1需求分析数据字典 数据项是数据库的关系中不可再分的数据单位,下表分别列出了数据的名称、数据类型、长度、取值能否为空。利用SQL Server 2008建立“grlcxt”数据库,其基本表清单及表结构描述如下:数据库中用到的表:数据库表名关系模式名称备注YHB用户表用户信息表SR收入表收入信息表ZC支出表支出信息表 YHB基本情况数据表,结构如下:字段名字段类型Not Null说明IDCharPrimary key,Not Null用户编号NamecharNot Null用户姓名SexcharNot Null性别Passwor

7、dcharNot Null密码bithdatecharNot Null出生日期zhycharNot Null职业 SR数据表,结构如下:字段名字段类型约束控制说明IDCharNot Null用户编号NamecharNot Null用户姓名b_Datecharnot null时间Typechar null收入类型Amountmoneynull收入金额Commentcharnull备注 ZC情况数据表,结构如下:字段名字段类型约束控制说明IDCharNot Null用户编号NamecharNot Null用户姓名b_Datecharnot null时间Titlechar null支出类型Amoun

8、tmoneynull支出金额Commentcharnull备注 由需求分析的结果可知,本系统设计的实体包括:(1)用户基本信息:用户编号,用户姓名,用户密码,性别,出生日期,职业。(2)收入基本信息: 用户编号,用户姓名,记录日期,收入类型,收入金额,备注。(3)支出基本信息: 用户编号,用户姓名,记录日期,支出类型,支出金额,备注。创建流程图:依据数据字典创建数据流图:收入添加修改收入信息支出添加修改支出信息用户收入支出查询删除结果图3.1数据流图创建视图:YECX(余额查询)字段名字段类型约束控制说明总收入moneyNot Null来自视图zzr总支出money

9、Not Null来自视图zzc余额moneynot null总收入-总支出Yhdl(用户登录)字段名字段类型约束控制说明IDCharNot Null用户编号NamecharNot Null用户姓名Passwordcharnot null用户密码Zzc(总支出)字段名字段类型约束控制说明总支出moneyNot Null来自ZC表Zsr(总收入)字段名字段类型约束控制说明总收入moneyNot Null来自SR表 E-R图PasswordNameSexbirthdayIDzhyYHB(用户表)收入查询支出查询IDYHSRYHZCNameIDb_DateNameb_DateTypeSR

10、(收入表)ZC(支出表)TitleAmountAmountYECXCommentComment余额查询图3.2 实体及其属性图3.1.2逻辑设计:逻辑结构的任务是把概念结构设计阶段设计好的基本E-R图转化为宜选用的DBMS所支持的数据模型相符合的逻辑结构,并对其进行优化。对于个人理财系统数据库,收入支出信息表这个关系,考虑到数据库的完整性,其关系模式中对实体的定义如下:用户表:(用户编号,用户姓名,用户密码,性别,出生日期,职业)收入表:(用户编号,用户姓名,记录日期,收入类型,收入金额,备注) 支出表:(用户编号,用户姓名,记录日期,支出类型,支出金额,备注)3.1.3物理设计: 创建索引,

11、索引根据表中的一列或若干列按照一定顺序建立的列值与记录行之间的对应关系表。在表中创建索引可以快速读取数据,保证数据的唯一性,实现表与表之间的参照完整性。 在SR与ZC表中分别建立时间索引。3.2数据库的实施3.2.1创建数据库在创建数据库时,在SQL Server查询分析器中键入以下代码完成数据库的建立。CREATE DATABASE grlcxt ON PRIMARY ( NAME='grgrlcxt_DATA1', 'F:VCgrlcxt_DATA1.mdf', size=20MB, MAXSIZE=UNLIMITED, ), ( NAME='grl

12、cxt_DATA2', 'F:VCgrlcxt_DATA2.ndf', size=5MB, MAXSIZE=100MB, ) LOG ON ( NAME='grlcxt_log1', 'F:VCgrlcxt_log1.ldf', size=50MB, MAXSIZE=1000MB, )结果如图:图3.2创建数据库3.2.2创建表在创建表时在查询分析器中键入如下代码完成表的创建。use grlcxt go create table SR ( ID nchar(20) not null, Name nchar(15) not null, b_

13、Date nchar(15) not null, Type nchar(15) null, Amount money null, Comment nchar(50) null ) create table YHB ( ID nchar(20) not null, Name nchar(15) not null, Password nchar(15) not null, Sex nchar(2) null, birthday money null, zhy nchar(10) null ) create table ZC ( ID nchar(20) not null, Name nchar(1

14、5) not null, b_Date nchar(15) not null, Type nchar(15) null, Amount money null, Comment nchar(50) null )结果如图:图3.3、创建表3.2.3创建视图在创建表时在查询分析器中键入如下代码完成表的创建。use grlcxtgocreate view zzcas select SUM(Amount) as '总支出' from ZC ,YHB WHERE YHB.ID =ZC .ID use grlcxtgocreate view zsras select SUM(Amount)

15、as '总收入' from SR ,YHB WHERE YHB.ID =SR .ID use grlcxtgocreate view YEas select 总收入-总支出 as '余额' from zzc ,zsr use grlcxtgocreate view YHSRas select YHB.ID ,YHB .Name,SR.b_Date ,SR.Type ,SR.Amount ,SR.Comment from YHB,SR WHERE YHB.ID =SR.ID use grlcxtgocreate view YHZCas select YHB.ID

16、,YHB .Name,ZC.b_Date ,ZC.Title ,ZC.Amount ,ZC.Comment from YHB,ZC WHERE YHB.ID =ZC.ID结果如下图:图3.4 视图的创建3.2.4创建索引在创建表时在查询分析器中键入如下代码完成表的创建。Use grlcxtgocreate index aaon SR(b_Date)Use grlcxtgocreate index bbon ZC(b_Date)图3.5 索引创建第4章 系统界面设计与实现4.1登录模块每个软件的应用都需要登录,家庭理财系统的运行首先要通过登录,登录的用户名和密码都是指定好的。当用户名和密码都输入

17、正确时才能登录成功并跳转到主功能界面,如图4.1和图4.2所示。当用户名与密码不匹配时提示错误,具体如图4.3所示。图4.1 用户名和密码输入正确图4.2成功登录并跳转到主功能界面图4.3 用户名或密码错误登录失败在登录界面的设计时用到的函数代码如下:void yhdl:OnButton1() UpdateData(true);CDatabase m_database;CLoginSet *m_recordset=new CLoginSet(&m_database);CString strSQl;strSQl.Format("select Name,Password from

18、 Yhdl where Name='%s' AND Password='%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("登录成功!"); zjm b; b.DoModal();4.2系统的详细设计4.2

19、.1主界面设计本软件的主要功能是对家庭个人日常的财产收入支出条目进行记录、修改、查询和删除等管理操作。所以在软件的主界面上提示用户选择所要进行的操作。在主界面上设计了三个按钮,分别是收入管理、支出管理、余额管理。当点击其中一个按钮时,会跳转到相应操作的界面,跳转功能的实现是运用了 DoModal()函数,同时要在头文件中包含相应跳转到页面的类的头文件。例如跳转到收入管理界面,过程如下:在函数void zjm:OnButton2() 中添加代码zcgl z;z.DoModal(); 同时在头文件中包含#include "zcgl.h"。为了美观在主界面上添加了背景图片。主界面

20、如图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

21、添加记录失败备注:其他功能基本与收入管理基本相同,所以就不一一展示4.2.4余额查询界面设计本界面操作就是查询总收入,总支出,余额。查询记录功能如图所示。图4.15余额管理界面图4.16余额查询界面4.2.5用户注册界面的设计 每个家庭中都会有各自的家庭成员每个成员有不同的收入支出,所以本系统可以有多个用户,进行各自的操作,用户注册如下图所示。图4.17 用户注册4.2.6用户注销界面的设计 用户注销时,同时将数据库中他的收入支出删除,用户注销如下图所示:图4.18 用户注销第5章 总 结在这次数据库课程设计中,我的课题是个人理财系统,我的题目是“家庭理财系统”。在大二第一学期我所选的也是同一

22、个课题,记得当初的数据是保存在文本里面的,存在着读取和查找的麻烦。在本次课程设计中,我所选的课题还是这个课题,我所想的是将自己在上学期的比较麻烦的的查找问题进行修改,让整个系统更加完善,使上学期没有实现的功能在本次课程设计中得以体现。在本次课程是设计一个完整的数据库应用平台,将数据库作为后台,MFC开发前台操作界面,在整个程序设计过程中,我感觉耗费时间最多的就是如何编写代码使得MFC界面可以对数据库进行打开、查找、添加、删除、保存,同时这也是整个程序最重要的一部分。在数据库创建数据时,我除了创建三个基本表,还创建了大量的视图,因为在视图中我提更大量的规则,使得MFC对数据库进行查询时,更加适合

23、用户的使用心理。因为课程设计是一个独立的技能训练,在系统开发过程中许多东西都是课本上没有的东西,这些没有的东西就得靠自己主动去图书馆查询图书资料,网络百度信息,还有问同学老师。在无形中提高了自己的动手能力,锻炼了自己的独立思考的能力,使得自己更加的独立,同时也拉近了与同学之间的关系。通过本次课程设计发现这其中需要的很多知识都是我们没有接触过的,去图书馆查资料的时候才发现我们前面所学到的仅仅是皮毛,hi啊有很多需要我们掌握的东西我们根本不知道。同时也发现很多已经学过的东西我们没有理解到位,不能灵活运用与实际,不能很好的用来解决问题,这就需要我们不断的大量实践,通过不断的自学,不断的发现问题,思考

24、问题,进而解决问题。在这个过程中我们将深刻理解所学知识,同时也可以学到不少很实用的东西。很多东西都没有那么简单,尤其是看起来简单的东西往往越麻烦,我们能做到的就是好好设计细心操作,因为在程序开发过程中,往往已经设计好的程序得到结果不是自己想要的,只好抛弃从头开始,也有是因为自己敲错了一个代码,导致程序出现问题,反反复复修改半天才发现原来就是那么一定小毛病,而就是这点小毛病花费了自己半天时间。所以在程序开发的时候,我们要做的是好好的规划,根据需求一步步设计好程序,按照自己的设计来开发程序,同时在程序开发过程中要注重细心,稳重,出现错误也不要慌,认认真真的该,错误总会有消除的时候,不是有句话说好的

25、软件都是一步一步修改出来的吗?两周时间很快就过去了,本次数据库课程设计也快结束了,我们也有了各自的劳动成果,我们不仅仅是有自己的设计成果,还提高了本分设计能力。同时也有部分不足,在以后的学习生活中一步步将这些不足解决掉。参 考 文 献1.郑阿奇,刘启芬,顾韵华.SQL Server实用教程(第三版).北京:电子工业出版社,2012.2.张荣梅.Visual C+ 程序设计案例教程M.北京:北京大学出版社,2009 3 王瑞,于速. Visual C+数据库系统开发完全手册 M. 北京:人民邮电出版社, 2006.4 朱景德,陈品华.SQL Server数据库系统技

26、术 M. 陕西:西安电子科技大学出版社, 2008.5王珊,萨师煊.数据库系统概论.第四版.高等教育出版社,20066宋辉,曲向丽,宋振龙.Visiual C+实用培训教程.第一版.人民邮电出版社,2008附 录部分源程序代码1登录控制:void yhdl:OnButton1() UpdateData(true);CDatabase m_database;CLoginSet *m_recordset=new CLoginSet(&m_database);CString strSQl;strSQl.Format("select Name,Password from Yhdl w

27、here Name='%s' AND Password='%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("登录成功!"); zjm b; b.DoModal();2.收入添加记录;void sygl:O

28、nButton1() CDatabase m_database;if (!m_database.Open(_T("grlcxt")MessageBox("打开数据库失败。");UpdateData(true);if(!UpdateData()return;TRYCString sql;sql.Format("Insert into SR(ID,Name,b_Date,Type,Amount,Comment) VALUES ('%s','%s','%s','%s','%s&#

29、39;,'%s')",m_idi,m_namei,m_rq,m_lx,m_sm,m_bz);tryif(m_rq.IsEmpty()MessageBox("日期不能为空!");return;/CDatabase m_database;m_database.ExecuteSQL(sql);MessageBox("添加记录成功!");catch(CDBException e)MessageBox("错误!");CATCH(CDBException,ex)AfxMessageBox (ex->m_strErr

30、or);AfxMessageBox (ex->m_strStateNativeOrigin);AND_CATCH(CException,e)TCHAR szError100;e->GetErrorMessage(szError,100);AfxMessageBox (szError);END_CATCH3. 收入修改记录控制:void sygl:OnButton2() / TODO: Add your control notification handler code hereCDatabase m_database;if (!m_database.Open(_T("gr

31、lcxt")MessageBox("打开数据库失败。");UpdateData(true);CString sql;sql.Format("update SR set ID='%s',Name='%s',b_Date='%s',Type='%s',Amount='%s',Comment='%s' where Comment='%s' ",m_idi,m_namei,m_rq,m_lx,m_sm,m_bz,m_bz);m_databas

32、e.ExecuteSQL(sql);m_database.Close();AfxMessageBox ("修改成功!"); 4. 收入查询:void sygl:OnButton5() UpdateData(true); UpdateData(true);CDatabase m_db; if(m_rqq.IsEmpty() ) MessageBox("时间不能为空!"); return; m_db.Open("grlcxt",FALSE,FALSE,"ODBC;",FALSE);CString sql;CRecordset m_rSet(&m_db);sql.Format("select * from GRSR where Password='%s' and b_Date='%s' ",m_mima,m_rqq);m_listll.DeleteAllItems();m_rSet.Open(CRecordset:dy

温馨提示

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

评论

0/150

提交评论