标题 Java基础银行管理系统项目实战(不连接数据库在控制台操作)
题目要求:
功能描述:
开发一个ATM系统,功能有登陆,取款,存款,查询,退出,现在有小明,小红和小李三个人账户分别有2000元,1000元,500元,现登陆系统,输入名字进入到对应的账号中,登陆成功后,会出现如下效果:
欢迎进入邮政储蓄系统,请选择您的操作:(录屏)
1、查询余额 2、取款 3、存款 4、将所有数据存储到e:monthTest//bank.txt文件中,并从中读取出来.打印在控制台上 5.结束银行管理系统
如果选择1、则查看自身余额
如果选择2、则进入取款页面效果如下:
请输入您要提取的金额:
如果金额超过余额,则提示余额不足,如果金额是负数提示输入错误,输入正确的金额后,对应的余额将会减少
如果选择3、则进入存款功能,效果如下:
请输入您要存入的金额:
并将输入的金额加入到余额中
如果选择4.将数据添加到文件中,并打印在控制台上
如果选择5、则退出系统并提示:
谢谢,再见!
1、评分要求(按完成的功能量给与相应条件的分数,未实现该条件功能效果不给分):
- 正确定义person类(5分)
- 正确定义数组(5分)
3)循环存入数组三个对象(5分)
4)正确的实现登陆系统的操作(10分) - 正确的实现选择语句(5分)
6)正确实现查询余额的功能(10分)
7)正确的实现取款功能并提供提示信息(10分)
8)取款功能中正确的定义判断条件(5分)
9)正确的显示取款后的结果(5分)
10)正确的实现存款功能(5分)
11)正确的显示取款后的结果(5分)
12)正确的实现退出系统的功能(10分)
13)代码规范(5分)
14)合理注释(5分)
15)实现将数据添加到文件功能(5分)
16)实现将文件读取出来并打印在控制台上(5分)
思路:
- 首先有一个person类,在这个类中,定义了该顾客类的基本属性和功能,这些数据就是需要封装的功能,要想实现数据的传递,必须是通过构造方法传值,该功能重新get和set方法,重写了toString方法
- 还有一个银行类Bank,该类是主要是提供整个代码的结构化和功能化,便于传递
- 有一个数据的存储文件的类,OutputStudent,该类的功能主要左右是为了实现数据的从集合中传递到文件中
- 有一个文件读取类ReaderPerson类,实现数据的传递
- 还有一个测试类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 后查看