Day20190610:简易的银行管理系统

这篇博客介绍了如何创建一个简单的银行管理系统,包括用户界面的设计和交互,提供了基础的金融交易功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

工具类:

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+"元");
	} 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值