学完Java基础写的不连接数据库的一个简单的银行管理系统(不连接数据 库)

发布于:2023-07-04 ⋅ 阅读:(159) ⋅ 点赞:(0)

标题 Java基础银行管理系统项目实战(不连接数据库在控制台操作)

题目要求:
功能描述:
开发一个ATM系统,功能有登陆,取款,存款,查询,退出,现在有小明,小红和小李三个人账户分别有2000元,1000元,500元,现登陆系统,输入名字进入到对应的账号中,登陆成功后,会出现如下效果:
欢迎进入邮政储蓄系统,请选择您的操作:(录屏)
1、查询余额 2、取款 3、存款 4、将所有数据存储到e:monthTest//bank.txt文件中,并从中读取出来.打印在控制台上 5.结束银行管理系统
如果选择1、则查看自身余额
如果选择2、则进入取款页面效果如下:
请输入您要提取的金额:
如果金额超过余额,则提示余额不足,如果金额是负数提示输入错误,输入正确的金额后,对应的余额将会减少
如果选择3、则进入存款功能,效果如下:
请输入您要存入的金额:
并将输入的金额加入到余额中
如果选择4.将数据添加到文件中,并打印在控制台上
如果选择5、则退出系统并提示:
谢谢,再见!
1、评分要求(按完成的功能量给与相应条件的分数,未实现该条件功能效果不给分):

  1. 正确定义person类(5分)
  2. 正确定义数组(5分)
    3)循环存入数组三个对象(5分)
    4)正确的实现登陆系统的操作(10分)
  3. 正确的实现选择语句(5分)
    6)正确实现查询余额的功能(10分)
    7)正确的实现取款功能并提供提示信息(10分)
    8)取款功能中正确的定义判断条件(5分)
    9)正确的显示取款后的结果(5分)
    10)正确的实现存款功能(5分)
    11)正确的显示取款后的结果(5分)
    12)正确的实现退出系统的功能(10分)
    13)代码规范(5分)
    14)合理注释(5分)
    15)实现将数据添加到文件功能(5分)
    16)实现将文件读取出来并打印在控制台上(5分)

思路:

  1. 首先有一个person类,在这个类中,定义了该顾客类的基本属性和功能,这些数据就是需要封装的功能,要想实现数据的传递,必须是通过构造方法传值,该功能重新get和set方法,重写了toString方法
  2. 还有一个银行类Bank,该类是主要是提供整个代码的结构化和功能化,便于传递
  3. 有一个数据的存储文件的类,OutputStudent,该类的功能主要左右是为了实现数据的从集合中传递到文件中
  4. 有一个文件读取类ReaderPerson类,实现数据的传递
  5. 还有一个测试类Test。在测试类中不断书写其方法,程序的入口。

考察方向
通过对该系统的描述,首先考虑到了对Java基础的简单运用,通过循环对数据赋值,可以把数据存在集合中也可以把数据存在数组中,即首先可以是对集合和数组的变量,本系统可以较为全面的考察Java基础 的内容,集合的遍历,以及对数据的访问流程,当数据传递时各个参数的定义,还有确定程序的入口,还有对字节流的输入和输出的控制,使程序能够按照要求能够把数据从集合中存入到文件中,其中不乏还有泛型的使用,还有关闭流的时候一定较为重要的考察了异常处理这块,整体比较简单,但是很好的考察了Java基础的知识。

源码

/**
 * 
 */
package cn.ujiuye.banktwo;

/**
 * @author liugang
 *pojo
 */
public class Person {
	private String name; // 姓名
	private double balance; // 余额
	//显然构造函数,实现对有参和无参构造函数的赋值
	public Person() {};
	public Person(String name,double balance) {
		    this.name = name;
		    this.balance = balance;		
	}
	
	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	
	public double getBalance() {
		return balance;
	}

	public void setBalance(double balance) {
		this.balance = balance;
	}
	@Override
	public String toString() {
		return "顾客 [姓名=" + name + ", 账号余额=" + balance + "]";
	}
	
	

}

package cn.ujiuye.banktwo;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;


/**
 * @author liugang 银行管理系统
 */
public class Bank {
	public Person person;
	@SuppressWarnings("resource")
	Scanner sc = new Scanner(System.in);
	List<Person> list = new ArrayList<Person>();
	public Bank() {	
		//实现数据的录入
		systemScanner();
		System.out.println(list);
	}
	//数据录入函数
	private void systemScanner() {
		System.out.println("中国人民银行用户登录系统,默认3组数据");
		for (int i = 0; i < 3; i++) {
			System.out.println("请输入第"+(i+1)+"个信息用户");
			System.out.println("请输入用户名:");
			String name = sc.next();	
			System.out.println("请输入余额:");
			int balance = sc.nextInt();
			list.add(new Person(name,balance));
		}
	}	
    //方法是实现对该功能的需求
	public void view() throws IOException {
		int n;
		System.out.println("请顾客输入姓名查询自己的账号是否存在:");
		String name = sc.next();
		boolean f = true;
		for (int i = 0; i < list.size(); i++) {
			person = list.get(i);
			if (name.equals(person.getName())) {
				System.out.println(person.getName() + "先生/女士,欢迎登录!!");
				f = false;
			}
		}
		if (f) {
			System.out.println("用戶名不存在");
		}

		while (true) {
			System.out.println("*****欢迎使用中国银行ATM自动取款服务****");
			System.out.println("*****1.查询余额*****************************");
			System.out.println("*****2.取款**********************************");
			System.out.println("*****3.存款***********************************");
			System.out.println("*****4.将数据存到文件中去********************");
			System.out.println("*****5.将数据从文件中读取出来****************");
			System.out.println("*****6.退出该系统********************************");
			System.out.println("*****欢迎使用ATM自动取款服务**********");
			System.out.println("输入操作编号:");
			n = sc.nextInt();
			switch (n) {
			case 1:
				showBalance();// 查询余额
				break;
			case 2:
				drawMoney();// 取款
				break;
			case 3:
				depositMoney();// 存款
				break;
			case 4:
				new OutputStudent(list); //将数据从集合中传到文件中去
				System.out.println("该数据已经从集合存到文件中去了");
			    break;
			case 5:
				new ReaderPerson().run();
				System.out.println("该数据从文件中取出来了");
			case 6:// 退出
				System.out.println("谢谢您对该系统的使用,谢谢");
				return;// 结束当前的循环
			}
		}

	}

	/**
	 * 存款
	 */
	private void depositMoney() {
		if (person == null) {
			System.out.println("亲爱的,麻烦你先登录一下吧!!");
		} else {
			System.out.println("请输入你想存款的金额:");
			double money = sc.nextDouble();
			if (money < 0) {
				System.out.println("亲,你输入的数据不对哟");
			} else {
				System.out.println("亲,又新存了大把钞票,您现在的余额为:" + (money + person.getBalance()));
				person.setBalance(person.getBalance() + money);
			}
		}
	}

	/**
	 * 取款
	 */
	private void drawMoney() {
		if (person == null) {
			System.out.println("亲爱的,麻烦你先登录一下吧!!");
		} else {
			System.out.println("请输入你想取得钱数:");
			double money = sc.nextDouble();
			if (money > person.getBalance()) {
				System.out.println("亲爱的,您的余额不足,请理性消费!!!");
			} else if (money < 0) {
				System.out.println("您输入的是错误的!!");
			} else {

				System.out.println("亲爱的,您本次取款为:" + money + ",您的余额为:" + (person.getBalance() - money));
				person.setBalance(person.getBalance() - money);
			}
		}

	}

	/**
	 * 查询余额
	 */
	private void showBalance() {
		if (person == null) {
			System.out.println("亲爱的,麻烦你先登录一下吧!!");
		} else {
			System.out.println(person.getBalance() + "哇,余额有点少呀");

		}

	}
}


package cn.ujiuye.banktwo;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.List;

/**
 * @author liugang
 *  数据的往文件中添加类,实现数据的储存到相对于的文件中
 */
public class OutputStudent {
	
	private static final String SEPARATOR = System.getProperty("line.separator");
	public OutputStudent(List<Person> list) {
	     File dir = new File("e:temp");//创建一个中间文件
	     if (!dir.exists()) {
			dir.mkdir();
		 }
	     File desFile =  new File(dir,"customer.txt");//创建一个文件引用对象
	     writeToFile(list,desFile);
	}
    //将集合中的数据存到文件中去
	private void writeToFile(List<Person> list, File desFile) {
		FileOutputStream fos = null;
		try {
			fos = new FileOutputStream(desFile);//判断此文件是否存在,存在则覆盖,如果不存在则创立
			//遍历集合
			for (Person person : list) {
				String info = person.getName() + ":" + person.getBalance() + SEPARATOR;
				fos.write(info.getBytes());//将数据写到文件中去
			}
		} catch (IOException e) {
			e.printStackTrace();
			System.out.println(e.toString());
		} finally {
			if (fos != null) {   //防止这个流对象本身就不存在或者什么也没有加入,故添加判断
				try {
					fos.close();
				} catch (Exception e2) {
					throw new RuntimeException("加载系统资源失败");
				}
			}
		}
	}

}

package cn.ujiuye.banktwo;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;

/**
 * @author liugang
 *
 */
public class ReaderPerson {
	public void run() throws IOException {
		   String infname="e:temp\\customer.txt"; //默认的输入文件名
		   try{
		   File fin=new File(infname); //转入的文件对象
		   BufferedReader in = new BufferedReader(new FileReader(fin)); //打开输入流
		   String s;
		   while((s = in.readLine()) != null){//读字符串
		   System.out.println(s); //写出
		   }
		   in.close(); //关闭缓冲读入流及文件读入流的连接
		   }
		   catch(IOException e2){
		   e2.printStackTrace();
	   }
		   }
     
}

package cn.ujiuye.banktwo;

import java.io.IOException;

/**
 * @author liugang
 *
 */
public class BankTest {
    public static void main(String[] args) throws IOException {
		//创建其对象和调用
    	Bank bank = new Bank();
		bank.view();
	}
}


插入链接与图片

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到