0

This is my code for STUDENT RECORD SYSTEM. I think it is on its 80% of completion. The problem here is that when i have many students and i update a specific student(subj & grade) the updated element is not being saved on that specific student. And when I display all of the results the updated values are given to other student. Please help me out with this issue. And btw this code has 2 classes Student and StudentGrade. I hope you'll help me fix this. Thanks in advance. :) and Advance Happy New Year!

public class Student
    {
    private String IDNumber;
    private String firstName;
    private String middleName;
    private String lastName;
    private String degree;
    private int yearLevel;

    public Student()
    {
        String IDNum;
        String fName;
        String mName;
        String lName;
        String deg;
        int level;  
    }

    public Student(String IDNum, String fName, String mName, String lName, String      deg,int level )
    {
        this.IDNumber=IDNum;
        this.firstName=fName;
        this.middleName=mName;
        this.lastName=lName;
        this.degree=deg;
        this.yearLevel=level;
    }


    public void setIdNumber(String IDNumber)
    {
        this.IDNumber = IDNumber;
    }
    public String getIdNumber()
    {
        return IDNumber;
    }


    public void setFirstName(String firstName)
    {
        this.firstName=firstName;
    }
    public String getFirstName()
    {
        return firstName;
    }


    public void setMiddleName(String middleName)
    {
        this.middleName=middleName;
    }
    public String getMiddleName()
    {
        return middleName;
    }


    public void setLastName(String lastName)
    {
        this.lastName=lastName;
    }
    public String getLastName()
    {
        return lastName;
    }


    public void setDegree(String degree)
    {
        this.degree=degree;
    }
    public String getDegree()
    {
        return degree;
    }


    public void setYearLevel(int yearLevel)
    {
        this.yearLevel=yearLevel;
    }
    public int getYearLevel()
    {
        return yearLevel;
    }

    }

    public class StudentGrade
    {
        private String IDNumber;
        private String subject;
        private double grade;
        private double average;

        public StudentGrade()
        {
            String IDNum;
            String sub;
            double grad;
            double ave;

        }

        public StudentGrade(String IDNum,String sub,double grad,double ave)
        {
            this.IDNumber=IDNum;
            this.subject=sub;
            this.grade=grad;
            this.average=ave;

        }

        public void setSubject(String subject)
        {
            this.subject=subject;
        }
        public String getSubject()
        {
            return subject;
        }

        public void setGrade(double grade)
        {
            this.grade=grade;
        }
        public double getGrade()
        {
            return grade;
        }

        public String getIDNumber()
        {
            return IDNumber;
        }

    }

    public class StudentGrade
    {
        private String IDNumber;
        private String subject;
        private double grade;
        private double average;

        public StudentGrade()
        {
            String IDNum;
            String sub;
            double grad;
            double ave;

        }

        public StudentGrade(String IDNum,String sub,double grad,double ave)
        {
            this.IDNumber=IDNum;
            this.subject=sub;
            this.grade=grad;
            this.average=ave;

        }

        public void setSubject(String subject)
        {
            this.subject=subject;
        }
        public String getSubject()
        {
            return subject;
        }

        public void setGrade(double grade)
        {
            this.grade=grade;
        }
        public double getGrade()
        {
            return grade;
        }

        public String getIDNumber()
        {
            return IDNumber;
        }

    }

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

    public class test2 {
    static ArrayList<Student> studentList = new ArrayList<Student>();
    static ArrayList<StudentGrade> studentLists = new ArrayList<StudentGrade>();

    public static void main(String[] args) 
    {
        menu();
    }

    public static void menu() 
    {
        Scanner in = new Scanner(System.in);

        int choice = 0;

        System.out.print("*********STUDENT RECORD SYSTEM*********\n\n");
        System.out.println("\t MENU ");
        System.out.println("[1]ADD STUDENT");
        System.out.println("[2]DISPLAY ALL");
        System.out.println("[3]DISPLAY SPECIFIC");
        System.out.println("[4]UPDATE");
        System.out.println("[5]AVERAGE");
        System.out.println("[6]EXIT");
        System.out.println("?");

        choice = in.nextInt();
        if (choice == 1) 
        {
            add();
        }

        else if (choice == 2) 
        {
            displayAll();
        }

        else if (choice == 3) 
        {
            displaySpecific();
        }

        else if (choice == 4) 
        {
            update();
        }

        else if (choice == 5)
        {
            average();
        }


        else if( choice == 6)
        {
        System.exit(0);
        }

        else
            menu();

    }

    public static void add() 
    {
        Scanner in = new Scanner(System.in);
        char ans;
        String temp;

        int total;

        do {

            System.out.println("NUMBER OF STUDENTS YOU WANT TO INPUT: ");
            total = in.nextInt();

            Student[] student = new Student[total];

            for (int index = 0; index < student.length; index++) {
                student[index] = new Student();

                System.out.print("**********STUDENT INFORMATION**********\n\n");
                System.out.println("PRESS ENTER");
                in.nextLine();
                System.out.print("ID NUMBER: ");
                student[index].setIdNumber(in.nextLine());

                System.out.print("FIRST NAME: ");
                student[index].setFirstName(in.nextLine());

                System.out.print("MIDDLE NAME: ");
                student[index].setMiddleName(in.nextLine());

                System.out.print("LAST NAME: ");
                student[index].setLastName(in.nextLine());

                System.out.print("DEGREE: ");
                student[index].setDegree(in.nextLine());

                System.out.print("YEAR LEVEL: ");
                student[index].setYearLevel(in.nextInt());

                studentList.add(student[index]);

            }

            System.out.print("Would you like to enter in a new student (y/n)? ");
            String answer = in.next();
            ans = answer.charAt(0);

        } while (ans == 'y');

        /* // SEARCH and DISPLAY SPECIFIC
        String id = new String();
        in.nextLine();
        System.out.print("Enter ID NUMBER: ");
        id = in.nextLine();

        for (int j = 0; j < studentList.size(); j++) {
            if (id.equals(studentList.get(j).getIdNumber())) {
                System.out.printf("STUDENT SEARCHED");
                System.out.print("\nID NUMBER:             "
                        + studentList.get(j).getIdNumber());
                System.out.print("\nFULL NAME: "
                        + studentList.get(j).getFirstName() + " "
                        + studentList.get(j).getMiddleName() + " "
                        + studentList.get(j).getLastName());
                System.out.print("\nDEGREE and YEAR: "
                        + studentList.get(j).getDegree() + "-"
                        + studentList.get(j).getYearLevel() + "\n\n");
                System.out.println();
            }
        }

        // DISPLAY ALL
        for (int i = 0; i < studentList.size(); i++) {
            System.out.printf("STUDENT[%d]", i + 1);
            System.out
                    .print("\nID NUMBER: " + studentList.get(i).getIdNumber());
            System.out.print("\nFULL NAME: "
                    + studentList.get(i).getFirstName() + "   "
                    + studentList.get(i).getMiddleName() + " "
                    + studentList.get(i).getLastName());
            System.out.print("\nDEGREE and YEAR: "
                    + studentList.get(i).getDegree() + "-"
                    + studentList.get(i).getYearLevel());
            System.out.println();
        } */

        menu(); 

    }

    public static void displayAll() {
        Scanner in = new Scanner(System.in);
        if(studentList.size() == 0)
        {
            System.out.print("EMPTY lageeeee!!! \nPLEASE INPUT FIRST\n\n");
            in.nextLine();
        }
        else
        {
            if(studentLists.size() == 0){
                System.out.print("************STUDENT   RECORD*************");

                for (int i = 0; i < studentList.size(); i++) {
                    System.out.printf("\nSTUDENT[%d]", i + 1);
                    System.out
                            .print("\nID NUMBER: " +   studentList.get(i).getIdNumber());
                    System.out.print("\nFULL NAME: "
                            + studentList.get(i).getFirstName()    + " "
                            + studentList.get(i).getMiddleName() + " "
                            + studentList.get(i).getLastName());
                    System.out.print("\nDEGREE and YEAR: "
                            + studentList.get(i).getDegree() + "-"
                            + studentList.get(i).getYearLevel()/* +"\nGrade: "
                            + studentLists.get(i).getGrade() */+"\n\n");


                }
                in.nextLine();
            }

            else{
                System.out.print("************STUDENT RECORD*************");

                for (int i = 0; i < studentList.size(); i++) 
                {
                    System.out.printf("\nSTUDENT[%d]", i + 1);
                    System.out
                            .print("\nID NUMBER: " + studentList.get(i).getIdNumber());
                    System.out.print("\nFULL NAME: "
                            + studentList.get(i).getFirstName() + " "
                            + studentList.get(i).getMiddleName() + " "
                            + studentList.get(i).getLastName());
                    System.out.print("\nDEGREE and YEAR: "
                            + studentList.get(i).getDegree() + "-"
                            + studentList.get(i).getYearLevel()+"\n\n");

                }

                for(int xxx = 0 ; xxx < studentLists.size(); xxx++ )
                {
                                   System.out.printf("\nSUBJECT: "
                                +   studentLists.get(xxx).getSubject()+" Grade: "
                                +   studentLists.get(xxx).getGrade());
                }

                in.nextLine();
            }
        }
    menu();
    }

    public static void displaySpecific() {
        Scanner in = new Scanner(System.in);
        if(studentList.size() == 0)
        {
            System.out.print("EMPTY oe!!! KALAGOT!\nPLEASE INPUT FIRST\n");
            in.nextLine();
        }
        else
        {

            String id = new String();
            /* in.nextLine(); */
            System.out.print("Enter ID NUMBER: ");
            id = in.nextLine();
            if(studentLists.size()==0)
            {
                for (int j = 0; j < studentList.size(); j++) 
                {
                    if (id.equals(studentList.get(j).getIdNumber())) 
                    {
                        System.out.printf("\n*************STUDENT    SEARCHED*************");
                        System.out.print("\nID NUMBER: "
                                + studentList.get(j).getIdNumber());
                        System.out.print("\nFULL NAME: "
                                + studentList.get(j).getFirstName() + " "
                                + studentList.get(j).getMiddleName() + " "
                                + studentList.get(j).getLastName());
                        System.out.print("\nDEGREE and YEAR: "
                                + studentList.get(j).getDegree() + "-"
                                + studentList.get(j).getYearLevel() + /* "\nGrade: "
                                + studentLists.get(j).getGrade()+ */"\n\n");
                        System.out.println();
                        in.nextLine();
                    }

                    /* else
                    {
                        System.out.print("STUDENT DOES NOT EXIST IN  THIS WORLD!");
                        in.nextLine();
                    } */

                }
            }

            else
            {
                for (int j = 0; j < studentList.size(); j++) 
                {
                        if  (id.equals(studentList.get(j).getIdNumber())) 
                        {
                            System.out.printf("\n*************STUDENT SEARCHED*************");
                            System.out.print("\nID NUMBER: "
                                    + studentList.get(j).getIdNumber());
                            System.out.print("\nFULL NAME: "
                                    + studentList.get(j).getFirstName() + " "
                                    + studentList.get(j).getMiddleName() + " "
                                    + studentList.get(j).getLastName());
                            System.out.print("\nDEGREE and YEAR: "
                                    + studentList.get(j).getDegree() + "-"
                                    + studentList.get(j).getYearLevel() +"\n\n");
                            System.out.println();
                        }

                }
                for(int xxx = 0 ; xxx < studentLists.size(); xxx++ )
                {
                                System.out.printf("\nSUBJECT: "
                                + studentLists.get(xxx).getSubject()+" Grade: "
                                +  studentLists.get(xxx).getGrade());
                }

                in.nextLine();
            }

        }
        menu();
    }

    public static void update()
    {
        Scanner in = new Scanner(System.in);
        String idnum = new String();    
        char answer;
        in.nextLine();
        System.out.print("Enter ID NUMBER: ");
        idnum = in.nextLine();
        int total;

        for(int x=0;x<studentList.size();x++)
        {
            if(idnum.equals(studentList.get(x).getIdNumber()))
            {
                    System.out.println("NUMBER OF SUJECTS YOU WANT TO  INPUT: ");
                    total = in.nextInt();
                do
                {
                        StudentGrade[] update = new StudentGrade[total];

                        for(int y = 0;y<update.length;y++)
                        {
                            update[y] = new StudentGrade();

                            in.nextLine();
                            System.out.print("ENTER SUBJECT:  ");
                             update[y].setSubject(in.nextLine());

                            System.out.print("ENTER GRADE: ");
                             update[y].setGrade(in.nextDouble());

                            studentLists.add(update[y]);
                        }

                        System.out.print("Enter another subject and  grade? [y/n]");
                        String ans = in.next();
                        answer = ans.charAt(0);

                }while(answer == 'y');

            }

        menu();
        }
    }

    public static void average()
    {
            Scanner in = new Scanner(System.in);

            double sum=0;
            double average=0;
            String ID = new String();

            System.out.print("ENTER ID NUMBER: ");
            ID = in.nextLine();

            for(int xx=0;xx<studentList.size();xx++)
            {
                if(ID.equals(studentList.get(xx).getIdNumber()))
                {
                    for(int ind=0;ind<studentLists.size();ind++)
                    {
                            sum +=  studentLists.get(ind).getGrade();
                            average=sum/studentLists.size();


                    }
                            System.out.print("ID NUMBER:"+studentList.get(xx).getIdNumber()+"\nNAME: "
                                                +studentList.get(xx).getFirstName()+" "
                                                +studentList.get(xx).getMiddleName()+" "
                                                +studentList.get(xx).getLastName());

                            System.out.print("\nAVERAGE: "+average+"\n");

                            in.nextLine();
                }

            }

    menu();
    }
    }
kintzee619
  • 13
  • 1
  • 5
  • please dont use uppercase titles! – nano_nano Dec 30 '13 at 09:58
  • @Stefan Beike: sorry sir, i changed it. – kintzee619 Dec 30 '13 at 10:02
  • Take a look at your no-arg constructors. What do you think that's doing? By default all of your instance variables will have a default value (null for references, and some form of 0 or false for primitaves). But all you are doing is declaring another set of local variables that will never be used (and won't live past the end of the constructor) – Goibniu Dec 30 '13 at 11:50

2 Answers2

0

First of all I would change studentList to Map to be able to get the student by id directly and not to search for the matching student every time.

The access to the collections of all students is then like this:

for(Map.Entry<String, Student> entry : studentList.entrySet()){
    String id = entry.getKey();
    Student student = entry.getValue();

    // ...
}

A a second step you should check your update method. I see, that you a searching for the student, but you don't updating this object. You are adding a new one at the end of the loop with studentList.add().

You have store the matching Student into the local variable and just modify this without modifying the collection of students.

Vlad
  • 471
  • 5
  • 7
  • I would also replace all `for(int i=...)`-loops with for-each-loops like `for(Student student: studentList` (or like the loop in my previous example with Map.Entry<>). And I would also replace the big if-else-block in your menu method with switch-case statement. – Vlad Dec 30 '13 at 10:10
0

You have two reader statements in update function

public static void update()
    {
        Scanner in = new Scanner(System.in);
        String idnum = new String();    
        char answer;
    Scanner in = new Scanner(System.in);
            String idnum = new String();    
            char answer;
            in.nextLine();//1
            System.out.print("Enter ID NUMBER: ");
            idnum = in.nextLine();//2

I think there should be only one as your just reading the id number and as @Vlad said your adding a new element to the array list rather than modifying the existing data . also for your code you can use

arrayList.set(index i,String replaceElement);// this will help you replace the value at a particular index

it is better to use HashMap instead of array list so when you put an existing element into a map the value is overwritten.

static Map <String,Student> studentList = new HashMap<String,Student>();
static Map<String, List<StudentGrade>> studentLists = new HashMap<String, List<StudentGrade>>();

Here the key will be the student idNumber

Lakshmi
  • 2,204
  • 3
  • 29
  • 49