学生管理系统Java版(ArrayList)

 PS:第一次写有的地方可能理解有错误或者表达不清晰,术语不专业等问题大家谅解。

目录:

        一、项目简介

        二、项目介绍

                2.1学生类

                2.2mian()方法

                        2.2.1.1Student_Input()方法(学生信息录入)

                        2.2.1.2Student_Delete()方法(学生信息删除)

                        2.2.1.3Student_Change()方法(学生信息更改)

                        2.2.1.4Student_Inquire()方法(学生信息查询)

                        2.2.1.5Student_Individual()方法(学生个人信息查询)

          三、项目总结     

一、项目简介

        实现6个功能: 1.学生信息录入 。2.学生信息删除 。3.学生信息更改。 4.学生信息查询。5.学生个人信息查询。6.退出。

用途:初学者训练项目。

二、项目介绍

        该项目分两块:类的书写,main()方法的书写(6个功能方法,实现上面的6个功能)。

2.1学生类

        由于一个学生有姓名,年龄,学号,家庭地址等,因此成员变量设置了四个String类型的变量。一个标准的类里面有无参构造和有参构造,(get,set)方法,熟练掌握的话可以使用快捷键。set方法的形参可以接收main方法中外部输入的数据,方法内用this封装,this可以指代一个变量,变量被指代之后,这个变量就是成员变量了。

package Student_project;

public class Student_Class {
    private String stu_name;
    private String stu_age;
    private String stu_number;
    private String address;
    public Student_Class(){}
    public Student_Class(String stu_number,String stu_name,String stu_age,String address){
        this.stu_number=stu_number;
        this.stu_name=stu_name;
        this.stu_age=stu_age;
        this.address=address;
    }

    public void setStu_number(String stu_number) {
        this.stu_number = stu_number;
    }

    public String getStu_number() {
        return stu_number;
    }

    public void setStu_name(String stu_name) {
        this.stu_name = stu_name;
    }

    public String getStu_name() {
        return stu_name;
    }

    public void setStu_age(String stu_age) {
        this.stu_age = stu_age;
    }

    public String getStu_age() {
        return stu_age;
    }

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

    public String getAddress() {
        return address;
    }
}

 2.2mian()方法的书写

        创建ArrayList集合类型为2.1中的学生类,Scanner进行外部数据的接收。为使程序反复的运行用while进行控制,控制变量bring,内部嵌套switch语句表达式为整型变量anInt接收Scanner输入的值从而进行功能的选择。为使程序不死循环,因此在case 6中令循环控制变量bring=0结束循环。

package Student_project;

import java.util.ArrayList;
import java.util.Scanner;

public class Student_main {
    public static void main(String[] args) {
        ArrayList<Student_Class> Communication_Engineering_6=new ArrayList<Student_Class>();
        Scanner sc=new Scanner(System.in);
        int bring=1;
        while (bring==1){
            System.out.println("1.学生信息录入");
            System.out.println("2.学生信息删除");
            System.out.println("3.学生信息更改");
            System.out.println("4.学生信息查询");
            System.out.println("5.学生个人信息查询");
            System.out.println("6.退出");
            System.out.println("*********欢迎使用学生信息管理系统*********");
            System.out.print("请输入所以进行的项目:");
            int anInt = sc.nextInt();
            switch (anInt){
                case 1:
                    break;
                case 2:
                    break;
                case 3:
                    break;
                case 4:
                    break;
                case 5:
                    break;
                case 6:
                    bring=0;
                    break;
            }
        }
    }
}

2.2.1main()方法中功能方法

        2.2.1.1Student_Input()方法(学生信息录入)

        其中的重点为学生信息重复该如何的处理,因为ArrayList集合的底层是List集合该集合的特点是:元素有序元素可重复。因此在添加学生信息时候要进行信息的查重。重复查询利用while语句内嵌套if语句进行判断,判断集合中的元素个数利用size()方法,如果集合长度为0直接进行添加,如果不为0,使用student_Input_1()方法进行学号的查重返回的结果用boolean类型的变量接收,直到没有重复时退出循环,输入其余的数据最后创建学生类对象利用带参构造进行数据的接收,然后利用add()方法添加到集合中。

public static void Student_Input(ArrayList<Student_Class> Communication_Engineering_6){
//学生信息录入
        Scanner sc=new Scanner(System.in);
        String number="",age="",name="",address="";
        int  bring=1;
        if (Communication_Engineering_6.size()==0){
            System.out.println("请输入信息");
            System.out.print("学号:");
            number = sc.nextLine();
            System.out.print("姓名:");
             name = sc.nextLine();
            System.out.print("年龄:");
             age = sc.nextLine();
            System.out.print("家庭住址:");
             address = sc.nextLine();
        } else{
            Scanner sc1=new Scanner(System.in);
            while (true){
                System.out.println("请输入信息");
                System.out.print("学号:");
                number = sc1.nextLine();
                boolean input_1 = Student_Input_1(Communication_Engineering_6,number);
                if (input_1){
                    System.out.println("学号重复,重新录入信息!");
                    System.out.println("************************");
                }else{
                    break;
                }
            }
            System.out.print("姓名:");
             name = sc1.nextLine();
            System.out.print("年龄:");
             age = sc1.nextLine();
            System.out.print("家庭住址:");
             address = sc1.nextLine();
        }
        Student_Class SC=new Student_Class(number,name,age,address);
        Communication_Engineering_6.add(SC);
        System.out.println("-----------------------------------------------------------------");
    }

 student_Input_1()方法:

        这是一个返回值类型为Boolean类型的方法,自定义一个boolean类型的变量flg用for循环对集合遍历内嵌套if语句对返回元素的学号和输入的学号用equals()方法进行判断,最后返回该集合是否有该目标元素的结果,那为什么不在Student_Input()方法中使用equals进行判断,我亲自测试时候发生了情况就是第一次查询还可以,到第二次的时候就漏过了目标元素。

    public static boolean Student_Input_1(ArrayList<Student_Class> Communication_Engineering_6,String number) {
        boolean flg=false;
        for (int i=0;i<Communication_Engineering_6.size();i++){
            Student_Class student_Number = Communication_Engineering_6.get(i);
            if (number.equals(student_Number.getStu_number())){
                flg=true;
            }
        }
        return flg;
    }

        2.2.1.2Student_Delete()方法(学生信息删除)

        该方法的要点是信息查询时候对集合进行判断是否已经有元素存在,集合不为空时利用for循环对集合进行遍历利用ArrayList集合中的get(i)【i为元素的索引值】方法进行元素的返回,后利用if语句进行判断,判断条件为查询人的学号和集合中已有元素的学号是否相同,在2.1中学生类里面的成员变量设定是类型都为String所以这里用equals()方法进行比较返回值为Boolean类型。查到之后进行删除或者是返回。

public static void Student_Delete(ArrayList<Student_Class> Communication_Engineering_6){//学生信息删除
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入信息");
        System.out.print("查询人的学号:");
        String Delete_number = sc.nextLine();
        if (Communication_Engineering_6.size()==0) {
            System.out.println("系统中无成员信息!");
            System.out.println("************************");
        }
        for (int i=0;i<Communication_Engineering_6.size();i++){
            Student_Class student_Number = Communication_Engineering_6.get(i);
            if (Delete_number.equals(student_Number.getStu_number())){
                System.out.println("查到该同学,是否删除信息。");
                System.out.println("1.继续      2.返回");
                System.out.print("输入选项:");
                System.out.println("************************");
                int i1 = sc.nextInt();
                if (i1==1){
                   Communication_Engineering_6.remove(i);
                    System.out.println("学生信息删除成功!");
                    System.out.println("************************");
                }else if (i1==2){
                    break;
                }
            }else {
                System.out.println("查无此人!");
                System.out.println("************************");
            }
        }
        System.out.println("-----------------------------------------------------------------");
    }

        2.2.1.3Student_Change()方法(学生信息更改

        这个方法和上面2.2.1.3类似主要流程差不多,多了一个修改时候对元素的各个数据都重新设定了一下,有不懂得可以看上一个方法的文字介绍。

    public static void Student_Change(ArrayList<Student_Class> Communication_Engineering_6){//学生信息更改
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入信息");
        System.out.print("修改人的学号:");
        String Delete_number = sc.nextLine();
        if (Communication_Engineering_6.size()==0) {
            System.out.println("系统中无成员信息!");
            System.out.println("************************");
        }
        for (int i=0;i<Communication_Engineering_6.size();i++) {
            Student_Class student_Number = Communication_Engineering_6.get(i);
            if (Delete_number.equals(student_Number.getStu_number())){
                System.out.println("查到该同学,是否修改信息。");
                System.out.println("1.继续      2.返回");
                System.out.print("输入选项:");
                System.out.println("************************");
                int i1 = sc.nextInt();
                if (i1==1){
                    Scanner sc1=new Scanner(System.in);
                    System.out.println("请输入信息");
                    System.out.print("学号:");
                    String number = sc1.nextLine();
                    System.out.print("姓名:");
                    String name = sc1.nextLine();
                    System.out.print("年龄:");
                    String age = sc1.nextLine();
                    System.out.print("家庭住址:");
                    String address = sc1.nextLine();
                    student_Number.setStu_number(number);
                    student_Number.setStu_name(name);
                    student_Number.setStu_age(age);
                    student_Number.setAddress(address);
                }else if (i1==2){
                    break;
                }
            }else {
                System.out.println("查无此人!");
                System.out.println("************************");
            }
        }
        System.out.println("-----------------------------------------------------------------");
    }

        2.2.1.4Student_Inquire()方法(学生信息查询)

        这个方法一看代码量就少了,仔细看这个方法其实就是一个集合的遍历,遍历后根据索引值利用get()方法返回该元素到aClass学生类变量中,再用aClass变量调用学生类里面的get()方法最后用sout语句输出。

    public static void Student_Inquire(ArrayList<Student_Class> Communication_Engineering_6){//学生信息查询
        System.out.println("************************全 部 学 生 信 息************************");
        for (int i=0;i<Communication_Engineering_6.size();i++){
            Student_Class aClass = Communication_Engineering_6.get(i);
            System.out.println("*  "+"学号;"+aClass.getStu_number()+"\t"+"姓名:"+aClass.getStu_name()+"\t"+"年龄:"+aClass.getStu_age()+"\t\t"+"家庭地址:"+aClass.getAddress()+"\t");
        }
        System.out.println("-----------------------------------------------------------------");
    }

拓展:这里讲一下集合的遍历方法常用的有三种:

        1.增强for遍历。

        for()中先定义一个和集合元素类型相同的变量后用:分开写集合名。

        2.迭代器遍历。

        迭代器遍历又分为正序输出和逆序输出,具体的原理过于复杂可以查找相关的文章或者视频有对源码的剖析。

        3.for循环遍历。

        for循环遍历还是搭配get()方法根据索引值将对于的元素返回。

package 练习_集合迭代器及三种输出方法;

import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator;

public class ListIterator_main {
    public static void main(String[] args) {
        List<String> LS=new ArrayList<>();
        LS.add("Hello");
        LS.add("World");
        LS.add("java");
        ListIterator<String> stringListIterator = LS.listIterator();
        //迭代器输出方法
        //hasNext()正输出法
        while (stringListIterator.hasNext()){
            String next = stringListIterator.next();
            if (next.equals("World")){
                stringListIterator.add("C++");
            }
        }
        System.out.println(LS);
        //hasPrevious()逆序输出法
        while (stringListIterator.hasPrevious()){
            String previous = stringListIterator.previous();
            System.out.println(previous);
        }
        //增强for循环方法
        for (String i:LS){
            System.out.println(i);
        }
        //get()方法
        for (int i=0;i< LS.size();i++){
            String s = LS.get(i);
            System.out.println(s);
        }
    }
}

         2.2.1.5Student_Individual()方法(学生个人信息查询)

        看完上边的功能方法这个方法就很容易理解了,主要的代码流程和之前几个类似实际上就是将2.2.1.2的部分内容和2.2.1.4结合了,相信大家一定能看懂。

    public static void Student_Individual(ArrayList<Student_Class> Communication_Engineering_6){//学生个人信息查询
        Scanner sc=new Scanner(System.in);
        int i1=-1;
        System.out.println("请输入信息");
        System.out.print("查询人的学号:");
        String Delete_number = sc.nextLine();
        if (Communication_Engineering_6.size()==0) {
            System.out.println("系统中无成员信息!");
            System.out.println("************************");
        }
        for (int i=0;i<Communication_Engineering_6.size();i++){
            Student_Class student_Number = Communication_Engineering_6.get(i);
            if (Delete_number.equals(student_Number.getStu_number())) {
                i1 = i;
                break;
            }else{
                System.out.println("查无此人!");
            }
        }
        if (i1!=-1){
            Student_Class aClass = Communication_Engineering_6.get(i1);
            System.out.println("************************学 生 信 息************************");
            System.out.println("*  "+"学号;"+aClass.getStu_number()+"\t"+"姓名:"+aClass.getStu_name()+"\t"+"年龄:"+aClass.getStu_age()+"\t"+"家庭地址:"+aClass.getAddress()+"\t");
        }
        System.out.println("-----------------------------------------------------------------");
    }

三、项目总结

        这个项目里面有许多的重复之处,因此这是初学的练习项目,可以反复的对知识点的理解,加深对基础概念的记忆。

PS:制作不易,未经本人允许,严禁转载,谢谢观看。

        以下为源码,可直接跳过。

1.main()

package Student_project;

import java.util.ArrayList;
import java.util.Scanner;

public class Student_main {
    public static void main(String[] args) {
        ArrayList<Student_Class> Communication_Engineering_6=new ArrayList<Student_Class>();
        Scanner sc=new Scanner(System.in);
        int bring=1;
        while (bring==1){
            System.out.println("1.学生信息录入");
            System.out.println("2.学生信息删除");
            System.out.println("3.学生信息更改");
            System.out.println("4.学生信息查询");
            System.out.println("5.学生个人信息查询");
            System.out.println("6.退出");
            System.out.println("*********欢迎使用学生信息管理系统*********");
            System.out.print("请输入所以进行的项目:");
            int anInt = sc.nextInt();
            switch (anInt){
                case 1:
                    Student_Input(Communication_Engineering_6);
                    break;
                case 2:
                    Student_Delete(Communication_Engineering_6);
                    break;
                case 3:
                    Student_Change(Communication_Engineering_6);
                    break;
                case 4:
                    Student_Inquire(Communication_Engineering_6);
                    break;
                case 5:
                    Student_Individual(Communication_Engineering_6);
                    break;
                case 6:
                    bring=0;
                    break;
            }
        }

    }
    public static void Student_Input(ArrayList<Student_Class> Communication_Engineering_6){//学生信息录入
        Scanner sc=new Scanner(System.in);
        String number="",age="",name="",address="";
        int  bring=1;
        if (Communication_Engineering_6.size()==0){
            System.out.println("请输入信息");
            System.out.print("学号:");
            number = sc.nextLine();
            System.out.print("姓名:");
             name = sc.nextLine();
            System.out.print("年龄:");
             age = sc.nextLine();
            System.out.print("家庭住址:");
             address = sc.nextLine();
        } else{
            Scanner sc1=new Scanner(System.in);
            while (true){
                System.out.println("请输入信息");
                System.out.print("学号:");
                number = sc1.nextLine();
                boolean input_1 = Student_Input_1(Communication_Engineering_6,number);
                if (input_1){
                    System.out.println("学号重复,重新录入信息!");
                    System.out.println("************************");
                }else{
                    break;
                }
            }
            System.out.print("姓名:");
             name = sc1.nextLine();
            System.out.print("年龄:");
             age = sc1.nextLine();
            System.out.print("家庭住址:");
             address = sc1.nextLine();
        }
        Student_Class SC=new Student_Class(number,name,age,address);
        Communication_Engineering_6.add(SC);
        System.out.println("-----------------------------------------------------------------");
    }
    public static void Student_Delete(ArrayList<Student_Class> Communication_Engineering_6){//学生信息删除
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入信息");
        System.out.print("查询人的学号:");
        String Delete_number = sc.nextLine();
        if (Communication_Engineering_6.size()==0) {
            System.out.println("系统中无成员信息!");
            System.out.println("************************");
        }
        for (int i=0;i<Communication_Engineering_6.size();i++){
            Student_Class student_Number = Communication_Engineering_6.get(i);
            if (Delete_number.equals(student_Number.getStu_number())){
                System.out.println("查到该同学,是否删除信息。");
                System.out.println("1.继续      2.返回");
                System.out.print("输入选项:");
                System.out.println("************************");
                int i1 = sc.nextInt();
                if (i1==1){
                   Communication_Engineering_6.remove(i);
                    System.out.println("学生信息删除成功!");
                    System.out.println("************************");
                }else if (i1==2){
                    break;
                }
            }else {
                System.out.println("查无此人!");
                System.out.println("************************");
            }
        }
        System.out.println("-----------------------------------------------------------------");
    }
    public static void Student_Change(ArrayList<Student_Class> Communication_Engineering_6){//学生信息更改
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入信息");
        System.out.print("修改人的学号:");
        String Delete_number = sc.nextLine();
        if (Communication_Engineering_6.size()==0) {
            System.out.println("系统中无成员信息!");
            System.out.println("************************");
        }
        for (int i=0;i<Communication_Engineering_6.size();i++) {
            Student_Class student_Number = Communication_Engineering_6.get(i);
            if (Delete_number.equals(student_Number.getStu_number())){
                System.out.println("查到该同学,是否修改信息。");
                System.out.println("1.继续      2.返回");
                System.out.print("输入选项:");
                System.out.println("************************");
                int i1 = sc.nextInt();
                if (i1==1){
                    Scanner sc1=new Scanner(System.in);
                    System.out.println("请输入信息");
                    System.out.print("学号:");
                    String number = sc1.nextLine();
                    System.out.print("姓名:");
                    String name = sc1.nextLine();
                    System.out.print("年龄:");
                    String age = sc1.nextLine();
                    System.out.print("家庭住址:");
                    String address = sc1.nextLine();
                    student_Number.setStu_number(number);
                    student_Number.setStu_name(name);
                    student_Number.setStu_age(age);
                    student_Number.setAddress(address);
                }else if (i1==2){
                    break;
                }
            }else {
                System.out.println("查无此人!");
                System.out.println("************************");
            }
        }
        System.out.println("-----------------------------------------------------------------");
    }
    public static void Student_Inquire(ArrayList<Student_Class> Communication_Engineering_6){//学生信息查询
        System.out.println("************************全 部 学 生 信 息************************");
        for (int i=0;i<Communication_Engineering_6.size();i++){
            Student_Class aClass = Communication_Engineering_6.get(i);
            System.out.println("*  "+"学号;"+aClass.getStu_number()+"\t"+"姓名:"+aClass.getStu_name()+"\t"+"年龄:"+aClass.getStu_age()+"\t\t"+"家庭地址:"+aClass.getAddress()+"\t");
        }
        System.out.println("-----------------------------------------------------------------");
    }
    public static void Student_Individual(ArrayList<Student_Class> Communication_Engineering_6){//学生个人信息查询
        Scanner sc=new Scanner(System.in);
        int i1=-1;
        System.out.println("请输入信息");
        System.out.print("查询人的学号:");
        String Delete_number = sc.nextLine();
        if (Communication_Engineering_6.size()==0) {
            System.out.println("系统中无成员信息!");
            System.out.println("************************");
        }
        for (int i=0;i<Communication_Engineering_6.size();i++){
            Student_Class student_Number = Communication_Engineering_6.get(i);
            if (Delete_number.equals(student_Number.getStu_number())) {
                i1 = i;
                break;
            }else{
                System.out.println("查无此人!");
            }
        }
        if (i1!=-1){
            Student_Class aClass = Communication_Engineering_6.get(i1);
            System.out.println("************************学 生 信 息************************");
            System.out.println("*  "+"学号;"+aClass.getStu_number()+"\t"+"姓名:"+aClass.getStu_name()+"\t"+"年龄:"+aClass.getStu_age()+"\t"+"家庭地址:"+aClass.getAddress()+"\t");
        }
        System.out.println("-----------------------------------------------------------------");
    }
    public static boolean Student_Input_1(ArrayList<Student_Class> Communication_Engineering_6,String number) {
        boolean flg=false;
        for (int i=0;i<Communication_Engineering_6.size();i++){
            Student_Class student_Number = Communication_Engineering_6.get(i);
            if (number.equals(student_Number.getStu_number())){
                flg=true;
            }
        }
        return flg;
    }
}

 2.StudentClass

package Student_project;

public class Student_Class {
    private String stu_name;
    private String stu_age;
    private String stu_number;
    private String address;
    public Student_Class(){}
    public Student_Class(String stu_number,String stu_name,String stu_age,String address){
        this.stu_number=stu_number;
        this.stu_name=stu_name;
        this.stu_age=stu_age;
        this.address=address;
    }

    public void setStu_number(String stu_number) {
        this.stu_number = stu_number;
    }

    public String getStu_number() {
        return stu_number;
    }

    public void setStu_name(String stu_name) {
        this.stu_name = stu_name;
    }

    public String getStu_name() {
        return stu_name;
    }

    public void setStu_age(String stu_age) {
        this.stu_age = stu_age;
    }

    public String getStu_age() {
        return stu_age;
    }

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

    public String getAddress() {
        return address;
    }
    public void show(){
        //后续更新
    }
}

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
线性表是数据结构中的一种,它可用于实现学生管理系统学生管理系统是一个涉及学生信息的系统,可以对学生信息进行添加、删除、修改、查询等操作。而线性表则是一种基本的数据结构,它可以按照线性的次序存放多个数据元素,并且保持它们之间的逻辑关系。 在使用Java编写学生管理系统,我们可以使用线性表来存储学生信息。比如,可以创建一个学生类,包含学生的姓名、学号、年龄等信息,并且可以在学生类中定义相应的方法来操作学生信息。 在程序运行,我们可以使用线性表来存储学生对象,比如使用ArrayList或LinkedList容器类来存储学生对象。通过调用容器类中的方法,可以实现对学生信息的添加、删除、修改、查询等操作。 例如,当需要添加学生,可以创建一个新的学生对象,然后将该学生对象添加到线性表中。当需要删除学生,可以根据学生的学号或其他标识来进行查找,找到对应的学生对象后进行删除操作。当需要修改学生信息,可以先找到对应的学生对象,然后对该学生对象的属性进行修改。当需要查询学生信息,可以根据学号或其他标识进行查找,找到对应的学生对象后获取该学生的信息。 通过这样的方式,我们可以使用线性表来实现学生管理系统,方便地对学生信息进行操作。通过使用Java编程语言,我们可以利用线性表来实现学生管理系统的各种功能,提高学生管理效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值