软件综合课程设计家庭理财工具的设计与实现Word格式.docx
《软件综合课程设计家庭理财工具的设计与实现Word格式.docx》由会员分享,可在线阅读,更多相关《软件综合课程设计家庭理财工具的设计与实现Word格式.docx(21页珍藏版)》请在冰点文库上搜索。
![软件综合课程设计家庭理财工具的设计与实现Word格式.docx](https://file1.bingdoc.com/fileroot1/2023-5/10/6e7377ab-e50f-4cd1-a454-0324f575133b/6e7377ab-e50f-4cd1-a454-0324f575133b1.gif)
Java舍弃了C语言中容易引起错误的指针(以引用取代)、运算符重载(operatoroverloading)、多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。
2系统设计
2.1系统模块设计
根据课设的内容和要求,将系统分为4个模块,分别为收支模块,资产模块,用户管理模块和数据备份模块。
用户模块的主要功能有用户信息管理,包块用户的增加,删除;
收支管理,包括收支信息的增加,修改,删除,查询功能;
资产模块的主要功能是增加,删除,修改,查询有关信息;
除此之外,还可以用数据库管理数据,可以及时备份与恢复,保证了系统的安全性。
家庭财务管理系统
资产模块
收支模块
用户模块
添加收入信息
添加支出
信息
添加删除
删除用户查询
添加用户信息
资产信息查询
查询
收支信息
数据备份模块
数据库备份
数据库恢复
图2.1系统功能模块图
2.2数据库设计
(1)用户表:
tabyonghu
以用户名为主键,同时还有密码,姓名,出生日期,住址,电话等属性。
具体属性设定如表2.1所示。
列名
数据类型
允许为空
说明
user
varchar
不允许
用户名,主键
upass
用户密码
dianhua
int
用户电话
shengri
data
用户生日
xingmin
varchat
用户姓名
zhuzhi
用户住址
sq
权限
表2.1用户表
(2)收入表:
tabshouru
以收入者为主键,且编号,收入金额,日期,存放入属性与用户表相关联。
具体属性设定如表2.2所示。
表2.2收入表
bianhao
varcha
编号
shouruzhe
收入者,主键
jine
收入金额
收入日期
cunfangru
存放入何处
beizhu
允许
备注
(3)支出表:
tabzhichu
以支出者为主键,且编号,支出金额,日期,用途属性与用户表相关联。
具体属性设定如表2.3所示。
表2.3支出表
zhichuzhe
支出者,主键
支出金额
支出日期
yongtu
用途
(4)资产表:
tabzichan
用户名为主键,银行类型,银行名称,开户人和总金额等。
具体属性设定如表2.4所示。
表2.4资产表
id
leixing
银行类型
bankname
银行名称
kaihuren
开户人
总金额
2.3函数设计
本系统所设计的函数及所用到的网络通信函数见表2.6。
表2.6函数列表
函数名称
函数原型
功能描述
main
voidmain();
系统主程序
findAll
publicList<
Object[]>
findAll();
查询功能
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
按要求添加信息
图2.4收入功能实现流程图
tabshourutea=newtabshouru();
Stringbianhao=jT1.getText();
if(bianhao==null||bianhao.trim().length()<
javax.swing.JOptionPane.showMessageDialog(null,"
编号不能为空!
"
Stringshouruzhe=jT2.getText();
if(shouruzhe==null||shouruzhe.trim().length()<
收入者不能为空!
Stringjine=jT3.getText();
if(jine==null||jine.trim().length()<
金额不能为空!
Stringdata=jT4.getText();
if(data==null||data.trim().length()<
日期不能为空!
Stringchunfangru=jT5.getText();
if(chunfangru==null||chunfangru.trim().length()<
存放处不能为空!
tea.setBianhao(bianhao);
tea.setShouruzhe(shouruzhe);
tea.setJine(jine);
tea.setData(data);
tea.setChunfangru(chunfangru);
booleanx=tdao.save(tea);
if(x){
信息保存成功!
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.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)
{
deletefromtabshouruwhereshouruzhe=?
intx=this.saveOrUpdate(sql,shouruzhe);
2.3.4收支查询和资产查询功能的实现
收入支出查询和资产查询都是对财务信息的查询,用户可以根据收入者或支出者查询收入,支出条目的具体信息;
资产查询是通过用户id查询资产管理中的具体信息。
如图2.5是显示支出查询的具体步骤。
点击查询
输入支出者
显示支出信息
图2.5查询功能实现流程图
具体代码如下:
tabshourus=newtabshouru();
Stringshouruzhe=jT1.getText();
/*if(stunum!
=null&
&
stunum.toString().length()>
0){
List<
dli=studao.findByStunum(stunum.toString());
if(dli!
dli.size()>
Object[]da=dli.get(0);
s.setObjid((String)da[2]);
}*/
收入者不能为空"
s.setShouruzhe(shouruzhe);
javax.swing.table.DefaultTableModelm=newjavax.swing.table.DefaultTableModel();
m.addColumn("
编号"
收入者"
金额"
日期"
存放入"
li=shourudao.findbyid2(s);
m.addRow(li.get(0));
//按行添加数据
jTable1.setModel(m);
findall(){
select*fromtabshouru"
returnthis.query(sql);
2.3.5数据备份恢复功能的实现
数据库管理模块对于用户非常重要,数据库备份模块可以把用户的信息在数据库里再保存一份,为以后发生特殊情况做准备,也可以说是为用户信息的安全又加了一层保险,数据库管理模块界面如图2.6所示
进行数据备份
备份成功
进行数据恢复
恢复成功
图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,"
}
publicstaticvoidload(){
try{
StringfPath=("
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,"
writer.write(outStr);
//注:
这里如果用缓冲方式写入文件的话,会导致中文乱码,用flush()方法则可以避免
writer.flush();
//别忘记关闭输入输出流
out.close();
br.close();
writer.close();
数据已导入"
}catch(Exceptione){
e.printStackTrace();
3调试分析
(1)SQL语句问题
●问题描述:
在写代码时,SQL语句经常会出现输写错误,有时是格式出错,有时是属性添加错误,或者是添加不全,有时返回值与我想要的结果不符合。
●问题分析:
对SQL的语句书写不熟练,格式不明确,对数据库的属性信息记得不够仔细。
●解决方法:
通过查看书本,按照书本上的格式认真书写,并对照数据库看属性信息是否有误。
(2)对象