项目实战

    科技2022-08-09  100

    ##项目实战

    这两天,跟着老师学习了一个小项目。算是对之前所学的Java知识做一个总结。项目:学生信息的添加、删除、修改和查询。

    建立学生类

    包含的成员变量有姓名、学号、手机号码和家庭住址,通过“封装”的方法完成。同时,重写输出,方便学生信息的查询。

    package venus; public class Student { private String name; private String id; private String mobile; private String address; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getId() { return id; } public void setId(String id) { this.id = id; } public String getMobile() { return mobile; } public void setMobile(String mobile) { this.mobile = mobile; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } @Override public String toString() {//“重写”输出,以帮助获取数据 return "Student [name=" + name + ", id=" + id + ", mobile=" + mobile + ", address=" + address + "]"; } }

    主函数的建立

    主函数通过死循环完成学生信息的操作。

    public static void main(String[] args) {

            System.out.println("*************************");

            System.out.println("******欢迎使用学生管理系统******");

            System.out.println("*************************");

            for(;;) {//死循环,用于操作

                menu();

            }

        }

     操作列表的建立

    首先,为用户添加提示信息:

            System.out.println("1、添加学生信息");

            System.out.println("2、删除学生信息");

            System.out.println("3、修改学生信息");

            System.out.println("4、查询学生信息");

            System.out.println("请输入操作项,点击Enter键!");

    建立Scanner类的输入对象,按住“Ctrl+Shift+O”添加Scanner路径。通过switch(),case获取指令。

            Scanner scanner = new Scanner(System.in);

            int option = scanner.nextInt();

            switch (option) {

                case 1:{

                     System.out.println("添加学生信息");

                      return;

                }

                case 2:{

                     System.out.println("删除学生信息");

                      return;

                }

                case 3:{

                     System.out.println("修改学生信息");

                      return;             }   

                case 4:{

                     System.out.println("查询学生信息");

                      return;

               }        

                default:

                    System.out.println("系统没有找到"+option+"操作项!");

                    return;         }

    添加学生信息

    建立一个Student类的数组,设置共有45个对象,每完成一个添加,index就加一。在添加信息时,学生的学号是唯一的,因此每添加一个学号,就和已添加的学号作比较。

    case 1:{//加括号,使变量"name"在后面查询可用。                 if(index>students.length-1) {                     System.out.println("已经没有座位了");                     return;                 }                 Student student = new Student();                 System.out.println("请输入学生姓名:");                 String name = scanner.next();                 student.setName(name);                 System.out.println("请输入学生学号:");                 String id = scanner.next();                 if(index!=0) {                     for(Student stu : students) {                         if(stu == null) {//null对象不允许调用方法,它是一个空指针                             break;                         }                         if(stu.getId().equals(id)) {                             System.out.println("学号不允许重复!");                             return;                         }                     }                 }                 student.setId(id);                 System.out.println("请输入学生手机号码:");                 String mobile = scanner.next();                 student.setMobile(mobile);                 System.out.println("请输入学生家庭地址:");                 String address = scanner.next();                 student.setAddress(address);                 students[index] = student;//添加学生                 index = index +1;//添加成功,计数加一                 System.out.println("添加学生信息成功");                 return; }

    删除学生信息 

    通过用户输入,得到要删除学生的姓名(也可改为学号),然后比较找到该学生对象,最后通过算法将其删除掉。删除算法:得到要删除对象的位置,将其之后的对象向前依次覆盖,最后将原先最后一个对象设为null,不然会“索引超出维度范围”。

    case 2:{                 System.out.println("请输入要删除学生的姓名:");                 String name = scanner.next();                 int i = 0;//保存要删除对象的位置                 boolean flag = false;//如果找到该学生,则置为true                 for(;i<students.length;i++) {                     if(students[i].getName()==null) {                         break;                     }                     if(students[i].getName().equals(name)) {                         flag = true;                         break;                     }                 }                 if(flag == false) {                     System.out.println("没有找到姓名为"+name+"的学生信息");                     return;                 }                 for(;i<students.length;i++) {                     if(i == students.length-1) {//满员时,最后一个元素置为null                         students[i] = null;                         break;                     }                     students[i] = students[i+1];                     if(students[i+1] == null) {                         break;                     }                 }                 System.out.println("删除信息成功");                 index = index-1;//删除成功,计数减一                 return; }

    修改学生信息

    修改信息与删除信息相似,找到相关的学生后,修改信息即可。

    case 3:{                 boolean hasStu = false;                 System.out.println("请输入学号:");                 String id = scanner.next();                 for(Student stu:students) {                     if(stu==null) {                         break;                     }                     if(stu.getId().equals(id)) {                         System.out.println("请输入姓名:");                         String name = scanner.next();                         stu.setName(name);                         System.out.println("请输入手机号码:");                         String mobile = scanner.next();                         stu.setMobile(mobile);                         System.out.println("请输入家庭地址:");                         String address = scanner.next();                         stu.setAddress(address);                         hasStu = true;                     }                 }                 if(hasStu==false) {                     System.out.println("没有找到学号为"+id+"的相关信息");                 }                 System.out.println("修改信息成功");                 return; }

    查询学生信息

    在Student类中,我们已经完成了对字符串输出方法的重写,使之能够按“重写”的格式输出。注:“重写”后,输入对象的地址信息,就可实现调用。

    case 4:{                 boolean hasStu = false;                 System.out.println("请输入学生姓名:");                 String name = scanner.next();                 for(Student stu:students) {                     if(stu==null) {                         break;                     }                     if(stu.getName().equals(name)) {//内容为null的对象无法调用,会出错                         System.out.println(stu);//直接输出一个类的对象的时候,会调用这个类的toString()方法                         hasStu = true;                     }                 }                 if(hasStu==false) {                     System.out.println("没有找到"+name+"的相关信息");                 }                 return; }

    Main类文件

    package venus; import java.util.Scanner; public class Main { static int index = 0; static Student [] students = new Student[45]; public static void main(String[] args) { System.out.println("*************************"); System.out.println("******欢迎使用学生管理系统******"); System.out.println("*************************"); for(;;) {//死循环,用于操作 menu(); } } private static void menu() { System.out.println("1、添加学生信息"); System.out.println("2、删除学生信息"); System.out.println("3、修改学生信息"); System.out.println("4、查询学生信息"); System.out.println("请输入操作项,点击Enter键!"); Scanner scanner = new Scanner(System.in); int option = scanner.nextInt(); switch (option) { case 1:{//加括号,使变量"name"在后面查询可用。 if(index>students.length-1) { System.out.println("已经没有座位了"); return; } Student student = new Student(); System.out.println("请输入学生姓名:"); String name = scanner.next(); student.setName(name); System.out.println("请输入学生学号:"); String id = scanner.next(); if(index!=0) { for(Student stu : students) { if(stu == null) {//null对象不允许调用方法,它是一个空指针 break; } if(stu.getId().equals(id)) { System.out.println("学号不允许重复!"); return; } } } student.setId(id); System.out.println("请输入学生手机号码:"); String mobile = scanner.next(); student.setMobile(mobile); System.out.println("请输入学生家庭地址:"); String address = scanner.next(); student.setAddress(address); students[index] = student;//添加学生 index = index +1;//添加成功,计数加一 System.out.println("添加学生信息成功"); return; } case 2:{ System.out.println("请输入要删除学生的姓名:"); String name = scanner.next(); int i = 0;//保存要删除对象的位置 boolean flag = false;//如果找到该学生,则置为true for(;i<students.length;i++) { if(students[i].getName()==null) { break; } if(students[i].getName().equals(name)) { flag = true; break; } } if(flag == false) { System.out.println("没有找到姓名为"+name+"的学生信息"); return; } for(;i<students.length;i++) { if(i == students.length-1) {//满员时,最后一个元素置为null students[i] = null; break; } students[i] = students[i+1]; if(students[i+1] == null) { break; } } System.out.println("删除信息成功"); index = index-1;//删除成功,计数减一 return; } case 3:{ boolean hasStu = false; System.out.println("请输入学号:"); String id = scanner.next(); for(Student stu:students) { if(stu==null) { break; } if(stu.getId().equals(id)) { System.out.println("请输入姓名:"); String name = scanner.next(); stu.setName(name); System.out.println("请输入手机号码:"); String mobile = scanner.next(); stu.setMobile(mobile); System.out.println("请输入家庭地址:"); String address = scanner.next(); stu.setAddress(address); hasStu = true; } } if(hasStu==false) { System.out.println("没有找到学号为"+id+"的相关信息"); } System.out.println("修改信息成功"); return; } case 4:{ boolean hasStu = false; System.out.println("请输入学生姓名:"); String name = scanner.next(); for(Student stu:students) { if(stu==null) { break; } if(stu.getName().equals(name)) {//内容为null的对象无法调用,会出错 System.out.println(stu);//直接输出一个类的对象的时候,会调用这个类的toString()方法 hasStu = true; } } if(hasStu==false) { System.out.println("没有找到"+name+"的相关信息"); } return; } default: System.out.println("系统没有找到"+option+"操作项!"); return; } } }

    工程测试结果 

     

    Processed: 0.013, SQL: 9