资源描述
. 编 号:审定成绩:邮电大学毕业设计(论文)设计(论文)题目:桌面电子钱包程序开发摘 要随着社会的发展,人们生活水平的提高,人们的经济收入也随之提高,利用计算机实现对个人财务的管理朝着必然的趋势发展。过去,人们的收入还没有达到要用计算机来计算的程度,但是今非昔比,电脑的使用越来越普与,也很方便。许多的个人和家庭,拥有自己的一片天地,面对生活中的小的收支,肯定会觉得很烦琐。记录和统计生活中的细小的收支确实是一项烦琐、复杂而又细致的事情。此时,许多人就希望能有一个帮助自己管理个人和家庭收支系统的出现。用计算机管理家庭和个人收支,不仅能够保证每项收支核算准确无误、快速输出,而且还可以利用计算机对有关的收支信息进行统计。同时计算机有着手工管理所无法比拟的优点,例如查找方便、可靠性高、存储量大、寿命长、成本低等。这些优点能够极提高人们的办事效率和统计的准确性。本系统是结合现代人的个人和家庭财务管理需求开发出来的单机版桌面电子钱包,即个人和家庭财务管理系统,是一款解决个人和家庭收支管理的记账软件。整个程序的设计从符合操作简便、界面友好、实用、安全的要求出发,完成个人和家庭收支管理的全过程,包括设置每一笔收入和支出的类型、设置每次收入和支出的明细、条件查询收支明细、完成收支统计,以与进行数据备份等。本设计主要面向需要每天记录生活中收支信息的人,便于统计和分类查询。同时能有效地减少纸的使用。关键词Access 数据库 Visual C+6.0 桌面电子钱包 个人理财ABSTRACTWith the development of society, peoples living standard is improved, peoples income also increased, the use of computers to achieve personal financial management is imperative. The past, peoples income has not yet reached to use the computer to calculate the extent, but is losing the use of computers is becoming increasingly popular, but also very convenient. Currently, many individuals and families own their own piece of heaven and earth, in the face of lifes small income and expenditure, and will definitely find it very cumbersome! Records and statistics of the small life balance of payments is a cumbersome, complex and delicate matter. At this point, many people want to have a helping individuals and families to manage the emergence of revenue and expenditure system. Use of computer management of family and personal income and expenditure, not only to ensure the accuracy of each revenue and expenditure accounting, fast output, but also can make use of the computer information relating to revenue and expenditure statistics. At the same time, the computer cannot be compared with manual management of the merits of, for example, quickly search, find convenient, high reliability and large storage capacity, long life and low cost. These advantages can greatly raise the efficiency and statistical accuracy.This system is combined with modern personal and family financial management needs of developed stand-alone desktop electronic wallet, that is, personal and family financial management system is a solution to personal and family income and expenditure account management software. From the whole system in line with the simple, user-friendly, and practical and safety requirements, the completion of personal and household income and expenditure management process, including settings for each type of income and expenditure, income and expenditure for each set of details, the conditions of inquiries received supporting details, complete the balance of payments statistics, as well as data backup. The products are mainly for balance of payments recorded a days needs for statistics and classification of inquiries. At the same time, it can effectively reduce the use of paper.Key wordsAccess Database Visual C+6.0 Desktop e-purse Personal Finance目 录前言1第一章绪论2第一节个人财务管理系统设计背景2第二节个人财务管理软件发展现状3第三节本文设计目标与论文结构3一、本文的设计目标3二、论文的结构4第二章开发工具与相关技术简介5第一节开发工具的选择5第二节技术简介5一、Visual C+简介5二、Microsoft Access 概述7三、ODBC概述8第三节本章小结12第三章需求分析13第一节功能需求13第二节数据需求13第三节其它需求15第四节本章小结15第四章概要设计16第一节系统总体结构16一、功能设计17二、系统主要功能结构17第二节数据库概念模型设计17第三节本章小结19第五章详细设计20第一节数据库表结构设计20第二节程序逻辑22一、查询、修改、删除功能模块流程图22二、添加功能模块流程图23第三节本章小结23第六章系统主要功能模块的实现24第一节程序启动界面的设计24一、控件设计24二、启动界面重要代码设计25第二节程序登录界面的设计26一、控件设计26二、登录模块功能流程图27第三节数据维护界面的设计27一、控件设计28二、数据维护功能流程图28三、重要代码设计29第四节收支统计界面的设计30一、控件设计31二、收支统计功能流程图31第五节其他功能界面的设计32第六节本章小结34第七章系统功能测试35第一节测试基本容35一、测试要点35二、功能、数据流与边界值测试35三、测试环境36第二节测试结论36结论37致38参考文献39附录40一、英文原文40二、英文翻译45三、源程序4956 / 60前 言随着信息技术广泛、深入地应用到人类社会的各个领域并发挥着越来越重要的作用。计算机软件技术应用于信息管理是发展的必然。作为计算机应用的一部分,充分发挥计算机的优势,能够极提高管理的效率,是真正意义上的合理利用资源。随着人们生活的提高,个人财务管理成为人们很重要或者说是必须的需求,在生活中记录收支、统计收支,并且与时地统计收支金额,有效地控制日常开支。本系统是一个协助个人进行财务管理的系统,包括了收支记录(收入记录、支出记录、收支分类管理);收支统计管理;数据备份等,是一套适合个人财务管理的软件系统。第一章 绪 论第一节 个人财务管理系统设计背景以前在中国,收入不高,收入与支出结构单一等等现实,阻碍了财务管理软件市场的发展,真正投入这一领域进行软件开发的企业并不多见,人们更关注面向大中型企事业单位的财务管理软件,由于国财务制度与国际上的差异,所以这块市场一直被国企业所独占,个人和家庭理财、中小企业理财市场成为市场的空白点。其实事实并非如此。事实上,中国家庭的消费结构已开始转变,高收入家庭增多,中产阶级开始大量出现,家庭收入的增加是不争的事实,以往由政府和企业承担的养老、保险、医疗、住房、子女教育等正逐步转为由家庭与个人承担,理性明智的家庭消费、未来保障设置、合理避税也成为家庭理财活动的重要容,这些转变将直接导致家庭理财观念和理财行为将发生很大的变化。需要从原本的家庭理财简单记账的方式,过渡到要求全面的收支记录、投资管理、理财计划、统计分析等等方面。仅仅凭借记忆或简单的记账方式来管理日趋复杂的家庭财务结构,不仅计划性差,而且错误百出、统计困难,盲目消费、冲动性消费的增加,也大量增加了不必要的支出,这些问题很大一部分都可以通过家庭理财软件来加以克服和解决1 。正是由于家庭财产结构和消费结构的变化,从而产生了对个人财务管理软件的需求,个人财务管理软件已成为中国软件市场的一个新的增长点。由于国软件开发企业尚没有认识到这市场的存在与其价值,所以开发个人财务管理软件的企业在数量上很少,一些早期开发财务管理软件的公司或是将其作为一个小型工具软件进行推广,或是将其功能集成到其它软件中,成为一些软件的附属品,这在很大程度上阻碍并抑制了个人财务管理软件的正常发展。而且目前的电子理财软件偏向于商业级别,且主要用于企业级和部门级,但是个人理财的需求越来越强烈,因此需要一款免费简单实用的小型理财软件。个人理财自动化的迫切需求,但是专业的大型商业软件价格昂贵而且功能庞杂而无法满足需求。因此需要一个简单、实用的系统,来满足家庭和个人的理财需求。反观我国财务软件的发展历程,认识国外财务软件的功能与特点,以“取其精华,弃其糟粕”为指导思想,我们可以从国外财务软件中学到许多有用的经验,来指引我国财务软件开发的思路。我国财务软件在今后很长一段时间将会朝着管理型、智能型、开放型的方向发展。第二节 个人财务管理软件发展现状我们知道,现在市场上个人财务软件做得最成功的是美国的灵感公司,提到它,有些人可能并不熟悉,这家公司自创立15年来,纯收入已近16亿美元。灵感公司的创始人斯考特是在不经意间发现这块市场的,当他看到妻子整理账目时,就想着能否开发出一套软件来解决这些对非财务人士来说头痛的财务问题,于是马上开始起草计划,并找到了一个合作伙伴,进行大量的市场调查,准备吸引风险投资家们的投资。斯考特由于有在宝洁公司的工作经验,所以非常看重市场调查,与用户共同探讨软件的使用情况,收集各种改进意见和建议,从而使产品的功能不断加强。灵感公司QUICKEN这个产品一经推出,便风靡市场,在个人理财软件上取得了异乎寻常的成功8。此外,国一些企业密切关注着这一市场,在目前市场条件相对成熟的情况下,开始投资开发适合中国家庭应用的理财软件,并朝向小型企业财务管理软件迈进,如1999年惠斯特公司开发的“居家理财小财神”、“理财大师”软件;财富软件公司开发的“财富大家”软件就是针对目前国市场情况开发的通用型软件,在产品的研制开发与功能设计等各个方面,都对家庭理财过程予以考虑,并且与银行、保险公司等进行深入的合作,在软件中加入了中国银行电子钱包等功能,使电子货币的应用特别是在网上购物过程中的应用得到充分体现。在2000年,获得用友集团2000万人民币注资的财智软件公司8,以开发的理财类软件“财智软件”为基础,推出了专业的个人理财服务。从市场角度来看,理财软件随着整个消费结构、财产结构的变化,并伴随着计算机应用的普与,必然会得到越来越多的应用。第三节 本文设计目标与论文结构一、本文的设计目标编写本论文的目的主要是根据现有的个人财务管理软件的情况,以与市场上需求的分析的结构,深入描述桌面电子钱包软件的功能和性能与界面,说明个人财务管理软件开发的必要性和详细过程,确定该软件设计的可行性,最后能完整地完成软件的设计与开发。二、论文的结构本论文主要分为以下四个部分:第一部分:绪论。主要是说明桌面电子钱包的发展背景与现状;第二部分:开发工具与相关技术。详细介绍了Visual C+以与ADO、ODBC数据库的相关知识;第三部分:以软件工程的思想详细描述了系统的需求分析、概要设计、详细设计和编码、测试的过程。介绍了实现系统的工具与整个系统实现的主要功能,并给出了主程序框架的流程图;介绍每个模块的具体功能;第四部分:主要提出了系统设计和结论,对全文工作进行总结,以与需要改进的地方。第二章 开发工具与相关技术简介第一节 开发工具的选择系统前台开发工具选择的是功能强大的Visual C+,使用了Visual C+里的基本编程方法;后台数据库选择Access进行数据管理,例如,创建数据库、创建表、备份和还原数据库等;中间层采用ADO和ODBC相结合的数据访问方式,使用常用的SQL语句与ODBC数据库访问技术,将对数据库的操作以类的形式封装进行使用。第二节 技术简介一、Visual C+简介1、Visual C+本系统所用的开发工具是Visual C+ 6.0,是美国微软公司开发的基于C/C+的集成开发工具,是Visual Studio中功能最为强大,代码效率最高的开发工具。Visual C+ 6.0跟以前的版本相比,它的编译器、调试器、连接器、编辑器、资源编辑器都有所加强9,在编辑器中还提供了自动语句生成功能,编辑器会自动提示函数的参数、对象成员,采用“所见即所得”的编程思想,提高了编程效率。另外,Visual C+ 6.0还提供了类向导,在MFC中新增了一些类,提供了更加强大的数据访问功能。编程人员可以利用Visual C+ 6.0以基于Windows API的C编程方式或基于MFC的C+编程方式,也可混合编程,使工作效率提高,开发工作量减少,使Visual C+ 6.0成为目前开发Windows应用程序最好、最高效的开发工具之一。同时在数据库系统开发方面也有很大的优势,使程序对数据库的访问更加方便。2、Visual C+和MFC 从理论上来讲,MFC也不是专用于Visual C+,Borland C+、C+Builder和Symantec C+同样可以处理MFC。同时,用Visual C+编写代码也并不意味着一定要用MFC,也可以用Visual C+来编写SDK程序,或者使用STL、ATL,一样没有限制10。不过,Visual C+本来就是为MFC打造的,Visual C+中的许多特征和语言扩展也是为MFC而设计的,所以用Visual C+而不用MFC就等于抛弃了Visual C+中很大的一部分功能。但是,Visual C+也不等于MFC。3、Visual C+常用数据访问技术比较Visual C+提供了许多访问数据库的技术,主要包括下面这些数据库访问接口:ADO (ActiveX Data Objects)ODBC (Open DataBase Connectivity)MFC ODBC (Microsoft Foundation Classes ODBC) OLE DB (Object Link Embedding DataBase)DAO (Data Access Objects)这些技术在访问数据库时无论是易用程度还是运行性能上都是各有千秋,其情况如下:、ADOADO技术是基于OLE DB的访问接口,它是Visual C+中提供的面向对象的OLE DB技术。它继承了OLE DB技术的优点,并且,ADO对OLE DB的接口作了封装,定义了ADO的对象,使程序开发变了简化ADO技术属于数据库技术的高层接口。、ODBCODBC是为客户应用程序访问关系数据库时提供的一个标准的接口,对于不同的数据,ODBC提供了统一的API,使应用程序可以使用所提供的API来访问所有提供了ODBC驱动程序的数据库。而且,ODBC已经成为一种标准,所以,目前几乎所有的关系数据库都提供了ODBC驱动程序,这使ODBC的应用十分广泛,基本上可用于所有的关系数据库。其优点是,ODBC API可能使客户应用程序能够从底层设置和控制数据库,完成一些高层数据库技术无法完的事,但是其不足之处是要编写大量的代码,增加了程序的编制的难度。、MFC ODBC由于使用ODBC API要编制大量的代码,在Visual C+中提供了MFC ODBC类,封装了ODBC API,这使得利用MFC来创建ODBC的应用程序非常简便。它有下面几个优点:其一是编程比API要简单一些,是属于Visual C+数据库接口中的高层访问技术;其二是它能与ODBC API想结合完成对数据源底层的操作与控制。、OLE DBOLE DB是Visual C+开发数据库应用中提供的新技术,它基于COM接口,因此,OLE DB对所有的文件系统包括关系数据库和非关系数据都提供了统一的接口,这些特性使得OLE DB技术比传统的数据库访问技术更加优越。、DAODAO提供了一种通过程序代码创建、操纵和使用数据库的机制。多个DAO构成一个体系结构,在这个体系结构中,各个DAO对象可以同时工作,MFC DAO是Microsoft公司提供的用于访问Microsoft Jet数据库文件的强力高效的数据开发工具,通过DAO进行封装,向程序员们提供了DAO丰富的操作数据库手段。二、Microsoft Access 概述1、Microsoft Access的发展现状Access是Office办公套件中一个极为重要的组成部分。刚开始时微软公司是将Access单独作为一个产品进行销售的,后来微软发现如果将Access捆绑在OFFICE中一起发售,将带来更加可观的利润,于是第一次将Access捆绑到OFFICE97中。现在它已经成为Office办公套件中不可缺少的部件了。自从1992年开始销售以来,Access 已经卖出了超过6000万份,现在它已经成为世界上最流行的桌面数据库管理系统。后来微软公司通过大量地改进,将Access的新版本功能变得更加强大。不管是处理公司的客户订单数据;管理自己的个人通讯录;还是大量科研数据的记录和处理,人们都可以利用它来解决大量数据的管理工作。随着版本的升级,Access的使用也变得越来越容易。过去很繁琐的工作现在只需几个很简单的步骤就可以高质量地完成了。2、Microsoft Access的主要功能 数据库的概念数据库是一种存储数据并对数据进行操作的工具。数据库的作用在于组织和表达信息,简而言之,数据库就是信息的集合。 Access数据库Access就是关系数据库开发工具,数据库能汇集各种信息以供查询、存储和检索。Access的优点在于它能使用数据表示图或自定义窗体收集信息。数据表示图提供了一种类似于Excel的电子表格,可以使数据库一目了然。另外,Access允许创建自定义报表用于打印或输出数据库中的信息。Access也提供了数据存储库,可以使用桌面数据库文件把数据库文件置于网络文件服务器,与其他用户共享数据库。Access 是一种关系数据库工具,关系数据库是已开发的最通用的数据库之一。如上所述,Access作为关系数据库开发具备了许多优点,可以在一个数据包同时拥有桌面数据库的便利和关系数据库的强大功能。 新建一个数据库创建任何一个数据库的第一步是仔细的规划数据库,设计必须是灵活的、有逻辑的。创建一个数据库结构的过程被认为是数据模型设计。(1)标识需要的数据;(2)收集被子标识的字段到表中;(3)标识主关键字字段;(4)规数据;(5)标识指定字段的信息; 修改已建的数据库数据库的修改分为;添加、编辑和删除记录。这三种操作均可由Visual C+创建的程序来完成。三、ODBC概述1、ODBC简介ODBC(Open Database Connectivity)是由微软公司提出的一个用于访问数据库的统一界面标准,随着客户机/服务器体系结构在各行业领域广泛应用,多种数据库之间的互连访问成为一个突出的问题,而ODBC成为目前一个强有力的解决方案。ODBC之所以能够操作众多的数据库,是由于当前绝大部分数据库全部或部分地遵从关系数据库概念,ODBC看待这些数据库时正是着眼了这些共同点。虽然支持众多的数据库,但这并不意味ODBC会变得复杂,ODBC是基于结构化查询语言(SQL),使用SQL可大大简化其应用程序设计接口(API),由于ODBC思想上的先进性,而且没有同类标准或产品与之竞争,因而越来越受到用户的青睐。ODBC基本思想是提供独立程序来提取数据信息,并具有向应用程序输入数据的方法。由于有许多可行的通信方法、数据协议和DBMS能力,所以ODBC方案可以通过定义标准接口来使其能使用不同技术,这种方案导致了数据库驱动程序的新概念-动态库(DDL)。应用程序可按请求启动动态库,通过特定通信方法访问特定数据源,同时ODBC提供了标准接口,允许应用程序编写者和数据库提供者在应用程序和数据源之间交换数据。 为了保证标准性和开放性,ODBC的结构分为四层:应用程序(Application)、驱动程序管理器(Driver Manager)、驱动程序(Driver)、数据源(Data Source)。驱动程序管理器与驱动程序对于应用程序来说都表现为一个单元,它处理ODBC函数调用。如图2.1所示。图2.1 ODBC体系结构上图所示为基于客户机/服务器的ODBC体系结构。应用程序(Application)。应用程序本身不直接与数据库打交道,主要负责处理并调用ODBC函数,发送对数据库的SQL请求与取得结果11。驱动程序管理器(Driver Manager )。驱动程序管理器是一个带有输入程序的动态库(DLL),主要目的是加载驱动程序,处理ODBC调用的初始化调用,提供ODBC调用的参数有效性和序列有效性。驱动程序(Driver)。驱动程序是一个完成ODBC函数调用并与数据之间相互影响的DLL,当应用程序调用。数据源(Data Source)。包括用户想访问的数据以与与其相关的操作系统、DBMS和用于访问DBMS的网络平台。 ODBC接口的优势之一为互操作性,程序设计员可以在不指定特定数据源情况下创建ODBC应用程序。从应用程序角度方面,为了使每个驱动程序和数据源都支持一样的ODBC函数调用和SQL语句集,ODBC接口定义了一致性级别,即ODBC API一致性和ODBC SQL语法一致性。一致性级别通过建立标准功能集来帮助应用程序和驱动程序的开发者,应用程序可以很容易地确定驱动程序是否提供了所需的功能,驱动程序可被开发以支持应用程序选项,而不用考虑每个应用程序的特定请求。2、MFC的ODBC类 因为本系统主要用到MFC ODBC编程,所以详细的介绍其使用方法:Visual C+的MFC类库定义了几个数据库类。在利用ODBC编程时,经常要使用到CDatabase(数据库类),CRecordSet(记录集类)和CRecordView(可视记录集类)。其中:CDatabase类对象提供了对数据源的连接,通过它你可以对数据源进行操作。CRecordView类对象能以控制的形式显示数据库记录。这个视图是直接连到一个CRecordSet对象的表视图。CRecordSet类对象提供了从数据源中提取出的记录集。CRecordSet对象通常用于两种形式:动态行集(dynasets)和快照集(snapshots)。动态行集能保持与其他用户所做的更改保持同步。快照集则是数据的一个静态视图。每一种形式在记录集被打开时都提供一组记录,所不同的是,当你在一个动态行集里滚动到一条记录时,由其他用户或是你应用程序中的其他记录集对该记录所做的更改会相应地显示出来。 Visual C+提供了几种记录集,可以用来定制应用程序的工作方式。查看这些不同选项的最快方式要兼顾速度和特征。在很多情况下,如果想添加特征,就必须付出程序执行速度降低的代价。下面介绍一些可以自由支配的记录集选项,以与介绍从这个选项可以获得更快的速度还是更多的特征。 Snapshot(快照),这个选项要Visual C+在一次快照中下载整个查询。换言之,与时快速地给数据库容拍照,并把它作为未来工作的基础。这种方法有三个缺点。第一,看不到别人在网络上做的更新,这可能意味着你的决定是建立在旧信息的基础上。第二,一次就下载所有这些记录,这意味着在下载期间给网络增加了沉重的负担。第三,记录下载时用户会结束等待,这意味着网络的呼叫性能变得更低。然而这种方法也有两个优点。第一,记录一旦被下载,该工作站所需的网络活动几乎就没有了,这为其它请求释放了带宽。总之,网络的吞吐量增大了。第二,因为所有被申请的记录都在用户的机器上,所以用户实际上会得到应用程序更佳的总体性能。Dynasets(动态集),使用这个选项时,Visual C+创建指向所请求的每个记录的实际指针。另外,只有填充屏幕时实际需要的记录是从服务器上下载来的。这种方法的好处很明显。几乎马上就能在屏幕上看到记录。而且还会看到其它用户对数据库所做的更改。最后,其它用户也会看到你做的更改,因为动态集在你更改记录时被上载到服务器上。很明显,这种方法要求对服务器的实时访问,它减小了网络总吞吐量并降低了应用程序的性能。这个选项适合于创建用户要花费很多时间来编辑数据的应用程序。同时,它也是大型数据库的最佳选择,原因在于只需下载用户实际需要的信息。3、ODBC数据库 (1)、数据库连接在CRecordSet类中定义了一个成员变 量m_pDatabase: CDatabase *m_pDatabase;它是指向对象数据库类的指针。如果在CRecordSet类对象调用Open()函数之前,将一个已经打开的CDatabase类对象指针传给m_pDatabase,就能共享一样 的CDatabase类对象。如:CDatabase m_db; / 建 立ODBC 连 接m_db. Open (NULL, FALSE, FALSE, _T(ODBC;DSN=HomeFinanceManager),false); CRecordSet recordset(&m_db); /构造记录集对象,使数据库指向m_db(2)、数据库查询记录查询记录使用CRecordSet:Open()和 CRecordSet:Requery()成员函数。在使用CRecordSet类对象之前,必须使用 CRecordSet:Open()函数来获得有效的记录集。一旦已经使用过CRecordSet:Open() 函数,再次查询时就可以应用CRecordSet:Requery()函数。在调 用CRecordSet:Open()函数时,如果已经将一个已经打开的CDatabase 对象指针传给CRecordSet类对象的m_pDatabase成员变量,则使用该数据库对象建立ODBC连接;否则如果m_pDatabase为空指针,就新建一个CDatabase类对象并使其与缺省的数据源相连,然后进行CRecordSet类对象的初始化。可以提供你所需要的SQL 语句,并以它来调用CRecordSet:Open()函数,例如: recordset.Open(AFX_DATABASE_USE_DEFAULT,strSQL):strSql=”select * from user”;recordset.Open(AFX_DB_USE_DEFAULT_TYPE,strSql); 查询过程中也可以利用CRecordSet的 成员变量m_strFilter来执行条件查询。m_strFilter 为过滤字符串,存放着SQL语句中WHERE后的条件串,如:m_Set.m_strFilter=user=苗苗;m_Set.Requery();如果查询的结果是多条记录的话,可以用CRecordSet类的函数Move(),MoveNext(),MovePrev(),MoveFirst()和MoveLast()来移动光标。(3)、数据库添加记录增加记录使用AddNew()函数,要求数据库必须是以允许增加的方式打开:m_pSet-AddNew(); /在表的末尾增加新记录m_pSet-m_user=三; /输入新的字段值m_pSet-Update(); /将新记录存入数据库m_pSet-Requery(); /重建记录集(4)、数据库删除记录直接使用Delete()函数,并且在调用Delete() 函数之后不需调用Update()函数: m_pSet-Delete(); if(!m_pSet-IsEOF() m_pSet-MoveNext(); else m_pSet-MoveLast();(5)、数据库修改记录修改记录使用Edit()函数:m_pSet-Edit(); /修改当前记录m_pSet-m_user=苗苗; /修改当前记录字段值m_pSet-Update(); /将修改结果存入数据库m_pSet-Requery();第三节 本章小结这一章主要介绍了本系统所使用的开发工具Visual C+,详细介绍了ODBC数据库访问数据的方法,对开发工具和数据库相关知识有了一个更清晰的认识和了解。第三章 需求分析由于人们生活水平的提高,家庭财产结构和消费结构的变化,从而产生了对个人财务管理软件的需求。而目前的电子财务管理软件偏向于商业级别,且主要用于企业级和部门级,大型商业软件价格昂贵而且功能庞杂而无法满足个人理财自动化的迫切需求。随着人们对个人理财的需求越来越强烈,因此需要一款免费实用的小型理财软件,本系统简单、实用,满足家庭和个人的理财需求2。本系统可根据使用者的实际情况,设置收入、支出类型,以适应社会不同阶层,不同行业人士的应用。本软件为单用户系统,没有权限设置,更保证了数据的安全性。数据分为两大模块,即收支明细和收支统计,详细反映了收支分类,统计金额的情况。第一节 功能需求录入功能:为用户提供相应的录入收支功能。查询功能:为所有用户提供查询的功能,可查询允许围的所有信息。维护功能:为用户提供查询与相应的修改,删除功能。数据备份功能:为数据库进行备份和恢复,确保数据安全。退出功能:结束并关闭系统。本系统能减少很多不必要的资源,提高收支记录的精确度,不用像以前那样用冗余的纸式的管理,大大节省了用户的时间。并且计算机的存储与快速查询功能大大提高了个人财务管理的效率,并且系统操作也非常简单。第二节 数据需求数据字典是开发者与用户相互沟通的有效途径之一。它能形象的向用户描述开发者的意图,使用户明白数据库可能具有的项目,可有效的缓解开发者和用户之间的交流鸿沟,也有利于用户向开发者提出自己的需求,避免因理解分歧造成的代价巨大的接口问题。数据字典是各类数据描述的集合,它是进行详细的数据收集和数据分析后所获得的主要成果,是关于数据库中数据的描述,即对元数据的描述。数据字典是在需求分析阶段建立,在数据库设计过程中不断修改、充实、完善的。针对本系统,通过桌面电子钱包的容和过程分析,设计的数据项和数据结构,将所有的子功能都用一个数据表来控制。 主要数据字典用卡片表示如下:名字: 用户基本信息描述: 使用系统的用户基本信息表定义: 用户基本信息=用户编号+用户名+密码位置: 用户基本信息名字: 收入分类信息描述: 记录收入分类的信息表定义: 收入分类信息=编号+分类号+分类名位置: 收入分类信息名字: 支出分类信息描述: 记录支出分类的信息表定义: 支出分类信息=编号+分类号+分类名位置: 支出分类信息名字: 支出明细信息表描述: 每笔支出的明细信息定义: 支出明细信息=编号+支出金额+支出分类编号+操作用户名+支出日期+支出详细备注位置: 支出明细信息名字: 收入明细信息表描述: 每笔收入的明细信息定义: 收入明细信息=编号+收入金额+收入分类编号+操作用户名+收入日期+收入详细备注位置: 收入明细信息名字: 理财日记表描述: 记录用户理财信息定义: 理财日记表=编号+日期+日记内容位置: 理财日记信息第三节 其它需求本软件努力解决家庭和个人理财需求,可以方便随时的进行财务管理。简单实用的桌面个人理财软件,满足家庭和个人的理财需求,提供账户管理,收支管理,借贷管理,统计等功能。通过本系统可以达到以下目标:q 系统运行稳定,安全可靠。q 界面美观、友好。q 信息查询灵活、方便、快捷、准确,数据存储安全可靠。q 采用多种方式查询数据。q 用户可以随时修改自己的口令。q 数据性强,为每个用户设置密码。第四节 本章小结通过对个人财务管理系统的需求分析、功能分析等容的调查、研究,进一步证明了个人财务管理系统的开发与应用是切实可行的,可以有效地提高财务管理的工作效率。第四章 概要设计第一节 系统总体结构在软件需求分析阶段,已搞清了软件“做什么”的问题,并描述出了系统的逻辑模型。在系统设计阶段,主要解决软件“怎么做”的问题,所以需要描述软件的总的体系结构既系统总体结构。本系统是一个个人财务管理系统,共分6大部分,14个完整的功能模块。系统功能流程如图4.1所示。收入信息查询收入信息管理添加收入明细支出信息查询支出信息管理添加支出明细收支图表分析收支分析收支比例分析收入分类统计桌面电子钱包支出分类统计收支统计收支统计查询数据备份数据维护数据恢复理财计算器系统工具理财日记本图4.1 桌面电子钱包系统功能流程图一、功能设计收支信息管理:能够记录、管理、查询收入、支出信息。收支统计:包括统计收入、支出金额的总数,以与按时间查询统计金额。 收支分析:包括收支图表分析、收支比例图分析。数据维护:包括数据备份、数据恢复。系统工具:主要包括普通计算器、理财计算器、理财日记本。二、系统主要功能结构收支信息记录:收入信息记录、支出信息记录。收支信息查询:收入信息查询、支出信息查询。收支统计:统计收支金额、收支总金额查询。收支分析:手指图表分析、收支比例分析。数据维护:数据备份、数据恢复。系统工具:理财计算器、理财日记本。第二节 数据库概念模型设计数据实体有:用户信息实体(UserInfo)、支出分类信息实体(OutClass)、收入分类信息实体(ClassInfo)、支出明细信息实体(MoneyOut)、收入明细信息实体(MoneyIncome)、理财日记信息实体(Diary)。例如用户信息实体、支出分类信息实体、支出明细信息实体的E-R图如下图4.1、图4.2、图4.3所示:用户编号密码XX图4.1 用户信息实体E-R图支出分类分类号分类名称编号图4.2 支出分类信息实体E-R图支出明细支出金额支出分类操作用户名支出日期备注编号图4.3 支出明细信息实体E-R图系统的E-R图如图4.4所示:图4.4 系统E-R图第三节 本章小结在本章中,利用软件工程中的图形描述方法,对系统需要实现的功能进行了的描述。初步确定了系统的功能设计。第五章 详细设计详细设计阶段是系统设计中非常重要的环节,详细设计包括对数据库的设计和对系统功能的设计,好的数据库结构可以简化开发过程,使功能更加清晰明确。因为数据库结构的变化会造成编码的改动,所以必须认真的设计数据库结构再进行编码,从而避免无谓的重复工作。第一节 数据库表结构设计本系统数据库文件3名称为HomeFinanceManager.mdb,其中包含6个表,即用户信息表、支出分类信息表、收入分类信息表、支出明细信息表、收入明细信息表、理财日记记录表。下面分别介绍这些表的结构。(1) 用户信息(UserInfo)表,用来保存用户基本信息,包括用户名和用户密码,详细描述如表5.1所示。表5.1用户信息表字段名数据类型长度允许为空是否为主键说明编号自动编号8否是唯一标识UserName文本50否否用户名Passwd文本50否否用户密码(2) 支出分类信息(OutClass)表,用于保存支出的分类信息,包括支出分类编号、分类名称,详细描述如表5.2所示。表5.2 数据库支出分类信息表字段名数据类型长度允许为空是否为主键说明id自动编号8否是唯一标识classid数字8是否支出分类编号remark文本50是否支出分类名称(3) 收入分类信息(ClassInfo)表,用于保存收入的分类信息,包括收入编号、名称,详细描述如表5.3所示。表5.3 数据库收入分类信息表字段名数据类型长度允许为空是否为主键说明id自动编号8否是唯一标识classid数字8是否收入分类编号remark文本50是否收入分类名称(4) 支出明细信息(MoneyOut)表,用来保存每笔支出的详细信息,包括支出金额、支出分类编号、操作用户名、支出日期、支出详细备注,详细描述如表5.4所示。表5.4 数据库支出明细信息表字段名数据类型长度允许为空是否为主键说明id自动编号8否是唯一标识OutMoney货币是否支出金额OutClass数字8是否支出分类编号operator文本50是否操作用户名Outdate日期/时间是否支出日期remark备注是否支出详细备注(5) 收入明细信息(MoneyIncome)表,用来保存每笔收入的详细信息,包括收入金额、收入分类编号、操作用户名、收入日期、收入详细备注,详细描述如表5.5所示。表5.5 数据库收入明细信息表字段名数据类型长度允许为空是否为主键说明id自动编号8否是唯一标识InMoney货币是否收入金额InClass数字8是否收入分类编号InDate日期/时间是否收入日期operator文本50是否操作用户名remark文本50是否支出详细备注(6) 理财日记记录(Diary)表,用来保存用户的理财心得,包括记录日期、日记容,详细描述如表5.6所示。表5.6 数据库理财日记记录表字段名数据类型长度允许为空是否为主键说明ID自动编号8否是唯一标识date日期/时间是否日期summary文本255是否日记容第二节 程序逻辑一、查询、修改、删除功能模块流程图本系统的查询、删除、修改模块流程图如图5.1所示。打开子界面输入查询条件检索出结果NO有信息YES删除信息修改信息保存信息图5.1查询修改删除功能流程图二、添加功能模块流程图本系统的添加模块流程图如图5.2所示。打开子界面添加记录输入信息保存信息NO继续添加加YES再添加图5.2添加功能流程图第三节 本章小结在本章中,我们立足于桌面电子钱包开发的实际,阐述了桌面电子钱包系统的数据库设计情况,确定了设计的初步方案,为系统的编码实现提供了有效的依据。第六章 系统主要功能模块的实现第一节 程序启动界面的设计程序启动后,将进入程序启动界面。通过此界面将会执行相应的权限操作,如登录等。并且还可以通过主界面的菜单,来调用相应程序,再进行相应操作。程序启动界面运行结果如图6.1所示。图6.1 桌面电子钱包程序启动界面一、控件设计(1) 在项目中添加一个对话框资源,命名为IDD_DLG_LEFTSHOW,。(2) 在IDD_DLG_LEFTSHOW中添加7个BUTTON控件、一个EDIT控件命名为IDC_USERNAME。(3) 重要控件属性如表6.1所示。表6.1 主程序界面重要控件属性列表控件名称属性值IDD_LDG_LEFTSHOWStyle下层,无边框IDC_USERNAMEStyle透明,只读二、启动界面重要代码设计/ 为每个对话框类添加OnCtlColor事件,设置对话框与对话框控件的背景4HBRUSH CDialogSGCX:OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 12HBRUSH hbr = CDialog:OnCtlColor(pDC, pWnd, nCtlColor);/ TODO: Change any attributes of the DC hereif(nCtlColor = CTLCOLOR_STATIC)pDC-SetBkMode(TRANSPARENT);pDC-SetTextColor(RGB(255,150,0);LOGBRUSH logBrush;logBrush.lbStyle = BS_HOLLOW;hbr = CreateBrushIndirect(&logBrush); HBRUSH hbru = :CreateSolidBrush (RGB(255,255,255); switch (pWnd-GetDlgCtrlID() default: pDC-SetBkMode(TRANSPARENT); pDC-SetBkColor(RGB(255,255,255); return hbru ; return CDialog:OnCtlColor(pDC, pWnd, nCtlColor); return hbr;/ TODO: Return a different brush if the default is not desiredreturn hbr;第二节 程序登录界面的设计程序启动后,点击用户登录按钮,将进入程序登录界面。通过程序登录界面登录系统进行相关操作。登录程序界面运行结果如图6.2所示。图6.2 桌面电子钱包系统登录界面一、控件设计(1) 在该项目中添加一个对话框资源,命名为IDD_DLG_LOGIN。(2) 在IDD_NAVIGATE中添加BUTTON控件命名为IDC_LOGIN、两个EDIT控件分别命名为IDC_USERNAME、IDC_PASSWD。(3) 重要控件属性如表6.2所示。表6.2 登录界面重要控件属性列表控件名称属性值IDD_LOGINStyle下层,无边框IDC_LOGINCBMPButtonm_btnLogin二、登录模块功能流程图当用户单击“登录”按钮时触发按钮单击事件,首先检验用户名和密码输入文本框是否为空,为空则给出提示要求输入用户名和密码,然后进行身份验证,其功能流程图如图6.3所示。登录窗口输入用户名和密码验证用户名和密码NO正确YES读取用户名登录主界面显示收支统计窗口图6.3 桌面电子钱包系统登录模块流程图第三节 数据维护界面的设计系统具有数据维护功能,包括数据备份和恢复。其界面如图6.3所示。图6.4 桌面电子钱包数据维护界面一、控件设计(1)在该项目中添加一个对话框资源,命名为IDD_DLG
展开阅读全文