BAM银行账户管理系统(java类)

合集下载

作业java

作业java

修改过的Account 对象.这个方法需要验证账户是否是信用账户
练习7
☻ 练习 Bank.java
¾ 用户开户:需要的参数:id, 密码,密码确认,姓名,身份证号码,账户类
型,账户余额,返回新创建的Account 对象 ¾ 账户类型是一个整数,为0 的时候表示储蓄账户,为1 的时候表示信 用账户,为2的时候表示可贷款的储蓄账户,为3的时候表示可贷款 的信用账户
对象 9 还贷款payAccountLoan:参数id,还款额,返回修改过的Account 对 象 9 统计所有账户贷款的总数getTotalLoan
9 统计所有信用账户透支额度总数getTotalCeiling 9 设置透支额度setAccountCeiling:参数:id,新的额度ceiling,返回
练习6
☻ 练习
9 接口Loanable中的方法: ¾ requestLoan:贷款 ¾ payLoan:还贷 ¾ getLoan:获取用户贷款总额
练习7
☻ 练习 Bank.java
为Bank 类添加以下方法, 9 贷款requestAccoutnLoan:参数id,贷款额,返回修改过的Account
(提示:抽象方法、抽象类、final)
练习6
☻ 练习
为SavingAccount 和CreditAccount 各自添加一个子类 9 LoanSavingAccount 类:用户可以贷款,不可以透支 9 LoanCreditAccount 类:用户可以贷款,可以透支 9 说明:贷款和透支是不一样的,透支指的是账户余额小于0,而贷
Copy型,返回新创建的Account 对象 ¾ 用户登录:参数:id、密码,返回Account 对象 ¾ 用户存款:参数:id、存款数额,返回修改过的Account 对 象

原创java银行账目管理系统

原创java银行账目管理系统

原创Java银行账目管理系统简介Java银行账目管理系统是一个用来管理银行账目的应用程序。

它可以帮助银行员工有效地管理客户的账户信息、处理交易和生成报表等任务。

通过该系统,银行工作人员可以更高效地管理和维护客户账目,提高工作效率和准确性。

功能特点1. 客户管理•添加客户:银行工作人员可以通过系统添加新客户的个人信息,如姓名、身份证号码、联系电话等。

•修改客户信息:在客户信息发生变化时,银行工作人员可以通过系统修改客户的个人信息,确保信息的准确性。

•删除客户:在客户不再是该银行的客户时,银行工作人员可以通过系统将客户从数据库中删除。

2. 账户管理•开户:银行工作人员可以通过系统为客户开设银行账户,包括储蓄账户和支票账户。

•销户:在客户不再需要银行账户时,银行工作人员可以通过系统将账户销户。

3. 交易管理•存款:客户可以通过系统进行存款操作,将现金存入其银行账户。

•取款:客户可以通过系统进行取款操作,从其银行账户中取出现金。

•转账:客户可以通过系统进行转账操作,将自己的资金转移到其他账户。

•查询余额:客户可以通过系统查询自己银行账户的余额信息。

4. 报表生成•客户报表:系统可以生成包含客户姓名、账户余额等信息的客户报表。

•交易报表:系统可以生成包含交易日期、交易类型、金额等信息的交易报表。

系统架构Java银行账目管理系统采用三层架构,分为表示层、业务逻辑层和数据访问层。

1. 表示层表示层负责用户界面的展示,在本系统中,使用Java Swing来实现用户界面。

用户可以通过面板或对话框的形式与系统进行交互,进行各项操作。

2. 业务逻辑层业务逻辑层是系统的核心部分,用于处理用户的请求、进行业务逻辑的计算和判断。

在本系统中,业务逻辑层负责管理账户、处理交易并生成报表等功能。

3. 数据访问层数据访问层用于与数据库进行交互,负责读取和写入数据库中的数据。

在本系统中,使用Java JDBC技术来实现数据访问层,连接数据库并执行SQL语句。

银行帐户管理系统-Java课程设计

银行帐户管理系统-Java课程设计

银行帐户管理系统 - Java课程设计一、需求分析1.1 项目背景随着现代经济的发展,银行业作为金融体系的重要组成部分,其业务也日渐多元化,保障着人们的生活和经济发展。

在这样的大背景下,为了提高银行业务的效率和用户体验,需要开发一个基于Java的银行帐户管理系统。

1.2 功能要求银行帐户管理系统需要实现的功能包括:用户注册、登录、修改密码、查看帐户信息、存款、取款、转账等。

此外,还需要实现管理员的相关操作,如:添加、删除、修改用户信息,查询用户信息等。

1.3 技术选型本系统采用Java作为主要开发语言,后端采用Spring Boot框架,前端采用Bootstrap框架进行开发。

数据库采用MySQL存储。

二、设计方案2.1 数据库设计本系统的数据库包括两张表:用户表和账户表。

其中,用户表主要存储用户的基本信息,包括用户名、密码、手机号等;账户表主要存储账户的信息,包括账户号、账户名、余额等。

2.2 功能实现本系统的主要功能实现如下:2.2.1 用户注册用户可以通过填写基本信息、手机号码等注册银行帐户。

2.2.2 用户登录已注册用户可以通过输入用户名和密码进行登录。

2.2.2 修改密码已登录用户可以通过输入旧密码和新密码来修改密码。

2.2.3 查看帐户信息已登录用户可以查看自己的帐户信息,包括账户号、账户名、余额等。

2.2.4 存款操作已登录用户可以进行存款操作,输入存款金额后更新账户余额。

2.2.5 取款操作已登录用户可以进行取款操作,输入取款金额后更新账户余额。

2.2.6 转账操作已登录用户可以进行转账操作,输入对方账户号和转账金额后更新双方账户余额。

2.2.7 管理员操作管理员可以进行添加、删除、修改用户信息等操作。

三、系统架构银行帐户管理系统的系统架构如下图所示:Figure 1. 银行帐户管理系统架构图主要包括:客户端、服务器端、数据库。

客户端:提供基本的用户操作界面,用户可以通过客户端进行登录、注册等操作。

bam银行账户管理系统(java类)

bam银行账户管理系统(java类)

BAM银行账户管理系统(ATM管理系统)本系统采用JAVA语言并在eclipse环境下编写测试完成,涉及类的概念,以及面向对象的几大特性(继承,封装,多态,抽象),也有异常处理机制,基本可以满足大多数BAM 系统的相关实现,且代码标注大量注释,读者可以很轻松地理解相关逻辑,大家可以开心参考。

系统简介:1、JAVA类的面相对象的应用,拥有异常处理机制,不会因为输入错误而导致程序崩溃2、主要有5个类,即①Account(账户类)②SaveAccount(储蓄账户类):不能透支③CreditAccount(信用账户类):可以透支④Bank(银行类)⑤ATM(ATM类)类的具体属性级行为见代码3、各个类之间的相互关系,涉及继承、封装、多态、抽象,在多态中又涉及重载和重写,请读者注意相关联系(关注注释)4、可以实现数据保存功能,数据将保存在文件中(即当你注册了一个账户,下次再登陆系统时,可以实现与上次最后的操作相衔接)5、账户号自动生成,比较符合现实6、主要功能有:1.开户2.查询账户余额3.存款4.取款5.转账(一个账户到另一个账户)等……7、运行时界面简示1.初始界面(账户登录)2.账户登录后界面注意事项:1、本系统采用的编程环境是,jer7。

所以,运行代码需要保持电脑上所装的JDK为以上版本,如有报错,只需换个高一点的版本即可。

注意:第一次装JDK,要配置环境变量(请查阅相关资料,比较简单)2、本系统代码涉及到包,所以如果报名不一致就会报错,解决方法:修改一下包名即可3、建议把各个类写在同一个包下面,且每一个类单独写一个java文件,如下图:4、在运行程序前,需要在项目下面新建一个(用来保存数据)文件(如上图),并在其中写入至少一个账户信息,(如下图,其中每项代表的意思,请读者参照代码的注释),否则在初始化的时候会因为找不到账户信息,从而产生异常。

系统源码:Account类package .qx;蓄账户 2.信用账户*/public abstract class Account {x;/*** 储蓄账户类*/public class SavingAccount extends Account {x;/*** 信用账户类,增加一个信用额度ceiling属性*/public class CreditAccount extends Account{private int ceiling;x;import * Bank类* 编写Bank类,属性:1.当前所有的账户对象的集合,存放在数组中2.当前账户数量方法:1.用户开户,需要的参数:id,密码,密码确认,姓名,身份证,账户类型,返回新创建的Account对象的账号,提示:用(s2) 可以比较s1,s2两个字符串的值是否相等.账户类型是一个整数,为0的时候表示储蓄账户,为1的时候表示信用账户2.用户登录,参数:id,密码返回登录账户的账号3.用户存款,参数:id,存款数额,返回void4.用户取款,参数:id,取款数额,返回void5.查询余额,参数:id,返回该账户的余额 double用户会通过调用Bank对象以上的方法来操作自己的账户,请分析各个方法需要的参数 */public class Bank {private Account[] accounts = new Account[20];private int number;quals("0")){Account savingAcc = new SavingAccount(str[0]),str[1].toString(), str[2].toString(),str[3].toString(),(str[4]),(str[5]));accounts[number] = savingAcc;}else{Account creditAcc = new CreditAccount(str[0]),str[1].toString(), str[2].toString(),str[3].toString(),(str[4]),(str[5]),5000);accounts[number] = creditAcc;}number ++;id++;s = ();}} catch (NumberFormatException e) {d+",");(accounts[i].getPassword()+",");(accounts[i].getName()+",");(accounts[i].getPersonId()+",");(accounts[i].getAccountType()+",");(accounts[i].getBalance()));();}else{break;}}();etId() && (accounts[i].getPassword())){account = accounts[i];break;}}else{break;}}return account;}/*** 转账验证(方法的重载)*/public Account verifyAccount(long id){Account account = null;for(int i = 0;i < ;i++){ etId()){account = accounts[i];break;}}else{break;}}return account;}/*** 转账*/public void transferAccount(Account account1, Account account2, double money){ (money);(money);}/*** 存款*/public void deposit(Account account, double money){(money);}/*** 取款*/public void withdraw(Account account, double money){ (money);}}ATM类package .qx;import * ATM类,提供用户界面操作*/public class ATM {已有账户登录");" *2.没有账户,开户");" *3.退出");Scanner scanner = new Scanner;"请选择:");try {int choice1 = ();switch(choice1){case 1:scanner = new Scanner;"请输入银行卡号:");long id = ();scanner = new Scanner;"请输入银行密码:");String password = ();Account account = (id, password);if(account != null){ 询账户余额");" *2.存款");" *3.取款");" *4.转账");" *5.退卡");scanner = new Scanner;"请选择:");try {int choice2 = ();switch(choice2){case 1:"您账户的当前余额为:"+());break;case 2:scanner = new Scanner;"请输入您的存款金额:");double money1 = ();(account, money1);break;case 3:scanner = new Scanner;"请输入您的取款金额:");double money2 = ();(account, money2);break;case 4:scanner = new Scanner;"请输入您要转入账户的卡号:");long id2 = ();Account account2 = (id2);if(account2 != null){scanner = new Scanner;"请输入您要转入账户的金额:");double money = ();if(money <={(account, account2, money);"转账成功!!!");}else{"抱歉,您账户没有足够的金额!请查看后重新选择输入!");}}else{"抱歉,没有找到您要转入的账户信息!请核对后重新选择输入!");}break;case 5:secondFlag = false;break;default:"没有该选项,请重新选择!");break;}} catch (Exception e) {"选择输入不合法,请重新选择!");}}}else{"没有此账户,请先开户!");}break;case 2://账号id由银行自动提供(从1001递增)scanner = new Scanner;"请输入账户密码:");String passwd1 = ();scanner = new Scanner;"请再输入账户密码:");String passwd2 = ();scanner = new Scanner;"请输入户主姓名:");String name = ();scanner = new Scanner;"请输入户主身份证:");String personId = ();scanner = new Scanner;"请输入账户类型(0储蓄,1信用):");int type = ();(passwd1, passwd2, name, personId, type);break;case 3:();firstFlag = false;break;default :"没有该选项,请重新选择!");break;}} catch (Exception e) {"选择输入不合法,请重新选择!");}}"谢谢使用!");}}。

bam银行账户管理系统java类.docx

bam银行账户管理系统java类.docx

BAM 银行账户管理系统( ATM 管理系统)本系采用JAVA 言并在eclipse 境下写完成,涉及的概念,以及面向象的几大特性(承,封装,多,抽象),也有异常理机制,基本可以足大多数BAM 系的相关,且代注大量注,者可以很松地理解相关,大家可以开心参考。

系统简介:1、JAVA 的面相象的用,有异常理机制,不会因入而致程序崩2、主要有 5 个,即① Account ()②S aveAccount (蓄):不能透支③CreditAccount (信用):可以透支④Bank (行)⑤ATM ( ATM )的具体属性行代3、各个之的相互关系,涉及承、封装、多、抽象,在多中又涉及重和重写,者注意相关系(关注注)4、可以数据保存功能,数据将保存在文件中(即当你注册了一个,下次再登系,可以与上次最后的操作相接)5、号自生成,比符合6、主要功能有: 1.开2.余3.存款4.取款5.(一个到另一个)等⋯⋯7、运行界面示1.初始界面(登)2.账户登录后界面注意事项:1、本系统采用的编程环境是JDK1.7,jer7 。

所以,运行代码需要保持电脑上所装的JDK 为 1.7 以上版本,如有报错,只需换个高一点的版本即可。

注意:第一次装JDK,要配置环境变量(请查阅相关资料,比较简单)2、本系统代码涉及到包,所以如果报名不一致就会报错,解决方法:修改一下包名即可3、建议把各个类写在同一个包下面,且每一个类单独写一个java 文件,如下图:4、在运行程序前,需要在项目下面新建一个account.txt (用来保存数据)文件(如上图),并在其中写入至少一个账户信息,(如下图,其中每项代表的意思,请读者参照代码的注释),否则在初始化的时候会因为找不到账户信息,从而产生异常。

.系统源码:Account 类package .qx;// 包名/*** 账户类 : 包含两种账户类型-->1. 储蓄账户 2.信用账户*/public abstract class Account {//属性protected long id;protected String password;protected String name;protected String personId;protected int accountType;protected double balance;//构造方法public Account(){super();}public Account( long id, String password, String name, String personId, int accoutType, double balance) {super();this .id = id;this .password = password;this .name = name;this .personId = personId;this .accountType = accountType;this .balance = balance;}//getXxx,setXxx方法public long getId() {return id;}public void setId( long id) {this .id = id;}public String getPassword() {return password;}public void setPassword(String password) { this .password = password;}public String getName() {return name;}public void setName(String name) {this .name = name;}public String getPersonId() {return personId;}public void setPersonId(String personId) { this .personId = personId;}public int getAccountType() {return accountType;}public void setAccountType( int accountType) { this .accountType = accountType;}public double getBalance() {return balance;}public void setBalance(double balance) { this .balance = balance;}/***存款*/public void deposit( double money){balance += money;}/*** 取款(取款方式由账户类型决定,所以设为抽象方法,相应的Account 类应设为抽象类)*/public abstract void withdraw( double money);}SavingAccount 类package .qx;/***储蓄账户类*/public class SavingAccount extends Account {//构造函数public SavingAccount() {super();}public SavingAccount( long id, String password, String name,String personId, int accountType, double balance) {super(id, password, name, personId, accountType, balance);}// 对父类的 withdraw()实现public void withdraw( double money){if (balance < money){System.out .println(" 对不起,账户余额不足!");}else{balance -= money;}}}CresitAccount 类package .qx;/*** 信用账户类,增加一个信用额度ceiling 属性*/public class CreditAccount extends Account{private int ceiling;// 构造函数public CreditAccount(){super();}public CreditAccount( long id, String password, String name,String personId, int accountType, double balance, intceiling){ super(id, password, name, personId, accountType, balance);this .ceiling = ceiling;}//getXxx,setXxx方法public int getCeiling() {return ceiling;}public void setCeiling( int ceiling) {this .ceiling = ceiling;}// 实现父类的 withdraw()public void withdraw( double money){if ((balance + ceiling) < money){System.out .println(" 对不起,已超出您的信用额度!");}else{balance -= money;}}}Bank 类package .qx;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;import java.util.Properties;/***Bank 类*编写 Bank 类, 属性 :1.当前所有的账户对象的集合,存放在数组中2.当前账户数量方法 :1.用户开户 ,需要的参数 :id, 密码 ,密码确认 ,姓名 ,身份证 ,账户类型 ,返回新创建的Account 对象的账号 ,提示 : 用 s1.equals(s2) 可以比较s1,s2 两个字符串的值是否相等.账户类型是一个整数 ,为 0 的时候表示储蓄账户 ,为 1 的时候表示信用账户2.用户登录 ,参数 :id, 密码返回登录账户的账号3.用户存款 ,参数 :id, 存款数额 ,返回 void4.用户取款 ,参数 :id, 取款数额 ,返回 void5.查询余额 ,参数 :id ,返回该账户的余额double用户会通过调用Bank 对象以上的方法来操作自己的账户,请分析各个方法需要的参数*/public class Bank {private Account[] accounts = new Account[20];private int number;//账户数目private int id = 1001;//确定银行账号从1001 开始生成,即第一个账户的账号是1001//构造函数public Bank(){accounts=new Account[20];//以后不足时扩容。

银行帐户管理系统-Java课程设计

银行帐户管理系统-Java课程设计

课程设计课程设计名称:java课程设计专业班级:计科09级05班学生姓名:刘品训学号:2指导教师:王社伟课程设计时间:2011.12.12-2011.12.23计算机科学与技术专业课程设计任务书银行帐户管理系统一、需求分析银行账户管理系统中,主要有以下功能:1.添加账户:主要增加账户的账号,姓名,以及所存的金额。

2.删除账户:根据输入的账号,删除该账户的信息。

3.修改账户信息:根据输入的账号,修改账户的信息。

4.查询账户信息:根据输入的账号,查询并显示出该账户的相关信息。

5.浏览:浏览数据库中的各个账户的信息。

6.存款:输入账号,并向该账号存钱,同时并记录下来。

7.贷款:输入账号和贷款单号向该账户贷款,并记录下来。

8.还钱:输入账号和贷款单号付贷款钱,同时并显示还有多少贷款未付。

二、概要设计课程设计模块图:系统流程图:三、运行环境、开发语言1:Windows xp,DOS,Microsoft SQL Server 2005;2:Java,SQL Server。

四、详细设计1 程序清单表1 程序清单2 主要代码2.1建立Bank公共类,并连接数据库import java.sql.*;import java.util.*;import javax.swing.*;public class Bank{public static String driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver"; //加载JDBC驱动public static String dbURL = "jdbc:sqlserver://localhost:1433; DatabaseName=银行管理系统"; //连接服务器和数据库public static String userName = "liu"; //默认用户名public static String userPwd = "518888k"; //密码public static Connection dbconn;static boolean m = true;static int N;private static Scanner scanner = new Scanner(System.in);}2.2主函数银行账户管理系统主界面public static void main(String[] srg) throws Exception{while(m){System.out.println("---------------银行账户管理系统---------------");System.out.println(" 1:添加账户2:删除账户");System.out.println(" 3:修改账户信息4:查询账户信息");System.out.println(" 5:浏览6:存款");System.out.println(" 7:贷款8:还钱");System.out.println(" 9:退出");System.out.println("-------------请输入您要进行的服务---------");N=scanner.nextInt();switch(N){case 1:insert();break;case 2:del();break;case 3:update();break;case 4:serch();break;case 5:liulan();break;case 6:cunkuan();break;case 7:daikuan();break;case 8:huanqian();break;case 9: m =false;break;default:System.out.println("请在1--9之间选择");}}}2.3添加账户功能public static void insert() throws Exception{try{Class.forName(driverName);//载入驱动dbconn = DriverManager.getConnection(dbURL,userName,userPwd);//连接数据库String num=null,name=null;int jine=0;System.out.println("请输入您要添加的数据");System.out.print("账号");num = scanner.next();System.out.print("姓名");name = scanner.next();System.out.print("金额");jine= scanner.nextInt();String sql = "insert into 账户信息(账号,姓名,金额) values('"+ num +"','"+ name +"','"+ jine +"')";//向表中插入信息System.out.println("信息已插入!");Statement stmt = dbconn.createStatement();stmt.executeUpdate(sql);stmt.close();}catch(Exception e){}m = true;}2.4删除账户public static void del()throws Exception{try{String num=null,name=null ;int jine=0;String a = null;Class.forName(driverName);//载入驱动dbconn = DriverManager.getConnection(dbURL,userName,userPwd);//连接数据库System.out.println("---删除账户---");String sql1 = "select * from 账户信息";System.out.print("请输入您要删的账号");Statement stmt1 = dbconn.createStatement();ResultSet rs = stmt1.executeQuery(sql1);num = scanner.next();int flag=0;while(!num.equals("0")){while(rs.next()){a = null;a = rs.getString("账号");if(num.equals(a)){flag=1;break;}}if(flag==1){String sql2 = "delete 账户信息where 账号= '"+ num + "'";Statement stmt2 = dbconn.createStatement();stmt2.executeUpdate(sql2);stmt2.close();System.out.println("数据已删除!");break;}else{System.out.println("您输入的账号错误或者不存在,请重新输入:");num = scanner.next();rs = stmt1.executeQuery(sql1);}}rs.close();stmt1.close();}catch (Exception e){}m= true;}2.5修改账户信息public static void update() throws Exception{try{String num=null,name=null ;int jine=0;String a = null;Class.forName(driverName);//载入驱动dbconn = DriverManager.getConnection(dbURL,userName,userPwd);//连接数据库System.out.print("请输入您要修改账号:");String sql1 = "select * from 账户信息";Statement stmt1 = dbconn.createStatement();ResultSet rs = stmt1.executeQuery(sql1);num = scanner.next();int flag=0;while(!num.equals("0")){while(rs.next()){a = null;a = rs.getString("账号");if( num.equals(a)){System.out.print("请输入您更改的姓名:");name = scanner.next();System.out.print("请输入您更改的金额");jine = scanner.nextInt();flag=1;break;}}if(flag==1)break;else{System.out.println("您输入的账号错误或者不存在,请重新输入:");num = scanner.next();rs = stmt1.executeQuery(sql1);}}rs.close();stmt1.close();String sql2 = "update 账户信息set 姓名= '"+ name +"' where 账号= '"+ num +"'update 账户信息set 金额= '"+ jine +"' where 账号= '"+ num +"'";Statement stmt = dbconn.createStatement();System.out.println("数据已更改");stmt.executeUpdate(sql2);stmt.close();}catch (Exception e){}m = true;}2.6查询账户信息public static void serch()throws Exception{try{String num= null,name = null ;int jine=0;String a=null;Class.forName(driverName);//载入驱动dbconn = DriverManager.getConnection(dbURL,userName,userPwd);//连接数据库System.out.println("---按账号查询---");System.out.print("请输入账号");String sql1 = "select * from 账户信息";Statement stmt1 = dbconn.createStatement();ResultSet rs1 = stmt1.executeQuery(sql1);num = scanner.next();int flag=0;while(!num.equals("0")){while(rs1.next()){a = null;a = rs1.getString("账号");if(num.equals(a)){flag = 1;break;}}if(flag == 1){name = rs1.getString("姓名");jine = rs1.getInt("金额");break;}else{System.out.println("您输入的账号错误或者不存在,请重新输入:");num = scanner.next();rs1 = stmt1.executeQuery(sql1);}}System.out.println("账号姓名金额");System.out.printf("%s %s %s %n",num,name,jine);m = true;}catch (Exception e){}}2.7浏览全部账户信息public static void liulan()throws Exception{try{Class.forName(driverName);//载入驱动dbconn = DriverManager.getConnection(dbURL,userName,userPwd);//连接数据库String sql = "select * from 账户信息";Statement stmt = dbconn.createStatement();ResultSet rs = stmt.executeQuery(sql);System.out.println("账号姓名金额");while(rs.next()){String num = rs.getString("账号");String name = rs.getString("姓名");int jine = rs.getInt("金额");System.out.printf("%s %s %s %n",num,name,jine);}rs.close();stmt.close();}catch (Exception e){}m = true;}2.8存款public static void cunkuan()throws Exception{try{Class.forName(driverName);//载入驱动dbconn = DriverManager.getConnection(dbURL,userName,userPwd);//连接数据库System.out.print("请输入账号");String num=scanner.next();String Cundate=null;String sql1 = "select * from 账户信息";Statement stmt = dbconn.createStatement();ResultSet rs = stmt.executeQuery(sql1);int flag=0;int jine=0,jine1=0,jine2=0;while(!num.equals("0")){while(rs.next()){String a = null;a = rs.getString("账号");if( num.equals(a)){flag=1;break;}}if(flag==1){System.out.print("请输入要存入的金额");jine1 = scanner.nextInt();System.out.print("请输入存款的日期");Cundate =scanner.next();String sql2 = "insert into 存款(账号,存钱金额,存钱日期) values('"+ num +"','"+ jine1 +"','"+ Cundate +"')";jine2=rs.getInt("金额");jine=jine1+jine2;String sql3 = "update 账户信息set 金额= '"+ jine +"' where 账号= '"+ num +"'";System.out.println("存款成功");stmt.executeUpdate(sql2);stmt.executeUpdate(sql3);break;}else{System.out.println("您输入的账号错误或者不存在,请重新输入:");num = scanner.next();rs = stmt.executeQuery(sql1);}}rs.close();stmt.close();}catch (Exception e){}m = true;}2.9贷款public static void daikuan()throws Exception{try{Class.forName(driverName);//载入驱动dbconn = DriverManager.getConnection(dbURL,userName,userPwd);//连接数据库String sql1 = "select * from 账户信息";Statement stmt1 = dbconn.createStatement();ResultSet rs = stmt1.executeQuery(sql1);String num=null,dainum=null,daidate=null;int daijine=0;System.out.println("请输入您的账号");System.out.print("账号");num = scanner.next();int flag=0;while(!num.equals("0")){while(rs.next()){String a = null;a = rs.getString("账号");if(num.equals(a)){flag = 1;break;}}if(flag == 1){System.out.print("请输入您的贷款单号");dainum = scanner.next();System.out.print("请输入您要贷的金额");daijine= scanner.nextInt();System.out.print("请输入您贷款的日期");daidate=scanner.next();String sql = "insert into 贷款(账号,贷款单号,贷款金额,贷款日期) values('"+ num +"','"+ dainum +"','"+ daijine +"','"+ daidate +"')";System.out.println("贷款成功!");Statement stmt = dbconn.createStatement();stmt.executeUpdate(sql);stmt.close();break;}else{System.out.println("您输入的账号错误或者不存在,请重新输入:");num = scanner.next();rs = stmt1.executeQuery(sql1);}}}catch(Exception e){}m = true;}2.10还钱public static void huanqian()throws Exception{try{Class.forName(driverName);//载入驱动dbconn = DriverManager.getConnection(dbURL,userName,userPwd);//连接数据库String sql1 = "select * from 账户信息";String sql2 = "select * from 贷款";//String sql3 = "select * from 贷款";Statement stmt1 = dbconn.createStatement();Statement stmt2 = dbconn.createStatement();ResultSet rs1 = stmt1.executeQuery(sql1);ResultSet rs2 = stmt2.executeQuery(sql2);//ResultSet rs3 = stmt.executeQuery(sql3);String num=null,dainum=null,huandate=null;int huanjine=0;System.out.println("请输入您的账号");System.out.print("账号");num = scanner.next();int flag=0;int b=0;while(!num.equals("0")){while(rs1.next()){String a = null;a = rs1.getString("账号");if(num.equals(a)){flag = 1;break;}}if(flag == 1){System.out.print("请输入您的贷款单号");dainum = scanner.next();while(!dainum.equals("0")){//String c= null;//c = rs2.getString("贷款单号");//int d=0;//d=rs2.getInt("贷款金额");//int g=0;//g=rs1.getInt("金额");while(rs2.next()){//System.out.print("aaa");String c= null;c = rs2.getString("贷款单号");//System.out.printf("%s %n",c);if(dainum.equals(c)){b = 1;break;}}if(b == 1){System.out.print("请输入您要还的金额");huanjine= scanner.nextInt();System.out.print("请输入您还钱的日期");huandate= scanner.next();String sql4 = "insert into 还钱(账号,贷款单号,还钱金额,还钱日期) values('"+ num +"','"+ dainum +"','"+ huanjine +"','"+ huandate +"')";System.out.println("还钱成功!");int d=0;d=rs2.getInt("贷款金额");int e=0;e=d-huanjine;String sql6 = "update 贷款set 贷款金额= '"+ e +"' where 账号= '"+ num +"'";stmt2.executeUpdate(sql6);if(e>=0){System.out.println("您还有" + e+ "未付");}else{ int f=0;f=0-e;System.out.println("您多支付了"+f+"多支付的金额已存入您的账户");int g=0;g=rs1.getInt("金额");int h=0;h=f+g;String sql5 = "update 账户信息set 金额= '"+ h +"' where 账号= '"+ num +"'";stmt1.executeUpdate(sql5);}stmt2.executeUpdate(sql4);break;}else{System.out.println("您输入的贷款单号错误或者不存在,请重新输入:");dainum = scanner.next();rs2 = stmt2.executeQuery(sql2);}}break;}else{System.out.println("您输入的账号错误或者不存在,请重新输入:");num = scanner.next();rs1 = stmt1.executeQuery(sql1);}}}catch(Exception e){}m = true;}五、调试与分析问题1:遇到的第一个问题是如何用java连接数据库,根据查资料以及问同学才学会;问题2:是在写还钱这一模块,用了4重循环,无法同步实现账号和贷款单号的同步判定,经过自己仔细的调试,才发现问题,用不同的表进行逐步循环才解决问题;问题3:在贷款和还钱这一模块,在还钱的时候,忘记设置贷款表内的数据与还钱要同步。

java银行账户管理系统实训报告

java银行账户管理系统实训报告

java银行账户管理系统实训报告Java银行账户管理系统实训报告一、项目背景•介绍实训项目的背景和目的二、需求分析•列举项目的功能需求和非功能需求三、系统设计•概述系统的整体结构和模块划分•详细描述每个模块的功能和交互方式四、技术选型•介绍选择Java作为开发语言的原因•列举使用的开发框架和工具五、开发过程•列出项目的开发流程和阶段•描述每个阶段的工作内容和成果六、测试与优化•介绍项目的测试策略和方法•列出进行的各种测试类型和结果七、部署与维护•阐述项目的部署过程和环境要求•说明后续维护的注意事项和计划八、总结与展望•对项目的整体评价和反思•展望未来进一步的改进和发展方向以上是针对”Java银行账户管理系统实训报告”的简要报告框架,根据实际情况进行填充和扩展,确保报告全面准确地呈现项目的背景、需求、设计、开发、测试、部署和维护等关键信息。

一、项目背景本报告旨在对实训项目中开发的Java银行账户管理系统进行全面总结与归纳。

该系统的目的是为了提供一个方便快捷、安全可靠的方式来管理银行账户,并实现一系列的功能和需求。

二、需求分析功能需求•用户登录:用户可以通过账号和密码登录系统。

•创建账户:用户可以创建新的银行账户。

•查询账户信息:用户可以通过账户名或者账号查询账户的详细信息。

•存款与取款:用户可以对账户进行存款和取款操作。

•转账:用户可以进行账户之间的转账操作。

•修改密码:用户可以修改登录密码。

非功能需求•安全性:系统要求保障用户的账户和个人信息的安全性。

•可靠性:系统需要保证可靠性和稳定性,确保用户的操作不会出现错误或丢失数据。

•用户界面友好性:系统的界面设计需要简洁明了、操作简单易懂。

•性能效能:系统需要具备较高的性能和效能,能够快速响应用户的请求。

三、系统设计整体结构•总体采用三层架构,包括表示层、业务逻辑层和数据访问层。

### 模块划分1.用户管理模块:用于管理用户的登录和权限控制。

2.账户管理模块:包括账户的增删改查等功能。

java课程设计—银行账户管理系统

java课程设计—银行账户管理系统

用户的功能有如下,取款、存款、查询、转账以及退出功能。 static void printMenu() { System.out.println("*****************"); System.out.println("**取款\t1**"); System.out.println("**存款\t2**"); System.out.println("**查询\t3**"); System.out.println("**转账\t4**"); System.out.println("**退出\t0**"); System.out.println("*****************"); }
class DemoCust {
public static void main(String[] args) {
Admin a = new Admin(); while (true) {
System.out.println("*******************"); System.out.println("**管理员\t1**"); System.out.println("**用户\t\t2**");
2.2 需求分析
2.2.1 功能需求
通过银行管理系统一方面加快了客户的服务,提高的服务质量,另一方面减轻了 员工的工作复杂度,提高了工作效益,实现银行帐户管理的系统化、规范化、自动化和
智能化。系统具体实现的目标如下:
(1)键盘操作,快速响应。 (2)对用户输入的数据,系统会进行严格的数据检验,尽量避免了人为的错误。 (3)实现银行开户、取款、存款、查询、转账、修改密码等功能。 (4)系统运行稳定,可靠。 (5)系统应人性化,符合用户操作习惯。 (6)使用控制台进行操作
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

BAM银行账户管理系统(ATM管理系统)本系统采用JAVA语言并在eclipse环境下编写测试完成,涉及类的概念,以及面向对象的几大特性(继承,封装,多态,抽象),也有异常处理机制,基本可以满足大多数BAM系统的相关实现,且代码内标注大量注释,读者可以很轻松地理解相关逻辑,大家可以开心参考。

系统简介:1、JAVA类的面相对象的应用,拥有异常处理机制,不会因为输入错误而导致程序崩溃2、主要有5个类,即①Account(账户类)②SaveAccount(储蓄账户类):不能透支③CreditAccount(信用账户类):可以透支④Bank(银行类)⑤ATM(ATM类)类的具体属性级行为见代码3、各个类之间的相互关系,涉及继承、封装、多态、抽象,在多态中又涉及重载和重写,请读者注意相关联系(关注注释)4、可以实现数据保存功能,数据将保存在文件中(即当你注册了一个账户,下次再登陆系统时,可以实现与上次最后的操作相衔接)5、账户号自动生成,比较符合现实6、主要功能有:1.开户2.查询账户余额3.存款4.取款5.转账(一个账户到另一个账户)等……7、运行时界面简示1.初始界面(账户登录)2.账户登录后界面注意事项:1、本系统采用的编程环境是JDK1.7,jer7。

所以,运行代码需要保持电脑上所装的JDK 为1.7以上版本,如有报错,只需换个高一点的版本即可。

注意:第一次装JDK,要配置环境变量(请查阅相关资料,比较简单)2、本系统代码涉及到包,所以如果报名不一致就会报错,解决方法:修改一下包名即可3、建议把各个类写在同一个包下面,且每一个类单独写一个java文件,如下图:4、在运行程序前,需要在项目下面新建一个account.txt(用来保存数据)文件(如上图),并在其中写入至少一个账户信息,(如下图,其中每项代表的意思,请读者参照代码内的注释),否则在初始化的时候会因为找不到账户信息,从而产生异常。

系统源码:Account类package com.qx;//包名/*** 账户类:包含两种账户类型-->1.储蓄账户 2.信用账户*/public abstract class Account {//属性protected long id;protected String password;protected String name;protected String personId;protected int accountType;protected double balance;//构造方法public Account(){super();}public Account(long id, String password, String name, String personId,int accoutType,double balance) {super();this.id = id;this.password = password; = name;this.personId = personId;this.accountType = accountType;this.balance = balance;}//getXxx,setXxx方法public long getId() {return id;}public void setId(long id) {this.id = id;}public String getPassword() {return password;}public void setPassword(String password) { this.password = password;}public String getName() {return name;}public void setName(String name) { = name;}public String getPersonId() {return personId;}public void setPersonId(String personId) { this.personId = personId;}public int getAccountType() {return accountType;}public void setAccountType(int accountType) { this.accountType = accountType;}public double getBalance() {return balance;}public void setBalance(double balance) { this.balance = balance;}/*** 存款*/public void deposit(double money){balance += money;}/*** 取款(取款方式由账户类型决定,所以设为抽象方法,相应的Account类应设为抽象类)*/public abstract void withdraw(double money);}SavingAccount类package com.qx;/*** 储蓄账户类*/public class SavingAccount extends Account {//构造函数public SavingAccount() {super();}public SavingAccount(long id, String password, String name, String personId,int accountType, double balance) { super(id, password, name, personId, accountType, balance);}//对父类的withdraw()实现public void withdraw(double money){if(balance < money){System.out.println("对不起,账户余额不足!");}else{balance -= money;}}}CresitAccount类package com.qx;/*** 信用账户类,增加一个信用额度ceiling属性*/public class CreditAccount extends Account{private int ceiling;//构造函数public CreditAccount(){super();}public CreditAccount(long id, String password, String name, String personId,int accountType, double balance, int ceiling){super(id, password, name, personId, accountType, balance);this.ceiling = ceiling;}//getXxx,setXxx方法public int getCeiling() {return ceiling;}public void setCeiling(int ceiling) {this.ceiling = ceiling;}//实现父类的withdraw()public void withdraw(double money){if((balance + ceiling) < money){System.out.println("对不起,已超出您的信用额度!");}else{balance -= money;}}}Bank类package com.qx;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;import java.util.Properties;/*** Bank类* 编写Bank类,属性:1.当前所有的账户对象的集合,存放在数组中2.当前账户数量方法:1.用户开户,需要的参数:id,密码,密码确认,姓名,身份证号码,账户类型,返回新创建的Account 对象的账号,提示:用s1.equals(s2) 可以比较s1,s2两个字符串的值是否相等.账户类型是一个整数,为0的时候表示储蓄账户,为1的时候表示信用账户2.用户登录,参数:id,密码返回登录账户的账号3.用户存款,参数:id,存款数额,返回void4.用户取款,参数:id,取款数额,返回void5.查询余额,参数:id,返回该账户的余额double用户会通过调用Bank对象以上的方法来操作自己的账户,请分析各个方法需要的参数*/public class Bank {private Account[] accounts = new Account[20];private int number;//账户数目private int id = 1001;//确定银行账号从1001开始生成,即第一个账户的账号是1001//构造函数public Bank(){accounts=new Account[20];//以后不足时扩容。

number = 0;BufferedReader bufReader = null;Properties props=System.getProperties();String path=props.getProperty("user.dir");try {bufReader=new BufferedReader(new FileReader(new File(path,"account.txt")));String s = bufReader.readLine();while(s != null){String[] str = s.split(",");if(str[4].equals("0")){Account savingAcc = new SavingAccount(Long.parseLong(str[0]),str[1].toString(), str[2].toString(),str[3].toString(),Integer.parseInt(str[4]),Double.parseDouble(str[5]));accounts[number] = savingAcc;}else{Account creditAcc = new CreditAccount(Long.parseLong(str[0]),str[1].toString(), str[2].toString(),str[3].toString(),Integer.parseInt(str[4]),Double.parseDouble(str[5]),5000);accounts[number] = creditAcc;}number ++;id++;s = bufReader.readLine();}} catch (NumberFormatException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}finally{try {if(bufReader != null){bufReader.close();}} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}//getXxx,setXxxpublic Account[] getAccounts() {return accounts;}public void setAccounts(Account[] accounts) {this.accounts = accounts;}public int getNumber() {return number;}public void setNumber(int number) {this.number = number;}public int getId() {return id;}public void setId(int id) {this.id = id;}/*** 开户*/public Account openAccount(String passwd1, String passwd2, String name,String personId, int type){//创建一个新账户Account account = null;//判断两次密码是否一致if(passwd1.equals(passwd2)){//若一致,再判断账户类型(根据type的值)if(type == 1){//可令开始余额为10,信用额度为5000account = new CreditAccount(id, passwd1, name, personId, type, 10, 5000);}else{account = new SavingAccount(id, passwd1, name, personId, type, 10);}//将账户存入账户数组accounts[]中//判断是否超出存储空间if(number >= accounts.length){ //扩容Account[] newAccounts = new Account[accounts.length*2];//copy原来的相关数据System.arraycopy(accounts, 0, newAccounts, 0, accounts.length);//将newAccounts[]赋给accounts[]accounts = newAccounts;accounts[number] = account;}else{accounts[number] = account;}System.out.println("开户成功!!!账户信息见下");System.out.println("您的卡号为:"+id+"\n"+"您的密码为:"+passwd1+"\n"+"您的户名为:"+name+"\n"+"您的身份证号为:"+personId+"\n"+"您的账户类型为:"+type+"\n");account.accountType = type;number++;id++;return account;//此时开户成功}else{System.out.println("对不起!您两次密码输入不匹配,开户失败!!!");return null;//此时开户失败}}/*** 保存数据*/public void saveAccountDate(){BufferedWriter bufWriter=null;try {Properties props=System.getProperties();String path=props.getProperty("user.dir");bufWriter=new BufferedWriter(new FileWriter(new File(path,"account.txt")));for(int i = 0;i < accounts.length;i++){ //若存在账户if(accounts[i] != null){//写入账户信息到account.txtbufWriter.write(accounts[i].id+",");bufWriter.write(accounts[i].getPassword()+",");bufWriter.write(accounts[i].getName()+",");bufWriter.write(accounts[i].getPersonId()+",");bufWriter.write(accounts[i].getAccountType()+",");bufWriter.write(Double.toString(accounts[i].getBalance()));bufWriter.newLine();}else{break;}}bufWriter.flush();//清空缓存中的内容} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}finally{try {if(bufWriter!=null){bufWriter.close();}} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}/*** 登录验证*/public Account verifyAccount(long id, String password){Account account = null;for(int i = 0;i < accounts.length;i++){ //若存在账户if(accounts[i] != null){ //验证id号和passwordif(id == accounts[i].getId() && password.equals(accounts[i].getPassword())){account = accounts[i];break;}}else{break;}}return account;}/*** 转账验证(方法的重载)*/public Account verifyAccount(long id){Account account = null;for(int i = 0;i < accounts.length;i++){ //若存在账户if(accounts[i] != null){ //验证id号和passwordif(id == accounts[i].getId()){account = accounts[i];break;}}else{break;}}return account;}/*** 转账*/public void transferAccount(Account account1, Account account2, double money){ account1.withdraw(money);account2.deposit(money);}/*** 存款*/public void deposit(Account account, double money){account.deposit(money);}/*** 取款*/public void withdraw(Account account, double money){account.withdraw(money);}}ATM类package com.qx;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileReader;import java.io.FileWriter;import java.util.Properties;import java.util.Scanner;/*** ATM类,提供用户界面操作*/public class ATM {//属性private Bank bank;//构造函数public ATM() {bank = new Bank();}//main方法public static void main(String[] args){ATM atm = new ATM();//实例化ATMBank bank = atm.bank;//标号,判断是否退出一级菜单boolean firstFlag = true;while(firstFlag){ //一级菜单System.out.println("******欢迎使用XXX银行模拟ATM系统,请按如下步骤操作******");System.out.println(" *1.用已有账户登录");System.out.println(" *2.没有账户,开户");System.out.println(" *3.退出");Scanner scanner = new Scanner(System.in);System.out.print("请选择:");try {int choice1 = scanner.nextInt();switch(choice1){case 1:scanner = new Scanner(System.in);System.out.print("请输入银行卡号:");long id = scanner.nextInt();scanner = new Scanner(System.in);System.out.print("请输入银行密码:");String password = scanner.next();Account account = bank.verifyAccount(id, password);if(account != null){ //标号,判断是否退出二级菜单boolean secondFlag = true;while(secondFlag){ //二级菜单System.out.println("******欢迎使用XXX银行模拟ATM系统,请按如下步骤操作******");System.out.println(" *1.查询账户余额");System.out.println(" *2.存款");System.out.println(" *3.取款");System.out.println(" *4.转账");System.out.println(" *5.退卡");scanner = new Scanner(System.in);System.out.print("请选择:");try {int choice2 = scanner.nextInt();switch(choice2){case 1:System.out.println("您账户的当前余额为:"+account.getBalance());break;case 2:scanner = new Scanner(System.in);System.out.print("请输入您的存款金额:");double money1 = scanner.nextDouble();bank.deposit(account, money1);break;case 3:scanner = new Scanner(System.in);System.out.print("请输入您的取款金额:");double money2 = scanner.nextDouble();bank.withdraw(account, money2);break;case 4:scanner = new Scanner(System.in);System.out.print("请输入您要转入账户的卡号:");long id2 = scanner.nextLong();Account account2 = bank.verifyAccount(id2);if(account2 != null){scanner = new Scanner(System.in);System.out.print("请输入您要转入账户的金额:");double money = scanner.nextLong();if(money <= account.balance){bank.transferAccount(account, account2, money);System.out.println("转账成功!!!");}else{System.out.println("抱歉,您账户没有足够的金额!请查看后重新选择输入!");}}else{System.out.println("抱歉,没有找到您要转入的账户信息!请核对后重新选择输入!");}break;case 5:secondFlag = false;break;default:System.out.println("没有该选项,请重新选择!");break;}} catch (Exception e) {System.out.println("选择输入不合法,请重新选择!");}}}else{System.out.println("没有此账户,请先开户!");}break;case 2://账号id由银行自动提供(从1001递增)scanner = new Scanner(System.in);System.out.print("请输入账户密码:");String passwd1 = scanner.next();scanner = new Scanner(System.in);System.out.print("请再输入账户密码:");String passwd2 = scanner.next();scanner = new Scanner(System.in);System.out.print("请输入户主姓名:");String name = scanner.next();scanner = new Scanner(System.in);System.out.print("请输入户主身份证号码:");String personId = scanner.next();scanner = new Scanner(System.in);System.out.print("请输入账户类型(0储蓄,1信用):");int type = scanner.nextInt();bank.openAccount(passwd1, passwd2, name, personId, type);break;case 3:bank.saveAccountDate();firstFlag = false;break;default :System.out.println("没有该选项,请重新选择!");break;}} catch (Exception e) {System.out.println("选择输入不合法,请重新选择!");}}System.out.println("谢谢使用!");}}。

相关文档
最新文档