欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      JAVA課程設(shè)計(jì)報(bào)告ATM存取款系統(tǒng)

      時(shí)間:2019-05-12 13:14:42下載本文作者:會(huì)員上傳
      簡(jiǎn)介:寫寫幫文庫小編為你整理了多篇相關(guān)的《JAVA課程設(shè)計(jì)報(bào)告ATM存取款系統(tǒng)》,但愿對(duì)你工作學(xué)習(xí)有幫助,當(dāng)然你在寫寫幫文庫還可以找到更多《JAVA課程設(shè)計(jì)報(bào)告ATM存取款系統(tǒng)》。

      第一篇:JAVA課程設(shè)計(jì)報(bào)告ATM存取款系統(tǒng)

      目 錄

      1課程設(shè)計(jì)題目描述和基本設(shè)計(jì)要求...............................................................2 系統(tǒng)需求分析..................................................................................................2.1 功能需求分析 ······················································································

      2.2 其他需求分析 ······················································································

      3系統(tǒng)設(shè)計(jì)...........................................................................................................3.1 總體設(shè)計(jì) ······························································································

      3.2 ATM柜員機(jī)界面設(shè)計(jì) ·········································································

      3.3 各功能模塊設(shè)計(jì) ··················································································

      3.3.1 登陸頁面模塊設(shè)計(jì) ································································

      3.3.2 選擇服務(wù)模塊設(shè)計(jì) ································································

      3.3.3 取款模塊設(shè)計(jì) ·······································································

      3.3.4 退卡模塊設(shè)計(jì) ······································································· 3.4 異常處理情況說明 ·································································· 系統(tǒng)實(shí)現(xiàn)與測(cè)試..............................................................................................5總程序...............................................................................................................6 課程設(shè)計(jì)總結(jié)..................................................................................................6.1 遇到的問題及解決辦法 ······································································

      6.2 心得體會(huì) ······························································································

      ATM柜員機(jī) 課程設(shè)計(jì)題目描述和基本設(shè)計(jì)要求

      ATM柜員機(jī)主要是由各個(gè)Windows窗口組成,它是由登錄頁面、選擇服務(wù)、取款、查詢余額、修改密碼和退卡等功能。它的各種按鈕的事件和功能可以簡(jiǎn)單的模擬ATM柜員機(jī)的要求。系統(tǒng)需求分析 2.1 功能需求分析

      主要功能如下所述:

      要求使用圖形用戶界面。當(dāng)輸入給定的卡號(hào)和密碼(初始卡號(hào)為000000和密碼為123456)時(shí),系統(tǒng)能登錄ATM柜員機(jī)系統(tǒng),用戶可以按照以下規(guī)則進(jìn)行:

      ? 查詢余額:初始余額為50000元

      ? ATM取款:每次取款金額為100的倍數(shù),總額不超過5000元,支取金額不允許透支。

      ? ATM存款:不能出現(xiàn)負(fù)存款。

      ? 修改密碼:只有舊密碼正確,新密碼符合要求,且兩次輸入相同的情況下才可以成功修改密碼。

      2.2 其他需求分析

      (1)性能描述

      實(shí)時(shí)性好、靈活性強(qiáng)、易于不同年齡階段的人操作。(2)設(shè)計(jì)約束

      開發(fā)工具:JCrator ProV3.5.0 運(yùn)行環(huán)境:Windows 2000以上 能實(shí)現(xiàn)用戶所定義的各項(xiàng)需求。(3)界面要求

      以Windows窗口形式顯示,標(biāo)題欄為ATM柜員機(jī)名稱,右上角有最小化按鈕、最大化按鈕、關(guān)閉按鈕,不同的窗口中有不同的按鈕和選擇菜單。系統(tǒng)設(shè)計(jì) 3.1 總體設(shè)計(jì)

      我所設(shè)計(jì)的ATM柜員機(jī)主要是由登錄頁面模塊還由選擇服務(wù)模塊組成,其中選擇服務(wù)模塊又由取款模塊、查詢余額模塊、修改密碼模塊、退卡模塊組成。其功能結(jié)構(gòu)圖如下所示:

      圖1

      ATM功能結(jié)構(gòu)示意圖

      3.2 ATM柜員機(jī)界面設(shè)計(jì)

      一個(gè)系統(tǒng)界面的好壞直接影響到用戶的操作,界面設(shè)計(jì)要求樣式美觀、簡(jiǎn)單明了、方便易操作。界面主要分為窗體、菜單、按鈕和文本輸入框幾個(gè)部分,分別執(zhí)行相應(yīng)的操作。

      (1)窗體的設(shè)計(jì)

      窗體整個(gè)框架使用Frame類構(gòu)造,F(xiàn)rame有自己的外邊框和自己的標(biāo)題,創(chuàng)建Frame時(shí)可以指定其窗口標(biāo)題,我創(chuàng)建的窗口標(biāo)題是各個(gè)不同功能的模塊的名字,比如說查詢余額,還有取款等。相應(yīng)源代碼為:WindowBox(String s,Account act){super(“ATM柜員機(jī)”);}、Selection(String s,Account act){ } super(s);向Frame窗口中添加組件使用add()。例如:button1 = new Button(“存款”);

      p1.add(button1);this.add(p1);每個(gè)Frame在其右上角都有三個(gè)控制圖標(biāo),分別代表將窗口最小化、窗口最大化和關(guān)閉的操作,其中最小化和最大化操作Frame可自動(dòng)完成,而關(guān)閉窗口操作實(shí)現(xiàn)需要書寫有關(guān)的代碼,在我的程序中我采用的是對(duì)WINDOWS_CLOSING事件做出響應(yīng),調(diào)用dispose()方法關(guān)閉窗口。Frame也可以引發(fā)WindowsEvent類代表的窗口事件。相應(yīng)源代碼為:

      addWindowListener(new WindowAdapter()//窗口偵聽器,以從此窗口接收窗口事件 {public void windowClosing(WindowEvent e)//處理窗口關(guān)閉事件

      { System.exit(0);} });}(2)窗體的主要結(jié)構(gòu)的設(shè)計(jì)

      我所設(shè)計(jì)的窗口的主要結(jié)構(gòu)的特點(diǎn)就是每個(gè)窗口都對(duì)應(yīng)著一個(gè)特定的功能。比如說報(bào)各種各樣的錯(cuò),還有各種查詢余額、取款、選擇服務(wù)等,所以它們都是由各種按鈕和文本框,標(biāo)簽組成的,而聯(lián)系各個(gè)窗體成為一個(gè)整體的就是各個(gè)按鈕的監(jiān)聽事件。所以整個(gè)設(shè)計(jì)就趨向簡(jiǎn)單化了。

      為了定義各個(gè)按鈕所對(duì)應(yīng)的命令和操作,首先需要將各個(gè)按鈕注冊(cè)給實(shí)現(xiàn)了動(dòng)作事件的監(jiān)聽接口ActionListener的監(jiān)聽者,然后為監(jiān)聽者定義actionPerformed(ActionEvent e)方法,在這個(gè)方法中調(diào)用e.getSource()或e.getActionCommand()來判斷用戶點(diǎn)擊的菜單子項(xiàng),并完成這個(gè)菜單子項(xiàng)定義的操作。

      3.3 各功能模塊設(shè)計(jì) 3.3.1 登陸頁面模塊設(shè)計(jì)

      與ATM柜員機(jī)打交道比較多的,也是大家對(duì)安全比較關(guān)心的問題:密碼。所以第一個(gè)界面就是要輸入密碼和卡號(hào)才能繼續(xù)服務(wù)。

      我定義了文本框累的對(duì)象tf1,tf2。抓藥是用于輸入單行的文本;文本區(qū)調(diào)用public String getText()方法,獲取用戶想要的字符串。用來判斷輸入的密碼和卡號(hào)是否正確,如果不正確的話,則彈出密碼或卡號(hào)錯(cuò)誤的警告框,并用dispose()關(guān)掉窗口。

      3.3.2 選擇服務(wù)模塊設(shè)計(jì)

      在選擇服務(wù)模塊中,有各種ATM的服務(wù)功能,只要用戶在該界面中選擇按鈕,它就會(huì)彈出各個(gè)相應(yīng)的界面。每一個(gè)按鈕都有監(jiān)聽器,在選擇了按鈕后,java.awt.event中的ActionEvent類創(chuàng)建一個(gè)事件對(duì)象,并將它傳遞給方法public void actionPerformed(ActionEvent e)中的參數(shù)e,監(jiān)視器就會(huì)知道所發(fā)生的事件,對(duì)此事件進(jìn)行處理。

      3.3.3 取款模塊設(shè)計(jì)

      在取款模塊中,和其他的界面也是同樣的結(jié)構(gòu)。也是有一個(gè)文本框和一個(gè)按鈕還有標(biāo)簽組成的。用戶在文本框中輸入他想取的數(shù)額,但是必須是100的倍數(shù),而且每一次最多只能取5000塊。當(dāng)然了取款的時(shí)候也不能超過卡里的余額,再就是卡里的余額不可以為負(fù),否則就會(huì)彈出報(bào)錯(cuò)的窗口。3.3.4 退卡模塊設(shè)計(jì)

      在退卡模塊設(shè)計(jì)中,這個(gè)方法就更加的簡(jiǎn)單了,它只是用了if(e.getSource()==button4){//退出

      } System.exit(0);dispose();這個(gè)方法就可以實(shí)現(xiàn)了,這里就不再多說了。

      3.4 異常處理情況說明

      (1)打開、保存文件時(shí)的異常處理 需要處理的異常:IOException(2)數(shù)據(jù)庫訪問時(shí)的異常處理 需要處理的異常:SQLException(3)加載類時(shí)的異常處理

      需要處理的異常:ClassNotFindException,當(dāng)應(yīng)用程序試圖使用Class類中的forName方法通過字符串名加載類時(shí),但是沒有找到具有指定名稱的類的定義。

      (4)加載URL時(shí)的異常

      需要處理的異常:MalformedURLException,拋出這一異常指示出現(xiàn)了錯(cuò)誤的 URL。或者在規(guī)范字符串中找不到任何合法協(xié)議,或者無法分析字符串。系統(tǒng)實(shí)現(xiàn)與測(cè)試

      (1)編譯運(yùn)行程序后,將會(huì)看到如下的界面,如圖2所示。如果輸入的密碼或卡號(hào)不正確的話就會(huì)報(bào)右下圖的錯(cuò)誤。

      圖2 主界面—登陸頁面

      (2)選擇服務(wù)界面效果

      當(dāng)輸入的密碼和卡號(hào)正確,單擊確定后就會(huì)進(jìn)入到選擇服務(wù)的界面,如圖3所示。然后就可以選擇所需要的服務(wù)了。

      圖3 選擇服務(wù)界面

      (3)取款界面,如圖4所示。

      圖4 取款界面

      (4)查詢余額界面,如圖7所示。

      圖7 查詢余額界面

      圖8 存款界面

      圖9 轉(zhuǎn)賬界面

      經(jīng)過測(cè)試,所有的功能基本上都實(shí)現(xiàn)了,而且運(yùn)行正常。.總程序

      package ZDC;//主菜單

      import java.awt.*;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import javax.swing.*;import java.awt.event.*;class Panel1 extends JPanel{ JLabel label1,label2;

      Panel1(){

      setLayout(new GridLayout(4,1));

      label1=new JLabel(“

      ”+“銀行存取款系統(tǒng)”);label2=new JLabel(“

      ”+“歡迎你成為本行用戶,你可以選擇中文或英文方式”);

      add(new JLabel());add(label1);add(label2);add(new JLabel());

      } } class Panel2 extends JPanel{

      JButton button1,button2;

      Panel2(){

      setLayout(new GridLayout(3,6));

      button1=new JButton(“中文”);button2=new JButton(“英文”);

      add(new JLabel());add(new JLabel());add(new JLabel());add(new JLabel());add(new JLabel());

      add(new JLabel());add(new JLabel());add(button1);add(new JLabel());add(new JLabel());

      add(button2);add(new JLabel());add(new JLabel());add(new JLabel());add(new JLabel());

      add(new JLabel());add(new JLabel());add(new JLabel());

      } } class Client extends JFrame implements ActionListener{

      Panel1 panel1;Panel2 panel2;JFrame frame;

      Client(String s){

      super(s);

      Container con=this.getContentPane();

      con.setLayout(new GridLayout(2,1));

      panel1=new Panel1();panel2=new Panel2();

      con.add(panel1);con.add(panel2);

      panel2.button1.addActionListener(this);

      panel2.button2.addActionListener(this);

      this.setVisible(true);this.pack();

      }

      public void actionPerformed(ActionEvent e){

      if(e.getActionCommand()==“中文”){

      this.setVisible(false);

      new Client00(“輸入密碼”);

      }

      else if(e.getActionCommand()==“英文”){String inputValue = JOptionPane.showInputDialog(“Please input a value”);}

      } } public class menu{

      public static void main(String []args){

      new Client(“用戶取款系統(tǒng)”);

      }} package ZDC;

      // 輸入密碼界面

      import java.awt.*;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import javax.swing.*;import java.awt.event.*;class Panel01 extends JPanel{

      JLabel label1,label2,label3,label4;JPasswordField textA;JTextField textC;

      static JTextField textB;char t[]=new char[4];

      Panel01(){

      setLayout(new GridLayout(4,4));

      for(int i=0;i<4;i++){t[i]=(char)(Math.random()*26+'a');}

      String mm=new String(t);

      label2=new JLabel(“請(qǐng)輸入卡號(hào):”);label1=new JLabel(“請(qǐng)輸入密碼:”);

      label3=new

      JLabel();label4=new

      JLabel(“

      請(qǐng)

      驗(yàn)

      證”);label3.setBackground(Color.white);

      label3.setForeground(Color.red);

      textC=new JTextField(10);textC.setForeground(Color.blue);

      label3.setText(mm);

      textA=new JPasswordField(6);textA.setEchoChar('*');textB=new JTextField(“");

      for(int i=0;i<5;i++){add(new JLabel());}

      add(label2);add(textB);add(new JLabel());add(new JLabel());

      add(label1);add(textA);add(new JLabel());add(new JLabel());

      add(label4);add(textC);add(label3);

      } } class Panel02 extends JPanel{ JButton button1,button2;

      Panel02(){

      setLayout(new GridLayout(3,6));

      button1=new JButton(”確定“);button2=new JButton(”取消“);

      for(int i=0;i<7;i++){add(new

      JLabel());}add(button1);add(new JLabel());

      add(button2);for(int i=0;i<6;i++){add(new JLabel());}

      } } class Client00 extends JFrame implements ActionListener{

      Panel01 panel1;Panel02 panel2;JFrame frame;int i=0,j=0;

      Client00(String s){

      super(s);

      Container con=this.getContentPane();

      con.setLayout(new GridLayout(2,1));

      panel1=new Panel01();panel2=new Panel02();

      con.add(panel1);con.add(panel2);

      JLabel());add(new

      panel2.button1.addActionListener(this);

      panel2.button2.addActionListener(this);

      this.setVisible(true);this.pack();

      }

      public void actionPerformed(ActionEvent e){

      char[] passwords=panel1.textA.getPassword();String password=new String(”000000“);

      //設(shè)置賬號(hào)123456789的初始密碼為112626,每輸入一次都有提示,在連續(xù)輸入三次不正確后系統(tǒng)自動(dòng)退出。

      ”);}

      if(e.getActionCommand().equals(“確定”))

      if(panel1.textC.getText().equals(panel1.label3.getText())){

      heshi();

      }

      else{JOptionPane.showMessageDialog(frame,“你輸入的驗(yàn)證碼有誤,請(qǐng)重新輸入。

      else if(e.getActionCommand()==”取消“){this.setVisible(false);new Client08(”“);}

      }

      public void heshi(){

      if(panel1.textA.getText().equals(”“)||panel1.textB.getText().equals(”“)){JOptionPane.showMessageDialog(frame,”

      請(qǐng)輸入賬號(hào)、密碼!“);return;} try{ Class.forName(”sun.jdbc.odbc.JdbcOdbcDriver“);Connection con=DriverManager.getConnection(”jdbc:odbc:hello“,”“,”“);//連接數(shù)據(jù)庫 Statement sql=con.createStatement();

      String ql=panel1.textB.getText();

      ResultSet rs=sql.executeQuery(”select cnima from card where cno=“+ql+”“);

      if(rs.next()){

      String qerycmima=panel1.textA.getText();

      String s=rs.getString(1);

      if(qerycmima.equals(s)){

      JOptionPane.showMessageDialog(frame,”

      連接成功!“);

      this.setVisible(false);new Client01(”用戶取款系統(tǒng)“);

      }else{ if(i!=2){i++;j=3-i;

      JOptionPane.showMessageDialog(frame,”密碼有誤!你還有“+j+”次機(jī)會(huì),請(qǐng)你再仔細(xì)想想.“);

      panel1.textA.setText(”“);}

      else {JOptionPane.showMessageDialog(frame,”對(duì)不起,你輸入的密碼次數(shù)達(dá)三次,下次再見?!?;System.exit(0);}

      }

      con.close();frame.repaint();

      }

      else{JOptionPane.showMessageDialog(null,”

      該用戶不存在,重新輸入!“,”警告!“, JOptionPane.YES_NO_OPTION);

      panel1.textA.setText(”“);panel1.textB.setText(”“);panel1.textC.setText(”“);return;}

      }catch(SQLException g){ System.out.println(”E Code“+g.getErrorCode());System.out.println(”E M“+g.getMessage());

      } catch(Exception e){ e.printStackTrace();

      }

      } } class Inputpassword{

      public static void main(String []args){

      new Client00(”用戶取款系統(tǒng)“);

      }} package ZDC;//選擇界面

      import java.awt.*;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import javax.swing.*;import java.awt.event.*;class Panel03 extends JPanel{

      ”);

      for(int i=0;i<7;i++){add(new

      JLabel());}add(button1);add(new

      JLabel());add(new

      JButton button1,button2,button3,button4,button5;

      Panel03(){

      setLayout(new GridLayout(8,6));

      button1=new JButton(“查詢”);button2=new JButton(“取款”);

      button3=new JButton(“轉(zhuǎn)賬”);button4=new JButton(“退出”);button5=new JButton(“存款JLabel());

      add(button2);for(int

      i=0;i<8;i++){add(new

      JLabel());}add(button3);add(new JLabel());add(new JLabel());add(button5);

      for(int i=0;i<17;i++){add(new JLabel());}add(button4);for(int i=0;i<7;i++){add(new JLabel());}

      } } class Client01 extends JFrame implements ActionListener{

      Panel03 panel1;JFrame frame;

      Client01(String s){

      super(s);

      Container con=this.getContentPane();

      panel1=new Panel03();con.add(panel1);

      panel1.button1.addActionListener(this);panel1.button2.addActionListener(this);

      panel1.button3.addActionListener(this);panel1.button4.addActionListener(this);panel1.button5.addActionListener(this);

      this.setVisible(true);this.pack();

      }

      public void actionPerformed(ActionEvent e){

      if(e.getActionCommand()==”取款“){

      this.setVisible(false);

      new Client02(”請(qǐng)選擇取款金額“);

      }

      else if(e.getActionCommand()==”查詢“){

      this.setVisible(false);

      new Client06(”查詢服務(wù)“);

      }

      else if(e.getActionCommand()==”存款“){

      this.setVisible(false);

      new Client05(”請(qǐng)選擇存款金額“);

      }

      else if(e.getActionCommand()==”轉(zhuǎn)賬“){

      this.setVisible(false);

      new Client04(”用戶轉(zhuǎn)賬服務(wù)“);

      }

      else if(e.getActionCommand()==”退出“){ this.setVisible(false);new Client08(”“);}

      } } class Selectfunction{

      public static void main(String []args){

      new Client01(”用戶取款系統(tǒng)“);

      new Client01(”用戶存款系統(tǒng)“);

      } } package ZDC;//查詢功能

      import java.awt.*;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import javax.swing.*;

      import ZDC.Panel01;

      import java.awt.event.*;class Panel06 extends JPanel{

      JLabel label1,label2;JTextField textA;JFrame frame;

      Panel06(){

      setLayout(new GridLayout(4,4));label1=new JLabel(”你的余額為:“);

      textA=new JTextField(6);

      for(int i=0;i<5;i++){add(new JLabel());}

      add(label1);add(textA);for(int i=0;i<9;i++){add(new JLabel());}

      } } class Panel07 extends JPanel{

      JButton button1,button2;

      Panel07(){

      setLayout(new GridLayout(3,6));

      button1=new JButton(”繼續(xù)“);button2=new JButton(”查詢“);

      for(int i=0;i<7;i++){add(new

      JLabel());}add(button2);add(new JLabel());

      add(button1);for(int i=0;i<7;i++){add(new JLabel());}

      } } class Client03 extends JFrame implements ActionListener{

      Panel06 panel1;Panel07 panel2;

      Client03(String s){

      super(s);

      Container con=this.getContentPane();

      con.setLayout(new GridLayout(2,1));

      panel1=new Panel06();panel2=new Panel07();

      con.add(panel1);con.add(panel2);

      panel2.button1.addActionListener(this);

      panel2.button2.addActionListener(this);

      this.setVisible(true);this.pack();

      }

      JLabel());add(new

      public void actionPerformed(ActionEvent e){

      if(e.getActionCommand().equals(”繼續(xù)“)){

      this.setVisible(false);

      new Client01(”選擇服務(wù)種類“);

      }

      else if(e.getActionCommand()==”查詢“)showcjine();

      }

      public void showcjine(){

      //String

      url

      =

      ”jdbc:odbc:driver={Microsoft

      Access

      Driver(*.mdb)};DBQ=bankSystem.mdb“;//程序直接使用當(dāng)前類目錄下的數(shù)據(jù)庫文件

      try{

      Class.forName(”sun.jdbc.odbc.JdbcOdbcDriver“);

      Connection con=DriverManager.getConnection(”jdbc:odbc:hello“,”“,”“);//連接數(shù)據(jù)庫 Statement sql=con.createStatement();String ql=Panel01.textB.getText();Class.forName(”sun.jdbc.odbc.JdbcOdbcDriver“);ResultSet rs=sql.executeQuery(”select cjine from card where cno=“+ql+”“);

      if(rs.next()){

      String ucjine=rs.getString(1);

      panel1.textA.setText(ucjine);

      }

      else{JOptionPane.showMessageDialog(null,”

      該用戶不存在“,”警告!“, JOptionPane.YES_NO_OPTION);}

      con.close();

      }catch(Exception ex){ ex.printStackTrace();

      }

      }

      } class Searchfunction{

      public static void main(String []args){

      new Client03(”用戶查詢服務(wù)“);

      }} package ZDC;

      //查詢信息

      import java.awt.*;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import javax.swing.*;import java.awt.event.*;class Panel11 extends JPanel{

      JButton button1,button2;

      Panel11(){

      setLayout(new GridLayout(10,5));

      button1=new JButton(”查詢余額“);

      button2=new JButton(”查本卡信息“);

      for(int i=0;i<=16;i++)add(new JLabel());

      add(button1);

      for(int i=0;i<=13;i++)add(new JLabel());

      add(button2);

      for(int i=0;i<=16;i++)add(new JLabel());} }

      class Client06 extends JFrame implements ActionListener{

      Panel11 panel11;JFrame frame;

      Client06(String s){

      super(s);

      Container con=this.getContentPane();

      panel11=new Panel11();

      con.add(panel11);

      panel11.button1.addActionListener(this);

      panel11.button2.addActionListener(this);

      this.setVisible(true);this.pack();}

      public void actionPerformed(ActionEvent e){

      if(e.getActionCommand()==”查詢余額“){

      this.setVisible(false);

      new Client03(”用戶查詢服務(wù)“);

      }

      else if(e.getActionCommand()==”查本卡信息“){ this.setVisible(false);

      new Client07(”本卡信息“);

      } } } class Searchinformation{

      public static void main(String []args){

      new Client06(”查詢服務(wù)“);

      } } package ZDC;//轉(zhuǎn)賬功能

      import java.awt.*;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import javax.swing.*;

      import ZDC.Panel01;

      import java.awt.event.*;class Panel08 extends JPanel{

      JLabel label1,label2;JTextField textA,textB;

      Panel08(){

      setLayout(new GridLayout(4,4));

      label1=new JLabel(”輸入預(yù)轉(zhuǎn)賬號(hào):“);label2=new JLabel(”輸入預(yù)轉(zhuǎn)金額:“);

      textA=new JTextField(6);textB=new JTextField(6);

      for(int i=0;i<5;i++){add(new JLabel());}

      add(label1);add(textA);for(int i=0;i<6;i++){add(new JLabel());}

      add(label2);add(textB);add(new JLabel());

      } } class Panel09 extends JPanel{

      JButton button1,button2;

      Panel09(){

      setLayout(new GridLayout(3,6));

      button1=new JButton(”確定“);button2=new JButton(”取消“);

      add(new JLabel());add(new JLabel());add(new JLabel());add(new JLabel());add(new JLabel());

      add(new JLabel());add(new JLabel());add(button1);add(new JLabel());add(new JLabel());

      add(button2);add(new JLabel());add(new JLabel());add(new JLabel());add(new JLabel());

      add(new JLabel());add(new JLabel());add(new JLabel());

      } } class Client04 extends JFrame implements ActionListener{

      Panel08 panel1;Panel09 panel2;JFrame frame;

      Client04(String s){

      super(s);

      Container con=this.getContentPane();

      con.setLayout(new GridLayout(2,1));

      panel1=new Panel08();panel2=new Panel09();

      con.add(panel1);con.add(panel2);

      panel2.button1.addActionListener(this);

      panel2.button2.addActionListener(this);

      this.setVisible(true);this.pack();

      }

      public void actionPerformed(ActionEvent e){

      if(e.getActionCommand().equals(”確定“)){ zhuanzhang();//程序根據(jù)輸入賬號(hào)調(diào)用數(shù)據(jù)庫,修改對(duì)應(yīng)金額數(shù)。

      this.setVisible(false);

      new Client01(”用戶取款系統(tǒng)“);

      }

      else if(e.getActionCommand()==”取消“){

      this.setVisible(false);

      new Client01(”用戶取款系統(tǒng)“);}

      }

      public void zhuanzhang(){

      if(panel1.textA.getText().equals(”“)||panel1.textB.getText().equals(”“)){JOptionPane.showMessageDialog(frame,”

      請(qǐng)輸入欲轉(zhuǎn)賬號(hào)、金額!“);return;} //String url = ”jdbc:odbc:driver={Microsoft Access Driver(*.mdb)};DBQ=bankSystem.mdb“;//程序直接使用當(dāng)前類目錄下的數(shù)據(jù)庫文件

      try{

      Class.forName(”sun.jdbc.odbc.JdbcOdbcDriver“);

      Connection con=DriverManager.getConnection(”jdbc:odbc:hello“,”“,”“);//連接數(shù)據(jù)庫 Statement sql=con.createStatement();String cno=panel1.textA.getText();String ql=Panel01.textB.getText();

      Class.forName(”sun.jdbc.odbc.JdbcOdbcDriver“);

      ResultSet ss=sql.executeQuery(”select cno from card where cno=“+cno+”“);String yjine=panel1.textB.getText();

      int shjin=Integer.parseInt(yjine);

      if(ss.next()){

      ResultSet rs=sql.executeQuery(”select cjine from card where cno=“+ql+”“);if(rs.next()){ String queryjine=rs.getString(1);

      int qyjine=Integer.parseInt(queryjine);

      if(shjin

      String newjine=String.valueOf(newcjine);String newjine2=String.valueOf(newcjine2);

      sql.executeUpdate(”update card set cjine='“+newjine+”'where cno=“+ql+”“);

      sql.executeUpdate(”update card set cjine='“+newjine2+”'where cno=“+cno+”“);JOptionPane.showMessageDialog(frame,”

      操作已成功,謝謝使用!“);this.setVisible(false);new Client01(”用戶取款系統(tǒng)“);

      }

      else{JOptionPane.showMessageDialog(null,”

      請(qǐng)重新輸入金額!“,”警告!“, JOptionPane.YES_NO_OPTION);

      panel1.textB.setText(”“);return;

      }

      con.close();frame.repaint();

      }

      con.close();frame.repaint();

      }

      else{JOptionPane.showMessageDialog(null,”

      警告!“, JOptionPane.YES_NO_OPTION);panel1.textA.setText(”“);}

      }catch(Exception ex){ ex.printStackTrace();

      }

      } } class Transferfunction{

      public static void main(String []args){

      new Client04(”用戶轉(zhuǎn)賬服務(wù)“);}} package ZDC;//用戶取款

      import java.awt.*;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;

      該用戶不存在,請(qǐng)重新輸入?!?“

      import javax.swing.*;

      import ZDC.Panel01;

      import java.awt.event.*;class Panel04 extends JPanel{

      JButton button1,button2,button3,button4;

      Panel04(){

      setLayout(new GridLayout(4,6));

      button1=new JButton(”100“);button2=new JButton(”200“);

      button3=new JButton(”300“);button4=new JButton(”500“);

      for(int i=0;i<7;i++){add(new JLabel());}add(button1);add(new JLabel());add(new JLabel());

      add(button2);for(int i=0;i<8;i++){add(new JLabel());}add(button3);add(new JLabel());

      add(new JLabel());add(button4);add(new JLabel());

      } } class Panel05 extends JPanel{

      JButton button1,button2,button3,button4;

      Panel05(){

      setLayout(new GridLayout(4,6));

      button1=new JButton(”800“);button2=new JButton(”1000“);

      for(int i=0;i<7;i++){add(new JLabel());}add(button1);add(new JLabel());add(new JLabel());

      add(button2);for(int i=0;i<13;i++){add(new JLabel());}

      } } class Client02 extends JFrame implements ActionListener{

      Panel04 panel1;Panel05 panel2;JFrame frame;

      Client02(String s){

      super(s);

      Container con=this.getContentPane();

      con.setLayout(new GridLayout(2,1));

      panel1=new Panel04();panel2=new Panel05();

      con.add(panel1);con.add(panel2);

      panel1.button1.addActionListener(this);panel1.button2.addActionListener(this);

      panel1.button3.addActionListener(this);panel1.button4.addActionListener(this);

      panel2.button1.addActionListener(this);panel2.button2.addActionListener(this);

      this.setVisible(true);this.pack();

      }

      public void actionPerformed(ActionEvent e){

      if(e.getActionCommand()==”100“){

      this.setVisible(false);

      qukuan();//程序根據(jù)輸入金額和輸入卡號(hào),修改數(shù)據(jù)庫。

      new Client01(”用戶取款系統(tǒng)“);

      }

      else if(e.getActionCommand()==”200“){

      else if(e.getActionCommand()==”300“){

      this.setVisible(false);

      qukuan();

      new Client01(”用戶取款系統(tǒng)“);}

      this.setVisible(false);

      qukuan();

      new Client01(”用戶取款系統(tǒng)“);}

      else if(e.getActionCommand()==”500“){

      this.setVisible(false);

      qukuan();

      new Client01(”用戶取款系統(tǒng)“);}

      else if(e.getActionCommand()==”800“){

      this.setVisible(false);

      qukuan();

      new Client01(”用戶取款系統(tǒng)“);}

      else if(e.getActionCommand()==”1000“){

      }

      public void qukuan(){

      try{

      Class.forName(”sun.jdbc.odbc.JdbcOdbcDriver“);Connection con=DriverManager.getConnection(”jdbc:odbc:hello“,”“,”“);//連接數(shù)據(jù)庫 Statement sql=con.createStatement();String ql=Panel01.textB.getText();

      this.setVisible(false);

      qukuan();

      new Client01(”用戶取款系統(tǒng)“);}

      ResultSet rs=sql.executeQuery(”select cjine from card where cno=“+ql+”“);if(rs.next()){ String mm=rs.getString(1);int nn= Integer.parseInt(mm);

      String qerycjine=panel1.button1.getActionCommand();

      int queryjine=Integer.parseInt(qerycjine);if(queryjine

      if(updateMima==1){ JOptionPane.showMessageDialog(frame,”

      操作已成功,謝謝使用!“);}

      this.setVisible(false);

      new Client01(”用戶取款系統(tǒng)“);

      }

      else{JOptionPane.showMessageDialog(null,”

      你的卡余額已不足,請(qǐng)注意!“,”警告!“, JOptionPane.YES_NO_OPTION);

      }

      con.close();

      frame.repaint();

      }

      }catch(SQLException g){ System.out.println(”E Code“+g.getErrorCode());System.out.println(”E M“+g.getMessage());

      } catch(Exception e){ e.printStackTrace();

      }

      } } class Withdraw{

      public static void main(String []args){

      new Client02(”請(qǐng)選擇取款金額“);

      } } this.setVisible(false);new Client01(”用戶取款系統(tǒng)“);package ZDC;

      //存款功能

      import java.awt.*;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import javax.swing.*;

      import ZDC.Panel01;

      import java.awt.event.*;class Panel10 extends JPanel{

      JButton button1,button2,button3,button4;

      Panel10(){

      setLayout(new GridLayout(4,6));

      button1=new JButton(”100“);button2=new JButton(”200“);

      button3=new JButton(”300“);button4=new JButton(”500“);

      for(int i=0;i<7;i++){add(new JLabel());}add(button1);add(new JLabel());add(new JLabel());

      add(button2);for(int i=0;i<8;i++){add(new JLabel());}add(button3);add(new JLabel());

      add(new JLabel());add(button4);add(new JLabel());

      } } class Panel14 extends JPanel{

      JButton button1,button2,button3,button4;

      Panel14(){

      setLayout(new GridLayout(4,6));

      button1=new JButton(”800“);button2=new JButton(”1000“);

      for(int i=0;i<7;i++){add(new JLabel());}add(button1);add(new JLabel());add(new JLabel());

      add(button2);for(int i=0;i<13;i++){add(new JLabel());}

      } }

      class Client05 extends JFrame implements ActionListener{

      Panel04 panel1;Panel05 panel2;JFrame frame;

      Client05(String s){

      super(s);

      Container con=this.getContentPane();

      con.setLayout(new GridLayout(2,1));

      panel1=new Panel04();panel2=new Panel05();

      con.add(panel1);con.add(panel2);

      panel1.button1.addActionListener(this);panel1.button2.addActionListener(this);

      panel1.button3.addActionListener(this);panel1.button4.addActionListener(this);

      panel2.button1.addActionListener(this);panel2.button2.addActionListener(this);

      this.setVisible(true);this.pack();

      }

      public void actionPerformed(ActionEvent e){

      if(e.getActionCommand()==”100“){

      this.setVisible(false);

      cunkuan();//程序根據(jù)輸入金額和輸入卡號(hào),修改數(shù)據(jù)庫。

      new Client01(”用戶存款系統(tǒng)“);

      }

      else if(e.getActionCommand()==”200“){this.setVisible(false);new Client01(”用戶存款系統(tǒng)“);}

      //這里當(dāng)點(diǎn)擊取款金額200時(shí),程序返回上層操作界面。

      }

      public void cunkuan(){

      try{

      Class.forName(”sun.jdbc.odbc.JdbcOdbcDriver“);Connection con=DriverManager.getConnection(”jdbc:odbc:hello“,”“,”“);//連接數(shù)據(jù)庫 Statement sql=con.createStatement();String ql=Panel01.textB.getText();ResultSet rs=sql.executeQuery(”select cjine from card where cno=“+ql+”“);

      if(rs.next()){ String mm=rs.getString(1);int nn= Integer.parseInt(mm);

      String qerycjine=panel1.button1.getActionCommand();

      int queryjine=Integer.parseInt(qerycjine);int newjine=nn+queryjine;String newjin=String.valueOf(newjine);int updateMima=sql.executeUpdate(”update card set cjine='“+newjin+”'where cno=“+ql+”“);

      if(updateMima==1){ JOptionPane.showMessageDialog(frame,”

      操作已成功,謝謝使用!“);}

      this.setVisible(false);

      new Client01(”用戶存款系統(tǒng)“);

      }

      else{JOptionPane.showMessageDialog(null,”

      請(qǐng)注意!“,”警告!“, JOptionPane.YES_NO_OPTION);

      this.setVisible(false);new Client01(”用戶取款系統(tǒng)“);}

      con.close();

      frame.repaint();

      }catch(SQLException g){ System.out.println(”E Code“+g.getErrorCode());System.out.println(”E M“+g.getMessage());

      } catch(Exception e){ e.printStackTrace();

      }

      } }

      class Depositfunction{

      public static void main(String []args){

      new Client05(”請(qǐng)選擇存款金額“);

      } } package ZDC;//顯示用戶信息

      import java.awt.*;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import javax.swing.*;

      import ZDC.Panel01;

      import java.awt.event.*;

      class Panel12 extends JPanel{

      JLabel label1,label2,label3,label4;

      JButton button1,button2;JTextField text1,text2,text3,text4;

      Panel12(){

      setLayout(new GridLayout(9,6));

      label1=new JLabel(”顯示用戶名:“);label2=new JLabel(”顯示性別:“);

      label3=new JLabel(”顯示身份證:“);label4=new JLabel(”顯示卡號(hào):“);

      button1=new JButton(”查詢“);text1=new JTextField(”“);text2=new JTextField(”“);

      button2=new JButton(”取消“);text3=new JTextField(”“);text4=new JTextField(”“);

      for(int i=0;i<8;i++)add(new JLabel());add(label1);add(text1);

      for(int i=0;i<4;i++)add(new JLabel());add(label2);add(text2);

      for(int i=0;i<4;i++)add(new JLabel());add(label3);add(text3);

      for(int i=0;i<4;i++)add(new JLabel());add(label4);add(text4);

      for(int i=0;i<15;i++)add(new JLabel());add(button1);

      add(new JLabel());add(new JLabel());add(button2);

      for(int i=0;i<7;i++)add(new JLabel());} } class Client07 extends JFrame implements ActionListener{

      Panel12 panel12;JFrame frame;

      Client07(String s){

      super(s);

      Container con=this.getContentPane();

      panel12=new Panel12();

      con.add(panel12);

      panel12.button1.addActionListener(this);

      panel12.button2.addActionListener(this);

      this.setVisible(true);this.pack();}

      public void actionPerformed(ActionEvent e){

      if(e.getActionCommand()==”查詢“)showCard();

      else if(e.getActionCommand()==”取消“){

      this.setVisible(false);

      new Client01(”用戶取款系統(tǒng)“);

      }

      }

      public void showCard(){

      String url = ”jdbc:odbc:driver={Microsoft Access Driver(*.mdb)};DBQ=bankSystem.mdb“;//程序直接使用當(dāng)前類目錄下的數(shù)據(jù)庫文件

      try{

      Connection con=DriverManager.getConnection(url);Statement sql=con.createStatement();String ql=Panel01.textB.getText();Class.forName(”sun.jdbc.odbc.JdbcOdbcDriver“);ResultSet rs=sql.executeQuery(”select * from user where ucno=“+ql+”“);

      if(rs.next()){

      String uname=rs.getString(1);

      String usex=rs.getString(2);

      String uid=rs.getString(3);

      String ucno=rs.getString(4);

      panel12.text1.setText(uname);

      panel12.text2.setText(usex);

      panel12.text3.setText(uid);

      panel12.text4.setText(ucno);}

      else{JOptionPane.showMessageDialog(null,”

      該用戶不存在“,”警告!“, JOptionPane.YES_NO_OPTION);}

      con.close();

      } catch(Exception ex){ ex.printStackTrace();

      }

      } } class Dislayuserinformation{

      public static void main(String []args){

      new Client07(”本卡信息“);

      } } package ZDC;//退出功能

      class Client08{ static Athread threadA;

      Client08(String s){

      threadA=new Athread();

      threadA.start();

      } } class Athread extends Thread{ static int j=1;public void run(){ for(;j<2;){ new Client08(”提示退出對(duì)話框“);try{sleep(30000);j++;} catch(InterruptedException e){} } System.exit(0);} } public class Exit{

      public static void main(String []args){

      new Client08(”“);

      } }

      package ZDC;//退卡

      import java.awt.*;import java.sql.Connection;

      import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import javax.swing.*;

      import java.awt.event.*;class Panel13 extends JPanel{

      JLabel label;

      Panel13(){

      label=new JLabel(”

      此卡!

      “);

      setLayout(new

      GridLayout(10,1));add(new JLabel());

      add(label);for(int i=0;i<6;i++)add(new JLabel());}

      } class Client09 extends JFrame{

      Panel13 panel13;

      Client09(String s){

      super(s);

      Container con=this.getContentPane();

      panel13=new Panel13();

      con.add(panel13);

      this.setVisible(true);this.pack();} }

      class bankSystem09{

      謝謝使用,請(qǐng)?jiān)?0秒內(nèi)退出

      JLabel());add(new

      JLabel());add(new

      public void main(String []args){

      new Client08(”提示退出對(duì)話框");

      } } 6課程設(shè)計(jì)總結(jié)

      6.1 遇到的問題及解決辦法

      在此次課程設(shè)計(jì)中,我遇到了一些問題,如:對(duì)于面向?qū)ο蟮姆椒私獠粔蛲笍?,運(yùn)用到實(shí)際的軟件開發(fā)中存在著困難;對(duì)于Java語言,只學(xué)習(xí)到了一些最基本的知識(shí),這導(dǎo)致編寫程序時(shí)經(jīng)常出現(xiàn)一些語法錯(cuò)誤,而且要在短時(shí)間內(nèi)用Java語言來設(shè)計(jì)一個(gè)具體的系統(tǒng)是一個(gè)較大的挑戰(zhàn)。對(duì)于以上的問題,自己有清楚的認(rèn)識(shí),解決辦法是需要大量閱讀相關(guān)的書籍,對(duì)于書上以及網(wǎng)站上下載的資料中的Java實(shí)例必須有清楚的理解。對(duì)于實(shí)際動(dòng)手能力與系統(tǒng)開發(fā)的流程的適應(yīng),必須多進(jìn)行實(shí)際的練習(xí)與操作,才能有大的進(jìn)步。

      6.2 心得體會(huì)

      在這次的課程設(shè)計(jì)中,我主要運(yùn)用了Java語言的界面設(shè)計(jì)、異常處理、、Awt控件、Swing控件,輸入輸出流等,綜合運(yùn)用了Java語言。我深刻感受到了面向?qū)ο笳Z言中類庫的強(qiáng)大功能,掌握了運(yùn)用Java中的類實(shí)現(xiàn)某些基本功能,并學(xué)會(huì)了自己查詢使用類的方法,為以后的面向?qū)ο笳Z言的自學(xué)奠定了基礎(chǔ)。在以后的學(xué)習(xí)當(dāng)中,我會(huì)更加努力的學(xué)習(xí)好專業(yè)知識(shí),并將所學(xué)的知識(shí)用于實(shí)踐當(dāng)中去,以便牢固掌握知識(shí)。

      第二篇:JAVA課程設(shè)計(jì)-ATM機(jī)模擬系統(tǒng)

      《Java語言程序設(shè)計(jì)》

      課程設(shè)計(jì)報(bào)告

      目:

      ATM柜員機(jī)

      業(yè):

      信息與計(jì)算科學(xué)

      學(xué)

      號(hào):

      名:

      指導(dǎo)教師:

      成績:

      2010 年 12 月 10 日

      目 錄

      1課程設(shè)計(jì)研究背景及意義.......................................2 2 課程設(shè)計(jì)題目描述和基本功能設(shè)計(jì)要求...........................2 3 系統(tǒng)需求分析.................................................2 3.1 功能需求分析............................................2 3.2 其他需求分析............................................3 4 系統(tǒng)設(shè)計(jì).....................................................3 4.1 總體設(shè)計(jì)................................................3 4.2 ATM柜員機(jī)界面設(shè)計(jì)......................................4 4.3 各功能模塊設(shè)計(jì)..........................................5

      4.3.1 登陸頁面模塊設(shè)計(jì)................................5 4.3.2 選擇服務(wù)模塊設(shè)計(jì)................................6 4.3.3 取款模塊設(shè)計(jì)....................................7 4.3.4 修改密碼模塊設(shè)計(jì)................................8 4.3.5 查詢余額模塊設(shè)計(jì)................................9 4.3.6 退卡模塊設(shè)計(jì)....................................9 4.4 異常處理情況說明.......................................10 5 系統(tǒng)實(shí)現(xiàn)與測(cè)試..............................................10 6 課程設(shè)計(jì)總結(jié)................................................13 6.1 遇到的問題及解決辦法...................................13 6.2 心得體會(huì)...............................................14 參考文獻(xiàn)......................................................14 附錄(源碼)..................................................14

      1課程設(shè)計(jì)研究背景及意義

      這次課程設(shè)計(jì)是通過JAVA編程來實(shí)現(xiàn)ATM柜員機(jī)的功能。以前,人們用手算取錢,不管從方便的角度還是速度的角度來看都不及現(xiàn)在。電子技術(shù)的不斷發(fā)展使得ATM自動(dòng)化的功能不斷完善。在二十一世紀(jì)的今天,ATM柜員機(jī)是人們生活中重要的工具,所以,對(duì)ATM柜員機(jī)的研究的課程設(shè)計(jì)具有重大意義。

      這次課程設(shè)計(jì)的主要目的是結(jié)合面向?qū)ο蟪绦蛟O(shè)計(jì)課程,培養(yǎng)我們面向?qū)ο箝_發(fā)的思維,初步了解軟件開發(fā)的一般流程,提高用JAVA編程的實(shí)際動(dòng)手能力并增強(qiáng)大家對(duì)面向?qū)ο蟮牧私?。這次課程設(shè)計(jì)的主要內(nèi)容是獨(dú)立用JAVA語言開發(fā)一個(gè)小的應(yīng)用程序。課程設(shè)計(jì)題目描述和基本功能設(shè)計(jì)要求

      本次設(shè)計(jì)的ATM柜員機(jī)主要是由各個(gè)Windows窗口組成,它是由登錄頁面、選擇服務(wù)、取款、查詢余額、修改密碼和退卡等功能。它的各種按鈕的事件和功能可以簡(jiǎn)單的模擬ATM柜員機(jī)的要求。組員分工:

      組長(單焱): 負(fù)責(zé)分配其他組員的任務(wù),構(gòu)建需求分析,系統(tǒng)實(shí)現(xiàn)及異常處理情況,調(diào)試程序等,把握ATM柜員機(jī)的整體布局。

      組員1(劉星):負(fù)責(zé)登陸界面模塊,選擇服務(wù)模塊及退卡模塊,編寫相應(yīng)代碼。組員2(王玲玲):負(fù)責(zé)取款、修改密碼、查詢余額模塊,編寫相應(yīng)代碼。系統(tǒng)需求分析 3.1 功能需求分析

      本ATM柜員機(jī)的主要功能如下所述:

      要求使用圖形用戶界面。當(dāng)輸入給定的卡號(hào)和密碼(初始卡號(hào)為000000和密碼為123456)時(shí),系統(tǒng)能登錄ATM柜員機(jī)系統(tǒng),用戶可以按照以下規(guī)則進(jìn)行:

      ? 查詢余額:初始余額為50000元

      ? ATM取款:每次取款金額為100的倍數(shù),總額不超過5000元,支取金額不允許透支。

      ? ATM存款:不能出現(xiàn)負(fù)存款。

      ? 修改密碼:只有舊密碼正確,新密碼符合要求,且兩次輸入相同的情況下才可以成功修改密碼。

      3.2 其他需求分析

      (1)性能描述

      實(shí)時(shí)性好、靈活性強(qiáng)、易于不同年齡階段的人操作。(2)設(shè)計(jì)約束 開發(fā)工具:Eclipse3.2.運(yùn)行環(huán)境:Windows 2000以上。(3)界面要求

      以Windows窗口形式顯示,標(biāo)題欄為ATM柜員機(jī)名稱,右上角有最小化按鈕、最大化按鈕、關(guān)閉按鈕,不同的窗口中有不同的按鈕和選擇菜單。系統(tǒng)設(shè)計(jì) 4.1 總體設(shè)計(jì)

      本次設(shè)計(jì)的ATM柜員機(jī)主要是由登錄頁面模塊還由選擇服務(wù)模塊組成,其中選擇服務(wù)模塊又由取款模塊、查詢余額模塊、修改密碼模塊、退卡模塊組成。如圖:

      圖1

      ATM功能結(jié)構(gòu)示意圖

      4.2 ATM柜員機(jī)界面設(shè)計(jì)

      一個(gè)系統(tǒng)的界面應(yīng)該要簡(jiǎn)單明了,當(dāng)然樣式美觀就更好了。本次設(shè)計(jì)的界面主要是由窗體組成,操作簡(jiǎn)單。而每一個(gè)窗口則執(zhí)行相應(yīng)的功能。

      一個(gè)系統(tǒng)界面的好壞直接影響到用戶的操作,界面設(shè)計(jì)要求樣式美觀、簡(jiǎn)單明了、方便易操作。界面主要分為窗體、菜單、按鈕和文本輸入框幾個(gè)部分,分別執(zhí)行相應(yīng)的操作。

      (1)窗體的設(shè)計(jì)

      窗體整個(gè)框架使用Frame類構(gòu)造,F(xiàn)rame有自己的外邊框和自己的標(biāo)題,創(chuàng)建Frame時(shí)可以指定其窗口標(biāo)題,我創(chuàng)建的窗口標(biāo)題是各個(gè)不同功能的模塊的名字,比如說查詢余額,還有取款等。相應(yīng)源代碼為:WindowBox(String s){super(s);}、Selection(String s,Account act){ } 向Frame窗口中添加組件使用add()。例如:button1 = new Button(“存款”);

      p1.add(button1);this.add(p1);super(s);每個(gè)Frame在其右上角都有三個(gè)控制圖標(biāo),分別代表將窗口最小化、窗口最大化和關(guān)閉的操作,其中最小化和最大化操作Frame可自動(dòng)完成,而關(guān)閉窗口操作實(shí)現(xiàn)需要書寫有關(guān)的代碼,在我的程序中我采用的是對(duì)WINDOWS_CLOSING事件做出響應(yīng),調(diào)用dispose()方法關(guān)閉窗口。Frame也可以引發(fā)WindowsEvent類代表的窗口事件。相應(yīng)源代碼為:

      addWindowListener(new WindowAdapter()//窗口偵聽器,以從此窗口接收窗口事件 {public void windowClosing(WindowEvent e)//處理窗口關(guān)閉事件

      { System.exit(0);} });}(2)窗體的主要結(jié)構(gòu)的設(shè)計(jì)(網(wǎng)格布局)

      我所設(shè)計(jì)的窗口的主要結(jié)構(gòu)的特點(diǎn)就是每個(gè)窗口都對(duì)應(yīng)著一個(gè)特定的功能。比如說報(bào)各種各樣的錯(cuò),還有各種查詢余額、取款、選擇服務(wù)等,所以它們都是由各種按鈕和文本框,標(biāo)簽組成的,而聯(lián)系各個(gè)窗體成為一個(gè)整體的就是各個(gè)按鈕的監(jiān)聽事件。所以整個(gè)設(shè)計(jì)就趨向簡(jiǎn)單化了。

      為了定義各個(gè)按鈕所對(duì)應(yīng)的命令和操作,首先需要將各個(gè)按鈕注冊(cè)給實(shí)現(xiàn)了動(dòng)作事件的監(jiān)聽接口ActionListener的監(jiān)聽者,然后為監(jiān)聽者定義actionPerformed(ActionEvent e)方法,在這個(gè)方法中調(diào)用e.getSource()或e.getActionCommand()來判斷用戶點(diǎn)擊的菜單子項(xiàng),并完成這個(gè)菜單子項(xiàng)定義的操作。

      4.3 各功能模塊設(shè)計(jì) 4.3.1 登陸頁面模塊設(shè)計(jì)

      與ATM柜員機(jī)打交道比較多的,也是大家對(duì)安全比較關(guān)心的問題:密碼。所以第一個(gè)界面就是要輸入密碼和卡號(hào)才能繼續(xù)服務(wù)。

      我定義了文本框累的對(duì)象tf1,tf2。抓藥是用于輸入單行的文本;文本區(qū)調(diào)用public String getText()方法,獲取用戶想要的字符串。用來判斷輸入的密碼和卡號(hào)是否正確,如果不正確的話,則彈出密碼或卡號(hào)錯(cuò)誤的警告框,并用dispose()關(guān)掉窗口。此模塊相應(yīng)的部分源代碼為:

      public void actionPerformed(ActionEvent e){

      Account act;

      String card;

      String pwd;

      act=new Account(“000000”,“Devil”,“123456”,50000);//初始化

      /*選擇各種服務(wù)*/

      if(e.getSource()== button1){

      String number1,number2;

      number1=tf1.getText();

      number2=tf2.getText();

      /*判斷密碼和卡號(hào)是否正確*/ if((act.get_Code().equals(number1))&&(act.get_Password().equals(number2))){

      dispose();

      /*卡號(hào)和密碼都正確則進(jìn)入功能選擇窗口*/

      Selection s = new Selection(“選擇服務(wù)”,act);

      }else{

      dispose();

      JOptionPane.showMessageDialog(null, “您輸入的卡號(hào)或密碼不正確,請(qǐng)核實(shí)后再確定”,“消息!”, JOptionPane.INFORMATION_MESSAGE);

      new WindowBox(“登錄界面”);

      }

      }

      /*退卡*/ if(e.getSource()==button2){

      dispose();

      JOptionPane.showMessageDialog(null, “謝謝使用!”, “消息!”,JOptionPane.INFORMATION_MESSAGE);System.exit(0);

      } } 4.3.2 選擇服務(wù)模塊設(shè)計(jì)

      在選擇服務(wù)模塊中,有各種ATM的服務(wù)功能,只要用戶在該界面中選擇按鈕,它就會(huì)彈出各個(gè)相應(yīng)的界面。每一個(gè)按鈕都有監(jiān)聽器,在選擇了按鈕后,java.awt.event中的ActionEvent類創(chuàng)建一個(gè)事件對(duì)象,并將它傳遞給方法public void actionPerformed(ActionEvent e)中的參數(shù)e,監(jiān)視器就會(huì)知道所發(fā)生的事件,對(duì)此事件進(jìn)行處理。其中的部分源代碼為:

      p.add(new Label(“請(qǐng)選擇你要的服務(wù)”));

      this.add(p);

      button1 = new Button(“存款”);

      p1.add(button1);

      this.add(p1);

      button2 = new Button(“取款”);

      p2.add(button2);

      this.add(p2);

      button3 = new Button(“查詢余額”);

      p3.add(button3);

      this.add(p3);

      button4 = new Button(“退出”);

      p4.add(button4);

      this.add(p4);

      button5 = new Button(“修改密碼”);

      p5.add(button5);

      this.add(p5);

      this.addWindowListener(new WindowAdapter(){

      public void windowClosing(WindowEvent e){

      System.exit(0);

      }

      }

      });button2.addActionListener(this);button3.addActionListener(this);button4.addActionListener(this);button5.addActionListener(this);setBounds(300,300,300,300);setVisible(true);validate();} public void actionPerformed(ActionEvent e){ if(e.getSource()==button2){//取款

      dispose();

      GetBalance gb = new GetBalance(“取款”,act);} if(e.getSource()==button3){//查詢余額

      Query q =new Query(“查詢余額”,act);

      dispose();} else if(e.getSource()==button4){//退出

      dispose();

      } JOptionPane.showMessageDialog(null, “謝謝使用!”, “消息!”,JOptionPane.INFORMATION_MESSAGE);System.exit(0);

      } else if(e.getSource()==button5){//修改密碼

      ChangePassword cp = new ChangePassword(“修改密碼”,act);

      dispose();} 4.3.3 取款模塊設(shè)計(jì)

      在取款模塊中,和其他的界面也是同樣的結(jié)構(gòu)。也是有一個(gè)文本框和一個(gè)按鈕還有標(biāo)簽組成的。用戶在文本框中輸入他想取的數(shù)額,但是必須是100的倍數(shù),而且每一次最多只能取5000塊。當(dāng)然了取款的時(shí)候也不能超過卡里的余額,再就是卡里的余額不可以為負(fù),否則就會(huì)彈出報(bào)錯(cuò)的窗口。其方法為:

      if(e.getSource()== button){

      if(act.get_Money()< 0){// 判斷余額是否為負(fù)

      dispose();JOptionPane.showMessageDialog(null, “余額為負(fù)數(shù)”, “消息”,JOptionPane.INFORMATION_MESSAGE);} else if(money <= act.get_Money()){// 取錢的數(shù)額不大于余額

      if(money % 100 == 0){

      dispose();

      JOptionPane.showMessageDialog(null, “取款成功!”, “消息”,JOptionPane.INFORMATION_MESSAGE);act.set_Balance(money);this.setVisible(false);Selection s = new Selection(“選擇服務(wù)”, act);}

      if((money % 100!= 0)||(money >= 5000)){// 取錢數(shù)為100的倍數(shù)或不大于5000

      dispose();

      JOptionPane.showMessageDialog(null,的錢!“, ”消息“,務(wù)窗口

      }

      ”每次只能取100的倍數(shù),而且不能超過5000,請(qǐng)重新輸入你想取

      JOptionPane.INFORMATION_MESSAGE);act.get_Money();this.setVisible(false);Selection s = new Selection(“選擇服務(wù)”, act);// 返回選擇服} else if(money > act.get_Money()){// 判斷取款數(shù)額是否大于余額

      dispose();

      JOptionPane.showMessageDialog(null, “超過已有的錢數(shù),請(qǐng)重新輸入你想取的錢!”,“消息”, JOptionPane.INFORMATION_MESSAGE);

      this.setVisible(false);

      } Selection s = new Selection(“選擇服務(wù)”, act);} 4.3.4 修改密碼模塊設(shè)計(jì)

      在修改密碼模塊中,首先你必須要輸入你的舊密碼是否正確,否則就會(huì)報(bào)錯(cuò)。再一個(gè)就是要兩次輸入你的新密碼,且兩次藥匹配,否則也會(huì)報(bào)錯(cuò),然后再重新回到修改密碼的界面。在修改密碼時(shí)用到的方法為:

      /*判斷舊密碼是是否正確*/ if(pwd2.equals(act.get_Password())){ /*判斷兩次輸入的密碼是否匹配*/

      if(pwd3.equals(pwd4)){

      /*如果都正確的話就設(shè)置新密碼*/

      act.setPassword(pwd3);

      dispose();

      Selection s = new Selection(“選擇”,act);}else{

      dispose();

      ErrorWarn2 ew2 = new ErrorWarn2(“消息”,act);

      } }else{

      this.setVisible(false);

      ErrorWarn3 ew1 = new ErrorWarn3(“消息”,act);

      dispose();} 4.3.5 查詢余額模塊設(shè)計(jì)

      在查詢余額模塊設(shè)計(jì)中, 和其他的界面的結(jié)構(gòu)相差不多。有一個(gè)余額顯示和一個(gè)按鈕還有標(biāo)簽組成的。查詢時(shí)用到的方法:

      Query(String s, Account act){// 構(gòu)造函數(shù)

      super(s);this.act = act;button = new Button(“確定”);// TextField tf = new TextField(6);Panel panel1 = new Panel();Panel panel = new Panel();panel1.add(new Label(“你的余額為: ” + act.get_Money()));// 查詢余額的button.addActionListener(this);panel.add(button);this.add(panel);this.add(panel1);this.setLayout(new GridLayout(2, 1));this.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){

      System.exit(0);} });setBounds(300, 300, 300, 300);setVisible(true);

      方法

      } 4.3.6 退卡模塊設(shè)計(jì)

      在退卡模塊設(shè)計(jì)中,這個(gè)方法就更加的簡(jiǎn)單了,它只是用了if(e.getSource()==button4){//退出

      dispose();JOptionPane.showMessageDialog(null, “謝謝使用!”, “消息!”,JOptionPane.INFORMATION_MESSAGE);System.exit(0);} 這個(gè)方法就可以實(shí)現(xiàn)了,這里就不再多說了。

      4.4 異常處理情況說明

      (1)打開、保存文件時(shí)的異常處理 需要處理的異常:IOException(2)數(shù)據(jù)庫訪問時(shí)的異常處理 需要處理的異常:SQLException(3)加載類時(shí)的異常處理

      需要處理的異常:ClassNotFindException,當(dāng)應(yīng)用程序試圖使用Class類中的forName方法通過字符串名加載類時(shí),但是沒有找到具有指定名稱的類的定義。

      (4)加載URL時(shí)的異常

      需要處理的異常:MalformedURLException,拋出這一異常指示出現(xiàn)了錯(cuò)誤的 URL?;蛘咴谝?guī)范字符串中找不到任何合法協(xié)議,或者無法分析字符串。系統(tǒng)實(shí)現(xiàn)與測(cè)試

      (1)編譯運(yùn)行程序后,將會(huì)看到如下的界面,如圖2所示。如果輸入的密碼或卡號(hào)不正確的話就會(huì)報(bào)右下圖的錯(cuò)誤。

      圖2 主界面—登陸頁面

      (2)選擇服務(wù)界面效果

      當(dāng)輸入的密碼和卡號(hào)正確,單擊確定后就會(huì)進(jìn)入到選擇服務(wù)的界面,如圖3所示。然后就可以選擇所需要的服務(wù)了。

      圖3 選擇服務(wù)界面

      (3)取款界面,如圖4所示。

      圖4 取款界面

      當(dāng)輸入的錢數(shù)不是100的倍數(shù)或每一次大于5000時(shí)就會(huì)報(bào)圖5的錯(cuò)誤。

      圖5 輸入錯(cuò)誤1 當(dāng)取款時(shí)如果超過卡里的余額的話就會(huì)報(bào)圖6的錯(cuò)誤。

      圖6 輸入錯(cuò)誤2(4)查詢余額界面,如圖7所示。

      圖7 查詢余額界面

      (5)修改密碼界面,如圖8所示。

      圖8 修改密碼界面

      當(dāng)輸入的初始密碼不正確會(huì)報(bào)圖9所示錯(cuò)誤。

      圖9 輸入錯(cuò)誤1

      當(dāng)2次輸入的新密碼不同會(huì)報(bào)圖10所示錯(cuò)誤。

      圖10 輸入錯(cuò)誤2

      經(jīng)過測(cè)試,所有的功能基本上都實(shí)現(xiàn)了,而且運(yùn)行正常。課程設(shè)計(jì)總結(jié)

      6.1 遇到的問題及解決辦法

      在此次課程設(shè)計(jì)中遇到了一些問題,如:對(duì)于面向?qū)ο蟮姆椒私獠粔蛲笍?,運(yùn)用到實(shí)際的軟件開發(fā)中存在著困難;對(duì)于Java語言,只學(xué)習(xí)到了一些最基本的知識(shí),這導(dǎo)致編寫程序時(shí)經(jīng)常出現(xiàn)一些語法錯(cuò)誤,而且要在短時(shí)間內(nèi)用Java語言來設(shè)計(jì)一個(gè)具體的系統(tǒng)是一個(gè)較大的挑戰(zhàn);還有對(duì)于正規(guī)開發(fā)一個(gè)系統(tǒng)的流程不熟悉,適應(yīng)起來比較慢,編寫各個(gè)模塊相對(duì)應(yīng)的操作時(shí),自己感覺難以動(dòng)手,這表明所學(xué)的知識(shí)不能靈活運(yùn)用到實(shí)際中。

      對(duì)于以上的問題,自己有清楚的認(rèn)識(shí),解決辦法是需要大量閱讀相關(guān)的書籍,對(duì)于書上以及網(wǎng)站上下載的資料中的Java實(shí)例必須有清楚的理解,還有就是多跟精通此方面的老師和同學(xué)交流,取其精華。對(duì)于實(shí)際動(dòng)手能力與系統(tǒng)開發(fā)的流程的適應(yīng),必須多進(jìn)

      行實(shí)際的練習(xí)與操作,才能有大的進(jìn)步。

      6.2 心得體會(huì)

      在這次的課程設(shè)計(jì)中,主要運(yùn)用了Java語言的界面設(shè)計(jì)、異常處理、、Awt控件、Swing控件,輸入輸出流等,綜合運(yùn)用了Java語言。深刻感受到了面向?qū)ο笳Z言中類庫的強(qiáng)大功能,掌握了運(yùn)用Java中的類實(shí)現(xiàn)某些基本功能,并學(xué)會(huì)了自己查詢使用類的方法,為以后的面向?qū)ο笳Z言的自學(xué)奠定了基礎(chǔ)。

      通過這次課程設(shè)計(jì)我學(xué)到了一些東西,這次的課程設(shè)計(jì)中,主要是運(yùn)用JAVA語言來編寫一個(gè)小的應(yīng)用程序,當(dāng)然還可以用其他的技術(shù)來輔助。在這個(gè)小應(yīng)用程序當(dāng)中,我用了Java外還用了Swing控件。輸入輸出流等。由于以前學(xué)的不是很扎實(shí),而且還有些知識(shí)我們都是沒有學(xué)過的,這就要求我們?nèi)ゲ橄嚓P(guān)的書籍,還有就是和同學(xué)之間的交流。正因?yàn)檫@樣,才鍛煉了我的自學(xué)的能力,還有就是加深了我對(duì)各個(gè)知識(shí)點(diǎn)的認(rèn)識(shí),并且提高了我對(duì)專業(yè)的學(xué)習(xí)的興趣,為我以后的學(xué)習(xí)打下了基礎(chǔ)。此外,還感受到了面向?qū)ο笳Z言的類庫的強(qiáng)大的功能,掌握了運(yùn)用JAVA中的類實(shí)現(xiàn)某些基本功能,并學(xué)會(huì)了自己查詢使用類的方法,也就是要會(huì)用API文檔,為以后更好的學(xué)習(xí)面向?qū)ο笳Z言奠定了基礎(chǔ)。

      通過努力,這次課程設(shè)計(jì)終于完成了,在這個(gè)過程當(dāng)中,學(xué)到了很多的知識(shí),同時(shí)也感謝我的同學(xué)的幫助和指導(dǎo)。在以后的學(xué)習(xí)當(dāng)中,我會(huì)更加努力的學(xué)習(xí)好專業(yè)知識(shí),并將所學(xué)的知識(shí)用于實(shí)踐當(dāng)中去,以便牢固掌握知識(shí)。

      參考文獻(xiàn)

      [1] 王萌,劉婧,來賓著.JAVA程序設(shè)計(jì)[M]北京 冶金工業(yè)出版社,2004 [2] 黃聰明 精通 JAVA2程序設(shè)計(jì)[M]北京:清華大學(xué)出版社,2004.4 [3] 王文濤,袁海燕 JAVA實(shí)用程序設(shè)計(jì)100例[M]北京:人民郵電出版社,2005.5 [4] 雍俊海 JAVA程序設(shè)計(jì)[M]北京:清華大學(xué)出版社,2006.8 [5] 劉寶林 JAVA程序設(shè)計(jì)與案例[M]北京:高等教育出版社,2006.11 附錄(源碼)

      /******登陸頁面首窗口*******/ import javax.swing.*;import java.awt.*;import javax.swing.border.*;import java.awt.event.*;

      import java.io.*;

      public class WindowBox extends Frame implements ActionListener { Box baseBox, box1, box2;TextField tf1, tf2;Button button1;Button button2;

      WindowBox(String s){// 構(gòu)造方法

      super(s);tf1 = new TextField(6);tf2 = new TextField(6);box1 = Box.createVerticalBox();

      box1.add(new Label(“請(qǐng)輸入你的卡號(hào)”));// 輸入卡號(hào) box1.add(Box.createVerticalStrut(8));box1.add(new Label(“請(qǐng)輸入你的密碼”));// 輸入密碼 box2 = Box.createVerticalBox();box2.add(tf1);// box2.add(new TextField(16));

      box2.add(Box.createVerticalStrut(8));box2.add(tf2);// box2.add(new TextField(16));

      baseBox = Box.createHorizontalBox();baseBox.add(box1);baseBox.add(Box.createHorizontalStrut(10));baseBox.add(box2);add(baseBox);button1 = new Button(“確定”);// 加入按鈕 button1.addActionListener(this);add(button1);button2 = new Button(“退卡”);// 退卡按鈕 button2.addActionListener(this);add(button2);setLayout(new FlowLayout());/* 監(jiān)聽器 */

      this.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){

      System.exit(0);} });setBounds(300,300,220,220);setVisible(true);} public void actionPerformed(ActionEvent e){

      Account act;String card;String pwd;act = new Account(“000000”, “Devil”, “123456”, 50000);// 初始化 /* 選擇各種服務(wù) */

      if(e.getSource()== button1){

      String number1, number2;// 輸入的兩個(gè)卡號(hào)和密碼的變量 number1 = tf1.getText();number2 = tf2.getText();/* 判斷兩次輸入的卡號(hào)和密碼是否正確 */

      if((act.get_Code().equals(number1))

      &&(act.get_Password().equals(number2))){ dispose();Selection s = new Selection(“選擇服務(wù)”, act);} else { dispose();

      JOptionPane.showMessageDialog(null, “您輸入的卡號(hào)或密碼不正確,請(qǐng)核實(shí)后再確定”,“消息!”, JOptionPane.INFORMATION_MESSAGE);

      // 報(bào)輸入密碼或卡號(hào)不正確

      new WindowBox(“登錄界面”);

      }

      }

      if(e.getSource()== button2){

      System.exit(0);

      dispose();// 退出

      } } }

      /*************主函數(shù)****************/ public class ATM { public static void main(String[] args){

      new WindowBox(“登錄頁面”);} } /********* 選擇服務(wù)窗口 ***************/ import java.awt.*;import java.awt.event.*;

      public class Selection extends Frame implements ActionListener { Button button1, button2, button3, button4, button5;

      Panel p1 = new Panel();Panel p2 = new Panel();Panel p3 = new Panel();Panel p4 = new Panel();Panel p5 = new Panel();Panel p = new Panel();Account act;public Selection(){ } Selection(String s, Account act){ super(s);this.act = act;this.setLayout(null);this.setLayout(new GridLayout(6, 1));

      p.add(new Label(“請(qǐng)選擇你要的服務(wù)”));this.add(p);/* 各種服務(wù)功能 */

      button1 = new Button(“存款”);p1.add(button1);this.add(p1);button2 = new Button(“取款”);p2.add(button2);this.add(p2);button3 = new Button(“查詢余額”);p3.add(button3);this.add(p3);button4 = new Button(“退出”);p4.add(button4);this.add(p4);button5 = new Button(“修改密碼”);p5.add(button5);this.add(p5);this.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){

      System.exit(0);} });button2.addActionListener(this);button3.addActionListener(this);button4.addActionListener(this);button5.addActionListener(this);setBounds(300, 300, 300, 300);setVisible(true);validate();

      } } public void actionPerformed(ActionEvent e){

      } if(e.getSource()== button2){// 取款

      dispose();GetBalance gb = new GetBalance(“取款”, act);} if(e.getSource()== button3){// 查詢余額

      Query q = new Query(“查詢余額”, act);dispose();} else if(e.getSource()== button4){// 退出

      dispose();

      JOptionPane.showMessageDialog(null, “謝謝使用!”, “消息!”,JOptionPane.INFORMATION_MESSAGE);System.exit(0);} else if(e.getSource()== button5){// 修改密碼

      ChangePassword cp = new ChangePassword(“修改密碼”, act);dispose();} /**********取款功能************/ import javax.swing.*;import java.awt.*;import javax.swing.border.*;import java.awt.event.*;

      public class GetBalance extends Frame implements ActionListener { Box baseBox, box1, box2;Button button;TextField tf;Account act;

      GetBalance(String s, Account act){// 構(gòu)造函數(shù)

      super(s);this.act = act;

      button = new Button(“確定”);Panel panel = new Panel();Panel panel1 = new Panel();tf = new TextField(6);this.setLayout(new GridLayout(2, 1));panel1.add(new Label(“請(qǐng)輸入你想取錢的數(shù)目”));panel1.add(tf);panel.add(button);this.add(panel1);

      this.add(panel);button.addActionListener(this);this.addWindowListener(new WindowAdapter(){

      public void windowClosing(WindowEvent e){

      System.exit(0);

      } });setBounds(300, 300, 300, 300);this.setVisible(true);} public void actionPerformed(ActionEvent e){ // System.out.println(e.getActionCommand());

      double money;money = Double.parseDouble(tf.getText().trim());if(e.getSource()== button){

      if(act.get_Money()< 0){// 判斷余額是否為負(fù)

      dispose();JOptionPane.showMessageDialog(null, “余額為負(fù)數(shù)”, “消息”,JOptionPane.INFORMATION_MESSAGE);} else if(money <= act.get_Money()){// 取錢的數(shù)額不大于余額

      if(money % 100 == 0){

      dispose();

      JOptionPane.showMessageDialog(null, “取款成功!”, “消息”,JOptionPane.INFORMATION_MESSAGE);act.set_Balance(money);this.setVisible(false);Selection s = new Selection(“選擇服務(wù)”, act);}

      if((money % 100!= 0)||(money >= 5000)){// 取錢數(shù)為100的倍數(shù)或不大于5000

      dispose();

      JOptionPane.showMessageDialog(null,的錢!“, ”消息“,務(wù)窗口

      ”每次只能取100的倍數(shù),而且不能超過5000,請(qǐng)重新輸入你想取

      JOptionPane.INFORMATION_MESSAGE);act.get_Money();this.setVisible(false);Selection s = new Selection(“選擇服務(wù)”, act);// 返回選擇服 // dispose();} } else if(money > act.get_Money()){// 判斷取款數(shù)額是否大于余額

      dispose();JOptionPane.showMessageDialog(null, “超過已有的錢數(shù),請(qǐng)重新輸入

      你想取的錢!”,“消息”, JOptionPane.INFORMATION_MESSAGE);

      this.setVisible(false);口

      Selection s = new Selection(“選擇服務(wù)”, act);// 返回選擇服務(wù)窗

      } } } }

      /********修改密碼功能*************/ import java.awt.Button;import java.awt.Frame;import java.awt.GridLayout;import java.awt.Label;import java.awt.Panel;import java.awt.TextField;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import javax.swing.JOptionPane;

      public class ChangePassword extends Frame implements ActionListener { Panel panel1 = new Panel();Panel panel2 = new Panel();Panel panel3 = new Panel();Panel panel = new Panel();TextField tf4, tf5, tf6;Button button;Account act;ChangePassword(String s, Account act){

      super(s);

      this.act = act;

      tf4 = new TextField(6);

      tf5 = new TextField(6);

      tf6 = new TextField(6);

      button = new Button(“確定”);button.addActionListener(this);/* 建立新密碼 */

      panel1.add(new Label(“請(qǐng)輸入你的舊密碼:”));panel1.add(tf4);panel2.add(new Label(“請(qǐng)輸入你的新密碼:”));panel2.add(tf5);

      } panel3.add(new Label(“請(qǐng)?jiān)俅屋斎肽愕男旅艽a”));panel3.add(tf6);panel.add(button);this.add(panel1);this.add(panel2);this.add(panel3);this.add(panel);setLayout(new GridLayout(4, 1));setBounds(300, 300, 300, 300);this.setVisible(true);/* 窗口事件 */

      this.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){

      System.exit(0);} });/* 判斷事件源,看條件是否成立再修改密碼 */

      public void actionPerformed(ActionEvent e){ if(e.getSource()== button){

      String pwd2, pwd3, pwd4;

      pwd2 = tf4.getText();

      pwd3 = tf5.getText();

      pwd4 = tf6.getText();

      if(pwd2.equals(act.get_Password())){// 判斷舊密碼是否正確

      if(pwd3.equals(pwd4)){// 判斷兩次輸入的新密碼是個(gè)匹配

      act.setPassword(pwd3);// 啟用新的密碼

      dispose();

      JOptionPane.showMessageDialog(null, “密碼修改成功!”, “消息

      JOptionPane.INFORMATION_MESSAGE);

      ”,Selection s = new Selection(“選擇”, act);// 返回服務(wù)窗口 } else { this.setVisible(true);

      // ErrorWarn2 ew = new ErrorWarn2(“消息”,act);dispose();JOptionPane.showMessageDialog(null, “兩次密碼輸入不匹配”, “

      JOptionPane.INFORMATION_MESSAGE);

      消息”,Selection s = new Selection(“選擇”, act);// 返回服務(wù)窗口

      } } else { this.setVisible(false);dispose();

      “,} JOptionPane.showMessageDialog(null, ”初始密碼輸入錯(cuò)誤“, ”消息

      JOptionPane.INFORMATION_MESSAGE);

      Selection s = new Selection(“選擇”, act);// 返回選擇服務(wù)窗口

      } } } /**************查詢余額功能******************/ import javax.swing.*;import java.awt.*;import javax.swing.border.*;import java.awt.event.*;

      public class Query extends Frame implements ActionListener { Button button;Account act;

      Query(String s, Account act){// 構(gòu)造函數(shù)

      super(s);this.act = act;

      button = new Button(“確定”);// TextField tf = new TextField(6);Panel panel1 = new Panel();Panel panel = new Panel();

      panel1.add(new Label(“你的余額為: ” + act.get_Money()));// 查詢余額的方法

      // panel1.add(tf);

      button.addActionListener(this);

      panel.add(button);

      this.add(panel);

      this.add(panel1);

      this.setLayout(new GridLayout(2, 1));

      this.addWindowListener(new WindowAdapter(){

      public void windowClosing(WindowEvent e){

      System.exit(0);

      }

      });

      setBounds(300, 300, 300, 300);

      setVisible(true);} public void actionPerformed(ActionEvent e){

      if(e.getSource()== button){

      dispose();

      Selection s = new Selection(“選擇服務(wù)”, act);// 返回選擇服務(wù)窗口

      } } }

      /***********賬戶****************/ import java.io.*;/* 該類為實(shí)現(xiàn)客戶信息及部分功能 */ public class Account {

      {

      } private String code = null;// 信用卡號(hào) private String name = null;// 客戶姓名

      private String password = null;// 客戶密碼 private double money = 0.0;// 卡里金額

      public Account(String code, String name, String password, double money)

      } this.code = code;this.name = name;this.password = password;this.money = money;public String get_Code(){// 取得卡號(hào)

      return code;} public String get_Name(){// 取得名字

      return name;} public String get_Password(){// 取得密碼

      return password;} public double get_Money(){// 重置余額

      return money;} /* 得到剩余的錢的數(shù)目 */

      protected void set_Balance(double mon){ money-= mon;} /* 重置密碼的方法 */

      public String setPassword(String pwd){ password = pwd;return password;}

      第三篇:Java期中課程設(shè)計(jì)(ATM機(jī))報(bào)告

      Java期中課程設(shè)計(jì)報(bào)告

      報(bào)告題目:ATM模擬程序

      姓名:

      學(xué)號(hào):2009118246 學(xué)院:信息科學(xué)與技術(shù)學(xué)院

      專業(yè):計(jì)算機(jī)科學(xué)與技術(shù)

      一、課程設(shè)計(jì)目的和內(nèi)容

      目的:課程設(shè)計(jì)的主要目的是結(jié)合面向?qū)ο蟪绦蛟O(shè)計(jì)課程,培養(yǎng)面向?qū)ο筌浖_發(fā)的思維,初步了解軟件開發(fā)的一般流程,提高用JAVA編程的實(shí)際動(dòng)手能力并增強(qiáng)大家對(duì)面向?qū)ο蟮牧私狻?/p>

      內(nèi)容:設(shè)計(jì)ATM取款機(jī)主要包括登錄頁面、選擇服務(wù)、存款、取款、查詢余額、修改密碼和退出等功能。注:各種按鈕的事件和功能簡(jiǎn)單模擬ATM取款機(jī)的要求。

      二、系統(tǒng)需求分析

      1、功能需求分析(1)模擬ATM柜員機(jī)程序;

      (2)修改密碼。當(dāng)用戶需要修改密碼時(shí),可以用這個(gè)功能,新密碼長度不小于6位,不允許出現(xiàn)6位完全相同的情況,只有舊密碼正確,新密碼符合要求,且兩次輸入相同的情況下才可以成功修改密碼。(3)取款。用戶根據(jù)自己需要取多少錢,輸入要取的金額,每次取款金額為100的倍數(shù),總額不超過5000元,支取金額不允許透支。(4)查詢余額。用戶需要知道自己帳戶還剩多少錢時(shí),可以查詢自己帳戶的余額。

      (5)存款。用戶可以存款,金額為100的倍數(shù),不能出現(xiàn)負(fù)存款。(6)鎖機(jī)。當(dāng)用戶3次輸入密碼錯(cuò)誤時(shí),停止操作。

      2、設(shè)計(jì)需求分析

      A界面設(shè)計(jì)簡(jiǎn)潔、友好、美觀大方。B操作簡(jiǎn)單、快捷方便。

      C信息分類清晰、準(zhǔn)確。3.ATM功能模塊圖

      4、約束條件(1)設(shè)計(jì)工具

      開發(fā)工具:NetBeans 運(yùn)行環(huán)境:Windows 7(2)界面要求

      以Windows窗口形式顯示,標(biāo)題欄為ATM自動(dòng)取款機(jī)不同的窗口中有不同的按鈕和選擇菜單。

      三、系統(tǒng)設(shè)計(jì)

      1、功能結(jié)構(gòu)模塊圖

      我們所設(shè)計(jì)的ATM柜員機(jī)主要是由登錄頁面模塊還由選擇服務(wù)模塊組成,其中選擇服務(wù)模塊又由取款模塊、查詢余額模塊、修改密碼模塊、退卡模塊組成。其功能結(jié)構(gòu)圖如下所示:

      2、業(yè)務(wù)流程圖

      四、詳細(xì)設(shè)計(jì)

      1、界面設(shè)計(jì)概述

      我設(shè)計(jì)的ATM機(jī),主要應(yīng)用java圖形用戶界面開發(fā)的知識(shí),在netbeans上根據(jù)要求來創(chuàng)建窗體,窗體整個(gè)框架使用JFrame類構(gòu)造,JFrame有自己的外邊框和自己的標(biāo)題,創(chuàng)建JFrame時(shí)可以指定其窗口標(biāo)題,在創(chuàng)建窗口時(shí),好多代碼是自動(dòng)生成,我只是在其基礎(chǔ)上添加一些約束條件的代碼,比如說每次輸入的取款金額必須為100的整數(shù),當(dāng)密碼輸入三次錯(cuò)誤,便鎖卡等代碼需要自己編寫,這里我會(huì)主要說明自己編寫的那部分代碼,也是程序中比較重要的部分,其中有許多Swing組件重復(fù)應(yīng)用,代碼相同,在報(bào)告中不重復(fù)說明,比如說數(shù)字“0-9”的代碼,“退卡”按鈕的代碼等。

      1、各模塊界面設(shè)計(jì)與程序設(shè)計(jì)

      主模塊設(shè)計(jì):

      主函數(shù)中定義了6個(gè)靜態(tài)變量:密碼(thePassword),余額(balance),新密碼1(password1),新密碼2(password2),其中密碼為String類型,余額是double型,計(jì)數(shù)器(counter),用來記密碼的輸入次數(shù),整型,初始化為0,dataStr是String類型,初始化為空字符串,還定義了FileWriter()和FileReader()方法分別用來寫和讀ATM在交易中的余額和密碼也就是dataStr,使用戶的余額和密碼變成變化后的值。在主方法中首先要調(diào)用一次FileReader()方法,獲取余額和密碼。程序代碼如下:

      import java.io.*;public class Atm {

      /**

      * @param args the command line arguments

      */

      static String thePassword;

      static double balance;

      static int counter = 0;

      static String password1;

      static String password2;

      static String filePath = “./temp.txt”;

      static File file = new File(filePath);static String dataStr = “";//寫文件

      static void FileWriter(){

      String dataStr;

      try{

      if(!file.exists())

      file.createNewFile();

      dataStr = balance + ”,“ + thePassword + ”,“;

      byte[] data = dataStr.getBytes();

      FileOutputStream fos = new FileOutputStream(file);

      fos.write(data);

      fos.close();

      }

      catch(Exception e){

      e.printStackTrace();

      }

      }

      //讀文件

      static void FileReader(){

      try{

      if(!file.exists())

      file.createNewFile();

      byte[] data = new byte[64];

      FileInputStream fis = new FileInputStream(file);

      int rs = 0;

      while((rs = fis.read(data))> 0){

      dataStr += new String(data,0,rs);

      }

      if(!dataStr.isEmpty()){

      String[] sets = dataStr.split(”,“);

      balance = Double.parseDouble(sets[0]);

      thePassword = sets[1];

      }

      fis.close();

      }

      catch(Exception e){

      e.printStackTrace();

      }

      }

      public static void main(String args[]){

      FileReader();//調(diào)用讀文件

      try {

      for(javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()){

      if(”Nimbus“.equals(info.getName())){

      javax.swing.UIManager.setLookAndFeel(info.getClassName());

      break;

      }

      }

      } catch(ClassNotFoundException ex){

      java.util.logging.Logger.getLogger(AtmWelcome.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);

      } catch(InstantiationException ex){

      java.util.logging.Logger.getLogger(AtmWelcome.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);

      } catch(IllegalAccessException ex){

      java.util.logging.Logger.getLogger(AtmWelcome.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);

      } catch(javax.swing.UnsupportedLookAndFeelException ex){

      java.util.logging.Logger.getLogger(AtmWelcome.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);

      } AtmWelcome aw=new AtmWelcome();aw.setSize(390,290);

      aw.setVisible(true);

      } }

      1)待機(jī)界面

      這個(gè)界面可以說是一個(gè)待機(jī)界面,點(diǎn)擊“插卡”按鈕,進(jìn)入登陸界面,其過程相當(dāng)于ATM讀取磁卡信息的過程,利用了Swing控件中的標(biāo)簽和按鈕,在“插卡”按鈕添加鼠標(biāo)點(diǎn)擊事件代碼如下:

      private void jButton1MouseClicked(java.awt.event.MouseEvent evt){

      // TODO add your handling code here:

      new AtmEnter().setVisible(true);//進(jìn)入登陸界面

      this.setVisible(false);}

      2)登陸界面

      這個(gè)登陸界面,用戶名和賬號(hào)在插卡時(shí)相當(dāng)于系統(tǒng)已經(jīng)讀取,所以下面這個(gè)界面只是密碼驗(yàn)證,輸入正確的密碼,若正確,則進(jìn)入主交易界面,若錯(cuò)誤則進(jìn)入密碼錯(cuò)誤,重新輸入,若輸入3次錯(cuò)誤,則進(jìn)入鎖卡界面,具體界面和程序代碼如下所示:

      “確定”按鈕的鼠標(biāo)點(diǎn)擊事件代碼(用戶三次輸入錯(cuò)誤判斷程序):

      private void jButton11MouseClicked(java.awt.event.MouseEvent evt){

      // TODO add your handling code here:

      int l=jPasswordField1.getText().length();

      if(l==6&&jPasswordField1.getText().equals(Atm.thePassword))

      {

      new AtmEnterSuccess().setVisible(true);

      this.setVisible(false);}

      else if(Atm.counter<2)

      {new AtmPasswordError().setVisible(true);

      this.setVisible(false);

      Atm.counter++;

      }

      else{new AtmLock().setVisible(true);

      this.setVisible(false);

      }

      }

      “數(shù)字0-9”按鈕的鼠標(biāo)點(diǎn)擊事件代碼:

      public void setNumber(String c){

      jPasswordField1.setText(jPasswordField1.getText()+c);

      } private void jButton4MouseClicked(java.awt.event.MouseEvent evt){ // TODO add your handling code here:

      setNumber(”1“);

      }

      private void jButton1MouseClicked(java.awt.event.MouseEvent evt){ // TODO add your handling code here:

      setNumber(”2“);}

      private void jButton5MouseClicked(java.awt.event.MouseEvent evt){ // TODO add your handling code here:

      setNumber(”3“);}

      private void jButton3MouseClicked(java.awt.event.MouseEvent evt){ // TODO add your handling code here:

      setNumber(”4“);}

      private void jButton2MouseClicked(java.awt.event.MouseEvent evt){ // TODO add your handling code here:

      setNumber(”5“);}

      private void jButton6MouseClicked(java.awt.event.MouseEvent evt){ // TODO add your handling code here:

      setNumber(”6“);}

      private void jButton7MouseClicked(java.awt.event.MouseEvent evt){

      // TODO add your handling code here:

      setNumber(”7“);}

      private void jButton8MouseClicked(java.awt.event.MouseEvent evt){

      // TODO add your handling code here:

      setNumber(”8“);}

      private void jButton9MouseClicked(java.awt.event.MouseEvent evt){

      // TODO add your handling code here:

      setNumber(”9“);}

      private void jButton12MouseClicked(java.awt.event.MouseEvent evt){

      // TODO add your handling code here:

      setNumber(”0“);}

      “退卡”按鈕的鼠標(biāo)點(diǎn)擊事件代碼:

      private void jButton10MouseClicked(java.awt.event.MouseEvent evt){

      // TODO add your handling code here:

      new AtmWelcome().setVisible(true);//返回到待機(jī)界面

      this.setVisible(false);}

      “更正”按鈕的鼠標(biāo)點(diǎn)擊事件代碼:

      private void jButton14MouseClicked(java.awt.event.MouseEvent evt){

      // TODO add your handling code here:

      int l = jPasswordField1.getText().length();

      if(l!= 0)

      jPasswordField1.setText(jPasswordField1.getText().substring(0,l-1));}

      3)主交易界面

      這個(gè)界面分別設(shè)計(jì)了“查詢余額”按鈕,“取款”按鈕,“修改密碼”按鈕等,點(diǎn)擊時(shí)分別進(jìn)入相應(yīng)的功能界面,具體代碼如下所示:“查詢余額”按鈕的鼠標(biāo)點(diǎn)擊事件代碼:

      private void jButton1MouseClicked(java.awt.event.MouseEvent evt){

      // TODO add your handling code here:

      new AtmAccountBalance().setVisible(true);//進(jìn)入顯示余額界面

      this.setVisible(false);}

      “取款”按鈕的鼠標(biāo)點(diǎn)擊事件代碼:

      private void jButton4MouseClicked(java.awt.event.MouseEvent evt){

      // TODO add your handling code here:

      new AtmWithdrawl().setVisible(true);//進(jìn)入取款界面

      this.setVisible(false);}

      “存款”的鼠標(biāo)點(diǎn)擊事件代碼:

      private void jButton3MouseClicked(java.awt.event.MouseEvent evt){

      // TODO add your handling code here:

      new AtmDeposit().setVisible(true);//進(jìn)入存款界面

      this.setVisible(false);}

      “修改密碼”的鼠標(biāo)點(diǎn)擊事件代碼:

      private void jButton6MouseClicked(java.awt.event.MouseEvent evt){

      // TODO add your handling code here:

      new AtmPasswordChange().setVisible(true);//進(jìn)入密碼修改界面

      this.setVisible(false);}

      4)密碼錯(cuò)誤界面

      當(dāng)在登錄界面登陸時(shí),若密碼錯(cuò)誤則出現(xiàn)密碼錯(cuò)誤界面,這個(gè)界面上點(diǎn)擊“繼續(xù)” 按鈕則返回到登陸界面重新輸入密碼,具體代碼如下: “繼續(xù)”按鈕的鼠標(biāo)點(diǎn)擊事件代碼:

      private void jButton2MouseClicked(java.awt.event.MouseEvent evt){

      // TODO add your handling code here:

      new AtmEnter().setVisible(true);//返回到登陸界面

      this.setVisible(false);}

      5)鎖卡界面

      密碼輸錯(cuò)3次,卡鎖,代碼見登陸界面的“確定”按鈕點(diǎn)擊事件代碼。6)余額查詢界面

      點(diǎn)擊“繼續(xù)”則返回到主交易界面,具體的代碼如下: 顯示余額的代碼:

      public AtmAccountBalance(){

      initComponents();

      java.awt.EventQueue.invokeLater(new Runnable(){

      public void run(){

      setVisible(true);

      }

      });

      jLabel1.setText(”當(dāng)前余額:“+ Atm.balance);

      Atm.FileWriter();} “繼續(xù)”按鈕的鼠標(biāo)點(diǎn)擊代碼如下:

      private void jButton1MouseClicked(java.awt.event.MouseEvent evt){

      // TODO add your handling code here:

      new AtmEnterSuccess().setVisible(true);//進(jìn)入主交易界面

      this.setVisible(false);}

      7)取款界面

      取款界面規(guī)定單次最多取款5000元,若所取金額在界面上有,則直接點(diǎn)擊相應(yīng)按鈕,若沒有,則點(diǎn)擊“其他面額”按鈕,然后輸入自己想取得面額,具體事件代碼如下:

      100,300,500,1000,2000按鈕的鼠標(biāo)點(diǎn)擊事件代碼如下:

      private void jButton1MouseClicked(java.awt.event.MouseEvent evt){

      // TODO add your handling code here:

      if(Atm.balance>=Double.valueOf(jButton1.getText()))

      {

      new AtmWithdrawlSuccess().setVisible(true);//進(jìn)入取款成功界面

      this.setVisible(false);

      Atm.balance=Atm.balance-Double.valueOf(jButton1.getText());

      Atm.FileWriter();}

      else{ new AtmBalanceNotEnough().setVisible(true);//進(jìn)入余額不足界面

      this.setVisible(false);

      } }

      private void jButton3MouseClicked(java.awt.event.MouseEvent evt){

      // TODO add your handling code here:

      if(Atm.balance>=Double.valueOf(jButton3.getText()))

      {

      new AtmWithdrawlSuccess().setVisible(true);//進(jìn)入取款成功界面

      this.setVisible(false);

      Atm.balance=Atm.balance-Double.valueOf(jButton3.getText());

      Atm.FileWriter();}

      else{ new AtmBalanceNotEnough().setVisible(true);//進(jìn)入余額不足界面

      this.setVisible(false);

      } }

      private void jButton5MouseClicked(java.awt.event.MouseEvent evt){

      // TODO add your handling code here

      if(Atm.balance>=Double.valueOf(jButton5.getText()))

      {

      new AtmWithdrawlSuccess().setVisible(true);//進(jìn)入取款成功界面

      this.setVisible(false);

      Atm.balance=Atm.balance-Double.valueOf(jButton5.getText());

      Atm.FileWriter();}

      else{ new AtmBalanceNotEnough().setVisible(true);//進(jìn)入余額不足界面

      this.setVisible(false);

      } }

      private void jButton4MouseClicked(java.awt.event.MouseEvent evt){

      // TODO add your handling code here:

      if(Atm.balance>=Double.valueOf(jButton4.getText()))

      {

      new AtmWithdrawlSuccess().setVisible(true);//進(jìn)入取款成功界面

      this.setVisible(false);

      Atm.balance=Atm.balance-Double.valueOf(jButton4.getText());

      Atm.FileWriter();}

      else{ new AtmBalanceNotEnough().setVisible(true);//進(jìn)入余額不足界面

      this.setVisible(false);

      } }

      private void jButton6MouseClicked(java.awt.event.MouseEvent evt){

      // TODO add your handling code here:

      if(Atm.balance>=Double.valueOf(jButton6.getText()))

      {

      new AtmWithdrawlSuccess().setVisible(true);//進(jìn)入取款成功界面

      this.setVisible(false);

      Atm.balance=Atm.balance-Double.valueOf(jButton6.getText());

      Atm.FileWriter();}

      else{ new AtmBalanceNotEnough().setVisible(true);//進(jìn)入余額不足界面

      this.setVisible(false);

      } }

      “其他面額”按鈕鼠標(biāo)點(diǎn)擊事件代碼:

      private void jButton2MouseClicked(java.awt.event.MouseEvent evt){

      // TODO add your handling code here:

      new AtmWithdrawlInput().setVisible(true);//輸入取款金額界面

      this.setVisible(false);}

      “返回”按鈕的鼠標(biāo)點(diǎn)擊事件代碼:

      private void jButton7MouseClicked(java.awt.event.MouseEvent evt){

      // TODO add your handling code here:

      new AtmEnterSuccess().setVisible(true);//返回主交易界面

      this.setVisible(false);}

      8)取款金額輸入界面

      這個(gè)界面是當(dāng)用戶所想取得金額在界面上沒有的時(shí)候,便需要用戶自己輸入,規(guī)定輸入的金額必須是100的倍數(shù),且不大于5000元,具體事件代碼如下所示:(其中按鈕0-9的代碼,“退卡”按鈕等的代碼和前面相同)

      “確定”按鈕的鼠標(biāo)事件代碼:

      private void jButton11MouseClicked(java.awt.event.MouseEvent evt){

      // TODO add your handling code here:

      double a=Double.valueOf(jTextField1.getText());

      if(Atm.balance>=a&&a%100==0&&a<=5000.0){

      new AtmWithdrawlSuccess().setVisible(true);//取款成功界面

      this.setVisible(false);

      Atm.balance=Atm.balance-Double.valueOf(jTextFiled1.getText());

      Atm.FileWriter();

      }

      if(a%100!=0||a>5000){

      new AtmWithdrawlInputError().setVisible(true);//取款金額輸入錯(cuò)誤界面

      this.setVisible(false);

      }

      else{

      new AtmBalanceNotEnough().setVisible(true);//余額不足

      this.setVisible(false);

      }

      }

      “取消”按鈕的鼠標(biāo)事件代碼:

      private void jButton13MouseClicked(java.awt.event.MouseEvent evt){

      // TODO add your handling code here:

      new AtmEnterSuccess().setVisible(true);//返回到主交易界面

      this.setVisible(false);}

      9)存款界面

      和取款界面類似,具體的代碼如下所示: 100,300,500,1000,2000按鈕的鼠標(biāo)事件代碼:

      private void jButton1MouseClicked(java.awt.event.MouseEvent evt){

      // TODO add your handling code here:

      new AtmDepositSuccess().setVisible(true);//存款成功界面

      this.setVisible(false);

      Atm.balance=Atm.balance+Double.valueOf(jButton1.getText());

      Atm.FileWriter();}

      private void jButton3MouseClicked(java.awt.event.MouseEvent evt){

      // TODO add your handling code here:

      new AtmDepositSuccess().setVisible(true);

      this.setVisible(false);

      Atm.balance=Atm.balance+Double.valueOf(jButton3.getText());

      Atm.FileWriter();}

      private void jButton5MouseClicked(java.awt.event.MouseEvent evt){

      // TODO add your handling code here:

      new AtmDepositSuccess().setVisible(true);

      this.setVisible(false);

      Atm.balance=Atm.balance+Double.valueOf(jButton5.getText());

      Atm.FileWriter();}

      private void jButton4MouseClicked(java.awt.event.MouseEvent evt){

      // TODO add your handling code here:

      new AtmDepositSuccess().setVisible(true);

      this.setVisible(false);

      Atm.balance=Atm.balance+Double.valueOf(jButton4.getText());

      Atm.FileWriter();}

      private void jButton6MouseClicked(java.awt.event.MouseEvent evt){

      // TODO add your handling code here:

      new AtmDepositSuccess().setVisible(true);

      this.setVisible(false);

      Atm.balance=Atm.balance+Double.valueOf(jButton6.getText());

      Atm.FileWriter();}

      “其他面額”按鈕的鼠標(biāo)事件代碼:

      private void jButton2MouseClicked(java.awt.event.MouseEvent evt){

      // TODO add your handling code here:

      new AtmDepositInput().setVisible(true);//輸入存款金額界面

      this.setVisible(false);}

      10)輸入存款金額界面

      和存款界面2類似,具體的事件代碼如下: “確定”按鈕的鼠標(biāo)事件點(diǎn)擊代碼:

      private void jButton11MouseClicked(java.awt.event.MouseEvent evt){

      // TODO add your handling code here:

      String cs=jTextField1.getText();

      if(Double.valueOf(cs)%100==0&&Double.valueOf(cs)>0){

      new AtmDepositSuccess().setVisible(true);

      this.setVisible(false);

      Atm.balance=Atm.balance+Double.valueOf(cs);

      Atm.FileWriter();}

      else{new AtmDepositInputError().setVisible(true);//存款金額輸入錯(cuò)誤界面

      this.setVisible(false);

      } }

      11)密碼修改界面

      本來修改密碼是要輸入原密碼的,但我們?cè)谑褂肁TM時(shí),一開始就輸入了密碼,否則也不能進(jìn)入修改密碼界面,所以在這里直接輸入新密碼,連續(xù)兩次輸入,且兩次輸入的密碼相同,且6位密碼不完全相同,則修改密碼成功,否則失敗,具體代碼如下: “確定”按鈕的鼠標(biāo)事件代碼:

      private void jButton11MouseClicked(java.awt.event.MouseEvent evt){

      // TODO add your handling code here:

      String a=jPasswordField1.getText();

      Atm.password1=a;

      new AtmPasswordInAgain().setVisible(true);//進(jìn)入密碼確認(rèn)界面

      this.setVisible(false);}

      “返回”按鈕的鼠標(biāo)事件代碼:

      private void jButton10MouseClicked(java.awt.event.MouseEvent evt){

      // TODO add your handling code here:

      new AtmEnterSuccess().setVisible(true);

      this.setVisible(false);}

      12)密碼修改確認(rèn)界面

      第二次輸入新密碼,具體代碼如下: “確定”按鈕的鼠標(biāo)事件代碼:

      private boolean Samechars(String str)//若6位密碼相同,則返回false {

      if(str.equals(”000000“)==true || str.equals(”111111“)==true || str.equals(”222222“)==true || str.equals(”333333“)==true || str.equals(”444444“)==true || str.equals(”555555“)==true || str.equals(”666666“)==true || str.equals(”777777“)==true || str.equals(”888888“)==true || str.equals(”999999")==true)

      return true;

      else

      return false;}

      private void jButton11MouseClicked(java.awt.event.MouseEvent evt){

      // TODO add your handling code here:

      String b= jPasswordField1.getText();

      Atm.password2=b;

      int i = jPasswordField1.getText().length();

      if(i== 6 && Atm.password1.equals(b)&& Samechars(b)==false)

      {

      Atm.thePassword = b;

      Atm.FileWriter();

      new AtmPasswordChangeSuccess().setVisible(true);//進(jìn)入修改成功界面

      this.setVisible(false);

      }

      else

      { new AtmPasswordUnsucc().setVisible(true);//進(jìn)入失敗界面

      this.setVisible(false);}

      } 13)密碼修改成功界面

      當(dāng)兩次輸入的密碼相同,則彈出密碼修改成功界面,點(diǎn)擊“繼續(xù)”按鈕返回到主交易界面,退出系統(tǒng)則點(diǎn)擊“退卡”按鈕。代碼略。14)密碼修改失敗界面

      點(diǎn)擊“確定”按鈕,則返回到修改密碼界面,若放棄修改點(diǎn)擊“退卡”按鈕,若還想進(jìn)行其他交易,則點(diǎn)擊“確定”后,再點(diǎn)擊修改密碼界面的“返回”按鈕。

      “確定”按鈕的鼠標(biāo)點(diǎn)擊事件代碼:

      private void jButton2MouseClicked(java.awt.event.MouseEvent evt){

      // TODO add your handling code here:

      new AtmPasswordChange().setVisible(true);//返回到密碼修改界面

      this.setVisible(false);}

      15)存款成功界面

      點(diǎn)擊“繼續(xù)”則返回到主交易界面,“退出”則退出交易。16)存款失敗界面

      當(dāng)所存金額不是100的整數(shù)時(shí),則存款失敗,同樣點(diǎn)擊“返回”按鈕則返回到主交易界面,點(diǎn)擊“退卡”則退出交易。17)取款成功界面

      當(dāng)索取金額不大于5000,且是100的整數(shù),當(dāng)前余額不小于索取金額時(shí),則取款成功。

      18)取款失敗界面(余額不足)

      當(dāng)輸入的金額大于當(dāng)前余額,輸入的金額不大于5000且是100的倍數(shù),則彈出余額不足界面。19)取款失敗界面(輸入金額錯(cuò)誤)

      當(dāng)輸入的金額不是100的倍數(shù)且大于5000時(shí),出現(xiàn)此界面。

      五、參考文獻(xiàn)

      《Java應(yīng)用案例教程》張紅梅,姜曉剛等著

      清華大學(xué)出版社

      六、心得體會(huì)

      在這次的期中課程設(shè)計(jì)中,我主要運(yùn)用了Java語言的圖形用戶界面設(shè)計(jì)、異常處理、Swing控件,輸入輸出流等,綜合運(yùn)用了Java語言。我深刻感受到了面向?qū)ο笳Z言中類庫的強(qiáng)大功能,掌握了運(yùn)用Java中的類實(shí)現(xiàn)某些基本功能,在完成設(shè)計(jì)的同時(shí)培養(yǎng)了自己的編程思維,為以后做別的設(shè)計(jì)打下基礎(chǔ)。

      剛開始做ATM機(jī)課程設(shè)計(jì)的時(shí)候,我簡(jiǎn)直一點(diǎn)頭緒也沒有,我想著自己編程一直都那么差,怎么可能完成這么難的設(shè)計(jì),但是這是期中考試設(shè)計(jì),肯定得交啊,所以我不得不圖書館借書看,邊看邊做,在做的過程中,我才知道java不只是寫代碼,還有許多其他的功能,我發(fā)現(xiàn)我對(duì)專業(yè)課不像以前那么的排斥了,還有感覺通過自己查詢相關(guān)書籍去實(shí)踐以及和同學(xué)交流獲取的知識(shí)更鞏固,我不再那么討厭編程了,我覺得無論什么事情,只要自己愿意去嘗試,并且盡自己最大努力去做,總會(huì)有所收獲的。本來一直認(rèn)為這門專業(yè)對(duì)女生來說學(xué)起來很吃力,很困難,但是現(xiàn)在又有了信心,差的人可以付出更多的努

      力去彌補(bǔ)自己的不足,這樣就可以不被落下了。在以后的學(xué)習(xí)中,我會(huì)更加努力,我覺得java學(xué)習(xí)一定要理論與實(shí)踐相結(jié)合,才能更好地掌握知識(shí)。

      第四篇:ATM取款機(jī)java課程設(shè)計(jì)

      學(xué)

      JAVA 課程設(shè)計(jì)報(bào)告

      目: 《ATM柜員機(jī)》課程設(shè)計(jì)

      學(xué)

      院:

      信 息 工 程 學(xué) 院

      業(yè):

      計(jì)算機(jī)科學(xué)與技術(shù)

      指導(dǎo)老師:

      二0一三年六月

      目錄 課程設(shè)計(jì)過程概述.......................................................................................3 2 課程設(shè)計(jì)題目描述和基本設(shè)計(jì)要求...........................................................3 3 系統(tǒng)需求分析...............................................................................................3 3.1 功能需求分析···················································································· 3 3.2 其他需求分析···················································································· 4 4 系統(tǒng)設(shè)計(jì)........................................................................................................4 4.1 總體設(shè)計(jì) ··························································································· 4 4.2 ATM柜員機(jī)界面設(shè)計(jì) ········································································· 5 4.3 各功能模塊設(shè)計(jì) ················································································ 7

      4.3.1 登陸頁面模塊設(shè)計(jì) ····························································· 7 4.3.2 選擇服務(wù)模塊設(shè)計(jì) ····························································· 8 4.3.3 取款模塊設(shè)計(jì) ····································································· 9 4.3.4 修改密碼模塊設(shè)計(jì) ····························································· 9 4.3.5 退卡模塊設(shè)計(jì) ··································································· 10

      4.4 異常處理情況說明 ·········································································· 10 5 系統(tǒng)實(shí)現(xiàn)與測(cè)試.........................................................................................11 6 課程設(shè)計(jì)總結(jié).............................................................................................13 6.1 遇到的問題及解決辦法 ·································································· 13 6.2 心得體會(huì) ························································································· 14 參考文獻(xiàn)..........................................................................................................15 附錄..................................................................................................................15

      ATM初始賬號(hào):000000

      初始密碼:123456

      ATM柜員機(jī) 課程設(shè)計(jì)過程概述

      2013年6月,JAVA課程設(shè)計(jì)在1#樓六樓機(jī)房進(jìn)行,持續(xù)時(shí)間為兩周。這次課程設(shè)計(jì)的主要目的是結(jié)合面向?qū)ο蟪绦蛟O(shè)計(jì)課程,培養(yǎng)我們面向?qū)ο筌浖_發(fā)的思維,初步了解軟件開發(fā)的一般流程,提高用JAVA編程的實(shí)際動(dòng)手能力并增強(qiáng)大家對(duì)面向?qū)ο蟮牧私?。這次課程設(shè)計(jì)的主要內(nèi)容是獨(dú)立用JAVA語言開發(fā)一個(gè)小的應(yīng)用程序。我們開發(fā)了一個(gè)ATM柜員機(jī)。課程設(shè)計(jì)題目描述和基本設(shè)計(jì)要求

      我設(shè)計(jì)的ATM柜員機(jī)主要是由各個(gè)Windows窗口組成,它是由登錄頁面、選擇服務(wù)、取款、查詢余額、修改密碼和退卡等功能。它的各種按鈕的事件和功能可以簡(jiǎn)單的模擬ATM柜員機(jī)的要求。3 系統(tǒng)需求分析 3.1 功能需求分析

      本ATM柜員機(jī)的主要功能如下所述:

      要求使用圖形用戶界面。當(dāng)輸入給定的卡號(hào)和密碼(初始卡號(hào)為000000和密碼為123456)時(shí),系統(tǒng)能登錄ATM柜員機(jī)系統(tǒng),用戶可

      以按照以下規(guī)則進(jìn)行:

      ? 查詢余額:初始余額為50000元

      ? ATM取款:每次取款金額為100的倍數(shù),總額不超過5000元,支取金額不允許透支。? ATM存款:不能出現(xiàn)負(fù)存款。

      ? 修改密碼:只有舊密碼正確,新密碼符合要求,且兩次輸入相同的情況下才可以成功修改密碼。

      3.2 其他需求分析(1)性能描述

      實(shí)時(shí)性好、靈活性強(qiáng)、易于不同年齡階段的人操作。(2)設(shè)計(jì)約束 開發(fā)工具:MyEclipse 運(yùn)行環(huán)境:Windows XP、Window 7 能實(shí)現(xiàn)用戶所定義的各項(xiàng)需求。(3)界面要求

      以Windows窗口形式顯示,標(biāo)題欄為ATM柜員機(jī)名稱,右上角有最小化按鈕、最大化按鈕、關(guān)閉按鈕,不同的窗口中有不同的按鈕和選擇菜單。4 系統(tǒng)設(shè)計(jì) 4.1 總體設(shè)計(jì)

      我所設(shè)計(jì)的ATM柜員機(jī)主要是由登錄頁面模塊還由選擇服務(wù)模塊組

      成,其中選擇服務(wù)模塊又由取款模塊、查詢余額模塊、修改密碼模塊、退卡模塊組成。其功能結(jié)構(gòu)圖如下所示:

      圖1 ATM功能結(jié)構(gòu)示意圖 4.2 ATM柜員機(jī)界面設(shè)計(jì)

      我們覺得一個(gè)系統(tǒng)的界面應(yīng)該要簡(jiǎn)單明了,當(dāng)然樣式美觀就更好了。我設(shè)計(jì)的界面主要是由窗體組成,操作簡(jiǎn)單。而每一個(gè)窗口則執(zhí)行相應(yīng)的功能。

      一個(gè)系統(tǒng)界面的好壞直接影響到用戶的操作,界面設(shè)計(jì)要求樣式美觀、簡(jiǎn)單明了、方便易操作。我設(shè)計(jì)的界面主要分為窗體、菜單、按鈕和文本輸入框幾個(gè)部分,分別執(zhí)行相應(yīng)的操作。(1)窗體的設(shè)計(jì)

      窗體整個(gè)框架使用Frame類構(gòu)造,F(xiàn)rame有自己的外邊框和自己的標(biāo)題,創(chuàng)建Frame時(shí)可以指定其窗口標(biāo)題,我創(chuàng)建的窗口標(biāo)題是各個(gè)不

      同功能的模塊的名字,比如說查詢余額,還有取款等。相應(yīng)源代碼為: 向Frame窗口中添加組件使用add()。例如:button1 = new Button(“存款”);p1.add(button1);this.add(p1);每個(gè)Frame在其右上角都有三個(gè)控制圖標(biāo),分別代表將窗口最小化、窗口最大化和關(guān)閉的操作,其中最小化和最大化操作Frame可自動(dòng)完成,而關(guān)閉窗口操作實(shí)現(xiàn)需要書寫有關(guān)的代碼,在我的程序中我采用的是對(duì)WINDOWS_CLOSING事件做出響應(yīng),調(diào)用dispose()方法關(guān)閉窗口。Frame也可以引發(fā)WindowsEvent類代表的窗口事件。相應(yīng)源代碼為:

      addWindowListener(new WindowAdapter()//窗口偵聽器,以從此窗口接收窗口事件

      {public void windowClosing(WindowEvent e)//處理窗口關(guān)閉事件 { System.exit(0);} });}(2)窗體的主要結(jié)構(gòu)的設(shè)計(jì)

      我所設(shè)計(jì)的窗口的主要結(jié)構(gòu)的特點(diǎn)就是每個(gè)窗口都對(duì)應(yīng)著一個(gè)特定的功能。比如說報(bào)各種各樣的錯(cuò),還有各種查詢余額、取款、選擇服務(wù)等,所以它們都是由各種按鈕和文本框,標(biāo)簽組成的,而聯(lián)系各個(gè)窗體成為一個(gè)整體的就是各個(gè)按鈕的監(jiān)聽事件。所以整個(gè)設(shè)計(jì)就趨向簡(jiǎn)單化了。

      為了定義各個(gè)按鈕所對(duì)應(yīng)的命令和操作,首先需要將各個(gè)按鈕注冊(cè)給實(shí)現(xiàn)了動(dòng)作事件的監(jiān)聽接口ActionListener的監(jiān)聽者,然后為監(jiān)聽者定義actionPerformed(ActionEvent e)方法,在這個(gè)方法中調(diào)用e.getSource()或e.getActionCommand()來判斷用戶點(diǎn)擊的菜單子項(xiàng),并完成這個(gè)菜單子項(xiàng)定義的操作。4.3 各功能模塊設(shè)計(jì) 4.3.1 登陸頁面模塊設(shè)計(jì)

      與ATM柜員機(jī)打交道比較多的,也是大家對(duì)安全比較關(guān)心的問題:密碼。所以第一個(gè)界面就是要輸入密碼和卡號(hào)才能繼續(xù)服務(wù)。我定義了文本框類的對(duì)象tf1,tf2。是用于輸入單行的文本;文本區(qū)調(diào)用public String getPassword()方法,獲取用戶想要的字符串。用來判斷輸入的密碼和卡號(hào)是否正確,如果不正確的話,則彈出密碼或卡號(hào)錯(cuò)誤的警告框,并用dispose()關(guān)掉窗口。此模塊相應(yīng)的部分源代碼為:

      public void actionPerformed(ActionEvent e){ Account act;act=new Account(“000000”,“HuangHuai”,“123456”,50000);//初始化

      /*選擇各種服務(wù)*/ if(e.getSource()== button1){ String number1,number2;//輸入的兩個(gè)卡號(hào)和密碼的變量

      number1=tf1.getText().toString();number2 = new String(tf2.getPassword());

      /*判斷兩次輸入的卡號(hào)和密碼是否正確*/

      if((act.getCode().equals(number1))&&(act.getPassword().equals(number2))){

      dispose();

      new Selection(“選擇服務(wù)”,act);}else{

      JOptionPane.showMessageDialog(this, “密碼或帳號(hào)錯(cuò)誤!”,“賬戶提

      示信息”,JOptionPane.ERROR_MESSAGE);

      dispose();

      new WindowBox(“ATM”);

      } }

      if(e.getSource()==button2){

      System.exit(0);

      dispose();//退出

      } } 4.3.2 選擇服務(wù)模塊設(shè)計(jì)

      在選擇服務(wù)模塊中,有各種ATM的服務(wù)功能,只要用戶在該界面中選擇按鈕,它就會(huì)彈出各個(gè)相應(yīng)的界面。每一個(gè)按鈕都有監(jiān)聽器,在選擇了按鈕后,java.awt.event中的ActionEvent類創(chuàng)建一個(gè)事件對(duì)象,并將它傳遞給方法public void actionPerformed(ActionEvent e)中的參數(shù)e,監(jiān)視器就會(huì)知道所發(fā)生的事件,對(duì)此事件進(jìn)行處理。其中的部分源代碼為:

      p.add(new Label(“請(qǐng)選擇你要的服務(wù)”));

      this.add(p);/*各種服務(wù)功能*/

      buttonCUN = new Button(“ 存 款 ”);

      p1.add(buttonCUN);

      this.add(p1);

      buttonQU = new Button(“ 取 款 ”);

      p2.add(buttonQU);

      this.add(p2);

      buttonCHA = new Button(“ 查詢余額 ”);

      p3.add(buttonCHA);

      this.add(p3);

      buttonTUI = new Button(“ 退 出 ”);

      p4.add(buttonTUI);

      this.add(p4);

      buttonGAI = new Button(“ 修改密碼 ”);

      4.3.3 取款模塊設(shè)計(jì)

      在取款模塊中,和其他的界面也是同樣的結(jié)構(gòu)。也是有一個(gè)文本框和一個(gè)按鈕還有標(biāo)簽組成的。用戶在文本框中輸入他想取的數(shù)額,但是必須是100的倍數(shù),而且每一次最多只能取5000塊。當(dāng)然了取款的時(shí)候也不能超過卡里的余額,再就是卡里的余額不可以為負(fù),否則就會(huì)彈出報(bào)錯(cuò)的窗口。其方法為:

      public String withdrawMoney(double money){

      String str = null;

      if(money<=0){

      str = “取款數(shù)目須是正數(shù)!”;}else{

      if(getMoney()<0){//判斷余額是否為負(fù)

      str=“余額為負(fù)數(shù)!”;

      }else if(money<=getMoney()){

      if((money%100!=0)||(money>=5000)){//取錢數(shù)為100的倍數(shù)或不大于5000

      str= “取款數(shù)目須是一百的整數(shù)倍!”;

      }else{

      setBalance(money);

      str = “取款成功:余額為”+getMoney();

      }

      }else{

      str = “余額不足!”;

      }

      } return str;} 4.3.4 修改密碼模塊設(shè)計(jì)

      在修改密碼模塊中,首先你必須要輸入你的舊密碼是否正確,否則就會(huì)報(bào)錯(cuò)。再一個(gè)就是要兩次輸入你的新密碼,且兩次藥匹配,否則也會(huì)報(bào)錯(cuò),然后再重新回到修改密碼的界面。在修改密碼時(shí)用到的方法為:

      /*判斷舊密碼是是否正確*/ if(pwd2.equals(pwd1)){

      if(pwd3.equals(pwd4)){//判斷兩次輸入的新密碼是個(gè)匹配

      act.changePassword(pwd3);//啟用新的密碼

      dispose();

      JOptionPane.showMessageDialog(this, “修改密碼成功!”);

      new Selection(“選擇”,act);//返回選擇服務(wù)窗口

      }else{

      this.setVisible(true);

      dispose();

      JOptionPane.showMessageDialog(this, “兩次輸入要修改的密碼不同,更新密碼失敗!”);

      new Selection(“選擇”,act);

      } }else{

      this.setVisible(false);

      dispose();

      JOptionPane.showMessageDialog(this, “輸入密碼錯(cuò)誤,更新密碼失敗!”);

      new Selection(“選擇”,act);} } 4.3.5 退卡模塊設(shè)計(jì)

      在退卡模塊設(shè)計(jì)中,這個(gè)方法就更加的簡(jiǎn)單了,它只是用了if(e.getSource()==buttonTUI){//退出

      System.exit(0);

      dispose();

      } 這個(gè)方法就可以實(shí)現(xiàn)了,這里就不再多說了。4.4 異常處理情況說明

      (1)打開、保存文件時(shí)的異常處理 需要處理的異常:IOException(2)數(shù)據(jù)庫訪問時(shí)的異常處理 需要處理的異常:SQLException

      (3)加載類時(shí)的異常處理

      需要處理的異常:ClassNotFindException,當(dāng)應(yīng)用程序試圖使用Class類中的forName方法通過字符串名加載類時(shí),但是沒有找到具有指定名稱的類的定義。(4)加載URL時(shí)的異常

      需要處理的異常:MalformedURLException,拋出這一異常指示出現(xiàn)了錯(cuò)誤的 URL。或者在規(guī)范字符串中找不到任何合法協(xié)議,或者無法分析字符串。5 系統(tǒng)實(shí)現(xiàn)與測(cè)試

      (1)打開MyEclipse,編譯運(yùn)行程序后,將會(huì)看到如下的界面,如圖2所示。如果輸入的密碼或卡號(hào)不正確的話就會(huì)報(bào)下圖的錯(cuò)誤。

      圖2 主界面—登陸頁面

      (2)選擇服務(wù)界面效果

      當(dāng)輸入的密碼和卡號(hào)正確,單擊確定后就會(huì)進(jìn)入到選擇服務(wù)的界面,如圖3所示。然后就可以選擇所需要的服務(wù)了。

      圖3 選擇服務(wù)界面

      (3)取款界面,如圖4所示。

      圖4 取款界面

      當(dāng)輸入的錢數(shù)不是100的倍數(shù)或每一次大于5000時(shí)就會(huì)報(bào)圖5的錯(cuò)誤。

      圖5 輸入錯(cuò)誤

      當(dāng)取款時(shí)如果超過卡里的余額的話就會(huì)報(bào)圖6的錯(cuò)誤。

      圖6 輸入錯(cuò)誤2(4)查詢余額界面,如圖7所示。

      圖7 查詢余額界面

      (5)修改密碼界面,如下圖所示。

      經(jīng)過測(cè)試,所有的功能基本上都實(shí)現(xiàn)了,而且運(yùn)行正常。6 課程設(shè)計(jì)總結(jié)

      6.1 遇到的問題及解決辦法

      在此次課程設(shè)計(jì)中,我遇到了一些問題,如:對(duì)于面向?qū)ο蟮姆椒私獠粔蛲笍?,運(yùn)用到實(shí)際的軟件開發(fā)中存在著困難;對(duì)于Java語言,只學(xué)習(xí)到了一些最基本的知識(shí),這導(dǎo)致編寫程序時(shí)經(jīng)常出現(xiàn)一些語法錯(cuò)誤,而且要在短時(shí)間內(nèi)用Java語言來設(shè)計(jì)一個(gè)具體的系統(tǒng)是一個(gè)較大的挑戰(zhàn);還有對(duì)于正規(guī)開發(fā)一個(gè)系統(tǒng)的流程不熟悉,適應(yīng)起來比

      較慢,編寫各個(gè)模塊相對(duì)應(yīng)的操作時(shí),自己感覺難以動(dòng)手,這表明所學(xué)的知識(shí)不能靈活運(yùn)用到實(shí)際中。

      對(duì)于以上的問題,自己有清楚的認(rèn)識(shí),解決辦法是需要大量閱讀相關(guān)的書籍,對(duì)于書上以及網(wǎng)站上下載的資料中的Java實(shí)例必須有清楚的理解,還有就是多跟精通此方面的老師和同學(xué)交流,取其精華。對(duì)于實(shí)際動(dòng)手能力與系統(tǒng)開發(fā)的流程的適應(yīng),必須多進(jìn)行實(shí)際的練習(xí)與操作,才能有大的進(jìn)步。6.2 心得體會(huì)

      在這次的學(xué)課程設(shè)計(jì)中,我主要運(yùn)用了Java語言的界面設(shè)計(jì)、異常處理、、Awt控件、Swing控件,輸入輸出流等,綜合運(yùn)用了Java語言。我深刻感受到了面向?qū)ο笳Z言中類庫的強(qiáng)大功能,掌握了運(yùn)用Java中的類實(shí)現(xiàn)某些基本功能,并學(xué)會(huì)了自己查詢使用類的方法,為以后的面向?qū)ο笳Z言的自學(xué)奠定了基礎(chǔ)。

      通過這兩個(gè)禮拜的課程設(shè)計(jì)我真的學(xué)到了很多的東西,當(dāng)然這也和我的同學(xué)的幫助是離不開的。好了,下面就談一下我在這些天的體會(huì)吧: 在這次的課程設(shè)計(jì)中,主要是運(yùn)用JAVA語言來編寫一個(gè)小的應(yīng)用程序,當(dāng)然還可以用其他的技術(shù)來輔助了。在這個(gè)小應(yīng)用程序當(dāng)中,我用了Java外還用了Swing控件。輸入輸出流等技術(shù)。由于以前學(xué)的不是很扎實(shí),而且還有些知識(shí)我們都是沒有學(xué)過的,這就要求我們?nèi)ゲ橄嚓P(guān)的書籍,還有就是和同學(xué)之間的交流。正因?yàn)檫@樣,才鍛煉了我的自學(xué)的能力,還有就是加深了我對(duì)各個(gè)知識(shí)點(diǎn)的認(rèn)識(shí),并且提高了我對(duì)專業(yè)的學(xué)習(xí)的興趣,為我以后的學(xué)習(xí)打下了基礎(chǔ)。此外,我還

      感受到了面向?qū)ο笳Z言的類庫的強(qiáng)大的功能,掌握了運(yùn)用JAVA中的類實(shí)現(xiàn)某些基本功能,并學(xué)會(huì)了自己查詢使用類的方法,也就是要會(huì)用API文檔,為以后更好的學(xué)習(xí)面向?qū)ο笳Z言奠定了基礎(chǔ)。通過將近兩周的努力,這次課程設(shè)計(jì)終于結(jié)束了,在這個(gè)過程當(dāng)中,我學(xué)到了很多的知識(shí),同時(shí)也感謝我的同學(xué)的幫助和指導(dǎo)。在以后的學(xué)習(xí)當(dāng)中,我會(huì)更加努力的學(xué)習(xí)好專業(yè)知識(shí),并將所學(xué)的知識(shí)用于實(shí)踐當(dāng)中去,以便牢固掌握知識(shí)。參考文獻(xiàn)

      [1] 王萌,劉婧,來賓著.JAVA程序設(shè)計(jì)[M]北京 冶金工業(yè)出版社,2004 [2] 黃聰明 精通 JAVA2程序設(shè)計(jì)[M]北京:清華大學(xué)出版社,2004.4 [3] 王文濤,袁海燕 JAVA實(shí)用程序設(shè)計(jì)100例[M]北京:人民郵電出版社,2005.5 [4] 雍俊海 JAVA程序設(shè)計(jì)[M]北京:清華大學(xué)出版社,2006.8 [5] 劉寶林 JAVA程序設(shè)計(jì)與案例[M]北京:高等教育出版社,2006.11 附錄

      Account類:

      package cn.com.account;/** * 帳戶

      * 該類為實(shí)現(xiàn)客戶信息及部分功能 */

      public class Account {

      private String code = null;//信用卡號(hào) private String name = null;//客戶姓名 private String password= null;//客戶密碼 private double money = 0.0;//卡里金額

      public Account(){

      }

      public Account(String code,String name,String password,double money){

      } public String getCode(){//取得卡號(hào)

      return code;} public String getName(){//取得名字

      return name;} /**

      * 取得密碼 * @return */

      public String getPassword(){ } /**

      * 重置秘密的方法 */

      public void changePassword(String pwd){ }

      public double getMoney(){//取得余額

      return money;} /**

      * 得到剩余的錢的數(shù)目 */

      private void setBalance(double mon){ } money-= mon;password = pwd;return password;this.code=code;this.name=name;this.password=password;this.money=money;this.code = “123456”;this.password = “123456”;

      } /** * 取款設(shè)置 * 若成功顯示余額 * 不成功顯示提示信息 */

      public String withdrawMoney(double money){ String str = null;if(money<=0){ str = “取款數(shù)目須是正數(shù)!”;}else{

      if(getMoney()<0){//判斷余額是否為負(fù)

      str=“余額為負(fù)數(shù)!”;}else if(money<=getMoney()){

      if((money%100!=0)||(money>=5000)){//取錢數(shù)為100的倍數(shù) str= “取款數(shù)目須是一百的整數(shù)倍!”;}else{

      setBalance(money);str = “取款成功:余額為”+getMoney();} 或不大于5000

      }else{

      str = “余額不足!”;}

      } return str;} /** * 存款設(shè)置 * 若成功顯示余額 * 不成功顯示提示信息 */

      public String depositMoney(double money){

      } String str = null;

      if(money<0){ str =“存款數(shù)目須是正數(shù)!”;}else{ setBalance(-money);str = “存款成功:余額為”+getMoney();} return str;ChangePassword類:

      package cn.com.frameui;import cn.com.account.Account;import javax.swing.*;import java.awt.*;import java.awt.event.*;@SuppressWarnings(“serial”)public class ChangePassword extends Frame implements ActionListener{

      Panel panel1 = new Panel();Panel panel2 = new Panel();Panel panel3 = new Panel();Panel panel = new Panel();//TextField tf4,tf5,tf6;JPasswordField tf4,tf5,tf6;Button button;Account act;ChangePassword(String s,Account act){

      super(s);this.act=act;

      tf4 = new JPasswordField(6);tf5 = new JPasswordField(6);tf6 = new JPasswordField(6);button = new Button(“確定”);button.addActionListener(this);/*建立新密碼*/

      panel1.add(new Label(“請(qǐng)輸入你的舊密碼:”));panel1.add(tf4);panel2.add(new Label(“請(qǐng)輸入你的新密碼:”));panel2.add(tf5);panel3.add(new Label(“請(qǐng)?jiān)俅屋斎胄旅艽a:”));panel3.add(tf6);panel.add(button);this.add(panel1);this.add(panel2);this.add(panel3);this.add(panel);setLayout(new GridLayout(4,1));setBounds(200,200,300,200);this.setVisible(true);/**

      * 窗口事件, 判斷窗口是否關(guān)閉 */

      this.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){

      System.exit(0);

      }

      }

      } });/**

      * 判斷事件源,看條件是否成立再修改密碼 */

      public void actionPerformed(ActionEvent e){ if(e.getSource()==button){ String pwd2,pwd3,pwd4,pwd1;char [] p2,p3,p4;pwd1 = act.getPassword();p2=tf4.getPassword();p3=tf5.getPassword();p4=tf6.getPassword();

      pwd2 = new String(p2);pwd3 = new String(p3);pwd4 = new String(p4);

      if(pwd2.equals(pwd1)){

      if(pwd3.equals(pwd4)){//判斷兩次輸入的新密碼是個(gè)匹配

      act.changePassword(pwd3);//啟用新的密碼 dispose();JOptionPane.showMessageDialog(this, “修改密碼成功!”);new Selection(“選擇”,act);//返回選擇服務(wù)窗口 }else{ this.setVisible(true);dispose();JOptionPane.showMessageDialog(this, “兩次輸入要修改的密碼不同, new Selection(”選擇“,act);}

      this.setVisible(false);dispose();JOptionPane.showMessageDialog(this, ”輸入密碼錯(cuò)誤,更新密碼失更新密碼失敗!“);}else{ 敗!”);

      new Selection(“選擇”,act);} } }

      GetBalance類:

      package cn.com.frameui;import cn.com.account.*;import javax.swing.*;

      import java.awt.*;import java.awt.event.*;@SuppressWarnings(“serial”)public class GetBalance extends Frame implements ActionListener{

      Box baseBox, box1,box2;Button button;TextField tf;Account act;public GetBalance(String s,Account act){//構(gòu)造函數(shù)

      super(s);

      }

      public void actionPerformed(ActionEvent e){

      double money;String str = null;/*

      * 取款判定 */ this.act=act;button=new Button(“確定”);Panel panel = new Panel();Panel panel1 = new Panel();tf = new TextField(6);this.setLayout(new GridLayout(2,1));panel1.add(new Label(“請(qǐng)輸入你想取錢的數(shù)目”));panel1.add(tf);panel.add(button);this.add(panel1);this.add(panel);button.addActionListener(this);this.addWindowListener(new WindowAdapter(){

      public void windowClosing(WindowEvent e){ }

      System.exit(0);});setBounds(200,200,300,200);this.setVisible(true);

      if(tf.getText().toString().equals(“")){ str = ”取款數(shù)目不能為空!“;}else{

      } money = Double.parseDouble(tf.getText().toString());str = act.withdrawMoney(money);

      JOptionPane.showMessageDialog(this, str,”取款提示信息“,JOptionPane.PLAIN_MESSAGE);

      } this.setVisible(false);new Selection(”選擇服務(wù)“,act);}

      Query類:

      package cn.com.frameui;import cn.com.account.*;import java.awt.*;import java.awt.event.*;@SuppressWarnings(”serial“)public class Query extends Frame implements ActionListener{

      Button button;Account act;public Query(String s,Account act){//構(gòu)造函數(shù)

      super(s);

      this.act = act;

      button=new Button(”確定“);

      Panel panel1 = new Panel();Panel panel = new Panel();panel1.add(new Label(”你的余額為: “ + act.getMoney()));//查詢余額的方法

      this.add(panel1);this.add(panel);

      button.addActionListener(this);panel.add(button);

      this.setLayout(new GridLayout(2,1));this.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){

      }

      }

      }

      System.exit(0);});setBounds(200,200,200,150);setVisible(true);public void actionPerformed(ActionEvent e){

      } if(e.getSource()==button){ dispose();new Selection(”選擇服務(wù)“,act);//返回選擇服務(wù)窗口

      } Selection類:

      package cn.com.frameui;import cn.com.account.*;import java.awt.*;import java.awt.event.*;@SuppressWarnings(”serial“)public class Selection extends Frame implements ActionListener{

      Button buttonCUN,buttonQU,buttonCHA,buttonTUI,buttonGAI;Panel p1 = new Panel();Panel p2 = new Panel();Panel p3 = new Panel();Panel p4 = new Panel();Panel p5 = new Panel();Panel p = new Panel();Account act;

      public Selection(){} public Selection(String s,Account act){

      super(s);this.act=act;this.setLayout(null);this.setLayout(new GridLayout(6,1));p.add(new Label(”請(qǐng)選擇你要的服務(wù)“));this.add(p);buttonCUN = new Button(” 存 款 “);p1.add(buttonCUN);this.add(p1);buttonQU = new Button(” 取 款 “);p2.add(buttonQU);/*各種服務(wù)功能*/

      } this.add(p2);buttonCHA = new Button(” 查詢余額 “);p3.add(buttonCHA);this.add(p3);buttonTUI = new Button(” 退 出 “);p4.add(buttonTUI);this.add(p4);buttonGAI = new Button(” 修改密碼 “);p5.add(buttonGAI);this.add(p5);this.addWindowListener(new WindowAdapter(){

      public void windowClosing(WindowEvent e){ System.exit(0);} });buttonCUN.addActionListener(this);buttonQU.addActionListener(this);buttonCHA.addActionListener(this);buttonTUI.addActionListener(this);buttonGAI.addActionListener(this);setBounds(150,150,300,200);setVisible(true);validate();public void actionPerformed(ActionEvent e){

      if(e.getSource()==buttonCUN){//存款

      dispose();new SetBalance(”存款款“,act);

      }else if(e.getSource()==buttonQU){//取款

      dispose();new GetBalance(”取款“,act);

      }else if(e.getSource()==buttonCHA){//查詢余額

      dispose();new Query(”查詢余額“,act);

      }else if(e.getSource()==buttonTUI){//退出

      System.exit(0);dispose();

      }

      } }else if(e.getSource()==buttonGAI){//修改密碼

      dispose();new ChangePassword(”修改密碼“,act);

      } SetBalance類:

      package cn.com.frameui;import cn.com.account.*;import javax.swing.*;import java.awt.*;import java.awt.event.*;@SuppressWarnings(”serial“)public class SetBalance extends Frame implements ActionListener{

      Box baseBox, box1,box2;Button button;TextField tf;Account act;public SetBalance(String s,Account act){//構(gòu)造函數(shù)

      super(s);

      }

      public void actionPerformed(ActionEvent e){ this.act=act;button=new Button(”確定“);Panel panel = new Panel();Panel panel1 = new Panel();tf = new TextField(6);this.setLayout(new GridLayout(2,1));panel1.add(new Label(”請(qǐng)輸入你想存款的數(shù)目“));panel1.add(tf);panel.add(button);this.add(panel1);this.add(panel);button.addActionListener(this);this.addWindowListener(new WindowAdapter(){

      public void windowClosing(WindowEvent e){ }

      System.exit(0);});setBounds(200,200,300,200);this.setVisible(true);

      double money;String str = null;if(tf.getText().toString().equals(”“)){ str = ”存款數(shù)目不能為空!“;}else{

      } money = Double.parseDouble(tf.getText().toString());str = act.depositMoney(money);

      JOptionPane.showMessageDialog(this, str,”存款提示信息“,JOptionPane.INFORMATION_MESSAGE);

      } dispose();this.setVisible(false);new Selection(”選擇服務(wù)“,act);} WindowBox類:

      package cn.com.frameui;import cn.com.account.Account;import javax.swing.*;

      import java.awt.*;import java.awt.event.*;/**

      * 登陸頁面首窗口 */

      @SuppressWarnings(”serial“)public class WindowBox extends Frame implements ActionListener{

      box1= Box.createVerticalBox();box1.add(new Label(”請(qǐng)輸入您的卡號(hào)“));//輸入卡號(hào) box1.add(Box.createVerticalStrut(8));box1.add(new Label(”請(qǐng)輸入您的密碼“));//輸入密碼 box2=Box.createVerticalBox();Box baseBox,box1,box2;TextField tf1;JPasswordField tf2;Button button1;Button button2;public WindowBox(String s){//構(gòu)造方法

      super(s);tf1 = new TextField(6);tf2 = new JPasswordField(6);

      } box2.add(tf1);

      box2.add(Box.createVerticalStrut(8));box2.add(tf2);

      baseBox=Box.createHorizontalBox();baseBox.add(box1);baseBox.add(Box.createHorizontalStrut(10));baseBox.add(box2);add(baseBox);button1= new Button(”確定“);//加入按鈕 button1.addActionListener(this);add(button1);

      button2 = new Button(”退卡“);//退卡按鈕 button2.addActionListener(this);add(button2);setLayout(new FlowLayout());/*監(jiān)聽器*/

      this.addWindowListener(new WindowAdapter(){

      public void windowClosing(WindowEvent e){ System.exit(0);} });setBounds(120,125,300,200);setVisible(true);public void actionPerformed(ActionEvent e){ Account act;act=new Account(”000000“,”HuangHuai“,”123456“,50000);//初始化

      /*選擇各種服務(wù)*/

      if(e.getSource()== button1){ String number1,number2;//輸入的兩個(gè)卡號(hào)和密碼的變量 number1=tf1.getText().toString();number2 = new String(tf2.getPassword());

      /*判斷兩次輸入的卡號(hào)和密碼是否正確*/

      if((act.getCode().equals(number1))&&(act.getPassword().equals(num dispose();ber2))){ new Selection(”選擇服務(wù)“,act);}else{

      JOptionPane.showMessageDialog(this, ”密碼或帳號(hào)錯(cuò)誤!“,”賬戶提示信息“,JOptionPane.ERROR_MESSAGE);dispose();

      new WindowBox(”ATM“);} }

      if(e.getSource()==button2){

      System.exit(0);

      dispose();//退出

      } } }

      package cn.com.test;import cn.com.frameui.*;public class ATM { /**

      * 主測(cè)試程序

      * @param args

      */

      public static void main(String[] args){

      new WindowBox(”ATM");} }

      第五篇:人事管理系統(tǒng)Java課程設(shè)計(jì)報(bào)告

      湖南科技大學(xué)計(jì)算機(jī)科學(xué)與工程學(xué)院

      數(shù)據(jù)庫課程設(shè)計(jì)報(bào)告

      題目:人事管理管理系統(tǒng)

      學(xué) 號(hào):1005030221 姓 名:艾向兵 指導(dǎo)教師:張黎

      完成時(shí)間:2012年1月4日 組員:蘇勇,成佳裕,艾向兵

      企業(yè)人事管理系統(tǒng)主要用于員工個(gè)人資料的錄入,職務(wù)變動(dòng)的記錄和管理。使用人事管理系統(tǒng),便于公司領(lǐng)導(dǎo)掌握人員的動(dòng)向,及時(shí)調(diào)整人才的分配 1.1系統(tǒng)功能需求分析

      人事管理系統(tǒng)主要有以下幾項(xiàng)功能要求:.新員工資料的輸入。

      .自動(dòng)分配員工編號(hào),并且設(shè)置初始的用戶密碼:.人事變動(dòng)的記載,包括崗位和部門的調(diào)整。.員工信息的查詢和修改,包括員工個(gè)人信息和密碼 1.2 系統(tǒng)功能模塊設(shè)計(jì)

      根據(jù)系統(tǒng)功能要求,可以將系統(tǒng)分解成幾個(gè)模塊來分別設(shè)計(jì)應(yīng)用程序界面,如圖,人事資源管理 包括:新員工檔案輸入,人事變更,員工檔案查詢

      1.3 與其它系統(tǒng)的關(guān)系

      本關(guān)系是公司管理信息系統(tǒng)的基礎(chǔ)部分,為其他子系統(tǒng),如考勤管理系統(tǒng),工資管理系統(tǒng)和員工培訓(xùn)系統(tǒng),提供員工的基本信息。同時(shí)為其他系統(tǒng)提供了員工登錄的密碼認(rèn)證和權(quán)限分配。1.4數(shù)據(jù)庫設(shè)計(jì) 數(shù)據(jù)庫需求分析:

      員工信息:?jiǎn)T工號(hào),密碼,權(quán)限,姓名,性別,生日,專業(yè),通訊地址,電話,Email,當(dāng)前狀態(tài),其他。

      人事變動(dòng):記錄號(hào),員工,變動(dòng),詳細(xì)描述

      部門設(shè)置:部門編號(hào),名稱

      員工變動(dòng)代號(hào)表

      員工信息表

      員工職位代碼表

      管理員登陸界面

      信息查詢,修改,刪除主界面

      查詢單個(gè)員工的界面

      總 結(jié)

      這次的課程設(shè)計(jì),是在學(xué)習(xí)了Java以后通過閱讀課本及在圖書館借閱相關(guān)書籍同嚴(yán)景、孟珍三人共同完成的。在開發(fā)這個(gè)系統(tǒng)的過程中,碰到很多或大或小的問題,我們一起思考,一起努力,最后大部分都解決了,得到了現(xiàn)在的這個(gè)簡(jiǎn)單的人事管理系統(tǒng)。

      在編制過程中,我們首先考慮到了界面的友好性,并在界面設(shè)計(jì)時(shí)不采用煩瑣的細(xì)節(jié),使界面簡(jiǎn)單、清晰,便于操作。一開始我們是想做個(gè)登錄界面,實(shí)現(xiàn)用戶的登錄權(quán)限管理,但試了幾次都沒有達(dá)到預(yù)期的效果,最后不得不放棄。

      通過這次課程設(shè)計(jì),我知道了什么事情都不那么簡(jiǎn)單,只有努力去做了,你才會(huì)有收獲,不管收獲大小,付出的過程總是有的。有些事情只有親身感受,你才知道它的價(jià)值有多大。同時(shí)在遇到困難的時(shí)候要沉著冷靜,首先要冷靜分析問題,對(duì)于很難解決的問題要學(xué)會(huì)請(qǐng)教他人,還可以與別人合作。

      在這次數(shù)據(jù)庫系統(tǒng)課程設(shè)計(jì)中,我主要進(jìn)行的是界面的設(shè)計(jì),以及進(jìn)行進(jìn)行整合操作,界面是我學(xué)習(xí)Java以來第一次做,以前不怎么用的JTabel等,現(xiàn)在都已經(jīng)熟練的應(yīng)用了,特別是這次的彈出窗口,我在做這個(gè)的時(shí)候可謂是一竅不通,因?yàn)榘寻粹oJButton定義為了局部變量而在時(shí)間響應(yīng)中而得不到另一個(gè)窗口的彈出。

      還有就是在整個(gè)過程中的ID傳遞讓我不知怎么辦,一個(gè)簡(jiǎn)單的參數(shù)傳遞才得以搞定,基礎(chǔ)知識(shí)還是不夠牢靠。在得到修改表的數(shù)據(jù)庫內(nèi)容后未把值傳給表格。

      雖然這次課程設(shè)計(jì)付出了大量的時(shí)間,但是我知道我得到的收獲遠(yuǎn)遠(yuǎn)不是這些時(shí)間可以衡量的,它將給我今后的學(xué)習(xí)和工作帶來更多的收益。通過對(duì)此課題的開發(fā),使我對(duì)用Java開發(fā)系統(tǒng)有了一個(gè)比較清楚的認(rèn)識(shí),體會(huì)到理論和實(shí)踐的重要性。由于自己的分析設(shè)計(jì)和程序經(jīng)驗(yàn)不足,該系統(tǒng)設(shè)計(jì)和實(shí)現(xiàn)過程中,還有許多沒有完善的地方,比如沒有設(shè)置登錄界面,沒有考慮到異常等多方面問題,這些都有待進(jìn)一步完善和提高。對(duì)于文中出現(xiàn)的不足和系統(tǒng)中出現(xiàn)的問題敬請(qǐng)老師指導(dǎo)。

      彈出登錄程序的界面程序

      public void actionPerformed(ActionEvent e){

      if(e.getSource()==okButton){

      String userID=text.getText();String passWD=String.valueOf(passwd.getPassword());if(userID.equals(“1”)&&passWD.equals(“1”)){

      JOptionPane.showMessageDialog(null, “登陸成功!”, “消息”, JOptionPane.INFORMATION_MESSAGE);

      new UserWindow2().userWindow2();//彈出第二個(gè)窗體

      } else{

      JOptionPane.showMessageDialog(null, “對(duì)不起您的用戶名或密碼錯(cuò)誤!”, “錯(cuò)誤”,JOptionPane.ERROR_MESSAGE);

      text.setText(“");passwd.setText(”“);} } if(e.getSource()==deleButton){

      text.setText(”“);passwd.setText(”“);}

      } 進(jìn)行信息查詢,修改,刪除的程序響應(yīng)代碼:

      public void actionPerformed(ActionEvent e){

      if(e.getSource()==button1){

      new UserWindow3();

      } if(e.getSource()==button2){

      UserWindow7 u= new UserWindow7();u.userWindow7();} if(e.getSource()==button3){ UserWindow5 u=new UserWindow5();

      u.userWindow5();}

      public void actionPerformed(ActionEvent e){

      if(e.getSource()==button){ int id= Integer.parseInt(text0.getText());//得到用戶編號(hào)

      String name=text1.getText();//得到用戶姓名

      String sex=text2.getText();//得到性別

      String birthDay=text3.getText();//得到生日 String department=text4.getText();//得到所在部門 String job =text5.getText();//得到職位

      String education=text6.getText();//得到教育程度 String spcialty=text7.getText();//專業(yè)技能 String address=text8.getText();//得到地址 String tel=text9.getText();//得到電話

      String email=text10.getText();//得到電子郵箱 String state=text11.getText();//得到員工狀態(tài) String remark=text12.getText();//得到備注 Insert in=new Insert();//

      boolean b;

      b=in.insert(id,name,sex,birthDay,department,job,education,spcialty,address,tel,email,state,remark);if(b){ JOptionPane.showMessageDialog(null, ”數(shù)據(jù)保存成功!“, ”消息“, JOptionPane.INFORMATION_MESSAGE);}

      } }

      public void actionPerformed(ActionEvent e){

      // TODO Auto-generated method stub

      id = Integer.parseInt(text.getText());

      if(e.getSource()==button){ UserWindow8 us = new UserWindow8();us.userWindow8(id);

      }

      Container container=this.getContentPane();container.setLayout(new BorderLayout());

      JPanel pan =new JPanel();JLabel lab = new JLabel(”請(qǐng)輸入工號(hào):“);JTextField text=new JTextField(10);JButton button =new JButton(”查詢“);JButton button1=new JButton(”刪除“);pan.add(lab);pan.add(text);pan.add(button);pan.add(button1);container.add(pan);

      String []titles={”員工編號(hào)“,”姓名“,”性別“,”生日“,”部門“,”職務(wù)“,”教育程度“,”專業(yè)技能“,”家庭住址“,”聯(lián)系電話“,”電子郵箱"};

      String [][]userInfo={};

      JTable table =new JTable(userInfo,titles);table.isCellEditable(2,2);JScrollPane scrollpane

      =new

      JScrollPane(taboooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo......................le);

      container.add(scrollpane,BorderLayout.SOUTH);

      下載JAVA課程設(shè)計(jì)報(bào)告ATM存取款系統(tǒng)word格式文檔
      下載JAVA課程設(shè)計(jì)報(bào)告ATM存取款系統(tǒng).doc
      將本文檔下載到自己電腦,方便修改和收藏,請(qǐng)勿使用迅雷等下載。
      點(diǎn)此處下載文檔

      文檔為doc格式


      聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔(dān)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進(jìn)行舉報(bào),并提供相關(guān)證據(jù),工作人員會(huì)在5個(gè)工作日內(nèi)聯(lián)系你,一經(jīng)查實(shí),本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

      相關(guān)范文推薦

        ATM自助取款機(jī)系統(tǒng)java代碼(大全)

        public void actionPerformed(ActionEvent e) //界面顯示控制 { String IC_Number=""; String password=""; String IC_No=""; z30.setVisible(false); float leftmoney=......

        Java課程設(shè)計(jì)報(bào)告

        課 程 設(shè) 計(jì) 課程名稱 Java語言課程設(shè)計(jì) 題目名稱 人事管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn) 學(xué)生學(xué)院 應(yīng)用數(shù)學(xué)學(xué)院 專業(yè)班級(jí) 學(xué) 號(hào) 學(xué)生姓名 指導(dǎo)教師 劉科峰 2014 年 10 月 29 日......

        java課程設(shè)計(jì)報(bào)告[本站推薦]

        《Java語言程序設(shè)計(jì)》 題 目:指導(dǎo)老師:姓 名:專 業(yè):班 級(jí):日 期:課程設(shè)計(jì)報(bào)告 目 錄 一、系統(tǒng)總體設(shè)計(jì) ....................................... 1 (一)設(shè)計(jì)目標(biāo)及完成功能..............

        Java課程設(shè)計(jì)報(bào)告

        《Java課程實(shí)習(xí)》報(bào)告 題目 學(xué)號(hào) 學(xué)生姓名 音樂播放器 201011621335 201011621329 200811621320 朱劍峰 薛文博 劉彬 聯(lián)系方式 *** *** *** 所在......

        java ATM機(jī)

        ATM柜員機(jī) 目 錄 1 課程設(shè)計(jì)過程概述 ................................................................................. 1 2 課程設(shè)計(jì)題目描述和基本設(shè)計(jì)要求 .............

        Java實(shí)習(xí)報(bào)告(ATM自動(dòng)柜員機(jī))

        JAVA 一、實(shí)習(xí)目的 1、將所學(xué)知識(shí)進(jìn)行一個(gè)系統(tǒng)的聯(lián)系。 2、培養(yǎng)學(xué)生分析問題和解決問題的能力,為學(xué)生提供了獨(dú)立實(shí)踐的機(jī)會(huì)。 3、理論聯(lián)系實(shí)際,鞏固所學(xué)知識(shí),提高學(xué)生處理處理......

        JAVA課程設(shè)計(jì)員工信息管理系統(tǒng)

        JAVA員工管理系統(tǒng) 實(shí)驗(yàn)報(bào)告 姓名:張旭冉 學(xué)號(hào):10105010117 班級(jí):信10-1 北方工業(yè)大學(xué)理學(xué)院信息與計(jì)算科學(xué)系 2013年 12月 17日 員工管理系統(tǒng) 一、實(shí)驗(yàn)?zāi)康?通過該課程設(shè)計(jì),使......

        人員信息管理系統(tǒng) java課程設(shè)計(jì)

        大學(xué)人員信息管理系統(tǒng) 1 / 29 目錄 目錄 ................................................................................................................................