Hallo Community;
Als Anfänger habe ich nun mein erstes "richtiges" Java Projetk fertiggestellt: Ein ganz einfaches Tool zum Verwalten von Personen mit Vorname, Nachname und Wohnort. Es können Personen hinzugefügt, gelöscht, gesucht und alle Personen angezeigt werden.
Nun möchte ich es euch einfach mal vorstellen. Mich würde interessieren, was ihr davon haltet. Dabei ist es mir besonders wichtig, was ich noch besser oder anders machen sollte und was ihr schon für ganz gelungen haltet, sodass man es in andere Projekte übertragen kann.
Mir ist bewusst, dass dieses Projekt garantiert nicht die beste Lösung ist. Mir fällt auch so einiges ein, dass verbessert werden müsste.
- die Main ist sehr umfangreich (Wie sollte man das auf andere Klassen aufteilen?)
- die Bennenung von Klassen, Methoden und Variablen ist teilweise inkonseqent und irreführend
- Der Code zur Nutzereingabe ist bei den Methoden uiAddPersonen() und uiRemovePersonen() fast identisch. (Wie kann ich das besser zusammenfassen?)
Die Main:
Class Personen:
Class Person:
Vielen Dank an alle, die vieleicht kurz über mein Projekt schauen und einen kleinen Tipp für mich abgeben!
Als Anfänger habe ich nun mein erstes "richtiges" Java Projetk fertiggestellt: Ein ganz einfaches Tool zum Verwalten von Personen mit Vorname, Nachname und Wohnort. Es können Personen hinzugefügt, gelöscht, gesucht und alle Personen angezeigt werden.
Nun möchte ich es euch einfach mal vorstellen. Mich würde interessieren, was ihr davon haltet. Dabei ist es mir besonders wichtig, was ich noch besser oder anders machen sollte und was ihr schon für ganz gelungen haltet, sodass man es in andere Projekte übertragen kann.
Mir ist bewusst, dass dieses Projekt garantiert nicht die beste Lösung ist. Mir fällt auch so einiges ein, dass verbessert werden müsste.
- die Main ist sehr umfangreich (Wie sollte man das auf andere Klassen aufteilen?)
- die Bennenung von Klassen, Methoden und Variablen ist teilweise inkonseqent und irreführend
- Der Code zur Nutzereingabe ist bei den Methoden uiAddPersonen() und uiRemovePersonen() fast identisch. (Wie kann ich das besser zusammenfassen?)
Die Main:
Code:
package de.crafting_jo.main;
import java.util.List;
import java.util.Scanner;
import de.crafting_jo.person.Person;
import de.crafting_jo.personen.Personen;
public class Main {
public static void main(String[] args) {
System.out.println("Projekt enabled");
Personen pers1 = new Personen();
Scanner scanner = new Scanner(System.in);
uiAddPersonen(scanner, pers1);
while(true) {
System.out.println("Hinzufügen mit [h], Löschen mit [l], Suchen mit [s], Alle anzeigen mit [a]:");
String action = scanner.next();
if (action.equalsIgnoreCase("h")) {
uiAddPersonen(scanner, pers1);
}
if (action.equalsIgnoreCase("l")) {
uiRemovePersonen(scanner, pers1);
}
if (action.equalsIgnoreCase("s")) {
uiFindPerson(scanner, pers1);
}
if (action.equalsIgnoreCase("a")) {
uiListAll(scanner, pers1);
}
}
}
public static void uiFindPerson(Scanner scanner, Personen pers1) {
while(true) {
List<Person> alle = pers1.getPersonen();
if(alle != null) {
System.out.println("Bitte Vorname, Nachname oder Wohnort angeben:");
String gesucht = scanner.next();
List<Person> p = pers1.getPersonByNachname(gesucht);
List<Person> p2 = pers1.getPersonByVorname(gesucht);
List<Person> p3 = pers1.getPersonByWohnort(gesucht);
boolean found = false;
if(p != null) {
for (Person person : p) {
System.out.println("- " + person.getVorname() + ", " + person.getNachname() + ", " + person.getWohnort() );
}
found = true;
}
if(p2 != null) {
for (Person person : p2) {
System.out.println("- " + person.getVorname() + ", " + person.getNachname() + ", " + person.getWohnort() );
}
found = true;
}
if(p3 != null) {
for (Person person : p3) {
System.out.println("- " + person.getVorname() + ", " + person.getNachname() + ", " + person.getWohnort() );
}
found = true;
}
if(!found) {
System.out.println("Nichts gefunden!");
}
} else {
break;
}
System.out.println("mit [f] beenden, mit anderer Taste fortfahren");
String loop = scanner.next();
if (loop.equalsIgnoreCase("f")) {
break;
}
}
}
public static void uiListAll(Scanner scanner, Personen pers1) {
List<Person> alle = pers1.getPersonen();
if(alle != null) {
System.out.println("Liste aller Personen:");
for (Person p : alle) {
System.out.println("- " + p.getVorname() + ", " + p.getNachname() + ", " + p.getWohnort() );
}
}
}
public static void uiRemovePersonen(Scanner scanner, Personen pers1) {
List<Person> alle = pers1.getPersonen();
if(alle != null) {
System.out.println("Bitte zu löschende Person angeben:");
while(true) {
System.out.println("Vorname:");
String vorname = scanner.next();
System.out.println("Nachname:");
String nachname = scanner.next();
System.out.println("Wohnort:");
String wohnort = scanner.next();
System.out.println("Mit [y] bestätigen, mit anderer Taste abbrechen");
String control = scanner.next();
if (control.equalsIgnoreCase("y")) {
for(int i=0;i<alle.size();i++) {
Person p = alle.get(i);
if(p.getNachname().equalsIgnoreCase(nachname) && p.getVorname().equalsIgnoreCase(vorname) && p.getWohnort().equalsIgnoreCase(wohnort)) {
alle.remove(i);
}
}
}
System.out.println("mit [f] beenden, mit anderer Taste fortfahren");
String loop = scanner.next();
if (loop.equalsIgnoreCase("f")) {
break;
}
}
}
}
public static void uiAddPersonen(Scanner scanner, Personen pers1) {
System.out.println("Bitte neue Personen hinzufügen:");
while(true) {
System.out.println("Vorname:");
String vorname = scanner.next();
System.out.println("Nachname:");
String nachname = scanner.next();
System.out.println("Wohnort:");
String wohnort = scanner.next();
System.out.println("Mit [y] bestätigen, mit anderer Taste abbrechen");
String control = scanner.next();
if (control.equalsIgnoreCase("y")) {
pers1.addPerson(new Person(vorname, nachname, wohnort));
}
System.out.println("mit [f] beenden, mit anderer Taste fortfahren");
String loop = scanner.next();
if (loop.equalsIgnoreCase("f")) {
break;
}
}
}
}
Class Personen:
Code:
package de.crafting_jo.personen;
import java.util.ArrayList;
import java.util.List;
import de.crafting_jo.person.Person;
public class Personen {
private List<Person> personen = new ArrayList<Person>();
public Personen () {
}
public List<Person> getPersonen() {
if(!personen.isEmpty()) {
return personen;
}
System.out.println("Keine Personen vorhanden!");
return null;
}
public void addPerson(Person person) {
personen.add(person);
System.out.println("Person " + person.getVorname() + " hinzugefügt!");
}
public void removePerson(Person person) {
personen.remove(person);
System.out.println("Person " + person.getVorname() + " entfernt!");
}
public List<Person> getPersonByWohnort(String wohnort) {
List<Person> fWohnort = new ArrayList<Person>();
for(Person person : personen) {
if(person.getWohnort().equals(wohnort)) {
fWohnort.add(person);
}
}
if (fWohnort.isEmpty()) {
return null;
}
return fWohnort;
}
public List<Person> getPersonByNachname(String nachname) {
List<Person> fNachname = new ArrayList<Person>();
for(Person person : personen) {
if(person.getNachname().equals(nachname)) {
fNachname.add(person);
}
}
if (fNachname.isEmpty()) {
return null;
}
return fNachname;
}
public List<Person> getPersonByVorname(String vorname) {
List<Person> fVorname = new ArrayList<Person>();
for(Person person : personen) {
if(person.getVorname().equals(vorname)) {
fVorname.add(person);
}
}
if (fVorname.isEmpty()) {
return null;
}
return fVorname;
}
}
Class Person:
Code:
package de.crafting_jo.person;
public class Person {
private String vorname;
private String nachname;
private String wohnort;
public Person(String vorname, String nachname, String wohnort) {
this.setVorname (vorname);
this.setNachname(nachname);
this.setWohnort (wohnort);
}
public boolean containsVorname(String vornamee) {
if(vorname.equals(vornamee)) {
return true;
}
return false;
}
public String getVorname() {
return vorname;
}
public void setVorname(String vorname){
this.vorname = vorname;
}
public String getWohnort() {
return wohnort;
}
public void setWohnort(String wohnort) {
this.wohnort = wohnort;
}
public String getNachname() {
return nachname;
}
public void setNachname(String nachname) {
this.nachname = nachname;
}
}
Vielen Dank an alle, die vieleicht kurz über mein Projekt schauen und einen kleinen Tipp für mich abgeben!