一篇文章教你实现数据管理系统

在实现数据管理系统之前我们需要先掌握几个知识:

一、输入语句

  • 输入语句
    • Scanner:输入各种类型数据的方法
      • 比如字符串(string) 整数(int)浮点数(double float)……
  • System:
    • System.out.println(); 输出语句
    • System.in; 输入接口
    • System.exit();
    • System.gc(); JVM的垃圾回收器 将一些没用的数据清理掉 不占内存
      代码例如:
public class ScannerInputData {
    public static void main(String[] args) {
        // 创建一个Scanner对象 传入一个System.in的参数
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入字符串");
        String str1 = sc.next();
        System.out.println("您输入的字符串为:"+str1);
        System.out.println("请输入整数");
        int num = sc.nextInt();
        System.out.println("您输入的是整数:" + num);
        System.out.println("请输入一行字符串:");
        sc.nextLine();// 吸收多余的符号 回车
        String str = sc.nextLine();// 读取一行字符串1
        System.out.println("您输入的是:" + str);
        System.out.println("请输入一个浮点数:");
        double d = sc.nextDouble();
        System.out.println("您输入的是:" + d);
        // nextInt 后面如果是 nextLine 会直接跳过nextLine读取 
        // 解决办法 后面接一个sc.nextLine 用来吸收回车符号 
    }
}

运行结果为:
在这里插入图片描述

二、数组

  • 数组
    • 格式: 数组所存储的数据的类型[] 数组变量名 = new 数组所存储的数据的类型[长度];
      • 例如:
      • String[] arr1 = new String[10];
        
    • 每个数组定义好之后,都会给其中的数据进行默认赋值
    • 默认值:
      • 基本数据类型默认值: 数字类型 - 0/0.0 字符类型-0空字符 Boolean-false
      • 引用数据类型: 字符串 - null 其他任何类-null
    • 长度: 数组的长度设定好之后 不可变,数组的长度是一个常量
    • 下标: 数组中每个存储空间的房间号
      • 规律: 从0开始 依次递增1
      • 最大下标: 数组的长度-1;
    • 使用数组:
      • 存: 数组名[下标]=值; arr[5]=10; arr1[2]=“hello”;
      • 取: 数据类型 变量名 = 数组名[下标]; int n = arr[5]; String str = arr1[2];
      • 存取都可以通过循环进行批量操作:
        for(int i=0;i<arr.length;i++){ arr[i]=值; }
public class ArrayDema {
    public static void main(String[] args) {
        // 定义数组:
        int [] arr = new int[20];
        // 随机数
        // 存入数据
        for (int i = 0; i < arr.length; i++) {
            arr[i] = (int) (Math.random() * 10);
        }
        // 取出数据查看
        for (int i = 0; i < arr.length; i++) {
            int n = arr[i];
            System.out.print(" " + n);
        }
    }
}

三、银行管理系统

银行用户类:

在银行管理系统中我们会用到一个自己创建的类,来存储我们的数据
例如:

public class BankUser {
    int id;
    String userName;
    String pwd;
    float money;
    int points;
//
    public String toString() {
        String info = "User{id=" + id + ",userName=" + userName
                + ",password=" + pwd + ",money=" + money +",points=" + points +"}";
        return info;
    }
}

银行管理系统:

  • 属性:

    • 最大数据量:maxsize
    • 存储数组 BankUser[ ] userList = new User[maxSize];
    • 实时的数据个数 size
  • 方法:

    • 系统启动的方法:
      • 1: 进入主页功能模块
      • 2: 根据用户在主页模块选择的功能做分流 根据选择调用下面的方法之一执行
    • save方法(存钱):
      • 检测是否具有空闲空间
      • 需要用户输入用户名
      • 输入密码
      • 再将账号密码存入一个新的用户对象中
      • 再将用户对象设置好id存入userList中
      • size++;
    • withdraw方法(取钱):
      • 需要用户输入用户名
      • 输入密码并检测正确性
      • 输入取钱金额并判断是否有足够余额
      • 在取钱之后自动更新账号余额
    • get方法:
      • 根据用户需求 选择不同查询模式
      • id 查询是否有该id 并作出相应反应
      • userName 查询是否有该id 并作出相应反应
      • all 打印所有数组内容
    • exit方法:
      • 退出系统
public class BankManage {
    //属性:
    //最大数据量 maxSize
    final int maxSize = 100;
    //创建数组
    BankUser [] userlist = new BankUser[maxSize];
    //实时的数据个数
    int size;
    float money;
    public void lunch(){
        //主页功能模块
        Scanner sc = new Scanner(System.in);
        while (true){
            System.out.println("---------------------------");
            System.out.println("----欢迎使用数据录入管理系统----");
            System.out.println("---------------------------");
            System.out.println("请输入需要使用功能指令: " +
                    "\n 存钱-save  取钱-withdraw 查询-get 退出-exit");
            String action = sc.nextLine();
            if(action.equals("save")){
                save(sc);
            }else if (action.equals("withdraw")){
                withdraw(sc);
            }else if (action.equals("get")){
                get(sc);
            }else if (action.equals("exit")){
                System.exit(0);// 退出进程
            } else {
                System.err.println("~~输入无效请重新输入~~");
            }
            sc.nextLine();
        }
    }

    public void save(Scanner sc){
        //- 检测是否具有空闲空间(后续扩展为扩容机制)
        if(size>=maxSize){
            System.out.println("当前系统用户已满,无法存入数据");
            return;
        }
        //- 需要用户输入用户名
        System.out.println("请输入用户名:");
        String userName = sc.nextLine();
        //- 输入密码
        System.out.println("请输入密码:");
        String pwd = sc.nextLine();
        //输入金额
        System.out.println("请输入存取金额:");
        long money = sc.nextLong();
        BankUser user = new BankUser();
        //- 再将账号密码存入一个新的用户对象中
        user.userName = userName;
        user.pwd = pwd;
        user.money += money;
        user.points+= money/10;
        //- 再将用户对象设置好id存入userList中
        user.id = size;
        userlist[size] = user;
        //- size++;
        size++;
        System.out.println("存钱成功!");
        System.out.println(user.toString());
    }

    public void get(Scanner sc) {
        System.out.println("请输入选择需要查询依据类型: id | userName | all ");
        String action = sc.nextLine();
        if (action.equals("id")) {
            System.out.println("请输入需要查询的id:");
            int id = sc.nextInt();
            sc.nextLine();//吸收多余回车符号
            // 遍历整个数组查找相同的id
            for (int i = 0; i < size; i++) {
                // 取出
                BankUser user = userlist[i];
                if (user.id == id) {
                    System.out.println(user.toString());
                    System.out.println("查询成功!");
                    return;
                }
            }
            System.out.println("查找失败,无此信息!");
        } else if (action.equals("userName")) {
            System.out.println("请输入需要查询的用户名:");
            String name = sc.nextLine();
            for (int i = 0; i < size; i++) {
                BankUser user = userlist[i];
                 if(user.userName.equals(name)){
                System.out.println(user.toString());
                System.out.println("查询成功!");
                return;
                }
            }
            System.out.println("查找失败,无此信息!");
        } else if (action.equals("all")) {
            for (int i = 0; i < size; i++) {
                BankUser user = userlist[i];
                System.out.println(user.toString());
            }
            System.out.println("查询成功!");
            return;
        }else {
            System.out.println("输入有误!");
            return;
        }
    }

    public void withdraw(Scanner sc){
        System.out.println("请输入取钱用户名:");
        String name =sc.nextLine();
        for(int i=0;i<size;i++){
            BankUser user =userlist[i];
            if(user.userName.equals(name)){
                System.out.println("请输入密码:");
                String pwd=sc.nextLine();
                if(user.pwd.equals(pwd)){
                    System.out.println("请输入想要取出的金额:");
                    long money=sc.nextLong();
                    if(user.money>=money){
                        user.money-=money;
                        System.out.println("取钱成功!账户剩余:"+user.money);
                    }else {
                        System.out.println("账号余额不足!!!");
                    }
                    return;
                }else {
                    System.out.println("密码错误!");
                    return;
                }
            }else {
                System.out.println("查无此人!");
                return;
            }
        }
    }


    public static void main(String[] args) {
        BankManage bankManage =   new BankManage();
        bankManage.lunch();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值