1.任务描述
编写一个银行新用户现金业务办理程序,使其模拟新用户到银行办理现金存取业务时的场景。
要求此场景中,要模拟出银行对用户到来的欢迎动作、对用户离开的提醒动作,以及用户的开户、存款和取款动作,在完成开户、存款和取款操作后,要提示用户的账户余额。例如,一个新用户来到招商银行,首先银行要表示欢迎,然后银行工作人员会为用户办理开户手续;开户后,用户先进行存款操作,之后又进行了取款操作,取款操作时需要用户输入正确的密码和取款金额需小于当前账户金额,如果条件不满足,系统产生异常。当业务办理完,用户离开银行,银行提醒用户携带好随身财物。至此银行新用户现金业务办理结束。
2. 任务目标
(1)学会分析“银行新用户现金业务办理”程序任务实现的逻辑思路。
(2)能够独立完成“银行新用户现金业务办理”的建模。
(3)能够独立完成“银行新用户现金业务办理”程序的源代码编写、编译及运行。
3. 实现思路
(1)通过任务描述可知,此需求需要定义一个银行类BankSystem。当用户去银行办理业务时,相当于办理了此银行的账户,所以这个类中要有此银行以及此银行的账户信息,比如:银行的名称、用户的名称、密码、账户余额和交易金额等数据
(2)新用户到达银行之后,银行会表示欢迎。
(3)银行表示欢迎之后,会为用户办理开户手续,开户时需扣除10元卡费。
(4)开户后,可以为用户办理存款和取款业务,这两种业务都会改变账户的余额。但是当用户密码输入错误,或取款金额大于余额时,产生异常,取款业务不能办理,并提示用户。
(5)用户离开时,银行会提醒用户携带好随身财物。
4. 实现效果
首先进入系统进入的是登录/开户界面
输入2 进入开户界面,并且提示开户注意事项
输入开户名,密码以及充值金额,完成开户操作,返回登录主界面
若充值金额小于10元,则提示金额不足,继续支付,支付成功后,返回登录主界面
若第二次充值金额还是不足,则退出开户系统,返回登录主界面
输入1,进入登录界面,输入用户名和密码
若登录失败,则提示用户名或密码错误,返回登录界面
登录成功之后,跳转到操作主界面
输入1之后,跳转到取钱操作界面,操作成功之后,返回操作主界面
若取款金额大于卡内余额,则进行提示,并且返回操作主界面
输入2,跳转到存钱操作界面,操作成功返回操作主界面
输入3,进入查询界面,查询完成后返回操作主界面
输入4,,退出银行操作系统
package BankSystem;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Scanner;
public class openAccount {
private String username;
private String passWord;
Scanner s=new Scanner(System.in);
public int money;
boolean BOA= false;
public openAccount() {
}
public int open () {
if(money-10<0) {
System.out.println("支付金额不足,退出开户系统!!将返回主界面");
return -1;
}
Connection con=null; //数据库连接对象
Statement sta =null; //数据库操作对象
int res =-1; //查询结果集
try {
//注册驱动
Class.forName("com.mysql.cj.jdbc.Driver");
//获取数据库连接
String url ="jdbc:mysql://localhost:3306/bjpowernode?serverTimezone=UTC";
String user = "root";
String pass ="123456";
con =DriverManager.getConnection(url,user,pass);
//获取数据库操作对象
sta =con.createStatement();
//执行sql语句
String sql="insert into t_bank (username,password,balance) values ('"+username+"','"+passWord+"','"+(money-10)+"')";
res =sta.executeUpdate(sql);
if(res!=-1) {
BOA =true;
}
if(BOA) {
System.out.println("恭喜"+username+"注册成功!!!!,卡内余额"+(money-10)+"元");
}
}catch (Exception e) {
e.printStackTrace();
}finally {
if(sta!=null) {
try {
sta.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(con!=null) {
try {
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
return 0;
}
public void welcome() {
System.out.println("*******************************");
System.out.println("欢迎注册本银行账户");
System.out.println("注意:本银行开户需要用户输入开户名、密码以及充值金额。开户需要扣除10元卡费,若充值金额小于10元则不能开通。");
System.out.println("请输入开户名、密码、充值金额");
}
public void register () {
System.out.println("请输入开户名:");
username =s.next();
System.out.println("请输入开户密码:");
passWord =s.next();
System.out.println("请输入充值金额");
money =s.nextInt();
}
public void agian () {
System.out.println("开户金额不足,请继续支付:");
int money1 =s.nextInt();
money =money+money1;
}
}
package BankSystem;
import java.util.Scanner;
public class Welcome {
Scanner s=new Scanner(System.in);
public Welcome() {
}
public void wc () {
System.out.println("**************************************");
System.out.println("\t欢迎使用本银行管理系统");
System.out.println("\t***************");
System.out.println(" 请先登录,若没有开通本银行账户请注册");
System.out.println("\t1.登录\t 2.开户");
}
public int find() {
System.out.println("请输入选项:");
Scanner s=new Scanner (System.in);
int a= s.nextInt();
return a ;
}
public int welcome () {
System.out.println("**************************************");
System.out.println("\t登录成功,欢迎使用本银行管理系统");
System.out.println("\t*********************");
System.out.println("\t1.取钱\t 2.存钱");
System.out.println("\t3.查询\t 4.退出");
System.out.println("请输入选项:");
int welcome =s.nextInt();
return welcome;
}
public int updatemoney() {
System.out.println("请输入取款金额:");
int a =s.nextInt();
return a;
}
public int addmoney() {
System.out.println("请输入存款金额:");
int a =s.nextInt();
return a;
}
public void bye () {
System.out.println("成功退出本银行操作系统,欢迎下次使用!!!!!");
}
}
package BankSystem;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Scanner;
public class enter {
public String user;
public String pass;
private boolean flag =false;
Scanner s =new Scanner(System.in);
public enter() {
}
public boolean enter() {
Connection con =null;//数据库连接对象
Statement sta =null; //数据库操作对象
ResultSet rs =null; //查询结果集
PreparedStatement ps =null; //sql语句预编译
try {
//1.获取数据库驱动对象
Class.forName("com.mysql.cj.jdbc.Driver");
//2.获取数据库连接
String url ="jdbc:mysql://localhost:3306/bjpowernode?serverTimezone=UTC";
String username = "root";
String password ="123456";
con =DriverManager.getConnection(url, username, password);
//定义SQl语句框架
String sql ="select username from t_bank where username = ? and password = ?";
//对sql语句进行预编译
ps =con.prepareStatement(sql);
//赋值
ps.setString(1, user);
ps.setString(2, pass);
//执行
rs= ps.executeQuery();
if(rs.next()) {
flag =true;
}
}catch(Exception e ) {
e.printStackTrace();
}finally {
if(rs!=null) {
try {
rs.close();
} catch (Exception e) {
e.printStackTrace();
}
}
if(sta!=null) {
try {
sta.close();
} catch (Exception e) {
e.printStackTrace();
}
}
if(con!=null) {
try {
con.close();
} catch (Exception e) {
e.printStackTrace();
}
}
if(flag) {
System.out.println("登陆成功!!");
}else {
System.out.println("用户名或密码错误");
}
return flag;
}
}
public void welcome () {
System.out.println("*************************");
System.out.println("\t欢迎使用本银行登录系统");
System.out.println("请输入用户名和密码");
System.out.println("请输入用户名:");
user =s.nextLine();
System.out.println("请输入密码:");
pass =s.nextLine();
}
}
package BankSystem;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class update {
private String username ;
private String password;
private int money2;
public update (String username,String password,String money2) {
this.username =username;
this.password =password;
this.money2 =Integer.parseInt(money2);
}
public int Update() {
Connection con =null;
int rs =-1;
Statement sta =null;
try {
Class.forName("com.mysql.cj.jdbc.Driver");
String url ="jdbc:mysql://localhost:3306/bjpowernode?serverTimezone=UTC";
String user ="root";
String pass ="123456";
con =DriverManager.getConnection(url, user, pass);
sta =con.createStatement();
String sql ="update t_bank set balance ='"+money2+"' where username ='"+username+"' and password ='"+password+"'";
rs =sta.executeUpdate(sql);
}catch (Exception e) {
e.printStackTrace();
}finally {
if(sta!=null) {
try {
sta.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(con!=null) {
try {
con.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(rs!=-1) {
System.out.println("恭喜您操作成功!");
System.out.println(username+"账户余额:"+money2+"元");
}
return rs;
}
}
public void addmoney(int money3) {
money2 =money2+money3;
}
public int downmoney(int money3) {
int a= -1;
if(money2
package BankSystem;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class Other3 {
private String username;
private String password;
private String balance;
public Other3(String username,String password) {
this.username =username;
this.password =password;
}
public String query () {
Connection con =null;
Statement sta= null;
ResultSet rs =null;
try {
Class.forName("com.mysql.cj.jdbc.Driver");
String url ="jdbc:mysql://localhost:3306/bjpowernode?serverTimezone=UTC";
String user ="root";
String pass ="123456";
con =DriverManager.getConnection(url, user, pass);
sta =con.createStatement();
String sql ="select balance from t_bank where username ='"+username+"'and password ='"+password+"'";
rs =sta.executeQuery(sql);
while(rs.next()) {
balance =rs.getString("balance");
}
}catch (Exception e) {
e.printStackTrace();
}finally {
if(rs!=null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(sta!=null) {
try {
sta.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(con!=null) {
try {
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return balance;
}
}
public void welcome() {
System.out.println(username+"账户余额为:"+balance+"元");
}
}
package BankSystem;
import java.util.Scanner;
public class BankFrame {
static Welcome wel =new Welcome();
static enter ent =new enter();
static openAccount oa =new openAccount ();
static Other3 oth3;
public static void main(String[] args) { //登录开户界面
first();
}
public static void first() {
Scanner s=new Scanner(System.in);
boolean boo =true;
wel.wc();
int a =wel.find();
while(boo) {
if(a!=1&&a!=2) {
System.out.println("对不起输入有误,请重新输入!");
a =wel.find();
}
if(a==1) {
ent.welcome();
boolean ent1=ent.enter();
if(ent1) {
inenter();
boo =false;
}
}
if(a==2) {
oa.welcome();
oa.register();
if(oa.money<10) {
System.out.println("开户金额为10元,您支付的钱币为"+oa.money+"元,还差"+(10-oa.money)+"元");
oa.agian();
}
int open=oa.open();
if(open!=-1) {
first();
boo =false;
}
else {
wel.wc();
a =wel.find();
}
}
}
}
public static void inenter () { //登录之后的界面
int s1 =wel.welcome();
boolean boo1 =true;
while(boo1) {
if(s1<=0||s1>4) {
System.out.println("输入有误,请重新输入:");
s1 =wel.find();
}
if(s1==1) {
oth3 =new Other3(ent.user,ent.pass);
update up =new update(ent.user,ent.pass,oth3.query());
int aa =up.downmoney(wel.updatemoney());
if(aa==-1) {
s1 =wel.welcome();
}
else {
up.Update();
s1 =wel.welcome();
}
}
if(s1==2) {
oth3 =new Other3(ent.user,ent.pass);
update up =new update(ent.user,ent.pass,oth3.query());
up.addmoney(wel.addmoney());
up.Update();
s1 =wel.welcome();
}
if(s1==3) {
oth3 =new Other3(ent.user,ent.pass);
oth3.query();
oth3.welcome();
s1 =wel.welcome();
}
if(s1==4) {
wel.bye();
boo1 =false;
}
}
}
}