2015-04-18 1 views
-2

Je crée un programme qui servira de registre d'inscription, permettant à l'utilisateur d'ajouter et de supprimer des étudiants à un cours, de rechercher des étudiants, de rapporter des données sur les étudiants et de les sauvegarder dans un fichier. La raison pour laquelle je publie à nouveau sur le site est parce que ma méthode AddStudent() ne semble pas maintenir une variable de nom d'étudiant. Par exemple, ma méthode de recherche cherche dans le tableau des étudiants où les données sont stockées et imprime les données des étudiants recherchés, ou du moins, quand vous ajoutez plus d'un étudiant, la variable name change pour celle de l'étudiant le plus récemment entré. chaque étudiant car il pense qu'ils ont tous les mêmes noms. Il le fait aussi pour ma méthode de sauvegarde, il enregistre les données de l'étudiant dans un fichier mais toutes avec le même nom, aucune des autres données n'est dupliquée. Jusqu'à présent, j'ai ceci:La méthode AddStudent() ne conserve pas de variable de nom

public static void AddStudent() { 

     String sName = null; 
     String dateOB = null; 
     String address = null; 
     String GENDER = null; 

     // create student object 
     Student studentToAdd = new Student(sName, dateOB, address, GENDER); 
     // read in name and update student 
     Scanner scanner = new Scanner(System.in); 
     System.out.println ("Type Student Name: "); 
     String name = scanner.nextLine(); 
     Student.Name = name; 

     // read in and validate date of birth 
     Scanner scannerDOB = new Scanner (System.in); 
     System.out.println ("Type Student Date of Birth : "); 
     String dateOfBirth = scannerDOB.nextLine(); 
     studentToAdd.DateOfBirth = dateOfBirth; 

     // read in address 
     Scanner scannerAdd = new Scanner (System.in); 
     System.out.println ("Type Student Address: "); 
     String address1 = scannerAdd.nextLine(); 
     studentToAdd.Address = address1; 

     // read in gender - validate against you're constant? 
     Scanner scannerGen = new Scanner (System.in); 
     System.out.println ("Type Student Gender\n M for Male \n F for Female: "); 
     String gender = scannerGen.nextLine(); 
     studentToAdd.Gender = gender; 

     // Add to the array in the last free location 
     Students [nextFreeLocation] = studentToAdd; 
} 
+0

Où le tableau Students est-il défini et où le nextFreeLocation est-il défini? – CKing

+0

Veuillez supprimer toute mention de délais, car cela n'a rien à voir avec la question elle-même, ce qui nous inquiète vraiment, et peut augmenter les votes négatifs sur votre question. En ce qui concerne votre code, je me demande si votre programme doit être restructuré, par exemple en créant une classe School avec un tableau Student [] non statique et une méthode non static 'public void addStudent (Student student)' n'a aucune interaction de l'utilisateur dedans. Le code d'interaction de l'utilisateur devrait aller ailleurs. –

+0

Question éditée et les mentions de date limite ont été supprimées. –

Répondre

2

Je suggère que vous re-conception radicalement votre programme comprenant:

  • Création d'une classe de cours qui est titulaire d'un ArrayList<Student> (pas un tableau), disons appelé students.
  • Donner à cette classe une méthode publique non-statique public void addStudent(Student student) qui permet à des classes extérieures d'ajouter la liste Étudiants à la liste des étudiants du cours.
  • Avoir votre code d'interface utilisateur (UI), y compris tout le code qui utilise Scanner, distinct du code du cours.
  • Oui, le code de l'interface utilisateur peut également avoir une méthode addStudent non statique, où il obtient des informations sur l'étudiant de l'utilisateur, crée un objet Etudiant puis appelle la méthode addStudent(...) de Course. Avoir une classe distincte pour enregistrer et télécharger des données vers et à partir de votre (vos) fichier (s).

Bien sûr, tout cela dépendra de vos besoins d'affectation, et si l'une de ces suggestions va à l'encontre de celles-ci, s'il vous plaît faites le moi savoir.

+0

Je pense que ce type n'a pas d'interface utilisateur, c'est pourquoi il utilise ' Scanner' – Blip

+1

@Blip: Il dispose d'une interface utilisateur de console, qui est une interface utilisateur, même si elle est primitive. –

+1

@Blip Je crois que vous vouliez dire GUI? – CKing