Kassasystem
Hej! Behöver hjälp med en uppgift i Java.
Här kommer beskrivningen:
Du ska skapa ett program som fungerar som enkelt kassasystem. I programmet ska man kunna lägga in/ta bort artiklar, sälja artiklar samt presentera försäljningshistorik.
Via en textbaserad meny kan användaren välja vad han/hon vill utföra, menyn ska ha följande alternativ:
1. Lägg in artiklar
2. Ta bort artikel
3. Visa artiklar
4. Försäljning
5. Orderhistorik
6. Sortera orderhistoriktabell
7. Avsluta
Ditt val:
Datastruktur/Databas:
Du behöver lagra data i flera datastrukturer/databaser. Du behöver en matris för att lagra artiklar (heltal) [artikelnummer, antal, pris], en matris för att lagra försäljning (heltal) [artikelnummer, antal, summa] samt en array (Date) som lagrar tid/datum för resp försäljning. Datum ska ligga på samma index som motsvarande försäljning.
Den initiala storleken ska rymma 10 artiklar. Innan man lägger in nya artiklar ska programmet fråga användaren om hur många artiklar som ska läggas till och testa om datastrukturen rymmer önskat antal artiklar, i annat fall ska datastrukturen utökas för att rymma de nya artiklarna. Artikelnummer ska börja på 1000 och öka med 1 för varje ny artikel. Antalet försäljningar kan vara fast (minst 1000).
Tänk även på att kontrollera att inmatade värden är giltiga. All inmatning från användaren ska ske genom avsedd metod.
Du kan kanske hitta alternativa lösningar men uppgiften är formulerad så att den testar vissa viktiga moment och därför ska den lösas på nedan angivet sätt. Du ska träna på att använda arrayer/matriser och att skicka/ta emot variabler till/från metoder.
Börja uppgiften med att konstruera ett flödesschema och en programlogik på papper. Beskriv sedan din struktur i textform (pseudokod) i kommentarshuvudet i programmet samt i metodkommentarerna så att en utomstående kan förstå vad programmet gör och hur din logik/algoritm fungerar.
Det är inte tillåtet att använda t.ex. ArrayList eller liknande klasser, inte heller får globala variabler (variabler som skapas utanför metoderna) användas i programmet med undantag för Scanner-objektet som ska skapas i klasskroppen:
import java.util.Scanner;
import java.util.Date;
public class Uppgift6
{
private static Scanner userInput = new Scanner(System.in);
...
}
Metodernas signaturer ska vara:
public static int menu()
public static int input()
public static int[][] insertArticles (int[][]articles, int articleNumber, int noOfArticles)
public static int[][] checkFull(int[][]articles, int noOfArticles)
public static void removeArticle (int[][]articles)
public static void printArticles (int[][]articles)
public static void sellArticle(int[][]sales, Date[] salesDate, int[][]articles)
public static void printSales(int[][]sales, Date[] salesDate)
public static void sortedTable(int[][]sales, Date[] salesDate)
Metodernas uppgifter:
menu()
Presenterar menyn, läser in och returnerar användarens val.
input()
All inmatning från användaren ska ske genom denna metod. Metoden väntar på inmatning och returnerar det heltal som användaren matat in. Metoden ska även hantera inmatningar som inte är ett heltal och så länge användaren matar in något annat än ett giltigt heltal ska denne få en ny chans att mata in ett heltal.
insertArticle (int[][]articles, int articleNumber, int noOfArticles)
Lägger till angivet antal artiklar i matrisen efter att först kontrollerat att antalet lediga positioner räcker. Varje artikel läggs till på första lediga position. Artikelnummer utgår från inputparameter (senast använda artikelnummer) och ökar med ett för varje ny artikel. Antal enheter av resp. artikel slumpas fram (1-10 st) samt artikelns pris (100-1000 kr/st). Metoden returnerar antingen den nya matrisen eller den ursprungliga.
checkFull(int[][]articles, int noOfArticles)
Kontrollerar om matrisen rymmer angivet antal nya artiklar. Vid behov skapas en ny matris som även rymmer de nya artiklarna och befintliga artiklar kopieras över. Metoden returnerar antingen den nya matrisen eller den ursprungliga.
removeArticle (int[][]articles)
Frågar användaren efter det artikelnummer som ska plockas bort. Alla fält för denna artikel sätts till 0.
printArticles (int[][]articles)
Skriver ut artikelnummer, antal och pris för alla artiklar i articles som har ett artikelnummer. Utskriften ska vara sorterad i stigande artikelnummer.
sellArticle(int[][]sales, Date[] salesDate, int[][]articles)
Frågar efter artikelnummer och antal varor som ska säljas. Om det finns tillräckligt med varor i lager minskas antalet varor och en försäljning registreras i avsedd matris (artikelnummer, antal, summa). Datum och tid för transaktionen sparas i dateTime arrayen på motsvarande position.
public static void printSales(int[][]sales, Date[] salesDate)
Skriver ut alla försäljningstransaktioner med datum, artikelnummer, antal och summa.
public static void sortedTable(int[][]sales, Date[] salesDate)
sortera försäljningstabellen efter artikelnummer, i stigande ordning. Programmet ska skriva ut den sorterade tabell som håller korrekt information om tid och pris på de sålda artiklarna.
Du får skapa ytterligare metoder om det är motiverat (tex. funktionalitet som återkommer på flera ställen i programmet)
Felkontroller
All inmatning i programmet bör vara heltal. Inmatning av något annat än heltal ska dock inte krascha programmet, felaktig inmatning ska resultera i att användaren får mata in ett nytt val.
Man ska inte kunna lägga till, ta bort eller sälja 0 st varor. Likaså ska inte priset kunna vara 0 kr.
Antalet av en enskild vara ska aldrig understiga 0 st, programmet ska inte tillåta restnotering.
Börja med att göra som det står i stycket som börjar med börja.
Sen kan du fråga om hjälp om det fortfarande behövs