Help me with this timer stuff

So here's my code first of all:
private class TimerListener implements ActionListener{
          @Override
          public void actionPerformed(ActionEvent action) {
               time--;
               System.out.println(time);
               int minute = time/60;
               int seconds = time%60;
               updateTime = minute + ":" + seconds;
               if (time == 0) {
                    timer.stop();
                    if (que.size() != 0){
                         temp = que.remove();
                         time = temp.getPlaytime();
                         timer.start();
                         player.playSong(baseDir + temp.getAudioFileName());
     }this code is located at a class called SongQueue. I have another class called Jukebox which has a song player object in it. Song player has a method called playSong and it takes a string, which is the filename of the song.
My problem here is that everytime the timer stops, it will search in the queue if there is another Song, if it has then it will start the timer again, until there has been no song in the queue (LinkedList). The main thing is, everytime a timer starts, a song has also to start. But how do I start the song to play then, from the Jukebox class if possible. Any idea??

yes I do. it is the following:
package songplayer;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import javax.swing.ListModel;
import javax.swing.ListSelectionModel;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
public class Jukebox extends JFrame {
     public static void main(String[] args) {
          Jukebox jukebox = new Jukebox();
          jukebox.setVisible(true);
     private JukeboxAccountCollection account;
     private SongQueue queue;
     private JukeboxAccount currentAccount;
     private JTextField input;
     private JButton play;
     private JButton login;
     private JButton logout;
     private JLabel name;
     private JLabel timeRemaining;
     private JLabel playsRemaining;
     private JPanel panelRight;
     private JPanel panelQueue;
     private JPanel panelProperties;
     private JPanel panelLeft;
     private JPanel panelCenter;
     private JList view;
     private JList view1;
     private ListModel model1;
     private ListModel model;
     public static final String baseDir = System.getProperty("user.dir")
               + "/songfiles/";
     public Jukebox() {
          this.setSize(600, 600);
          queue = new SongQueue();
          account = new JukeboxAccountCollection();
          play = new JButton("Play");
          login = new JButton("Log on");
          logout = new JButton("Log out");
          input = new JTextField("");
          name = new JLabel("Name: ");
          timeRemaining = new JLabel("Time Remaining: ");
          playsRemaining = new JLabel("Plays Remaining: ");
          model = new SongCollection();
          model1 = new SongQueue();
          ((SongCollection) model).addSong(new Song("Jamiroquai",
                    "7 Days In Sunny June", 242, "7 Days in Sunny June.mp3"));
          view = new JList(model);
          view.setSelectedIndex(0);
          view.setPreferredSize(new Dimension(250, 600));
          view.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
          JScrollPane pane = new JScrollPane(view);
          pane.setPreferredSize(new Dimension(180, 600));
          view1 = new JList(model1);
          view1.setPreferredSize(new Dimension(200, 200));
          panelQueue = new JPanel();
          panelQueue.add(view1);
          panelProperties = new JPanel();
          panelProperties.setPreferredSize(new Dimension(200, 600));
          panelProperties.setLayout(new GridLayout(7, 1, 5, 5));
          panelProperties.add(input);
          panelProperties.add(name);
          panelProperties.add(timeRemaining);
          panelProperties.add(playsRemaining);
          panelProperties.add(login);
          panelProperties.add(logout);
          panelRight = new JPanel();
          panelRight.setLayout(new GridLayout(2, 1));
          panelRight.add(panelQueue);
          panelRight.add(panelProperties);
          panelCenter = new JPanel();
          panelCenter.setPreferredSize(new Dimension(100, 50));
          panelCenter.add(play);
          panelLeft = new JPanel();
          panelLeft.setPreferredSize(new Dimension(260, 600));
          panelLeft.add(view);
          Container cp = this.getContentPane();
          cp.add(panelRight, BorderLayout.EAST);
          cp.add(panelLeft, BorderLayout.WEST);
          cp.add(panelCenter, BorderLayout.SOUTH);
          LoginListener loginListener = new LoginListener();
          LogoutListener logoutListener = new LogoutListener();
          PlayListener playListener = new PlayListener();
          login.addActionListener(loginListener);
          input.addActionListener(loginListener);
          play.addActionListener(playListener);
          logout.addActionListener(logoutListener);
     private class LoginListener implements ActionListener {
          @Override
          public void actionPerformed(ActionEvent arg0) {
               if (account.find(input.getText())) {
                    currentAccount = account.getAccount(input.getText());
                    name.setText("Name: " + currentAccount.getID());
                    playsRemaining.setText("Plays Remaining: "
                              + currentAccount.getPlayRemaining());
                    timeRemaining.setText("Time Remaining: "
                              + currentAccount.getTimeRemaining() / 60 + ":"
                              + currentAccount.getTimeRemaining() % 60);
               } else
                    JOptionPane.showMessageDialog(null, JOptionPane.ERROR_MESSAGE);
     private class LogoutListener implements ActionListener {
          @Override
          public void actionPerformed(ActionEvent arg0) {
               currentAccount = null;
               name.setText("Name: ");
               playsRemaining.setText("Plays Remaining: ");
               timeRemaining.setText("Time Remaining: ");
     private class PlayListener implements ActionListener {
          @Override
          public void actionPerformed(ActionEvent event) {
               Song currentSong = (Song) view.getSelectedValue();
               if (currentAccount == null)
                    JOptionPane.showMessageDialog(null, JOptionPane.ERROR_MESSAGE);
               if (currentAccount.canPlaySong(currentSong.getPlaytime())
                         && currentSong.canPlayToday()) {
                    currentAccount.debit(currentSong.getPlaytime());
                    playsRemaining.setText("Plays Remaining: "
                              + currentAccount.getPlayRemaining());
                    timeRemaining.setText("Time Remaining: "
                              + currentAccount.getTimeRemaining() / 60 + ":"
                              + currentAccount.getTimeRemaining() % 60);
                    queue.addSong(currentSong);
                    ((SongQueue) model1).addSong(currentSong);
                    view1.updateUI();
                    queue.execute();
               } else
                    JOptionPane.showMessageDialog(null, JOptionPane.ERROR_MESSAGE);
}I added the execute method in the songQueue class which is:
public void execute() {
          if (timer.isRunning() == false) {
               time = que.peek().getPlaytime();
               player.playSong(baseDir + que.peek().getAudioFileName());
               timer.start();
     }so therefore I only have one SongPlayer in my SongQueue. The problem now is how do I update the JList when a song has been finished played and I want to remove that song from the JList. ??

Similar Messages

  • Please help me with this time capsule! Really let me down!

    So first thanks for looking into this. I bought the TC from london but i live in Malta so i cannot go to apple store (that is why I need your help guys).
    This is what happened in brief:
    -Removed my existing router and managed to connect to internet (imac) via time capsule
    -Tried to setup and managed and then started first back up
    -It had to back up 179GB and like 2 GB was backed up already... i was like updating the details using airport utility and set up a password for my network... because the details updated time capsule refreshed and back up stopped
    -Since then it was giving me the error that cannot connect due to network error
    -It had like 3GB missing and I deleted that (moved file into trash) so it was like I refreshed it to start over with brand new back up
    -Now I have managed to start it backing up again (it's so slow however) but as Im typing this... its backing up but the internet connection is getting lost every 1 minute and i have to go to airport from the bar and chose the network again
    -I will not stay up all night waiting for it to finish so I already know what is going to happen... when I wake up I will see (again) the message that connection was lost (since I will not be awake refreshing and selecting the network every minute)
    I am so dissapointed/___sbsstatic___/migration-images/migration-img-not-avail.png The fact that apparently i have stopped the fist back up (which was going well + fast) caused all these problems.
    How do you actually reset/restore/format the TC to get it as brand new? I think that will solve the problem...
    As I've told you guys you're my only hope. No apple store here
    Thanks before hand and will look forward for the answer in the morning/___sbsstatic___/migration-images/migration-img-not-avail.png
    Cheers & Hpy NY

    launch Airport Utility and under disk erase the TC hard drive(you seem to not have much value on it anyway) then if you have to change the name of the disk.
    if you can connect TC to your computer thru ethernet connection and not wireless. 179 gigs is a lot of data to move. Ethernet should do you about 1.5 hrs to 2 hrs for the Time Machine backup.
    Concerning the wireless problem I'd suspect some type of interference causing the disconnection. It can be just about anything for example, locating the TC too close to another router, vonage, computer, metal objects blocking or too near, TC location thru too many walls especially in N mode.
    Hope this helps you.

  • Can some one help me with this date stuff

    Hello,
    I wat to write a method that will take a date or a month and then return the time period
    b4 that date or month..criteria would be like this..
    if the pweriod is weekly then the enddate will be passed and it should return date that was 7 days
    prior to the enddate. For e.g
    enddate = 3 April 2002
    the method should return
    begindate = 27 March 2002
    here is the method I am trying to work with...
    what I am doing do far is a break down the date into integer values and then reconstruct the date again
    ...I am not being successful doing so..please take a look at my code and tell me what am I doing wrong
    thanks
    public static Date getBiginingOfPeriodDate(Date endDate){
    Date beginDate = null;
    Calendar calendar = Calendar.getInstance();
    System.out.println("Date passed = "+endDate);
    calendar.setTime(endDate);
    int iDay = calendar.get(Calendar.DAY_OF_MONTH);
    int iMon = calendar.get(Calendar.MONTH);
    int iYr = calendar.get(Calendar.YEAR);
    System.out.println("End date int values [ "+iDay+", "+iMon+", "+iYr);
    calendar.set(iDay,iMon,iYr);
    System.out.println("create end date from in values [ "+calendar.getTime()+" ]");
    return beginDate;
    }

    If all you want to do is simple date arithmetic, such as subtracting 7 days from a date, just use the java.util.Calendar class, which provides methods (such as add) to do that for you. Don't "reinvent the wheel".

  • Help me with this new stuff...please and thank you

    I have just purchased the ipad air. I had the first edition/original ipad. I need to be able to transfer my photo albums to the new ipad. My camera roll downloaded(bizarre formatt) but I am missing pictures from other sources. Everything is in albums and I want to just move them overfrom one ipad to another.( Tried itunes but they didnt store pix as albums). Any ideas?
    Please keep it simple, as I am really not a techie.  PS Merry XMas

    I had a similar question answered in this forum today. There are a couple of ways, one is through iCloud. Another is through your computer. How depends on the computer you have:
    http://support.apple.com/kb/ht4083
    I hope this helps and Merry Christmas to you.
    George

  • HT201210 (The iPhone "Named" cannot be restored at this time because the iPhone software update server could not be contacted or is temporarily unavailable.) can anyone help me with this issue, every time i try to restore it will come up like this error m

    (The iPhone "Named" cannot be restored at this time because the iPhone software update server could not be contacted or is temporarily unavailable.)
    can anyone help me with this issue, every time i try to restore it will come up like this error message.

    Restore the iPhone when connected to iTunes by cable.
    Still the same TS1275?
    Is your iPhone jailbroken?
    Or
    Has your computer ever been used to jailbrake or downgrade (Tinyumbrella) any iPhone?

  • I've bought the first season of Death Note on itunes, and i've was never able to download the 11th episode (Assault), it gives me error -50 each time I try. Can anyone please help me with this?

    the title pretty much has my question i guess. it's my first post so i'm not sur if you'll see all of it. I'll just copy paste it anyhow.
    i've bought the first season of Death Note on itunes, and i've was never able to download the 11th episode (Assault), it gives me error -50 each time I try. Can anyone please help me with this?

    Perhaps try the "Error -50," "-5000," "8003," "8008," or "-42023" section in the Specific Conditions and Alert Messages: (Mac OS X / Windows) section of the following document:
    iTunes: Advanced iTunes Store troubleshooting

  • HT1494 hi....i  cant continuously play my music with my ipod nano....i tried a lot with the settings for wake time but still it is pausing the music path.Please anybody help me with this issue

    hi....i  cant continuously play my music with my ipod nano....i tried a lot with the settings for wake time but still it is pausing the music path.Please anybody help me with this issue

    Is this your problem?
    iPod nano (6th generation): Music stops when display turns off
    B-rock

  • Yesterday for the first time i turned on my macpro 2011 model and i got a crazy gray screen with lines all over it ,so i held down the power button and turn off then restarted and all was ok could someone help me with this,what caused this shut down. werd

    yesterday for the first time i turned on my macpro 2011 model and i got a crazy gray screen with lines all over it ,so i held down the power button and turn off then restarted and all was ok could someone help me with this,what caused this shut down. werd

    Are the lines like psychedelic herringbone?  If yes, I had that happen once, it was something serious, like the
    Logic board. The good news is that it was fixed without any loss of data on the hard drive. Take it in to have Apple look at it ASAP.  I took it to TekServe at the time, they are very nice about preserving your data and user library when possible.
    Good luck and don't panic.

  • I want to buy Diamonds for my tos game but it come out a message ask me to contact itune support, can anyone help me with this? Cuz I had tried for a long time but still can't buy.

    I Want to buy diamonds for my tos game but it come out a message ask me to contact itune support. Can anyone help me with this? What should I do so that I can buy my diamonds?

    You can contact iTunes support via this page and ask them why the message is appearing (on these forums we won't know why) : http://www.apple.com/support/itunes/contact/ - click on Contact iTunes Store Support on the right-hand side of the page, then try selecting Purchases, Billing & Redemption

  • Can someone pls help me with this code

    The method createScreen() creates the first screen wherein the user makes a selection if he wants all the data ,in a range or single data.The problem comes in when the user makes a selection of single.that then displays the singleScreen() method.Then the user has to input a key data like date or invoice no on the basis of which all the information for that set of data is selected.Now if the user inputs a wrong key that does not exist for the first time the program says invalid entry of data,after u click ok on the option pane it prompts him to enter the data again.But since then whenever the user inputs wrong data the program says wrong data but after displaying the singlescreen again does not wait for input from the user it again flashes the option pane with the invalid entry message.and this goes on doubling everytime the user inputs wrong data.the second wrong entry of data flashes the error message twice,the third wrong entry flashes the option pane message 4 times and so on.What actually happens is it does not wait at the singlescreen() for user to input data ,it straight goes into displaying the JOptionPane message for wrong data entry so we have to click the optiion pane twice,four times and so on.
    Can someone pls help me with this!!!!!!!!!
    import java.util.*;
    import javax.swing.*;
    import javax.swing.event.*;
    import java.awt.*;
    import java.awt.event.*;
    import java.text.*;
    import java.util.*;
    public class MainMenu extends JFrame implements ActionListener,ItemListener{
    //class     
         FileReaderDemo1 fd=new FileReaderDemo1();
         FileReaderDemo1 fr;
         Swing1Win sw;
    //primary
         int monthkey=1,counter=0;
         boolean flag=false,splitflag=false;
         String selection,monthselection,dateselection="01",yearselection="00",s,searchcriteria="By Date",datekey,smonthkey,invoiceno;
    //arrays
         String singlesearcharray[];
         String[] monthlist={"Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sept","Oct","Nov","Dec"};
         String[] datelist=new String[31];
         String[] yearlist=new String[100];
         String[] searchlist={"By Date","By Invoiceno"};
    //collection
         Hashtable allinvoicesdata=new Hashtable();
         Vector data=new Vector();
         Enumeration keydata;
    //components
         JButton next=new JButton("NEXT>>");
         JComboBox month,date,year,search;
         JLabel bydate,byinvno,trial;
         JTextField yeartext,invtext;
         JPanel panel1,panel2,panel3,panel4;
         JRadioButton single,range,all;
         ButtonGroup group;
         JButton select=new JButton("SELECT");
    //frame and layout declarations
         JFrame jf;
         Container con;
         GridBagLayout gridbag=new GridBagLayout();
         GridBagConstraints gc=new GridBagConstraints();
    //constructor
         MainMenu(){
              jf=new JFrame();
              con=getContentPane();
              con.setLayout(null);
              fr=new FileReaderDemo1();
              createScreen();
              setSize(500,250);
              setLocation(250,250);
              setVisible(true);
    //This is thefirst screen displayed
         public void createScreen(){
              group=new ButtonGroup();
              single=new JRadioButton("SINGLE");
              range=new JRadioButton("RANGE");
              all=new JRadioButton("ALL");
              search=new JComboBox(searchlist);
              group.add(single);
              group.add(range);
              group.add(all);
              single.setBounds(100,50,100,20);
              search.setBounds(200,50,100,20);
              range.setBounds(100,90,100,20);
              all.setBounds(100,130,100,20);
              select.setBounds(200,200,100,20);
              con.add(single);
              con.add(search);
              con.add(range);
              con.add(all);
              con.add(select);
              search.setEnabled(false);
              single.addItemListener(this);
              search.addActionListener(new MyActionListener());     
              range.addItemListener(this);
              all.addItemListener(this);
              select.addActionListener(this);
         public class MyActionListener implements ActionListener{
              public void actionPerformed(ActionEvent a){
                   JComboBox cb=(JComboBox)a.getSource();
                   if(a.getSource().equals(month))
                        monthkey=((cb.getSelectedIndex())+1);
                   if(a.getSource().equals(date)){
                        dateselection=(String)cb.getSelectedItem();
                   if(a.getSource().equals(year))
                        yearselection=(String)cb.getSelectedItem();
                   if(a.getSource().equals(search)){
                        searchcriteria=(String)cb.getSelectedItem();
         public void itemStateChanged(ItemEvent ie){
              if(ie.getItem()==single){
                   selection="single";     
                   search.setEnabled(true);
              else if (ie.getItem()==all){
                   selection="all";
                   search.setEnabled(false);
              else if (ie.getItem()==range){
                   search.setEnabled(false);
         public void actionPerformed(ActionEvent ae){          
              if(ae.getSource().equals(select))
                        if(selection.equals("single")){
                             singleScreen();
                        if(selection.equals("all"))
                             sw=new Swing1Win();
              if(ae.getSource().equals(next)){
                   if(monthkey<9)
                        smonthkey="0"+monthkey;
                   System.out.println(smonthkey+"/"+dateselection+"/"+yearselection+"it prints this");
                   allinvoicesdata=fr.read(searchcriteria);
                   if (searchcriteria.equals("By Date")){
                        System.out.println("it goes in this");
                        singleinvoice(smonthkey+"/"+dateselection+"/"+yearselection);
                   else if (searchcriteria.equals("By Invoiceno")){
                        invoiceno=invtext.getText();
                        singleinvoice(invoiceno);
                   if (flag == false){
                        System.out.println("flag is false");
                        singleScreen();
                   else{
                   System.out.println("its in here");
                   singlesearcharray=new String[data.size()];
                   data.copyInto(singlesearcharray);
                   sw=new Swing1Win(singlesearcharray);
         public void singleinvoice(String searchdata){
              keydata=allinvoicesdata.keys();
              while(keydata.hasMoreElements()){
                        s=(String)keydata.nextElement();
                        if(s.equals(searchdata)){
                             System.out.println(s);
                             flag=true;
                             break;
              if (flag==true){
                   System.out.println("vector found");
                   System.exit(0);
                   data= ((Vector)(allinvoicesdata.get(s)));
              else{
                   JOptionPane.showMessageDialog(jf,"Invalid entry of date : choose again");     
         public void singleScreen(){
              System.out.println("its at the start");
              con.removeAll();
              SwingUtilities.updateComponentTreeUI(con);
              con.setLayout(null);
              counter=0;
              panel2=new JPanel(gridbag);
              bydate=new JLabel("By Date : ");
              byinvno=new JLabel("By Invoice No : ");
              dateComboBox();
              invtext=new JTextField(6);
              gc.gridx=0;
              gc.gridy=0;
              gc.gridwidth=1;
              gridbag.setConstraints(month,gc);
              panel2.add(month);
              gc.gridx=1;
              gc.gridy=0;
              gridbag.setConstraints(date,gc);
              panel2.add(date);
              gc.gridx=2;
              gc.gridy=0;
              gc.gridwidth=1;
              gridbag.setConstraints(year,gc);
              panel2.add(year);
              bydate.setBounds(100,30,60,20);
              con.add(bydate);
              panel2.setBounds(170,30,200,30);
              con.add(panel2);
              byinvno.setBounds(100,70,100,20);
              invtext.setBounds(200,70,50,20);
              con.add(byinvno);
              con.add(invtext);
              next.setBounds(300,200,100,20);
              con.add(next);
              if (searchcriteria.equals("By Invoiceno")){
                   month.setEnabled(false);
                   date.setEnabled(false);
                   year.setEnabled(false);
              else if(searchcriteria.equals("By Date")){
                   byinvno.setEnabled(false);
                   invtext.setEnabled(false);
              monthkey=1;
              dateselection="01";
              yearselection="00";
              month.addActionListener(new MyActionListener());
              date.addActionListener(new MyActionListener());
              year.addActionListener(new MyActionListener());
              next.addActionListener(this);
              invtext.addKeyListener(new KeyAdapter(){
                   public void keyTyped(KeyEvent ke){
                        char c=ke.getKeyChar();
                        if ((c == KeyEvent.VK_BACK_SPACE) ||(c == KeyEvent.VK_DELETE)){
                             System.out.println(counter+"before");
                             counter--;               
                             System.out.println(counter+"after");
                        else
                             counter++;
                        if(counter>6){
                             System.out.println(counter);
                             counter--;
                             ke.consume();
                        else                    
                        if(!((Character.isDigit(c) || (c == KeyEvent.VK_BACK_SPACE) || (c == KeyEvent.VK_DELETE)))){
                             getToolkit().beep();
                             counter--;     
                             JOptionPane.showMessageDialog(null,"please enter numerical value");
                             ke.consume();
              System.out.println("its at the end");
         public void dateComboBox(){          
              for (int counter=0,day=01;day<=31;counter++,day++)
                   if(day<=9)
                        datelist[counter]="0"+String.valueOf(day);
                   else
                        datelist[counter]=String.valueOf(day);
              for(int counter=0,yr=00;yr<=99;yr++,counter++)
                   if(yr<=9)
                        yearlist[counter]="0"+String.valueOf(yr);
                   else
                        yearlist[counter]=String.valueOf(yr);
              month=new JComboBox(monthlist);
              date=new JComboBox(datelist);
              year=new JComboBox(yearlist);
         public static void main(String[] args){
              MainMenu mm=new MainMenu();
         public class WindowHandler extends WindowAdapter{
              public void windowClosing(WindowEvent we){
                   jf.dispose();
                   System.exit(0);
    }     

    Hi,
    I had a similar problem with a message dialog. Don't know if it is a bug, I was in a hurry and had no time to search the bug database... I found a solution by using keyPressed() and keyReleased() instead of keyTyped():
       private boolean pressed = false;
       public void keyPressed(KeyEvent e) {
          pressed = true;
       public void keyReleased(KeyEvent e) {
          if (!pressed) {
             e.consume();
             return;
          // Here you can test whatever key you want
       //...I don't know if it will help you, but it worked for me.
    Regards.

  • Help me with  this assignment

    can anyone out there help me with this assignment ????? i`ll attach the file to this topic
    In this assignment, you are to write a Java applet, using arrays, to simulate the functions of a drinks-vending machine.
    The assignment requirements described below are broken down into 2 stages of development, described in this document
    as 'Basic Requirements' and 'Additional Features'. You are advised to do your programming progressively in these
    stages. An Activity Plan has also been specified for you to follow. Refer to the 'Grading Criteria' on page 5 to have
    an idea of how the different components are graded.
    1.     1. BACKGROUND
    A company intends to build computerised drinks-vending machines to enlarge its business portfolio. You have been tasked to develop a
    Java applet that simulates the operation of such a machine to determine if it will meet their needs.
    2.     1. BASIC REQUIREMENTS
    The machine should have a wide range of drinks available. A customer can choose a drink according to the following criteria:
    a)     a) Category of Drinks
    �     � Beverages
    �     � Soft Drinks
    (For beverages, there is choice of whether sugar and/or creamer is required, for which there is an additional charge.)
    b)     b) Type of Beverages
    �     � Hot
    �     � Cold
    Once a customer has specified the drink he wants, the amount payable is displayed. The unit prices to be displayed are as follows:
    Drinks     Price per Cup/Packet ($)
    Beverage:     Coffee     1.00
         Tea     1.20
         Milo     1.40
         Horlicks     1.35
         Chrysanthemum     1.00
         Ginger     0.80
    Soft Drinks:     Apple     1.40
         Orange     1.40
         Pineapple     1.50
         Carrot     2.00
         Longan     1.20
         Bandung     1.00
    (For beverages, a request for sugar or creamer attracts an additional charge of $0.10 each. Creamer is not applicable for
    chrysanthemum and ginger.)
    The customer may then confirm his order by entering the amount payable (this symbolises his payment for the drink). Whenever the
    payment input is not correct, an appropriate error message is displayed, whereupon the customer has to re-enter the amount again.
    When the correct amount is paid, the required drink is dispensed.
    For any drink that is out of stock, a message is shown, stating that it is not available. Each time a drink is dispensed, the stock for that
    drink is updated (For beverages, the stock is stored in units of servings for each cup.) To simplify the testing, you may start the simulation
    by setting the stock for each drink to 10 packets or cup-servings.
    3.     2. ADDITIONAL FEATURES
    In addition, the simulator can have the following features:
    a)     a) Smart Graphical User-Interface (GUI)
    You may build upon the basic requirements by recommending alternative drinks of the same category, whenever a requested
    drink is not available (as signified from the stock). In this case, only drinks which are available (i.e., in sufficient stock) are
    displayed for the customer to choose. And if only soft drinks are available, the selections for creamer and sugar should be disabled.
    b)     b) Multiple Orders
    A customer could order more than one drink. The system could allow him to specify as many drinks as he wants, prompting him
    for an appropriate payment, and then dispensing the drinks accordingly, subject to availability. This may also entail the extension
    of the graphical user-interface.
    c)     c) Sales Analysis
    Periodically, the total revenue accumulated since the last collection is printed in descending order of sales for each drink sold,
    together with a grand total. The cash is then cleared from the machine. This feature requires password-protection.
    d)     d) Replenishment of Stock
    Periodically, the stock is checked to determine how much of each drink needs to be replenished. For this purpose, a list of the
    drinks with the corresponding quantity on hand is printed in ascending order of stock level. Drinks with insufficient stock are
    topped up to a level of 10 servings or packets. This feature also requires password-protection.
    e)     e) Any other relevant features
    You are limited only by your creativity. You can add any other relevant features for this project. Please consult your tutor before
    you proceed.
    To qualify for the full marks for this section, you need to implement 2 features, at least one of which must be either (a) or (b) above.
    4.     3. ACTIVITY PLAN
    Suggestions for Getting Started
    There are many ways that you could complete this assignment. The most important part is to think about the entire project first so that
    it is easy to integrate the various pieces. You should also consider what type of graphics you want to incorporate.
    a)     a) Analysis
    1. Understand the program specification and the requirements before attempting the project.
    b)     b) Program Design
    2.     Work out the GUI components (e.g., TextFields, CheckBoxes, ChoiceBoxes, Buttons, etc.) needed to get the user input.
    3.     3. Work out the main logic of the program using modular programming techniques; i.e. use methods appropriately. E.g., tasks that perform
    4.     4. a well-defined function or those that are repeated should be coded as methods. For example, you can write the methods, displayBill(),
    5.     5. makePayment(), computeTotal(), dispenseDrink(), etc. You need to think carefully about the return type and the parameters of each
    6.     6. method.
    7.     7. You are required to use arrays appropriately for this assignment. Marks will be deducted for inefficient use or non-usage of arrays.
    c) Implementation & Testing
    8.     8. Write the method definition of each method ONE at a time.
    9.     9. Test your program logic to make sure that it works. In the interim, you can use �g.drawString(�);� or �System.out.println(�);� to print
    10.     10. out intermediate results so that you can see whether your program is working correctly. You may not want to bother about error-checking
    11.     11. at this point. You should test each method as soon as it is written, as it is much easier to debug your program in this way.
    5.     4. DELIVERABLES
    By Monday, 25th February before 5:00 p.m., hand in the following to the School of ICT Administrative Office at Block 31, level 8:
    �     � A copy of the printout of your .java file.
    �     � A diskette labelled with your name, group, student ID. The diskette should contain ALL the necessary files (.java, .html, and .class)
    to run your applet.
    �     � The above in an envelope topped with the Assignment Completion Report (see pages 6, 7 & 8). Page 6 is for you to paste on top
    of your envelope whilst pages 7 and 8 are for you to document your Test Plan, and write your comments (including any
    special instructions to run your program) - to be inserted into the envelope.
    In your .java program, you are to include a blocked comment at the top stating:
    q     q Your name, group, student ID.
    q     q Assumptions (if any) or any deviations from the specified requirements.
    q     q Any features that you would like to highlight.
    6.     5. WALK-THROUGH OF PROGRAM
    Monday 25th February at 9:30 a.m. SHARP
    In the walk-through, you will be asked to give short, written answers to some questions about your program. These questions will assess
    your basic understanding of the code that you are handing in. If you fail to display adequate understanding of your own program, you can
    be down-graded by up to two letter grades from what you would have normally received. It is also possible that you will be called to
    perform a demonstration cum explanation of your work if it is suspected that you have copied someone else�s work. Lesson: do your own
    work and you will have no problem!
    7.     6. GRADING CRITERIA FOR PROGRAMMING
    Correct and robust implementation of basic features     55 %
    Additional features     20 %
    Programming style:�     � Program design�     � Appropriate use of arrays�     � Appropriate use of variables, methods, and parameters�     � Proper usage of control structures (e.g. if/else, loops)     15 %
    Good programming practice:�     � Meaningful variable names �     � Proper indentations�     � Useful and neat comments     5 %
    Adequate (black-box) testing:�     � Suitably-designed test plan     5 %
    Total:     100 %
    PROBLEM SOLVING & PROGRAMMING II
    (Dip IT/MMC/EI, Year 1, Semester 2)
    Assignment Completion Report (to be attached to cover of envelope)
    Name: ___________________________________ Group: ________
    ID: ___________________ Date & Time submitted: ____________
    Requirements     % Done (0-100)     Remarks
    BASIC FEATURES          
    �     � Can choose category (and select appropriate additives)          
    �     � Can choose drink (with error checking)          
    �     � Can display amount payable          
    �     � Can indicate availability of drink (with error checking)          
    �     � Can accept payment for drink (with error checking)          
    �     � Can dispense drink          
    �     � Can update stock          
    ADDITIONAL FEATURES          
    �     � Smart GUI          
    �     � Multiple Orders          
    �     � Sales Analysis (with password checking)          
    �     � Stock Replenishment(with password checking)          
    �     � Any other relevant features          
    Test Plan
    Using black-box testing, record your test specification and the results according to the following format (the examples here are provided
    for your reference only):
    Test No.     Purpose     Test Shot/Data     Expected Result     Actual Result
    E.g. 1a)     Check whether beverage can be selected      Click on �Chrysanthe-mum� button     Checkbox for �Sugar� but not �Creamer� appear     �Sugar� and checkboxes appeared
    E.g. 1b)     Check whether chrysanthemum with sugar can be ordered      Select sugar and click on �Order� button     Amount payable appears as �$1.10� (i.e., $1.00 + $0.10)     Amount payable shown as $1.10
    E.g. 1c)     Check whether correct payment can be accepted      Enter �1.00� in �Payment� textfield     Error message �Insufficient payment - $0.10 short� appears     Confirmation message �Drink being dispensed� appeared � ERROR!
    E.g. 1d)     Re-test 1c), after amending program      As above     As above     Error message �Insufficient payment - $0.10 short� appeared
    etc.                    
    etc.                    
    Remember to hand in this test plan together with the other deliverables in the envelope.
    Have you�
    1.     1. Checked to make sure program still works properly even with windows resized?
    2.     2. Tested your program thoroughly, as if you're trying to break it?
    Any comments about this assignment? Any special instructions to run your program? Write it here.

    public class testing1 {
    String gg;
    public void testing3() {
    System.out.print(gg); }
    // this is are constructor for the object and method we are going to make
    next code
    class testing {
    public static void main(String[] args) {
    testing1 tes = new testing1();
    tes.gg = "hello there";
    tes.testing3(); //here we have made a object and a method
    hope this helps

  • I need to reinstall my operating system for 10.5 after seeing a file folder and question mark flashing on my start up screen. Can anyone help me with this?

    I need to reinstall my operating system for 10.5 after seeing a file folder and question mark flashing on my start up screen. Can anyone help me with this?

    Hello,
    That means it can find the Hard Drive, or can't find the things needed for booting.
    See if DU even sees it.
    "Try Disk Utility
    1. Insert the Mac OS X Install disc, then restart the computer while holding the C key.
    2. When your computer finishes starting up from the disc, choose Disk Utility from the Installer menu at top of the screen. (In Mac OS X 10.4 or later, you must select your language first.)
    *Important: Do not click Continue in the first screen of the Installer. If you do, you must restart from the disc again to access Disk Utility.*
    3. Click the First Aid tab.
    4. Select your Mac OS X volume.
    5. Click Repair Disk, (not Repair Permissions). Disk Utility checks and repairs the disk."
    http://docs.info.apple.com/article.html?artnum=106214
    Then try a Safe Boot, (holding Shift key down at bootup), run Disk Utility in Applications>Utilities, then highlight your drive, click on Repair Permissions, reboot when it completes.
    (Safe boot may stay on the gray radian for a long time, let it go, it's trying to repair the Hard Drive.)

  • When my screen saver has been on a while, I have to use the cursor to "rub out" part of the screen saver to see my login section. Can anyone help me with this?

    When my screen saver has been on a while, I have to use the cursor to "rub out" part of the screen saver to see my login section. Can anyone help me with this?

    I don't have a solution for you, but just wanted to let you know I used to have the exact same problem. I resolved it (for the most part....about 90% of the time, anyway) by adjusting the screensaver and power settings to never let the computer go to sleep.

  • I have iOS 7. When I go to the itunes store on my ipod touch it gives me a blank screen with nothing on it. I restarted my ipod touch and it didn't work. Can someone help me with this?

    I have iOS 7. When I go to the itunes store on my ipod touch it gives me a blank screen with nothing on it. I restarted my ipod touch and it didn't work. Can someone help me with this?

    - Reset the iOS device. Nothing will be lost
    Reset iOS device: Hold down the On/Off button and the Home button at the same time for at
    least ten seconds, until the Apple logo appears.
    - Go to Settings>iTunes and App stores and sign out and sign back in
    - Reset all settings      
    Go to Settings > General > Reset and tap Reset All Settings.
    All your preferences and settings are reset. Information (such as contacts and calendars) and media (such as songs and videos) aren’t affected.
    - Restore from backup. See:                                 
    iOS: How to back up                                                                
    - Restore to factory settings/new iOS device.      

  • Will Apple help me with this issue?

    Dear Sir or Madam,
    I am a student in China, I really need your help, my iphone now problems bothers me! HELP ME PLEASE!!!
    As I bought my iPhone 4s(16GB,White) in the USA from Sprint, full price with tax,  unlocked ,it was excepted to be a global phone. But now I come across with some problems in China  using local carrier.Now I am in China, not the normal use of the phone, I rely on odd jobs to earn, very not easy, English is not my mother tongue, maybe there are many grammatical mistakes, I hope you'll forgive me! Mobile phone can not be used normally I am very sad, I can not contact the parents and friends, can not let them worry about me, I've tried all means, including the upgrade to 6.1, but still can not solve the problem, I think maybe I am in China, so can not be used normally, at this moment I am very anxious, because of the time difference, it is later I can send mail, you can see it, please help me, a Chinese student's request!
    I tried all the possible solutions from the Internet, and the Official solution offered by Apple (http://support.apple.com/kb/TS4459), but it doesn't seem to work.
    Will Apple help me with this issue? Please do.THANK YOU VERY MUCH!!!

    We are not Apple, and Apple does not unlock phones. Sprint will unlock phones, but you have to qualify. One of the qualifications is to have been a customer in good standing for a period of time. You can check their website for what that is. After that, they can unlock the GSM side of the phone for International use, that is it. If you are on a CDMA carrier, then it cannot be unlocked. Are you trying to use a local SIM card in China?
    Your only option is to contact Sprint to see if you qualify for an unlock. Only they can unlock it. Sprint is one of the poorest choices to take to another country.

Maybe you are looking for

  • Is their a way to use the T-Mobile Blackberry with the new iMac w/Intel?

    Hello Everyone, I have the T-Mobile Blackberry and am trying to get it to sync to the new iMac with Intel, 10.4.6 OS. It never shows up on my computer when I plug it in. I have tried it in Bluetooth mode as well as serial and USB and nothing. I have

  • Windows 7 bootcamp issue

    I have a MacBook Pro with Windows 7 running on a BootCamp partition.  I only use Windows 7 lightly for military work, and the other day I tried to install a printer and it locked everything up.  Now nothing on Windows 7 works, the mouse, keyboard, et

  • P30: External HD isn't detected when using IEEE 1394 cable

    My P30 won't/ can't detect my newly aquired Western Digitak Extreme Lighted Drive 320GB when I connect it via the firewire port. I use a 6 pin to 4 pin cable (which cost a fortune, by the way) that is supposed to be a way to connect this drive to a p

  • File size reported reported differently

    Can someone help me explain why this file size is reported differently depending whether you list file or folder properties: This is an Azure Basic_A1 VM. Drive E: is standard VHD attached to the VM (Page Block Storage). This is an active/open file t

  • Re-downloading all previously purchased songs

    Hiya, Just wondering if there is a quick and easy way of re-downloading all previously purchased songs onto my iTunes (I have purchased a new computer and the old one is dead). I have already authorised this computer, but short of going and finding a