资源描述
安徽工业大学
毕业设计(论文)任务书
课题名称
家庭管理系统设计
学 院
计算机学院
专业班级
计算机科学与技术052班
姓 名
徐 涛
学 号
059074064
毕业设计(论文)的工作内容:
1.涉及知识:
面向对象的编程技术、数据库技术、JDBC技术、Charterer技术以及设计模式相关知识等。
2.系统设计:
1)按照软件工程的方法结合家庭管理的要求对家庭管理系统进行需求分析、总体设计、详细设计、编码和测试。
2)使用act 、Swing、Charterer进行系统前台设计,以mys为数据库进行系统后台数据管理,使用JDBC技术实现数据库的连接和使用,能提供一个界面良好,操作简便的C/S家庭管理系统;
3)系统有财务管理模块,家庭计划管理模块,家庭日记管理模块,家庭相册管理模块,电话薄信息模块,理财入门模块等;
4)软件结构良好,遵守软件设计的开闭原则,具备一定的可维护性和可靠性。
起止时间:
2009
年
2
月
16
日至
2009
年
6
月
10
日共
16.5
周
指 导 教 师
签 字
系 主 任
签 字
院 长
签 字
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
装
┊
┊
┊
┊
┊
订
┊
┊
┊
┊
┊
线
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
安徽工业大学 毕业设计(论文)说明书
摘要
家庭管理系统是一款综合功能的家庭事务管理系统,它以财务信息管理功能模块为核心,同时加入了家庭计划,日记,相册,电话薄,理财知识等其他功能模块,还提供一些个性化的功能,如留言,闹钟等。该系统界面美观,操作简便,功能全面温馨,适合家庭各个成员使用。
整个系统基于C/S模式设计, 使用Java语言实现了一个基于Windows平台的管理系统。该系统采用三层分层设计模式(视图、业务层、持久层),通过JDBC和IO技术为该系统提供对象的持久化和IO流读写,使用Swing和act构建界面,并使用Charterer技术实现了数据的图形显示。该系统可以实现对日常生活收支和债务的增加,删除,修改及有条件查询;可以动态可视化的书写,管理日记和家庭计划;可以动态的浏览,增加,删除家庭相片;可以记录完整的电话信息;可以给家人留言,设闹钟等;还可以学习基本的家庭理财知识。
该系统使用mys数据库作为存储对象,并同时使用IO流对大文件进行读取存储,在设计和完成的过程中加深了对GUI设计和事件监听处理的应用,同时加深了对数据库各种操作方法的理解,也进一步的了解了java设计模式。
关键词 :家庭管理;设计模式;JDBC;mys;Charterer
Abstract
Family Management System is a comprehensive function of the family affairs management system, which the financial information management function module as the core, at the same time joined the family planning, diary, photo album, telephone directories, financial knowledge, and other functional modules,and also to provide some personal functions, such as messages, alarm clock and so on. The system is beautiful interface, easy to operate, full-featured warm, suitable for all family members.
The entire system is based on C / S model design, the use of Java language implements a Windows-based platform management system. The system uses three-tiered design mode (view, the business layer, persistence layer), through JDBC and IO technologies provides persistent object and IO streams to read and write, using Swing and act to build interface and using Charterer technology to achieve graphical display of data. The system can be achieved on the daily life of the balance of payments and debt to add, delete, modify and query conditions; can dynamic Visualization of writing, management in diary management and family planning;can dynamic View, add, delete the family photos; can record complete telephone number information; can message to familiars, set up alarm clock, etc.; also can learn the basic knowledge of family financial management.
The system uses mys database as a storage object, and at the same time the use of IO streams for reading large files to store, in the design and completion of the course a better understanding of GUI design and monitor the handling of the incident, while a better understanding of the various methods of operation of the database understanding, and also further understanding of the design patterns of java.
Keywords: Family Management; design mode; JDBC ; mys; Charterer
第 II 页
目录
摘要 I
Abstract II
目录 III
第一章 绪论 1
1.1什么是家庭管理 1
1.2家庭财务管理的重要性 1
1.3家庭管理系统分析 1
1.3.1功能模块 2
1.3.2项目描述 2
第二章 开发环境及开发工具的介绍 3
2.1开发工具介绍 3
2.1.1 Java简介 3
2.1.2 应用程序开发环境----Myeclipse 4
2.1.3 JDBC 4
2.1.4 JFreeChart 4
2.1.5 MySql数据库 5
2.1.6 C/S开发模式 5
第三章 系统设计 5
3.1系统设计思想 5
3.2系统功能设计 6
3.3系统结构设计图 7
3.4系统ER图 7
3.5系统用例图 8
3.6系统类图 9
3.7系统的数据库的设计 12
第四章 系统实现 15
4.1 系统启动模块的实现 15
4.2 系统主界面的实现 17
4.3 财务操作界面的实现(以收入为例) 20
4.3.1添加操作界面的实现 24
4.3.2修改操作界面的实现 25
4.3.3删除操作界面的实现 25
4.3.4搜索操作界面的实现 26
4.4 财务统计界面的实现 27
4.5 财务分析界面的实现 29
4.6 日记界面的实现 31
4.7 计划界面的实现 36
4.8 相册界面的实现 41
4.9 电话薄界面的实现 45
4.10 理财入门界面的实现 48
4.11 闹钟界面的实现 49
第五章 系统测试 52
5.1系统测试概念 52
5.2测试的目的 52
5.3测试的目标 52
5.4系统测试的对象 53
5.5测试过程 53
5.5.1模块测试 53
5.5.2子系统测试 53
5.5.3集成测试 53
5.5.4验收测试 53
5.6测试结论 53
5.7后续建议 54
总结与体会 55
致 谢 56
参考文献 57
第 IV 页
第一章 绪论
1.1什么是家庭管理
家庭管理是指家庭中的组织和建设。家庭管理以提高家庭物质和精神生活质量为中心,包括组织、决策、指导、协调、研究和实施家庭生活的一切方面。而家庭管理中,最重要的莫过于家庭财务管理,伴随着金融危机寒流的袭来,每个家庭都感到不同程度的社会生活压力,如何合理的做好家庭财务,及其他管理,顺利的度过这段经济寒冬是每个家庭必须面对的。
1.2家庭财务管理的重要性
理财就是计划经济,提早的做好计划,知道家里未来一个月近多少钱,扣除最基本的生活花销是多少,再扣除一般以外缓冲的一部分较为客观的现金,剩下的钱存银行,坚定不到万不得已的大事,决不动那些已存的钱。
人的花销总是有弹性的,如果你在一方面多花了,想到不能取钱填窟窿,就会在别处省,当然看病、过节孝敬父母之类的就不能算了。
理财最重要的目的是养成珍惜自己劳动的好习惯,而且积累财富是种乐趣,别构成压力,根据自己收入支配花销,就不会很紧张。还有一点就是会理财也会促进你会赚钱的。
理财,在企业层面,就是财务,在家庭层面,就是持家过日子或管家,似乎自古以来家庭理财都是女人的专职,但在现代社会,理财是每个人都必须学会的生存技能之一。理财决定着家庭的兴衰,维系着一家老小的生活和幸福,尤其对于已成家的工薪阶层来说,更是最重要的一门必修课。
但是家庭财务种类繁多,手工记载非常繁琐,而且不直观,如果想比较一年来的收入支出等情况,翻账本肯定不是一个很好的选择。如果有一套系统可以完成上述工作,那将可以减少很多时间,使得家庭财务管理不再是一件很繁琐或者专业人士才能去做的事,那对普通家庭来说是非常有益的。
1.3 家庭管理系统分析
家庭管理系统是一款简单实用温馨的家庭管理软件,满足家庭和个人的财务,健康,计划等的信息记录和管理需求,以及家庭相册,日记,留言等个性化要求。本系统重点解决家庭理财的需求,以及适当的家庭辅助管理功能需求。
1.3.1 功能模块
① 管理账户(收入,支出,借贷), 统计(图表显示收支借贷的比例视图,有每日比较和季度总额比较),增删改查等。
② 管理家庭日记,可以通过日历添加,查看。
③ 家庭计划(旅游,聚会等),可以通过日历添加删除,可以快速浏览本月的计划。
④ 家庭相册管理,可以添加删除,可以幻灯片浏览。
⑤ 家庭电话薄,可以添加修改删除完整信息的电话号码记录。
⑥ 理财知识,可以系统的了解关于理财的专业知识。
应用说明:使客户能够对自己的财务状况有一个清晰认识,方便管理自己的财务,提供时间段的财务统计,让用户对自己的财产有个宏观的概念,结合家庭计划,家庭保健等综合管理家庭事务和财务,同时提供温馨的家庭交流平台。
1.3.2项目描述
a. 针对普通个人用户,本软件具有友好的操作界面。用户只需要大概了解说明,便可以进行使用。
b.本系统满足家庭成员的理财需求,不设权限。
本软件的主要功能包括:
a. 账户管理:管理用户的账户信息。接受用户账户信息的提交,进行处理后用表单的形式进行显示。
b.收支管理:处理用户的收入和支出的信息,进行处理后用表单的形式进行显示,同时提供时间段的收支情况模糊查询,添加,删除,修改功能。
c.借贷管理:用户提交借贷信息,进行处理后显示借贷的详细信息,同时提供时间段的借贷情况的模糊查询,添加,删除,修改等。
d.统计功能:统计功能提供用户财务信息的查询和统计的功能,可以统计账户信息,收支信息,借贷信息,并以时间段作为标准,图表显示统计结果和比例统计饼图。
e.日记录入:家庭日记信息的录入。可以快速动态的查看,修改,删除。
f.家庭计划:家庭计划的制定和快速浏览。
g.其他:图片展示,健康提醒,留言等。
第二章 开发环境及开发工具的介绍
2.1开发工具介绍
2.1.1 Java简介
Java是由Sun Microsystems公司于1995年5月推出的Java程序设计语言(以下简称Java语言)和Java平台的总称。
Java平台由Java虚拟机(Java Virtual Machine)和Java 应用编程接口(Application Programming Interface、简称API)构成。在硬件或操作系统平台上安装一个Java平台之后,Java应用程序就可运行。现在Java平台已经嵌入了几乎所有的操作系统。这样Java程序可以只编译一次,就可以在各种系统中运行。
Java主要特性:
1、Java语言是简单的。Java语言的语法与C语言和C++语言很接近,使得大多数程序员很容易学习和使用Java。
2、Java语言是一个面向对象的。Java语言提供类、接口和继承等原语,为了简单起见,只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现机制(关键字为implements)。
3、Java语言是分布式的。
4、Java语言是健壮的。Java的强类型机制、异常处理、废料的自动收集等是Java程序健壮性的重要保证。
5、Java语言是安全的。
6、Java语言是体系结构中立的。
7、Java语言是可移植的。
8、Java语言是解释型的。
9、Java是高性能的。
10、Java语言是多线程的。Java语言支持多个线程的同时执行,并提供多线程之间的同步机制(关键字为synchronized)。
11、Java语言是动态的。
Java语言的优良特性使得Java应用具有无比的健壮性和可靠性,这也减少了应用系统的维护费用。Java对对象技术的全面支持和Java平台内嵌的API能缩短应用系统的开发时间并降低成本。Java的编译一次,到处可运行的特性使得它能够提供一个随处可用的开放结构和在多平台之间传递信息的低成本方式。特别是Java企业应用编程接口(Java Enterprise A Pis)为企业计算及电子商务应用系统提供了有关技术和丰富的类库。
2009年04月20日,oracle(甲骨文)收购sun,java因此并归甲骨文公司。
2.1.2 应用程序开发环境----Ellipse
Ellipse企业级工作平台(Ellipse Enterprise Workbench ,简称Ellipse)是对Eclipse IDE的扩展,利用它我们可以在数据库和J2EE的开发、发布,以及应用程序服务器的整合方面极大的提高工作效率。它是功能丰富的J2EE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTML, Struts, JSF, CSS, Java script, SQL, Hibernate。
简单而言,Ellipse是Eclipse的插件,也是一款功能强大的J2EE集成开发环境,支持代码编写、配置、测试以及除错。
2.1.3 JDBC
JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC为工具/数据库开发人员提供了一个标准的API,据此可以构建更高级的工具和接口,使数据库开发人员能够用纯 Java API 编写数据库应用程序。
简单地说,JDBC 可做三件事:与数据库建立连接、发送 SQL 语句并处理结果。
JDBC API 既支持数据库访问的两层模型(C/S),同时也支持三层模型(B/S)。在两层模型中,Java applet或应用程序将直接与数据库进行对话。这将需要一个JDBC驱动程序来与所访问的特定数据库管理系统进行 通讯。用户的SQL语句被送往数据库中,而其结果将被送回给用户。在三层模型中,命令先是被发送到服务的"中间层",然后由它将SQL 语句发送给数据库。数据库对 SQL 语句进行处理并将结果送回到中间层,中间层再将结果送回给用户。
2.1.4 Charterer
Charterer is a free chart library for the Java(TM) platform. It is designed for use in applications, applets, servile and JSP. Charterer is distributed with complete source code subject to the terms
Charterer是JAVA平台上的一个开放的图表绘制类库。它完全使用JAVA语言编写,是为applications, applets, servile 以及JSP等使用所设计。Charterer可生成饼图(pie charts)、柱状图(bar charts)、散点图(scatter plots)、时序图(time series)、甘特图(Gantlet charts)等等多种图表。
Charterer目前是最好的java图形解决方案,基本能够解决目前的图形方面的需求。
2.1.5 mys数据库
mys是一个小型关系型数据库管理系统,开发者为瑞典mys AB公司。在2008年1月16号被Sun公司收购。
与其他的大型数据库例如Oracle、DB2、SQL Server等相比,mys自有它的不足之处,如规模小、功能有限(mys Cluster的功能和效率都相对比较差)等,但是这丝毫也没有减少它受欢迎的程度。对于一般的个人使用者和中小型企业来说,mys提供的功能已经绰绰有余,而且由于mys是开放源码软件,因此可以大大降低总体拥有成本。
2.1.6 C/S开发模式
最简单的C/S体系结构的数据库应用由两部分组成,即客户应用程序和数据库服务器程序。二者可分别称为前台程序与后台程序。由于客户端实现与服务器的直接相连,因此降低了网络通信量,事务处理速度快,交互性较强,有利于处理大量数据。它需要客户端安装专用的客户端软件。因此,客户端操作界面设计可以个性化,满足客户个性化的操作要求,具有直观、简单、方便的特点。
第三章 系统设计
3.1系统设计思想
本系统采用C/S结构,使用GUI完成界面的设计,利用JDBC和I/O技术来持久化对象和读写存储文件,用开源的mys和Charterer做数据库服务器和实现数据库数据图表化 。
系统
数据库
文件
图表
操作
用户
显示
图3.1 系统设计图
3.2 系统功能设计
① 管理账户(收入,支出,借贷), 统计(图表显示收支借贷的比例视图,有每日比较和季度总额比较),增删改查等。
② 管理家庭日记,可以通过日历添加,查看。
③ 家庭计划(旅游,聚会等),可以通过日历添加删除,可以快速浏览本月的计划。
④ 家庭相册管理,可以添加删除,可以幻灯片浏览。
⑤ 家庭电话薄,可以添加修改删除完整信息的电话号码记录。
⑥ 理财入门,可以系统的了解关于理财的专业知识。
家庭管理系统
启动画面
财务管理
日记管理
计划管理
相册管理
电话薄管理
理财入门
收入管理
支出管理
借贷管理
收入管理
软件介绍
财务统计
财务分析
图3.2 系统功能图
启动画面
财务管理
日记管理
计划管理
相册管理
电话薄管理
理财入门
收入的增、删、改、查、刷新
支出的增、删、改、查、刷新
借贷的增、删、改、查、刷新
财务统计和财务分析的显示和隐藏
日记的日历上快速添加、删、改、查看、刷新
静态页面软件信息和理财知识的查看
相片的添加、删除、查看、刷新,幻灯片自动浏览
电话薄信息的增、删
计划的日历上快速添加、删、改、查看、刷新
3.3 系统结构设计图
图3.3 系统结构图
管理
financial
time
income
payout
loan
管理
payout
id
时间
日常开支
消费品
旅游
税务
还贷
医疗
其他
总额
备注
学习
奢侈品
loan
管理
id
时间
借贷对象
金额
利息
还贷时间
其他
总额
备注
用户
管理
income
id
时间
工资
奖金
固定资产
利息
基金
股票
其他
总额
备注
3.4系统ER图
图3.4 系统ER图
家庭管理系统
财务管理
日记管理
理财入门
相册管理
电话薄管理
计划管理
3.5 系统用例图
图3.5 系统用例图
3.6系统类图
图3.6三层结构图 (biz :业务层,persist:持久层,view:视图层)
图3.7持久层的类图
图3.8视图层的类及关系图
图3.9三层结构中分别所包含的类图
图3.10 业务层的类及关系图
3.7 系统的数据库的设计
1.财务数据库表的设计
financial表是用来保存收入,支出,借贷总额的表
表1 财务数据库表
字段名称
数据类型
说明
time
archaic(10)
时间 主键
income
double(10,3)
收入
payout
double(10,3)
支出
loan
double(10,3)
借贷
建表语句:create table financial(
time archaic(10) primary key,
income double(10,3),
payout double(10,3),
loan double(10,3) );
2.收入数据库表的设计
income表是用来保存各项收入的表
表2 收入的数据库表
字段名称
数据类型
说明
id
int(4)
标号 自增非空主键
时间
archaic(10)
添加收入的时间
工资
double(10,3)
奖金
double(10,3)
固定资产
double(10,3)
指固定资产收入,如房租
利息
double(10,3)
指银行或其他的利息收入
基金
double(10,3)
购买基金的收益
股票
double(10,3)
购买的股票的收入
其他
double(10,3)
其他渠道的收入
总额
double(10,3)
自动完成上面的累加
备注
archaic(50)
写注意事项
建表语句: create table income(
id int(4) auto_increment not null primary key,
时间 archaic(10),
工资 double(10,3),
奖金 double(10,3),
固定资产 double(10,3),
利息 double(10,3),
基金 double(10,3),
股票 double(10,3),
其他 double(10,3),
总额 double(10,3),
备注 archaic(50));
3.支出数据库表的设计
payout表是用来保存各项支出的表
表3 支出数据库表
字段名称
数据类型
说明
id
int(4)
标号 自增非空主键
时间
archaic(10)
添加支出的时间
日常开支
double(10,3)
主要指每天的饮食开销
消费品
double(10,3)
指买东西的花费
旅游
double(10,3)
外出旅游的花费
税务
double(10,3)
指税收的支出
还贷
double(10,3)
用于还贷的支出
医疗
double(10,3)
用于医疗的支出
学习
double(10,3)
用于学习的支出
奢侈品
double(10,3)
用于购买非必需品的支出
其他
double(10,3)
其他类的支出
总额
double(10,3)
自动完成上面的累加
备注
archaic(50)
写注意事项
建表语句: create table payout(
id int(4) auto_increment not null primary key,
时间 archaic(10),
日常开支 double(10,3),
消费品 double(10,3),
旅游 double(10,3),
税务 double(10,3),
还贷 double(10,3),
医疗 double(10,3),
学习 double(10,3),
奢侈品 double(10,3),
其他 double(10,3),
总额 double(10,3),
备注 archaic(50));
4.借贷数据库表的设计
loan表是用来保存相关借贷的表
表4 借贷数据库表
字段名称
数据类型
说明
id
int(4)
标号 自增非空主键
时间
archaic(10)
添加借贷的时间
借贷对象
archaic(50)
借贷的对象,如**银行
金额
double(10,3)
借贷的数额
利息
double(10,3)
借贷的利息
还贷时间
archaic(10)
还贷的时间
其他
double(10,3)
借贷的其他开支
总额
double(10,3)
自动完成上面的累加
备注
archaic(50)
添加注意事项
建表语句: create table loan(
id int(4) auto_increment not null primary key,
时间 archaic(10),
借贷对象 archaic(50),
金额 double(10,3),
利息 double(10,3),
还贷时间 archaic(10),
其他 double(10,3),
总额 double(10,3),
备注 archaic(50));
第四章 系统实现
4.1 系统启动模块的实现
图4.1带进度条的启动画面
代码实现:启动的界面和进度条
class Splashdown extends J Window implements Burnable {
Thread splash Thread=null;
private Progressive progress;//进度条
public Splashdown() {
precursor(Cursor.predefined(Cursor.WAIT_CURSOR));
J Panel splash = new J Panel(new Border Layout());
splash.add(Annabel(nonmagnetic(".\\image\\splash.JP")),Border Layout.CENTER);
progress = new Progressive(1,100);
progress.interpenetrated(true);
progress.interpenetrated(false);
progress.restring("Program is Now Loading...");
progress.background(new Color(0,0,0,0));
progress.reground(new Color(20,20,180));
splash.add(progress,Border Layout.SOUTH);
contentedness(splash);
Dimension screen = get Toolkit().screenwriting();
pack();
allocation((screen.width - get Size().width) / 2,
(screen.height - get Size().height) / 2);
}
public void start(){
this.front();
splash Thread=new Thread(this);
splash Thread.start();
}
public void run(){
indivisibly(true);
try {
for (int i=0;i<=100;i++){
Thread.sleep(50);
progress.set Value(progress.get Value() + 1);
}
}
catch (Exception ex) {
ex.transcendentalist();
}
dispose();
}
}
在调用系统主界面之前调用:
Splashdown splash = new Splashdown();
splash.start();
同时在主界面得构造函数里把该线程休眠2秒,保证主界面在启动界面之后出现:
try {
Thread.sleep(2000);//
}
catch (Exception ex) {
ex.transcendentalist();
}
4.2 系统主界面的实现
图4.2 系统主界面
代码实现:主界面的类主要是一个框架,他的每个界面都是调用其他的类组合而成的。
public void carpenter(){
J Panel finance=new J Panel();//财务的界面
finance.layout(new Border Layout());
finance.add(new Necropolis(Finance Pad.get Instance()),Border Layout.CENTER);
J Panel Dias=new J Panel();//日记的界面
Dias.layout(new Border Layout());
Dias.add(new Stipendiary(),Border Layout.CENTER);
J Panel plan=new J Panel();//计划的界面
plan.layout(new Border Layout());
plan.add(new Plan Pad(),Border Layout.CENTER);
J Panel photo=new J Panel();//相册的界面
photo.layout(new Border Layout());
photo.add(new Picture Pad(),Border Layout.CENTER);
J Panel health=new J Panel();//电话薄的界面
health.layout(new Border Layout());
health.add(new Necropolis(new Phone Notepad()),Border Layout.CENTER);
Mediterranean message=new Mediterranean();//理财入门的界面
message.contentedness("text/HTML");
message.creditably(false);//这样支持HTML的超链接
//监听HTML的frame
message.hypersensitiveness(new Hyperlink Listener(){
public vo
展开阅读全文