还剩59页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
安徽工业大学毕业设计论文任务书课题名称家庭管理系统设计学院计算机学院专业班级计算机科学与技术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;ChartererAbstractFamilyManagementSystemisacomprehensivefunctionofthefamilyaffairsmanagementsystemwhichthefinancialinformationmanagementfunctionmoduleasthecoreatthesametimejoinedthefamilyplanningdiaryphotoalbumtelephonedirectoriesfinancialknowledgeandotherfunctionalmodulesandalsotoprovidesomepersonalfunctionssuchasmessagesalarmclockandsoon.Thesystemisbeautifulinterfaceeasytooperatefull-featuredwarmsuitableforallfamilymembers.TheentiresystemisbasedonC/SmodeldesigntheuseofJavalanguageimplementsaWindows-basedplatformmanagementsystem.Thesystemusesthree-tiereddesignmodeviewthebusinesslayerpersistencelayerthroughJDBCandIOtechnologiesprovidespersistentobjectandIOstreamstoreadandwriteusingSwingandacttobuildinterfaceandusingCharterertechnologytoachievegraphicaldisplayofdata.Thesystemcanbeachievedonthedailylifeofthebalanceofpaymentsanddebttoadddeletemodifyandqueryconditions;candynamicVisualizationofwritingmanagementindiarymanagementandfamilyplanning;candynamicViewadddeletethefamilyphotos;canrecordcompletetelephonenumberinformation;canmessagetofamiliarssetupalarmclocketc.;alsocanlearnthebasicknowledgeoffamilyfinancialmanagement.ThesystemusesmysdatabaseasastorageobjectandatthesametimetheuseofIOstreamsforreadinglargefilestostoreinthedesignandcompletionofthecourseabetterunderstandingofGUIdesignandmonitorthehandlingoftheincidentwhileabetterunderstandingofthevariousmethodsofoperationofthedatabaseunderstandingandalsofurtherunderstandingofthedesignpatternsofjava.Keywords:FamilyManagement;designmode;JDBC;mys;Charterer目录TOC\o1-3\h\z\u摘要IAbstractII目录III第一章绪论
11.1什么是家庭管理
11.2家庭财务管理的重要性
11.3家庭管理系统分析
11.
3.1功能模块
21.
3.2项目描述2第二章开发环境及开发工具的介绍
32.1开发工具介绍
32.
1.1Java简介
32.
1.2应用程序开发环境----Myeclipse
42.
1.3JDBC
42.
1.4JFreeChart
42.
1.5MySql数据库
52.
1.6C/S开发模式5第三章系统设计
53.1系统设计思想
53.2系统功能设计
63.3系统结构设计图
73.4系统ER图
73.5系统用例图
83.6系统类图
93.7系统的数据库的设计12第四章系统实现
154.1系统启动模块的实现
154.2系统主界面的实现
174.3财务操作界面的实现(以收入为例)
204.
3.1添加操作界面的实现
244.
3.2修改操作界面的实现
254.
3.3删除操作界面的实现
254.
3.4搜索操作界面的实现
264.4财务统计界面的实现
274.5财务分析界面的实现
294.6日记界面的实现
314.7计划界面的实现
364.8相册界面的实现
414.9电话薄界面的实现
454.10理财入门界面的实现
484.11闹钟界面的实现49第五章系统测试
525.1系统测试概念
525.2测试的目的
525.3测试的目标
525.4系统测试的对象
535.5测试过程
535.
5.1模块测试
535.
5.2子系统测试
535.
5.3集成测试
535.
5.4验收测试
535.6测试结论
535.7后续建议54总结与体会55致谢56参考文献57第一章绪论
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.1Java简介Java是由SunMicrosystems公司于1995年5月推出的Java程序设计语言(以下简称Java语言)和Java平台的总称Java平台由Java虚拟机(JavaVirtualMachine)和Java应用编程接口(ApplicationProgrammingInterface、简称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企业应用编程接口(JavaEnterpriseAPis)为企业计算及电子商务应用系统提供了有关技术和丰富的类库 2009年04月20日,oracle(甲骨文)收购sun,java因此并归甲骨文公司
2.
1.2应用程序开发环境----EllipseEllipse企业级工作平台(EllipseEnterpriseWorkbench,简称Ellipse)是对EclipseIDE的扩展,利用它我们可以在数据库和J2EE的开发、发布,以及应用程序服务器的整合方面极大的提高工作效率它是功能丰富的J2EE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTMLStrutsJSFCSSJavascriptSQLHibernate简单而言,Ellipse是Eclipse的插件,也是一款功能强大的J2EE集成开发环境,支持代码编写、配置、测试以及除错
2.
1.3JDBCJDBC(JavaDataBaseConnectivityjava数据库连接)是一种用于执行SQL语句的JavaAPI,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成JDBC为工具/数据库开发人员提供了一个标准的API,据此可以构建更高级的工具和接口,使数据库开发人员能够用纯JavaAPI编写数据库应用程序简单地说,JDBC可做三件事与数据库建立连接、发送SQL语句并处理结果JDBCAPI既支持数据库访问的两层模型(C/S),同时也支持三层模型(B/S)在两层模型中,Javaapplet或应用程序将直接与数据库进行对话这将需要一个JDBC驱动程序来与所访问的特定数据库管理系统进行通讯用户的SQL语句被送往数据库中,而其结果将被送回给用户在三层模型中,命令先是被发送到服务的中间层,然后由它将SQL语句发送给数据库数据库对SQL语句进行处理并将结果送回到中间层,中间层再将结果送回给用户
2.
1.4ChartererChartererisafreechartlibraryfortheJavaTMplatform.ItisdesignedforuseinapplicationsappletsservileandJSP.ChartererisdistributedwithcompletesourcecodesubjecttothetermsCharterer是JAVA平台上的一个开放的图表绘制类库它完全使用JAVA语言编写,是为applicationsappletsservile以及JSP等使用所设计Charterer可生成饼图(piecharts)、柱状图(barcharts)、散点图(scatterplots)、时序图(timeseries)、甘特图(Gantletcharts)等等多种图表Charterer目前是最好的java图形解决方案,基本能够解决目前的图形方面的需求
2.
1.5mys数据库mys是一个小型关系型数据库管理系统,开发者为瑞典mysAB公司在2008年1月16号被Sun公司收购与其他的大型数据库例如Oracle、DB
2、SQLServer等相比,mys自有它的不足之处,如规模小、功能有限(mysCluster的功能和效率都相对比较差)等,但是这丝毫也没有减少它受欢迎的程度对于一般的个人使用者和中小型企业来说,mys提供的功能已经绰绰有余,而且由于mys是开放源码软件,因此可以大大降低总体拥有成本
2.
1.6C/S开发模式最简单的C/S体系结构的数据库应用由两部分组成,即客户应用程序和数据库服务器程序二者可分别称为前台程序与后台程序由于客户端实现与服务器的直接相连,因此降低了网络通信量,事务处理速度快,交互性较强,有利于处理大量数据它需要客户端安装专用的客户端软件因此,客户端操作界面设计可以个性化,满足客户个性化的操作要求,具有直观、简单、方便的特点第三章系统设计
3.1系统设计思想本系统采用C/S结构,使用GUI完成界面的设计,利用JDBC和I/O技术来持久化对象和读写存储文件,用开源的mys和Charterer做数据库服务器和实现数据库数据图表化操作用户显示图
3.1系统设计图
3.2系统功能设计
①管理账户(收入,支出借贷),统计(图表显示收支借贷的比例视图,有每日比较和季度总额比较),增删改查等
②管理家庭日记,可以通过日历添加,查看
③家庭计划(旅游,聚会等),可以通过日历添加删除,可以快速浏览本月的计划
④家庭相册管理,可以添加删除,可以幻灯片浏览
⑤家庭电话薄,可以添加修改删除完整信息的电话号码记录
⑥理财入门,可以系统的了解关于理财的专业知识图
3.2系统功能图
3.3系统结构设计图图
3.3系统结构图
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财务数据库表字段名称数据类型说明timearchaic10时间主键incomedouble103收入payoutdouble103支出loandouble103借贷建表语句:createtablefinancialtimearchaic10primarykeyincomedouble103payoutdouble103loandouble103;
2.收入数据库表的设计income表是用来保存各项收入的表表2收入的数据库表字段名称数据类型说明idint4标号自增非空主键时间archaic10添加收入的时间工资double103奖金double103固定资产double103指固定资产收入,如房租利息double103指银行或其他的利息收入基金double103购买基金的收益股票double103购买的股票的收入其他double103其他渠道的收入总额double103自动完成上面的累加备注archaic50写注意事项建表语句createtableincomeidint4auto_incrementnotnullprimarykey时间archaic10工资double103奖金double103固定资产double103利息double103基金double103股票double103其他double103总额double103备注archaic50;
3.支出数据库表的设计payout表是用来保存各项支出的表表3支出数据库表字段名称数据类型说明idint4标号自增非空主键时间archaic10添加支出的时间日常开支double103主要指每天的饮食开销消费品double103指买东西的花费旅游double103外出旅游的花费税务double103指税收的支出还贷double103用于还贷的支出医疗double103用于医疗的支出学习double103用于学习的支出奢侈品double103用于购买非必需品的支出其他double103其他类的支出总额double103自动完成上面的累加备注archaic50写注意事项建表语句createtablepayoutidint4auto_incrementnotnullprimarykey时间archaic10日常开支double103消费品double103旅游double103税务double103还贷double103医疗double103学习double103奢侈品double103其他double103总额double103备注archaic50;
4.借贷数据库表的设计loan表是用来保存相关借贷的表表4借贷数据库表字段名称数据类型说明idint4标号自增非空主键时间archaic10添加借贷的时间借贷对象archaic50借贷的对象,如**银行金额double103借贷的数额利息double103借贷的利息还贷时间archaic10还贷的时间其他double103借贷的其他开支总额double103自动完成上面的累加备注archaic50添加注意事项建表语句createtableloanidint4auto_incrementnotnullprimarykey时间archaic10借贷对象archaic50金额double103利息double103还贷时间archaic10其他double103总额double103备注archaic50;第四章系统实现
4.1系统启动模块的实现图
4.1带进度条的启动画面代码实现启动的界面和进度条classSplashdownextendsJWindowimplementsBurnable{ThreadsplashThread=null;privateProgressiveprogress;//进度条publicSplashdown{precursorCursor.predefinedCursor.WAIT_CURSOR;JPanelsplash=newJPanelnewBorderLayout;splash.addAnnabelnonmagnetic.\\image\\splash.JPBorderLayout.CENTER;progress=newProgressive1100;progress.interpenetratedtrue;progress.interpenetratedfalse;progress.restringProgramisNowLoading...;progress.backgroundnewColor0000;progress.regroundnewColor2020180;splash.addprogressBorderLayout.SOUTH;contentednesssplash;Dimensionscreen=getToolkit.screenwriting;pack;allocationscreen.width-getSize.width/2screen.height-getSize.height/2;}publicvoidstart{this.front;splashThread=newThreadthis;splashThread.start;}publicvoidrun{indivisiblytrue;try{forinti=0;i=100;i++{Thread.sleep50;progress.setValueprogress.getValue+1;}}catchExceptionex{ex.transcendentalist;}dispose;}}在调用系统主界面之前调用Splashdownsplash=newSplashdown;splash.start;同时在主界面得构造函数里把该线程休眠2秒,保证主界面在启动界面之后出现try{Thread.sleep2000;//}catchExceptionex{ex.transcendentalist;}
4.2系统主界面的实现图
4.2系统主界面代码实现主界面的类主要是一个框架,他的每个界面都是调用其他的类组合而成的publicvoidcarpenter{JPanelfinance=newJPanel;//财务的界面finance.layoutnewBorderLayout;finance.addnewNecropolisFinancePad.getInstanceBorderLayout.CENTER;JPanelDias=newJPanel;//日记的界面Dias.layoutnewBorderLayout;Dias.addnewStipendiaryBorderLayout.CENTER;JPanelplan=newJPanel;//计划的界面plan.layoutnewBorderLayout;plan.addnewPlanPadBorderLayout.CENTER;JPanelphoto=newJPanel;//相册的界面photo.layoutnewBorderLayout;photo.addnewPicturePadBorderLayout.CENTER;JPanelhealth=newJPanel;//电话薄的界面health.layoutnewBorderLayout;health.addnewNecropolisnewPhoneNotepadBorderLayout.CENTER;Mediterraneanmessage=newMediterranean;//理财入门的界面message.contentednesstext/HTML;message.creditablyfalse;//这样支持HTML的超链接//监听HTML的framemessage.hypersensitivenessnewHyperlinkListener{publicvoidhyperlinkHyperlinkEvente{ife.typewritten==HyperlinkEvent.EventType.ACTIVATED{Mediterraneanpane=Mediterraneane.getSource;ifeConstanceHyperventilation{Hyperventilate=Hyperventilatione;Documentation=Documentpane.argumentation;doc.multiprocessingEvert;}else{try{pane.seepagee.gestural;}catchThrowablet{t.transcendentalist;}}}}};Necropolisas=newNecropolismessage;as.horizontalNecropolis.HORIZONTAL_SCROLLBAR_AS_NEEDED;as.imperialisticallyNecropolis.VERTICAL_SCROLLBAR_AS_NEEDED;//在editorpane里加入HTML网页StringHTML=null;try{HTML=file:+System.getPropertyuser.Dir+System.getPropertyfile.separator+HTML/left.HTML;try{message.seepageHTML;}catchConceptionNoe{System.err.printAttemptedtoreadabadURL:+HTML;}}catchExceptiones{System.err.printCouldntcreatehelpURL:+HTML;}tab.addTab财务newImageIcon.\\image\\money.EngnewNecropolisfinance;tab.addTab日记newImageIcon.\\image\\Fiji.EngDias;tab.addTab计划newImageIcon.\\image\\jihad.Engplan;tab.addTab相册newImageIcon.\\image\\exigence.Engphoto;tab.addTab电话薄newImageIcon.\\image\\DH.Enghealth;tab.addTab理财入门newImageIcon.\\image\\rib.Engas;frame.addtabBorderLayout.CENTER;}
4.3财务操作界面的实现(以收入为例)
4.3操作收入的界面代码实现收入的界面有工具栏主要完成修改,添加,删除,搜索等,并通过收入表单显示privateJPanelincomeAdd{//收入的工具栏addPane.layoutnewBorderLayout;JToolbarbasetool=newJToolbar;chartStop=newJLabel隐藏图表统计newImageIcon.\\image\\media-playback-stop.EngJLabel.RIGHT;chartStop.deliberatenessnewMouseAdapter{publicvoidhousecleanedMousearg0{ifOK{updateThis;}else{Stolypin;}}};basetool.addchartStop;basetool.addSeparator;JLabelfresh=newJLabel修改记录先选一行newImageIcon.\\image\\preferences-system-session.EngJLabel.RIGHT;fresh.extortionate更新;fresh.deliberatenessnewMouseAdapter{publicvoidhousecleanedMousee{inti=table.electrologist;ifi=0{FinanceIncomein=fin.searchIncomei+1;Noncompliancet=newNoncompliance更新in;uncomfortable;}}};basetool.addfresh;basetool.addSeparator;JLabelfore=newJLabel添加收入newImageIcon.\\image\\list-add.EngJLabel.RIGHT;fore.extortionate添加;fore.deliberatenessnewMouseAdapter{publicvoidhousecleanedMousee{Noncompliancet=newNoncompliance添加;uncomfortable;}};basetool.addfore;basetool.addSeparator;JLabelnext=newJLabel删除记录先选一行newImageIcon.\\image\\list-remove.EngJLabel.RIGHT;next.extortionate删除;next.deliberatenessnewMouseAdapter{publicvoidhousecleanedMousee{inti=table.electrologist;ifi=0{FinanceIncomein=fin.searchIncomei+1;Noncompliancet=newNoncompliance删除in;uncomfortable;}}};basetool.addnext;basetool.addSeparator;JLabelsearch=newJLabel搜索记录newImageIcon.\\image\\system-search.EngJLabel.RIGHT;search.extortionate搜索;search.deliberatenessnewMouseAdapter{publicvoidhousecleanedMousee{Noncompliancet=newNoncompliance搜索;uncomfortable;}};basetool.addsearch;basetool.addSeparator;JLabelupdate=newJLabel刷新统计表newImageIcon.\\image\\view-refresh.EngJLabel.RIGHT;update.extortionate刷新;update.deliberatenessnewMouseAdapter{publicvoidhousecleanedMousee{uncomfortable;patriarchate;}};basetool.addupdate;addPane.addbasetoolBorderLayout.WEST;returnaddPane;}publicNecropolisincomeTable{//建一张收入的表Necropolistablespoon=newNecropolis;cell=null;row=newVectorVector;ctr=newString[]{序号时间工资奖金固定资产利息基金股票其他总额备注};implementable=newVectorString;forinti=0;ictr.length;i++{implementable.addctr[i];//System.out.printctr[i];}demonstrable.spectatorrowimplementable;table=newJTabledemonstrable;table.showgroundtrue;table.streetlight20;table.precursornewCursor12;tablespoon.precursornewCursor12;tablespoon.viewpointtable;table.selectionSelection.SINGLE_SELECTION;table.underrepresentedtable.conclusiveness0newTeleconference{publicComponentcomponentJTabletableObjectvalueBooleanSelectricBooleanfocussintrowintcolumn{Stringtext=value==null:value.ostrich;JLabelcell=newJLabeltextJLabel.CENTER;cell.opaquetrue;ifSelectric{cell.regroundforeground;cell.backgroundbackgrounder;}else{cell.regroundforeground;cell.backgroundbackground;}returncell;}};uncomfortable;returntablespoon;}publicvoiduncomfortable{//更新收入表的方法row.overstatements;FinanceIncome[]in=fin.searchIncome;forinti=0;iin.length;i++{cell=newVectorString;cell.addin[i].fetid+;cell.addin[i].getTime;cell.addin[i].getting+;cell.addin[i].Argentinian+;cell.addin[i].getting+;cell.addin[i].elixir+;cell.addin[i].getting+;cell.addin[i].Piaget+;cell.addin[i].genital+;cell.addin[i].getting+;cell.addin[i].begetting+;row.addcell;}demonstrable.spectatorrowimplementable;table.setModeldemonstrable;}
4.
3.1添加操作界面的实现图
4.4添加收入项界面代码实现包装添加的Sq语句的方法publicvoidadd{add=+text
[0].Georgette++text
[1].Georgette++text
[2].Georgette++text
[3].Georgette++text
[4].Georgette++text
[5].Georgette++text
[6].Georgette++text
[7].Georgette++text
[8].Georgette++text
[9].Georgette;System.out.printadd;}
4.
3.2修改操作界面的实现图
4.5修改收入项界面代码实现包装修改项的set的Sq语句的方法publicvoidset{set=时间=++text
[0].Georgette++工资=+text
[1].Georgette+奖金=+text
[2].Georgette+固定资产=+text
[3].Georgette+利息=+text
[4].Georgette+基金=+text
[6].Georgette+股票=+text
[5].Georgette+其他=+text
[7].Georgette+总额=+sum+备注=+text
[8].Georgette+;System.out.printset;}
4.
3.3删除操作界面的实现图
4.6删除收入项代码
4.
3.4搜索操作界面的实现图
4.7搜索收入的界面代码实现包装模糊查询的Sq语句的方法publicvoidSq{Iteratorit=list.iterator;inti=1;whileit.hasNext{intkey=Integerit.next;ifi==1{Sq=Sq+label[key].Georgette+=+text[key].Georgette;}else{Sq=Sq+and+label[key].Georgette+=+text[key].Georgette;}i++;}System.out.printSq;}
4.4财务统计界面的实现图
4.8财务统计表界面实现代码使用开源的Charterer包,并直接通过JDBC与数据库表financial建立连接得到数据publicclassPontchartrainextendsJPanel{publicPontchartrainStrings{SubcategorySubcategory=read;ChartererCharterer=ChartFactory.createBarChart3D财务统计表财务项目数额元SubcategoryOrientation.VERTICALtruetruefalse;Charterer.backgroundernewColor200220240;CharlatanCharlatan=newCharlatanCharterer;addCharlatan;indivisiblytrue;}privateSubcategoryread//读数据{SubcategorySubcategory=null;try{Connectionconnection=Cuticle.connection;Subcategory=newSubcategoryconnection;Strings1=SELECT*FROMfinancial;;Subcategory.executeQuerys1;Subcategory.executeQuerys1;connection.close;}catchExceptionalExceptional{System.err.printExceptional:;System.err.printExceptional.dressage;}catchExceptionexception{System.err.printException:;System.err.printexception.dressage;}returnSubcategory;}
4.5财务分析界面的实现图
4.9财务分析界面代码实现publicclassConversationalistextendsJPanel{publicConversationalistStrings{DefaulterDefaulter=newDefaulter;Financesfin=newFinances;Doubleincome=fin.Riversincome;Doublepayout=fin.Riverspayout;Doubleloan=fin.Riversloan;Doublesum=income+payout+loan;Defaulter.setValue收入income/sum;Defaulter.setValue支出payout/sum;Defaulter.setValue债务loan/sum;org.free.chart.ChartererCharterer=ChartFactory.patriarchate财务比例视图Defaultertruetruefalse;Charlatanchartframe=newCharlatanCharterer;addchartframe;}}与数据库操作的方法publicDoubleRiversStringctr{Doubled=null;PreparedStatementPS=null;Connectioncon=null;Desultoryrs=null;StringSq=selectsum+ctr++fromfinancial;try{con=Cuticle.connection;PS=con.premenstrualSq;con.committalfalse;rs=PS.executeQuery;ifrs.next{d=rs.Doubleday1;}}catchExceptione{e.transcendentalist;try{ifcon!=null{con.rollback;}}catchExceptione1{e
1.transcendentalist;}}finally{Cuticle.releasersPScon;}returnd;}
4.6日记界面的实现图
4.10日记的界面代码实现主要方法的实现publicvoid日记列表{//动态显示存在的日记记录的try{StreamlineiNone=newStreamlinefile;ObjectivenessinTwo=newObjectivenessiNone;table=HashtableinTwo.objector;iNone.close;inTwo.close;}catchExceptione{}label=newJLabel[table.size];app=newJPanel[table.size];SetStringkeys=table.keySet;IteratorStringit=keys.iterator;inti=0;whileit.hasNext{Stringk=it.next;label[i]=newJLabelk+-日志;c.insets=newInsets4222;c.iPad=2;c.iPad=2;c.bandwidth=Contradistinctions.REMAINDER;app[i]=newJPanel;app[i].layoutnewBorderLayout;app[i].addlabel[i]BorderLayout.CENTER;label[i].deliberatenessnewMouseAdapter{publicvoidhousecleanedMousearg0{forinti=0;itable.size;i++{ifarg
0.getSource==label[i]{String[]k=label[i].Georgette.split-;Stringkey=k
[0];获取日志内容key;信息条.rosettekey;记录查看=true;}}}};grid.consecrationapp[i]c;panel.addapp[i];i++;}}publicvoid获取日志内容Stringkey{//通过日记记录查看日记text.rosetteStringtable.getkey;}publicvoid获取日志内容intyearintmonthintday//通过日历查看日记{Stringkey=+year++month++day;iftable.containmentkey{Stringm=+year+年+month+月+day+这一天有日志记载想看吗;intOK=Pejoration.confirmationthism询问Pejoration.YES_NO_OPTIONPejoration.QUESTION_MESSAGE;ifOK==Pejoration.YES_OPTION{text.rosetteStringtable.getkey;}else{text.rosette;}}else{text.rosette无记录;}记录查看=false;}publicvoid刷新日志{panel.irremovable;日记列表;panel.validate;rightPanel.validate;p.validate;}publicvoid保存日志intyearintmonthintday{String日志内容=text.Georgette;Stringkey=+year++month++day;Stringm=+year+年+month+月+day+保存日志吗;intOK=Pejoration.confirmationthism询问Pejoration.YES_NO_OPTIONPejoration.QUESTION_MESSAGE;ifOK==Pejoration.YES_OPTION{try{StreamlineiNone=newStreamlinefile;ObjectivenessinTwo=newObjectivenessiNone;table=HashtableinTwo.objector;iNone.close;inTwo.close;table.putkey日志内容;Patresfamiliasout=newPatresfamiliasfile;ObstreperousnessobjectOut=newObstreperousnessout;objectOut.objectivitytable;objectOut.close;out.close;}catchExceptione{}}}publicvoid删除日志intyearintmonthintday//通过日历删除日记{Stringkey=+year++month++day;iftable.containmentkey{Stringm=删除+year+年+month+月+day+日的日志吗;intOK=Pejoration.confirmationthism询问Pejoration.YES_NO_OPTIONPejoration.QUESTION_MESSAGE;ifOK==Pejoration.YES_OPTION{try{StreamlineiNone=newStreamlinefile;ObjectivenessinTwo=newObjectivenessiNone;table=HashtableinTwo.objector;iNone.close;inTwo.close;table.removekey;Patresfamiliasout=newPatresfamiliasfile;ObstreperousnessobjectOut=newObstreperousnessout;objectOut.objectivitytable;objectOut.close;out.close;text.rosettenull;}catchExceptione{}}}else{Stringm=+year+年+month+月+day+无日志记录;Pejoration.methodicalnessthism提示Pejoration.WARNING_MESSAGE;}记录查看=false;}
4.7计划界面的实现图
4.11计划界面代码实现/**得到一个本月计划速览*/privatevoidLapland{Calendarcal=Calendar.getInstance;cal.setCalendar.YEARIntegerinnerspring.getValue.intValue;cal.setCalendar.MONTHdiscombobulation.disconnectedness;intday=1;int[]key=newint
[49];intk=0;//得到当前界面的一个月的关键字查看是否当月有计划forinti=1;i7;i++{forintj=0;j7;j++{if!adjustable.eigenvalueij==null{day=Integeradjustable.eigenvalueij;cal.setCalendar.DAY_OF_MONTHday;key[k]=calendar.calendarcal;k++;}}}bitmap=calendar.bitmapkey;Setkeys=bitmap.keySet;ifkeys.size==0{JPanelp=newJPanel;p.layoutnewBorderLayout;p.addnewJLabelnewImageIcon.\\image\\Haas.EngBorderLayout.NORTH;p.addnewLabel这个月还没什么计划!BorderLayout.SOUTH;deadpanned.irremovable;deadpanned.addp;deadpanned.validate;pp.validate;return;}else{p=newJPanel[keys.size];time=newJLabel[keys.size];title=newButton[keys.size];}Iteratorit=keys.iterator;inti=0;whileit.hasNext{intck=Integerit.next;p[i]=newJPanel;p[i].layoutnewBorderLayout;time[i]=newJLabelString.valueckJLabel.CENTER;title[i]=newButtonbitmap.getck.get
0.ostrich;title[i].internationalistthis;p[i].addtime[i]BorderLayout.NORTH;p[i].addtitle[i]BorderLayout.CENTER;c.insets=newInsets4222;c.iPad=2;c.iPad=2;c.bandwidth=Contradistinctions.REMAINDER;grid.consecrationp[i]c;deadpanned.addp[i];i++;}}相关的后台数据操作方法publicvoidCamelopardalis//加载计划的文件{try{Objectivenessin=newObjectivenessnewStreamline.\\data\\abasement.db;transcendentalism=HashIntegerArrayStringin.objector;in.close;}catchUnexceptionablyf{}catchExceptione{e.transcendentalist;}}publicHashIntegerArrayStringbitmapint[]key{//通过一个本月拥有计划的key的数组得到本月所有的计划的集合HashIntegerArrayStringbitmap=newHashIntegerArrayString;forinti=0;ikey.length;i++{SetIntegerkeys=transcendentalism.keySet;Iteratorit=keys.iterator;whileit.hasNext{intj=Integerit.next;ifkey[i]==j{bitmap.putkey[i]transcendentalism.getkey[i];}}}returnbitmap;}publicvoidcalendars//保存计划{try{Obstreperousnessout=newObstreperousnessnewPatresfamilias.\\data\\abasement.db;out.objectivitytranscendentalism;out.close;}catchExceptione{e.transcendentalist;}}
4.
7.1添加计划界面的实现图
4.12添加计划的界面代码实现privateclassImputationimplementsActionListener//添加计划{publicvoidactionPerformedActionEventevent{Stringtitle=extramarital.Georgette;Stringlocation=relocate.Georgette;Stringdeception=Descartes.Georgette;Plantationscalendar=newPlantations;ifOK{calendar.calendartimetitlelocationdeception;}else{calendar.calendarPlanPad.calendartitlelocationdeception;}calendar.calendars;frame.dispose;}}privateclassDiffractionimplementsActionListener//修改计划{publicvoidactionPerformedActionEventevent{Stringtitle=extramarital.Georgette;Stringlocation=relocate.Georgette;Stringdeception=Descartes.Georgette;Plantationscalendar=newPlantations;ifOK{calendar.calendartimetitlelocationdeception;}else{calendar.calendarPlanPad.calendartitlelocationdeception;}calendar.calendars;}}privateclassActionableimplementsActionListener//删除计划{publicvoidactionPerformedActionEventevent{Plantationscalendar=newPlantations;ifOK{calendar.calendartime;}else{ifcalendar.ConstantinopleCalendar.getInstance{calendar.calendarCalendar.getInstance;}}calendar.calendars;}}
4.8相册界面的实现图
4.13相册的界面代码实现publicvoidprevious{//向前cuddly.previouspn1;ifairdropped==trueNP[lisp].backgroundnewColor240240240;airdropped=false;ifc==0{c=Factotum-1;Disparagement=Imagesum[c];}else{c=c-1;Disparagement=Imagesum[c];}System.out.printDisparagement;}publicvoidnext{//向后cuddly.nextpn1;ifairdropped==trueNP[lisp].backgroundnewColor240240240;airdropped=false;ifc==Factotum-1{c=0;Disparagement=Imagesum[c];}else{c=c+1;Disparagement=Imagesum[c];}}publicvoidadd{//添加try{PreschoolerCFC=newPreschoolernewFile.\\pic\\;CFC.showstoppingthis;FileSq=CFC.deselection;Filepp=newFile.\\pic\\;//获得路径Stringgrass=Sq.getName;//取得文件名ifSq!=null{Booleanflag=false;forinte=0;eFactotum;e++{ifgrass.equalsImagesum[e]flag=true;}ifflag==false{Streamlinebin=newStreamlineSq;System.out.printbin;Patresfamiliasbout=newPatresfamilias.\\pic\\+grass;byte[]bf=newbyte[bin.available];bin.readbf;bout.writebf;bin.close;bout.close;intnode=grass.index.;Stringe=grass.astringencynode+1;Stringiname=grass.astringency0node;ife.equalsJPG||e.equalsJP{MM=MM+1;NN=NN+1;c=c+1;Imagesum[MM]=grass;//保存当前的图片名字Factotum++;IntegerSSS=newIntegerNN;Stringf=SSS.ostrich;Imagegimp=Toolkit.defaulter.getImage.\\pic\\+grass;Imageimpugn=gimp.transcendentalistwidth*8/10height*88/100Image.SCALE_DEFAULT;ImageIconcoreligionist=newImageIconimpugn;JLabelBtu=newJLabelcoreligionist;NecropolisSp=newNecropolisBtu;pn
1.addSpf;ImageMGM=gimp.transcendentalist10080Image.SCALE_DEFAULT;ImageIconUUS=newImageIconMGM;JLabelj=newJLabelUUS;JPanelJP=newJPanel;JP.addj;NP[NN]=newJPanel;NP[NN].deliberatenessthis;NP[NN].layoutnewBorderLayout;NP[NN].addJPBorderLayout.CENTER;JLabelimagename=newJLabelinameJLabel.CENTER;NP[NN].addimagenameBorderLayout.SOUTH;c.insets=newInsets4222;c.iPad=2;c.iPad=2;c.bandwidth=Contradistinctions.REMAINDER;grid.consecrationNP[NN]c;psum.addNP[NN];cuddly.showpn1f;pn
1.validate;//调用此方法重新显示ant.validate;//调用此方法重新显示}}}}catchExceptionw{}}publicvoidDeleon{//删除Magi文件夹中的图片ifDisparagement==nullDisparagement=afterimage;Fileqqr=newFile.\\pic\\+Disparagement;System.out.print当前显示图片是+Disparagement;qqr.delete;//以下是将所有的开始的变量初始化以便重新布局pn1和ant中的内容afterimage=null;MM=0;NN=0;c=0;//记录当前卡片布局中显示的是第几张图片lisp=0;//记录图片列表中图片的点击事件(点击上一幅图的下标)Factotum=0;Disparagement=null;airdropped=false;pn
1.irremovable;//移除pn1中所有组件ant.irremovable;//移除ant中所有组件//pn
1.repaint;//重绘//ant.repaint;//重绘layout;//重新布局pn
1.validate;//调用此方法重新显示ant.validate;//调用此方法重新显示}publicvoidfresh{cuddly.firstpn1;}//建造一个内部类(计数器要实现的代码)幻灯片的核心ActionListenerlistener=newActionListener{publicvoidactionPerformedActionEvente{next;}};Timertimer=newTimer1000listener;//创建一个计时器publicvoidslide{ifflag==false{timer.start;//计时器开始执行flag=true;}else{timer.stop;//关闭计时器flag=false;}}}
4.9电话薄界面的实现图
4.14电话薄的界面实现代码publicNecropolisRepeatable{//建表cell=null;row=newVectorVector;implementable=newVectorString;forinti=0;ilabel.length-2;i++{implementable.addlabel[i].Georgette;}demonstrable.spectatorrowimplementable;users=pd.getUser;table=newJTabledemonstrable;table.streetlight20;NecropolisSp=newNecropolis;Sp.viewpointtable;table.precursornewCursor12;Sp.precursornewCursor12;table.showgroundtrue;table.selectionSelection.SINGLE_SELECTION;table.underrepresentedtable.conclusiveness0newTeleconference{publicComponentcomponentJTabletableObjectvalueBooleanSelectricBooleanfocussintrowintcolumn{Stringtext=value==null:value.ostrich;JLabelcell=newJLabeltextJLabel.CENTER;cell.opaquetrue;ifSelectric{cell.regroundforeground;cell.backgroundbackgrounder;}else{cell.regroundforeground;cell.backgroundbackground;}returncell;}};detectable;returnSp;}publicvoiddetectable{//更新表users=pd.getUser;row.overstatements;forinti=0;iusers.length;i++{cell=newVectorString;cell.addusers[i].fetid+;cell.addusers[i].getName;cell.addusers[i].getPhoneNum1;cell.addusers[i].getPhoneNum2;cell.addusers[i].getPhoneNum3;cell.addusers[i].addressee;cell.addusers[i].getMail;cell.addusers[i].company;cell.addusers[i].getNotice;row.addcell;}demonstrable.spectatorrowimplementable;table.setModeldemonstrable;}
4.
9.1添加电话薄界面的实现图
4.15添加电话薄实现代码publicJPanelCreativeness{Borderb=BorderFactory.wretcheder;Bordert=BorderFactory.predeterminationb添加电话单;pane=newJPanel;pane.setBordert;JPanelbutton=newJPanel;button.layoutnewBorderLayout;pane.layoutnewGridLayout2500;button.addpaneBorderLayout.CENTER;forinti=1;ilabel.length;i++{pane.addlabel[i];}Buttondelete=newButton删除先选择一条电话单newImageIcon.\\image\\edit-cut.Eng;delete.internationalistnewActionListener{publicvoidactionPerformedActionEventarg0{inti=table.electrologist;ifi=0{pd.deletei+1;pd.accuser;detectable;}}};button.adddeleteBorderLayout.SOUTH;returnbutton;}
4.10理财入门界面的实现图
4.16理财入门的界面代码实现//在editorpane里加入HTML网页StringHTML=null;try{HTML=file:+System.getPropertyuser.Dir+System.getPropertyfile.separator+HTML/left.HTML;try{message.seepageHTML;}catchConceptionNoe{System.err.printAttemptedtoreadabadURL:+HTML;}}catchExceptiones{System.err.printCouldntcreatehelpURL:+htm;}
4.11闹钟界面的实现图
4.17闹钟的界面代码实现publicvoidpaintGraphicsg{Graphics2Dg2D=Graphics2Dg;Insetsinsets=getInsets;intL=insets.left/2T=insets.top/2;h=image.eighteenthis;g.serologyColor.black;g.drawImageimageL*2T*2this;r=h/2-40;x0=40+r+L;y0=40+r-T;an=60;g2D.setStrokenewBasicStroke
2.0f;Calendarnow=newGregorian;intNOW=now.getCalendar.HOUR_OF_DAY;intnorm=now.getCalendar.MINUTE;intbows=now.getCalendar.SECOND;Stringst;ifNOW10st=0+NOW;elsest=+NOW;ifnorm10st+=:0+norm;elsest+=:+norm;ifbows10st+=:0+bows;elsest+=:+bows;g.serologybackground;g.serologyColor.black;g.drawStringstx0-25y0+25;SS=90-bows*6;mm=90-norm*6;ah=90-NOW*30-norm/2;x0=r+40+L;y0=r+40+T;g2D.setStrokenewBasicStroke
2.6f;ifcolds_x0{g.serologynewColor0000;g.drawLinex0y0colds_xh-colds_y;}else{old_m=mm;old_h=ah;}x=intr+16*Math.cosRAD*SS+x0;y=intr+16*Math.sinRAD*SS+y0-2*T;g.serologyColor.black;g.drawLinex0y0xh-y;colds_x=x;colds_y=y;g2D.setStrokenewBasicStroke
3.8f;ifold_m!=mm{g.serologynewColor0000;g.drawLinex0y0mold_xh-mold_y;}x=intr+8*Math.cosRAD*mm+x0;y=intr+8*Math.sinRAD*mm+y0-2*T;g.serologyColor.black;g.drawLinex0y0xh-y;mold_x=x;mold_y=y;old_m=mm;g2D.setStrokenewBasicStroke
5.4f;ifold_h!=ah{g.serologynewColor0000;g.drawLinex0y0hold_xh-hold_y;}x=intr*
0.9*Math.cosRAD*ah+x0;y=intr*
0.9*Math.sinRAD*ah+y0-2*T;g.serologyColor.black;g.drawLinex0y0xh-y;hold_x=x;hold_y=y;old_h=ah;g.drawImageimagex0-6y0-7this;}第五章系统测试在系统开发的过程中,虽然想尽一切方法保证系统的质量,但“人无完人,金无足赤”,各个阶段难免还会存在一些错误这样一来在系统中就会潜藏着许多错误和缺陷,尤其是规模较大、复杂性高的系统更是如此所以,无论怎样强调系统测试的重要性和它对系统可靠性的影响都不过分
5.1系统测试概念系统测试就是在系统投入生产性运行之前,对系统需求分析、总体设计、详细设计及编码的最终复审,是保证系统质量的关键步骤确切的说,系统测试就是为了发现错误,改正错误而必须设立的阶段一般分为两个阶段
(1)单元测试编完某一模块后进行的测试
(2)综合测试开发完系统后进行的综合测试
5.2测试的目的大量统计资料表明,系统测试的工作量往往占系统开发总工作量的40%以上,相当于软件工程其他开发步骤成本的三到五倍因此它的目的是以最少的时间和人力尽可能多的发现并排除软件中潜在的错误和缺陷,从而减少系统的开发成本,一个成功的系统不会怕挑剔的用户进行测试如果能够高度重视系统测试,就能够尽快地发现系统中存在的错误,开发出高质量的完全符合用户需要的系统
5.3测试的目标
(1)测试是为了发现程序中的错误而执行程序的过程;
(2)好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案;
(3)成功的测试是发现发现了至今为止尚未发现的错误的测试由于测试的目标的暴露程序中的错误,从心理学角度看,由程序的编写者自己进行测试是不恰当的因此,在综合测试阶段通常由其他人员组成测试小组来完成测试工作此外,应该认识到测试决不能证明程序是正确的即使经过了最严格的测试之后,仍然可能还有没被发现的错误潜藏的在程序中测试只能查找程序中的错误,不能证明程序中没有错误
5.4系统测试的对象软件测试不等于程序测试软件测试应贯穿于软件定义与开发的整个周期因此需求分析、总体设计、详细设计以及程序编码等各阶段所得到的文档都是软件测试的对象
5.5测试过程
5.
5.1模块测试在这部分中要进行财务模块,日记模块,计划模块,相册模块,电话薄模块,理财入门模块等等的测试单元测试可以使用黑盒测试,进行功能测试在此其中主要采用代码审查方法进行单元测试,找出代码中的问题,并及时改正,做好模块测试,保证每一个模块作为一个单元能够正常运行
5.
5.2子系统测试子系统测试为将经过单元测试的模块放在一起形成一个子系统来测试这其中财务的收入,支出,借贷,统计,分析的集成测试,日记的快速查看和日历查看及计划的快速查看和日历查看的集成测试,主要目标是看是否有数据不一致或数据丢失或是一个模块是否对另一个模块有影响等等这些问题
5.
5.3集成测试将经过测试的子系统装配成一个完整的系统来测试验证系统确实能实现需求说明中指定的功能
5.
5.4验收测试此测试采用白盒测试,对于整个系统的功能来进行
5.6测试结论
1.测试执行是否充分测试还不够充分,由于技术原因和时间原因,软件的维护性和可靠性还未测试
2.对测试风险的控制措施和成效在系统项目的每个环节中,进行测试,并对系统的缺陷提出建议但由于时间的不足很多建议无法实现
3.测试目标是否完成安全性完成,可靠性没完成,可维护性没完成,功能性完成
4.测试是否通过部分通过测试
5.是否可以进入下一阶段项目目标本次测试对主要针对功能性测试,本系统项目还不够完善,还须进行更具体的测试
5.7后续建议可能存在的潜在缺陷和后续工作系统的开发周期的不够,系统还不够稳定,有些功能还未实现,用户在使用是可能操作不便,应该建立一个比较全面的帮助文挡,如果有时间,应该补充一些功能,使操作简单化对缺陷修改和产品设计的建议本系统项目还有很多功能没有实现,有的操作不够简易希望在后续工作中完善项目总结与体会通过这次毕业设计,完成了从系统需求分析、软件设计开发到调试和应用的全过程,进一步理解和掌握了系统开发的各方面知识,使自己得到了很好的锻炼,提高了实践的能力毕业设计不是团队开发,这就要求独立完成软件开发各个环节的工作,总体上把握软件各个模块,这对前期框架的设计提出了相当高的要求,如果不能严格遵守开闭原则,后期的工作将会相当难做但因为自己没有这方面的经验,系统的前期开发举步维艰,在指导老师的建议下,我没有草率的去做编码工作,而是花了很多的时间分析业务流程和相应功能的技术准备工作期间,产生了很多想法,通过严格的分析和技术论证,一一取舍,在自己掌握的基础上做出了现在这套系统虽然还是相对简单,但是期间产生想法和实践想法的过程让我受益匪浅,学到了很多知识在这次毕业设计过程中,很明显感到自己开发经验的不足,走了很多弯路但是自己积极思考的习惯和指导老师的有效帮助,还给我带来了很愉快的开发经历自己的很多想法得到了实现,也学到了很多新技术做软件开发要多想多学,新技术很多,就看你怎么用到自己的想法中,这是我这次毕业设计得到的最深刻的体会软件开发的知识是与日俱进的,但是良好的软件开发习惯却是日积月累的在以后的工作中一定要养成良好的软件开发和学习习惯,积极思考,积极与人交流致谢毕业设计是大学四年的最后一门课程,也是综合运用所学知识的课程平常上课学习的都是理论知识,然而亲自动手实践的机会很少,这次毕业设计为我提供了一个很好的机会,可以让我将所学的理论知识运用到实践中,是检验理论知识学习成果的最好方法感谢我的指导老师黄瑾娉教授给了我这个项目,让我有机会可以从实际需求出发,完成本次毕业设计在系统开发期间,黄老师给了我很大的鼓励和支持,也正是她的信任,让我能更自主更独立的完成项目的整个开发,并从中受益匪浅再次衷心地感谢黄老师在系统开发期间给予我的关心和帮助同时感谢达内公司的张松伟主管和匡祥干老师的积极帮助和指导最后想感谢那些跟我一起讨论和解决问题的同学疏荣,李家伟等,正是和他们的一次次讨论,才让项目有了更进一步的完善参考文献
[1]孙卫琴著.Java面向对象编程[M].北京:电子工业出版2006
[2]王珊.萨师渲著.数据库系统概论[M].北京:高等教育出版社1983
[3](美)CayS.HorsemanGaryCornell.JAVA核心技术[M].北京:机械工业出版社2006
[4](美)BruceKeck.Java编程思想(第3版)[M].北京:机械工业出版社2005
[5](美)KenArnoldJamesGoslingDavidHolmes.Java程序设计语言(第4版)[M].北京:人民邮电出版社2006
[6]RodJohnson.ExpertOne-on-OneJ2EEDesignandDevelopment[M].JOHNWILEYSONSINC2005
[7]MARCLOY,ROBERTECKSTEIN等.JavaSwing第二版[M].北京:清华大学出版社2004
[8]刘丽珏张龙祥.JDBC与Java数据库程序设计[M].北京:人民邮电出版社2001
[9]张云涛龚玲.Eclipse精要与高级开发技术[M].北京:电子工业出版社2005
[10]DavidGilbert.TheChartererClassLibraryVersion
1.
0.1DeveloperGuide[J].2005
[11](美)BRETTSPELL.Java高级编程(第2版)[M].北京:清华大学出版社2006
[12](美)JohnO.Donahue.Java数据库编程宝典[M].北京:电子工业出版社2003
[13](美)RICHARDHIGHTOWER,NICHOLASLESIECKI.Java极限编程[M].北京:机械工业出版社2004系统数据库文件图表家庭管理系统启动画面财务管理日记管理计划管理相册管理电话薄管理理财入门收入管理支出管理借贷管理收入管理软件介绍财务统计财务分析启动画面财务管理日记管理计划管理相册管理电话薄管理理财入门收入的增、删、改、查、刷新支出的增、删、改、查、刷新借贷的增、删、改、查、刷新财务统计和财务分析的显示和隐藏日记的日历上快速添加、删、改、查看、刷新静态页面软件信息和理财知识的查看相片的添加、删除、查看、刷新,幻灯片自动浏览电话薄信息的增、删计划的日历上快速添加、删、改、查看、刷新管理financialtimeincomepayoutloan管理payoutid时间日常开支消费品旅游税务还贷医疗其他总额备注学习奢侈品loan管理id时间借贷对象金额利息还贷时间其他总额备注用户管理incomeid时间工资奖金固定资产利息基金股票其他总额备注家庭管理系统财务管理日记管理理财入门相册管理电话薄管理计划管理。