1、摘要II目 录第一章 系统分析31.1 系统概述31.2 系统角色定义31.3系统主用例图41.4用例概况41.4.1未注销用户用例41.4.2注销用户用例81.5系统概念模型9第二章系统设计112.1 系统总体功能结构112.2系统数据设计122.3目录和包结构设计132.3.1视图层142.3.2控制层142.3.3业务层152.3.4持久层152.4系统流程设计162.4.1登录模块图描述162.4.2用户管理模块图描述172.4.3业务办理模块图描述19第三章系统实现223.1帐户申请界面223.2帐户注册及登录界面233.3系统主界面243.4个人信息查询界面243.5个人信息修改页
2、面253.6 存款界面253.7业务信息查询界面263.8修改帐户密码界面263.9 余额查询界面273.10注销用户界面27第四章关键代码实现284.1系统功能关键代码284.1.1用户注册模块:register.jsp和RegisterAction.java284.1.2帐号注册模块:registerNo.jsp和RegisterNoAction.java284.1.3登录模块:login.jsp和LoginAction.java294.1.4主页面:main.jsp和MainAction.java314.1.5存款模块:save.jsp和SaveAction.java324.1.6帐户注
3、销模块:save.jsp和DeleteTradeAction.java334.1.7修改帐户密码模块: updatePasswd、UpdatePasswdAction.java和UpdatePasswdSaveAction.java334.1.8查询余额模块:select.jsp和SelectBalanceAction.java354.1.9取款模块:cash.jsp和CashAction.java354.1.10业务办理模块:tradelogin.jsp和TradeloginAction.java374.1.11交易信息查询模块:tradeSelect.jsp和TradeSelectActi
4、on.java374.1.12个人信息查询模块:userSelect.jsp和userSelectAction.java384.1.13个人信息修改模块:userUpdate.jsp、UsrUpdateSaveAction.java和UserUpdateSaveAction.java394.2 DAO类关键代码414.2.1帐户的DAO类:TradeinfoDAO.java414.2.2用户的DAO类:userinfoDAO.java434.3 POJO类关键代码444.3.1帐户 的POJO类:Tradeinfo.java和Tradeinfio.hbm.xml444.3.2用户 的POJO类
5、:Userinfo.java和Userinfio.hbm.xml464.4 主配置文件关键代码: Hibernate.cfg.xml和 struts.xml49总 结52参考文献.53第一章 系统分析1.1 系统概述随着办公自动化的迅速发展,对企事业单位信息的自动化管理提出了很高的要求。对于银行来说,由于有大量的客户信息需要处理,因此银行帐户管理系统的开发与研究有一定的实用价值。银行账户管理系统为用户提供账户申请、账户注销、存款、取款、查询帐户余额等主要业务,系统可以使用Web技术实现全部业务。用户可以通过图形化的界面,输入登录信息(姓名、年龄、性别、住址、联系电话、身份证号等),申请自己的账
6、户,系统要按照银行规则产生不能重复的用户帐号。用户获得帐号后需注册帐号,设置自己帐号的密码,一个用户可以申请多个账户。用户注册帐号后必须登录进入本系统主页面,在业务办理中用户可以注销自己的账户和查看业务办理信息。但注销之前,必须先把注销帐户中的钱全部取出,注销后用户仍然能查询自己帐户的交易数据信息。用户还可以修改自己的帐户密码。同时可以进行存钱取钱等功能,并对自己的个人信息进行查询及修改。1.2 系统角色定义系统使用者主要分为两种角色:1) 普通用户:在业务办理中,可进行存钱、取钱、查询余额、注销用户和查看交易信息并可修改帐户密码;注销用户时必须保证帐户中余额为0,否则则不能进行注销用户操作;
7、信息查询中,用户可以查看个人信息并进行修改。2) 注销用户:只允许注销帐号的用户查看和修改个人信息。1.3系统主用例图图 3.3.1 系统用例图1.4用例概况1.4.1未注销用户用例名称:注册用户参与执行者:未注销用户、本软件系统界面、数据库前置条件:数据库已经连接活动的基本过程:1用户在界面中输入个人相关信息2用户点击“注册”按钮3系统打开数据库,将结果保存在数据库相应的表格中后置条件:用户信息保存在数据库中名称:注册帐号参与执行者:未注销用户、本软件系统界面、数据库前置条件:数据库已经连接活动的基本过程:1用户注册成功后会得到一个帐号2用户进入相应的操作页面,输入得到的帐号,并为帐号设置一
8、个密码;3系统打开数据库,将添加结果保存在数据库相应的表格中后置条件:用户信息保存在数据库中名称:登录参与执行者:未注销用户、注销用户、本软件系统界面、数据库前置条件:数据库已经连接活动的基本过程:1用户在登录界面中输入登录用户名、密码2用户点击“登录”按钮3系统查询数据库用户表,判断此用户名是否存在,用户名和密码是否吻合4如果用户名和密码吻合,系统将根据该用户名所对应的操作权限跳转到相应的页面后置条件:用户已登录,用户可以操作相应的页面名称:查看个人信息参与执行者:未注销用户、注销用户、本软件系统界面、数据库前置条件:数据库已经连接活动的基本过程:1用户进入相应的操作页面2系统打开数据库,将
9、添加结果保存在数据库相应的表格中后置条件:用户信息保存在数据库中名称:修改个人信息参与执行者:未注销用户、注销用户、本软件系统界面、数据库前置条件:数据库已经连接活动的基本过程:1用户进入相应得操作页面2在界面的相应位置填写修改的用户的信息,填写完毕后,点击“修改”按钮后置条件:修改的用户信息保存在数据库中名称:存款参与执行者:未注销用户、本软件系统界面、数据库前置条件:数据库已经连接活动的基本过程:1用户进入相应的操作页面2用户在相应的区域内填写要所存金额,点击“提交”按钮3系统打开数据库,将结果保存在数据库相应的表格中。后置条件:交易信息保存在数据库中名称:取款参与执行者:未注销用户、本软
10、件系统界面、数据库前置条件:数据库已经连接活动的基本过程:1用户进入相应的操作页面2用户在相应的区域内填写要所取金额,点击“提交”按钮3系统打开数据库,将结果保存在数据库相应的表格中,后置条件:交易信息保存在数据库中名称:查询余额参与执行者:未注销用户、本软件系统界面、数据库前置条件:数据库已经连接活动的基本过程:1用户进入相应的操作页面,点击“查询余额”按钮2系统打开数据库,将结果显示在数据库相应的表格中后置条件:交易信息保存在数据库中名称:注销用户参与执行者:未注销用户、本软件系统界面、数据库前置条件:数据库已经连接活动的基本过程:1用户进入相应的操作页面,点击“注销用户”按钮2系统查询数
11、据库交易信息表,若余额为0,则注销成功;否则不成功;后置条件:交易信息保存在数据库中名称:查看交易信息参与执行者:未注销用户、本软件系统界面、数据库前置条件:数据库已经连接活动的基本过程:1用户进入相应的操作页面2系统查询数据库,将交易信息显示在表格中后置条件:交易信息保存在数据库中1.4.2注销用户用例名称:注册用户参与执行者:注销用户、本软件系统界面、数据库前置条件:数据库已经连接活动的基本过程:1用户在界面中输入个人相关信息2用户点击“注册”按钮3系统打开数据库,将结果保存在数据库相应的表格中后置条件:用户信息保存在数据库中名称:登录参与执行者:注销用户、注销用户、本软件系统界面、数据库
12、前置条件:数据库已经连接活动的基本过程:1用户在登录界面中输入登录用户名、密码2用户点击“登录”按钮3系统查询数据库用户表,判断此用户名是否存在,用户名和密码是否吻合4如果用户名和密码吻合,系统将根据该用户名所对应的操作权限跳转到相应的页面后置条件:用户已登录,用户可以操作相应的页面名称:查看个人信息参与执行者:注销用户、注销用户、本软件系统界面、数据库前置条件:数据库已经连接活动的基本过程:1用户进入相应的操作页面2系统打开数据库,将添加结果保存在数据库相应的表格中后置条件:用户信息保存在数据库中名称:修改个人信息参与执行者:注销用户、注销用户、本软件系统界面、数据库前置条件:数据库已经连接
13、活动的基本过程:1用户进入相应得操作页面2在界面的相应位置填写修改的用户的信息,填写完毕后,点击“修改”按钮后置条件:修改的用户信息保存在数据库中1.5系统概念模型根据业务分析,可以得出系统类图,如图2所示,用以对系统中的数据进行归类,并描述其之间关系。 图3.2 对系统功能进行设计,分别得出系统用户信息和交易信息的DAO类图,以及用户业务层和交易业务层类图。分别如图3、图4所示。 图3.3.1 用户信息和交易信息的DAO类图图3.3.2 用户业务层和交易业务层类图第二章 系统设计2.1 系统总体功能结构注 销 帐 户修 改 密 码业务信息查询取 款存 款注 册 帐 号注 册 用 户个人信息修
14、改个人信息查询 帐号管理用户管理银行账户管理系统登 录录 图2.1系统功能结构图2.2系统数据设计数据库技术是计算机科学技术中发展最快的领域之一。随着科学技术的发展,人们掌握和处理的信息越来越多,要想充分地开发与利用这些信息资源,就必须对大量的信息进行识别、存储、处理与传递。众所周知,人脑在信息的识别、信息的分析与综合、推理和联想等方面有很强的能力,但在记忆信息、快速处理信息方面的能力较弱,因此要从大量而又经常变化的信息中提取一些关键信息并不容易。以电子信息为基础的数据库技术,具有存储量大、处理速度高、传输速度快、逻辑推理严密、重复性高且不会疲劳,能够有效合理地存储各种信息,能为有关应用准确快
15、速地提供有用信息等特点,正好弥补了人类加工处理信息等方面的能力的不足,使其很快成为了信息处理的工具。数据库系统已在当代的社会生活中得到了广泛的应用。自从20世纪60年代末出现数据库技术以来,它已渗透到工农业生产、商业、行政管理、科学研究、教育、工程技术和国防军事等各行各业,而且围绕数据库技术已形成了一个巨大的软件产业,即数据库管理系统和各类工具软件的开发与经营。它是管理信息系统(MIS)、办公自动化(OA)、决策支持系统(DSS)等各类应用系统的核心部分。数据库设计的核心问题是建立一个什么样的模型。一般而言,这个模型应当满足若干准则,这些准则可以分为两类:结构准则和性能准则。具体而言,这个模型
16、应当达到以下目标:(1)满足用户的应用要求,即能够正确的反映用户的现实环境。(2)准确的模拟现实世界,即准确的反映现实世界的信息类别与信息之间的联系。(3)能被某个DBMS所接受。(4)具有良好的性能、较高的质量。数据库设计过程是数据库生命周期的一个阶段。数据库生命周期一般包含数据库系统的规划、设计、实现、运行管理和维护、扩充和重构等重大阶段。根据对银行账户管理系统的分析,总结数据库Bank由userinfo和tradeinfo两张表构成,表的结构如表1和表2所示:字段名数据类型是否为空是否唯一字段描述idintfasletrue主键userNamevarcharfasletrue用户名pas
17、swordvarcharfaslefasle密码userAgeintfaslefasle用户年龄userIdvarcharfasletrue身份证号telvarcharfaslefasle联系电话cityvarcharfaslefasle居住城市addressvarcharfaslefasle详细地址sexvarcharfaslefasle性别表2.1用户表字段名数据类型是否为空是否唯一字段描述idintfasletrue主键tradevarcharfaslefasle交易类型balanceIntfaslefasle用户余额dataTimevarcharfaslefasle交易时间userNo
18、bignitfasletrue用户帐户moneyIntfaslefasle交易金额passwordvarcharfaslefasle帐户密码useridintfaslefasle用户号码表2.2帐号表 2.3目录和包结构设计系统的分层设计及实现可使系统达到“分散关注、松散耦合、逻辑复用、标准定义”的目的。因此,银行账户管理系统采用四层结构进行分层,其各层组成如下所示:2.3.1视图层视图层由JSP页面组成,其中主界面为main.jsp,通过框架引入topmain.jsp(置顶)、leftmain.jsp(下左)和空白窗口(下右);trade中为帐号相关页面;user为用户相关页面;图2.2结构
19、图2.3.2控制层控制层由Action类、Action的验证类(通过Action链传值给Action)(控制登录后才可访问其他内容)共三部分构成,结构如下图5.4:结构图2.32.3.3业务层业务层由用户访问(AbstractUserinfo抽象类及实现类Userinfo)和交易(AbstractTradeinfo抽象类及实现类Tradeinfo)两部分组成构成,结构如下图5.5:结构图2.42.3.4持久层持久层由持久化类和DAO类(包括接口)两部分组成构成,结构如下图5.6:结构图2.52.4系统流程设计2.4.1登录模块图描述HibSessionFactoryHibernate.cfg.
20、xmlAbstractUserBaseHibernateDAOUserinfo.hbm.xmlUserinfongUserinfoDAOlogin()struts.xmlLoginActionerro.jspmain.jsplogin.jspUserinfoDAO视图层 控制层 模型层IBaseHibernateDAO图2.6登录功能2.4.2用户管理模块图描述视图层 控制层 模型层HibSessionFactoryHibernate.cfg.xmlAbstractUserBaseHibernateDAOUserinfo.hbm.xmlUserinforUserDAOIregister()st
21、ruts.xmlRegisterActionerro.jspRegistersu.jspsuccess.jspregister.jspUserinfoDAOIBaseHibernateDAO图2.7注册功能视图层 控制层 模型层HibSessionFactoryHibernate.cfg.xmlAbstractUserBaseHibernateDAOUserinfo.hbm.xmlUserinforUserDAOIreuserNo()struts.xmlReuserNoActionerro.jspReuserNosu.jspsuccess.jspreuserNo.jspUserinfoDAOI
22、BaseHibernateDAO图2.8注册帐号功能视图层 控制层 模型层HibSessionFactoryHibernate.cfg.xmlAbstractUserBaseHibernateDAOUserinfo.hbm.xmlUserinforUserinfoDAOuserSelect()struts.xmlUserSelectActionerro.jspuserSelect.jspsuccess.jspuser.jspUserinfoDAOIBaseHibernateDAO图2.9个人信息查询功能视图层 控制层 模型层HibSessionFactoryHibernate.cfg.xmlA
23、bstractUserBaseHibernateDAOUserinfo.hbm.xmlUserinforUserinfoDAOuserUpdate()struts.xmlUserUpdateActionerro.jspuserUpdate.jspsuccess.jspuser.jspUserinfoDAOIBaseHibernateDAO图2.20个人信息修改功能2.4.3业务办理模块图描述视图层 控制层 模型层HibSessionFactoryHibernate.cfg.xmlAbstractUserBaseHibernateDAOTradeinfo.hbm.xmltradeinfoTrad
24、einfoDAOsave()struts.xmlSaveActionerro.jspsaveSu.jspsuccess.jspsave.jspTradeinffoDAOIBaseHibernateDAO图2.11存款功能视图层 控制层 模型层HibSessionFactoryHibernate.cfg.xmlAbstractUserBaseHibernateDAOTradeinfo.hbm.xmltradeinfoTradeinfoDAOsave()struts.xmlSaveActionerro.jspsaveSu.jspsuccess.jspsave.jspTradeinfoDAOIBas
25、eHibernateDAO图2.12取款功能视图层 控制层 模型层HibSessionFactoryHibernate.cfg.xmlAbstractUserBaseHibernateDAOTradeinfo.hbm.xmltradeinfoTradeinfoDAOtradeSelect ()struts.xmlTradeSelectActionerro.jsptradeSelect.jspsuccess.jsptrade.jspUserinfoDAOIBaseHibernateDAO图2.13交易信息查询功能视图层 控制层 模型层HibSessionFactoryHibernate.cfg.
26、xmlAbstractUserBaseHibernateDAOTradeinfo.hbm.xmltradeinfoTradeinfoDAOseleBal ()struts.xmlSelectBalActionerro.jspseleBal.jspsuccess.jsptrade.jspTradeinffoDAOIBaseHibernateDAO图2.14余额查询功能视图层 控制层 模型层HibSessionFactoryHibernate.cfg.xmlAbstractUserBaseHibernateDAOTradeinfo.hbm.xmltradeinfoTradeinfoDAOupdat
27、ePass ()struts.xmlUpPasswdActionerro.jspupPaswd.jspsuccess.jsptrade.jspTradeinffoDAOIBaseHibernateDAO图2.15修改帐号密码功能第三章 系统实现3.1帐户申请界面用户输入个人的相关信息,在系统验证正确的情况下,系统将随机给出用户的帐号. 如图6.1所示。图3.1注册用户页面3.2帐户注册及登录界面用户获得帐号后需注册帐号,设置自己帐号的密码,再进行登录。如图6.2和6.3所示图3.2注册用户成功页面图6.3注册帐号页面3.3系统主界面在主页面中,可以通过超连接进入信息查询页面及业务办理页面。用户
28、进入信息查询页面后,可以通过超连接进入个人信息查询页面和个人信息修改页面。在业务办理中,用户可存款、取款、查询余额、注销帐户及修改帐户密码。如图6.4所示图3.4系统主界面3.4个人信息查询界面用户可以查看自己的个人信息但不能进行修改,如想修改个人信息可以进入个人信息修改页面进行修改。如图6.5所示图3.5个人信息查询页面3.5个人信息修改页面可对自己的相关信息进行完善和修改。如图6.6所示图3.6个人信息修改页面3.6 存款界面用户可进行存款、取款操作。如图6.7所示图3.7存款页面3.7业务信息查询界面用户可对自己帐户的业务信息进行查询。如图6.8所示图3.8业务信息查询页面3.8修改帐户
29、密码界面用户可对帐户密码进行修改,确保自己的帐户不被窃取。如图6.9所示图3.9修改帐户密码界面3.9 余额查询界面用户可进行查看帐户余额操作。如图6.10所示图3.10余额查询页面3.10注销用户界面当用户帐号余额为0时,用户可以注销帐号。如图6.11所示 图3.11注销用户页面第四章 关键代码实现4.1系统功能关键代码4.1.1用户注册模块:register.jsp和RegisterAction.java重要代码:public class LoginAction public String login()String flag=;HttpServletRequest request=Ser
30、vletActionContext.getRequest();HttpServletResponse response=ServletActionContext.getResponse();HttpSession session=request.getSession(true);String username=request.getParameter(username);String password=request.getParameter(userpassword);tryUserinfoDAO uidao=new UserinfoDAO(); Transaction tx = uidao
31、.getSession().beginTransaction(); List list=uidao.findByusernamepassword(username,password); session.setAttribute(userlist,list ); if(list.size()0) flag=s; else flag=f; mit(); catch(HibernateException e) e.printStackTrace(); return flag; 4.1.2帐号注册模块:registerNo.jsp和RegisterNoAction.java重要代码:public cl
32、ass RegisterNoAction public String registerNo()String flag=;HttpServletRequest request=ServletActionContext.getRequest();HttpServletResponse response=ServletActionContext.getResponse();HttpSession session=request.getSession(true);String userid=request.getParameter(reguserid);String userNo=request.ge
33、tParameter(userNo);String password=request.getParameter(userpassword);int a=0; try TradeinfoDAO tradedao=new TradeinfoDAO(); Tradeinfo trade=new Tradeinfo();trade.setUserNo(userNo);trade.setUserid(new Integer(userid);trade.setPassword(password);trade.setBalance(0);Transaction tx = tradedao.getSessio
34、n().beginTransaction();tradedao.save(trade);session.setAttribute(tuserid, trade.getId();System.out.println(trade.getId(); mit(); catch(HibernateException e) e.printStackTrace();a=1; if(a=0) flag=s; elseflag=f; return flag; 4.1.3登录模块:login.jsp和LoginAction.java重要代码:login.jsp function check1() if(docum
35、ent.form1.username.value=) alert(用户名不能为空!); return false; else if(document.form1.userpassword.value=) alert(密码不能为空!); return false;elseform1.submit(); 用户名:密码:请注册loginAction.javapublic class LoginAction public String login()String flag=;HttpServletRequest request=ServletActionContext.getRequest();Htt
36、pServletResponse response=ServletActionContext.getResponse();String username=request.getParameter(username);String password=request.getParameter(userpassword);TryUserinfoDAO uidao=new UserinfoDAO(); Transaction tx = uidao.getSession().beginTransaction(); List list=uidao.findByusernamepassword(userna
37、me,password); if(list.size()0) flag=s; elseflag=f; mit(); catch(HibernateException e) e.printStackTrace();return flag; 4.1.4主页面:main.jsp和MainAction.java重要代码:main.jsp欢迎您来到网上银行!信息查询业务办理退出系统MainAction.javapublic class MainAction public String main()String flag=;HttpServletRequest request=ServletActionContext.getRequest();HttpServletRe