自己写的,简单的BankLoanManagement(运用了io流和抛异常)

之前,写银行贷款系统之前,在CSDN上发表过一个论坛,是想问问别人该怎样写,现在自己写好了,发表出来。(哪里有不懂的,或是大佬想指点我的尽管在底下评论)
言归正传接下来展示一下包是啥样的:
这是我建的Java项目
一定要记得建一个:①User.txt用来储存用户名和密码,以及用户信息
②Data.txt用来储存用户进行增删查改时的数据信息

下面这个User类是定义用户信息的成员变量,和构造方法的:

package Fuction;
public class User {
	public String username;//用户名
	public String password;//密码
	public String sex;//性别
	public int  age;//年龄
	public String getSex() {
		return sex;
	}
	public void setSex(String sex) {
		this.sex = sex;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public String phonenumber;//电话号码
	public String id;//身份证
	public String address;//家庭地址
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public String getPhonenumber() {
		return phonenumber;
	}
	public void setPhonenumber(String newphonenumber) {
		this.phonenumber = newphonenumber;
	}
	public String getId() {
		return id;
	}
	public void setId(String newid) {
		this.id = newid;
	}
	public String getAddress() {
		return address;
	}
	public void setAddress(String address) {
		this.address = address;
	}
	@Override
	public String toString() {//用集合给用户呈现出的数据信息
		return "用户名:" + username + ", 密码" + password + ",性别:" + sex + ",年龄:" + age
				+ ", 电话号码:" + phonenumber + ", 身份证号码:" + id + ",地址:" + address;
	}
	public String totring() {//写入文档中用的方法
		return username + "," + password + "," + sex + "," + age
				+ "," + phonenumber + "," + id + "," + address+"\n";
	}
	public User(String username, String password, String sex,//有参构造方法
		int age, String phonenumber, String id, String address) {
		this.username = username;
		this.password = password;
		this.sex = sex;
		this.age = age;
		this.phonenumber = phonenumber;
		this.id = id;
		this.address = address;
	}
	public User() {//无参构造方法
		
	}
}

下面这个Bank类是定义一些银行系统中应该有的成员变量和构造方法的:

package Fuction;
    import java.text.DecimalFormat;
    public class Bank {
    	public String account ; // 用户账号
    	public double loanmoney;//贷款金额
    	public double loanrate;//贷款利率
    	public String loanday;//贷款的时间
    	public int loanduration;//贷款期限
    	public double repaymoney;//还款金额
	public String getAccount() {
		return account;
	}
	public void setAccount(String account) {
		this.account = account;
	}
	public double getLoanmoney() {
		return loanmoney;
	}
	public void setLoanmoney(double loanmoney) {
		this.loanmoney = loanmoney;
	}
	public int getLoanduration() {
		return loanduration;
	}
	public void setLoanduration(int loanduration) {
		this.loanduration = loanduration;
	}
	public String getLoanDay() {
		return loanday;
	}
	public void setLoanDay(String loanDay) {
		this.loanday = loanDay;
	}
	
	public double getRepaymoney() {
		if( 0 < this.loanduration && this.loanduration< 12) {
			this.loanrate=0.0435/12;
		}else if( this.loanduration< 60) {
			this.loanrate=0.0475/12;
		}else if( this.loanduration> 60) {
			this.loanrate=0.049/1;
		}
	   double temp =this.loanmoney+this.loanmoney*this.loanrate;	
	   DecimalFormat df = new DecimalFormat("0.00");  
	   df.format(temp);
	   return temp;
	}
	public double getLoanrate() {
		if( 0 < this.loanduration && this.loanduration< 12) {
			this.loanrate=0.0435/12;
		}else if( this.loanduration< 60) {
			this.loanrate=0.0475/12;
		}else if( this.loanduration> 60) {
			this.loanrate=0.049/12;
		}
		return loanrate;
	}
	
	public Bank(String account, double loanmoney,String loanDay,
	int loanduration,double loanrate ,double repaymoney) {//构造方法bank
		this.account = account;
		this.loanmoney = loanmoney;
		this.loanday = loanDay;
		this.loanduration = loanduration;
		this.loanrate=loanrate;
		this.repaymoney=repaymoney;
	}
	public Bank() {//空构造方法bank
		
	}
	public String toString() {//用集合给用户呈现出的数据信息
		return "用户名:" + account + ", 贷款金额:" + loanmoney + ", 贷款利率:" + loanrate + ",贷款时间:"
				+ loanday + ", 贷款期限(按月计算):" + loanduration + ",还款金额:" + repaymoney + "";
	}
	public String toString1() {//写入文档中用的方法//用集合给用户呈现出的数据信息
		return account + "," + loanmoney + "," + loanday + "," + loanduration 
				+ ","+loanrate  + "," + repaymoney+"\n" ;
	}
}

下面这个Enterio类是一个有关于输入输出流的(简单来说,第一个是判断输入的用户名和密码,是否文档中储存的用户名和密码是否一致,第二个是注册的时候用来存储用户信息用的):

package Fuction;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class Enterio {// 判断输入的密码和用户名与文档中储存的是否相等
	public boolean reader(String username, String password) throws IOException {
		File file = new File("User.txt");
		boolean flag = false;
		BufferedReader br = new BufferedReader(new FileReader(file));
		String line = null;
		while ((line = br.readLine()) != null) {
			String[] datas = line.split(",");// 用逗号隔开
			if (datas[0].equals(username) && datas[1].equals(password)) {// 判断
				flag = true;
				break;
			}
		}
		br.close();
		return flag;
	}
	public void writer(User user) throws IOException {// 将贷款信息储存进user里
		File file = new File("User.txt");
		BufferedWriter bw = null;
		bw = new BufferedWriter(new FileWriter(file, true));
		bw.write(user.getUsername() + "," + user.getPassword() + "," + user.getSex() + "," 
		+ user.getAge() + ","+ user.getPhonenumber() + "," + user.getId() + "," + user.getAddress());
		bw.newLine(); 写入一个行分隔符
		bw.flush();// 刷新缓冲区
		bw.close();
	}
}

接下来这个Login类是用户登录和注册用的:

package Fuction;
import java.io.IOException;
import java.util.Scanner;
public class Login {
	Scanner sc = new Scanner(System.in);
	public void welcome() {//开始界面
	System.out.println("------------欢迎光临--------------");
	System.out.println();
	System.out.println("***************");
	System.out.println("1.登录贷款系统");
	System.out.println("***************");
	System.out.println("2.注册贷款账户");
	System.out.println("***************");
	System.out.println("3.退出系统");
	System.out.println("***************");
	System.out.println("请输入你的选择:");
	}
	public String login() throws IOException {//
		Enterio enterio = new Enterio();
		System.out.println("---------欢迎进入登录界面-----------");
		boolean en=false;
		while(!en) {
			System.out.println("请输入用户名:");
			String username = sc.nextLine();
			System.out.println("请输入密码:");
			String password = sc.nextLine();
			boolean flag = enterio.reader(username, password);
			if (flag) {
				System.out.println("登录成功!");
				en=true;
				return username;
			}else {
				System.out.println("用户名或者密码有误,登录失败,请重新输入");
			}
		}
		return "";
	}
	public void register() throws Exception{
		Enterio enterio = new Enterio();
		System.out.println("--------------贷款系统注册界面--------------");
		System.out.println("请设置用户名:");
		String newUsername = sc.nextLine();
		System.out.println("请设置密码:");
		String newPassword = sc.nextLine();
		System.out.println("确认密码:");
		String newPassword1 = sc.nextLine();
		boolean en1=false;
		while(!en1) {
			if(newPassword.equals(newPassword1)) {
				en1=true;
			}else {
				
				System.out.println("两次密码不一致,请再次设置密码:");
				newPassword = sc.nextLine();
				System.out.println("确认密码:");
				newPassword1 = sc.nextLine();
			}
		}
		System.out.println("请填写性别:");
		String sex = sc.nextLine();
		System.out.println("请填写年龄:");
		int age = sc.nextInt();
		sc.nextLine();
		System.out.println("请填写手机号:");
		String newphonenumber = sc.nextLine();
		System.out.println("请填写身份证号:");
		String newid = sc.nextLine();
		System.out.println("请填写地址:");
		String newaddress = sc.nextLine();
		User user = new User();
		user.setUsername(newUsername);
		user.setPassword(newPassword);
		user.setSex(sex);
		user.setAge(age);
		user.setPhonenumber(newphonenumber);
		user.setId(newid);
		user.setAddress(newaddress);
		enterio.writer(user);
		System.out.println("注册成功!");
		System.out.println("按1键进行服务,按任意键退出!!");		
	}
}

下面这个Service 类是用户进行服务时的一个类(简单说就是增删查改的功能):

package Fuction;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Scanner;

public class Service {
	Scanner sc = new Scanner(System.in);

	// 贷款界面
	public void servicewelcome(String account) throws IOException {
		ArrayList<Bank> bank = new ArrayList<Bank>();// 一个以bank为范型的集合
		List<Bank> list = new ArrayList<Bank>();// 储存需要处理的信息的集合
		System.out.println("-----欢迎来到贷款系统------");
		System.out.println();
		System.out.println("***************");
		System.out.println("4.申请贷款");
		System.out.println("***************");
		System.out.println("5.申请还款");
		System.out.println("***************");
		System.out.println("6.查看我的贷款");
		System.out.println("***************");
		System.out.println("7.修改我的账户信息");
		System.out.println("***************");
		System.out.println("请输入你的选择:");
		char choice = sc.nextLine().charAt(0);// 选择需要的服务,是字符串类型的变量
		boolean en6 = false;
		while (!en6) {
			if (choice == '4' || choice == '5' || choice == '6' || choice == '7') {
				// 输入4567,进行操作
				en6 = true;
				switch (choice) {
				case '4':
					loan(account);// 进行贷款功能
					System.out.println("返回上一层,请按8,退出系统,请按9,");
					char chie = sc.nextLine().charAt(0);// 输入选择
					chi(chie, choice, account);// 选择是否返回上一层
					en6 = true;// 跳出while循环
					break;
				case '5':
					Repayment(account, list, bank);// 进行还款
					System.out.println("返回上一层,请按8,退出系统,请按9,");
					chie = sc.nextLine().charAt(0);// 输入选择
					chi(chie, choice, account);// 选择是否返回上一层
					en6 = true;// 跳出while循环
					break;
				case '6':
					check(account, list);// 进行查看功能
					System.out.println("返回上一层,请按8,退出系统,请按9,");
					chie = sc.nextLine().charAt(0);// 输入选择
					chi(chie, choice, account);// 选择是否返回上一层
					en6 = true;// 跳出while循环
					break;
				case '7':
					change(account);// 修改用户信息
					System.out.println("返回上一层,请按8,退出系统,请按9,");
					chie = sc.nextLine().charAt(0);// 输入选择
					chi(chie, choice, account);// 选择是否返回上一层
					en6 = true;// 跳出while循环
					break;
				}
			} else {
				System.out.println("输入错误,请重新输入:");
				choice = sc.nextLine().charAt(0);
				;// 重新输入进行循环
			}
		}
	}
	public void writer(Bank loaner) throws IOException {// 将贷款记录存起来
		File file = new File("Data.txt");
		BufferedWriter bw = null;
		try {
			bw = new BufferedWriter(new FileWriter(file, true));// true是将录入很多行行信息存入文档
			bw.write(loaner.account + "," + loaner.getLoanmoney() + "," + loaner.getLoanDay() + ","
					+ loaner.getLoanduration() + "," + loaner.getLoanrate() + "," + loaner.getRepaymoney());// 将数据写入到BufferedWriter中
			bw.newLine();// 写入一个行分隔符
			bw.flush();// 刷新缓冲区
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			if (bw != null) {
				try {
					bw.close();
				} catch (IOException e) {
					e.printStackTrace();
				}

			}
		}
	}
	public void loan(String account) throws IOException {// 增加贷款
		boolean en3 = false;
		while (!en3) {// 贷款成功,en3=true;贷款成功
			System.out.println("****欢迎贷款****");
			System.out.println("请输入您要贷款的金额:");
			double newloanmoney = sc.nextDouble();
			boolean en = false;
			while (!en) {// 贷款>0,跳出循环
				if (newloanmoney > 0) {// 贷款大于0
					en = true;
					break;
				} else {
					newloanmoney = sc.nextDouble();
				}
			}
			Date d = new Date();
			SimpleDateFormat ss = new SimpleDateFormat("yyyy-MM-dd ");
			String loanDay = ss.format(d);// 输出当前时间信息
			System.out.println("当前的日期为:" + loanDay);
			System.out.println("请输入贷款的期限(单位:月):");
			int newloanduration = sc.nextInt();
			sc.nextLine();
			Bank loaner = new Bank();// 创建贷款还款记录的对象
			loaner.setLoanDay(loanDay);
			loaner.setLoanmoney(newloanmoney);
			loaner.setLoanduration(newloanduration);
			loaner.setAccount(account);
			double repaymoney = loaner.getRepaymoney();// 将信息存入
			System.out.println("需要还款:" + repaymoney);
			System.out.println("贷款金额为:" + newloanmoney + ",确认贷款请按1,返回上一层请按任意键");
			// 输入1,贷款成功,
			char i = sc.nextLine().charAt(0);
			if (i == '1') {
				System.out.println("贷款成功");
				writer(loaner);
				en3 = true;// 贷款成功,en3=true;贷款成功
				break;
			} else {
				servicewelcome(account);
			}
		}
	}

	public void reader(String account, List<Bank> list) throws IOException {// 读信息的,
		File file = new File("Data.txt");
		BufferedReader br = new BufferedReader(new FileReader(file));
		String line;
		while ((line = br.readLine()) != null) {
			String[] datas = line.split(",");
			if (datas[0].equals(account)) {
				double loanmoney = Double.parseDouble(datas[1]);
				String loanDay = datas[2];
				int loanduration = Integer.parseInt(datas[3]);
				double loanrate = Double.parseDouble(datas[4]);
				double repaymoney = Double.parseDouble(datas[5]);
				Bank bank = new Bank(account, loanmoney, loanDay, loanduration, loanrate, repaymoney);
				list.add(bank);
				System.out.println(bank.toString());
			}

		}
		br.close();
	}

	public void Repayment(String account, List<Bank> list, ArrayList<Bank> bank) throws IOException {
		// 还款,并删除信息
		System.out.println("****欢迎还款****");
		reader(account, list);
		System.out.println("确定还款请按1,放回上一层请任意按任意键");
		char r = sc.nextLine().charAt(0);
		if (r == '1') {
			File file = new File("Data.txt");
			BufferedReader br = new BufferedReader(new FileReader(file));
			String line;
			while ((line = br.readLine()) != null) {
				String[] datas = line.split(",");
				double loanmoney = Double.parseDouble(datas[1]);// 将贷款金额存为bank集合中banks对象的第二个
				String loanDay = datas[2];
				int loanduration = Integer.parseInt(datas[3]);
				double loanrate = Double.parseDouble(datas[4]);
				double repaymoney = Double.parseDouble(datas[5]);
				Bank banks = new Bank(datas[0], loanmoney, loanDay, loanduration, loanrate, repaymoney);
				bank.add(banks);// 用户名 贷款金额 贷款时间 贷款期限 贷款利率 还款金额
				for (int i = 0; i < bank.size(); i++) {
					Bank temp = new Bank();// new一个新对象
					temp = bank.get(i);// 得到
					if (temp.getAccount().equals(account)) {
						bank.remove(i);
					}
				}
			}
			br.close();
			BufferedWriter bw = new BufferedWriter(new FileWriter("data.txt"));
			for (Bank b : bank) {// 遍历集合
				bw.write(b.toString1());// 写数据
				bw.newLine();
				bw.flush();// 释放资源
			}
			bw.close();
			System.out.println("还款成功");
		} else {
			servicewelcome(account);
		}
	}

	public void check(String account, List<Bank> list) throws IOException {// 查看用户贷款信息,调用reader方法
		reader(account, list);
		System.out.println("用户暂无其他贷款项");
	}

	public void change(String account) throws IOException {// 修改用户信息
		System.out.println("****欢迎修改信息****");
		File file = new File("User.txt");
		List<User> userlist = new ArrayList<User>();
		BufferedReader br = new BufferedReader(new FileReader(file));
		String line;
		while ((line = br.readLine()) != null) {
			String[] data = line.split(",");
			String username = data[0];
			String password = data[1];
			String sex = data[2];
			int age = Integer.parseInt(data[3]);
			String phonenumber = data[4];
			String id = data[5];
			String address = data[6];
			User use = new User(username, password, sex, age, phonenumber, id, address);
			userlist.add(use);// 将所有用户信息存入集合
		}
		br.close();
		System.out.println("修改密码请按1,不需要修改,请任意按任意键");
		char i = sc.nextLine().charAt(0);
		String newPassword = "";
		if (i == '1') {// 修改密码,请按1
			sc.nextLine();
			System.out.println("请设置密码:");
			newPassword = sc.nextLine();
			System.out.println("确认密码:");
			String newPassword1 = sc.nextLine();
			boolean en1 = false;
			while (!en1) {
				if (newPassword.equals(newPassword1)) {// 判断密码与输入的是否一样
					en1 = true;
				} else {
					System.out.println("两次密码不一致,请再次设置密码:");
					newPassword = sc.nextLine();
					System.out.println("确认密码:");
					newPassword1 = sc.nextLine();
				}
			}
		}
		System.out.println("请修改年龄:");
		String age = sc.nextLine();
		System.out.println("请修改手机号:");
		String newphonenumber = sc.nextLine();
		System.out.println("请修改地址:");
		String newaddress = sc.nextLine();
		System.out.println("确认修改,请按1,放回上一层请按任意键");
		char k = sc.nextLine().charAt(0);
		System.out.println("请修改地址:");
		
		if (k == '1') {
			for (int j = 0; j < userlist.size(); j++) {
				User temp = new User();// 未修改前的对象
				temp = userlist.get(j);// 得到对象
				if (temp.getUsername().equals(account)) {
					if (!newPassword.equals(""))// 输入回车
						temp.setPassword(newPassword);
					if (!age.equals(""))
						temp.setAge(Integer.parseInt(age));
					if (!newphonenumber.equals(""))
						temp.setPhonenumber(newphonenumber);
					if (!newaddress.equals(""))
						temp.setAddress(newaddress);
					userlist.set(j, temp);
				}
			}
			File file1 = new File("User.txt");
			BufferedWriter bw = null;
			bw = new BufferedWriter(new FileWriter(file1));
			for (User u : userlist) {// 便利集合,存入文档
				bw.write(u.totring());
				bw.newLine();
				bw.flush();
			}
			if (bw != null) {
				bw.close();
			}
			System.out.println("修改成功!");
		} else {
			servicewelcome(account);// 点击任意键放回服务界面
		}
	}

	public void chi(char chie, char choice, String account) throws IOException {
		// 主要适用于用户操作完之后,例如贷款完之后,想进行其他操作,可以按8.退出系统按9
		if (chie == '8') {
			servicewelcome(account);
			chie = sc.nextLine().charAt(0);
		} else if (chie == '9') {
			System.out.println("欢迎再次光临");
		} else {
			System.out.println("输入错误,请重新输入");
			chie = sc.nextLine().charAt(0);
		}
	}
}

这个类是主类,Main类(实现类):

package Main;
import java.util.Scanner;
import Fuction.Login;
import Fuction.Service;
public class Main {
	static String account;//静态账户
	public static void main(String[] args) throws Exception {
		Login loginer = new Login();//new一个新的登陆对象
		Service servicer=new Service();//new一个新的进行服务的对象
		loginer.welcome();//开始的界面
		Scanner sc = new Scanner(System.in);
		char choie = sc.nextLine().charAt(0);选择需要的服务,登陆,注册,或是退出。它是字符串类型的变量
		boolean en5 = false;
		while (!en5) {
			if (choie == '1' || choie == '2' || choie == '3') {//输入123,进行操作
				en5 = true;
				switch (choie) {
				case '1':
					account = loginer.login();//登陆
					servicer.servicewelcome(account);
					break;
				case '2':
					loginer.register();//注册
					char login= sc.nextLine().charAt(0);
					if(login=='1') {//注册完输入1,
						servicer.servicewelcome(account);//进行服务,贷款或是或还款。。。。。。
					}else {
						System.out.println("欢迎再次光临");//
					}
					break;
				case '3':
					System.out.println("欢迎再次光临");
					sc.close();
					break;
				}

			} else {//输入的不是123,重新操作
				System.out.println("输入错误,请重新输入:");
				choie = sc.nextLine().charAt(0);
			}
		}
	}
}

这样一个简单的银行贷款系统就做完了,(该系统运用了io流和抛异常的简单知识,)
这是我学习Java一段时间后写的第一个系统,虽然bug特别多,但是我做出来已经都很高兴了。。

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

咖啡壶子

你的鼓励奖是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值