IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 文件操作代替数据库模拟的ATM机 -> 正文阅读

[大数据]文件操作代替数据库模拟的ATM机

1.账户类:用来存放账户的卡号,密码和余额等信息,简单封装一下。然后设置了一个表示状态的字段,只有在字段的状态为true时才可以修改密码,存取款等操作。

package allclass;

import java.io.Serializable;
public class Account implements Serializable{

    private String cardid;
    private String password;
    private boolean userstatus=false;
    private double surplus=0.0;

    public Account() {
    }

    public Account(String cardid, String password) {
        this.cardid = cardid;
        this.password = password;
    }

    public String getCardid() {

        return cardid;
    }

    public void setCardid(String cardid) {

        this.cardid = cardid;
    }

    private String getPassword() {

        return password;
    }

    public void setPassword(String password) {
        if(this.userstatus)
        this.password = password;
        else
            System.out.println("请先登录!");
    }

    public boolean getUserstatus() {
        return userstatus;
    }

    public void setUserstatus(boolean userstatus) {
        this.userstatus = userstatus;
    }

    public double getSurplus() {
        if(this.userstatus)
            return surplus;
        else{
            System.out.println("请先登录!");
            return 0;
        }

    }

    public void setSurplus(double surplus) {
        if(this.userstatus)
            this.surplus = surplus;
        else
            System.out.println("请先登录!");

    }

    public boolean matchpassword(String password){
        if(this.getPassword().equals(password)){
            return true;
        }
        else{
            return false;
        }
    }

}

2.线程任务类:主要用来模拟和用户的交互,两个while循环来模拟登录/注册操作和存取款操作,用用户的卡号作为文件名,创建文件,并利用io流将对象写入文件,保存此账户类。注册后登录,校验用户输入的账号密码和文件中存储的是否一致。

package allclass;

import java.io.*;
import java.util.Scanner;

public class UserAccess implements Runnable {
    @Override
    public void run() {
        boolean usestatus=true;
        Scanner userinput=new Scanner(System.in);

        while(usestatus){
            System.out.println("登录请按1"+"\n"+"注册请按2"+"\n"+"退出请按3");
            String options123=userinput.next();
            //用户登录;
            System.out.println("正常输入");
            if(options123.equals("1")){
                System.out.println("请输入卡号:");
                String userid=userinput.next();
                System.out.println("请输入密码:");
                String userpassword=userinput.next();

                ObjectInputStream in = null;
                try {
                    //获取密码,匹配密码;
                    in = new ObjectInputStream(new FileInputStream("userdata\\"+userid));
                    Account user=(Account) in.readObject();
                    in.close();
                    if (user.matchpassword(userpassword)){
                        System.out.println("登陆成功");
                        user.setUserstatus(true);
                        //标记账号为登录状态,并且开始执行用户操作。
                        ObjectOutputStream out=new ObjectOutputStream(new FileOutputStream("userdata\\"+userid));
                        while(user.getUserstatus()){
                            System.out.println("存钱请按------>1"+"\n"+"取钱请按------>2"+"\n"+"修改密码请按--->3"+"\n"+"余额查询请按--->4\n"+"推出请按------>5");
                            String useraction123=userinput.next();
                            if (useraction123.equals("1")){
                                System.out.println("请输入存入数额(元):");
                                double savemoney=userinput.nextDouble();
                                user.setSurplus(user.getSurplus()+savemoney);
                                System.out.println("存钱成功");
                            }

                            else if(useraction123.equals("2")){
                                System.out.println("请输入取款数额(元):");
                                double takemoney=userinput.nextDouble();
                                user.setSurplus(user.getSurplus()-takemoney);
                                System.out.println("取款成功");
                            }

                            else if (useraction123.equals("3")){
                                System.out.println("请输入新密码:");
                                String newpassword=userinput.next();
                                user.setPassword(newpassword);
                                System.out.println("修改成功");
                            }

                            else if (useraction123.equals("5")){
                                user.setUserstatus(false);
                            }

                            else{
                                System.out.println(user.getSurplus());
                            }


                        }
                        out.writeObject(user);
                        out.close();
                    }
                    else{
                        continue;
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }

            }
            //用户注册;
            else if(options123.equals("2")){
                System.out.println("请设置卡号:");
                String userid=userinput.next();
                System.out.println("请设置密码:");
                String userpassword=userinput.next();
                Account newuser=new Account(userid,userpassword);

                try {
                    ObjectOutputStream out=new ObjectOutputStream(new FileOutputStream("userdata\\"+userid));
                    out.writeObject(newuser);
                    System.out.println("注册成功,请牢记您的账号密码!");
                    out.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            //退出;
            else{
                usestatus=false;
                continue;
            }

        }
    }
}

3.主类:将任务线程放入线程池,开始运行线程。

package allclass;

import java.util.Timer;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;

public class AtuoBank {
    public static void main(String[] args){
        ExecutorService atm=new ThreadPoolExecutor(1,2,3, TimeUnit.DAYS,new ArrayBlockingQueue<>(5));
        UserAccess zxr=new UserAccess();
        atm.execute(zxr);
    }
}

????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????by:河师大小菜狗

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-02-04 11:06:05  更:2022-02-04 11:08:06 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 12:33:11-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码