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 |

浙公网安备 33010602011771号