首页 > 编程语言 >【day10】JavaSE基础项目——学生管理系统

【day10】JavaSE基础项目——学生管理系统

时间:2024-12-22 10:27:49浏览次数:7  
标签:管理系统 int System students day10 println JavaSE id out

1.项目介绍

此项目是JavaSE第一阶段的项目,主要完成学生对象在数组中的增删改查,大家可以在此项目中发挥自己的想象力做完善,添加其他功能等操作,但是重点仍然是咱们前9个模块的知识点

2.项目展示

2.1.添加功能

在这里插入图片描述

2.2.查看功能

在这里插入图片描述

2.3.修改功能

在这里插入图片描述

2.4.删除功能

在这里插入图片描述

2.5.退出功能

在这里插入图片描述

3.功能实现

3.1.JavaBean_Student

public class Student {
    //学号
    private int id;
    //姓名
    private String name;
    //年龄
    private int age;
    //性别
    private String sex;

    public Student() {
    }

    public Student(int id, String name, int age, String sex) {
        this.id = id;
        this.name = name;
        this.age = age;
        this.sex = sex;
    }

    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 int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }
}

3.2.启动项目_Test01

public class Test01 {
    public static void main(String[] args) {
        new StudentView().start();
    }
}

3.3.操作页面_StudentView

public class StudentView {
    /*
       后面会反复键盘录入,所以我们没要执行一个方法就new一次Scanner
       所以将Scanner对象放到成员位置
     */
    Scanner sc = new Scanner(System.in);

    /*
      老数组,长度为 50,代表班级最多能放50个人
      后面每个功能都需要使用数组,所以可以将数组
      放到成员位置
     */
    Student[] students = new Student[50];

    /*
       定义一个count,记录数组中有多少个对象,遍历元素不能全部遍历,
       因为没有存对象的位置遍历出来是null,再调用getxxx方法,会出现空指针
       所以我们应该记录存储对象的个数,存多少个对象,就遍历多少次

       而且,后面可能会反复使用count,所以提到成员位置
     */
    int count = 0;

    /*
      新数组,一会删除元素的时候需要将删除后剩下的元素复制到新数组中
      因为数组定长,不能直接在原来的数组基础上随意改变长度
      由于一次删一个,所以新数组长度为老数组长度-1
      后面可能会反复使用新数组,所以定义到成员位置
     */
    Student[] newStudents = new Student[students.length-1];



    /*
      start方法用于展示页面以及调用对应的功能
     */
    public void start(){
       while(true){
           System.out.println("-----------学生管理系统-----------");
           System.out.println("1 添加学生");
           System.out.println("2 修改学生");
           System.out.println("3 删除学生");
           System.out.println("4 查看学生");
           System.out.println("5 退出系统");
           System.out.println("请选择(1-5):");

           int num = sc.nextInt();
           System.out.println("--------------------------------");

           switch (num){
               case 1:
                   addStudent();
                   break;
               case 2:
                   updateStudent();
                   break;
               case 3:
                   deleteStudent();
                   break;
               case 4:
                   findAllStudent();
                   break;
               case 5:
                   System.out.println("退出功能");
                   break;
           }
       }
    }

    private void findAllStudent() {
        System.out.println("查看功能");
    }

    private void deleteStudent() {
        System.out.println("删除功能");
    }

    private void updateStudent() {
        System.out.println("修改功能");
    }

    private void addStudent() {
        System.out.println("添加功能");
    }
}
 

3.4.工具类_ArrayUtils

public class ArrayUtils {
    private ArrayUtils(){

    }

    public static int findIndexById(Student[] students,int id,int count){
        //遍历,查找
        for (int i = 0; i < count; i++) {
            if (id==students[i].getId()){
                return i;
            }
        }

        return -1;
    }
}

3.5.添加功能_addStudent

    private void addStudent() {
        //1.键盘录入学生信息
        System.out.println("请您输入学生学号:");
        int id = sc.nextInt();
        System.out.println("请您输入学生姓名:");
        String name = sc.next();
        System.out.println("请您输入学生年龄:");
        int age = sc.nextInt();
        System.out.println("请您输入学生性别:");
        String sex = sc.next();
        //2.将学生信息封装到Student对象中
        Student student = new Student(id, name, age, sex);
        //3.将封装好的Student对象放到students数组中
        students[count] = student;
        //4.count++记录存储了多少个对象
        count++;
        System.out.println("添加成功!!!");
        
    }

3.6.查看功能_findAllStudent

     private void findAllStudent() {
        System.out.println("学号"+"\t"+"姓名"+"\t"+"年龄"+"\t"+"性别");
        /*
          排序是为了防止:删除完之后再重新添加之前删除的序号对应的学生而发生乱序的情况
        */
        for (int j = 0; j < count-1; j++) {
            for (int i = 0; i < count-1-j; i++) {
                if (students[i].getId()>students[i+1].getId()){
                    Student temp = students[i];
                    students[i] = students[i+1];
                    students[i+1] = temp;
                }
            }
        }


        //如果count为0(证明没有添加过学生),证明没有学生
        if (count==0){
            System.out.println("对不起,现在班级没有学生,待开班.........");
        }else{
            //我们应该是添加了多少个学生,count就是几,就应该遍历几次
            for (int i = 0; i < count; i++) {
                System.out.println(students[i].getId()+"\t"+students[i].getName()+"\t"+students[i].getAge()+"\t"+students[i].getSex());
            }
        }

    }

3.7.修改功能_updateStudent

    private void updateStudent() {
        //1.录入要修改的学生学号  id
        System.out.println("请您输入要修改的学生学号:");
        int id = sc.nextInt();
        /*
          2.注意:修改完之后不能直接将id当成索引去存储新的学生对象
            原因:id和学生在数组中的索引不是对应的
            解决:根据id查询对应的学生在数组中的索引位置
         */
        int updateIndex = ArrayUtils.findIndexById(students,id,count);

        System.out.println("请您输入学生姓名:");
        String name = sc.next();
        System.out.println("请您输入学生年龄:");
        int age = sc.nextInt();
        System.out.println("请您输入学生性别:");
        String sex = sc.next();
        Student student = new Student(id, name, age, sex);
        students[updateIndex] = student;
        System.out.println("修改成功!!!");
    }

3.8.删除功能_deleteStudent

    private void deleteStudent() {
        //1.输入要删除的学生学号
        System.out.println("请您输入要删除的学生学号:");
        int id = sc.nextInt();
        //2.根据id查询学生对应的索引位置
        int removeIndex = ArrayUtils.findIndexById(students, id, count);

        //复制被删除元素前面一部分
        System.arraycopy(students,0,newStudents,0,removeIndex);
        //再复制被删除元素后面一部分
        System.arraycopy(students,removeIndex+1,newStudents,removeIndex,students.length-removeIndex-1);

        //将新数组的地址值给老数组
        students = newStudents;
        //删除完之后count--
        count--;
        System.out.println("删除成功");
    }
1700567856447

3.9.退出功能_switch

 case 5:
      System.out.println("是否退出?按0为退出/按9为取消");
      int key = sc.nextInt();
      if (key == 0) {
          System.out.println("再见,欢迎再来");
          return;//结束方法
      } else if (key == 9) {
          break;
      }

标签:管理系统,int,System,students,day10,println,JavaSE,id,out
From: https://blog.csdn.net/weixin_44393822/article/details/144614778

相关文章

  • 无人智慧超市管理系统(源码+数据库+报告)
    一、项目介绍基于SpringBoot的无人智慧超市管理系统,系统包含两种角色:管理员、用户,系统分为前台和后台两大模块二、项目技术编程语言:Java数据库:MySQL项目管理工具:Maven前端技术:Vue后端技术:SpringBoot三、运行环境操作系统:Windows、macOS都可以JDK版本:JDK1.8以上都可......
  • 毕业设计-springboot高校二手交易平台管理系统(案例分析)-附源码
    摘 要目前在大学校园内有很多物品可以被再次使用(如:书籍、自行车、电子产品、体育用品、乐器、生活用品等)同时许多同学希望买便宜的商品,这些物品往往得不到很好的处理。而随着Internet的普及,网上购买商品或获取信息已成为现代人的一种生活习惯,高校二手交易平台就是提供了......
  • springboot458家教管理系统(论文+源码)_kaic
    摘 要传统办法管理信息首先需要花费的时间比较多,其次数据出错率比较高,而且对错误的数据进行更改也比较困难,最后,检索数据费事费力。因此,在计算机上安装家教管理系统软件来发挥其高效地信息处理的作用,可以规范信息管理流程,让管理工作可以系统化和程序化,同时,家教管理系统的有......
  • 基于springboot 医院问诊管理系统(源码+LW+部署讲解+数据库)
    !!!!!!!!!很多人不知道选题怎么选不清楚自己适合做哪块内容都可以免费来问我避免后期給自己答辩找麻烦增加难度(部分学校只有一次答辩机会没弄好就延迟毕业了)源码获取:https://pan.baidu.com/s/1aRpOv3f2sdtVYOogQjb8jg?pwd=jf1d提取码:jf1d !!!!!!!!!项目介绍随着医疗信息化的不断推......
  • 基于springboot 实践教学管理系统(源码+LW+部署讲解+数据库)
    !!!!!!!!!很多人不知道选题怎么选不清楚自己适合做哪块内容都可以免费来问我避免后期給自己答辩找麻烦增加难度(部分学校只有一次答辩机会没弄好就延迟毕业了)源码获取:https://pan.baidu.com/s/1aRpOv3f2sdtVYOogQjb8jg?pwd=jf1d提取码:jf1d !!!!!!!!!项目介绍随着教育信息化的不断推......
  • 基于Springboot华强北商城二手手机管理系统【附源码】
    基于Springboot华强北商城二手手机管理系统效果如下:系统登陆页面系统主页面个人中心页面收货地址页面商品信息页面购物车页面商品信息订单管理页面商品订单页面研究背景随着网络和计算机技术的飞速发展,人们的生活与这些技术的结合越来越紧密。二手交易网......
  • node.js基于Web的连锁餐饮智能管理系统程序+论文 可用于毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容一、选题背景关于餐饮管理系统的研究,现有研究主要以传统餐饮管理系统为主,专门针对连锁餐饮的智能管理系统研究较少。在国内外,传统餐饮管理系统已发展到一定阶段,有诸......
  • 基于Java的银行账目账户管理系统的设计与实现
    第1章绪论1.1选题动因当前的网络技术,软件技术等都具备成熟的理论基础,市场上也出现各种技术开发的软件,这些软件都被用于各个领域,包括生活和工作的领域。随着电脑和笔记本的广泛运用,以及各种计算机硬件的完善和升级,市面上的电脑和笔记本的性能都得到提升,可以支持的软件也逐渐......
  • 高校宣讲会管理系统-毕业设计-附源码
    文末获取源码和万字论文,制作不易,感谢点赞支持。摘 要传统办法管理信息首先需要花费的时间比较多,其次数据出错率比较高,而且对错误的数据进行更改也比较困难,最后,检索数据费事费力。因此,在计算机上安装高校宣讲会管理系统软件来发挥其高效地信息处理的作用,可以规范信息管理......
  • node.js毕设宏泰购物广场停车场管理系统小程序端 论文+程序
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容一、选题背景关于停车场管理系统的研究,现有研究主要以大型公共场所(如机场、火车站等)为主,专门针对购物广场停车场管理系统的研究较少。在国内外,大型公共场所停车场管......