Tablice dwuwymiarowe i dzialania na tych tablicach.

0

Witam serdecznie,

Jestem kompletnym laikiem jesli chodzi o programowanie jakiekolwiek. Poszedlem na stare lata na studia w UK w kierunku Computingu, ze specjalizacja z sieciami komputerowych i Cyber Security i nawet w tym sie czuje, ale jednym z wymogow/przedmiotow jest rowniez java z ktora nie daje sobie kompletnie rady :( Pozostal mi tydzien na wykonanie projektu zaliczeniowego i wkradla sie juz taka desperacja ze sam nie wiem co dalej robic. Bede wdzieczny za jakakolwiek pomoc.

Po krótce co za zadanie mam do zrobienia.
Jest sobie firma która wynajmuje mieszkania. Wszystko co z nia związane znajduje sie w dwóch tabelach:
screenshot-20240401161414.png
Pierwsza Tabela: Jest 5 mieszkań z czego kazde ma unikalny kod pocztowy.
Druga Tabela: Działania na tych mieszkaniach. Albo zbiera sie czynsz (+) alboi wydaje na naprawy (-).

Program musi zawierać menu, skladajace sie z trzech opcji.

  1. Dodanie wartosci do tabeli drugiej (trzeba dodac pomiedzy 5 a 8 wartosci - dodatkowych rzedów)
  2. Wyswietlenie tabeli trzeciej zaktualizowanej o dane dodane w pierwszej opcji przedstawiajaca takie dane jak ponizej:

screenshot-20240401162304.png

  1. Wyjscie - jedyna opcja na zatrzymanie problamu.

Wybranie innej opcji niz 1, 2 lub 3 powoduje ponowne wyswietlenie menu i zmuszenie do wybrania odpowiedniej opcji. Wybranie opcji 1 lub 2 po wykonaniu zadania zwraca ponownie menu. Tylko opcja 3 konczy program. - Bardzo minimalistycznie ale poniekad to mam chyba ogarniete.

Wymagania dodatkowe:

  • wybor opcji jak i dodatkowe rzedy musza byc wprowadzone z klawiatury. Nalezy zastosowac (jesli to mozliwe) jajakolwiek weryfikacje wprowadzanych danych.
  • Nie mozna korzystac z dynammicznych tabel: dynamic arrays (i.e. ArrayList, vector, HashMap, etc.) sa niedozwolone.
  • Wymagany jest algorytm (flowchart i/lub pseudo-code) dla tego produktu.

Wkleje najpierw moj kod ktory narzeźbiłem póki co:

import java.util.Scanner;
import java.util.Arrays;

public class Project {
   public static void main(String[] args) {
     Scanner input = new Scanner(System.in);
         int choice;
     loop:
     while (true)  {
        System.out.println(); // Displaying options 
        System.out.println("Possible options:");
        System.out.println("1. Add property entry.");
        System.out.println("2. Display summary.");
        System.out.println("3. Exit");
        System.out.println("________________________");
        System.out.print("Chose Your option: ");  // User choosing an option 
        choice = input.nextInt();
        switch (choice) {
            case 1:
                 option1();  // User choose 1 option
                 break;
            case 2:
                 option2();  // User choose 2 option
                 break;
            case 3:
                 System.out.println("You choose to Exit. Thank You.");  // User choose 3 option - exiting program
                 System.out.println();
            break loop;
            default:
                 System.out.println("Invalid choice. Please try again.");  // User choose wrong option. Asking again.
                 System.out.println();
        }
    } while (choice != 3);  // Making sure that third option will close the program. 
    input.close();
  }

// Testing of first option:
 private static void option1() {
 System.out.println("First option.");
 System.out.println();
}
// Testing of Second option:
 private static void option2() {
     System.out.println();
             String Table1[][]
             = {
                 {"Post code","Original cost", "Residual mortgage"},
                 {"B12-3AB", "153450", "112345"},
                 {"B13-4CD", "212130", "180234"},
                 {"B14-5GH", "120100", "85980"},
                 {"B15-6JK", "135230", "101321"},
                 {"B16-7MO", "183230", "130234"}
             };
             System.out.println("Table 1. Property details");   ~~strike~~
             for (String[] row : Table1) {
                 for (String e : row)
                     System.out.printf("%32s ", e);
                 System.out.println();
             }
             System.out.println();
             String Table2[][]
             = {
                 {"Ref#","Property#", "Description", "Amount"},
                 {"101", "B12-3AB", "Rent received", "760"},
                 {"102", "B13-4CD", "Replaced radiator in kitchen", "-150"},
                 {"103", "B13-4CD", "Rent received", "1060"},
                 {"104", "B14-5GH", "Repaired water leak in bathroom", "-70"},
                 {"105", "B14-5GH", "Rent received", "600"},
                 {"106", "B12-3AB", "Boiler serviced ", "-80"},
                 {"107", "B15-6JK", "Rent received", "690"},
                 {"108", "B16-7MO", "Repaired washing machine", "-120"},
                 {"109", "B16-7MO", "Rent received", "920"},
                 {"110", "B14-5GH", "Replaced bathroom flooring", "-210"},
                 {"111", "B15-6JK", "Boiler serviced ", "-80"},
                 {"112", "B12-3AB", "Rent received", "760"}
             };
             System.out.println("Table 2. Typical entries for different properties");
             System.out.println();
             for (String[] row : Table2) {
                 for (String e : row)
                     System.out.printf("%32s ", e);
                 System.out.println();
             }
         }
     }

Co udalo mi sie uzyskac do tej pory.

  1. Menu dziala w miare sprawnie:

screenshot-20240401162900.png

  1. Tabele wprowadzilem, ale niestety udalo mi sie je zrobic tylko i wylacznie w formie Stringu:

screenshot-20240401162934.png

  1. Wybor innej opcji nie zezwala na zamkniecie programu:

screenshot-20240401163020.png

  1. Wybranie trzeciej opcji zamyka program:

  2. screenshot-20240401163051.png

I to jest wlasciwie szczyt tyle. Uwierzcie lub nie ale siedze nad tym juz kilka tygodni. To po prostu nie moj klimat i nie moja bajka :(

Pytania:

  1. Jak sprawic aby tabele byly w mieszanej formie - zarowno String jak i Int? Czy mozna jakos sformatowac te dane aby wyswietlane byly porzadniej ni za pomoc "%32s? To byla jedyna wartosc ktora sprawila ze jakos to wyglada.
  2. Jak dokonac dzialań na tabelach aby z dwoch wyciagnac niezbedne dane i stworzyc trzecia tabele? Domyslam sie ze trzeba bedzie utworzyc petle, ktora bedzie sprawdzala dane dla kazdego kodu pocztowego z pierwszej tabeli i aktualizowana poszczegolne dane pobierane z drugiej tabeli. Ale kompletnie nie moge znalezc informacji jak sie za to zabrac.
  3. To co dla jednych jest banalne, dla innych jest niemal nie do przeskoczenia. Jedni maja dryg do grafiki i potrafia za pomoca Photoshopa sprawic cuda, inny naprawia i poskladaja kazdy hardware z zamknietymi oczami, a inni czuja sie lepiej w programowaniu. Jesli ktos chcialby podzielic sie wiedza i mi pomoc to serdecznie dziekuje. Jesli jest tutaj jakis pasjonat javy, ktory mialby ochote pomoc, ale ceni swoja ciezko zdobyta wiedze ponad czysta wdziecznosc i chcialby sie dogadac to zapraszam na priv.

Pozdrawiam serdecznie i z gory dziekuje za jakiekolwiek wskazowki i pomoc.

0
  1. Masz dwie tabele, dwie klasy z różnymi polami. Każda z nich może zawierać nadpisaną metodę .toString() lub stwórz własną typu displayView(). Odseparuj w swoim myśleniu wyświetlanie danych od reprezentacji danych w modelu apki.
  2. Trzecia, sumaryczna tabela to trzecia klasa, jednak sama logika kombinacji powinna być zawarta w czwartej klasie
  3. W funkcji main w ten sposób zrobi się czyściej, masz zrobione klocki z których wystarczy złożyć aplikację do siebie. Pomyśl jednak nad nazewnictwem, żeby kod był samowyjaśniający :)

Ogółem masz bardzo dużo czasu na ogarnięcie tego projektu szczerze mówiąc, więc poponowałbym pouczyć się najpierw javy.

2

Jeśli to tylko projekt na zaliczenie to możesz komuś zapłacić za jego zrobienie, jest odpowiedni dział na forum.

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