中南大学数据库课程设计报告院系:信息科学与工程学院专业:计算机科学班级:1104班学号:0909112124姓名:指导教师:张健2015年1月20日2一、任务概述本次课程设计要求设计并实现一个虚拟的银行业务与管理系统。该系统包含两大模块,即由银行内部工作人员使用的银行服务模块与系统管理模块。银行服务与管理模块采用C/S模式开发,前端开发平台不限,后台数据库要求采用SQLSERVER2000或Oracle9i以上版本。二、课程设计任务要求1.2.1银行服务模块该模块仅供银行内部工作人员使用,需提供以下功能:1)创建新账号。根据客户填写的开户单创建新的账号,并保留客户基本资料,如姓名、地址、联系电话、证件类型、证件号码等。账号有不同种类,如储蓄账号和信用卡账号,其中信用卡账号不具备储蓄功能,但是可以透支一定额度。储蓄账号可储蓄不同币种、不同类型的存款,包括活期和定期。定期存款的时间长度限定为:三个月、半年、一年、两年、三年和五年。一个储蓄账号中可对应多笔定期存款。开设新储蓄账号时,最低存款额为10元。2)设置或修改账号密码。密码由用户输入,输入界面显示掩码。3)账号挂失。4)取消账号。5)存款。存款时需记录操作员编号、存款额、期限、存款时间等信息。对定期存款,可指定是否要自动转存。6)取款。取款时需记录操作员编号、取款额、取款时间等信息。7)计算利息。存款利率可随时间变化。活期存款在每季度末月20日自动结算利息,或在取消账号时结算利息。定期存款利率采用存款当时的利率,自动转存的,每转存一次,均按转存日的利率计算下一个存期的利息。利息加入本金,并计算复利。8)转账。支持活期账号间的转账操作。对信用卡账号,系统根据客户的偿还能力和信誉度设定一个透支额度。以每月为单位进行结算,客户当月消费总额不能超过透支额度。结算完毕后,向客户发出结算单,如果客户在规定期限内没有还款,则采取收取滞纳金或收回信用卡的措施。9)客户提供姓名、有效证件、银行帐号,申请开通网上银行服务。开通网上银行的客户获得一张口令卡,用于在进行网上银行业务时的安全控制。31.2.2系统管理模块1)录入、修改、查询银行工作人员基本资料。2)为工作人员分配操作帐号和操作权限。3)密码管理。操作员忘记密码,可由系统管理员将密码恢复为初始值。1.2.3安全性控制要求1)所有用户密码在数据库中都要求加密存储。2)数据库管理员只能够访问银行管理模块,而不能访问业务模块。3)用户密码和账号信息在从用户界面向后台传送时要加密。1.2.4课程设计要求1)对系统的功能和数据进行需求分析、总体设计和详细设计。数据库设计部分要包含系统E-R图、数据字典、表、视图等的定义和描述。其中数据库设计要求采用辅助设计工具,例如ERWin或PowerDesigner。2)程序实现各项功能,在课程设计报告中要反映实现过程中采用的关键技术和主要程序流程以及主要的操作界面。3)对数据库的操作尽可能采用存储过程或触发器实现。三、课程设计报告内容1、银行管理系统的项目设计1.1数据库的需求和分析1.1.1数据库中表的信息结构(1)、用户信息表(user表)字段名字段类型长度主键允许空说明IDcardvarchar20PKNo卡号,usernamevarchar20no用户姓名passwordvarchar6no密码(只能是6位的数字)IDint18no身份证sexchar4no性别addressvarchar40no住址4Telint20no电话nowOpendoubleno现开(不能小于10元)(2)、管理员信息表(admin表)字段名字段类型长度主键允许空说明adminIDvarchar20PKno管理员账号passwordvarchar20no密码(3)、用户存钱、取钱、转账的操作表(operate表)字段名字段类型长度主键允许空说明IDcardvarchar40no卡号timedateno日期typevarchar10no类型cashdoubleno需要存(取、转账)的金额余额(4)、账户的余额表(balance表)字段名字段类型长度主键允许空说明IDcardvarchar40no卡号startCashDoubleno起始金额(nowOpen)endCashdoubleno最终余额51.2程序流程图2、银行管理系统的运行情况(选择登录方式)银行管理系统管理员用户登陆开户销户取钱转账存钱修改密码用户信息查询明细显示余额修改信息6(1)、当选择用户登录时:(选择用户登录)(用户操作页面)(取钱页面)7(存钱的页面)(转账页面)(修改密码页面)8(显示明细页面)(显示余额页面)(2)当管理员登录时:(管理员登录)9(管理员页面)(开户页面)(开户页面)(输入你需要销户的卡号和密码)10(获取你要修改资料的用户信息)(修改用户资料)(显示用户信息)113、涉及的核心代码及技术3.1、登陆界面设计思路:登录界面是先选择是使用用户登录还是选择管理员登录,选择用户登录,输入卡号和密码后对数据库中的用户信息进行验证,成功时则跳转,失败时则跳到用户的登录页面。(管理员登录方式雷同)流程图:核心代码:说明:选择用户登录,输入卡号和密码后,判断数据库中是否有此卡号和密码。有,则跳到用户登录页面;无,则重新输入。选择登录的方式用户登录管理员登录失败成功失败成功输入卡号和密码在数据库中查找输入卡号和密码不跳转,重新输入在数据库中查找不跳转,重新输入跳到用户操作页面跳转到用户操作页面123.2用户操作页面设计思路:用户登录成功后,进入用户操作页面。用户操作页面设置了几个按钮,包括取钱、存钱、转账、修改密码、明细查询、显示余额。3.2.1取钱页面设计思路:点击取钱按钮时,跳转到输入金额的页面,输入金额点击确定后,使余额的表中的最终余额减去输入的金额,并且把最终余额,卡号信息,类型等信息添加到操作表中。流程图:核心代码:(代码1)点击取钱按钮跳转到输入页面,输入金额。(并获取余额表中的最终余额)判断输入的金额是否大于您余额表中的最终余额大于,则重新输入金额小于,则将余额表中的最终余额减去你输入的金额,得到新的余额将输入的金额、新的余额和卡号信息、类型、日期添加到操作表中。将新的最终余额显示出来13余额更新后,将取钱的信息添加到操作表中。(代码2)3.2.2存钱页面设计思路:点击存钱按钮时,跳转到输入金额的页面,输入金额点击确定后,使余额的表中的最终余额加上输入的金额,并且把最终余额,卡号信息,类型等信息添加到操作表中。点击存钱按钮跳转到输入页面,输入金额。(并获取余额表中的最终余额)将余额表中的最终余额加上你输入的金额,得到新的余额将输入的金额、新的余额和卡号信息、类型、日期添加到操作表中。将新的最终余额显示出来14核心代码:(代码1)(代码2)3.2.3转账的页面设计思路:点击转账按钮时,跳转到输入转入卡号和金额的页面。输入后点击确定,将转出卡号的余额表中的最终余额减去输入的金额,得到新的余额。把转出卡号和新余额更新到余额表中,再把转出卡号,日期,类型,转出金额,新余额信息添加到操作表中。获取转入的卡号,把其余额表中的余额加上转入的金额,并更新到余额表。获取转入卡号的信息,把转入卡号,日期,类型,转出金额,新余额信息添加到操作表中。15流程图:核心代码:(代码1:获取转入的卡号和转账的金额)跳转到输入页面,输入转入的账号和金额。(并获取余额表中的最终余额)判断输入的金额是否大于转出卡号的余额表中的最终余额(获取转出卡号和转入卡号)大于,则重新输入金额小于,则将余额表中的最终余额减去你输入的金额,得到新的余额将转出卡号、类型、日期、转出的金额、新的余额添加到操作表中。将转出卡号的得到的新最终余额显示出来点击转账按钮将新的余额和转出的卡号更新到余额表中通过获取到的转入的卡号,获取到它的余额,将最终余额加上转入的余额,得到新的余额将转入的卡号和得到余额更新到余额表中将转入卡号、类型、日期、转入的金额、新的余额添加到操作表中。16(代码2:计算转入卡号的新余额)(代码3:转入卡号的信息添加到操作表中)17(代码4:计算转出卡号的新余额)(代码5:转入卡号的信息添加到操作表中)3.2.4修改密码页码设计思路:点击修改密码,进入修改密码页面,有输入新密码和确认新密码,判断成功后,更新用户表中的密码。18流程图:核心代码:3.2.5显示余额页面设计思路:点击余额按钮,通过卡号在数据库的余额表中查找此卡号的最终余额,并显示出来。点击修改密码按钮输入新密码和确认新密码判断新密码为6位数字两次输入的密码要一致如果不是6位,跳出警告框不一致,跳到显示密码不一致页面重新输入密码密码为6位,并且一致,则更新用户表中的密码返回用户操作页面19流程图:核心代码:3.2.6显示明细页面设计思路:点击显示明细按钮,通过卡号获取数据库的操作表中的信息,得到后,在页面中显示出明细,包括卡号、日期、类型、交易金额、余额。并将明细表可分页显示。流程图:3.3管理员操作页面设计思路:管理员登录成功后,进入管理员操作页面。在操作页面中设置了开户、销户、显示用户信息、修改用户信息功能。3.3.1开户的页面设计思路:点击开户按钮,跳入注册用户的页面,输入用户的资料,用户的资料添加到用户表中。点击击显示明细按钮通过卡号,获取数据库操作表的信息找到后,将明细表按照日期排序将明细表在页面上分页显示出点击击显示余额按钮通过卡号,查找数据库余额表的最终余额找到后,显示余额20流程图:核心代码:(代码1:判断输入的信息)点击开户按钮进入注册页面,输入用户的资料判断用户的密码为6位数字判断现开金额是否大于10元如果不是6位,跳出警告框。如果小于10元,跳出警告框。判断合格,则将用户的资料添加到用户表中显示用户信息21(代码2:获取输入的用户信息)3.3.2销户的页面设计思路:点击销户按钮,跳如销户页面,输入要销户的卡号和密码,从获取卡号的信息和卡号的余额,如果有余额则返还给用户余额,将余额设为0后,再删除卡号的资料。流程图:点击销户按钮输入要销户的卡号和密码,核对数据库中的信息有此用户,则将用户表和余额表合并在一起显示合并后的信息,查看时否有余额余额为0,则可以删除用户,将用户资料删除余额不为0,则将余额返还给用户,将余额改为0删除用户信息无此用户或密码错误,重新输入信息22核心代码:(根据卡号删除用户信息)3.3.3列显用户的信息设计思路:点击用户信息按钮,通过卡号获取数据库中用户表的信息,并用分页的方式显示出流程图:核心代码:点击用户信息按钮通过卡号,获取数据库用户表的信息将用户表在页面上分页显示出233.3.4修改用户信息设计思路:点击修改用户信息按钮,跳到修改页面,输入卡号和密码,确定后,从数据库的用户表中获取用户的信息,点击修改,将用户的信息显示在出,并在此基础上修改,确定后,将修改后的用户信息更新到数据库,并显示在页面上流程图:核心代码:点击修改信息按钮输入要修改的卡号和密码,核对数据库中的信息无此用户或密码错误,重新输入信息有此用户,则将用户表信息显示出来,点击修改跳到显示用户信息页面,修改信息要求:密码为6位数字,卡号和现开金额为只读模式将修改后的用户信息更新到数据库显示出更新后的用户信息24四、总结在本次课程设计中,刚开始时,感觉一步步的做就行了,但是在做的过程中,会出现一些困难,让我们始料未及,例如:对数据库的设计合理性,JSP语言的运用和一些警告框的设计,都是一点点从网上或者是书上查阅到的,还有我们这组同学的讨论出的。通过课程设计,我们发现了自己的很多不足,我们知识的很多漏洞,看到了自己实践经验还是比较缺乏,理论联系实际的能力还需提高。不如:往往是想出来的点子很好,但是自己的知识跟不上,要做出来就经历了很多难题。在这个过程中,我们也曾因为实践经验的缺乏失落过,也曾成功运行程序而热情高涨,也曾大家因意见不一致而争得面红耳赤,也曾因讨论不出结果请教其他的同学。但生活就是这样,苦中有乐,乐中含苦。当我们连好数据库,按下运行键,程序完全正确的时候,我们心中不免兴奋,而以前