软件综合课程设计家庭理财工具的设计与实现.docx

上传人:b****3 文档编号:6766442 上传时间:2023-05-10 格式:DOCX 页数:21 大小:1.31MB
下载 相关 举报
软件综合课程设计家庭理财工具的设计与实现.docx_第1页
第1页 / 共21页
软件综合课程设计家庭理财工具的设计与实现.docx_第2页
第2页 / 共21页
软件综合课程设计家庭理财工具的设计与实现.docx_第3页
第3页 / 共21页
软件综合课程设计家庭理财工具的设计与实现.docx_第4页
第4页 / 共21页
软件综合课程设计家庭理财工具的设计与实现.docx_第5页
第5页 / 共21页
软件综合课程设计家庭理财工具的设计与实现.docx_第6页
第6页 / 共21页
软件综合课程设计家庭理财工具的设计与实现.docx_第7页
第7页 / 共21页
软件综合课程设计家庭理财工具的设计与实现.docx_第8页
第8页 / 共21页
软件综合课程设计家庭理财工具的设计与实现.docx_第9页
第9页 / 共21页
软件综合课程设计家庭理财工具的设计与实现.docx_第10页
第10页 / 共21页
软件综合课程设计家庭理财工具的设计与实现.docx_第11页
第11页 / 共21页
软件综合课程设计家庭理财工具的设计与实现.docx_第12页
第12页 / 共21页
软件综合课程设计家庭理财工具的设计与实现.docx_第13页
第13页 / 共21页
软件综合课程设计家庭理财工具的设计与实现.docx_第14页
第14页 / 共21页
软件综合课程设计家庭理财工具的设计与实现.docx_第15页
第15页 / 共21页
软件综合课程设计家庭理财工具的设计与实现.docx_第16页
第16页 / 共21页
软件综合课程设计家庭理财工具的设计与实现.docx_第17页
第17页 / 共21页
软件综合课程设计家庭理财工具的设计与实现.docx_第18页
第18页 / 共21页
软件综合课程设计家庭理财工具的设计与实现.docx_第19页
第19页 / 共21页
软件综合课程设计家庭理财工具的设计与实现.docx_第20页
第20页 / 共21页
亲,该文档总共21页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

软件综合课程设计家庭理财工具的设计与实现.docx

《软件综合课程设计家庭理财工具的设计与实现.docx》由会员分享,可在线阅读,更多相关《软件综合课程设计家庭理财工具的设计与实现.docx(21页珍藏版)》请在冰点文库上搜索。

软件综合课程设计家庭理财工具的设计与实现.docx

软件综合课程设计家庭理财工具的设计与实现

软件综合课程设计--家庭理财工具的设计与实现

 

沈阳航空航天大学

 

课程设计报告

 

课程设计名称:

软件综合课程设计

课程设计题目:

家庭理财工具的设计与实现

 

院(系):

计算机学院

专业:

班级:

学号:

姓名:

指导教师:

完成日期:

 

1系统分析

1.1需求分析

家庭理财工具的总体目标是为使用者管理家庭收支信息和资产信息提供一个方便有效的管理平台,最大化的提高家庭理财效率和效果。

作为计算机应用的一部分,使用计算机对家庭理财进行管理,具有人工管理无法比拟的优点,它的检索速、方便查找、可靠性高、存储量大、保密性好、成本低等,这些都能极大的提高管理工作效率。

从题目内容和要求来看,需要在数据库中建立多个数据表,包括用户表,收入表,支出表,资产管理表等,表与表之间要存在关联,一个表出现改动,其它表也要做出相应的变化。

而且,在书写程序时,相比以往逻辑性更高,考虑得更为多元化,才能真正完成一个实用,方便,效率高效的家庭财务管理系统。

1.2编程技术简介

本次课设我主要使用的软件是NetBeansIDE7.1.3和NavicatforMySQL,语言则以Java为主。

NetBeansIDE7.1.3:

NetBeans是开源软件开发集成环境,是一个开放框架,可扩展的开发平台,可以用于Java、C/C++,PHP等语言的开发,本身是一个开发平台,可以通过扩展插件来扩展功能。

在NetBeansPlatform平台中,应用软体是用一系列的软体模组(ModularSoftwareComponents)建构出来。

而这些模组是一个jar档(JavaArchiveFile)它包含了一组Java程式的类别而它们实作全依据依NetBeans定义了的公开介面以及一系列用来区分不同模组的定义描述档(ManifestFile)。

有赖於模组化带来的好处,用模组来建构的应用程式可只要加上新的模组就能进一步扩充。

由於模组可以独立地进行开发,所以由NetBeans平台开发出来的应用程式就能利用着第三方软件,非常容易及有效率地进行扩充

NavicatforMySQL:

NavicatforMySQL[1]是一款强大的MySQL数据库管理和开发工具,它为专业开发者提供了一套强大的足够尖端的工具,但对于新用户仍然易于学习。

NavicatforMySQL基于Windows平台,为MySQL量身订作,提供类似于MySQL的用管理界面工具。

此解决方案的出现,将解放PHP、J2EE等程序员以及数据库设计者、管理者的大脑,降低开发成本,为用户带来更高的开发效率。

NavicatforMySQL使用了极好的图形用户界面(GUI),可以用一种安全和更为容易的方式快速和容易地创建、组织、存取和共享信息。

用户可完全控制MySQL数据库和显示不同的管理资料,包括一个多功能的图形化管理用户和访问权限的管理工具,方便将数据从一个数据库转移到另一个数据库中(LocaltoRemote、RemotetoRemote、RemotetoLocal),进行档案备份。

NavicatforMySQL支援Unicode,以及本地或远程MySQL服务器多连线,用户可浏览数据库、建立和删除数据库、编辑数据、建立或执行SQLqueries、管理用户权限(安全设定)、将数据库备份/复原、汇入/汇出数据(支援CSV,TXT,DBF和XML档案种类)等。

软件与任何MySQL5.0.x伺服器版本兼容,支援Triggers,以及BINARYVARBINARY/BIT数据种类等的规范。

Java语言:

Java编程语言的风格十分接近C、C++语言。

Java是一个纯粹的面向对象的程序设计语言,它继承了C++语言面向对象技术的核心。

Java舍弃了C语言中容易引起错误的指针(以引用取代)、运算符重载(operatoroverloading)、多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。

2系统设计

2.1系统模块设计

根据课设的内容和要求,将系统分为4个模块,分别为收支模块,资产模块,用户管理模块和数据备份模块。

用户模块的主要功能有用户信息管理,包块用户的增加,删除;收支管理,包括收支信息的增加,修改,删除,查询功能;资产模块的主要功能是增加,删除,修改,查询有关信息;除此之外,还可以用数据库管理数据,可以及时备份与恢复,保证了系统的安全性。

家庭财务管理系统

资产模块

收支模块

用户模块

添加收入信息

添加支出

信息

添加删除

信息

删除用户查询

添加用户信息

资产信息查询

查询

收支信息

数据备份模块

数据库备份

数据库恢复

图2.1系统功能模块图

2.2数据库设计

(1)用户表:

tabyonghu

以用户名为主键,同时还有密码,姓名,出生日期,住址,电话等属性。

具体属性设定如表2.1所示。

列名

数据类型

允许为空

说明

user

varchar

不允许

用户名,主键

upass

varchar

不允许

用户密码

dianhua

int

不允许

用户电话

shengri

data

不允许

用户生日

xingmin

varchat

不允许

用户姓名

zhuzhi

varchar

不允许

用户住址

sq

int

不允许

权限

表2.1用户表

(2)收入表:

tabshouru

以收入者为主键,且编号,收入金额,日期,存放入属性与用户表相关联。

具体属性设定如表2.2所示。

表2.2收入表

列名

数据类型

允许为空

说明

bianhao

varcha

不允许

编号

shouruzhe

varchar

不允许

收入者,主键

jine

int

不允许

收入金额

data

data

不允许

收入日期

cunfangru

varchar

不允许

存放入何处

beizhu

varchar

允许

备注

(3)支出表:

tabzhichu

以支出者为主键,且编号,支出金额,日期,用途属性与用户表相关联。

具体属性设定如表2.3所示。

表2.3支出表

列名

数据类型

允许为空

说明

bianhao

varcha

不允许

编号

zhichuzhe

varchar

不允许

支出者,主键

jine

int

不允许

支出金额

data

data

不允许

支出日期

yongtu

varchar

不允许

用途

beizhu

varchar

允许

备注

(4)资产表:

tabzichan

用户名为主键,银行类型,银行名称,开户人和总金额等。

具体属性设定如表2.4所示。

表2.4资产表

列名

数据类型

允许为空

说明

id

varchar

不允许

用户名,主键

leixing

varchar

不允许

银行类型

bankname

varchar

不允许

银行名称

kaihuren

varchar

不允许

开户人

jine

int

不允许

总金额

 

2.3函数设计

本系统所设计的函数及所用到的网络通信函数见表2.6。

表2.6函数列表

函数名称

函数原型

功能描述

main

voidmain();

系统主程序

findAll

publicListfindAll();

查询功能

save

publicbooleansave(Tabusertea);

添加功能

delete

publicbooleandelete(Stringuname);

删除功能

updata

publicbooleanupdate(Tabusertea);

修改功能

backup

privatevoidbackup()

备份功能

load

publicstaticvoidload()

恢复功能

MainFrm

publicMainFrm(Tabuseruser);

主界面

LoginFrm

publicLoginFrm();

登录界面

yonghuFrm

publicyonghuFrm()

用户管理界面

shouzhiFrm

publicshouzhiFrm()

收支界面

zichanFrm

publiczichanFrm()

资产管理界面

shujukuFrm

publicshujukuFrm()

数据库管理界面

findFrm

publicfindFrm()

查询界面

2.3关键流程

2.3.1系统主流程

进入此系统时,先输入用户名和密码验证登录,验证成功后进入主界面,再选择要使用的功能,按要求输入相应的数据,之后退出;验证失败则不能登录。

如图2.2所示。

登录界面

开始

结束

输入用户名,密码

选择身份

通过验证

主界面

Y

N

 

图2.2系统主流程图

2.3.2登录函数功能的实现

 

登录系统是验证用户是否可以使用此系统,如果输入的用户名和密码正确,选择身份正确,才可以验证成功,登录此系统进行使用,否则,信息不正确或者身份不争取,都不可以进入此系统。

具体代码如下:

Stringuname=txtUname.getText();

Stringupass=txtPwd.getText();

if(uname==null||uname.trim().length()<1){

javax.swing.JOptionPane.showMessageDialog(null,"用户名不能为空");

return;

}

/////得到用户登录权限

Objectpower=cmbPower.getSelectedItem();

//封装用户数据

tabyonghuuser=newtabyonghu();

user.setUser(uname);

user.setUpass(upass);

if(power.equals("管理员")){

user.setSq

(1);

}else{

user.setSq

(2);

}

//调用控制用户登录模块

Dengluuc=newDenglu();

uc.login(user,this);

如图2.3所示。

图2.3登录系统流程图

2.3.3收支管理及资产管理函数的实现

用户可以根据收入支出管理模块实现添加、删除、修改、查询收支项目的功能,进入此界面,按要求进行操作,对用户的收入和支出情况进行填写,以实现该模块功能。

收支模块里具体有收入记录功能和支出记录功能,两个功能大体相同。

资产管理是对家庭总资产来源进行管理记录及统计,具体功能也包括添加、删除、修改、查询各项功能。

以下只列出收入记录功能流程图。

如图2.4所示。

进入收入界面

填写完成

对添加完成的信息进行修改

删除处理

操作成功

Y

N

Y

开始

结束

N

N

按要求添加信息

图2.4收入功能实现流程图

具体代码如下:

tabshourutea=newtabshouru();

Stringbianhao=jT1.getText();

if(bianhao==null||bianhao.trim().length()<1){

javax.swing.JOptionPane.showMessageDialog(null,"编号不能为空!

");

return;

}

Stringshouruzhe=jT2.getText();

if(shouruzhe==null||shouruzhe.trim().length()<1){

javax.swing.JOptionPane.showMessageDialog(null,"收入者不能为空!

");

return;

}

Stringjine=jT3.getText();

if(jine==null||jine.trim().length()<1){

javax.swing.JOptionPane.showMessageDialog(null,"金额不能为空!

");

return;

}

Stringdata=jT4.getText();

if(data==null||data.trim().length()<1){

javax.swing.JOptionPane.showMessageDialog(null,"日期不能为空!

");

return;

}

Stringchunfangru=jT5.getText();

if(chunfangru==null||chunfangru.trim().length()<1){

javax.swing.JOptionPane.showMessageDialog(null,"存放处不能为空!

");

return;

}

tea.setBianhao(bianhao);

tea.setShouruzhe(shouruzhe);

tea.setJine(jine);

tea.setData(data);

tea.setChunfangru(chunfangru);

booleanx=tdao.save(tea);

if(x){

javax.swing.JOptionPane.showMessageDialog(null,"信息保存成功!

");

initclassinfo();

}

//TODOaddyourhandlingcodehere:

introw=jTable1.getSelectedRow();

//得到表格选中列

intcol=jTable1.getSelectedColumn();

Stringshouruzhe=(String)jTable1.getValueAt(row,1);//得到系编号

//System.out.println("系编号:

"+cid);

//按系编号删除数据

booleanx=tdao.delete(shouruzhe);

if(x==true){

javax.swing.JOptionPane.showMessageDialog(null,"删除成功");

}

//并显示回表格

javax.swing.table.DefaultTableModelm=(javax.swing.table.DefaultTableModel)jTable1.getModel();

//删除表格中显示的数据

m.removeRow(row);

publicbooleansave(tabshourushouruzhe){

sql="insertintotabshouruvalues(?

?

?

?

?

?

)";

intx=this.saveOrUpdate(sql,shouruzhe.getBianhao(),shouruzhe.getShouruzhe(),shouruzhe.getJine(),shouruzhe.getData(),shouruzhe.getChunfangru(),shouruzhe.getBeizhu());

if(x>0)returntrue;

returnfalse;

}

publicbooleandelete(Stringshouruzhe)

{

sql="deletefromtabshouruwhereshouruzhe=?

";

intx=this.saveOrUpdate(sql,shouruzhe);

if(x>0)returntrue;

returnfalse;

}

2.3.4收支查询和资产查询功能的实现

收入支出查询和资产查询都是对财务信息的查询,用户可以根据收入者或支出者查询收入,支出条目的具体信息;资产查询是通过用户id查询资产管理中的具体信息。

如图2.5是显示支出查询的具体步骤。

查询界面

点击查询

开始

输入支出者

Y

显示支出信息

N

结束

输入支出者

图2.5查询功能实现流程图

具体代码如下:

tabshourus=newtabshouru();

Stringshouruzhe=jT1.getText();

/*if(stunum!

=null&&stunum.toString().length()>0){

Listdli=studao.findByStunum(stunum.toString());

if(dli!

=null&&dli.size()>0){

Object[]da=dli.get(0);

s.setObjid((String)da[2]);

}

}*/

if(shouruzhe==null||shouruzhe.trim().length()<1){

javax.swing.JOptionPane.showMessageDialog(null,"收入者不能为空");

return;

}

s.setShouruzhe(shouruzhe);

javax.swing.table.DefaultTableModelm=newjavax.swing.table.DefaultTableModel();

m.addColumn("编号");

m.addColumn("收入者");

m.addColumn("金额");

m.addColumn("日期");

m.addColumn("存放入");

Listli=shourudao.findbyid2(s);

m.addRow(li.get(0));//按行添加数据

jTable1.setModel(m);

//TODOaddyourhandlingcodehere:

publicListfindall(){

sql="select*fromtabshouru";

returnthis.query(sql);

}

 

2.3.5数据备份恢复功能的实现

数据库管理模块对于用户非常重要,数据库备份模块可以把用户的信息在数据库里再保存一份,为以后发生特殊情况做准备,也可以说是为用户信息的安全又加了一层保险,数据库管理模块界面如图2.6所示

开始

数据库管理界面

结束

进行数据备份

N

Y

备份成功

进行数据恢复

恢复成功

N

Y

图2.6数据库备份恢复功能流程图

具体代码如下:

privatevoidbackup(){

//数据库导出

Stringuser="root";//数据库帐号

Stringpassword="admin";//登陆密码

Stringdatabase="caiwu";//需要备份的数据库名

Stringfilepath="D:

\\Java\\mysql-5.6.15-winx64\\beifen.sql";//备份的路径地址

Stringstmt1="mysqldump"+database+"-u"+user+"-p"

+password+"--result-file="+filepath;/*Stringmysql="mysqldumptest-uroot-proot

*--result-file=d:

\\test.sql";*/

try{Runtime.getRuntime().exec(stmt1);

System.out.println("数据已导出到文件"+filepath+"中");}

catch(IOExceptione){

e.printStackTrace();}

javax.swing.JOptionPane.showMessageDialog(null,"数据已导出到文件"+filepath+"中");

}

publicstaticvoidload(){

try{

StringfPath=("D:

\\Java\\mysql-5.6.15-winx64\\beifen.sql");

Runtimert=Runtime.getRuntime();

//调用mysql的cmd:

//rt.exec("createdatabasedemo");

Processchild=rt.exec("mysql-uroot-padmincaiwu1");

OutputStreamout=child.getOutputStream();//控制台的输入信息作为输出流

StringinStr;

StringBuffersb=newStringBuffer("");

StringoutStr;

BufferedReaderbr=newBufferedReader(newInputStreamReader(

newFileInputStream(fPath),"utf8"));

while((inStr=br.readLine())!

=null){

sb.append(inStr+"\r\n");

}

outStr=sb.toString();

OutputStreamWriterwriter=newOutputStreamWriter(out,"utf8");

writer.write(outStr);

//注:

这里如果用缓冲方式写入文件的话,会导致中文乱码,用flush()方法则可以避免

writer.flush();

//别忘记关闭输入输出流

out.close();

br.close();

writer.close();

javax.swing.JOptionPane.showMessageDialog(null,"数据已导入");

}catch(Exceptione){

e.printStackTrace();

}

3调试分析

(1)SQL语句问题

●问题描述:

在写代码时,SQL语句经常会出现输写错误,有时是格式出错,有时是属性添加错误,或者是添加不全,有时返回值与我想要的结果不符合。

●问题分析:

对SQL的语句书写不熟练,格式不明确,对数据库的属性信息记得不够仔细。

●解决方法:

通过查看书本,按照书本上的格式认真书写,并对照数据库看属性信息是否有误。

(2)对象

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2