银行管理系统毕业设计.docx
《银行管理系统毕业设计.docx》由会员分享,可在线阅读,更多相关《银行管理系统毕业设计.docx(56页珍藏版)》请在冰豆网上搜索。
银行管理系统毕业设计
软件工程实验报告
课题:
银行管理系统
组员姓名:
解东风、严俊、韩晨、陈涛、吴杰专业班级:
软件0925
指导教师:
张以利设计时间:
2011/01/06
银行储蓄管理系统
1.概要说明..........................................................2
2.前言
2.1开发背景............................................7
2.2开发意义............................................7
2.3项目目标............................................7
3.需求分析
3.1系统功能性需求......................................8
3.2系统需求分析规格说明书..............................8
3.3系统目标............................................8
3.4编程语言和运行环境介绍..............................9
4.系统设计
4.1银行管理系统的基本设想...............................11
4.2银行管理系统的功能模块..............................13
4.3功能模块介绍........................................14
4.4数据库设计..........................................14
4.4.1数据库设计需求分析.............................14
4.4.2数据库概念设计.................................15
4.4.3数据库逻辑结构设计.............................16
5.系统详细设计
5.1登陆界面的设计....................................18
5.2操作主界面的设计..................................23
5.3功能设计..........................................25
5.3.1开户窗口的实现................................25
5.3.2销户窗口的窗口实现............................31
5.3.3修改个人信息的窗口实现........................36
5.3.4查询用户信息的窗口实现........................38
5.3.5修改密码的窗口实现............................40
5.3.6实现存款,取款的窗口实现.....................47
5.3.7查询统计的实现................................52
5.3.8查看账单的实现................................54
1.概要说明
银行管理是银行业务流程过程中十分重要且必备的环节,在银行业务流程当中起着相当重要的作用。
现在银行的业务越来越多,吸引的客户也越来越多,银行管理就越显重要。
由于银行有处理大量数据的要求,全部采用人工的方式处理明显不合适:
这不仅要花费很高的成本,而且处理事务的效率和质量都存在很大的问题。
出于这些问题的考虑,采用计算机来处理这类问题就是一个相当理想的解决方案。
利用计算机可以极大地降低处理成本,更重要的是可以几乎没有错误地高效处理所有的事务。
所以做一款基于银行管理方面的软件这是十分必要的,这样做会给银行的管理以及日常事务处理带来很好的效益,使人们能真正体会到这样一个系统的便捷,快速,以及方便~
基于这种理念以开发银行管理系统
2.前言
2.1开发背景
在国民经济不断向前发展的今天,人们手头的资金是越来越多。
这导致人们对理财的要求提高。
在这样的背景下,银行无疑就成为了人们最佳的理财助手。
由于银行有处理大量数据的要求,全部采用人工的方式处理明显不合适:
这不仅要花费很高的成本,而且处理事务的效率和质量都存在很大的问题。
出于这些问题的考虑,采用计算机来处理这类问题就是一个相当理想的解决方案。
利用计算机可以极大地降低处理成本,更重要的是可以几乎没有错误地高效处理所有的事务。
所以做一款基于银行管理方面的软件这是十分必要的,这样做会给银行的管理以及日常事务处理带来很好的效益,使人们能真正体会到这样一个系统的便捷,快速,以及方便~
本课题结合银行管理系统实际情况,经过可行性研究和深入的需求分析,采用最新的开发平台eclipse合作为开发工具而开发出来的银行管理系统。
C/S模式设计本项目。
2.2开发意义
这个项目的意义就在于利用先进的数据库管理技术和通讯技术加上本人对银行管理的独特理解对客户进行合理高效的管理。
2.3项目目标
给银行的管理以及日常事务处理带来很好的效益,使人们能真正体会到这样一个系统的便捷,快速,以及方便~
3.需求分析
系统中要求每个人银行管理者都有一个系统帐号,并每个帐号都有密码,系统的一切操
作(如:
增加存储用户,提高利率等)都由管理者执行,而不是由存诸用户执行,也主
是说存储用户并不直接与系统交互,而是通过管理员与系统交互。
该系统主要有两部份
业务功能,存款与取款。
储户填写的存款单或取款单由业务员输入系统,如果是存款则系统记录存款人姓名,住
址(或电话号码),身份证号码,存款类型,存款日期,到期日期,利率及密码(可选)
等信息,并打印存单给储户;如果是取款而且存款时留有密码,则系统首先核对储户密
码,若密码正确或存款时未留密码,则系统计算得利息并打印出利息清单给储户。
3(1系统的功能性需求
系统为管理者提供主功能界面
系统在启动时要求管理者输入登录帐号与密码
系统要通过管理员执行一系操作(如:
添加用户,修改,查询,删除等)
管理员代用户实现存款,取款,查询等操作
储户的一切信息,存储在数据库表中
3(2系统需求分析规格说明书
实现储户开户登记
办理定期存款帐
办理定期存款手续
办理活期取款帐
办理活期取款手续
实现利息计算
输出明细表
数据备份和数据恢复功能
查看帐户信息
3.3系统ER图
系统主要关系模式:
1(储户(储户姓名,住址,身份证号码)
2(管理员(员工号,姓名)
3(存款(储户姓名,员工号,金额,存款类型,到期日期,存款日期)4(查询(储户姓名,员工号)
5(取款(储户姓名,员工号,金额,取款日期)
3.5系统顶层数据流(DFD)图
打印存单
打印清单
3(6系统0层数据流(DFD)图
3(7第2层DFD图
3(8第3层数据流图储户信息文件
3(9第5层数据流图
3(10数据字典
数据名字:
注册申请表
数据来源:
储户
数据目的:
储户信息
数据组成:
姓名+密码+住址+身份证号码
数据名字:
储户信息表
数据来源:
储户
数据目的:
身份验证
数据组成:
姓名+密码+住址+身份证号码+现有金额
数据名字:
利息清单
数据来源:
系统
数据目的:
储户
数据组成:
利息+姓名+取款时间
数据名字:
存单
数据来源:
存款信息表
数据目的:
储户
数据组成:
姓名+到期时间+存入类型+存入时间+利率+存入金额
数据名字:
取款单
数据来源:
储户
数据目的:
储户信息表
数据组成:
姓名+到期时间+存入类型+存入时间+利率+取款金额+身份证号
数据名字:
存款单
数据来源:
储户
数据目的:
存款信息表
数据组成:
姓名+到期时间+存入类型+存入时间+利率+存入金额+身份证号
4.系统设计
4.1银行管理系统的基本设想
本系统将银行管理系统分为三大基本模块:
管理员模块,员工模块,客户模块
基本的设想如图:
4.1.1基本设想
4.1.2管理员的模块
4.1.3员工模块
4.1.4用户模块
管理员模块可以对员工,客户进行管理,并且是系统中权限最高的。
具有开户(管理员,员工,客户),销户(管理员,员工,客户),查询用户(管理员,员工,客户),修改个人信息,修改密码,查询统计的功能.
员工模块仅次于管理员模块,仅仅只能对客户进行管理,可以开设账户(客户),销户(客户),查询用户(客户),修改个人信息,修改密码的功能.
客户具有存款,取款,查看账单,修改个人信息,修改密码的功能.
4.2银行管理系统的功能模块
L0层图
L1层图
4.2总结构
从上面的设计图来看,该银行管理系统分为三个功能模块,其中账目管理为最大的模块,两个小模块:
查询统计,系统选项;
详细设计
主要说明:
/身份验证/
if(jComboBox1.getSelectedItem().equals("管理员")){
intcount=0;/*定义一个int型变量*/
DbConnectionct=newDbConnection();/*设置连接*/
ResultSetusername=null;
username=ct.executeQuery("select*fromadmindatawhere
username='"
+jTextField1.getText().toString().trim()+"';");/*执行查询操作*/
while(username.next()){count++;}/*遍历结果集看结果集中是否存在有关的记录*/
if(count==0){
jLabel6.setText("管理员名不存在!
");
jLabel6.setForeground(Color.red);
jLabel5.setVisible(true);/*告诉用户出错信息*/
}else{
/*通过用户名验证,进一步验证密码,通过连接数据库来提出密码并与
用户的输入进行比对,以下都是*/
username=ct.executeQuery("select*fromadmindatawhere
username='"
+jTextField1.getText().toString().trim()+"';");/*执行查询操作*/try{
while(username.next()){
if(username.getString(16).equals("锁定")){
jLabel5.setVisible(true);
jLabel6.setText("用户已被锁定!
");
jLabel6.setForeground(Color.red);/*用户被锁定时告诉用户出错的信息*/
}elseif
((username.getString(3).toString().equals(jPasswordField1.getText().t
oString().trim()))&&(username.getString(16).equals("未锁定"))){
/*用户的用户名,密码,账户状态验证成功就显示主窗体*/
jLabel6.setText("");/*将jlabel6清空*/
this.setVisible(false);/*使当前的窗体不可见*/
MainFramef1=newMainFrame();/*定义主窗体的对象*/
f1.setLocation(257,200);/*设置对象的坐标位置*/
f1.flag=jTextField1.getText().toString().trim();
f1.permiss=1;/*设置f1对象所拥有的成员的值,管理员的permiss值为1,员工的为2,客户的为3*/
f1.setLogName(f1.flag+",欢迎你!
");/*调用f1对象所拥有的成员方法,来设置主窗体的欢迎信息*/
f1.setTreeVisiable(f1.permiss);/*根据permiss来判断显示jTree的类型*/
System.out.println("goodmovement!
");/*一条简单的输出语句*/
f1.setVisible(true);/*显示主窗体*/
}else{
jLabel6.setText("密码错误,你只能尝试3次!
");
jLabel6.setForeground(Color.red);
jLabel5.setVisible(true);/*显示出错的信息*/
Logtimes--;/*将变量做自减操作*/
}}
}catch(SQLExceptione){
System.out.println("MyMovementiswrongat:
"+e.getMessage());
}}
try{
ct.closeConnection();}catch(SQLExceptionex){
Logger.getLogger(Login.class.getName()).log(Level.SEVERE,null,
ex);}
}
/*如果尝试失败,就将用户锁定*/
if((Logtimes<=0)&&(jComboBox1.getSelectedItem().equals("管理员"))){
DbConnectionlock=newDbConnection();/*定义DbConnection对象*/
lock.executeUpdate("updateadmindatasetlocked='锁定'whereusername='"+jTextField1.getText().trim()+"'");/*执行更新操作*/
jLabel6.setText("您的账户已被锁定,无权登陆!
");
jLabel6.setForeground(Color.red);
jLabel5.setVisible(true);/*告诉用户错误信息*/
Logtimes=4;/*将用来进行判断登录次数的变量再次设为原值*/try{
lock.closeConnection();
}catch(SQLExceptionex){
Logger.getLogger(Login.class.getName()).log(Level.SEVERE,null,
ex);
}}elseif((Logtimes<=0)&&(jComboBox1.getSelectedItem().equals("
员工"))){
DbConnectionlock=newDbConnection();/*定义DbConnection对象*/
'wherelock.executeUpdate("updateuserdatasetlocked='锁定
userid='"+jTextField1.getText().trim()+"'");/*执行更新操作*/
jLabel6.setText("您的账户已被锁定,无权登陆!
");
jLabel6.setForeground(Color.red);
jLabel5.setVisible(true);/*告诉用户错误信息*/
Logtimes=4;/*将用来进行判断登录次数的变量再次设为原值*/try{
lock.closeConnection();
}catch(SQLExceptionex){
Logger.getLogger(Login.class.getName()).log(Level.SEVERE,null,
ex);}
}elseif((Logtimes<=0)&&(jComboBox1.getSelectedItem().equals("
客户"))){
DbConnectionlock=newDbConnection();/*定义DbConnection对象*/
lock.executeUpdate("updatecustomerdatasetlocked='锁定'wherecustomerid='"+jTextField1.getText().trim()+"'");/*执行更新操作*/
jLabel6.setText("您的账户已被锁定,无权登陆!
");
jLabel6.setForeground(Color.red);
jLabel5.setVisible(true);/*告诉用户错误信息*/
Logtimes=4;/*将用来进行判断登录次数的变量再次设为原值*/
5.2操作主界面的设计
效果图:
5.2操作主界面
主要说明:
这个是用户登陆以后所见到的的第一个界面,也是用户基本的操纵界面,所以这个页面是很重要的一个页面,我采用jTree判断用户的动作,添加相应的监听器来监听事件,给出主要代码。
/*****************根据权限的不同设置jtree的可见性****************/
publicvoidsetTreeVisiable(intpermiss){
inta=permiss;
if(a==1){
jTree3.setVisible(false);
jTree2.setVisible(false);
jTree1.setVisible(true);
}elseif(a==2){
jTree3.setVisible(false);
jTree1.setVisible(false);
jTree2.setVisible(true);
}else{
jTree2.setVisible(false);
jTree1.setVisible(false);
jTree3.setVisible(true);
}}
/*设置欢迎的信息*/
publicvoidsetLogName(Stringflag){
jLabel6.setText(flag);
jLabel6.setForeground(Color.red);
}
publicvoidgetTime(){
Calendarc=Calendar.getInstance();/*定义一个calendar对象*/
year=c.get(Calendar.YEAR);/*获取年份*/
month=c.get(Calendar.MONTH)+1;/*获取月份*/
day=c.get(Calendar.DAY_OF_MONTH);/*获取一个月里的第几天*/
}
jTree1.addTreeSelectionListener(newjavax.swing.event.TreeSelectionListener(){
publicvoidvalueChanged(javax.swing.event.TreeSelectionEvent
accident){
jTreeValueChanged1(accident);}});/*为jtree1增加事件监听器*/
jTree2.addTreeSelectionListener(new
javax.swing.event.TreeSelectionListener(){publicvoidvalueChanged(TreeSelectionEventtr){
jTreeValueChanged2(tr);
}});/*为jtree2增加事件监听器*/
jTree3.addTreeSelectionListener(new
javax.swing.event.TreeSelectionListener(){publicvoidvalueChanged(TreeSelectionEventtr){
jTreeValueChanged3(tr);
}});/*为jtree3增加事件监听器*/
5.3功能设计
5.3.1开户窗口的实现
效果图:
5.3.1开户窗口
主要说明:
此窗口主要为开户的窗口,添加相应的用户,主要设计数据库的操作是插入操作,主要问题就是数据库字符串的拼写,采用swing+awt组件来开发的基本窗口。
/**********************仅以客户的模块作为参考******************/if(iscustomer.isSelected()){
DbConnectionsubmitdata=newDbConnection();
intcount=0;
intacount=0;
inta=0;
intb=0;
intc=0;
intd=0;
/*以下代码为执行查询操作*/
ResultSetquery=submitdata.executeQuery("select*fromcustomerdata
wherecustomerid='"+setname.getText().trim()+"'");
ResultSetcare=submitdata.executeQuery("select*fromuserdatawhereuserid='"+setname.getText().trim()+"'");
ResultSetwatch=submitdata.executeQuery("select*fromadmindatawhereusername='"+setname.getText().trim()+"'");
ResultSetaware=submitdata.executeQuery("select*fromcustomerdatawherename='"+petname.getText().trim()+"'");
ResultSetinfo=submitdata.executeQuery("select*fromadmindatawherename='"+petname.getText().trim()+"'");
ResultSetsek=submitdata.executeQuery("select*fromuserdatawherename='"+petname.getText().trim()+"'");
try{
/*以下代码为遍历结果集*/
while(query.next()){count++;}
while(aware.next()){acount++;}
while(care.next()){a++;}
while(watch.next()){b++;}
while(info.n