ATM管理系统

博客班级 计算机18级
作业要求 要求
作业目标 编写一个ATM管理系统,语言不限
学号 3180701213
题目要求:
编写一个ATM管理系统,语言不限,要求应包括以下主要功能:

(1)开户,销户

(2)查询账户余额

(3)存款

(4)取款

(5)转账(一个账户转到另一个账户)等...

允许网上查询参考,但请注意不要直接抄袭,可以理解看懂别人的代码,再自己编写
思路:用到了两个哈希表,第一个是user用来存储账号和密码,第二个是message用来存储账号和余额,通过这两个哈希表来完成密码比对
和用户的存取款操作。
(1)开户

public static void account() {
		System.out.print("请输入用户名:");
		Scanner name1=new Scanner(System.in);
		name=name1.nextLine();
		System.out.print("请输入密码:");
		Scanner passworld1=new Scanner(System.in);
		passworld=passworld1.nextLine();
		user.put(name,passworld);
		message.put(name,0f);
		System.out.println("开户成功");
	
	}

(2)销户

public static void selling() {
		System.out.print("请输入用户名:");
		Scanner name1=new Scanner(System.in);
		name=name1.nextLine();
		System.out.print("请输入密码:");
		Scanner passworld1=new Scanner(System.in);
		passworld=passworld1.nextLine();
		if(user.containsKey(name))
		{
			String mypassworld=user.get(name);
			if(mypassworld.equals(passworld)) {
				user.remove(name);
				message.remove(name);
				System.out.println("销户成功");
			}
			else
				System.out.println("用户密码不正确");
		}
		else 
			System.out.println("不存在该用户");
	}

(3)余额查询

public static void inquire() {//余额查询
		System.out.print("请输入用户名:");
		Scanner name1=new Scanner(System.in);
		name=name1.nextLine();
		System.out.print("请输入密码:");
		Scanner passworld1=new Scanner(System.in);
		passworld=passworld1.nextLine();
		if(user.containsKey(name))
		{
			String mypassworld=user.get(name);
			if(mypassworld.equals(passworld)) {
				amount=message.get(name);
				System.out.printf("你的余额为:"+"%.2f",amount);
				System.out.println();
			}
			else 
				System.out.println("用户密码不正确");
		}
		else 
			System.out.println("不存在该用户");
	}

(4)存款

public static void deposit() {//存款
		System.out.print("请输入用户名:");
		Scanner name1=new Scanner(System.in);
		name=name1.nextLine();
		System.out.print("请输入密码:");
		Scanner passworld1=new Scanner(System.in);
		passworld=passworld1.nextLine();
		if(user.containsKey(name))
		{
			String mypassworld=user.get(name);
			if(mypassworld.equals(passworld)) {
				amount=message.get(name);
				System.out.print("请输入存入的金额:");
				Scanner money1=new Scanner(System.in);
				float money=money1.nextFloat();
				amount+=money;
				message.put(name, amount);//把存取的金额存到哈希表中
				System.out.printf("存款成功你的余额为:"+"%.2f",amount);
				System.out.println();
			}
			else 
				System.out.println("用户密码不正确");
		}
		else 
			System.out.println("不存在该用户");
	}

(5)取款

public static void withdrawal() {//取款
		System.out.print("请输入用户名:");
		Scanner name1=new Scanner(System.in);
		name=name1.nextLine();
		System.out.print("请输入密码:");
		Scanner passworld1=new Scanner(System.in);
		passworld=passworld1.nextLine();
		if(user.containsKey(name))
		{
			String mypassworld=user.get(name);
			if(mypassworld.equals(passworld)) {
				amount=message.get(name);
				System.out.print("请输入取出的金额:");
				Scanner money1=new Scanner(System.in);
				float money=money1.nextFloat();
				if(amount<money) 
					System.out.println("取款失败,余额不足");
				else {
					amount=amount-money;
					message.put(name, amount);
					System.out.printf("取款成功你的余额为:"+"%.2f",amount);
					System.out.println();
				}
			}
			else 
				System.out.println("用户密码不正确");
		}
		else 
			System.out.println("不存在该用户");
	}

(6)转账

public static void transfer() {//转账
		System.out.print("请输入用户名:");
		Scanner name1=new Scanner(System.in);
		name=name1.nextLine();
		System.out.print("请输入密码:");
		Scanner passworld1=new Scanner(System.in);
		passworld=passworld1.nextLine();
		if(user.containsKey(name))
		{
			String mypassworld=user.get(name);
			if(mypassworld.equals(passworld)) {
				amount=message.get(name);
				System.out.print("请输入转出的金额:");
				Scanner money1=new Scanner(System.in);
				float money=money1.nextFloat();
				System.out.print("请输入要转入的账户:");
				Scanner name2=new Scanner(System.in);
				String name3=name2.nextLine();//要转入的账户
				if(user.containsKey(name3)) {
					if(amount<money) {
						System.out.println("转账失败,余额不足");
					}
					else {
						amount=amount-money;
						message.put(name, amount);
						message.put(name3, money);
						System.out.printf("取款成功你的余额为:"+"%.2f",amount);
						System.out.println();
					}
				}
				else
					System.out.println("要转入的账户不存在");
			}
			else 
				System.out.println("用户密码不正确");
		}
		else 
			System.out.println("不存在该用户");
	}

源码

package homework;
import java.util.HashMap;
import java.util.Scanner;
public class AtmSystem {
	protected static float amount=0;//余额
	private static String name;//用户
	private static String passworld;//密码
	static HashMap <String,String>user=new HashMap<String,String>();
	static HashMap <String,Float>message=new HashMap<String,Float>();
	public static void menu() {
		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("**********退出:        0***********");
	}
	public static void account() {
		System.out.print("请输入用户名:");
		Scanner name1=new Scanner(System.in);
		name=name1.nextLine();
		System.out.print("请输入密码:");
		Scanner passworld1=new Scanner(System.in);
		passworld=passworld1.nextLine();
		user.put(name,passworld);
		message.put(name,0f);
		System.out.println("开户成功");
	
	}
	public static void selling() {
		System.out.print("请输入用户名:");
		Scanner name1=new Scanner(System.in);
		name=name1.nextLine();
		System.out.print("请输入密码:");
		Scanner passworld1=new Scanner(System.in);
		passworld=passworld1.nextLine();
		if(user.containsKey(name))
		{
			String mypassworld=user.get(name);
			if(mypassworld.equals(passworld)) {
				user.remove(name);
				message.remove(name);
				System.out.println("销户成功");
			}
			else
				System.out.println("用户密码不正确");
		}
		else 
			System.out.println("不存在该用户");
	}
	public static void inquire() {//余额查询
		System.out.print("请输入用户名:");
		Scanner name1=new Scanner(System.in);
		name=name1.nextLine();
		System.out.print("请输入密码:");
		Scanner passworld1=new Scanner(System.in);
		passworld=passworld1.nextLine();
		if(user.containsKey(name))
		{
			String mypassworld=user.get(name);
			if(mypassworld.equals(passworld)) {
				amount=message.get(name);
				System.out.printf("你的余额为:"+"%.2f",amount);
				System.out.println();
			}
			else 
				System.out.println("用户密码不正确");
		}
		else 
			System.out.println("不存在该用户");
	}
	public static void deposit() {//存款
		System.out.print("请输入用户名:");
		Scanner name1=new Scanner(System.in);
		name=name1.nextLine();
		System.out.print("请输入密码:");
		Scanner passworld1=new Scanner(System.in);
		passworld=passworld1.nextLine();
		if(user.containsKey(name))
		{
			String mypassworld=user.get(name);
			if(mypassworld.equals(passworld)) {
				amount=message.get(name);
				System.out.print("请输入存入的金额:");
				Scanner money1=new Scanner(System.in);
				float money=money1.nextFloat();
				amount+=money;
				message.put(name, amount);//把存取的金额存到哈希表中
				System.out.printf("存款成功你的余额为:"+"%.2f",amount);
				System.out.println();
			}
			else 
				System.out.println("用户密码不正确");
		}
		else 
			System.out.println("不存在该用户");
	}
	public static void withdrawal() {//取款
		System.out.print("请输入用户名:");
		Scanner name1=new Scanner(System.in);
		name=name1.nextLine();
		System.out.print("请输入密码:");
		Scanner passworld1=new Scanner(System.in);
		passworld=passworld1.nextLine();
		if(user.containsKey(name))
		{
			String mypassworld=user.get(name);
			if(mypassworld.equals(passworld)) {
				amount=message.get(name);
				System.out.print("请输入取出的金额:");
				Scanner money1=new Scanner(System.in);
				float money=money1.nextFloat();
				if(amount<money) 
					System.out.println("取款失败,余额不足");
				else {
					amount=amount-money;
					message.put(name, amount);
					System.out.printf("取款成功你的余额为:"+"%.2f",amount);
					System.out.println();
				}
			}
			else 
				System.out.println("用户密码不正确");
		}
		else 
			System.out.println("不存在该用户");
	}
	public static void transfer() {//转账
		System.out.print("请输入用户名:");
		Scanner name1=new Scanner(System.in);
		name=name1.nextLine();
		System.out.print("请输入密码:");
		Scanner passworld1=new Scanner(System.in);
		passworld=passworld1.nextLine();
		if(user.containsKey(name))
		{
			String mypassworld=user.get(name);
			if(mypassworld.equals(passworld)) {
				amount=message.get(name);
				System.out.print("请输入转出的金额:");
				Scanner money1=new Scanner(System.in);
				float money=money1.nextFloat();
				System.out.print("请输入要转入的账户:");
				Scanner name2=new Scanner(System.in);
				String name3=name2.nextLine();//要转入的账户
				if(user.containsKey(name3)) {
					if(amount<money) {
						System.out.println("转账失败,余额不足");
					}
					else {
						amount=amount-money;
						message.put(name, amount);
						message.put(name3, money);
						System.out.printf("取款成功你的余额为:"+"%.2f",amount);
						System.out.println();
					}
				}
				else
					System.out.println("要转入的账户不存在");
			}
			else 
				System.out.println("用户密码不正确");
		}
		else 
			System.out.println("不存在该用户");
	}
	public static void main(String[] args) {
		int item=0;//选项
		do {
			AtmSystem.menu();
			System.out.print("请输入你的选择:");
			Scanner s=new Scanner(System.in);
			item=s.nextInt();
			switch(item) {
			case 0:
				System.out.println("退出成功");
				break;
			case 1:
				AtmSystem.account();//开户
				break;
			case 2:
				AtmSystem.selling();//销户
				break;
			case 3:
				AtmSystem.inquire();//余额查询
				break;
			case 4:
				AtmSystem.deposit();//存款
				break;
			case 5:
				AtmSystem.withdrawal();
				break;
			case 6:
				AtmSystem.transfer();
				break;
			default:
				System.out.println("输入错误");
				break;
			}
		}while(item!=0);
		
	}
}

运行结果:

总结:总的来说题目不算太难,这个ATM管理系统是用哈希表存储数据,根据哈希表键值对的特点来存储账号和密码,然后用do`while循环
来进行系统的控制,这次的作业也提升了一下自己。

psp2.1 任务内容 计划完成需要的时间 实际完成需要的时间
planning 计划 15 14
estimate 估计这个任务需要多少时间,并规划大致工作步骤 15 30
development 开发 20 25
analysis 需求分析 16 8
design spec 生成设计文档 21 12
design review 设计复审 6 5
coding standard 代码规范 5 3
design 具体设计 10 16
coding 具体编码 35 37
code review 代码复审 6 8
test 测试 10 6
reporting 报告 6 8
test reporting 测试报告 3 2
size measurement 计算工作量 3 2
postmortem & process improvement plan 总结并提出改进计划 5 8
posted @ 2020-11-17 19:01  592晚安  阅读(118)  评论(0)    收藏  举报