实现一个简单的数据管理系统

实现一个简单的数据管理系统

一.创建一个User类

代码例如:

public class User {
    int id;
    String userName;
    String password;
    public String toString() {
        String info = "User{id=" + id + ",userName=" + userName
                + ",password=" + password + "}";
        return info;
    }
}

这段代码定义了一个名为 User 的类,它有三个属性:id(整数类型)、userName(字符串类型)、password(字符串类型)。类中还包括一个 toString() 方法,该方法用于返回一个描述该对象的字符串。

这段代码的功能是创建一个用户对象,并且提供一种方便的方式来获取用户对象的描述信息。 toString() 方法会返回一个包含用户属性的字符串,其中包括用户的 id、用户名和密码。

二.创建一个管理系统dmpManage

代码如下:

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.Scanner;

public class dmpManage {
    //属性:
//最大数据量 maxSize
    final int maxSize = 100;
    //存储数组
    User[] userList = new User[maxSize];
    //实时的数据个数 size
    int size;
    public void loadDataFromFile() {
        try (BufferedReader reader = new BufferedReader(new FileReader("userdata.txt"))) {
            String line;
            while ((line = reader.readLine()) != null && size < maxSize) {
                String[] parts = line.split(",");
                int id = Integer.parseInt(parts[0]);
                String userName = parts[1];
                String password = parts[2];
                User user = new User();
                user.id = id;
                user.userName = userName;
                user.password = password;
                userList[size++] = user;
            }
        } catch (IOException e) {
            System.err.println("读取文件时出错: " + e.getMessage());
        }
    } // 让Java 读取文件,并将文件中的数据解析并加载到程序中。
    public void lunch() {
        Scanner sc = new Scanner(System.in);
        boolean shouldExit = false; // 添加标志以判断是否退出程序
        while (!shouldExit) {
            System.out.println("----欢迎使用数据录入管理系统----");
            System.out.println("请输入需要使用功能指令: " +
                    "\n 增加-add 查询-get 删除-remove 更新-update 退出-exit");
            String action = sc.nextLine();
            if (action.equals("add")) {
                add(sc);
            } else if (action.equals("get")) {
                get(sc);
            } else if (action.equals("remove")) {
                remove(sc);
            } else if (action.equals("update")) {
                update(sc);
            } else if (action.equals("exit")) {
                shouldExit = true; // 设置退出标志
            } else {
                System.err.println("~~输入无效请重新输入~~");
            }
        }
        // 当退出循环时,调用 DataWriter.writeData 方法
        DataWriter.writeData(userList, size);
    }
    public void add(Scanner sc) {
//- 检测是否具有空闲空间(后续扩展为扩容机制)
        if (size >= maxSize) {
            System.out.println("当前系统负载已满,无法存入数据");
            return;
        }
//- 需要用户输入用户名 add admin admin123
        System.out.println("请输入用户名:");
        String name = sc.nextLine();
//- 检测用户名是否重复
//- 输入密码
        System.out.println("请输入密码:");
        String pwd = sc.nextLine();
//- 再将账号密码存入一个新的用户对象中
        User user = new User();
        user.userName = name;
        user.password = pwd;
//- 再将用户对象设置好id存入userList中
        user.id = size;
        userList[size] = user;
//- size++;
        size++;
        System.out.println("add ok~");
    }

    public void get(Scanner sc) {
        System.out.println("请输入选择需要查询依据类型: id | name | all ");
        String action = sc.nextLine();
        if (action.equals("id")) {
            System.out.println("请输入需要查询的ID:");
            int id = sc.nextInt();
            sc.nextLine();//吸收多余回车符号
// 将userList中每个已存入的用户的id进行一次比较
            for (int i = 0; i < size; i++) {
// 取出
                User user = userList[i];
// 判断
                if (user.id == id) {
                    System.out.println(user.toString());
                    System.out.println("get ok~");
                    return;// 结束查找
                }
            }
            System.out.println("~未找到有效数据~");
        } else if (action.equals("name")) {
            System.out.println("请输入需要查询的用户名:");
            String name = sc.nextLine();
// 将userList中每个已存入的用户的 name进行一次比较
            for (int i = 0; i < size; i++) {
// 取出
                User user = userList[i];
// 判断
                if (user.userName.equals(name)) {
                    System.out.println(user.toString());
                    System.out.println("get ok~");
                    return;// 结束查找
                }
            }
            System.out.println("~未找到有效数据~");
        } else if (action.equals("all")) {
            String allInfo = "";
            for (int i = 0; i < size; i++) {
                User user = userList[i];
                allInfo += user.toString() + "\n";
            }
            System.out.println(allInfo);
            System.out.println("get ok~");
        } else {
            System.out.println("~输入有误!");
        }
    }
    public void remove(Scanner sc) {
        System.out.println("请输入选择需要删除依据类型: id | name ");
        String action = sc.nextLine();
        if (action.equals("id") || action.equals("name")) {
            System.out.println("请输入需要删除的" + (action.equals("id") ? "ID" : "用户名") + ":");
            String input = sc.nextLine();
            boolean found = false;
            for (int i = 0; i < size; i++) {
                User user = userList[i];
                if ((action.equals("id") && user.id == Integer.parseInt(input)) ||
                        (action.equals("name") && user.userName.equals(input))) {
                    found = true;
                    // 移动数组元素来删除用户
                    for (int j = i; j < size - 1; j++) {
                        userList[j] = userList[j + 1];
                    }
                    size--;
                    break;
                }
            }
            if (found) {
                System.out.println("remove ok~");
            } else {
                System.out.println("~未找到有效数据~");
            }
        } else {
            System.out.println("~输入有误!");
        }
    }
    public void update(Scanner sc) {
        System.out.println("请输入需要更新的用户的ID:");
        int id = sc.nextInt();
        sc.nextLine(); // 吸收多余回车符号

        // 遍历 userList 寻找对应 ID 的用户
        for (int i = 0; i < size; i++) {
            User user = userList[i];
            if (user.id == id) {
                // 找到用户后,提示用户输入新的用户名和密码
                System.out.println("请输入新的用户名:");
                String newName = sc.nextLine();
                System.out.println("请输入新的密码:");
                String newPwd = sc.nextLine();

                // 更新用户信息
                user.userName = newName;
                user.password = newPwd;

                System.out.println("更新成功!");
                return; // 结束更新操作
            }
        }
        System.out.println("~未找到对应ID的用户~");
    }
    public void exit(Scanner sc) {
        System.out.println("感谢使用数据录入管理系统,再见!");
        System.exit(0); // 退出进程
    }
}

我们简要分析一下每个函数的作用:

  1. loadDataFromFile() 方法:

    • 作用:从文件中加载用户数据到程序中的 userList 数组中。
    • 实现:使用 BufferedReader 逐行读取文件内容,然后将每行数据解析为 User 对象,并将其存储在 userList 数组中。
  2. lunch() 方法:

    • 作用:启动数据录入管理系统,接受用户输入的指令,并根据指令执行相应的操作。
    • 实现:使用一个循环来接受用户输入的指令,根据不同的指令调用相应的方法来执行对应的操作,直到用户输入 "exit" 指令退出系统。
  3. add(Scanner sc) 方法:

    • 作用:向管理系统中添加新的用户数据。
    • 实现:接受用户输入的用户名和密码,并创建一个新的 User 对象,将其添加到 userList 数组中。
  4. get(Scanner sc) 方法:

    • 作用:根据用户指定的条件查询用户数据。
    • 实现:根据用户输入的查询条件(ID、用户名或者查询所有用户),遍历 userList 数组,并逐一比较用户信息,找到符合条件的用户并输出。
  5. remove(Scanner sc) 方法:

    • 作用:根据用户指定的条件删除用户数据。
    • 实现:根据用户输入的删除条件(ID 或者用户名),在 userList 数组中找到对应的用户,并移除该用户数据。
  6. update(Scanner sc) 方法:

    • 作用:根据用户指定的 ID 更新用户数据。
    • 实现:接受用户输入的 ID,然后遍历 userList 数组,找到对应的用户并提示用户输入新的用户名和密码,最后更新用户信息。
  7. exit(Scanner sc) 方法:

    • 作用:退出数据录入管理系统。
    • 实现:输出退出信息并调用 System.exit(0) 来终止程序执行。

这些方法共同构成了一个简单的数据录入管理系统,使用户能够方便地进行数据的录入、查询、更新和删除操作。

这里还用了一个自定义函数DataWriter

代码如下:

import java.io.FileWriter;
import java.io.IOException;

public class DataWriter {
    public static void writeData(User[] userList, int size) {
        try {
            FileWriter writer = new FileWriter("userdata.txt");
            for (int i = 0; i < size; i++) {
                User user = userList[i];
                writer.write(user.id + "," + user.userName + "," + user.password + "\n");
            }
            writer.close();
            System.out.println("用户数据已成功写入文件 userdata.txt");
        } catch (IOException e) {
            System.err.println("写入文件时出现错误: " + e.getMessage());
        }
    }
}

这段代码定义了一个 DataWriter 类,其中包含了一个名为 writeData 的静态方法,用于将用户数据写入到名为 "userdata.txt" 的文件中。

这个方法接受两个参数:

  1. userList:一个 User 类型的数组,包含了需要写入文件的用户数据。
  2. size:一个整数,表示用户数据在 userList 数组中的实际数量。

writeData 方法的功能是将用户数据按照一定的格式写入到文件中。具体实现如下:

  • 创建一个 FileWriter 对象,用于向文件中写入数据。
  • 遍历 userList 数组,对于每个用户对象,将其 id、用户名和密码以逗号分隔的格式写入到文件中,并在每行末尾添加换行符。
  • 最后关闭文件写入流,并在写入成功时打印提示信息,写入失败时打印错误信息。

这个方法用于与之前的数据加载功能相对应,将程序中的用户数据写入到文件中,以便下次程序运行时能够重新加载这些数据。

三.创建一个程序入口dmpStart

代码如下

public class dmpStart {
    public static void main(String[] args) {
        dmpManage dataManage = new dmpManage();

        // 尝试从文件中加载数据
        dataManage.loadDataFromFile();

        dataManage.lunch();
    }
}

这段代码定义了一个名为 dmpStart 的类,其中包含了一个 main 方法,是程序的入口点。

main 方法中:

  1. 创建了一个名为 dataManagedmpManage 类的对象,用于管理数据。
  2. 调用 dataManage 对象的 loadDataFromFile() 方法,尝试从文件中加载数据。
  3. 调用 dataManage 对象的 lunch() 方法,启动数据录入管理系统。

这个类的主要作用是启动数据录入管理系统,并尝试从文件中加载数据。通过这个入口点,程序可以开始执行数据管理功能,接受用户的指令,执行相应的操作。

四.运行试例

运用add,和get,添加和查看数据,用exit退出并保存数据

  • 20
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值