控制台项目-学生管理系统(io流实现)

简介: 控制台项目-学生管理系统(io流实现)

简介

该项目是我大一学习javaSE阶段写过的一个新手项目。适合处在学习JavaSE阶段的朋友作为阶段性练手项目,主要是练习一下基本的流程控制结构,循环结构,编写类、List集合的简单使用,IO的文件简单读取写入。

功能介绍

在控制台实现,登录,注册,学生信息增删查改,通过输出流把用户信息,学生信息写入文本文件,进行持久化存储,通过输入流把信息读取到内存打印到控制台实现查询。

目录结构:

运行示例

项目代码:

 

实现流程

定义学生类,用户类

 
public class Student {
    
    String id;//学号
    String name;//姓名
    String phone;//电话
    String major;//专业
    String address;//住址
    
    
    
    public Student(){}
    
    
    public  Student(String id,String name,String phone,String major,String address){
        this.id=id;
        this.name=name;
        this.phone=phone;
        this.major=major;
        this.address=address;
        
        
    }
    
    
    public String getAddress() {
        return address;
    }
 
 
    public void setAddress(String address) {
        this.address = address;
    }
 
 
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getPhone() {
        return phone;
    }
    public void setPhone(String phone) {
        this.phone = phone;
    }
    public String getMajor() {
        return major;
    }
    public void setMajor(String major) {
        this.major = major;
    }
 
public class Userinfo {
    String account;//账号
    String password;//密码
    
    
    public Userinfo(){}
    public Userinfo(String account, String password) {
        super();
        this.account = account;
        this.password = password;
    }
    public String getAccount() {
        return account;
    }
    public void setAccount(String account) {
        this.account = account;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    

功能代码

 
public class StudentDemo {
    public static void main(String[] args) throws IOException {
        String fileName = "学生信息.txt";
        String fileName1 = "用户信息.txt";
        // 登录
        DL(fileName1);
        // 管理
        GL(fileName);
 
    }
 
    // 登录界面
    public static void DL(String fileName1) throws IOException {
 
        while (true) {
            boolean flag = false;
            System.out.println("**********xxxx学生管理系统**********");
            System.out.println("\t\t1.登录");
            System.out.println("\t\t2.注册");
            System.out.print("选择:");
            Scanner sc = new Scanner(System.in);
            String choose = sc.nextLine();
            switch (choose) {
            case "1":
                denglu(fileName1);
                flag = true;
                break;
            case "2":
                zhuce(fileName1);
                break;
            default:
                System.out.println("错误!!!");
                break;
            }
            if (flag) {
                break;
            }
        }
    }
 
    // 用户注册
    public static void zhuce(String fileName1) throws IOException {
        ArrayList<Userinfo> array = new ArrayList<Userinfo>();
        Scanner sc = new Scanner(System.in);
        dlReader(fileName1, array);
        while (true) {
            boolean flag = false;
            System.out.print("注册账号:");
            String account = sc.nextLine();
            // 判断是否已经注册过!!!!
            ///
 
            for (int i = 0; i < array.size(); i++) {
                Userinfo u1 = array.get(i);
                if (u1.getAccount().equals(account)) {
                    System.out.println("该用户已注册!!!");
                    flag = true;
                    break;
 
                }
 
            }
            if (flag) {
                zhuce(fileName1);// 不要放for循环里前否则会多次循环!!!!!!!
                break;
            }
            ///
            System.out.print("注册密码:");
            String password = sc.nextLine();
            System.out.print("确认密码:");
            String password1 = sc.nextLine();
 
            if (password.equals(password1)) {
                Userinfo u = new Userinfo();
                u.setAccount(account);
                u.setPassword(password1);
 
                array.add(u);
 
                dlWriter(fileName1, array);
 
                System.out.println("注册成功!");
                break;
 
            } else {
                System.out.println("密码不一致请重新注册!!!");
            }
        }
    }
 
    // 用户登录
    public static void denglu(String fileName1) throws IOException {
        ArrayList<Userinfo> array = new ArrayList<Userinfo>();
        Scanner sc = new Scanner(System.in);
        dlReader(fileName1, array);
 
        while (true) {
            boolean flag = false;
            System.out.print("登录账号:");
            String account = sc.nextLine();
            System.out.print("登录密码:");
            String password = sc.nextLine();
            for (int i = 0; i < array.size(); i++) {
                Userinfo u = array.get(i);
                if (u.getAccount().equals(account) && u.getPassword().equals(password)) {
                    System.out.println("登录成功!");
                    flag = true;
                    break;
                }
 
            }
            if (!flag) {
                System.out.println("账号或密码错误!!!");
            }
            if (flag) {
                break;
            }
        }
 
    }
 
    // 登录界面-读
    public static void dlReader(String fileName1, ArrayList<Userinfo> array) throws IOException {
        BufferedReader br = new BufferedReader(new FileReader(fileName1));
 
        String line;
        while ((line = br.readLine()) != null) {
            String[] readDate = line.split("\t");
            Userinfo u = new Userinfo();
            u.setAccount(readDate[0]);
            u.setPassword(readDate[1]);
 
            array.add(u);
        }
        br.close();
    }
 
    // 登录界面-写
    public static void dlWriter(String fileName1, ArrayList<Userinfo> array) throws IOException {
        BufferedWriter bw = new BufferedWriter(new FileWriter(fileName1));
        for (int i = 0; i < array.size(); i++) {
            Userinfo u = array.get(i);
            StringBuilder sb = new StringBuilder();
            sb.append(u.getAccount()).append("\t").append(u.getPassword());
            bw.write(sb.toString());
            bw.newLine();
            bw.flush();
 
        }
 
        bw.close();
 
    }
 
    // 管理界面
    public static void GL(String fileName) throws IOException {
        while (true) {
            System.out.println("**********xxxx学生管理系统**********");
            System.out.println("\t\t1.增");
            System.out.println("\t\t2.删");
            System.out.println("\t\t3.查");
            System.out.println("\t\t4.改");
            System.out.println("\t\t5.退");
            System.out.print("选择:");
            Scanner sc = new Scanner(System.in);
            String choose = sc.nextLine();
            switch (choose) {
            case "1":
                add(fileName);
                break;
            case "2":
                remove(fileName);
                break;
            case "3":
                fine(fileName);
                break;
            case "4":
                update(fileName);
                break;
            case "5":
                System.out.println("退出成功!");
                System.exit(0);
                break;
            default:
                System.out.println("错误!!!");
                break;
            }
        }
 
    }
 
    // 增
    public static void add(String fileName) throws IOException {
        ArrayList<Student> array = new ArrayList<Student>();
        Scanner sc = new Scanner(System.in);
        boolean flag = false;
        System.out.print("学号:");
        String id = sc.nextLine();
        glReader(fileName, array);
        for (int i = 0; i < array.size(); i++) {
            Student s = array.get(i);
            if (s.getId().equals(id)) {
                System.out.println("学号存在!!!");
                flag = true;
                break;
            }
        }
        if (flag) {
            add(fileName);
        }
        System.out.print("姓名:");
        String name = sc.nextLine();
        System.out.print("电话:");
        String phone = sc.nextLine();
        System.out.print("专业:");
        String major = sc.nextLine();
        System.out.print("地址:");
        String address = sc.nextLine();
 
        Student s = new Student();
        s.setId(id);
        s.setName(name);
        s.setPhone(phone);
        s.setMajor(major);
        s.setAddress(address);
        array.add(s);
 
        glWriter(fileName, array);
        System.out.println("添加成功!");
 
    }
 
    // 删
    public static void remove(String fileName) throws IOException {
        ArrayList<Student> array = new ArrayList<Student>();
        Scanner sc = new Scanner(System.in);
        glReader(fileName, array);
        while (true) {
            boolean flag = false;
            System.out.print("删除学号:");
            String id = sc.nextLine();
            for (int i = 0; i < array.size(); i++) {
                Student s = array.get(i);
                if (s.getId().equals(id)) {
                    System.out.println("学号存在!");
                    array.remove(i);
                    System.out.println("删除成功!");
                    flag = true;
                    break;
                } else if ((i == array.size() - 1) && (!s.getId().equals(id))) {
                    System.out.println("学号不存在!!!");
 
                }
 
            }
            if (flag) {
                break;
            }
        }
        glWriter(fileName, array);
    }
 
    // 查
    public static void fine(String fileName) throws IOException {
        ArrayList<Student> array = new ArrayList<Student>();
        Scanner sc = new Scanner(System.in);
        System.out.println("\t\t1.全部查询");
        System.out.println("\t\t2.关键字查询");
        System.out.print("选择:");
        String choose = sc.nextLine();
        switch (choose) {
        case "1":
            qbfine(fileName, array);
            break;
        case "2":
            gjfine(fileName, array);
            break;
        default:
            System.out.println("错误!!!");
            break;
        }
    }
 
    // 全部查询
    public static void qbfine(String fileName, ArrayList<Student> array) throws IOException {
        glReader(fileName, array);
        System.out.println("-------------------------------------------------------------------------");
        System.out.println("【学号】                【姓名】                【电话】                【专业】                【地址】");
        if (array.size() != 0) {
            for (int i = 0; i < array.size(); i++) {
                Student s = array.get(i);
                System.out.println(s.getId() + "    " + s.getName() + "\t    " + s.getPhone() + "\t  " + s.getMajor()
                        + "\t" + s.getAddress());
            }
        } else {
            System.out.println("无信息!!!");
        }
        System.out.println("-------------------------------------------------------------------------");
    }
 
    // 关键字查询
    public static void gjfine(String fileName, ArrayList<Student> array) throws IOException {
        glReader(fileName, array);
        Scanner sc = new Scanner(System.in);
        System.out.println("关键字:");
        String gj = sc.nextLine();
        System.out.println("-------------------------------------------------------------------------");
        System.out.println("【学号】                【姓名】                【电话】                【专业】                【地址】");
        if (array.size() != 0) {
            for (int i = 0; i < array.size(); i++) {
                Student s = array.get(i);
                if (s.getId().equals(gj) || s.getName().equals(gj) || s.getPhone().equals(gj) || s.getMajor().equals(gj)
                        || s.getAddress().equals(gj)) {
                    System.out.println(s.getId() + "    " + s.getName() + "\t    " + s.getPhone() + "\t  "
                            + s.getMajor() + "\t" + s.getAddress());
                } else if (i == array.size() - 1 && !s.getId().equals(gj) || s.getName().equals(gj)
                        || s.getPhone().equals(gj) || s.getMajor().equals(gj) || s.getAddress().equals(gj)) {
                    System.out.println("\t\t\t\t无信息!!!");
                }
            }
        } else {
            System.out.println("\t\t\t\t无信息!!!");
        }
 
        System.out.println("-------------------------------------------------------------------------");
    }
 
    // 改
    public static void update(String fileName) throws IOException {
        ArrayList<Student> array = new ArrayList<Student>();
        Scanner sc = new Scanner(System.in);
        glReader(fileName, array);
        while (true) {
            boolean flag = false;
            System.out.println("修改学号:");
            String id = sc.nextLine();
            for (int i = 0; i < array.size(); i++) {
                Student s = array.get(i);
                if (s.getId().equals(id)) {
                    System.out.print("新姓名:");
                    String name = sc.nextLine();
                    System.out.print("新电话:");
                    String phone = sc.nextLine();
                    System.out.print("新专业:");
                    String major = sc.nextLine();
                    System.out.print("新地址:");
                    String address = sc.nextLine();
 
                    s.setName(name);
                    s.setPhone(phone);
                    s.setMajor(major);
                    s.setAddress(address);
 
                    array.set(i, s);
                    System.out.println("修改成功!");
 
                    flag = true;
                    break;
                } else if ((i == array.size() - 1) && (!s.getId().equals(id))) {
                    System.out.println("学号不存在!!!");
 
                }
 
            }
            if (flag) {
                break;
            }
 
        }
        glWriter(fileName, array);
 
    }
 
    // 管理界面-读
    public static void glReader(String fileName, ArrayList<Student> array) throws IOException {
        BufferedReader br = new BufferedReader(new FileReader(fileName));
        String line;
        while ((line = br.readLine()) != null) {
            String[] date = line.split(",");
            Student s = new Student();
            s.setId(date[0]);
            s.setName(date[1]);
            s.setPhone(date[2]);
            s.setMajor(date[3]);
            s.setAddress(date[4]);
 
            array.add(s);
 
        }
        br.close();
    }
 
    // 管理界面-写
    public static void glWriter(String fileName, ArrayList<Student> array) throws IOException {
        BufferedWriter bw = new BufferedWriter(new FileWriter(fileName));
        for (int i = 0; i < array.size(); i++) {
            Student s = array.get(i);
            StringBuilder sb = new StringBuilder();
            sb.append(s.getId()).append(",").append(s.getName()).append(",").append(s.getPhone()).append(",")
                    .append(s.getMajor()).append(",").append(s.getAddress());
 
            bw.write(sb.toString());
            bw.newLine();
            bw.flush();
        }
        bw.close();
    }
目录
相关文章
java实战项目超市管理系统控制台版
java实战项目超市管理系统控制台版
168 0
|
2月前
|
Java 应用服务中间件 Linux
Tomcat运行日志字符错乱/项目启动时控制台日志乱码问题
总结: 通过以上几种方法,概括如下:指定编码格式、设置JVM的文件编码、修改控制台输出编码、修正JSP页面编码和设置过滤器。遵循这些步骤,你可以依次排查和解决Tomcat运行日志字符错乱及项目启动时控制台日志乱码问题。希望这些建议能对你的问题提供有效的解决方案。
411 16
|
4月前
|
弹性计算 运维 监控
【阿里云】控制台使用指南:从创建ECS到系统诊断测评
本文介绍了如何通过阿里云获取ECS云服务器并进行操作系统配置与组件安装,以实现高效的资源管理和系统监控。阿里云凭借强大的基础设施和丰富的服务成为用户首选。文中详细描述了获取ECS、RAM授权、开通操作系统控制台及组件安装的步骤,并展示了如何利用控制台实时监控性能指标、诊断系统问题及优化性能。特别针对idle进程进行了深入分析,提出了优化建议。最后,建议定期进行系统健康检查,并希望阿里云能推出更友好的低成本套餐,满足学生等群体的需求。
282 17
【阿里云】控制台使用指南:从创建ECS到系统诊断测评
|
4月前
|
存储 网络协议 安全
Java网络编程,多线程,IO流综合小项目一一ChatBoxes
**项目介绍**:本项目实现了一个基于TCP协议的C/S架构控制台聊天室,支持局域网内多客户端同时聊天。用户需注册并登录,用户名唯一,密码格式为字母开头加纯数字。登录后可实时聊天,服务端负责验证用户信息并转发消息。 **项目亮点**: - **C/S架构**:客户端与服务端通过TCP连接通信。 - **多线程**:采用多线程处理多个客户端的并发请求,确保实时交互。 - **IO流**:使用BufferedReader和BufferedWriter进行数据传输,确保高效稳定的通信。 - **线程安全**:通过同步代码块和锁机制保证共享数据的安全性。
170 23
|
4月前
|
弹性计算 运维 监控
操作系统控制台-健康守护我们的系统
阿里云操作系统控制平台作为新一代云端服务器中枢平台,通过创新交互模式重构主机管理体验。用户可通过API、SDK、CLI等方式进行系统管理,采用图形化控制替代传统命令行操作,集智能运维、集群协调、生态扩展于一体,显著提升企业级IT设施管理效能。通过此平台,用户可以轻松实现运维监控、智能助手、扩展插件管理及订阅服务等功能,大幅降低运维复杂度,提高管理效率。
114 11
|
4月前
|
存储 运维 监控
深度体验阿里云系统控制台:SysOM 让 Linux 服务器监控变得如此简单
作为一名经历过无数个凌晨三点被服务器报警电话惊醒的运维工程师,我对监控工具有着近乎苛刻的要求。记得去年那次大型活动,我们的主站流量暴增,服务器内存莫名其妙地飙升到90%以上,却找不到原因。如果当时有一款像阿里云 SysOM 这样直观的监控工具,也许我就不用熬通宵排查问题了。今天,我想分享一下我使用 SysOM 的亲身体验,特别是它那令人印象深刻的内存诊断功能。
126 1
|
11月前
|
Java 应用服务中间件 Apache
使用IDEA修改Web项目访问路径,以及解决Apache Tomcat控制台中文乱码问题
本文介绍了在IntelliJ IDEA中修改Web项目访问路径的步骤,包括修改项目、模块、Artifacts的配置,编辑Tomcat服务器设置,以及解决Apache Tomcat控制台中文乱码问题的方法。
628 0
使用IDEA修改Web项目访问路径,以及解决Apache Tomcat控制台中文乱码问题
|
10月前
crash —— 获取系统的磁盘IO统计数据
crash —— 获取系统的磁盘IO统计数据
|
Linux 数据处理 C语言
【Linux】基础IO----系统文件IO & 文件描述符fd & 重定向(下)
【Linux】基础IO----系统文件IO & 文件描述符fd & 重定向(下)
153 0
|
缓存 网络协议 算法
【Linux系统编程】深入剖析:四大IO模型机制与应用(阻塞、非阻塞、多路复用、信号驱动IO 全解读)
在Linux环境下,主要存在四种IO模型,它们分别是阻塞IO(Blocking IO)、非阻塞IO(Non-blocking IO)、IO多路复用(I/O Multiplexing)和异步IO(Asynchronous IO)。下面我将逐一介绍这些模型的定义:
565 2