Come posso iniziare il mio primo progetto Java non di dimensioni ridotte? [chiuso]

3

Tra un mese, devo consegnare un progetto Java. Devo creare un programma di e-shop che abbia due tipi di utenti (admin e utenti normali). L'amministratore può aggiungere / eliminare / rifornire materiale nel negozio mentre l'utente normale può guardare i prodotti e acquistarli. Per acquistare un prodotto, il cliente deve creare un account in quell'e-shop. Non sono il miglior studente di Java, ma ho fatto un piano su quali classi potrei usare e questo tipo di cose.

Ma quello che non riesco a capire è come:

  1. consente agli utenti di registrarsi all'e-shop
  2. crea menu diversi senza fare una GUI, siamo autorizzati a creare una GUI ma è solo un bonus e non è realmente necessario. Tra l'altro non ho mai provato a fare una GUI.
  3. come fare in modo che il programma salvi cose come il nome utente e i prodotti sul disco rigido.

Non voglio che nessuno lo faccia per me, ho solo bisogno di una guida, solo per scoprire da dove cominciare e cosa dovrei cercare.

    
posta captain 03.08.2011 - 14:29
fonte

7 risposte

9

Java è un linguaggio orientato agli oggetti: inizia modellando il problema come oggetti. Vedo prodotto, inventario, ordine, ordine, ecc. Inizia con quelli.

Elenca le funzioni che la tua app deve implementare e inizia a controllarle:

  1. Admin aggiungi, elimina, aggiorna prodotti
  2. Gli acquirenti cercano e acquistano prodotti

Livelli la tua applicazione: persistenza, servizio, modello, vista.

Per ora dimentica l'interfaccia utente. Ottieni gli oggetti e i servizi giusti. È sempre possibile aggiungere successivamente un'interfaccia utente più elaborata. La riga di comando è sufficiente.

Unit test everything.

    
risposta data 03.08.2011 - 14:35
fonte
1

Beh, di solito risparmierai qualcosa usando JDBC, anche se per semplificare le cose suppongo che potresti provare a scrivere su un file usando l'I / O del file o le API NIO. Leggi su questi tutorial nella sezione Java Tutorial (è lì che leggo su come fare ciò che faccio voglio un sacco di volte).

Inoltre, esaminerei il pattern MVC (Model View Controller) per fare il lavoro. Questo può aiutarti molto. Puoi google o anche cercare in questo forum. C'è un LOT là fuori per il pattern MVC (mantiene la logica e l'interfaccia utente separati e più facili da mantenere).

    
risposta data 03.08.2011 - 14:38
fonte
1

Proverò a darti alcuni suggerimenti:

1 + 3) Di solito un utente avrà un nome utente e una password. Un nuovo utente può registrarsi inserendo un nome utente e la sua password. Assicurati che il nome utente sia unico! Questa coppia è può essere conservata da qualche parte (un database di solito, o semplicemente un semplice file di testo: link ). È possibile utilizzare un file CSV (valori separati da virgola): tutti i dati relativi a un utente vengono memorizzati in un'unica riga, in cui campi diversi sono separati da virgola o punto e virgola. (Basta google per il file CSV per saperne di più su questo).

2) Non sono sicuro di cosa si possa definire un menu senza utilizzare una GUI. Forse è sufficiente che un utente possa inserire cose come "acquista oggetto1" nella riga di comando? In tal caso, dai un'occhiata a: link . Per iniziare con una GUI Java: link

    
risposta data 03.08.2011 - 14:42
fonte
1

Crea alcuni metodi che gestiranno l'aggiunta, la cancellazione ecc.

dell'utente

Sento che dovresti affrontare la GUI. Credo che programmare con una GUI sarebbe un po 'più facile per un grande progetto come questo.

Utilizza netbeans per il tuo IDE e guarda i componenti dello swing. Questo ti offrirà una configurazione drag and drop di una GUI che puoi modificare nel modo desiderato. Trascina semplicemente i componenti e fai un clic per codificare via in ogni sezione del tuo programma.

Tutorial di swing

Per fare in modo che gli utenti si registrino, puoi guardare a semplici opzioni (se sei a corto di tempo) come far apparire una finestra all'inizio del tuo programma. (forse un JOptionPane ) Richiederà un nome utente / password e quindi controllerà che faccia riferimento a un "file utente" che è salvato come file txt sul tuo HDD.

Qualcosa di simile ti permetterà di scrivere del testo in un file.

public static void main(String[] args) {

    // TODO code application logic here
    String filename = "C:\UsersFile.txt";
    FileWriter fstream;

    try {
        fstream = new FileWriter(filename);
        BufferedWriter out = new BufferedWriter(fstream);
        //get the input from your textbox, optionpane etc.
        //and write it out to the file.  
        }
        out.flush();
        out.close();
    } catch (IOException e) {
        //handle your exception the way you'd like
    }
}

Per quanto riguarda il salvataggio di elementi nell'HDD, puoi modificare il codice qui sopra per scrivere le informazioni che desideri in un file di testo e utilizzarle per popolare gli elenchi, ecc.

Con la GUI puoi quindi separare i controlli e se il nome utente non è un amministratore, i pulsanti per aggiungere / eliminare / ripoporre gli elementi ecc. saranno disabilitati. (vedi foto sotto)

Perriassumere:

1.Laregistrazionepuòessereeseguitaconfinestrepopupall'iniziooalcunecaselleditestosullaGUIprincipaleconunpulsantediinviochelescriveinunfile"utente"

2. IMHO creare un menu di grandi dimensioni con un sacco di opzioni è molto più semplice con una GUI. E se si mantiene semplice tutto ciò che threading non dovrebbe essere un problema. Le GUI avanzate sono fantastiche.

3. Usando il codice qui sopra puoi scrivere i tuoi elenchi in file di testo. I tuoi articoli possono popolare una casella di riepilogo e gli utenti possono essere controllati prima di "accedere" dal file utente.

Buona fortuna, e se hai un mese e accedi a SO, lo farai!

    
risposta data 03.08.2011 - 14:38
fonte
0

Perché non archiviare solo gli utenti registrati in una HashMap , indicizzata dal nome utente?

Per i diversi menu, si desidera elaborare l'input da riga di comando. Spesso utilizzato è la classe Scanner .

È possibile salvare oggetti java sul disco rigido. Cerca "serializzazione oggetti Java" per un modo per salvare le tue strutture e leggerle di nuovo. Un altro sarebbe quello di generare gli utenti in un formato CSV e leggerli / scriverli quando necessario.

    
risposta data 03.08.2011 - 14:40
fonte
0

Penso innanzitutto che dovresti iniziare creando un modello di dati per la tua applicazione, trovare diversi tipi di entità di cui hai bisogno (ad esempio Utente, Prodotto, Cliente)

In secondo luogo dovresti probabilmente identificare i diversi livelli necessari (repository, manager, ecc.), e anche come vuoi test unitari / integrazione testarli.

Decidi come vuoi gestire l'iniezione delle dipendenze.

Decidi la struttura del menu. Credo che l'utilizzo di una semplice interfaccia grafica sarebbe più semplice rispetto all'utilizzo di una struttura basata su testo.

    
risposta data 03.08.2011 - 14:46
fonte
0

Prendi alcuni libri su Java. La mia raccomandazione è di ottenere i libri di OReilly "Apprendimento di Java" e " Java Swing " (per le GUI).

Oppure guarda i tutorial di Java per Swing .

Altrimenti la tua domanda è troppo vaga e indefinita per noi per rispondere.

make different menus without doing a GUI

IMHO è molto più semplice creare un menu usando una GUI piuttosto che un menu basato sul testo, ma questa è solo la mia opinione.

Un programma di esempio:

package com.example.test.gui;

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;

public class MenuExample extends JFrame
{
    public MenuExample(String title)
    {
        super(title);

        JPanel panel = new JPanel(new BorderLayout());
        setJMenuBar(createMenuBar());
        Action button1Action = new AbstractAction("button1") {
            @Override public void actionPerformed(ActionEvent e) {
                onButton1();
            }           
        };
        Action button2Action = new AbstractAction("button2") {
            @Override public void actionPerformed(ActionEvent e) {
                onButton2();
            }           
        };
        panel.add(new JButton(button1Action), BorderLayout.WEST);
        panel.add(new JButton(button2Action), BorderLayout.EAST);
        setContentPane(panel);
        pack();
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setLocationRelativeTo(null); // in center of screen
        setVisible(true);
    }

    private JMenuBar createMenuBar() {
        JMenuBar menuBar = new JMenuBar();

        Action fileSaveAction = new AbstractAction("Save") {
            @Override public void actionPerformed(ActionEvent e) {
                saveFile();             
            }           
        };
        Action fileOpenAction = new AbstractAction("Open") {
            @Override public void actionPerformed(ActionEvent e) {
                openFile();             
            }           
        };
        Action aboutAction = new AbstractAction("About") { 
            @Override public void actionPerformed(ActionEvent e) {
                showAboutBox();             
            }           
        };
        JMenu menu;
        menu = new JMenu("File");
        menu.add(new JMenuItem(fileSaveAction));
        menu.add(new JMenuItem(fileOpenAction));
        menuBar.add(menu);

        menu = new JMenu("Help");
        menu.add(new JMenuItem(aboutAction));       
        menuBar.add(menu);

        return menuBar;
    }

    // here's where your program would actually do stuff
    protected void saveFile() { note("save file"); }
    protected void openFile() { note("open file"); }
    protected void showAboutBox() { note("show about box"); }
    protected void onButton2() { note("button2"); }
    protected void onButton1() { note("button1"); }

    private void note(String string) { System.out.println(string); }

    public static void main(String[] args)
    {
        new MenuExample("Menu example");
    }
}
    
risposta data 03.08.2011 - 14:33
fonte

Leggi altre domande sui tag