基于WEB的家庭理财管理系统_第1页
基于WEB的家庭理财管理系统_第2页
基于WEB的家庭理财管理系统_第3页
基于WEB的家庭理财管理系统_第4页
基于WEB的家庭理财管理系统_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

毕业设计(论文)报告 学生毕业设计(论文)报告系别:专业: 班级:学生姓名:学生学号:基于WEB的家庭理财管理系统指导教师:设计地点:起迄日期:毕业设计(论文)任务书专业班级 姓名一、课题名称: 基于WEB的家庭理财管理系统二、主要技术指标(或基本要求):1.资料要求:多访问一些大型的网页,学习网页设计结构,对网络数据安全方面,做一定的分析。本文采用身份验证、权限验证等技术来保护网络与管理信息系统的安全。并依据普通家庭的实际情况设计系统功能,主要包括系统管理功能,收支管理功能,统计管理功能。用户以自家财务管理的实际需要为依据,通过对各模块功能的使用,完成对家庭理财的管理。2.开发环境:EclipseLUNA,数据库MySql。3.技术要求:系统为B/S架构,基于Struts2、Hibernate、Spring框架,JQuery技术的应用,运用于前后台之间的操作;配置数据库连接池进行对数据库进行访问、操作。三、工作内容和要求:1.登录模块的功能:主要是对用户的管理权限进行验证。决定用户是否有权限进行本系统;2.消费模块的功能:主要对用户的消费信息进行统计。分为食品消费统计,对用户食品消费进行统计;着装消费统计,对用户买衣服的信息进行统计;行车消费统计,对用户交通费用信息进行统计;其它消费统计,统计用户其它另外一些消费信息;3.收入模块的功能:对用户的收入信息进行统计,并提供给用户查询收入记录功能;4.统计模块的功能:对当日消费情况进行汇,对当月消费及收支情况进行汇总,根据收支情况给出一些简单的理财建议。记录每年收支情况,并计算节余,根据收支情况给出一些简单的理财建议。

四、主要参考文献:[1]朱红,司光亚.JAVAWeb编程指南[M].电子工业出版社.2001年9月.[2]刘京华.JavaWeb整合开发王者归来[M].北京:清华大学出版社.2010年.[3]张银鹤.点石成金.JSP+Ajax网站开发典型实例[M].电子工业出版社.2009年.[4]孙卫琴.精通hibernate[M].电子工业出版社.2005年4月.学生(签名)年月日指导教师(签名)年月日教研室主任(签名)年月日系主任(签名)年月日毕业设计(论文)开题报告设计(论文)题目基于WEB的家庭理财管理系统选题的背景和意义:当前时代,网络越来越发达。人们可以通过手机、电脑、平板电脑等一些终端访问网站,在网站进行各种操作。比如购物、看微博、看新闻、看直播等,一切网络服务都可以在网页中完成。所以我们完成基于WEB的家庭理财管理系统这个项目,可以通过互联网给用户跟多的服务。目前一些理财网站功能都还不完善,同时理财网站市场也发展得相当迅速,理财网站市场上的产品质量参差不齐。如果我完成了这个家庭理财项目,可以为用户提供更好的理财网站,成为个人理财不可或缺的好帮手,不管是什么阶层人,在什么地方,都可以通过互联网进入本的系统,为用户提供理财服务。所以开发一款功能完善,又具有个性化服务的理财网站,是现在家庭理财人士翘首以盼的项目。课题研究的主要内容:本系统采用SSH(Struts2+Hibernate4+Spring3)框架开发技术,结构清晰开发简单。前台主要用了bootstrap框架来设计页面使页面更加美观。多次采用Ajax技术完成页面和服务器的数据传输,实现了登陆、注册、消费统计,收入统计,消费和输入汇总等功能。在统计页面中使用Highcharts技术画出很多美观的统计图。课题研究的主要内容包括:登陆,注册;消费信息统计;收入信息统计;收入和消费的年、月、日汇总。主要研究(设计)方法论述:毕业设计之前,首先浏览一些关于理财的网站,学习别人的设计的项目结构,网站框架,项目功能。再根据毕业设计题目设计好本项目的网页布局和系统结构。根据设计编写一个需求文档,通过需求文档设计毕业设计。毕业设计过程中,根据要完成的功能,查阅需要用到的相关技术。通过百度、图书馆或老师学习先关技术。将优秀的技术用在毕业设计中,使毕业设计功能更加完整。毕业设计做完之后,测试相关功能是否完整,各功能模块的漏洞,修改错误的代码。四、设计(论文)进度安排:时间(迄止日期)工作内容06.23~06.24联系指导老师、确定选题06.25~06.26和指导老师建立联系通道,完成开题报告06.26~06.28提交报告和任务书,由指导老师审核和修改06.28~07.03收集资料,分析项目,完成项目需求说明书07.03~07.08搭建项目开发环境,完成页面设计07.08~07.14完成功能代码的编写07.14~07.17测试项目的功能,完成论文,提交项目07.17~07.30完善项目,答辩指导教师意见:指导教师签名:年月日六、系部意见:系主任签名:年月日第一章绪论1.1课题研究背景随着移动网络的飞速发展,用户可以在电脑、平板、手机等终端访问网站。这样就可以随时随地,在网站上干各种事。比如发微博、逛淘宝、看电影等。使我们的生活越来越方便,越来越美好。随着国家经济的飞速发展,人们生活水平也逐步提高。各种生活消费层出不穷,收入来源也越来越多。随之就出现了一些困扰,这月我花了那些钱,今天我买了什么东西,这些琐事不可能都一一记得清楚。基于WEB的家庭理财管理系统,就是一款方便家庭财务管理的项目。可以记录用户每天的消费和收入情况。并对这些数据进行整理,统计,然后给用户一些家庭历理财的建议。1.2研究的意义基于WEB的家庭理财管理系统,主要面向于家庭用户,也可以是个人用户。项目可以统计个人或家庭的每日消费情况和每日的收入情况。系统可以根据这些数据给用户提供直观的消费和收入情况,给用户提供理财建议,给用户的理财带来了非常大的方便。目前大多数人还在使用纸质的记账工具,将自己的账目记录在一个小本子上。经过长时间的记录,账目本可能已经被翻烂了,在修改的账目的过程中,可能你的账目本可能到处都是笔墨的划痕,已经无法修改了。本项目是基于WEB的理财系统,一切操作都在网上完成,不会出现纸质账单的一些错误,还可以给用户提供汇总等功能,极大的提高了人们理财的方便与快捷。不管是什么阶层人,在什么地方,都可以通过互联网进入本的系统,为用户提供理财服务。所以开发一款功能完善,又具有个性化服务的理财网站,是现在家庭理财人士翘首以盼的项目。1.3课题研究的内容基于WEB的家庭理财管理系统,给用户提供消费和收入信息管理和统计,使财务管理更加方便。前台主要内容包括:1.前台会员登录、注册;2.个人资料浏览,修改;3.消费记录浏览,查询,添加消费记录;4.收入记录浏览,查询,添加消费记录;5.对用户消费和收入进行统计,并提供理财建议。后台主要内容包括:1.系统会员管理;2.系统管理员管理;3.用户的消费信息的查询,修改,删除;4.用户的收入信息的查询,修改,删除;5.对所有用户的消费信息和收入信息进行统计。1.4论文的组织第一章绪论,主要介绍了基于WEB的家庭理财管理系统的研发背景,意义及主要的研究内容;第二章开发技术,介绍了在基于WEB的家庭理财管理系统的开发过程中所用到的技术;第三章需求分析,详细介绍了基于WEB的家庭理财管理系统的业务需求以及业务流程;第四章系统设计,详细描述了基于WEB的家庭理财管理系统的系统管理和数据库测试;第五章系统实现与测试,介绍了系统管理和项目设计实现及测试;第六章总结与展望,总结了本次系统的开发以及对未来的展望;开发技术本章主要介绍了本系统在开发过程中运用到的开发技术,主要有Struts2、Hibernate4、Spring3框架技术,Ajax快速动态网页的技术和Highcharts

绘表JS框架。2.1Struts2技术1.Struts2的定义:Struts2是一个相当强大的JavaWeb开源框架,是一个基于pojo的Action的mvcWeb框架。它基于当年的Webwork和XWork框架,继承其优点,同时做了相当的改进。Struts2之所以能够如此的深入开发人员之心,与其优良的设计是分不开的。

2.Struts2的运行原理:图2-1struts2的运行流程从图中可以看出,一个请求在Struts2框架中的处理大概分为以下几个步骤:①客户端初始化一个指向Servlet容器(例如Tomcat)的请求;②接StrutsPrepareAndExecuteFilter被调用,StrutsPrepareAndExecuteFilter询问ActionMapper来决定这个请求是否需要调用某个Action;③如果ActionMapper决定需要调用某个Action,StrutsPrepareAndExecuteFilter把请求的处理交给ActionProxy;④ActionProxy通过ConfigurationManager询问框架的配置文件,找到需要调用的Action类;⑤ActionProxy创建一个ActionInvocation的实例。⑥ActionInvocation实例使用命名模式来调用,在调用Action的过程前后,涉及到相关拦截器(Intercepter)的调用。⑦一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果。返回结果通常是(但不总是,也可能是另外的一个Action链)一个需要被表示的JSP或者FreeMarker的模版。在表示的过程中可以使用Struts2框架中继承的标签。在这个过程中需要涉及到ActionMapper。2.2Hibernate4技术1.Hibernate的定义Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。2.Hibernate的工作原理Hibernate的核心接口一共有5个,分别为:Session、SessionFactory、Transaction、Query和Configuration。这5个核心接口在任何开发中都会用到。通过这些接口,不仅可以对持久化对象进行存取,还能够进行事务控制。下面对这五个核心接口分别加以介绍。①Session接口:Session接口负责执行被持久化对象的CRUD操作(CRUD的任务是完成与数据库的交流,包含了很多常见的SQL语句。)。但需要注意的是Session对象是非线程安全的。同时,Hibernate的session不同于JSP应用中的HttpSession。这里当使用session这个术语时,其实指的是Hibernate中的session,而以后会将HttpSession对象称为用户session。②SessionFactory接口:SessionFactory接口负责初始化Hibernate。它充当数据存储源的代理,并负责创建Session对象。这里用到了工厂模式。需要注意的是SessionFactory并不是轻量级的,因为一般情况下,一个项目通常只需要一个SessionFactory就够,当需要操作多个数据库时,可以为每个数据库指定一个SessionFactory。③Configuration接口:Configuration接口负责配置并启动Hibernate,创建SessionFactory对象。在Hibernate的启动的过程中,Configuration类的实例首先定位映射文档位置、读取配置,然后创建SessionFactory对象。④Transaction接口:Transaction接口负责事务相关的操作。它是可选的,开发人员也可以设计编写自己的底层事务处理代码。⑤Query和Criteria接口:Query和Criteria接口负责执行各种数据库查询。它可以使用HQL语言或SQL语句两种表达方式。2.3Ajax技术1.Ajax的定义AJAX(AsynchronousJavaScriptandXML)其实是多种技术的综合,包括Javascript、XHTML和CSS、DOM、XML和XSTL、XMLHttpRequest。其中:使用XHTML和CSS标准化呈现,使用DOM实现动态显示和交互,使用XML和XSTL进行数据交换与处理,使用XMLHttpRequest对象进行异步数据读取,2.Ajax的优势与传统的Web应用不同,AJAX采用异步交互过程。AJAX在用户与服务器之间引入一个中间媒介,消除了网络交互过程中的处理等待的缺点。用户的浏览器在执行任务时即装载了AJAX引擎。AJAX引擎用JavaScript语言编写,通常藏在一个隐藏的框架中。它负责编译用户界面及与服务器之间的交互。AJAX引擎允许用户与应用软件之间的交互过程异步进行,独立于用户与网络服务器间的交流。现在,可以用Javascript调用AJAX引擎来代替产生一个HTTP的用户动作,内存中的数据编辑、页面导航、数据校验这些不需要重新载入整个页面的需求可以交给AJAX来执行。使用AJAX,可以为ISP、开发人员、终端用户带来可见的便捷,减轻服务器的负担。AJAX的原则是“按需取数据”,可以最大程度的减少冗余请求,和响应对服务器造成的负担。2.4Highcharts技术1.Highcharts的定义Highcharts是一个用纯JavaScript编写的一个图表库,能够很简单便捷的在web网站或是web应用程序添加有交互性的图表,并且免费提供给个人学习、个人网站和非商业用途使用。HighCharts支持的图表类型有曲线图、区域图、柱状图、饼状图、散状点图和综合图表。2.Highcharts的特点①兼容性:HighCharts采用纯JavaScript编写,兼容当今大部分的浏览器,包括Safari、IE和火狐等等;②图表类型:HighCharts支持图表类型,包括曲线图、区域图、柱状图、饼状图、散状点图和综合图表等等,可以满足各种需求。③不受语言约束:HighCharts可以在大多数的WEB开发中使用,并且对个人用户免费,支持ASP,PHP,JAVA,.NET等多种语言中使用。④提示功能:HighCharts生成的图表中,可以设置在数据点上显示提示效果,即将鼠标移动到某个数据点上,可以显示该点的详细数据,并且可以对显示效果进行设置。⑤放大功能:HighCharts可以大量数据集中显示,并且可以放大某一部分的图形,将图表的精度增大,进行详细的显示,可以选择横向或者纵向放大。⑥时间轴:可以精确到毫秒。需求分析本章对基于WEB的家庭理财管理系统的需求进行了说明,对业务流程进行了详细的分析。系统需求分析对项目开发十分重要,通过对系统的综合研究,能准确的理解系统运行原理,确定系统必须完成那些功能。3.1需求说明本项目是基于WEB的家庭理财管理系统,主要是针对的对个人或家庭的财务管理。所以首先得有一个用户,在用户登陆后,可以实现用户对个人资料查看和修改,可以管理自己的消费信息,可以管理自己的收入信息,还可以查看消费和收入信息的统计信息。根据设计需求,该项目可分为以下功能模块:登录和注册模块的功能:主要是对用户的管理权限进行验证。决定用户是否有权限进行本系统。消费模块的功能如下:食品消费:完成日常生活中食品类商品消费项目的统计;着装消费:完成日常生活中服装衣物类商品消费项目的统计;家具消费:完成日常生活中家居用品类商品消费项目的统计;行车消费:完成日常生活中交通消费项目的统计;其它消费:完成日常生活中其它消费项目的统计,是项目更具完整性。收入模块的功能:工资收入:对家庭的工资收入进行统计;其它收入:对家庭的其他收入进行统计,是项目更加完整。统计模块的功能如下:当日汇总:对当日消费情况进行汇总;月份汇总:对当月消费及收支情况进行汇总,并计算节余,根据收支情况给出一些简单的理财建议;年份汇总:记录每年收支情况,并计算节余,根据收支情况给出一些简单的理财建议。3.2业务流程进入前台网页,首先浏览游客网页(主页),告诉用户需要先登录,才能使用财务管理系统,没有用户就注册。用户注册成功后,并登陆成功后,再进去主页。告诉用户,进入个人主页进行个人财务管理。进入主页后显示用户所有的消费信息和收入信息的统计。用户可以添加最近的消费信息和收入信息,可以查看所有的消费记录和收入记录。进入个人资料可以修改自己的资料和密码。进入后台网页,首先必须登陆,进入登陆页面,输入管理员帐号和密码,验证成功后,进入后台管理页面。后台管理可以对管理员账户和用户进行修改、添加、删除,可以查看所有用户的消费信息和收入信息并可以修改和删除。最后可以对所有用户的消费和收入进行统计。根据上述分析,得到业务流程示意图:图3-1业务流程示意图3.2.1前台功能1.首页:进入网站首先浏览主页。提示用户进行注册或者登陆。2.用户注册和登陆:用户进入注册页面,进行注册,成功后登陆进入本系统,正式成为用户。3.个人资料管理:用户进入个人主页,查看自己的资料,并可以修改自己的资料。4.消费信息管理:用户添加自己的消费信息保存到数据库,查询自己的消费信息,并进行修改。5.收入信息管理:用户添加自己的收入信息保存到数据库,查询自己的收入情况,并修改。6.消费信息收入信息统计:对用户的消费和收入加在一起进行统计,反馈给用户一些理财建议。3.2.2后台功能1.管理员登录:验证管理员账户和密码。2.管理员帐号管理:管理后天登陆的账户,进行添加、删除、修改。3.用户帐号管理:对前台用户进行管理,添加、修改、删除。4.消费管理:管理所有账户的消费信息,修改、删除。5.收入管理:管理所有账户的收入信息,修改、删除。6.统计:对所有账户的消费和收入进行统计。3.3系统用户的功能3.3.1前台用户前台用户,是该项目使用用户,使用该项目,必须注册一个用户。让后进入个人主页,使用一些功能。图3-2前台用户的功能示意图3.3.2管理员用户管理员为后台管理人员,进入后台,必须有管理员账户。只有管理员才有这样的账户。进入后台后可以对管理员,和前台用户进行管理。可以管理所有账户的消费和收入、查看所有账户消费收入统计。图3-3管理员功能示意图3.4系统功能用例图3.4.1账户注册还未注册的用户,可以在注册页面填写注册信息,进行注册。填写还未注册过的用户名邮箱,还有密码,输入正确的验证码。就能注册成功。在注册页面,用户首先输入自己想要的用户名,输入完成后Ajax将用户名传给后台,后台系统检测此用户名是否存在,如果存在就返回true信息,如果不存在返回false信息。前台页面的Ajax根据返回的这些信息,提示用户名是否存在,如果存在就不能使用该用户名,必须重新输入,如果不存在就可以正常使用。输入邮箱后也同理经过Ajax验证,邮箱也不能重复注册。用户名和邮箱都输入正确之后,输入正确的密码和验证码,最后点击注册就能注册成功。图3-4账户注册功能用例图3.4.2帐号登录用户通过账户登陆页面,输入正确的账户和密码,就可以进入主页。在主页进行下一步的操作。图3-5账户登陆功能用例图3.4.3主页操作主页加载完成数据之后,判断用户是否登陆成功,如果用户登陆成功,就提示用户进入个人主页,使用项目的其它功能。.图3-6账户注册功能用例图3.4.4个人主页个人主页,只有登陆过的用户才能进入个人主页。个人主页为用户提供导航功能,个人主页包括了本项目对用户的所有功能,有个人资料管理、个人消费管理、个人收入管理、个人消费和收入并提供家庭理财建议。图3-7个人主页功能示意图(1)个人资料管理:用户登陆成功了,进入个人主页。根据导航可以进入个人资料管理。个人资料可以查看个人信息,可以更改个人资料。(2)登陆密码修改:提供给用户修改登陆密码的功能,用户进入修改密码页面,输入旧密码,通过Ajax验证旧密码是否正确,如果正确就可以输入新密码,然后提交就可以更改密码。(3)个人消费管理:个人消费管理可以查看自己所有的消费记录,可有进行年月日搜索当天的消费记录。可以修改自己已经添加的消费记录,但是不能删除。添加消费记录时,首先必须选择消费类型。消费类型分为:食品消费、着装消费、行车消费、家具消费、其它消费。然后输入消费金额,最后输入消费信息。消费信息主要是给这次消费添加备注信息,给这次消费进行说明。(4)个人收入管理:个人消费管理可以查看自己所有的收入记录,可有进行年月日搜索当天的收入记录。可以修改自己已经添加的收入记录,但是不能删除。添加收入记录时,首先必须选择收入类型。消费类型分为:工资收入、其它收入,最后输入收入信息。收入信息主要是给这次收入添加备注信息,给这次收入进行说明。(5)收入和消费统计:对用户的消费和收入进行统计。分为每日汇总,每月汇总,每年汇总。用户选择日期,系统通过ajax从后台获取相关数据,通过js框架Highcharts将数据画成图显示在网页。3.4.5收入和消费统计界面用户在个人主页,通过导航可以进入收入和消费汇总,查看每天,每月,每年的或者全部的信息。图3-8收入消费汇总功能示意图(1)未选择日期:进入收入和消费汇总界面,首先显示未选择日期的数据,通过Ajax从服务器获取用户所有的消费和收入记录。获取这些数据后,通过JS框架Highcharts画成饼状图,并给用户相应的理财建议。(2)某日汇总:选择某一天,通过Ajax从服务器获取用户当天的消费和收入记录。获取这些数据后,通过JS框架Highcharts画成条形图。(3)某月汇总:选择一个月份,通过Ajax从服务器获取用户当月的消费和收入记录。获取这些数据后,通过JS框架Highcharts画成折线图,给用户提供这一月的理财建议。(4)某年汇总:选择某一年,通过Ajax从服务器获取用户这一年的消费和收入记录。获取这些数据后,通过JS框架Highcharts画成折线图,直观的呈现给用户这一年的情况。最后给用户提供理财建议。3.4.6后台管理后台管理,主要管理网站所注册的用户,进行修改,添加。对收入和消费进行修改添加。查看消费和收入记录。图3-9管理员界面功能示意图1.后台用户管理:(1)添加管理员:添加一个管理员,用来管理后台。(2)修改管理员:修改管理员的信息可以修改密码、帐号、真实姓名等。(3)删除管理员:删除一个管理员帐号。2.前台用户管理:(1)添加用户:给前台添加一个用户,使该用户可以使用本系统。(2)修改用户信息:修改用户的信息。可以修改用户名、密码、邮箱、居住地址等。(3)查看所有用户:可以查看所以注册的用户。可以通过用户名,注册时间来搜索用户。3.用户消费管理:(1)查看所有消费:可以查看所有的消费记录。可以通过消费时间、消费用户、消费类型,来搜索相应的消费记录。(2)修改消费信息:修改一条消费记录,可以修改消费金额、消费类型、消费备注。(3)删除消费信息:删除一条消费信息。4.用户收入管理:(1)查看所有收入:可以查看所有的收入记录。可以通过收入时间、收入用户、收入类型,来搜索相应的收入记录。(2)修改收入信息:修改一条收入记录,可以修改收入金额、收入类型、收入备注。(3)删除收入信息:删除一条收入信息。5.消费收入汇总:(1)某日消费收入汇总:查看某一天所有用户的消费和收入汇总,以饼状图显示。(2)某月消费收入汇总:查看某一月所有用户的消费和收入汇总,以折线图显示这一月的记录。(3)某年消费收入汇总:查看某一年所有用户的消费和收入汇总,以折线图显示这一年的记录。系统设计本章主要讲述了本系统的架构设计,SSH框架原理,还有对应的数据表的设计,多表之间的关系。4.1系统架构设计本系统采用了SSH框架。SSH由Struts+Spring+Hibernate三大框架组成,Struts实现MVC开发模式,Spring负责架构的结合,Hibernate进行数据的持久化。但是在web开发时,SSH分层不明显,每层的功能不明确等。为了解决这些缺点,我们对SSH框架,进行了重新的分层,共享了业务代码。简化了开发、增强了与AJAX技术、XML技术的结合。提供了一种更高效的开发模式,让本项目开发更加简单。本项目的开发结构图如下: 图4-1项目开发结构图数据持久层由Java对象持久化类和数据访问对象组成。每个数据库表都对应着一个持久化对象,这样就给予了开发者使用思想设计和开发的便利,同时也屏蔽了具体的数据库和具体的数据表、字段,消除了对数据库操作的硬编码在重用性上的弊端。业务逻辑层由Spring框架支持,提供了处理业务逻辑的服务组件。开发者需要对业务对象建模,抽象出业务模型并封装在Model组件中。由于数据持久层实现了Java持久化类并且封装了数据访问对象(DAO),因此可以在Model组件中方便地调用DAO组件来存取数据。Spring的IoC容器负责统一管理Model组件和DAO组件以及Spring所提供的事务处理、缓冲连接池等服务组件。表示层结合JSP和Struts的TagLib库处理显示功能,利用ActionServlet将请求映射到相应的Action,并由Action调用业务逻辑的服务组件,然后根据处理结果跳转到Forword对象指定的响应页面。4.2数据库设计本系统采用了简单易操作的MySql数据库,一下介绍的全是系统所有的数据表。根据分析所需的数据表如下:前台用户表,只有拥有帐号,才能使用本系统。 表4-1前台用户表列名数据类型长度允许空主键外键描述idint11NY主键自增addressvarchar255Y居住地址ageint11Y年龄create_timedatetime0N注册时间emailvarchar255NEmail地址gendervarchar255Y性别passwordvarchar255N用户密码real_namevarchar255N真实姓名user_namevarchar255N用户名用户消费表,记录用户所以的消费记录。表4-2用户消费表列名数据类型长度允许空主键外键描述idint11NY消费主键自增create_timedatetime0N消费时间infovarchar255Y消费信息moneyvarcahr0N消费金额typevarchar255N消费类型user_idintNY用户表id用户收入表,记录用户所以的收入记录。表4-3用户收入表列名数据类型长度允许空主键外键描述idint11NY收入主键自增create_timedatetime0N收入时间infovarchar255Y收入信息moneyvarcahr0N收入金额typevarchar255N收入类型user_idintNY用户表id后台管理员表,记录所以管理员。表4-4后台管理员表列名数据类型长度允许空主键外键描述idint11NY主键自增create_adminvarchar255N创建人create_timedatetime0N创建时间passwordvarchar255N登陆密码real_namevarchar255Y姓名user_namevarchar255N登陆帐号系统实现与测试5.1程序结构本项目的名称为FFM(FamilyFinancialManagement),FFM是项目的根目录。WebContent为Web目录,里面包括pages目录,存放所以jsp页面。包括存放图片、js、css文件的public目录。存放WEB-INF目录、lib目录及web.xml文件。src结构如下图所示:配置文件如下图:5.2系统实现进入本系统后,首先浏览的是首页,如果用户并未登陆,页面就提示用户是否登陆,未登录就会提示请选登陆或者选择注册。只有登陆的用户才能使用本项目,用户可以通过登陆页面,进行登陆。登录页面如下图5-1所示。在登陆页面,用户首先输入用户名,系统会判断用户是否存在,用户不存在就提示用户不存在,需要重新输入正确的用户名,然后输入密码,输入正确的验证码,点击登陆。通过Ajax判断密码是否正确,如果正确就登陆成功。最后将用户user对象存入session。图5-1前台登陆页面核心代码如下:publicvoidyzUserName(){ Jsonjson=newJson(); try{ if(userService.getByName(userName)==null){ json.setSuccess(true); } }catch(Exceptione){ e.printStackTrace(); } writeJson(json); } publicvoidloginByUser(){ Jsonjson=newJson(); try{ if(userService.login(userName,password)){ ActionContext.getContext().getSession().put("user", userService.getByName(userName)); json.setSuccess(true); } }catch(Exceptione){ e.printStackTrace(); } writeJson(json); }如果用户还没有注册,可以通过注册页面进行注册,注册成功后,跳过登陆页面直接登陆,注册页面如下图5-2示。图5-2用户注册页面 输入注册信息,进行注册。注册的用户名和邮箱不能重复,所以输入用户名和邮箱时,首先通过Ajax验证用户名和邮箱不存在,才能进行注册。注册代码如下: publicvoidregister(){ Jsonjson=newJson(); try{ userService.createUser(user); ActionContext.getContext().getSession().put("user",user); json.setSuccess(true); }catch(Exceptione){ e.printStackTrace(); } writeJson(json); }@Override publicvoidcreateUser(Useruser)throwsException{ userDao.save(user); }publicTsave(Tobj){ getCurrentSession().save(obj); returnobj; }登录成功继续转到主页,这时用户已经登陆,就可以通过主页导航进入个人主页,使用本项目。个人主页如下图所示:图5-3个人主页进入个人主页首相显示个人所有的消费和收入汇总,用户的所有消费信息和收入信息都会在这里显示。根据用户姓名,通过Ajax获取用户的所有消费和收入记录,然会通过绘绘图框架画在页面上。除了汇总所有的消费和收入信息,还可以汇总单日,某一月,某一年的消费和收入汇总。代码如下: publicvoidstatAll(){ Jsonjson=newJson(); Stringhql=""; if(StringUtils.isNotBlank(userName)){ hql="anduser.userName='"+userName+"'"; } double[]d=newdouble[5]; try{ list=consumptionService.findList(hql,1, consumptionService.findCount(hql)); for(Consumptionc:list){ if(c.getType().equals("食品消费")){ d[0]+=c.getMoney(); }elseif(c.getType().equals("着装消费")){ d[1]+=c.getMoney(); }elseif(c.getType().equals("家具消费")){ d[2]+=c.getMoney(); }elseif(c.getType().equals("行车消费")){ d[3]+=c.getMoney(); }else{ d[4]+=c.getMoney(); } } json.setObj(d); }catch(Exceptione){ e.printStackTrace(); } writeJson(json); }publicvoidstatAll(){ Jsonjson=newJson(); Stringhql=""; if(StringUtils.isNotBlank(userName)){ hql="anduser.userName='"+userName+"'"; } double[]d=newdouble[2]; try{ list=incomeService.findList(hql,1, incomeService.findCount(hql)); for(Incomec:list){ if(c.getType().equals("工资")){ d[0]+=c.getMoney(); }else{ d[1]+=c.getMoney(); } } json.setObj(d); }catch(Exceptione){ e.printStackTrace(); } writeJson(json); } publicList<T>query(Stringhql,intstart,intlength){ Queryquery=getCurrentSession().createQuery( MessageFormat.format(HQL_QUERY,hql)); query.setFirstResult(start-1); query.setMaxResults(length); returnquery.list(); }个人主页里面的个人资料,显示的是用户的个人资料,用户可以通过导航进入。还可以修改自己的个人资料。 图5-4个人资料用户进入个人主页,通过个人资料导航,查看个人资料,通过下面的修改按钮,可以修改个人资料。想要修改密码,可以通过修改密码导航进入修改密码页面修改自己的登陆密码。核心代码如下:publicvoidupdate(){ Jsonjson=newJson(); try{ userService.updateUser(user);json.setSuccess(true); }catch(Exceptione){ e.printStackTrace(); } writeJson(json);}@Override publicvoidupdateUser(Useruser)throwsException{ userDao.updatef(user); }publicTupdatef(Tobj){ getCurrentSession().clear(); getCurrentSession().update(obj); getCurrentSession().flush(); returnobj; }下图为添加消费界面,用户进入今天的消费界面,就可以添加今天的消费信息。消费信息分为5种,分别为食品消费、服装消费、行车消费、家具消费、其它消费。图5-5手机销售系统—添加购物车页面用户在消费添加页面,输入消费金额,选择消费类型就可以添加自己的今天的消费信息。通过Ajax把这些数据传送到后台,后台服务器获取这些数据后,在session中获取登陆对象user,把消费对象设置为user,通过createConsumption方法,把消费信息存入数据库。核心代码如下: publicvoidsave(){ Jsonjson=newJson(); try{ conp.setUser((User)ActionContext.getContext().getSession().get("user")); conp.setCreateTime(newDate()); consumptionService.createConsumption(conp); json.setSuccess(true); }catch(Exceptione){ e.printStackTrace(); } writeJson(json); }@Override publicvoidcreateConsumption(Consumptionconp)throwsException{ consunptionDao.save(conp); }publicTsave(Tobj){ getCurrentSession().save(obj); returnobj;}消费记录,记录用户的所以消费信息。用户在这里可以查看所有的记录,可以现在指定日期,查看当日的消费记录。图5-6用户消费记录进入消费信息页面后,显示的是用户所以的消费信息,可以对这些消费信息进行修改和删除,点击备注信息,可以查看此条记录的备注信息。选择消费时间后,点击搜索按钮,Ajax将日期信息传入后台,后台就获取数据库指定日期的消费信息存入list,然后通过Ajax将list传回前台页面,前台页面就显示这些信息。一下是核心代码:publicStringgetListByName(){ Stringhql=""; hql+="anduser.userName='"+userName+"'"; if(year!=null){ intmaxDay=day+1; hql+="andcreateTime>='"+year+"/"+month+"/"+day+"'"+"andcreateTime<='"+year+"/"+month+"/"+maxDay+"'"; } hql+="orderbycreateTimedesc"; try{ list=consumptionService.findList(hql,getStartIndex(),getPageSize()); setCount(consumptionService.findCount(hql)); }catch(Exceptione){ e.printStackTrace(); } return"conp_list";}下图为今天的收入页面,今天的收入页面,可以添加今天的收入信息,收入信息分为2种,一种为工资收入,一种为其它收入。图5-7今天的收入页面进入今天的收入页面就可以添加今天的收入信息,输入收入类型和收入金额,将这些信息传入后台服务器,服务器江这些数据存入数据库,收入信息就添加成功了。核心代码如下: publicvoidsave(){ Jsonjson=newJson(); try{ income.setUser(userService.getById(userId)); income.setCreateTime(newDate()); incomeService.createIncome(income); json.setSuccess(true); }catch(Exceptione){ e.printStackTrace(); } writeJson(json); }publicTsave(Tobj){ getCurrentSession().save(obj); returnobj; }@Override publicvoidcreateIncome(Incomeincome)throwsException{ incomeDao.save(income);}下图为收入记录页面,显示用户所有的收入记录,用户可以选择指定日期查看当天的详细记录。图5-8收入记录页面收入记录页面,显用户所以的收入记录。选择指定日期,通过搜索在后台查询当日记录可以。显示的收入记录,还可以进行修改和删除。核心代码如下:publicStringgetListByName(){ Stringhql="anduser.userName='"+userName+"'"; if(year!=null){ intmaxDay=day+1; hql+="andcreateTime>='"+year+"/"+month+"/"+day+"'"+"andcreateTime<='"+year+"/"+month+"/"+maxDay+"'"; } hql+="orderbycreateTimedesc"; try{ list=incomeService.findList(hql,getStartIndex(),getPageSize());setCount(incomeService.findCount(hql)); }catch(Exceptione){ e.printStackTrace(); } return"income_list_user"; }总结与展望6.1总结此次毕业设计开发过程中,遇到很多困难,过程有些艰辛。在确定选题时,我还在完成上一个企业项目的收尾工作,所以这次的毕业设计时间较短,要完成的东西较多,是我遇到的最大问题。虽然过程比较累,但是这次的毕业设计我的收获也不小,学到了很多新的技术,也练习了自己的编程技术。在消费和收入信息汇总这一块,需要显示给用户这一年、这一月或这一天的消费和收入信息汇总,就必须以统计图呈现给用户,于是我通过百度搜索,学到了HighCharts这个绘图技术。在修改用户资料,修改收入和消费信息,相关操作中,我学到了Ajax的异步请求和同步请求技术。在页面的开发过程中,为了美化界面,我学习了bootstrap框架。虽然现在自己的技术还不怎么成熟,虽然这次的毕业设计还有许多瑕疵,但我觉得这是一次成功的毕业设计,因为这是我日夜努力得到的成果,毕竟一生只有一次,我拿出了我所有的技术。6.2展望今天的社会移动设别泛滥,人人必备一台智能手机,甚至是坐地铁的大爷,跳广场舞的大妈,都是人手一部iPhone。移动终端已经占据了我们的生活,买衣服有淘宝APP,聊天交友有默默和QQ,手机看电视有优酷、乐视、爱奇艺等。以后所有的服务都可以以互联网的形式提供给用户。我们这个项目虽然不是手机APP项目,但是它是一个网页,网页在手机中一样可以打开。像这样的家庭理财项目

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论