Create some methods that will handle user addition, deletion etc.
I feel that you should tackle the GUI. I believe that programming with a GUI would be a little easier for a big project like this.
Use netbeans for your IDE and look into the swing components. This will offer you a drag and drop setup of a GUI that you can tweak the way you want it. Simply drag out your components and give em a click to code away at each section of your program.
Swing tutorial
To make the users register you could look at simple options(if you are short on time) such as popping up a window at the start of your program. (maybe a JOptionPane
) That will request a Username/Password and then check that against a "user file" that is saved as a txt file on your HDD.
Something like this will allow you to write text to a 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
}
}
As for saving things to the HDD you can tweak the code above to write the information you want to a text file and then use that to populate the lists etc.
With the GUI you could then seperate the controls and if username is not an admin the buttons for adding/deleting/restocking items etc would be disabled. (see pics below)

To sum up:
1.Registration can be done with popup windows in the beginning or a few textboxes on the main GUI with a submit button that writes them to a "user" file
2.IMHO making a large menu with a bunch of options is much easier with a GUI. And if you keep it simple all that threading stuff shouldn't be a problem. Plus GUIs are cool.
3.Using the code above you can write your lists to text files. Your items can populate a listbox, and the users can be checked before "login" from the user file.
Good luck, and if you have a month and access to SO you will do just fine!
Executors.newSingleThreadExecutor()
and let the swing actions add a task to that executor. Then Swing is single-threaded and so is your program's logic.