Get/Set i zapis do Tablicy

0

Czesc,

poszukuje troche pomocy w wytlumaczeniu get/set metod na przykladzie:

Mam klase Student:

 import java.io.*;
import java.util.*;

public class Student
{
  private String firstName;
  private String lastName;
  private String enrollmentDate; // better would be to use util.Date not String ??

  // default constructor - initializes default attr values
	public Student()
   	{
   	}

    public Student(String newFirstName, String newLastName, String newEnrollmentDate)
    {
      this.firstName = newFirstName;
      this.lastName = newLastName;
      this.enrollmentDate = newEnrollmentDate;
    }

//setters
	public void setFirstName (String newFirstName)
	{
		firstName = newFirstName;
	}

	public void setLastName (String newLastName)
	{
		lastName = newLastName;
	}

	public void setEnrollmentDate (String newEnrollmentDate)
	{
		enrollmentDate = newEnrollmentDate;
	}

//getters
    public String getFirstName()
    {
      return firstName;
    }

    public String getLastName()
    {
      return lastName;
    }

    public String getEnrollmentDate()
    {
      return enrollmentDate;
    }
}

oraz program main:

 import java.io.*;
import java.util.*;

public class StudentDatabase
{
	static int STUDENT_SIZE = 20;
    Student[] students = new Student[STUDENT_SIZE];
    int length = 0; //the current size of the array
	Scanner scan = new Scanner(System.in);

	public static void main(String[] args)
	{

		Menu menu = new Menu();
		StudentDatabase aStudentDatabase=null;


		do{
			menu.showMenu();
			int aChoice = 0;
			aChoice=menu.choice();
			while(aChoice==0)
			{
				System.err.println ( "Unrecognized option, please select again" );
				menu.showMenu();
				aChoice=menu.choice();
			}

			if(aStudentDatabase==null)
			{
				aStudentDatabase = new StudentDatabase();
			}
			switch(aChoice)
			{

				case 1:
				aStudentDatabase.addStudent();
				break;

				case 2:
				break;

				case 3:
				break;

				case 4:
				break;

				case 5:
				break;

				case 6:
				break;

				case 7:
				break;

				case 8:
				System.exit(0);
				break;
			}
		} while(true);
    }


    public boolean Start()
    {
		return true;
    }

	public void addStudent(Student s)
	{
	   	students[length++] = s;
	}

    public boolean deleteStudent()
    {
		return true;
    }

    public boolean addModule()
    {
		return true;
    }

    public boolean deleteModule()
    {
		return true;
    }

    public boolean assignModule()
    {
		return true;
    }

    public void displayStudentDetails()
    {
    	Student student = new Student();
		System.out.println("Student Name:" + student.getFirstName() +" "+ student.getLastName() + " Enrollment on:" + student.getEnrollmentDate());
    }

    public boolean displayModuleDetails()
    {
		return true;
    }


}
 import java.io.*;
import java.util.*;

public class Menu
{
	// Scanner for user input
   public Scanner scan;
   public int choice;

   	public void showMenu()
	{
		System.out.println("*****************************");
		System.out.println("Welcome to the Student Database!");
	   	System.out.println ( "***********************************" );
	   	System.out.println ( "*************MAIN MENU*************" );
	   	System.out.println ( "***********************************" );
       	System.out.println ( "Select (1) to Add Student\nSelect (2) to Delete Student\nSelect (3) to Add Module\nSelect (4) to Delete Module\nSelect (5) to Assign Student to Module\nSelect (6) to Display Student Details\nSelect (7) to Display Module Details\nSelect (8) to Exit Program\n");
	}

   	public int choice()
   	{

   		scan = new Scanner(System.in);

   		System.out.print("Please select an option: ");

   		//Read the input from the user
   		choice = scan.nextInt();

   		//Return the user's choice
   		return choice;
   	}
}

Staram sie teraz napisac wszystkie metody:

  1. add Student
  2. deleteStudent
  3. addModule
  4. deleteModule etc...

Problem w tym, ze nie wiem od czego zaczac, jak mam sie odwolac do metod get z klasy Student, na jakiej zasadzie to dziala?

Tzn Gdy wybiore sobie opcje nr 1 z Menu, powinno mi sie pojawic "Prosze dodac studenta do bazy danych", i tutaj wpisuje dane. Te dane powinny sie zachowac w Tablicy 20 elementowej.

moze mi ktos z tym pomoc? Dzieki za informacje
E

0

ktos moglby spojrzec na to zadanko? :)

0

Nie rozumiem dokładnie problemu - to już ty powinieneś wiedzieć, w jaki sposób tworzyć obiekt Student i jak wypełniać go danymi.
Poza tym, jeśli liczba studentów nie będzie zawsze stała, to zamiast tablicy lepiej byłoby użyć jakiejś kolekcji.

0

Liczba studentow ma byc stala (tak okresla to zadanie) i ma byc max 20.

Nie rozumiem dokładnie problemu - to już ty powinieneś wiedzieć, w jaki sposób tworzyć obiekt Student i jak wypełniać go danymi.

Wlasnie, nie wiem jak mam to zrobic, jak teraz mam wpisac dane odnosnie kazdego studenta do programu? Chodzi mi o to jak powinna wygladac metoda addStudent() i jakie powinna miec odwolania, powinnas sie odwolywac do konstruktora pewnie z klasy Student? w ktorej bede miec cos takiego pewnie:

 	public Student()
   	{
		scan = new Scanner(System.in);
		System.out.print("Student Name:");

		firstName = scan.next();

		System.out.print("Student Surname:");

		lastName = scan.next();

		System.out.print("Enrollment Date:");

		enrollmentDate = scan.next();
   	}

Pytanie teraz czy powinienem tutaj uzyc moze metod get/set? Nie wiem, jak mam to opisac i tutaj prosze o wyjasnienie, jelsi ktos ma czas oczywiscie

z gory dzieki :)

1

Konstruktor zajmuje się tylko ewentualną inicjalizacją pól, wczytywanie danych powinieneś zrobić na zewnątrz (nawet nie w klasie StudentDatabase, bo jest to zwykły DAO):

private void addStudent() {
    StudentDatabase db = // ...
    Student student = new Student();

    System.out.print("Student Name:");
    student.setFirstName(scan.next());

    System.out.print("Student Surname:");
    student.setLastName(scan.next());

    System.out.print("Enrollment Date:");
    student.setEnrollmentDate(parsuj(scan.next()));

    db.addStudent(student);
}
1

Ten konstruktor to nie jest dobry pomysł.
Raczej funkcja addStudent w klasie StudentDatabase powinna wyglądać jakoś tak tak:

Student tmp = new Student();
System.out.print("Student Name:");
tmp.setFirstName(scan.next());
...
students[length] = tmp;
length++;
0

Swietenie, dziala ;)

Stworzylem sobie jeszcze jedna klase ktora nazywa sie Module, w niej mam podobne metody set/get jak w Student klasie. Program niby ma wygladac tak:

Select (1) to Add Student
Select (2) to Delete Student
Select (3) to Add Module
Select (4) to Delete Module
Select (5) to Assign Student to Module
Select (6) to Display Student Details
Select (7) to Display Module Details
Select (8) to Exit Program

u mnie chodzi teraz: 1,3, 6, 7, 8

Z kasowaniem studenta albo midulu poradze sobie pozostaje kwestia przypisania Studenta do Modulu, jak to zrobic? Tablica [20][6] i true/false wszedzie?

albo moze jakos inaczej to mam zrobic?

1 użytkowników online, w tym zalogowanych: 0, gości: 1