java课程期末大作业同学录系统设计附全部源码

该同学录系统使用Java编程,包括实体类Student,服务类StudentService和视图类StudentView。系统支持添加、删除、查询学生信息以及导出文件功能。Student类包含学生的基本信息如姓名、性别、生日等。StudentService类用于处理学生数据的增删查操作,而StudentView类实现了用户交互界面。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

同学录系统

实体类
public class Student {
    private int id;//编号
    private String name;//姓名
    private char gender;//性别
    private String birthDate;//生日
    private String contact;//联系方式
    private String email;//email
    private String address;//地址

    public Student(int id, String name, char gender, String birthDate, String contact, String email, String address) {
        this.id = id;
        this.name = name;
        this.gender = gender;
        this.birthDate = birthDate;
        this.contact = contact;
        this.email = email;
        this.address = address;
    }

    // getters and setters
    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public char getGender() {
        return gender;
    }

    public void setGender(char gender) {
        this.gender = gender;
    }

    public String getBirthDate() {
        return birthDate;
    }

    public void setBirthDate(String birthDate) {
        this.birthDate = birthDate;
    }

    public String getContact() {
        return contact;
    }

    public void setContact(String contact) {
        this.contact = contact;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    @Override
    public String toString() {
        return
                "id :" + id +
                        "\t姓名 :" + name +
                        "\t性别 :" + gender +
                        "\t生日 :" + birthDate +
                        "\t联系方式 :" + contact +
                        "\temail :" + email +
                        "\t地址" + address;
    }
}
service类
public class StudentService {
    //定义一个列表存储学生信息
    List<Student> students = new ArrayList<>();
//    定义一个学生对象
    Student student;


    //添加方法
    public void addStudent(Student student) {
//        接收将封装好的对象  并调用list add 方法 添加进去
        students.add(student);
    }
    //删除

    public boolean deleteStudent(int id) {
//        循环查找集合中元素 并赋给student对象
        for (int i = 0; i < students.size(); i++) {
            student = students.get(i);
//            如果id相等返回结果 结束
            if (student.getId() == id) {
                students.remove(i);
                i--;
                return true;
            }
        }
        return false;
    }


    //全查询
    public List<Student> findAll() {
//        返回list 集合
        return students;
    }

    //根据id查询
    public Student findById(int id) {
        //        循环查找集合中元素 并赋给student对象
        for (int i = 0; i < students.size(); i++) {
            student = students.get(i);
            //            如果id相等返回结果 结束
            if (student.getId() == id) {
                return student;
            }
        }
        return null;
    }

    //根据名字查询
//    定义集合 保存根据名字查询的 学生信息
    List<Student> list = new ArrayList<>();

    public List<Student> findByName(String name) {
        //        循环查找集合中元素 并赋给student对象
        for (int i = 0; i < students.size(); i++) {
            student = students.get(i);
            //            如果id相等返回结果 结束
            if (student.getName().equals(name)) {
                return list;
            }
        }
        return null;
    }


    //导出文件

    public void  exportToFile(String filePath) throws IOException {
        //得到导出的文件路径
        FileWriter writer = new FileWriter(filePath);
//        调用缓冲区 达到缓冲效果 减少消耗
        BufferedWriter bufferedWriter = new BufferedWriter(writer);
//        循环写lsit 集合数据
        for (Student item : students) {
            bufferedWriter.write(String.valueOf(item));
            bufferedWriter.newLine();
        }
//        关闭资源
        bufferedWriter.close();
        writer.close();
    }
}

view视图类
public class StudentView {

    //定义学生id自增变量
    int StudentId = 1;
    //控制while循环的loop变量
    boolean loop = true;
    //    实例化service类调用其中方法
    StudentService studentService = new StudentService();
    Scanner scanner = new Scanner(System.in);


    //添加学生信息
    public void addStudent() {
//提示输入一系列信息
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入学生姓名:");
        String name = scanner.next();
        System.out.println("请输入学生性别:");
        char gender = scanner.next().charAt(0);

        System.out.println("请输入学生出生年月:");
        String birthdate = scanner.next();

        System.out.println("请输入学生联系方式:");
        String contact = scanner.next();

        System.out.println("请输入学生E-mail:");
        String email = scanner.next();

        System.out.println("请输入学生通信地址:");
        String address = scanner.next();
//        将输入的信息 封装成 Student对象
        Student student = new Student(StudentId, name, gender, birthdate, contact, email, address);
        //调用添加方法 添加学生
        studentService.addStudent(student);
        System.out.println("添加成功");
//        设置学生编号自增
        StudentId++;
    }

    //删除学生信息
    public void deleteStudent() {
        System.out.println("请输入你要删除的学生id");
        int id = scanner.nextInt();
//        调用service删除方法 如果返回值为false 输出提示信息 结束删除方法
        if (!studentService.deleteStudent(id)) {
            System.out.println("没有找到对应的学生");
            return;
        }
        //否则提示删除成功
        System.out.println("删除成功");
    }

    //修改学生信息

    public void updateStudent() {
        System.out.println("请输入要修改的学生编号:");
        int id = scanner.nextInt();
        //        调用service根据id 查询方法 将返回值封装成Student对象
        Student student = studentService.findById(id);
        //如果对象为为空 提示要修改的学生不存在 结束方法
        if (student == null) {
            System.out.println("学生不存在");
            return;
        }
        //如果不为空 继续输入一系列要修改的信息
        System.out.println("请输入新的学生姓名:" + "(" + student.getName() + ")");
        String name = scanner.next();
        //调用set方法 设置信息 同下
        student.setName(name);
        System.out.println("请输入新的学生性别:" + "(" + student.getGender() + ")");
        char gender = scanner.next().charAt(0);
        student.setGender(gender);
        System.out.println("请输入新的学生出生年月:" + "(" + student.getBirthDate() + ")");
        String birthdate = scanner.next();
        student.setBirthDate(birthdate);
        System.out.println("请输入新的学生联系方式:" + "(" + student.getContact() + ")");
        String contact = scanner.next();
        student.setContact(contact);
        System.out.println("请输入新的学生E-mail:" + "(" + student.getEmail() + ")");
        String email = scanner.next();
        student.setEmail(email);
        System.out.println("请输入新的学生通信地址:" + "(" + student.getAddress() + ")");
        String address = scanner.next();
        student.setAddress(address);
        System.out.println("学生信息已修改!");

    }


    //全查询
    public void findAll() {
//        调用service的全查询将返回的数据 存入list 集合中
        List<Student> list = studentService.findAll();
//        如果为空 打印提示信息 并结束方法
        if (list == null) {
            System.out.println("很遗憾,你还没有同学");
            return;
        }
//        否则输出信息
        list.forEach(System.out::println);
    }

    //根据id查询
    public void findById() {
        System.out.println("请输入学生编号:");
        int id = scanner.nextInt();
//        将返回的数据封装为student对象
        Student student = studentService.findById(id);
//        如果为空 提示不存在 并结束方法
        if (student == null) {
            System.out.println("未找到指定学生信息!");
            return;
        }
//        否则输出信息
        System.out.println(student);

    }

    //根据姓名查看
    public void findByName() {
        System.out.println("请输入学生姓名");
        String name = scanner.next();
        //        将返回的数据封装为student对象
        List<Student> list = studentService.findByName(name);
        //        如果为空 提示不存在 并结束方法
        if (list == null) {
            System.out.println("你查找的不存在");
            return;
        }
        //        否则输出信息
        list.forEach(System.out::println);
    }


    //导出到文本文件

    public void exportToFile() throws IOException {
        //设置要保存的文件路径
        String path = "D:\\a\\a.txt";
//        调用保存方法
        studentService.exportToFile(path);

    }

    public void mainEu() throws IOException {
        Scanner scanner = new Scanner(System.in);

        while (loop) {
            System.out.println("==============同学录系统==============");
            System.out.println("请选择功能:");
            System.out.println("\t\t\t1. 添加学生信息");
            System.out.println("\t\t\t2. 删除学生信息");
            System.out.println("\t\t\t3. 修改学生信息");
            System.out.println("\t\t\t4. 查询全部学生信息");
            System.out.println("\t\t\t5. 根据id查看学生信息");
            System.out.println("\t\t\t6. 根据姓名查看学生信息");
            System.out.println("\t\t\t7. 导出到文本文件");
            System.out.println("\t\t\t8. 退出程序");
            int option = scanner.nextInt();

            switch (option) {
                case 1:
                    addStudent();
                    break;
                case 2:
                    deleteStudent();
                    break;
                case 3:
                    updateStudent();
                    break;
                case 4:
                    findAll();
                    break;
                case 5:
                    findById();
                    break;
                case 6:
                    findByName();
                    break;
                case 7:
                    exportToFile();
                    break;
                case 8:
                    loop = false;
                    break;
                default:
                    System.out.println("无效的选项,请重新选择!");
            }
        }
    }
}
测试类
public class Test {
    public static void main(String[] args) throws IOException {
        StudentView studentView = new StudentView();
        studentView.mainEu();
        System.out.println("感谢使用");
    }
}

####运行截图
在这里插入图片描述

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值