**
此项目为非图形界面 小小小小小项目 如需要窗体+文件读写的银行管理系统,请移步 点击进入 https://blog.csdn.net/changjiale110/article/details/78955353
**
银行新用户现金业务办理
1.任务描述
编写一个银行新用户现金业务办理程序,使其模拟新用户到银行办理现金存取业务时的场景。
要求此场景中,要模拟出银行对用户到来的欢迎动作、对用户离开的提醒动作,以及用户的开户、存款和取款动作,在完成开户、存款和取款操作后,要提示用户的账户余额。例如,一个新用户来到招商银行,首先银行要表示欢迎,然后银行工作人员会为用户办理开户手续;开户后,用户先进行存款操作,之后又进行了取款操作,取款操作时需要用户输入正确的密码和取款金额需小于当前账户金额,如果条件不满足,系统产生异常。当业务办理完,用户离开银行,银行提醒用户携带好随身财物。至此银行新用户现金业务办理结束。
- 任务目标
(1)学会分析“银行新用户现金业务办理”程序任务实现的逻辑思路。
(2)能够独立完成“银行新用户现金业务办理”的建模。
(3)能够独立完成“银行新用户现金业务办理”程序的源代码编写、编译及运行。
3. 实现思路
(1)通过任务描述可知,此需求需要定义一个银行类BankSystem。当用户去银行办理业务时,相当于办理了此银行的账户,所以这个类中要有此银行以及此银行的账户信息,比如:银行的名称、用户的名称、密码、账户余额和交易金额等数据
(2)新用户到达银行之后,银行会表示欢迎。
(3)银行表示欢迎之后,会为用户办理开户手续,开户时需扣除10元卡费。
(4)开户后,可以为用户办理存款和取款业务,这两种业务都会改变账户的余额。但是当用户密码输入错误,或取款金额大于余额时,产生异常,取款业务不能办理,并提示用户,编写Exception类。
(5)用户离开时,银行会提醒用户携带好随身财物。
(6)编写交易类Users,在此类中模拟新用户去银行办理现金业务的场景。
(7)user和bank 实施交互的菜单Menu类
图例分析
- 实现效果
当未开户时 ,进行其他操作 ,提示请先开户
开户时,开户金额不足,补充资金
存钱取钱操作, 先输入账号密码 输入错误提示, 并显示剩余输入次数
成功提示 金额
取钱时金额超过 提示用户 余额不足
最后退出 欢迎下次光临
##程序 分为 4个类
- Menu 实现菜单的控制
- Allexception 实现对异常的处理, 比如密码错误, 金额不足, 次数不足等
- Users 实现用户和银行的交互
- BankSystem 实现对银行功能的
1 Menu
package cjl161530103;
import java.util.InputMismatchException;
import java.util.Scanner;
public class Menu {
public static void main(String[] args)throws AllException, StopException {
int flag=0; //记录用户是否开户
Scanner input = 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
{
/*choose1 = input.next();
int choose=0;
for (int i=0; i<choose1.length(); i++)
{
choose = choose*10+(int)choose1.charAt(i);
}
*/
choose = input.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());
}
}
}
}
2 Allexception 异常处理
package cjl161530103;
public class AllException extends Exception{
public AllException(String msg)
{
super(msg); //获取父类的方法 获得文本信息
}
}
class StopException extends Exception{
public StopException(String msg)
{
super(msg);
}
}
3 Users 实现 开户,存钱,取钱时 向银行的输入账号密码金额等信息的过程
在此程序中用户信息写死 在开头, 当然可以手动输入, 有需要的自行添加
package cjl161530103;
import java.util.Scanner;
public class Users{
Scanner input = new Scanner(System.in);
String name = "张三";
String usercount="161530103";
String passwd = "123456";
int money=5;
BankSystem user1 = new BankSystem(name); //创建银行的对象
//开户
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 = input.nextInt();
flag = user1.CreatCount(usercount,passwd,money);
numcount--;
}
catch(StopException e)
{
System.out.println(e.getMessage());
break;
}
}
}
//存钱
public void save() throws AllException, StopException {
System.out.println("存钱前,请输入账号密码和金额~~");
System.out.print("账号:");
usercount = input.next();
System.out.print("密码:");
passwd = input.next();
System.out.print("金额:");
money = input.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 = input.next();
System.out.print("密码:");
passwd = input.next();
System.out.print("金额:");
money = input.nextInt();
flag = user1.SaveMoney(usercount, passwd, money);
}
catch(StopException e)
{
System.out.println(e.getMessage());
break;
}
}
}
//取钱
public void draw() throws AllException, StopException {
//BankSystem user1 = new BankSystem(name);
System.out.println("取钱前,请输入账号密码和金额##");
System.out.print("账号:");
usercount = input.next();
System.out.print("密码:");
passwd = input.next();
System.out.print("金额:");
money = input.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 = input.next();
System.out.print("密码:");
passwd = input.next();
System.out.print("金额:");
money = input.nextInt();
flag = user1.DrawMoney(usercount, passwd, money);
}
catch(StopException e)
{
System.out.println(e.getMessage());
break;
}
}
}
}
BankSystem 实现用户发送的信息的验证工作, 验证每次的信息是否正确并合理
package cjl161530103;
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){
if (usercount1.equals(usercount)&&passwd1.equals(passwd))
{
money += money1;
System.out.println(Name+"您好, 您的账号已存入"+money1+", 当前余额为:"+money+"元。");
return true;
}
else
return false;
}
//取钱业务
public boolean DrawMoney(String usercount1,String passwd1, int money1){
if (usercount1.equals(usercount)&&passwd1.equals(passwd))
{
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;
}
}
else
return false;
}
}
来源:CSDN
作者:知足--常乐
链接:https://blog.csdn.net/changjiale110/article/details/78701989