家庭理财系统的设计与实现ewsb.docx

上传人:jix****n11 文档编号:62704979 上传时间:2022-11-22 格式:DOCX 页数:47 大小:1.46MB
返回 下载 相关 举报
家庭理财系统的设计与实现ewsb.docx_第1页
第1页 / 共47页
家庭理财系统的设计与实现ewsb.docx_第2页
第2页 / 共47页
点击查看更多>>
资源描述

《家庭理财系统的设计与实现ewsb.docx》由会员分享,可在线阅读,更多相关《家庭理财系统的设计与实现ewsb.docx(47页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、家庭理财系统的设计与实现目 录第一章 实验设计课题与要求2第二章 系统的调查与分析 32.1 课题背景 32.2 可行性分析32.2.1 经济可行性32.2.2 技术可行性和运行可行性 3第三章 数据库分析与建立3.1数据需求4 3.2数据字典43.2.1 用户表的数据流43.2.2 成员表的数据流53.3.3 收支表的数据流53.3.4 借贷表的数据流53.3.5 银行表的数据流5 3.3 系统E-R图6 3.4 数据流图7 3.5 数据库的建立7第四章 系统的设计与实现84.1系统与数据库的链接84.2系统界面的设计与实现 84.2.1 登录界面的设计84.2.2 主界面的设计94.2.3

2、 家庭理财界面的设计104.2.4 理财报表与报表打印的设计164.2.5 选项界面(包括成员管理和密码修改)18第五章 设计心得与体会 19附录:源代码清单20 第一章:实验设计课题与要求实验设计课题:家庭理财系统1、设计要求:本系统要求对家庭的收入情况,预计支出情况,实际支出情况,投资情况,消费情况和存款情况进行系统性的分析、设计,并形成系统设计说明书。同时用DELPHI或VB来实现该系统,。目的是通过收支系统的分析,使各家庭对自己的家庭财务有一个全面的了解和分析,以便能作到节约开支,细水长流,同时进行必要的投资。2、编程语言为DELPHI或VB语言。3、系统功能具备:(1)、提供便捷、美

3、观及丰富的界面以便能录入各类数据。(2)、动态查询各类信息。(3)、能用图形、报表和表格三种形式对收支情况进行分析和统计。(4)、能打印各类统计信息。(5)、应用程序采用多文挡界面的风格。(6)、尽量用菜单。(7)、界面的风格要多样化,但必须满足用户的要求。(8)、打印源程序、主要界面和报表。4、关键技术:(1)、系统的调查和分析方法。(2)、E-R图、数据流图、数据字典、规范化理论。(3)、系统设计说明书。(4)、数据库的设计方法。(5)、Delphi 中的SQL语言。(6)、DELPHI 的IDE集成开发环境。(7)、PASCAL语言。(8)、数据库应用程序的设计。5、参考资料:(1)、D

4、elphi6.0以上版本的参考书。(2)、数据库系统概论,萨师煊、王珊主编,高等教育出版社,2000,2月,第三版。第二章:系统的调查与分析2.1 课题背景近年来,计算机技术飞速发展几乎超出了人们的想象,硬件的更新换代速度更是以级数进行。计算机在处理对象、处理方法上都发生了很大的变化。作为计算机科学的重要分支数据库技术,也被越来越多的应用领域采用来存储和处理他们的信息资源。计算机已经不再仅仅是科学研究的工具,它越来越多地影响到了我们生活的诸多方面,更多的应用软件出现在了我们的身边,给人们生活的方方面面都带来了极大的便利。近年来随着国内外社会经济和科学技术的不断改革和发展,各种各样的开销与收入也

5、越来越多,很多人对于日常帐目的管理感到越来越力不从心,收支管理已刻不容缓,在大多数家庭里,由于计算机知识的缺乏,人们还采用手写记帐的方法,这种管理方法存在跟多缺陷,如:效率低、保密性差,另外时间一长,将产生大量的冗余文件和数据,这对于查找、更新和维护工作都带来了很大的困难。家庭理财系统就是通过计算机对人们日常的收支进行管理,具有相关的收支情况查询和录入,以及有关数据的打印输出,有计算机统计可使人们从繁重的劳动中解脱出来,通过一些简单的输入操作,及时、准确地获得需要的信息。理财系统在强调管理,强调信息,强调经济效益的现代社会中越来越普及,越来越重要。而理财一直运用于企业单位,是体现一个企业的竞争

6、力,市场力和凝聚力的方面,可以说,没有一个符合企业状况的理财系统,这样的企业就没有良好的发展前景。现在,收支管理不再仅仅是企业所要具备的,小到一个家庭,也是必不可少的。本人的这个家庭理财系统就是为家庭而设计的,通过这个程序,我们可以便捷的记录每年每月每天的日常开销和收入,我们只需要点击鼠标,就可以计算出收支的平衡情况,为家庭的理财提供帮助,有利于收支的良性发展。2.2 可行性分析目的:可行性研究的目的是用最小的代价在尽可能短的时间内确定问题是否能够解决。2.2.1 经济可行性 计算机的价格已经十分低廉,性能却有了长足的进步。而本系统的开发,为家庭的工作效率带来了一个质的飞跃,为此主要表现有以下

7、几个方面:第一,本系统的运行可以代替人工进行许多繁杂的劳动;第二,本系统的运行可以节省许多资源;第三,本系统的运行可以大大的提高家庭的工作效率;第四,本系统可以使敏感文档更加安全,等等。所以,本系统在经济上是可行的。2.2.2 技术可行性和运行可行性为了有助于更好地进行系统的开发,我对自己社会普通家庭的收入情况进行了初步的了解,现在普通家庭的固定收入在几千圆左右,每月在衣食住行各个方面至少要1000圆左右的开销,加上各种固定的各项费用,方方面面很复杂,很难清楚明了地记录下来,一般是采用手工记帐,这样很麻烦,也算不清楚帐,每个月都要花大量的时间在算钱上。而由于一些比较缺乏电脑方面的知识,所以,电

8、脑对他们来说只是摆设,但只要安装家庭理财系统,他们将只需要点击鼠标就可以十分便捷地对家庭的收支情况进行统计和计算。本系统的开发我利用SQL Server 2000 作为本系统的数据库,它是一个支持多用户的新型数据库,适用于各种大中小规模的数据量需求。使用DELPHI做为本系统的开发环境,DELPHI 拥有一个可视化的集成开发环境(IDE),采用面向对象的编程语言ObjectPascal和基于部件的开发结构框架。Delphi它提供了500多个可供使用的构件,利用这些部件,开发人员可以快速地构造出应用系统。开发人员也可以根据自己的需要修改部件或用Delphi本身编写自己的部件。它作为一种现代化的编

9、程语言,提供完善的指令控制语句、类与对象的支持及丰富的数据类型,给开发高性能系统提供了保障。综上所述,本系统的设计与开发在技术上和硬件设备上的条件都是满足的,因此,它在技术上是可行的。本系统为一个小型的家庭理财系统,所耗费的资源非常的小,学校的电脑无论是硬件还是软件都能够满足条件,因此,本系统在运行上是可行的。第三章:数据库分析与建立3.1 数据需求根据系统的需求,首先将要记录的信息分类,要记录的信息如下:(1)、用户表:用户名、密码;(2)、成员表:成员、生日、称呼、备注;(3)、收支表:类型、日期、金额、项目、成员、备注;(4)、借贷表:类型、日期、金额、项目、成员、备注;(5)、银行表:

10、类型、日期、卡号、金额、项目、成员、备注; 根据这些需求,本系统需要5个表:“用户表”用于用户登录、“成员表”用于用户添加家庭成员、“收支表”“借贷表”“银行表”用于用户对日常现金、存折的收支进行管理。3.2 数据字典3.2.1 用户表的数据流 列名数据类型长度允许空标识主键IDint4否是,自动增长是用户名char10否否否密码varchar10是否否3.2.2 成员表的数据流列名数据类型长度允许空主键成员Char10否是生日Datetime8是否称呼Char10是否备注text16是否3.2.3 收支表的数据流列名数据类型长度允许空标识主键IDInt4否是,自动增长是类型Char10是否否

11、日期Datetime8是否否金额Float8是否否项目Char10是否否成员Char10是否否备注text16是否否3.2.4 借贷表的数据流列名数据类型长度允许空标识主键IDInt4否是,自动增长是类型Char10是否否日期Datetime8是否否金额Float8是否否项目Char10是否否成员Char10是否否备注text16是否否3.2.5 银行表的数据流列名数据类型长度允许空标识主键IDInt4否是,自动增长是类型Char10是否否日期Datetime8是否否卡号char10是否否金额Float8是否否项目Char10是否否成员Char10是否否备注text16是否否3.3 系统E-R

12、图成员成员生日备注称呼日期收支类型借贷项目备注日期类型金额成员金额密码用户名用户项目成员备注银行存取类型日期卡号金额项目成员备注3.4 数据流图用户登录理财报表家庭理财成员管理修改密码收支报表借贷报表存取报表日常管理日常查询添加成员查询成员删除成员报表打印与预览收支查询与统计借贷查询与统计存取查询与统计收支信息添加与删除借贷信息添加与删除存取信息添加与删除3.5 数据库建立直接打开MSSQL工具“企业管理器”,新建一个数据库名为“家庭理财系统”,而后在建好的数据库中根据需要新建表:用户表、成员表、收支表、借贷表、银行表,依据数据字典中各个表的要求设计表。第四章:系统的设计与实现4.1 系统与数

13、据库的链接使用ADOConnection控件与SQL中的“家庭理财系统”数据库进行链接,双击该控件如下图所示进行链接:4.2 系统界面的设计与实现4.2.1 登录界面的设计在进入系统之前,必须要有符合本系统的用户以及每个用户对应的密码。如果没输入用户名或密码,点击登入将会提示用户名或密码不能为空。如果用户名错误和用户的密码不符合将会提示用户名错误或密码错误,请重新输入。具体界面如图4.2.1所示。本系统默认用户名:admin和密码:admin,用户可以在首次登录之后在系统里面更改密码。用户名与密码都正确后点击“登录”按钮将会进入系统主界面,点击“退出”将会退出整个系统。procedure TF

14、orm10.RzBitBtn1Click(Sender: TObject);beginif (edit1.Text=)or (edit2.Text=) thenbegin showmessage(用户名或密码不能为空!); endelsebeginadoquery1.Close ;adoquery1.SQl.Clear;adoquery1.sql.Add(select * from 用户表 where 用户名=+edit1.Text+);adoquery1.Open;if adoquery1.Fields0.Valuenull then begin if adoquery1.FieldByNa

15、me(密码).AsString=Trim(Edit2.Text) then begin self.Hide; Main.Show; end else begin showmessage(密码错误,请重新输入); Edit2.Clear; Edit2.SetFocus; end; end else begin showmessage(用户名错误,请重新输入); Edit1.Clear; Edit2.Clear; Edit1.setFocus; end; end;end;图4.2.1 登录界面4.2.2 主界面的设计 主界面是用户登录后进入的可以选择系统功能操作的界面,为实现提供便捷、美观及丰富的

16、界面以便能录入各类数据,以及界面的风格要多样化,但必须满足用户的要求的标准,对主界面的设计采用MDI多文档界面风格,主界面包含主菜单和工具栏,方便用户对系统功能进行选择,主菜单包括系统设置(关于、退出系统)、家庭理财、理财报表(收支报表、借贷报表、存取报表)、选项(成员管理、修改密码)和系统工具(计算器)。工具栏主要包括一些用户常用的功能。方便用户快捷的选择系统功能。主界面主页有统计总表,用户可以查询每年的总收入、总支出与总余额,系统会统计数据库信息表里面的收入总和、支出总和以及总余额,方便用户对年总收支的掌握以及对总余额的知晓。主界面具体如图4.2.2所示。主界面下方能显示当前用户、当前具体

17、时间等。图4.2.2 系统主界面4.2.3 家庭理财界面的设计 通过点击选择理财界面左侧导航栏进行相关信息操作,左侧导航栏包括日常收支、债权债务(即日常借贷)、银行存取,用户可以选择对收支信息、借贷信息和存取信息的添加、修改、删除,实现对收支理财的管理。导航栏还包括日常查询功能,用户可以查询收支明细、借贷明细和银行存取明细。点击工具栏上的返回主页则会推出理财界面返回系统主界面。 理财界面具体如图4.2.3.1所示。图4.2.3.1 理财界面日常管理:用户通过选择下拉框中的类型(如收入、支出、借入、借出、存入、取出)、日期、成员,和录入金额数目、项目(如金额的来源、去处等)、备注,实现对日常收支

18、、借贷、银行存取信息的添加管理,表中可以实现对数据的删除、修改。收支管理界面如图4.2.3.2所示,借贷管理界面如图4.2.3.3所示,银行存取界面如图4.2.3.4所示。日常查询: 用户可以根据类型、日期范围、具体某天动态的查询收支信息、借贷信息、银行存取信息,而根据查询结果会给出相应的金额统计结果(如某段时间或某天的收入、支出总和),实现用户根据动态查询结果得出金额统计,从而能对收支信息、借贷信息以及存取信息能有比较具体形象的了解,方便用户对家庭财务有个快捷具体的了解。收支明细界面如图4.2.3.5所示,借贷明细界面如图4.2.3.6所示,银行存取明细界面如图4.2.3.7所示。图4.2.

19、3.2 收支管理界面图4.2.3.3 借贷管理界面图4.2.3.4 银行存取管理界面图4.2.3.5 收支明细界面图4.2.3.6 借贷明细界面图4.2.3.7 银行存取明细界面4.2.4 理财报表与报表打印的设计 根据对数据库中表内信息以及关系的分析,本系统采用Qreport主从报表设计方案,主表是成员信息表,从表是收支信息表、借贷信息表或银行存取信息表。根据不同成员可查看相对应的收支信息、借贷信息或存取信息。通过Datasource以及ADODataset报表与打印预览链接。 收支报表打印界面如图4.2.4.1所示,收支报表打印预览如图4.2.4.2所示,借贷报表打印界面如图4.2.4.3

20、所示,银行存取报表打印界面如图4.2.4.4所示。打印按钮与打印预览程序代码如下:procedure TForm4.RzBitBtn1Click(Sender: TObject); /打印begin Form3.QuickRep1.Print;end;procedure TForm4.RzBitBtn2Click(Sender: TObject); /打印预览begin Form3.QuickRep1.Preview;end;图4.2.4.1 收支报表打印界面图4.2.4.2 收支报表打印预览界面图4.2.4.3 借贷报表打印界面图4.2.4.4 银行存取报表打印界面4.2.5 选项界面的设计

21、(包括成员管理和密码修改) 用户可以实现对家庭成员信息的添加、查询、修改、删除以及修改自身密码等。成员管理界面如图4.2.5.1所示,修改密码界面如图4.2.5.2所示。图4.2.5.1 成员管理界面(上) 图4.2.5.2 修改密码界面(下)第五章:设计心得与体会通过做课程设计,有几点感想,归纳如下:1. 扎实的理论基础。如果不掌握它们,很难写出高水平的程序。而这一点又是我们所缺乏的。 2. 不钻牛角尖。当遇到障碍的时候,暂时远离电脑,当重新开始的时候,也许会发现那些难题现在竟然可以迎刃而解。3. 多与别人交流。三人行必有我师。4. 良好的编程风格。注意养成良好的习惯,代码的缩进编排,变量的

22、命名规则要始终保持一致。如果注释和代码不一致,那就更加糟糕。5数据库讲求的是整体,只有在整体的情况下完善局部,才能做出一个好的数据库。还有就是图形统计分析因为建表时的考虑不周使得上手很难,最后时间用于做图形统计分析很少,导致这一功能没有完成,这是一个很大的缺陷!这个问题在我完成了设计之后都无法解决。希望老师能给些指点。参考文献:1、数据库系统概论,萨师煊、王珊主编,高等教育出版社,2000,2月,第三版。2、Delphi技术方案宝典,明日科技 梁冰、李钟慰、吕双主编,人民邮电出版社,2008年1月第1版。3、Delphi开发经验技巧宝典,明日科技 编著,人民邮电出版社,2007年11月第1版。

23、附录:源代码清单unit Unit10; /登录界面代码interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, RzButton, StdCtrls, jpeg, ExtCtrls, DB, ADODB;type TForm10 = class(TForm) Panel1: TPanel; Image1: TImage; Label1: TLabel; Label2: TLabel; Label3: TLabel; Edit1: TEdit; Edit2:

24、 TEdit; RzBitBtn1: TRzBitBtn; RzBitBtn2: TRzBitBtn; ADOConnection1: TADOConnection; ADOQuery1: TADOQuery; procedure RzBitBtn1Click(Sender: TObject); procedure RzBitBtn2Click(Sender: TObject); private Private declarations public Public declarations end;var Form10: TForm10;implementation uses unit2;$R

25、 *.dfmprocedure TForm10.RzBitBtn1Click(Sender: TObject);begin if (edit1.Text=) or (edit2.Text=) then begin showmessage(用户名或密码不能为空!); end else begin adoquery1.Close ; adoquery1.SQl.Clear; adoquery1.sql.Add(select * from 用户表 where 用户名=+edit1.Text+); adoquery1.Open; if adoquery1.Fields0.Valuenull then

26、begin if adoquery1.FieldByName(密码).AsString=Trim(Edit2.Text) then begin self.Hide; Main.Show; end else begin showmessage(密码错误,请重新输入); Edit2.Clear; Edit2.SetFocus; end; end else begin showmessage(用户名错误,请重新输入); Edit1.Clear; Edit2.Clear; Edit1.setFocus; end; end;end;procedure TForm10.RzBitBtn2Click(Sen

27、der: TObject);begin Application.Terminate;end;end.unit Unit2; /主界面代码interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Menus, ToolWin, ComCtrls, RzPanel, RzButton, ExtCtrls, ImgList, DB, ADODB, RzStatus, jpeg, StdCtrls, Mask, RzEdit, RzSpnEdt, RzLabel,

28、Grids, RzGrids;type TMain = class(TForm) MainMenu1: TMainMenu; N1: TMenuItem; N2: TMenuItem; N3: TMenuItem; N5: TMenuItem; N6: TMenuItem; N7: TMenuItem; ImageList1: TImageList; RzToolbar1: TRzToolbar; RzToolButton1: TRzToolButton; RzSpacer1: TRzSpacer; RzToolButton2: TRzToolButton; RzSpacer2: TRzSpa

29、cer; RzToolButton3: TRzToolButton; RzSpacer3: TRzSpacer; RzToolButton4: TRzToolButton; RzSpacer4: TRzSpacer; RzToolButton5: TRzToolButton; N8: TMenuItem; N9: TMenuItem; N10: TMenuItem; N4: TMenuItem; N12: TMenuItem; N13: TMenuItem; N14: TMenuItem; RzSpacer5: TRzSpacer; RzStatusBar1: TRzStatusBar; Rz

30、StatusPane1: TRzStatusPane; RzFieldStatus1: TRzFieldStatus; RzFieldStatus2: TRzFieldStatus; RzFieldStatus3: TRzFieldStatus; RzClockStatus1: TRzClockStatus; ADOConnection1: TADOConnection; ADOQuery1: TADOQuery; RzStatusPane2: TRzStatusPane; RzPanel1: TRzPanel; RzPanel2: TRzPanel; Panel2: TPanel; Pane

31、l1: TPanel; GroupBox1: TGroupBox; RzSpinEdit1: TRzSpinEdit; RzBitBtn1: TRzBitBtn; GroupBox2: TGroupBox; Label1: TLabel; Label2: TLabel; Edit2: TEdit; Edit1: TEdit; Label3: TLabel; Edit3: TEdit; procedure RzToolButton2Click(Sender: TObject); procedure N5Click(Sender: TObject); procedure N8Click(Sende

32、r: TObject); procedure RzToolButton5Click(Sender: TObject); procedure N4Click(Sender: TObject); procedure N12Click(Sender: TObject); procedure RzToolButton4Click(Sender: TObject); procedure N9Click(Sender: TObject); procedure RzToolButton3Click(Sender: TObject); procedure N3Click(Sender: TObject); p

33、rocedure N10Click(Sender: TObject); procedure FormShow(Sender: TObject); procedure RzBitBtn1Click(Sender: TObject); private Private declarations public Public declarations end;var Main: TMain;implementationuses Unit1,Unit4,Unit3,Unit5,unit7,unit9,unit10;$R *.dfmprocedure TMain.RzToolButton2Click(Sen

34、der: TObject);begin MainForm.Show;end;procedure TMain.N5Click(Sender: TObject);begin RzToolButton2.Click;end;procedure TMain.N8Click(Sender: TObject);begin Form4.Show;end;procedure TMain.RzToolButton5Click(Sender: TObject);begin showmessage(确定注销用户?); Main.Close; Form10.Show; Form10.Edit1.Text:=; For

35、m10.Edit2.Text:=; Form10.Edit1.SetFocus;end;procedure TMain.N4Click(Sender: TObject);begin Form5.Show;end;procedure TMain.N12Click(Sender: TObject);begin Form7.Show;end;procedure TMain.RzToolButton4Click(Sender: TObject);begin Form9.Show; Form9.GroupBox3.Visible:=False;end;procedure TMain.N9Click(Se

36、nder: TObject);begin RzToolButton4.Click;end;procedure TMain.RzToolButton3Click(Sender: TObject);begin Form9.Show; Form9.GroupBox3.Visible:=true;end;procedure TMain.N3Click(Sender: TObject);begin showmessage(确定退出系统?); Application.Terminate;end;procedure TMain.N10Click(Sender: TObject);begin RzToolBu

37、tton3.Click;end;procedure TMain.FormShow(Sender: TObject);begin adoquery1.Close; adoquery1.SQL.Clear; adoquery1.SQL.Add(select * from 用户表 where 用户名=+Form10.Edit1.Text+); adoquery1.Open; RzFieldStatus2.Caption:=adoquery1.FieldByName(用户名).AsString;end;procedure TMain.RzBitBtn1Click(Sender: TObject);va

38、r CSUM:integer;begin adoquery1.Close; adoquery1.SQL.Clear; adoquery1.SQL.Add(select * from 收支表 where 日期 like %+RzSpinEdit1.Text+%); adoquery1.Open; if adoquery1.Fields0.Value=null then begin showmessage(没有该年份的收支!); RzSpinEdit1.SetFocus; label1.Caption:=RzSpinEdit1.Text+年总收入; label2.Caption:=RzSpinEd

39、it1.Text+年总支出; label3.Caption:=RzSpinEdit1.Text+年总余额; edit1.Clear; edit2.Clear; edit3.Clear; end else begin adoquery1.Close; adoquery1.SQL.Clear; adoquery1.SQL.Add(select sum(金额) as ASUM from 收支表 where 类型 like 收入% and 日期 like %+RzSpinEdit1.Text+%); adoquery1.Open; edit1.Text:=adoquery1.fieldbyname(ASUM).AsString; label1.Caption:=RzSpinEdit1.Text+年总收入; adoquery1.Close; adoquery1.SQL.Clear; adoquery1.SQL.Add(select sum(金额) as BSUM from 收支表 where 类型 like 支出% and 日期 like %+RzSpinEdit1.Text+%); adoquery1.Open;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 技术方案

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁