家庭理财系统的设计与实现.docx
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录
第一章实验设计课题与要求 (2)
第二章系统的调查与分析 (3)
2.1课题背景 (3)
2.2 可行性分析 (3)
2.2.1 经济可行性 (3)
2.2.2 技术可行性和运行可行性 (3)
第三章数据库分析与建立
3.1数据需求 (4)
3.2数据字典 (4)
3.2.1 用户表的数据流 (4)
3.2.2 成员表的数据流 (5)
3.3.3 收支表的数据流 (5)
3.3.4 借贷表的数据流 (5)
3.3.5 银行表的数据流 (5)
3.3 系统E-R图 (6)
3.4 数据流图 (7)
3.5 数据库的建立 (7)
第四章系统的设计与实现 (8)
4.1系统与数据库的链接 (8)
4.2系统界面的设计与实现 (8)
4.2.1 登录界面的设计 (8)
4.2.2 主界面的设计 (9)
4.2.3 家庭理财界面的设计 (10)
4.2.4 理财报表与报表打印的设计 (16)
4.2.5 选项界面(包括成员管理和密码修改) (18)
第五章设计心得与体会 (19)
附录:源代码清单 (20)
第一章:实验设计课题与要求
实验设计课题:家庭理财系统
1、设计要求:
本系统要求对家庭的收入情况,预计支出情况,实际支出情况,投资情况,消费情况和存款情况进行系统性的分析、设计,并形成系统设计说明书。
同时用DELPHI或VB来实现该系统,。
目的是通过收支系统的分析,使各家庭对自己的家庭财务有一个全面的了解和分析,以便能作到节约开支,细水长流,同时进行必要的投资。
2、编程语言为DELPHI或VB语言。
3、系统功能具备:
(1)、提供便捷、美观及丰富的界面以便能录入各类数据。
(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)、Delphi6.0以上版本的参考书。
(2)、《数据库系统概论》,萨师煊、王珊主编,高等教育出版社,2000,2月,第三版。
第二章:系统的调查与分析
2.1课题背景
近年来,计算机技术飞速发展几乎超出了人们的想象,硬件的更新换代速度更是以级数进行。
计算机在处理对象、处理方法上都发生了很大的变化。
作为计算机科学的重要分支——数据库技术,也被越来越多的应用领域采用来存储和处理他们的信息资源。
计算机已经不再仅仅是科学研究的工具,它越来越多地影响到了我们生活的诸多方面,更多的应用软件出现在了我们的身边,给人们生活的方方面面都带来了极大的便利。
近年来随着国内外社会经济和科学技术的不断改革和发展,各种各样的开销与收入也越来越多,很多人对于日常帐目的管理感到越来越力不从心,收支管理已刻不容缓,在大多数家庭里,由于计算机知识的缺乏,人们还采用手写记帐的方法,这种管理方法存在跟多缺陷,如:效率低、保密性差,另外时间一长,将产生大量的冗余文件和数据,这对于查找、更新和维护工作都带来了很大的困难。
家庭理财系统就是通过计算机对人们日常的收支进行管理,具有相关的收支情况查询和录入,以及有关数据的打印输出,有计算机统计可使人们从繁重的劳动中解脱出来,通过一些简单的输入操作,及时、准确地获得需要的信息。
理财系统在强调管理,强调信息,强调经济效益的现代社会中越来越普及,越来越重要。
而理财一直运用于企业单位,是体现一个企业的竞争力,市场力和凝聚力的方面,可以说,没有一个符合企业状况的理财系统,这样的企业就没有良好的发展前景。
现在,收支管理不再仅仅是企业所要具备的,小到一个家庭,也是必不可少的。
本人的这个家庭理财系统就是为家庭而设计的,通过这个程序,我们可以便捷的记录每年每月每天的日常开销和收入,我们只需要点击鼠标,就可以计算出收支的平衡情况,为家庭的理财提供帮助,有利于收支的良性发展。
2.2 可行性分析
目的:可行性研究的目的是用最小的代价在尽可能短的时间内确定问题是否能够解决。
2.2.1 经济可行性
计算机的价格已经十分低廉,性能却有了长足的进步。
而本系统的开发,为家庭的工作效率带来了一个质的飞跃,为此主要表现有以下几个方面:
第一,本系统的运行可以代替人工进行许多繁杂的劳动;
第二,本系统的运行可以节省许多资源;
第三,本系统的运行可以大大的提高家庭的工作效率;
第四,本系统可以使敏感文档更加安全,等等。
所以,本系统在经济上是可行的。
2.2.2技术可行性和运行可行性
为了有助于更好地进行系统的开发,我对自己社会普通家庭的收入情况进行了初步的了解,现在普通家庭的固定收入在几千圆左右,每月在衣食住行各个方面至少要1000圆左右的开销,加上各种固定的各项费用,方方面面很复杂,很难清楚明了地记录下来,一般是采用手工记帐,这样很麻烦,也算不清楚帐,每个月都要花大量的时间在算钱上。
而由于一些比较缺乏电脑方面的知识,所以,电脑对他们来说只是摆设,但
只要安装家庭理财系统,他们将只需要点击鼠标就可以十分便捷地对家庭的收支情况进行统计和计算。
本系统的开发我利用SQL Server 2000 作为本系统的数据库,它是一个支持多用户的新型数据库,适用于各种大中小规模的数据量需求。
使用DELPHI做为本系统的开发环境,DELPHI 拥有一个可视化的集成开发环境(IDE),采用面向对象的编程语言ObjectPascal和基于部件的开发结构框架。
Delphi它提供了500多个可供使用的构件,利用这些部件,开发人员可以快速地构造出应用系统。
开发人员也可以根据自己的需要修改部件或用Delphi本身编写自己的部件。
它作为一种现代化的编程语言,提供完善的指令控制语句、类与对象的支持及丰富的数据类型,给开发高性能系统提供了保障。
综上所述,本系统的设计与开发在技术上和硬件设备上的条件都是满足的,因此,它在技术上是可行的。
本系统为一个小型的家庭理财系统,所耗费的资源非常的小,学校的电脑无论是硬件还是软件都能够满足条件,因此,本系统在运行上是可行的。
第三章:数据库分析与建立
3.1 数据需求
根据系统的需求,首先将要记录的信息分类,要记录的信息如下:
(1)、用户表:用户名、密码;
(2)、成员表:成员、生日、称呼、备注;
(3)、收支表:类型、日期、金额、项目、成员、备注;
(4)、借贷表:类型、日期、金额、项目、成员、备注;
(5)、银行表:类型、日期、卡号、金额、项目、成员、备注;
根据这些需求,本系统需要5个表:“用户表”用于用户登录、“成员表”用于用户添加家庭成员、“收支表”“借贷表”“银行表”用于用户对日常现金、存折的收支进行管理。
3.2数据字典
3.2.1 用户表的数据流
3.2.2 成员表的数据流
3.2.3 收支表的数据流
3.2.4 借贷表的数据流
3.2.5 银行表的数据流
3.3系统E-R图
3.4 数据流图
3.5数据库建立
直接打开MSSQL工具“企业管理器”,新建一个数据库名为“家庭理财系统”,而后在建好的数据库中根据需要新建表:用户表、成员表、收支表、借贷表、银行表,依据数据字典中各个表的要求设计表。
第四章:系统的设计与实现
4.1 系统与数据库的链接
使用ADOConnection控件与SQL中的“家庭理财系统”数据库进行链接,双击该控件如下图所示进行链接:
4.2 系统界面的设计与实现
4.2.1 登录界面的设计
在进入系统之前,必须要有符合本系统的用户以及每个用户对应的密码。
如果没输入用户名或密码,点击登入将会提示用户名或密码不能为空。
如果用户名错误和用户的密码不符合将会提示用户名错误或密码错误,请重新输入。
具体界面如图4.2.1所示。
本系统默认用户名:admin和密码:admin,用户可以在首次登录之后在系统里面更改密码。
用户名与密码都正确后点击“登录”按钮将会进入系统主界面,点击“退出”将会退出整个系统。
procedure 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.Fields[0].Value<>null then
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;
图4.2.1 登录界面
4.2.2 主界面的设计
主界面是用户登录后进入的可以选择系统功能操作的界面,为实现提供便捷、美观及丰富的界面以便能录入各类数据,以及界面的风格要多样化,但必须满足用户的要求的标准,对主界面的设计采用MDI多文档界面风格,主界面包含主菜单和工具栏,方便用户对系统功能进行选择,主菜单包括系统设置(关于、退出系统)、家庭理财、理财报表(收支报表、借贷报表、存取报表)、选项(成员管理、修改密码)和系统工具(计算器)。
工具栏主要包括一些用户常用的功能。
方便用户快捷的选择系统功能。
主界面主页有统计总表,用户可以查询每年的总收入、总支出与总余额,系统会统计数据库信息表里面的收入总和、支出总和以及总余额,方便用户对年总收支的掌握以及对总余额的知晓。
主界面具体如图4.2.2所示。
主界面下方能显示当前用户、当前具体时间等。
图4.2.2 系统主界面
4.2.3 家庭理财界面的设计
通过点击选择理财界面左侧导航栏进行相关信息操作,左侧导航栏包括日常收支、债权债务(即日常借贷)、银行存取,用户可以选择对收支信息、借贷信息和存取信息的添加、修改、删除,实现对收支理财的管理。
导航栏还包括日常查询功能,用户可以查询收支明细、借贷明细和银行存取明细。
点击工具栏上的返回主页则会推出理财界面返回系统主界面。
理财界面具体如图4.2.3.1所示。
图4.2.3.1 理财界面
日常管理:
用户通过选择下拉框中的类型(如收入、支出、借入、借出、存入、取出)、日期、成员,和录入金额数目、项目(如金额的来源、去处等)、备注,实现对日常收支、借贷、银行存取信息的添加管理,表中可以实现对数据的删除、修改。
收支管理界面如图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.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所示,银行存取报表打印界面如图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 选项界面的设计(包括成员管理和密码修改)
用户可以实现对家庭成员信息的添加、查询、修改、删除以及修改自身密码等。
成员管理界面如图4.2.5.1所示,修改密码界面如图4.2.5.2所示。
图4.2.5.1 成员管理界面(上)图4.2.5.2 修改密码界面(下)
第五章:设计心得与体会
通过做课程设计,有几点感想,归纳如下:
1. 扎实的理论基础。
如果不掌握它们,很难写出高水平的程序。
而这一点又是我们所缺乏的。
2. 不钻牛角尖。
当遇到障碍的时候,暂时远离电脑,当重新开始的时候,也许会发现那些难题现在竟然可以迎刃而解。
3. 多与别人交流。
三人行必有我师。
4. 良好的编程风格。
注意养成良好的习惯,代码的缩进编排,变量的命名规则要始终保持一致。
如果注释和代码不一致,那就更加糟糕。
5.数据库讲求的是整体,只有在整体的情况下完善局部,才能做出一个好的数据库。
还有就是图形统计分析因为建表时的考虑不周使得上手很难,最后时间用于做图形统计分析很少,导致这一功能没有完成,这是一个很大的缺陷!这个问题在我完成了设计之后都无法解决。
希望老师能给些指点。
参考文献:
1、《数据库系统概论》,萨师煊、王珊主编,高等教育出版社,
2000,2月,第三版。
2、《Delphi技术方案宝典》,明日科技梁冰、李钟慰、吕双主编,人民邮电出版社,2008年1月第1版。
3、《Delphi开发经验技巧宝典》,明日科技编著,人民邮电出版社,2007年11月第1版。
附录:源代码清单
unit Unit10; //登录界面代码
interface
uses
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: 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 *.dfm}
procedure 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.Fields[0].Value<>null then
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(Sender: TObject);
begin
Application.Terminate;
end;
end.
unit Unit2; //主界面代码
interface
uses
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,
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: TRzSpacer;
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;
RzStatusPane1: TRzStatusPane;
RzFieldStatus1: TRzFieldStatus;
RzFieldStatus2: TRzFieldStatus;
RzFieldStatus3: TRzFieldStatus;
RzClockStatus1: TRzClockStatus;
ADOConnection1: TADOConnection;
ADOQuery1: TADOQuery;
RzStatusPane2: TRzStatusPane;
RzPanel1: TRzPanel;
RzPanel2: TRzPanel;
Panel2: TPanel;
Panel1: 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 N8Click(Sender: 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);
procedure N10Click(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure RzBitBtn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Main: TMain;
implementation
uses Unit1,Unit4,Unit3,Unit5,unit7,unit9,unit10; {$R *.dfm}
procedure TMain.RzToolButton2Click(Sender: 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:='';
Form10.Edit2.Text:='';
Form10.Edit1.SetFocus;
end;
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(Sender: 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
RzToolButton3.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);
var CSUM:integer;
begin
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add('select * from 收支表where 日期like ''%'+RzSpinEdit1.Text+'%''');
adoquery1.Open;
if adoquery1.Fields[0].Value=null then
begin
showmessage('没有该年份的收支!');
RzSpinEdit1.SetFocus;
label1.Caption:=RzSpinEdit1.Text+'年总收入';
label2.Caption:=RzSpinEdit1.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;
edit2.Text:=adoquery1.fieldbyname('BSUM').AsString;
label2.Caption:=RzSpinEdit1.Text+'年总支出';
CSUM:=StrToInt(edit1.Text)-StrToInt(edit2.Text);
edit3.Text:=IntToStr(CSUM);
label3.Caption:=RzSpinEdit1.Text+'年总余额';
end;
end;
end.
unit Unit1; //理财界面代码
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, StdCtrls, Mask, RzEdit, RzDBEdit, ExtCtrls, RzPanel,
RzGroupBar, DB, ADODB, RzButton, Grids, DBGrids, DBCtrls, RzCmboBx,
RzSpnEdt, RzRadChk, RzDBGrid, ComCtrls, DateTimePicker1, jpeg, ImgList; type
TMainForm = class(TForm)
ADOQuery1: TADOQuery;
ADOConnection1: TADOConnection;
RzGroupBar1: TRzGroupBar;
RzGroup1: TRzGroup;
RzGroup2: TRzGroup;
GroupBox1: TGroupBox;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
ComboBox1: TComboBox;
ComboBox3: TComboBox;
Edit2: TEdit;
RzBitBtn1: TRzBitBtn;
DataSource1: TDataSource;
Edit3: TEdit;
Memo1: TMemo;
RzBitBtn2: TRzBitBtn;
DBGrid1: TDBGrid;
GroupBox2: TGroupBox;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
Label10: TLabel;
Label11: TLabel;
Label12: TLabel;
ComboBox2: TComboBox;
Edit1: TEdit;
Edit4: TEdit;
ComboBox4: TComboBox;
Memo2: TMemo;
DBGrid2: TDBGrid;
RzBitBtn3: TRzBitBtn;
RzBitBtn4: TRzBitBtn;
RzDateTimeEdit1: TRzDateTimeEdit;
RzDateTimeEdit2: TRzDateTimeEdit;
DataSource2: TDataSource;
ADOQuery2: TADOQuery;
DBNavigator1: TDBNavigator;
DBNavigator2: TDBNavigator;
GroupBox3: TGroupBox;
Label13: TLabel;
Label14: TLabel;
Label15: TLabel;
Label16: TLabel;
Label17: TLabel;
Label18: TLabel;
Label19: TLabel;
ComboBox5: TComboBox;
Edit5: TEdit;
Edit6: TEdit;
RzDateTimeEdit3: TRzDateTimeEdit; ComboBox6: TComboBox;
ComboBox7: TComboBox;
Memo3: TMemo;
DBGrid3: TDBGrid;
DBNavigator3: TDBNavigator;
ADOQuery3: TADOQuery;
DataSource3: TDataSource;
RzBitBtn5: TRzBitBtn;
RzBitBtn6: TRzBitBtn;
GroupBox4: TGroupBox;
RzRadioButton1:TRzRadioButton;
RzRadioButton2:TRzRadioButton;
RzDBGrid1: TRzDBGrid;
RzBitBtn7: TRzBitBtn;
ComboBox8: TComboBox;
RzRadioButton3: TRzRadioButton; ADOQuery4: TADOQuery;
DataSource4: TDataSource;
GroupBox5: TGroupBox;
ComboBox9: TComboBox;
RzRadioButton4: TRzRadioButton; RzRadioButton5: TRzRadioButton; RzRadioButton6: TRzRadioButton; RzDBGrid2: TRzDBGrid;
GroupBox6: TGroupBox;
ADOQuery5: TADOQuery;
ADOQuery6: TADOQuery;
DataSource5: TDataSource;
DataSource6: TDataSource;
RzBitBtn8: TRzBitBtn;
RzRadioButton8: TRzRadioButton;
RzRadioButton9: TRzRadioButton;
RzBitBtn9: TRzBitBtn;
RzDBGrid3: TRzDBGrid;
ComboBox10: TComboBox;
RzDateTimeEdit4: TRzDateTimeEdit;
RzDateTimeEdit5: TRzDateTimeEdit;
Label20: TLabel;
Label21: TLabel;
RzRadioButton7: TRzRadioButton;
Label22: TLabel;
Label23: TLabel;
Label24: TLabel;
Label25: TLabel;
RzDateTimeEdit6: TRzDateTimeEdit;
RzDateTimeEdit7: TRzDateTimeEdit;
RzDateTimeEdit8: TRzDateTimeEdit;
RzDateTimeEdit9: TRzDateTimeEdit;
RzToolbar1: TRzToolbar;
RzSpacer1: TRzSpacer;
RzToolButton1: TRzToolButton;
ImageList1: TImageList;
Label26: TLabel;
Edit7: TEdit;
ADOTable1: TADOTable;
Label27: TLabel;
Edit8: TEdit;
Label28: TLabel;
Edit9: TEdit;
Panel1: TPanel;
RzSpacer2: TRzSpacer;
RzToolButton2: TRzToolButton;
Image1: TImage;
StaticText1: TStaticText;
StaticText2: TStaticText;
StaticText3: TStaticText;
procedure RzBitBtn1Click(Sender: TObject);
procedure RzGroup1Items0Click(Sender: TObject); procedure RzBitBtn2Click(Sender: TObject);
procedure RzBitBtn3Click(Sender: TObject);
procedure RzBitBtn4Click(Sender: TObject);
procedure RzBitBtn5Click(Sender: TObject);
procedure RzBitBtn6Click(Sender: TObject);
procedure RzBitBtn7Click(Sender: TObject);
procedure RzRadioButton2Click(Sender: TObject);
procedure RzRadioButton1Click(Sender: TObject);
procedure RzRadioButton3Click(Sender: TObject);
procedure RzBitBtn8Click(Sender: TObject);
procedure RzRadioButton4Click(Sender: TObject);
procedure RzRadioButton5Click(Sender: TObject);
procedure RzRadioButton6Click(Sender: TObject);
procedure RzBitBtn9Click(Sender: TObject);
procedure RzRadioButton7Click(Sender: TObject);
procedure RzRadioButton8Click(Sender: TObject);
procedure RzRadioButton9Click(Sender: TObject);
procedure RzGroup1Items1Click(Sender: TObject);
procedure RzGroup1Items2Click(Sender: TObject);
procedure RzGroup2Items0Click(Sender: TObject);
procedure RzGroup2Items1Click(Sender: TObject);
procedure RzGroup2Items2Click(Sender: TObject);
procedure RzToolButton1Click(Sender: TObject);
procedure ComboBox3Enter(Sender: TObject);
procedure RzToolButton2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
MainForm: TMainForm;
implementation
uses unit2;
{$R *.dfm}
procedure TMainForm.RzBitBtn1Click(Sender: TObject); //收支添加
begin
if (RzDateTimeEdit1.Text='')
or (edit2.Text='')
or (edit3.Text='')
or (ComboBox3.Text='') then
begin
showmessage('数据信息不全');
end
else
begin
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('INSERT INTO 收支表(类型,日期,金额,项目,成员,备
注)values('''+ComboBox1.Text+''','''+RzDateTimeEdit1.Text+''','''+edit2.Text+'' ','''+edit3.Text+''','''+ComboBox3.Text+''','''+Memo1.Text+''')');
ADOQuery1.ExecSQL;
showmessage('添加成功');
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select *from 收支表');
ADOQuery1.open;
end;
end;
procedure TMainForm.RzBitBtn2Click(Sender: TObject);
begin
combobox1.Text:='收入';
RzDateTimeEdit1.Clear;
edit2.Clear;
edit3.Clear;
combobox3.Clear;
memo1.Clear;
end;
procedure TMainForm.RzBitBtn3Click(Sender: TObject); //借贷添加
begin
if (RzDateTimeEdit2.Text='')
or (edit1.Text='')
or (edit4.Text='')
or (ComboBox4.Text='') then
begin
showmessage('数据信息不全');
end
else
begin
ADOQuery2.Close;
ADOQuery2.SQL.Clear;
ADOQuery2.SQL.Add('INSERT INTO 借贷表(类型,日期,金额,项目,成员,备注)values('''+ComboBox2.Text+''','''+RzDateTimeEdit2.Text+''','''+edit1.Text+'' ','''+edit4.Text+''','''+ComboBox4.Text+''','''+Memo2.Text+''')');
ADOQuery2.ExecSQL;
showmessage('添加成功');
ADOQuery2.Close;
ADOQuery2.SQL.Clear;
ADOQuery2.SQL.Add('select *from 借贷表');
ADOQuery2.open;
end;
end;
procedure TMainForm.RzBitBtn4Click(Sender: TObject);
begin
combobox2.Text:='借入';
RzDateTimeEdit2.Clear;
edit1.Clear;
edit4.Clear;
combobox4.Clear;
memo2.Clear;
end;
procedure TMainForm.RzBitBtn5Click(Sender: TObject); //存取添加
begin
if (RzDateTimeEdit3.Text='')
or (edit5.Text='')
or (edit6.Text='')
or (ComboBox6.Text='')
or (ComboBox7.Text='') then
begin
showmessage('数据信息不全');
end
else
begin
ADOQuery3.Close;
ADOQuery3.SQL.Clear;
ADOQuery3.SQL.Add('INSERT INTO 银行表(类型,日期,卡号,金额,项目,成员,备注)values('''+ComboBox5.Text+''','''+RzDateTimeEdit3.Text+''','''+ComboBox6.Tex t+''','''+edit5.Text+''','''+edit6.Text+''','''+ComboBox7.Text+''','''+Memo3.Te xt+''')');
ADOQuery3.ExecSQL;
showmessage('添加成功');
ADOQuery3.Close;
ADOQuery3.SQL.Clear;
ADOQuery3.SQL.Add('select *from 银行表');
ADOQuery3.open;
end;
end;
procedure TMainForm.RzBitBtn6Click(Sender: TObject);
begin
combobox5.Text:='存入';
RzDateTimeEdit3.Clear;
edit5.Clear;
edit6.Clear;
combobox6.Clear;
combobox7.Clear;
memo3.Clear;
end;
procedure TMainForm.RzBitBtn7Click(Sender: TObject); //收支查询与金额统计
begin
if RzRadioButton1.Checked=true then
begin
adoquery4.Close;
adoquery4.SQL.Clear;
adoquery4.SQL.Add('select sum(金额) as ASUM from 收支表where 类型
='''+combobox8.Text+'''');
adoquery4.Open;
edit8.Text:=adoquery4.fieldbyname('ASUM').AsString;
ADOQuery4.close;
ADOQuery4.sql.clear;
ADOQuery4.sql.Add('select * from 收支表where 类型='''+combobox8.Text+''' Order By 日期 Asc');
ADOQuery4.open;
end;
If RzRadioButton2.Checked=true then
begin
adoquery4.Close;
adoquery4.SQL.Clear;
adoquery4.SQL.Add('select sum(金额) as ASUM from 收支表where 类型
='''+combobox8.Text+''' and 日期between :a and :b '); ADOQuery4.parameters.ParamByName('a').value:=datetostr(RzDateTimeEdit4.Date); ADOQuery4.parameters.ParamByName('b').value:=datetostr(RzDateTimeEdit5.Date);
adoquery4.Open;
edit8.Text:=adoquery4.fieldbyname('ASUM').AsString;
ADOQuery4.close;
ADOQuery4.sql.clear;
ADOQuery4.sql.Add('select * from 收支表 where 类型='''+combobox8.Text+''' and 日期between :a and :b Order By 日期Asc'); ADOQuery4.parameters.ParamByName('a').value:=datetostr(RzDateTimeEdit4.Date); ADOQuery4.parameters.ParamByName('b').value:=datetostr(RzDateTimeEdit5.Date);
ADOQuery4.open;
end;
if RzRadioButton3.Checked=true then
begin
adoquery4.Close;
adoquery4.SQL.Clear;
adoquery4.SQL.Add('select sum(金额) as ASUM from 收支表where 类型
='''+combobox8.Text+''' and 日期='''+RzDateTimeEdit4.Text+'''');
adoquery4.Open;
edit8.Text:=adoquery4.fieldbyname('ASUM').AsString;
ADOQuery4.close;
ADOQuery4.sql.clear;
ADOQuery4.sql.Add('select * from 收支表 where 类型='''+combobox8.Text+''' and 日期='''+RzDateTimeEdit4.Text+''' Order By 金额 Asc');
ADOQuery4.open;
end;
end;
procedure TMainForm.RzRadioButton1Click(Sender: TObject);
begin
RzDateTimeEdit4.Enabled:=false;
RzDateTimeEdit5.Enabled:=false;
Label20.Visible:=true;
Label21.Visible:=true;
end;
procedure TMainForm.RzRadioButton2Click(Sender: TObject);
begin
RzDateTimeEdit4.Enabled:=RzRadioButton2.Checked;
RzDateTimeEdit5.Enabled:=RzRadioButton2.Checked;
Label20.Visible:=true;
Label21.Visible:=true;
end;
procedure TMainForm.RzRadioButton3Click(Sender: TObject);
begin
RzDateTimeEdit4.Enabled:=true;
RzDateTimeEdit5.Enabled:=false;
Label20.Visible:=false;
Label21.Visible:=false;
end;
procedure TMainForm.RzBitBtn8Click(Sender: TObject); //借贷查询与金额统计begin
if RzRadioButton4.Checked=true then
begin
adoquery5.Close;
adoquery5.SQL.Clear;
adoquery5.SQL.Add('select sum(金额) as ASUM from 借贷表where 类型='''+combobox9.Text+'''');
adoquery5.Open;
edit9.Text:=adoquery5.fieldbyname('ASUM').AsString;
ADOQuery5.close;
ADOQuery5.sql.clear;
ADOQuery5.sql.Add('select * from 借贷表where 类型='''+combobox9.Text+''' Order By 日期 Asc');
ADOQuery5.open;
end;
If RzRadioButton5.Checked=true then
begin
adoquery5.Close;
adoquery5.SQL.Clear;
adoquery5.SQL.Add('select sum(金额) as ASUM from 借贷表where 类型
='''+combobox9.Text+''' and 日期between :a and :b '); ADOQuery5.parameters.ParamByName('a').value:=datetostr(RzDateTimeEdit6.Date); ADOQuery5.parameters.ParamByName('b').value:=datetostr(RzDateTimeEdit7.Date);
adoquery5.Open;
edit9.Text:=adoquery5.fieldbyname('ASUM').AsString;
ADOQuery5.close;
ADOQuery5.sql.clear;
ADOQuery5.sql.Add('select * from 借贷表 where 类型='''+combobox9.Text+''' and 日期between :a and :b Order By 日期Asc'); ADOQuery5.parameters.ParamByName('a').value:=datetostr(RzDateTimeEdit6.Date); ADOQuery5.parameters.ParamByName('b').value:=datetostr(RzDateTimeEdit7.Date);
ADOQuery5.open;
end;
if RzRadioButton6.Checked=true then
begin
adoquery5.Close;
adoquery5.SQL.Clear;
adoquery5.SQL.Add('select sum(金额) as ASUM from 借贷表where 类型
='''+combobox9.Text+''' and 日期='''+RzDateTimeEdit6.Text+''' ');
adoquery5.Open;
edit9.Text:=adoquery5.fieldbyname('ASUM').AsString;
ADOQuery5.close;
ADOQuery5.sql.clear;
ADOQuery5.sql.Add('select * from 借贷表 where 类型='''+combobox9.Text+''' and 日期='''+RzDateTimeEdit6.Text+''' Order By 金额 Asc');
ADOQuery5.open;
end;
end;
procedure TMainForm.RzRadioButton4Click(Sender: TObject);
begin
RzDateTimeEdit6.Enabled:=false;
RzDateTimeEdit7.Enabled:=false;
Label22.Visible:=true;
Label23.Visible:=true;
end;
procedure TMainForm.RzRadioButton5Click(Sender: TObject);
begin
RzDateTimeEdit6.Enabled:=RzRadioButton5.Checked;
RzDateTimeEdit7.Enabled:=RzRadioButton5.Checked;
Label22.Visible:=true;
Label23.Visible:=true;
end;
procedure TMainForm.RzRadioButton6Click(Sender: TObject);
begin
RzDateTimeEdit6.Enabled:=true;
RzDateTimeEdit7.Enabled:=false;
Label22.Visible:=false;
Label23.Visible:=false;
end;
procedure TMainForm.RzBitBtn9Click(Sender: TObject); //存取查询与金额统计
begin
if RzRadioButton7.Checked=true then
begin
adoquery6.Close;
adoquery6.SQL.Clear;
adoquery6.SQL.Add('select sum(金额) as ASUM from 银行表where 类型
='''+combobox10.Text+'''');
adoquery6.Open;
edit7.Text:=adoquery6.fieldbyname('ASUM').AsString;
ADOQuery6.close;
ADOQuery6.sql.clear;
ADOQuery6.sql.Add('select * from 银行表 where 类型='''+combobox10.Text+''' Order By 日期 Asc');
ADOQuery6.open;
end;
If RzRadioButton8.Checked=true then
begin
adoquery6.Close;
adoquery6.SQL.Clear;
adoquery6.SQL.Add('select sum(金额) as ASUM from 银行表where 类型
='''+combobox10.Text+''' and 日期between :a and :b '); ADOQuery6.parameters.ParamByName('a').value:=datetostr(RzDateTimeEdit8.Date); ADOQuery6.parameters.ParamByName('b').value:=datetostr(RzDateTimeEdit9.Date);
adoquery6.Open;
edit7.Text:=adoquery6.fieldbyname('ASUM').AsString;
ADOQuery6.close;
ADOQuery6.sql.clear;
ADOQuery6.sql.Add('select * from 银行表 where 类型='''+combobox10.Text+''' and 日期between :a and :b Order By 日期Asc'); ADOQuery6.parameters.ParamByName('a').value:=datetostr(RzDateTimeEdit8.Date); ADOQuery6.parameters.ParamByName('b').value:=datetostr(RzDateTimeEdit9.Date);
ADOQuery6.open;
end;
if RzRadioButton9.Checked=true then。