工具类:
package com.yang.Dao;
import java.sql.ResultSet;
import java.sql.SQLException;
public class AdministerDao extends BaseDao{
/**
* 01-管理员登录
* @param id 管理员账号
* @param custPwd 管理员密码
* @return 是否登录成功
*/
public boolean login(String name,String Pwd) {
try {
String sql = "select * from administrator where adminName=? and adminPwd=?";
Object[] params = {name,Pwd};
ResultSet rs = this.myexecuteQuery(sql, params);
if(rs.next()) {
return true;
}
} catch (SQLException e) {
e.printStackTrace();
}
return false;
}
/**
* 02-增加用户
*/
public int addCustomer(Object[] params) {
String sql = "insert into customer values (?,?,?,?,?,now())";
return this.myexecuteUpdate(sql, params);
}
/**
* 03-查询存储总额
*/
public double sumMoney() {
String sql = "select sum(custMoney) from customer";
try {
ResultSet rs = this.myexecuteQuery(sql,null);
if(rs.next()) {
return rs.getDouble(1);
}
} catch (SQLException e) {
e.printStackTrace();
}
return 0;
}
/**
* 04-查询有钱人
*/
public void richMan() {
String sql = "select * from customer order by custMoney desc limit 0,10";
ResultSet rs = this.myexecuteQuery(sql, null);
System.out.println("------------------------------------");
System.out.println("卡号\t姓名\t拥有财富");
try {
while(rs.next()) {
String custNumber = rs.getString("custNumber");
String custName = rs.getString("custName");
String custMoney = rs.getString("custMoney");
System.out.println(custNumber+"\t"+custName+"\t"+custMoney);
}
} catch (Exception e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
}
package com.yang.Dao;
import java.sql.ResultSet;
import java.sql.SQLException;
public class CustomerDao extends BaseDao{
/**
* 01-储户登录
* @param id 储户账号
* @param custPwd 储户密码
* @return 是否登录成功
*/
public boolean login(String id,String custPwd) {
try {
String sql = "select * from customer where custNumber=? and custPwd=?";
Object[] params = {id,custPwd};
ResultSet rs = this.myexecuteQuery(sql, params);
if(rs.next()) {
return true;
}
} catch (SQLException e) {
e.printStackTrace();
}
return false;
}
/**
* 02-存款
*/
public int addMoney(String custNum,Double Money) {
String sql = "update customer set custMoney=custMoney+? where custNumber=?";
Object[] params = {Money,custNum};
int count = this.myexecuteUpdate(sql, params);
return count;
}
/**
* 03-查询储户余额
*/
public double queryMoney(String custNum) {
try {
String sql = "select custMoney from customer where custNumber=?";
Object[] params = {custNum};
ResultSet rs = this.myexecuteQuery(sql, params);
if(rs.next()) {
return rs.getDouble(1);
}
} catch (Exception e) {
e.printStackTrace();
}finally {
this.closeConn();
}
return 0;
}
/**
* 04-取款
*/
public int takeMoney(String custNum,Double money) {
String sql = "update customer set custMoney=custMoney-? where custNumber=?";
Object[] params = {money,custNum};
int count = this.myexecuteUpdate(sql, params);
if(count>0) {
return count;
}
return 0;
}
/**
* 05-检验转账账户是否存在
*
*/
public boolean isExsit(String custNum) {
try {
String sql = "select * from customer where custNumber=?";
Object[] params = {custNum};
ResultSet rs = this.myexecuteQuery(sql, params);
if(rs.next()) {
return true;
}
} catch (SQLException e) {
e.printStackTrace();
}
return false;
}
/**
* 06-修改密码
*/
public int modifyPassword(String custNum,String newPassword) {
String sql = "update customer set custPwd=? where custNumber=?";
Object[] params = {newPassword,custNum};
return this.myexecuteUpdate(sql, params);
}
}
package com.yang.Dao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;
public class BaseDao {
private Connection conn = null;//连接对象
private PreparedStatement ps = null;//执行SQL语句
private ResultSet rs = null;//结果集
private static String driverClass;
private static String url;
private static String username;
private static String password;
static {
//静态代码块,性能高,只加载一次
try {
Properties p = new Properties();
p.load(BaseDao.class.getClassLoader().getResourceAsStream("jdbc.properties"));
driverClass = (String)p.get("driverClass");
url = (String)p.get("url");
username = (String)p.get("username");
password = (String)p.get("password");
} catch (Exception e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
/**
* 01-打开数据库连接
*/
public void openConn() {
try {
Class.forName(driverClass);
conn=DriverManager.getConnection(url,username,password);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 02-通用的执行增删改
*/
public int myexecuteUpdate(String sql,Object[] params) {
this.openConn();//打开数据库连接
try {
ps=conn.prepareStatement(sql);
if(params!=null) {
for(int i=0;i<params.length;i++) {
ps.setObject(i+1, params[i]);
}
}
return ps.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
}finally {
this.closeConn();//关闭数据库
}
return 0;
}
/**
* 03-通用的执行查询的方法
*/
public ResultSet myexecuteQuery(String sql,Object[] params) {
this.openConn();
try {
ps=conn.prepareStatement(sql);
if(params!=null){
for (int i = 0; i < params.length; i++) {
ps.setObject(i+1, params[i]);
}
}
rs=ps.executeQuery();
} catch (Exception e) {
e.printStackTrace();
}finally{
//查询的此处不能提前关闭数据库。不然话结果集合没法遍历
}
return rs;
}
/**
* 04-关闭数据库
*/
protected void closeConn() {
try {
if(rs!=null){
rs.close();
}
if(ps!=null){
ps.close();
}
if(conn!=null){
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
用户界面
package com.yang.UI;
import java.util.Scanner;
import org.omg.Messaging.SyncScopeHelper;
import com.yang.Dao.AdministerDao;
import com.yang.Dao.CustomerDao;
public class UI {
static Scanner input = new Scanner(System.in);
static AdministerDao adminDao = new AdministerDao();
static CustomerDao custDao = new CustomerDao();
public static void main(String[] args) {
System.out.println("--------------------------银行管理系统--------------------------");
System.out.println(" ************ 1.管理员**********");
System.out.println(" ************ 2.储户**********");
System.out.println("请选择登录方式:");
int type = input.nextInt();
if(type==1) {
adminLogin();
}else if(type==2) {
userLogin();
}
}
//----------------------------------------------------------------
/**
* 01-普通用户登录
*/
private static void userLogin() {
// TODO 自动生成的方法存根
System.out.println("请输入您的银行账号:");
String custNum = input.next();
System.out.println("请输入您的银行卡密码:");
String custPwd = input.next();
boolean b = custDao.login(custNum, custPwd);
if(b) {
System.out.println("恭喜登录成功!");
printCustEmun(custNum);
}else {
System.out.println("对不起登录失败!");
}
}
/**
* 02-输出用户菜单
*/
public static void printCustEmun(String custNum) {
System.out.println("====================天地银行储户界面====================");
System.out.println(" 1.存款 2.取款 3.转账 4.修改密码 5.退出系统");
System.out.println("====================================================");
System.out.println("请选择您的操作:");
int type = input.nextInt();
switch(type) {
case 1:
//1.存款
addMoney(custNum);
break;
case 2:
//2.取款
takeMoney(custNum);
break;
case 3:
//3.转账
passMoney(custNum);
break;
case 4:
//4.修改密码
changePassword(custNum);
break;
case 5:
//5.退出系统
System.out.println("系统退出,欢迎下次使用!");
System.exit(1);
break;
default:
System.out.println("输入有误!");
break;
}
System.out.println("-----------------------------------------------------");
System.out.println("1.返回储户菜单 2.退出系统");
System.out.print("请选择:");
int answer = input.nextInt();
if (answer == 1) {
printCustEmun(custNum);
} else if (answer == 2) {
System.out.println("谢谢使用!");
System.exit(1);
}
}
/**
* 03-存款
*/
public static void addMoney(String custNum) {
Double money ;
while(true) {
System.out.println("请输入存款金额:");
money= input.nextDouble();
if(money>0) {
int count = custDao.addMoney(custNum, money);
if(count>0) {
System.out.println("存款成功!当前余额为:"+custDao.queryMoney(custNum));
break;
}else {
System.out.println("存款失败!");
}
break;
}
System.out.println("金额输入有误,请重新输入!");
}
}
/**
* 04-取款
*/
public static void takeMoney(String custNum) {
System.out.println("请输入您要取款的金额:");
Double money = input.nextDouble();
while(true) {
if(money>0 && money<custDao.queryMoney(custNum)) {
custDao.takeMoney(custNum,money);
System.out.println("取款成功,当前余额为:"+custDao.queryMoney(custNum));
break;
}else {
System.out.println("输入错误,请重新输入:");
money = input.nextDouble();
}
}
}
/**
* 05-转账
*/
public static void passMoney(String custNum) {
System.out.println("请输入目标账户:");
String targetNum = input.next();
boolean b = custDao.isExsit(targetNum);
if(!b) {
System.out.println("账户不存在!");
printCustEmun(custNum);
}
System.out.println("请输入转账金额:");
Double money = input.nextDouble();
if(money>0 && money<custDao.queryMoney(custNum)) {
custDao.takeMoney(custNum, money);
custDao.addMoney(targetNum, money);
System.out.println("转账成功!账户余额为:"+custDao.queryMoney(custNum));
}
}
/**
* 06-修改密码
*/
public static void changePassword(String custNum) {
String newPassword1=null;
while(true) {
System.out.println("请输入新密码:");
newPassword1 = input.next();
System.out.println("请重复新密码:");
String newPassword2 = input.next();
if(!newPassword1.equals(newPassword2)) {
System.out.println("两次输入不一致!请重新输入:");
}else {
break;
}
}
custDao.modifyPassword(custNum, newPassword1);
System.out.println("修改成功!请重新登录!");
userLogin();
}
//--------------------------------------------------------------------
/**
* 01-管理员登录
*/
private static void adminLogin() {
// TODO 自动生成的方法存根
System.out.println("请输入管理员账号:");
String adminName = input.next();
System.out.println("请输入管理员密码:");
String adminPwd = input.next();
boolean b = adminDao.login(adminName, adminPwd);
if(b) {
System.out.println("恭喜登录成功!");
printAdminMenu();
}else {
System.out.println("对不起登录失败!");
}
}
/**
* 02-输出管理员菜单
*/
public static void printAdminMenu() {
System.out.println("====================天地银行管理界面====================");
System.out.println(" 1.添加顾客 2.计算存储总额 3.查询富豪榜 4.退出系统");
System.out.println("====================================================");
System.out.println("请选择您的操作:");
int type = input.nextInt();
switch(type) {
case 1:
//1.添加顾客
addCustomer();
break;
case 2:
//2.计算存储总额
sumMoney();
break;
case 3:
//3.查询富豪榜
adminDao.richMan();
break;
case 4:
//4.退出系统
System.out.println("系统退出,欢迎下次使用!");
System.exit(1);
break;
default:
System.out.println("输入错误,请重新输入:");
break;
}
System.out.println("-----------------------------------------------------");
System.out.println("1.返回管理员菜单 2.返回管理员登录界面 3.退出系统");
System.out.print("请选择:");
int answer = input.nextInt();
if (answer == 1) {
printAdminMenu();
} else if (answer == 2) {
adminLogin();
} else {
System.out.println("谢谢使用!");
System.exit(1);
}
}
/**
* 03-添加顾客
*/
public static boolean addCustomer() {
System.out.println("请输入卡号:");
String number = input.next();
System.out.println("请输入姓名");
String name = input.next();
System.out.println("请输入身份证号:");
String idcard = input.next();
System.out.println("请输入开户金额:");
String money = input.next();
System.out.println("请输入初始密码:");
String password = input.next();
Object[] params = {number,name,password,idcard,money,};
int count = adminDao.addCustomer(params);
if(count>0) {
System.out.println("开户成功!");
}else {
System.out.println("开户失败!");
}
return false;
}
/**
* 04-计算存储总额
*/
public static void sumMoney() {
double money = adminDao.sumMoney();
System.out.println("存储总额为:"+money+"元");
}