记账系统毕业论文.doc

上传人:xin****828 文档编号:6666730 上传时间:2020-03-01 格式:DOC 页数:34 大小:709.50KB
返回 下载 相关 举报
记账系统毕业论文.doc_第1页
第1页 / 共34页
记账系统毕业论文.doc_第2页
第2页 / 共34页
记账系统毕业论文.doc_第3页
第3页 / 共34页
点击查看更多>>
资源描述
摘 要随着Internet技术的不断发展,人们在日常生活和工作中越来越多地使用JSP这项新的技术。目前JSP的发展趋势已由过去的C/S架构转换到了B/S架构,大大减轻了客户端的工作负担,用户可以通过浏览器对分布在网络上的各种服务器进行访问。基于B/S架构开发的“账族记账系统”实现了三层体系结构的开发,充分利用了JSP网络开发技术,并且采用了SH(Struts2+Hibernate)模式对系统进行开发。前台的使用用户可以浏览相关的网站信息,通过注册进行个人日常记账。由于前台和后台的分开控制,系统后台的管理员可以对用户、默认的类别、网站信息等进行管理。“账族记账系统”的开发采用了B/S架构、JSP技术、Java编程语言、Struts2、Hibernate和MySQL数据库等软件技术。经过测试,该系统可以在以Tomcat7.0作为服务器的IE浏览器、Chrome、Firefox正常运行,该记账软件统界面友好、简单,易于用户操作。关键词: B/S架构 JSP Struts2 Hibernate MySQL数据库 ABSTRACTWith a growing development of technology of Internet, we utilize it more and more frequently in our daily life. Nowadays, there is a tendency for development of ASP, from C/S frame to B/S one, which reduces greatly clients burden. They can visit all varieties of servers on the Internet through browser.Based on B/S frame, “accounting professional qualification online system” realizes the three-tier architecture development, takes the most of JSP network development and adopts MVC pattern. Users who use foregrounding can browse all relevant information by this online system as well as conduct online grading by registration. Because of separated control between foreground and background, background administrators can take effective management on users titles and examinations.This dissertation is engaged mainly in analysis of relevant principles of “accounting professional qualification online system”, including introduction of software technologies of B/S frame, JSP, Java and MySQL database adopted.Having been tested, this system can operate smoothly in the Tomcat6.0-based IE browser, which is user-friendly, simple and easily-performed. A convenient platform is furnished for accounting professionals to test and know the examination information.Key words: B/S frame JSP Struts2 Hibernate MySQL database目 录引 言1第一章 系统的分析21.1可行性分析21.2需求分析31.3系统环境开发4第二章 系统的总体设计52.1开发工具及关键技术的介绍52.2系统流程72.3系统模块设计7第三章 数据库的设计113.1数据库设计原则113.2数据库实体设计113.3数据库结构设计12第四章 程序模块的界面设计及实现154.1程序注册及登录154.2用户管理模块184.3首页信息浏览功能模块194.4默认开支类别管理204.5记账功能模块22第五章 系统调试与测试255.1程序调试255.2程序的测试25结 论28谢 辞29参考文献30引 言课题的选择背景及意义随着家庭的开支不断的变化,金融危机的冲击,家庭的账户也不断变化,面对每天枯燥乏味的数据,如何有效的进行整理,并针对这些数据找到最佳的理财方式,是每个家庭的当务之急本系统主要用于家庭的记账,总体任务是实现家庭账目的有序化,其主要任务是用计算机对家庭的日常开支进行增、删、改、查;对开支的分类支持增、删、改的操作,本系统内置了部分默认的开支类别,针对这些情况设计账族记账系统课题研究的内容和本论文的组织结构本文通过软件工程中软件开发的“瀑布模型”对一个可以动态访问的“账族记账系统”进行了详细的设计和介绍。作为一个记账系统,它为使用用户提供了一个良好的记录日常开支的平台。本论文的组织结构为:前言部分:主要描述课题选择的背景、意义和研究的主要内容。第1章 :主要通过可行性分析、需求分析,系统配置三部分来分析开发的可实施性。第2章 :主要介绍相关的开发技术和整个系统的开发流程及各个功能模块的设计。第3章 :主要介绍数据库的相关信息,详细描述了数据库中各实体之间关系的设计。第4章 :主要介绍系统各个模块的实现及界面的设计。第5章 :主要介绍系统的测试与调试及其测试的结果。结 论: 主要对系统开发进行总结分析。谢 辞: 主要表达一下对本毕业设计胜利完成做出重大贡献的人的感谢之情。参考文献: 主要列出系统开发时应用到的技术来源。设计原则(1) 可靠性原则:本系统是一个规模较小的开放式应用软件,经过慎重考虑,采用了MySQL作为数据库系统。作为一种关联数据库,MySQL将数据保存在不同的表中,增加里存取的速度,提高了操作的灵活性。并且MySQL采用最常用的标准化语言进行数据库的访问,简化了开发过程。(2) 规范性原则:在开发过程中采用了三层结构开发:表示层-业务逻辑层-数据访问层。在表示层一般不包含业务逻辑代码,尽可能使用html标签和Struts2标签进行页面布置,;在业务逻辑层使用Java编辑语言进行业务的逻辑处理,将数据传输到数据访问层,数据访问层用Hibernate进行封装,Hibernate与数据库打交道进行存取操作,简写了大量代码,缩短开发时间。第一章 系统的分析1.1可行性分析1.技术可行性:“账族记账系统”是基于B/S架构,采用MVC的设计模式,JSP网络开发技术,Java编辑语言,Struts2,Hibernate技术和MySQL数据库进行开发实现的:(1)在B/S架构下,事务处理逻辑模块从客户机中分离出来,主要在客户机安装通用的浏览器便可以对服务器发出数据请求,由服务器与数据库打交道完成事务处理工作后将数据传回客户机进行输出显示。大大减轻了客户机的负担的同时,也保证了数据的安全性能。(2)MVC设计模式,应用程序的输入、处理和输出被强行分开,其三个核心部件:模型、视图和控制器都各自处理自己的任务。由于视图层和业务层的分离,更改视图层代码时不用重新编译模型和控制器代码,使其可以移植和复用以及功能的扩展。(3)JSP为创建高度动态的Web应用提供了一个独特的开发环境。JSP能够适应市场上包括Apache WebServer、IIS4.0在内的85的服务器产品,这足以胜任绝大多数的商业事务处理。同时JSP代码经过服务器的解释执行后会直接嵌入到HTML语言中,这样就简化了页面的输出,也保留了脚本语言易于使用的优点。JSP作为一种Web实现技术,它的效率是很高的。除此之外,作为Java平台的一部分,JSP拥有Java语言“一次编写,各处运行”的特点。又随着越来越多的服务器供应商将JSP支持添加到他们的产品中,这样一来用JSP做成的这套系统可以轻松移植到其它平台来运行1。种种优点都为实现家庭记账软件打下了良好的基础。所以JSP是实现本系统的最佳技术,它是完全可行的。JSP同其他的Web脚本语言不同,它本身不定义访问数据库的标签,而是开发了另一个访问数据库的机制,即JDBC。(4)Struts2是Struts的下一代产品,是在 struts 和WebWork的技术基础上进行了合并的全新的Struts 2框架。其全新的Struts 2的体系结构与Struts 1的体系结构的差别巨大。Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与Servlet API完全脱离开,所以Struts 2可以理解为WebWork的更新产品。虽然从Struts 1到Struts 2有着太大的变化,但是相对于WebWork,Struts 2只有很小的变化。(5)Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。(6) MySQL数据库:作为一种关联数据库,MySQL将数据保存在不同的表中,增加里存取的速度,提高了操作的灵活性。并且MySQL采用最常用的标准化语言进行数据库的访问,简化了开发过程。并且MySQL数据库已经是一种比较成熟的数据库,在数据的安全性方面的技术已经比较稳定,有一定的数据恢复功能。2.经济可行性:通过“家庭记账软件”这个网站,用户可以把日常的开支全部记录下来,分析自己的消费,从而做到合理消费;为每个家庭创造更多的财富。3.可操作可行性:此系统是基于网页式的,界面友好,易于操作,方便快捷。1.2需求分析在软件开发环节中,需求分析是必不可少的。它有助于了解客户需求,对软件系统的功能有初步的构思。综合了市场中已有的记账软件,我对“账族记账系统”进行了初步需求分析。该系统的核心功能是用户通过已注册的账号登录系统后进行日常记账,用户可以添加日常的开支类别和账户类别,系统提供默认的开支类别。后台的管理员可以管理用户,管理网站公告,也可以管理默认开支类别。前台和后天的分开有利于提高系统的安全性能。在这些基本功能的基础上,后期可以对系统功能进行扩展。1.2.1系统描述本系统大体包括两个基本部分:一个是前台用户的操作程序,用户在前端可以浏览网页,查看相关的消息。通过注册可以形成一个有密码与之匹配的账号,用户可以使用该账号进行系统的登录。在登录的情况下才可以开始记账,用户登录后首先应创建一个自己的账户然后才可以开始记账,本系统还支持对账功能,用户的每个账户都可以对账,这样每个账户的明细就能一清二楚了;用户登录后可以修改自己信息,也可以修改密码等,最后用户还可以通过点击退出系统来注销登录。1.2.2权限权限是指所有可能与系统发生交互行为的外部实体、对象和系统对系统进行操作的范围和程度。在“账族记账系统”中,权限的主体分为了游客、用户和管理员。游客可以不登陆的情况下浏览网页,查看系统发布的消息。但不能登陆系统,不能进行记账操作。用户在具有游客的权限的基础上,可以通过登陆操作进行记账等操作。而系统的管理员具有最高权限,通过系统预置的账号admin和密码admin登陆系统后,可以对网站公告的消息进行添加发布操作;也可以对用户进行删除操作;可以修改自己的信息,也可以添加和修改系统默认的开支类别。有了上述权限的划分,使数据库只能由管理员进行操作管理,保证了数据库的安全性。1.2.3用例识别在角色的基础上,可以识别出与权限相关的用例,从而得到系统的用例模型,如图:1.3系统环境开发硬件环境:CPU:Intel P4以上内存:2G硬盘:250G软件环境:操作系统:Microsoft Windows 7数据库:MySQL5.5服务器:Tomcat7.0开发工具:MyEclipse8.6浏览器:Microsoft Internet Explorer 9.0及以上第二章 系统的总体设计2.1开发工具及关键技术的介绍“账族记账系统”是基于B/S结构,采用MVC的设计模式,JSP网络开发技术,Java编辑语言,Struts2,Hibernate技术和MySQL数据库,以MyEclipse8.6作为开发工具,Tomcat 7.0为服务器进行开发实现的。2.1.1 B/S结构概述B/S(Browser/Server)结构即浏览器和服务器结构。它是随着Internet技术的兴起,对C/S结构的一种变化或者改进的结构。在B/S结构下,用户工作界面是通过浏览器来实现,极少部分事务逻辑在前端(Browser)实现,但是主要事务逻辑在服务器端(Server)实现,形成所谓三层3-tier结构。相对于C/S结构属于“胖”客户端,需要在使用者电脑上安装相应的操作软件来说,B/S结构是属于一种“瘦”客户端,大多数或主要的业务逻辑都存在在服务器端,因此,B/S结构的系统只需要安装通用的浏览器即可对服务器进行访问。系统升级或维护时也只需更新服务器端软件,这样就大大简化了客户端电脑载荷,减轻了系统维护与升级的成本和工作量,降低了用户的总体成本(TCO)。 B/S结构系统的产生为系统面对无限未知用户提供了可能。当然,与C/S结构相比,B/S结构也存在着系统运行速度较慢,访问系统的用户不可控的弱点。以目前的技术看,局域网建立B/S结构的网络应用,并通过Internet/Intranet模式下数据库应用,相对易于把握、成本也是较低的。它是一次性到位的开发,能实现不同的人员,从不同的地点,以不同的接入方式(比如LAN,WLAN,Internet等)访问和操作共同的数据库;它能有效地保护数据平台和管理访问权限,服务器数据库也很安全。特别是在JAVA这样的跨平台语言出现之后,B/S架构管理软件更是方便、快捷、高效2。与C/S结构比较,B/S架构软件具有以下优势:(1)维护和升级方式简单。目前,软件系统的改进和升级越来越频繁,B/S架构的产品明显体现着更为方便的特性。对一个稍微大一点单位来说,系统管理人员如果需要在几百甚至上千部电脑之间来回奔跑,效率和工作量是可想而知的,而B/S架构的软件只需要管理服务器就行了,所有的客户端只是浏览器,根本不需要做任何的维护。无论用户的规模有多大,有多少分支机构都不会增加任何维护升级的工作量,所有的操作只需要针对服务器进行;如果是异地,只需要把服务器连接专网即可,实现远程维护、升级和共享。所以客户机越来越“瘦”,而服务器越来越“胖”是将来信息化发展的主流方向。今后,软件升级和维护会越来越容易,而使用起来会越来越简单,这对用户人力、物力、时间、费用的节省是显而易见的,惊人的。因此,维护和升级革命的方式是“瘦”客户机,“胖”服务器。(2)应用服务器运行数据负荷较重。由于B/S架构管理软件只安装在服务器端(Server)上,网络管理人员只需要管理服务器就行了,用户界面主要事务逻辑在服务器(Server)端完全通过WWW浏览器实现,极少部分事务逻辑在前端(Browser)实现,所有的客户端只有浏览器,网络管理人员只需要做硬件维护。但是,应用服务器运行数据负荷较重,一旦发生服务器“崩溃”等问题,后果不堪设想。因此,许多单位都备有数据库存储服务器,以防万一。2.1.2 JSP技术介绍JSP的全称是Java Server Pages,它是由Sun Microsystems公司于1999年6月推出,许多公司参与一起建立的一种动态网页技术标准。基于Java Servlet以及整个Java体系的Web开发技术。JSP技术是用JAVA语言作为脚本语言的,JSP网页为整个服务器端的JAVA库单元提供了一个接口来服务于HTTP的应用程序。作为J2EE体系中的重要一环,JSP为创建高度动态的Web应用提供了一个独特的开发环境3。在传统的网页HTML文件(*.htm,*.html)中加入Java程序片段(Scriptlet)和JSP标记(tag),就构成了JSP网页(*.jsp)。Web服务器在遇到访问JSP网页的请求时,首先执行其中的程序片段,然后将执行结果以HTML格式返回给客户。程序片段可以操作数据库、重新定向网页以及发送 email 等等,这就是建立动态网站所需要的功能。所有程序操作都在服务器端执行,网络上传送给客户端的仅是得到的结果,对客户浏览器的要求最低,可以实现无Plugin,无ActiveX,无Java Applet,甚至无Frame4。JSP是一种实现普通静态HTML和动态HTML混合编码的网页技术,具有跨平台性、运行效率高、上手容易等优点。在用JSP进行WEB开发时,需要用到应用服务器来进行资源共享、网络通信等进行分布式应用。在支持JSP的应用服务器中采用Tomcat。Tomcat是Apache-Jarkarta的一个子项目,是一个开放式源码、免费支持JSP和Servlet技术的容器,同时又是一个WEB服务器软件。在Servlet中,许多使用传统CGI程序很难完成的任务都可以轻松地完成5。例如,Servlet能够直接和Web服务器交互,而普通的CGI程序不能。Servlet还能够在各个程序之间共享数据,使得数据库连接池之类的功能很容易实现。Servlet是Java技术对CGI编程的回答。Servlet程序在服务器端运行,动态地生成Web页面。与传统的CGI和许多其他类似CGI的技术相比,Java Servlet具有更高的效率,更容易使用,功能更强大,具有更好的可移植性,更节省投资。JSP的优点:(1) 一次编写,到处运行。除了系统之外,代码不用做任何更改。(2) 系统的多平台支持。基本上可以在所有平台上的任意环境中开发,在任意环境中进行系统部署,在任意环境中扩展。相比ASP/.net的局限性是显而易见的6。(3) 强大的可伸缩性。从只有一个小的Jar文件就可以运行Servlet/JSP,到由多台服务器进行集群和负载均衡,到多台Application进行事务处理,消息处理,一台服务器到无数台服务器,Java显示了一个巨大的生命力。(4) 多样化和功能强大的开发工具支持。这一点与ASP很像,Java已经有了许多非常优秀的开发工具,而且许多可以免费得到,并且其中许多已经可以顺利的运行于多种平台之下7。(5) 支持服务器端组件。web应用需要强大的服务器端组件来支持,开发人员需要利用其他工具设计实现复杂功能的组件供web页面调用,以增强系统性能。JSP可以使用成熟的JAVA BEANS 组件来实现复杂商务功能。2.1.3Struts2框架介绍Struts 2是Struts的下一代产品,是在 struts 和WebWork的技术基础上进行了合并的全新的Struts 2框架。其全新的Struts 2的体系结构与Struts 1的体系结构的差别巨大。Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与Servlet API完全脱离开,所以Struts 2可以理解为WebWork的更新产品。虽然从Struts 1到Struts 2有着太大的变化,但是相对于WebWork,Struts 2只有很小的变化。2.1.4Hibernate介绍Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。2.1.5 开发工具MyEclipse概述“账族记账系统”采用MyEclipse8.6.1版本作为开发工具。MyEclipse是功能丰富的JavaEE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTML,Struts2,JSP,CSS,Javascript,SQL,Hibernate。同时,它已经拥有5.0、6.XGA、8.0、8.5、8.6 M1、9.0、10.0系列版本。本系统采用了MyEclipse8.6.1版本进行开发。2.2系统流程在第一章的用例图中,已经定义了系统角色及用例模型。作为一个完整的记账软件,有必要知道整个系统运行流程,这有利于我们明确系统开发任务和功能模块。游客计入网站首页,浏览网站公告,单击旁边的注册连接,计入注册页面;注册为用户后登陆网站,新建自己的账户和开支类别,然后开始记账,每个账户都能对账,这样保证的数据的准确性和明晰性;用户当然也可以修改自己的信息(包括密码),最后用户可以退出系统。2.3系统模块设计有了系统流程描述和流程图,根据流程图将系统划分为以下模块,如表3-1所示:表2-1 系统功能模块设计序 号功能模块类别功能模块1前台操作端注册、登录、个人信息管理2账户管理3开支类别管理4对账5记账及转账6后台管理端用户管理7公告8默认开支管理表2-1是根据模块完成的任务的不同进行划分,一共包括8个模块,其中前台客户端的功能模块是5个,后台管理端的是3个。这些模块都是建立在系统的需求分析和设计的基础上的对系统功能整体的介绍,下面将详细介绍各个功能模块的细节:2.3.1前台客户端管理模块1.个人信息管理功能模块:任何系统功能的实现都离不开角色的参与,为了便于系统的管理,需要对不同用户赋予不同的权限和功能,因此需要对用户进行管理,设计了个人信息管理模块,如表2-2所示:表2-2 注册、登录、个人信息管理功能模块序 号用户类别功能列表功能明细1游客浏览网页浏览查看网站公告2用户用户注册注册成为用户,拥有不同的权限3用户登录用户输入用户名和密码进行验证4用户信息查看和修改查看、修改用户信息和密码2.账户管理模块:处于登录状态下的用户可以添加、修改、删除账户,如表2-3所示:表2-3 账户管理模块序 号功能列表功能明细1添加账户用户可以添加属于自己的账户2修改账户用户可以修改自己账户的名称及余额3删除账户用户可以删除自己的账户 3.开支类别管理:本系统提供一个默认的开支类别,用户登录后可以添加属于自己的开支类别,系统默认的类别不能修改,如表2-4所示:表2-4 开支类别管理模块序 号功能列表功能明细1添加开支类别用户可以添加属于自己的开支类别2修改开支类别用户可以修改自己添加的开支类别(默认的不能修改)3删除开支类别用户可以删除自己的开支类别 4.对账: 每个账户都提供对账功能,这样对某个账户的每一笔操作都能一清二楚的展现给用户,如表2-5所示:表2-5 对账模块序 号功能列表功能明细1选择账户选择要对账的账户2对账对该账户的进行对账5.记账及转账:用户可以对收入,支出分别进行记账,操作简单,界面友好,还支持不同账户间的转账,如表2-6所示:表2-6 记账及转账模块序 号功能列表功能明细1支出记账用户可以记录生活中的每一次支出(用黑色表示支出)2收入记账用户可以记录生活中的每一笔收入(用红色表示收入)3转账系统支持不同账户间的转账 2.3.2后台管理模块1.用户管理功能模块:它与前台用户的个人信息管理功能模块是不同的。这里管理的是所有的注册用户信息,是真正意义上的用户管理模块。其具体功能如表2-7所示:表2-7 用户管理功能模块序 号功能列表功能明细1管理员登录管理输入用户名和密码,系统进行验证2后台验证管理员进行功能模块管理时,都要验证3查看用户信息查看用户信息4删除用户删除用户2.网站公告管理功能模块:系统管理员通过后台的操作,将一些相关信息以消息的形式发布到网站的首页,供包括游客在内的所有用户浏览。如表2-8所示:表2-8 网站公告管理功能模块序 号功能列表功能明细1查看已有信息浏览已在前端网页发布的消息4添加消息添加需要发布到前端网页的消息3.默认开支类别功能模块:本系统提供一个默认的开支类别供用户选择,后台管理员可以修改默认的开支类别。如表2-9所示:表2-9 默认开支类别管理功能模块序 号功能列表功能明细1添加管理员可以添加默认的开支类别2修改管理员可以修改已有的开支类别3删除管理员可以删除已有开支类别第三章 数据库的设计“账族记账系统”是以MSQL5.5建立起来的,在对本系统个子模块功能分析的基础上设计了数据库的表及表之间的关系图,作了E-R关系图,并根据关系图实现了数据库添加、查找、修改、删除、浏览等基本操作。3.1数据库设计原则1.在完成数据存储的基础上,基本表的个数要尽量少。2.确保各个表之间对应关系的同时,主键的个数要尽量少。键是表间连接的工具,主键越少,表间的连接就越简单。3.字段个数越少越好。所有基本表的设计均应尽量符合第三范式,减少数据冗余4。数据库是在表的基础上创建完成的,所有对象的属性都以元组的形式在表中表示。程序员必须对数据库的数据进行必要的维护。在开发设计数据库时,应考虑数据库的使用过程中可能出现的问题,设计数据库有一定的数据恢复功能,使数据库在被使用过程中对用户的影响降到最低的程度,维护的花费降到最低。数据库系统要求具有以下方面的特点:1.结构合理,所建立的数据冗余度小,独立性强;2.增加、修改、查询和统计快速而准确;保密性和可靠性好;3.有一定的数据恢复功能,便于后期的维护。3.2数据库实体设计在对“账族记账系统”各个功能分析的基础上,可以确定数据库应该包含以下实体: 管理员信息实体(admin)1、通过账号和密码登录系统后台,可以修改自己信息(包括密码)2、可以对用户进行查看和删除操作;3、可以修改默认的收支类别;还能发布信息(网站通告)。 用户信息实体(user)1、通过注册成为网站会员;2、登录后可以修改自己信息;3、可以开始进行记账。 账户信息实体(account)1、用户可以添加账户,可以管理账户 账户操作记录信息实体(accountrecord)1、对账户的每一个操作都将记录在这个表中 转账(accounttransfer)1、由一个账户转账到另一个账户的操作将记录在这个表中 类别信息实体(category)1、收支类别将用这个表记录 支出信息实体(expend)1、每一笔收入或支出都记录在这张表中 网站信息实体(message)1、网站前台的通告记录在这张表中以下为各实体的E-R关系图:图3-1 E-R关系图3.3数据库结构设计“账族记账系统”采用MSQL数据库进行系统设计和开发,一共有管理员、用户、账户、账户操作记录、转账、收支类别、收支和信息8张表。其中管理员的账号和密码在代码中已预置,且在数据库中能进行查询。表3-1 数据库表单序号数据库表说明1admin管理员2user用户3Account账户4Accountrecord账户操作记录5Accounttransfer转账6category收支类别7expend收支8message通告表3-2 用户表(user)字段命名字段类型能否为空主外键字段说明IDInt不能主键用户表的主键NameVarchar(30)不能否用户名PasswordVarchar(10)不能否用户密码AgeInt不能否用户年龄SexChar(2)能否用户性别RegdateDate不能否注册日期RetQuestionVarchar(50)能否找回密码问题retAnswerVarchar(50)能否找回密码答案表3-3 账户表(account)字段命名字段类型能否为空主外键字段说明IDInt不能主键账户表的主键NameVarchar(20)不能否账户名称InitMoneyInt不能否初始金额DetailText能否说明User_idInt不能外键所属用户ID表3-4 收支类别表(category)字段命名字段类型能否为空主外键字段说明IDInt不能主键收支类别表主键PIDInt不能否父亲节点的idNameVarchar(20)不能否类别名称GradeInt不能否级别(1表示第一级,2表示孩子)User_idInt不能外键参考用户id为外键isDefaultinoroutInt不能否是否为默认(0表示默认,1表示不是默认)inorout0表示out,1表示in表3-5 支出表(expend)字段命名字段类型能否为空主外键字段说明IDInt不能主键支出表的主键NameVarchar(50)不能否支出名称SumInt不能否支出总和ExdateDate不能否支出日期Account_idInt不能外键(account)账户IDuser_idInt不能外键(expend)用户IDCategory_idInt不能外键类别IDDetailText能否备注exORinInt不能否0表示出,1表示入表3-6 转账表(accounttransfer)字段命名字段类型能否为空主外键字段说明IDInt不能主键转账表的主键accountinInt不能外键(account)转入账户IDaccountoutInt不能外键(account)转出账户IDdetailVarchar(255)能否转账描述nameVarchar(255)不能否转账原因transferdateDate不能否转账日期transfermoneyInt不能否转账金额表3-7 管理员表(admin)字段命名字段类型能否为空主外键字段说明IDInt不能主键管理员表的主键NameVarchar(50)不能否管理员名PasswordVarchar(10)不能否管理员密码表3-8 公告表(message)字段命名字段类型能否为空主外键字段说明IDInt不能主键公告表的主键TitleText能否公告标题ContentText能否公告内容TimeDate能否发布时间表3-9 账户操作记录表(accountRecord)字段命名字段类型能否为空主外键字段说明IDInt不能主键操作记录表主键recordDateDate不能否操作时间recordMoneyInt不能否操作金额NameVarchar不能否操作名exORinInt不能否0表示支出,1表行收入Account_idInt不能否操作账户IDUser_idInt不能否操作者第四章 程序模块的界面设计及实现4.1程序注册及登录个人信息管理功能模块:任何系统功能的实现都离不开角色的参与,为了便于系统的管理,需要对不同用户赋予不同的权限和功能,因此需要对用户进行管理,设计了个人信息管理模块.由于本系统采用了MVC设计模式,下面将用MVC的三层结构说明个人信息管理模块的功能:1.注册页面如图4-1:4-1 用户注册用户在进行注册的过程中,输入用户名移开鼠标,文本框失去焦点后会触发onblur方法,此时系统会提取输入的用户名与数据库用户表中已存在的用户名进行比对,若数据库用户表中已经存在输入的用户名,将提示不能注册,若不存在输入的用户名,便出现图5.1中的“可以注册”的提示。同样的,输入年龄的时候,当鼠标焦点落在年龄的文本框时,系统会提示“数字字符”,如果输入另外的字符,将会出现提示。该操作主要的代码如下:$(document).ready(function()$(#nameid).blur(function()var jqueryObj = $(#nameid); var username = jqueryObj.val(); var usermsg = $(#usermsg); var sql = select count(*) from User u where u.name =+username+; var url = CheckUserExist.servlet?sql=+sql+&time=+(new Date().valueOf(); $.get(url,null,callback); function callback(data) var usermsg = $(#usermsg); usermsg.html(data); ););2.输入的用户注册信息保存到数据库:用户输入注册信息后,在第二层逻辑访问层将使用java语言,使用com.jtdx.accounting.action包中UserAction.java中的add( )方法将输入的用户信息封装到对象user中,然后调用com.jtdx.accounting.service包下UserService.java中的对象userService的add( )方法,同时连接数据库,用Hibernate语言将user添加到数据库中,代码如下:public void add(User user)user.setRegDate(new Date();Session session = HibernateUtil.getSessionFactory().getCurrentSession();session.beginTransaction();session.save(user);session.clear();session.getTransaction().commit();3.用户登陆,页面图4-2所示:图4-2 用户登陆页面登陆成功后显示如图4-3所示:图4-3 登陆成功页面登陆操作的过程与注册是一个相反的过程:登录时,将输入的用户名和密码封装到对象user中,调用对象userService的login( )方法将封装的user对象放入列表中,与数据库连接后将user对象与数据库用户表中的用户名和密码进行匹配,若能匹配成功,则登陆成功,否则登陆不成功,代码如下,public String login()user = userService.login(user);if(user = null)session.remove(login);elsesession.put(login, yes);session.put(id, user.getId();session.put(name, user.getName();return login;4.用户信息在数据库中的存储情况如图4-4所示:图4-4 用户注册成功后在数据库中用户表的存储4.2用户管理模块用户管理功能模块:它与前台用户的个人信息管理功能模块是不同的。这里管理的是所有的注册用户信息,是真正意义上的用户管理模块。在这个模块中,系统管理员能产看和删除操作。1.管理员登陆后,可以浏览用户信息,页面如图4-5所示:图4-5 管理员浏览用户信息的页面2.对用户管理的代码分析:(1)管理员浏览用户信息表时,是用com.jtdx.accounting.action包下UserAction.java中的list( )方法,在list( )方法中调用com.jtdx.accounting.servic包下UserService.java中的userService.( )方法取得用户数量,在userService.find( )方法中连接数据库,利用sql语句查询并返回数量,最后在public List list(User user,int pageNo,int rows)方法中将用户信息返回到页面,代码如下:public List list() List list = new ArrayList();Session sessionConn = HibernateUtil.getSessionFactory().getCurrentSession();sessionConn.beginTransaction();Query query = sessionConn.createQuery(from User where id !=2);list = query.list();sessionConn.getTransaction().commit();return list;(2)管理员选择要删除的用户点击删除按钮后,系统将需要删除的用户的ID传给com.jtdx.accounting.service包下UserService.java中的public void deleteById方法,并与数据库进行连接,在数据库用户表中将相应用户信息删除,代码如下:public void deleteById(User user) Session sessionConn = HibernateUtil.getSessionFactory().getCurrentSession();sessionConn.beginTransaction();String sql = delete Category where user_id=+user.getId();Query cquery = sessionConn.createQuery(sql);cquery.executeUpdate();String sql2 = delete Account where user_id=+user.getId();Query query2 = sessionConn.createQuery(sql2);query2.executeUpdate();String sql3 = delete Expend where user_id=+user.getId();Query query3 = sessionConn.createQuery(sql3);query3.executeUpdate();Query query = sessionConn.createQuery(delete User where id=+user.getId();query.executeUpdate();sessionConn.getTransaction().commit();4.3首页信息浏览功能模块首页信息管理功能模块:系统管理员登陆后可以对首页信息进行添加的操作;用户进入网站首页后可以在不登陆的状态下浏览发布的信息,页面如图4-6所示:图4-6 系统首页后台管理员添加信息的页面如图4-7所示:图4-7 首页信息添加页面管理员添加信息点击“添加”按钮后,系统与数据库连接,将管理员添加的信息封装到对象message里,在com.jtdx.accounting.service包中的MessageService.java下的public void add里将信息添加到数据库中的信息表里,对应的代码如下:public void add(Message message)message.setTime(new Date();Session session = HibernateUtil.getSessionFactory().getCurrentSession();session.beginTransaction();session.save(message);session.clear();session.getTransaction().commit();4.4默认开支类别管理管理员登录后台后可以对默认的开支类别进行增、删、改、查操作,之后所有的前台用户都将只能看到修改后的默认开支类别,操作页面如图4-8所示:图4-8 默认开支类别管理页面1.点击进去即可修改,修改后效果如图4-9所示:图4-9 默认类别修改后效果2.默认开支类别管理功能模块主要代码分析:(1)点击管理类别,程序将返回一个list,里面装的全是category;然后在页面中通过OGNL表达式来展现成图4-8的效果,对应的代码如下:public List defaultManage()List list = new ArrayList();Session sessionConn = HibernateUtil.getSessionFactory().getCurrentSession();sessionConn.beginTransaction();String sql = from Category where isDefault = 0;Query query = sessionConn.createQuery(sql);list = query.list();sessionConn.getTransaction().commit();return list;(2)点击进入修改时,系统通过JQuery悄悄的把修改写进了数据库,进而实现的局部刷新的效果,代码如下:var gID;function changeToInput(id) var oNP = document.getElementById(id);var value = oNP.title;oNP.outerHTML = ;document.getElementById(id).focus();function change(id) var oNP = document.getElementById(id);var value = oNP.value;gID = id;sql = update Category c set c.name = +value+ where c.id=+id;var url = CategoryUpdate.servlet?sql=+sql+&time=+(new Date().valueOf();$.post(url,null,callback);function callback(data) var oNP = document.getElementById(gID);var value = oNP.value; oNP.outerHTML = + value + ;return;(3)页面通过OGNL表达式展现的代码如下:s:iterator valu
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 其他分类 > 大学论文


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!