编写一个银行对新用户进行现金业务办理的系统。(工作)动作:欢迎、离柜提醒、开户、取款、存款。
利用到static方法、构造方法、this关键字等。
思路: 定义一个银行类,银行名字(静态变量)
名字(客户)
密码
余额(balance)
交易额(turnover)
欢迎和离柜(静态方法)+开户(构造方法)+存钱取钱(普通方法)。
再定义一个交易类,用来写主函数,调用银行类里的方法,注意一点:在用户完成存款和取款之后,都要提示账户余额。
必须按要求编写
import java.util.Scanner;
public class Demo01 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (true) {
System.out.println("------欢迎使用自助存取款系统------");
System.out.println("请输入账户密码(首次使用请按#注册):");
String account = scanner.nextLine();
if (account.equals("#")) {
System.out.println("请输入新的账户:");
String account1 = scanner.nextLine();
System.out.println("请输入密码:");
String passwd1 = scanner.nextLine();
System.out.println("请输入用户姓名:");
String name1 = scanner.nextLine();
BankOperate.regist(account1, passwd1, name1);
continue;
}
System.out.println("请输入密码:");
String passwd2 = scanner.nextLine();
// BankOperate.logine(account, passwd2);
boolean result = BankOperate.logine(account, passwd2);
if (result) {
System.out.println("登录成功,欢迎" + BankTool.account[BankTool.index].getName() + "光临");
operate();
} else {
System.out.println("输入错误,请重新输入。");
}
}
}
public static void operate() {
Scanner scanner1 = new Scanner(System.in);
while (true) {
System.out.println("请选择服务项目:");
System.out.println("1.存款");
System.out.println("2.取款");
System.out.println("3.查询");
System.out.println("4.退出");
int n = scanner1.nextInt();
switch (n) {
case 1:
System.out.println("请输入存款金额:");
double money = scanner1.nextDouble();
BankOperate.save(money);
break;
case 2:
System.out.println("请输入取款金额:");
double money1 = scanner1.nextDouble();
BankOperate.take(money1);
break;
case 3:
BankOperate.check();
break;
case 4:
return;
default:
System.out.println("输入错误,请重新输入。");
break;
}
}
}
}
package com.coding.study09;
public class Account {
String account;
String passwd;
String name;
double money;
public Account(String account, String passwd, String name) {
this.account = account;
this.passwd = passwd;
this.name = name;
}
public String getAccount() {
return account;
}
public void setAccount(String account) {
this.account = account;
}
public String getPasswd() {
return passwd;
}
public void setPasswd(String passwd) {
this.passwd = passwd;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getMoney() {
return money;
}
public void setMoney(double money) {
this.money = money;
}
}
package com.coding.study09;
public class BankOperate {
public static void regist(String account, String passwd, String name) {
Account account1 = new Account(account, passwd, name);
for (int i = 0; i < BankTool.account.length; i++) {
if (BankTool.account[i] == null) {
BankTool.account[i] = account1;
System.out.println("注册成功");
break;
}
}
}
public static boolean logine(String account, String passwd) {
for (int i = 0; i < BankTool.account.length; i++) {
if (BankTool.account[i] != null) {
if (account.equals(BankTool.account[i].getAccount())
&& passwd.equals(BankTool.account[i].getPasswd())) {
BankTool.index = i;
return true;
}
}
}
return false;
}
public static void save(double money) {
BankTool.account[BankTool.index].setMoney(BankTool.account[BankTool.index].getMoney() + money);
System.out.println("存钱成功");
}
public static void take(double money) {
BankTool.account[BankTool.index].setMoney(BankTool.account[BankTool.index].getMoney() - money);
System.out.println("取钱成功");
}
public static void check() {
System.out.println("当前账户余额为:"+BankTool.account[BankTool.index].getMoney());
}
}
package com.coding.study09;
public class BankTool {
public static Account[] account=new Account[100];
public static int index=0;
}
代码如下,记得采纳一下哦!
class Bank {
// 银行名字(静态变量)
private static String bankName = "ABC Bank";
// 客户名字
private String name;
// 密码
private String password;
// 余额
private double balance;
// 交易额
private double turnover;
// 欢迎(静态方法)
public static void welcome() {
System.out.println("欢迎来到" + bankName + "!");
}
// 离柜提醒(静态方法)
public static void goodbye() {
System.out.println("谢谢惠顾,欢迎下次光临!");
}
// 开户(构造方法)
public Bank(String name, String password) {
this.name = name;
this.password = password;
// 开户时余额为0
this.balance = 0;
// 开户时交易额为0
this.turnover = 0;
System.out.println("恭喜" + name + "成功开户!");
}
// 存款
public void deposit(double amount) {
this.balance += amount;
this.turnover += amount;
System.out.println(name + "成功存入" + amount + "元,余额为" + balance + "元。");
}
// 取款
public void withdraw(double amount) {
if (amount > this.balance) {
System.out.println(name + "余额不足,无法取款。");
} else {
this.balance -= amount;
this.turnover += amount;
System.out.println(name + "成功取出" + amount + "元,余额为" + balance + "元。");
}
}
}
// 定义测试类
public class Test {
public static void main(String[] args) {
Bank.welcome(); // 开户
Bank user1 = new Bank("张三", "123456");
// 存款
user1.deposit(1000);
// 取款
user1.withdraw(40);
}
}
请参考实例【Java 编写一个银行新用户现金业务办理程序】,链接:https://blog.csdn.net/m0_46824767/article/details/105549097
命令行?还是GUI?
根据理解代码如下:
package bank;
public class Bank {
static String name;
private float balance;
private String customerName;
public Bank(float balance,String customerName){
this.balance=balance;
this.customerName=customerName;
}
public static void ShowWelcome(){
System.out.println(name+"银行,欢迎您");
}
public static void ShowBye(){
System.out.println("欢迎下次光临");
}
public void withdraw (float count){
this.balance-=count;
System.out.println("尊敬的"+customerName+",您的余额为"+balance);
}
public void save(float count){
this.balance+=count;
System.out.println("尊敬的"+customerName+",您的余额为"+balance);
}
}
package bank;
public class Trade {
public static void main(String[] args) {
//设置银行名称
Bank.name="TEST银行";
//欢迎
Bank.ShowWelcome();
//开户
Bank bank=new Bank(1000,"test");
//取钱
bank.withdraw(100);
//存钱
bank.save(100);
//离柜提醒
Bank.ShowBye();
}
}
java实现银行新用户现金业务办理
如有帮助,望采纳
package cn.ls.BankSystem;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Scanner;
public class Menu {
public static void main(String[] args) throws AllException, StopException, SQLException {
int flag = 0; // 记录用户是否开户
Scanner sc = new Scanner(System.in);
Users menu = new Users();
while (true) {
System.out.println("**************************");
System.out.println("\t银行管理系统");
System.out.println("\t********");
System.out.println(" 1.开户\t2.存钱");
System.out.println(" 3.取钱\t4.退出");
System.out.print("请输入选项:");
String choose;
try {
choose = sc.next();
if (choose.equals("1")) {
menu.creat();
flag = 1;
} else if (choose.equals("2")) {
if (flag == 1) {
menu.save();
} else {
throw new AllException("账户不存在, 请选择“1”开户!\n");
}
} else if (choose.equals("3")) {
if (flag == 1) {
menu.draw();
} else {
throw new AllException("账户不存在, 请选择“1”开户!\n");
}
} else if (choose.equals("4")) {
System.out.println("欢迎下次光临!");
break;
} else {
throw new AllException("您输入的序号不存在,请重新输入!\n");
}
} catch (AllException e) {
System.out.println(e.getMessage());
}
}
}
}
package cn.ls.BankSystem;
public class AllException extends Exception {
public AllException(String msg) {
super(msg); // 获取父类的方法 获得文本信息
}
}
class StopException extends Exception {
public StopException(String msg) {
super(msg);
}
}
package cn.ls.BankSystem;
import java.sql.SQLException;
import java.util.Scanner;
public class Users {
Scanner sc = new Scanner(System.in);
String username = "张三";
String usercount = "123456";
String passwd = "123456";
int money = 5;
BankSystem user1 = new BankSystem(username); // 创建银行的对象
// 开户
public void creat() throws AllException, StopException {
int numcount = 3;
boolean flag = user1.creatCount(usercount, passwd, money);
numcount--;
// judge(flag, numcount);
while (true) {
try {
if (flag == true) {
break;
} else if (flag == false) {
throw new AllException("开户金额不足,请继续支付:");
}
if (numcount <= 0) {
throw new StopException("账号或密码错误次数超过三次,已锁定账号!");
}
} catch (AllException e) {
System.out.println(e.getMessage());
money = sc.nextInt();
flag = user1.creatCount(usercount, passwd, money);
numcount--;
} catch (StopException e) {
System.out.println(e.getMessage());
break;
}
}
}
// 存钱
public void save() throws AllException, StopException, SQLException {
System.out.println("存钱前,请输入账号密码和金额~~");
System.out.print("账号:");
usercount = sc.next();
System.out.print("密码:");
passwd = sc.next();
System.out.print("金额:");
money = sc.nextInt();
int numcount = 3;
boolean flag = user1.SaveMoney(usercount, passwd, money);
numcount--;
while (true) {
try {
// System.out.println(numcount+"!!");
if (flag == true) {
break;
} else if (flag == false) {
if (numcount <= 0) {
throw new StopException("账号或密码错误次数超过三次,已锁定账号!");
}
throw new AllException("账号或密码错误,剩余输入次数" + numcount + "次,请重新输入");
}
} catch (AllException e) {
System.out.println(e.getMessage());
numcount--;
System.out.print("账号:");
usercount = sc.next();
System.out.print("密码:");
passwd = sc.next();
System.out.print("金额:");
money = sc.nextInt();
flag = user1.SaveMoney(usercount, passwd, money);
} catch (StopException e) {
System.out.println(e.getMessage());
break;
}
}
}
// 取钱
public void draw() throws AllException, StopException, SQLException {
// BankSystem user1 = new BankSystem(name);
System.out.println("取钱前,请输入账号密码和金额##");
System.out.print("账号:");
usercount = sc.next();
System.out.print("密码:");
passwd = sc.next();
System.out.print("金额:");
money = sc.nextInt();
int numcount = 3;
boolean flag = user1.DrawMoney(usercount, passwd, money);
numcount--;
while (true) {
try {
if (flag == true) {
break;
} else if (flag == false) {
if (numcount <= 0) {
throw new StopException("账号或密码错误次数超过三次,已锁定账号!");
}
throw new AllException("账号或密码错误,剩余输入次数" + numcount + "次,请重新输入");
}
} catch (AllException e) {
System.out.println(e.getMessage());
numcount--;
System.out.print("账号:");
usercount = sc.next();
System.out.print("密码:");
passwd = sc.next();
System.out.print("金额:");
money = sc.nextInt();
flag = user1.DrawMoney(usercount, passwd, money);
} catch (StopException e) {
System.out.println(e.getMessage());
break;
}
}
}
}
package cn.ls.BankSystem;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Scanner;
public class BankSystem {
String Name;
int money = 0;
String usercount;
String passwd;
// 欢迎客户
public BankSystem(String name) {
Name = name;
System.out.println("---------欢迎 来到, " + name + "---------");
}
// 开户业务
public boolean creatCount(String usercount1, String passwd1, int money1) {
usercount = usercount1;
passwd = passwd1;
money += money1;
if (money >= 10) {
money -= 10;
System.out.println(Name + "开户成功, 账户余额为:" + money);
return true;
} else {
System.out.println("开户金额的10元, 您支付的钱币的为" + money + "元, 还差" + (10 - money) + "元。");
return false;
}
}
// 存钱业务
public boolean SaveMoney(String usercount1, String passwd1, int money1) throws SQLException {
Connection con = JDBCUtils.getConnection();
String sql = "select username from t_bank where usercount = ? and passwd = ?";
// 对sql语句进行预编译
PreparedStatement ps = con.prepareStatement(sql);
// 赋值
ps.setString(1, usercount1);
ps.setString(2, passwd1);
ResultSet rs = ps.executeQuery();
if (rs.next()) {
money += money1;
System.out.println(Name + "您好, 您的账号已存入" + money1 + ", 当前余额为:" + money + "元。");
return true;
} else {
return false;
}
}
// 取钱业务
public boolean DrawMoney(String usercount1, String passwd1, int money1) throws SQLException {
Connection con = JDBCUtils.getConnection();
String sql = "select username from t_bank where usercount = ? and passwd = ?";
// 对sql语句进行预编译
PreparedStatement ps = con.prepareStatement(sql);
// 赋值
ps.setString(1, usercount1);
ps.setString(2, passwd1);
ResultSet rs = ps.executeQuery();
while (rs.next()) {
if (money1 <= money) {
money -= money1;
System.out.println(Name + "您好, 您的账号已取出" + money1 + ", 当前余额为:" + money + "元。");
return true;
} else {
System.out.println("余额不足,当前余额为" + money + "元,请重新输入取出金额:");
while (money1 > money) {
Scanner input = new Scanner(System.in);
money1 = input.nextInt();
}
money -= money1;
System.out.println(Name + "您好, 您的账号已取出" + money1 + ", 当前余额为:" + money + "元。");
return true;
}
}
return false;
}
}
package cn.itcast.jabcutil;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class JDBCUtils {
private JDBCUtils() {
}
private static Connection con;
static {
try {
Class.forName("com.mysql.cj.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/mybase?serverTimezone=UTC";
String username = "root", password = "ls12345";
con = DriverManager.getConnection(url, username, password);
} catch (Exception e) {
throw new RuntimeException(e + "数据库连接失败");
}
}
public static Connection getConnection() {
return con;
}
public static void close(Connection con, Statement stat, ResultSet re) {
if (con != null) {
try {
con.close();
} catch (SQLException e) {
}
}
if (stat != null) {
try {
stat.close();
} catch (SQLException e) {
}
}
if (re != null) {
try {
re.close();
} catch (SQLException e) {
}
}
}
public static void close(Connection con, Statement stat) {
if (con != null) {
try {
con.close();
} catch (SQLException e) {
}
}
if (stat != null) {
try {
stat.close();
} catch (SQLException e) {
}
}
}
}
代码如下,有详细注释,如有帮助,望采纳,有问题欢迎讨论
import java.math.BigDecimal;
//银行类
public class Bank {
//银行名字,用静态变量表示
private static String bankName;
//客户名字
private String customerName;
//密码
private String passWord;
//余额
private String balance;
//交易额
private String turnover;
//构造有参方法 开户(构造方法)
public Bank(String bankName, String customerName, String passWord, String balance, String turnover) {
//静态变量用类名引用
Bank.bankName = bankName;
//成员变量用this引用
this.customerName = customerName;
this.passWord = passWord;
this.balance = balance;
this.turnover = turnover;
}
//定义无参构造方法
public Bank() {
}
public String getCustomerName() {
return customerName;
}
public void setCustomerName(String customerName) {
this.customerName = customerName;
}
public String getPassWord() {
return passWord;
}
public void setPassWord(String passWord) {
this.passWord = passWord;
}
public String getBalance() {
return balance;
}
public void setBalance(String balance) {
this.balance = balance;
}
public String getTurnover() {
return turnover;
}
public void setTurnover(String turnover) {
this.turnover = turnover;
}
//以下定义银行类方法
//欢迎方法 静态方法
public static void welcome() {
System.out.println("欢迎您光临" + bankName);
}
//离柜方法 静态方法
public static void leave() {
System.out.println("客户离柜,欢迎下次光临" + bankName);
}
//存钱(普通方法)
public void addMoney(String money) {
//存入金额
BigDecimal addMoney = new BigDecimal(money);
//当前余额
BigDecimal balance = new BigDecimal(this.balance);
//存钱后余额
BigDecimal newBalance = addMoney.add(balance);
//赋值操作
this.balance = newBalance.toString();
//提示账户余额
System.out.println("存钱成功,当前账户余额为【" + this.balance + "】");
}
//取钱(普通方法)
public void plusMoney(String money) {
//取出金额
BigDecimal plusMoney = new BigDecimal(money);
//当前余额
BigDecimal balance = new BigDecimal(this.balance);
//取出后余额
BigDecimal newBalance = balance.subtract(plusMoney);
//如果余额小于0,不允许取款
if (newBalance.compareTo(new BigDecimal("0.0")) < 0) {
System.out.println("账户余额不足,不允许取款");
return;
}
//赋值操作
this.balance = newBalance.toString();
//提示账户余额
System.out.println("取钱成功,当前账户余额为【" + this.balance + "】");
}
}
import java.util.Scanner;
//测试类
public class Deal {
public static void main(String[] args) {
//创建银行对象信息
Bank bank = new Bank("中国银行", "李先生", "123456", "100.0", "0.0");
Scanner scanner = new Scanner(System.in);
System.out.println("请输入密码");
String pwd = scanner.nextLine();
while (!bank.getPassWord().equals(pwd)) {
System.out.println("密码错误,请重新输入");
pwd = scanner.nextLine();
}
System.out.println("请输入取款金额");
String turnover = scanner.nextLine();
//调用银行取款方法
bank.plusMoney(turnover);
System.out.println("请输入存款金额");
turnover = scanner.nextLine();
//调用银行存款方法
bank.addMoney(turnover);
}
}
运行结果如下