prosty program sklepu java

0

Witam serdecznie
Właśnie staram się zrobić prosty program sklepu.

public class Sklep { 
	public static void main(String args[]){
		  Scanner sc=new Scanner(System.in);
		String kod;
		String o;
		String line = "";
		FileInputStream fin = null;
		try{
			fin = new FileInputStream("id.txt");
		}
		catch(FileNotFoundException e){
			System.out.println("Brak pliku id.txt");
			System.exit(-1);
			
		}
		
		
		
        
        System.out.println("****************************************");
        System.out.println("*             E-HURTOWNIA              *");
        System.out.println("****************************************");
        System.out.println("* Witam w e-hurtownii, podaj swoje id. *");
        System.out.println("****************************************");
        kod= JOptionPane.showInputDialog("Podaj id klienta");
        
        
        DataInputStream out = new DataInputStream(fin);
        BufferedReader inbr = new BufferedReader(new InputStreamReader(fin));
        boolean ok = false;
        try{ 
            while (((line = inbr.readLine()) != null) && !ok){
                if(line.equals(kod)){
                    ok = true;
                }
            }
        }
        catch(IOException e)
        { 
            System.out.println(e);
        }
        if(ok){
        	System.out.println("****************************************");
        	System.out.println("*       Kod pin prawidłowy.            *"); 
        	System.out.println("*      Wybierz jedną z opcji.          *"); 
			System.out.println("****************************************");
		
			 o= JOptionPane.showInputDialog("Wybierz rodzaj operacji");
            
        }
        else{
        	
#1
#2
#3
        
        if(!ok){
        	System.out.println("Id  jest nieprawidłowy");
        	kod= JOptionPane.showInputDialog("Podaj własciwe id klienta");
		
		
        }
        if(!ok){
            System.out.println("Bledne id ");
            System.out.println("Skontaktuj się z działem odsługi klienta");
            System.exit(-1);
            }
    

	}
}} 
  1. na chwilę obecną program sprawdza czy string jaki wprowadzamy jest identyczny z zapisanym w pliku.
    #1 chce dodać metodę która wyświetla w konsoli listę produktów [ 1. cytryna 5.50 / kg ]
    #2 chce dodać metodę, która w oknie dialogowym pozwoli na wpisywanie nazwy produktu wraz z ilością jaki chcemy zamówić
    #3 chcę dodać metodę, która pozwoli na stworzenie paragonu (stringu), który docelowo będzie zapisany do pliku

Proszę Was o pomoc w znalezieniu pomysłu na pętle, metodę na napisanie tych 3 rzeczy. Z góry dziękuje i pozdrawiam. :)

0

Witam,
chyba powinieneś doprecyzować swój problem, podać więcej szczegółów, bo póki co jest trochę (bardzo?) chaotycznie i z Twojego kodu niewiele wynika.
Masz jakiś konkretny projekt/plan na tę aplikację? :)

0

Stworzyłem przykładową listę (numer porządkowy. nazwa. cena za kg)
cytryny 4
cebula 2
arbuz 1
wiśnia 4

Chce napisać program, który wczytuje napisy podawane przez użytkownika (dopóki nie zrezygnuje on z ich wprowadzania) w formacie [produkt ilosc] np [cytryny X],
a następnie:

  1. zapisuje te dane w stringu
  2. wykonuje liczenie X * (cena za kg)

Np.

Wpisuje

["cytryna 6"] ["cebula 3"] ["arbuz 1"] ["koniec"]
  1. program w stringu zapisze
"cytryna 6 cebula 3 arbuz 1"
  1. program obliczy cenę do zapłaty 64 + 32 + 1*1 =
32

Zacząłem tak:

String s="";
	boolean koniec=false;
	
	while (koniec==false) {
		s=JOptionPane.showInputDialog("Podaj [produkt ilosc] np [cytryny X] lub wcisnij 'CANCEL'");
		if (s==null) {	koniec=true;} else 
		{
			
		}

Będę wdzięczny za każdą pomoc, jeżeli nasuwa Ci się jakieś spostrzeżenie to będzie dla mnie to cenna rada.
No i moja wiedza i pomysły się zatrzymały.

0

Przemyśl ten przykład.

import java.util.*;
import java.io.*;
import javax.swing.JOptionPane;

public class Sklep 
{ 
    public static void main(String args[])
    {
        Scanner sc=new Scanner(System.in);
        String kod;
        String o;
        String line = "";
        FileInputStream fin = null;
        try
        {
            fin = new FileInputStream("id.txt");
        }
        catch(FileNotFoundException e)
        {
            System.out.println("Brak pliku id.txt");
            System.exit(-1);
 
        }
 
        System.out.println("****************************************");
        System.out.println("*             E-HURTOWNIA              *");
        System.out.println("****************************************");
        System.out.println("* Witam w e-hurtownii, podaj swoje id. *");
        System.out.println("****************************************");
        kod = JOptionPane.showInputDialog("Podaj id klienta");
  
        DataInputStream out = new DataInputStream(fin);
        BufferedReader inbr = new BufferedReader(new InputStreamReader(fin));
        boolean ok = false;
        try
        { 
            while (((line = inbr.readLine()) != null) && !ok)
            {
                if(line.equals(kod))
                {
                    ok = true;
                }
            }
        }
        catch(IOException e)
        { 
            System.out.println(e);
        }
        if(!ok)
        {
            JOptionPane.showMessageDialog(null,"Id jest nieprawidlowy");
            System.exit(-1);
        }
        ArrayList<Produkt> produkty = createListOfProducts();
        System.out.println("****************************************");
        System.out.println("*       Kod pin prawidłowy.            *");
        System.out.println("****************************************");
        System.out.println("*         Lista towarow                *");
        for(int i=0;i<produkty.size();i++)
        {
            System.out.println((i+1)+". "+produkty.get(i).nazwa+" "+produkty.get(i).cena);
        }
        System.out.println("****************************************");        
        System.out.println("*      Wybierz jedna z opcji.          *"); 
        System.out.println("****************************************");
        System.out.println("1 - pierwszy towar");
        System.out.println("...");
        System.out.println(produkty.size()+" - ostatni towar");
        System.out.println("p - podsumowanie");
        System.out.println("k - koniec programu");
        ArrayList<Produkt> paragon = new ArrayList<Produkt>();
        while(true)
        {
            o = JOptionPane.showInputDialog("Wybierz rodzaj operacji").toLowerCase();
            switch(o)
            {
                case "k":
                    System.exit(0);
                case "p":
                    //powinien być zapis paragonu do pliku
                    double suma = 0.0;
                    for(int i=0;i<paragon.size();i++)
                    {
                        Produkt produkt = paragon.get(i);
                        System.out.println(produkt.nazwa+" "+produkt.cena+"*"+produkt.ile+" = "+produkt.cena*produkt.ile);
                        suma+=produkt.cena*produkt.ile;
                    }
                    System.out.println("--------------------");
                    System.out.println(suma);
                    paragon.clear();
                    break;
                default:
                    ok = false;
                    int nr = -1;
                    try
                    {
                        nr = Integer.parseInt(o)-1;
                        ok = (nr >= 0) && (nr < produkty.size());
                    }
                    catch(NumberFormatException e)
                    {
                    }
                    if(ok)
                    {
                        Produkt produkt = produkty.get(nr); 
                        String wybor = JOptionPane.showInputDialog("Towar "+produkt.nazwa+"\nPodaj ilość:");
                        try
                        {
                            double ile = Double.parseDouble(wybor);
                            if(ile!=0.0)
                            {
                                paragon.add(new Produkt(produkt.nazwa,produkt.cena,ile));
                            }
                        }
                        catch(NumberFormatException e)
                        {
                        }
                    }
            }
        }
    }
    static ArrayList<Produkt> createListOfProducts()
    {
        ArrayList<Produkt> result = new ArrayList<Produkt>();
        result.add(new Produkt("piwo",2.5));
        result.add(new Produkt("truskawki",8.0));
        result.add(new Produkt("chleb",2.5));
        result.add(new Produkt("ser",21.45));
        return result;
    }
}
class Produkt
{
    String nazwa;
    double cena;
    double ile = 0.0;
    public Produkt(String nazwa,double cena)
    {
        this.nazwa = nazwa;
        this.cena = cena;
    }    
    public Produkt(String nazwa,double cena,double ile)
    {
        this.nazwa = nazwa;
        this.cena = cena;
        this.ile = ile;
    }
}
0

dziękuje serdecznie za Twój czas i chęci włożone w pomoc, pracuje na wersji jre1.6 a tam jest pętla switch, która działa na 1.7 i gdy zmieniłem liberty na 1.7 to

java.lang.UnsupportedClassVersionError: Projekt/Sklep : Unsupported major.minor version 51.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
Exception in thread "main"

pewnie to jakaś błahostka ale nie mam pojęcia jak rozwiązać problem

1

Nie wiem co to jest liberty. Jak musisz pracować na wersji 1.6, to zmień fragment kodu

            o = JOptionPane.showInputDialog("Wybierz rodzaj operacji").toLowerCase();
            if(o.equals("k"))
            {
                System.exit(0);
            }
            else if(o.equals("p"))
            {
                //powinien być zapis paragonu do pliku
                double suma = 0.0;
                for(int i=0;i<paragon.size();i++)
                {
                    Produkt produkt = paragon.get(i);
                    System.out.println(produkt.nazwa+" "+produkt.cena+"*"+produkt.ile+" = "+produkt.cena*produkt.ile);
                    suma+=produkt.cena*produkt.ile;
                }
                System.out.println("--------------------");
                System.out.println(suma);
                paragon.clear();
            }
            else
            {
                ok = false;
                int nr = -1;
                try
                {
                    nr = Integer.parseInt(o)-1;
                    ok = (nr >= 0) && (nr < produkty.size());
                }
                catch(NumberFormatException e)
                {
                }
                if(ok)
                {
                    Produkt produkt = produkty.get(nr); 
                    String wybor = JOptionPane.showInputDialog("Towar "+produkt.nazwa+"\nPodaj ilość:");
                    try
                    {
                        double ile = Double.parseDouble(wybor);
                        if(ile!=0.0)
                        {
                            paragon.add(new Produkt(produkt.nazwa,produkt.cena,ile));
                        }
                    }
                    catch(NumberFormatException e)
                    {
                    }
                }
            }
0

a jakiej metody użyć do zapisu paragonu do pliku?
próbowałem tak:

else if(o.equals("p"))
            {
            	
            	
            	
            	
               
            	 
                double suma = 0.0;
                for(int i=0;i<paragon.size();i++)
                {
                    Produkt produkt = paragon.get(i);
                    System.out.println(produkt.nazwa+" "+produkt.cena+"*"+produkt.ile+" = "+produkt.cena*produkt.ile);
                    suma+=produkt.cena*produkt.ile;
                    

                    
                   
                PrintWriter zapis = new PrintWriter("paragon.txt");  
                zapis.println(produkt.nazwa+" "+produkt.cena+"*"+produkt.ile+" = "+produkt.cena*produkt.ile+"Cena wynosi: "+suma);  
                System.out.println(suma);
                
                 zapis.close(); 
                    
            	
                }
                System.out.println("--------------------");
                System.out.println(suma);
                //paragon.clear();
               
               
            }

ale w pliku zapis wygląda tak

Rabarbar 5.3*3.0 = 15.899999999999999Cena wynosi: 48.9

1

Kod zapisu do pliku jest bez sensu

PrintWriter zapis = new PrintWriter("paragon.txt");  
for(int i=0;i<paragon.size();i++)
{
     Produkt produkt = paragon.get(i);
     System.out.println(produkt.nazwa+" "+produkt.cena+"*"+produkt.ile+" = "+produkt.cena*produkt.ile);
     suma+=produkt.cena*produkt.ile;           
     zapis.println(produkt.nazwa+" "+produkt.cena+"*"+produkt.ile+" = "+produkt.cena*produkt.ile);   
}
System.out.println(suma);
zapis.close();

Możesz też formatować wyjście (tylko dwa miejsca po przecinku)

DecimalFormat df=new DecimalFormat("####.##");
...
     zapis.println(produkt.nazwa+" "+produkt.cena+"*"+produkt.ile+" = "+df.format(produkt.cena*produkt.ile));
0

Dziękuje za pomoc w całym programie. Pozdrawiam serdecznie :)

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