版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
目錄TOC\o"1-3"\u1課程設(shè)計(jì)題目描述和基本設(shè)計(jì)要求 2系統(tǒng)需求分析 2.1功能需求分析 2.2其他需求分析 3系統(tǒng)設(shè)計(jì) 3.1總體設(shè)計(jì) 3.2ATM柜員機(jī)界面設(shè)計(jì) 3.3各功能模塊設(shè)計(jì) 3.3.1登陸頁(yè)面模塊設(shè)計(jì) 3.3.2選擇服務(wù)模塊設(shè)計(jì) 3.3.3取款模塊設(shè)計(jì) 3.3.4退卡模塊設(shè)計(jì) 3.4異常處理情況說明 4系統(tǒng)實(shí)現(xiàn)與測(cè)試 5總程序 6課程設(shè)計(jì)總結(jié) 6.1遇到的問題及解決辦法 6.2心得體會(huì) ATM柜員機(jī)1課程設(shè)計(jì)題目描述和基本設(shè)計(jì)要求ATM柜員機(jī)主要是由各個(gè)Windows窗口組成,它是由登錄頁(yè)面、選擇服務(wù)、取款、查詢余額、修改密碼和退卡等功能。它的各種按鈕的事件和功能可以簡(jiǎn)單的模擬ATM柜員機(jī)的要求。2系統(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運(yùn)行環(huán)境:Windows2000以上能實(shí)現(xiàn)用戶所定義的各項(xiàng)需求。(3)界面要求以Windows窗口形式顯示,標(biāo)題欄為ATM柜員機(jī)名稱,右上角有最小化按鈕、最大化按鈕、關(guān)閉按鈕,不同的窗口中有不同的按鈕和選擇菜單。3系統(tǒng)設(shè)計(jì)3.1總體設(shè)計(jì)我所設(shè)計(jì)的ATM柜員機(jī)主要是由登錄頁(yè)面模塊還由選擇服務(wù)模塊組成,其中選擇服務(wù)模塊又由取款模塊、查詢余額模塊、修改密碼模塊、退卡模塊組成。其功能結(jié)構(gòu)圖如下所示: 圖1ATM功能結(jié)構(gòu)示意圖3.2ATM柜員機(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(Strings,Accountact){super(“ATM柜員機(jī)”);}、Selection(Strings,Accountact){ super(s);}向Frame窗口中添加組件使用add()。例如:button1=newButton("存款"); 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(newWindowAdapter()//窗口偵聽器,以從此窗口接收窗口事件{publicvoidwindowClosing(WindowEvente)//處理窗口關(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(ActionEvente)方法,在這個(gè)方法中調(diào)用e.getSource()或e.getActionCommand()來判斷用戶點(diǎn)擊的菜單子項(xiàng),并完成這個(gè)菜單子項(xiàng)定義的操作。3.3各功能模塊設(shè)計(jì)3.3.1登陸頁(yè)面模塊設(shè)計(jì)與ATM柜員機(jī)打交道比較多的,也是大家對(duì)安全比較關(guān)心的問題:密碼。所以第一個(gè)界面就是要輸入密碼和卡號(hào)才能繼續(xù)服務(wù)。我定義了文本框累的對(duì)象tf1,tf2。抓藥是用于輸入單行的文本;文本區(qū)調(diào)用publicStringgetText()方法,獲取用戶想要的字符串。用來判斷輸入的密碼和卡號(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ì)象,并將它傳遞給方法publicvoidactionPerformed(ActionEvente)中的參數(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ù)庫(kù)訪問時(shí)的異常處理需要處理的異常:SQLException(3)加載類時(shí)的異常處理需要處理的異常:ClassNotFindException,當(dāng)應(yīng)用程序試圖使用Class類中的forName方法通過字符串名加載類時(shí),但是沒有找到具有指定名稱的類的定義。(4)加載URL時(shí)的異常需要處理的異常:MalformedURLException,拋出這一異常指示出現(xiàn)了錯(cuò)誤的URL。或者在規(guī)范字符串中找不到任何合法協(xié)議,或者無法分析字符串。4系統(tǒng)實(shí)現(xiàn)與測(cè)試編譯運(yùn)行程序后,將會(huì)看到如下的界面,如圖2所示。如果輸入的密碼或卡號(hào)不正確的話就會(huì)報(bào)右下圖的錯(cuò)誤。圖2主界面—登陸頁(yè)面(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)行正常。5.總程序packageZDC;//主菜單importjava.awt.*;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.sql.Statement;importjavax.swing.*;importjava.awt.event.*;classPanel1extendsJPanel{JLabellabel1,label2;Panel1(){setLayout(newGridLayout(4,1));label1=newJLabel(""+"銀行存取款系統(tǒng)");label2=newJLabel(""+"歡迎你成為本行用戶,你可以選擇中文或英文方式");add(newJLabel());add(label1);add(label2);add(newJLabel());}}classPanel2extendsJPanel{JButtonbutton1,button2;Panel2(){setLayout(newGridLayout(3,6));button1=newJButton("中文");button2=newJButton("英文");add(newJLabel());add(newJLabel());add(newJLabel());add(newJLabel());add(newJLabel());add(newJLabel());add(newJLabel());add(button1);add(newJLabel());add(newJLabel());add(button2);add(newJLabel());add(newJLabel());add(newJLabel());add(newJLabel());add(newJLabel());add(newJLabel());add(newJLabel());}}classClientextendsJFrameimplementsActionListener{Panel1panel1;Panel2panel2;JFrameframe;Client(Strings){super(s);Containercon=this.getContentPane();con.setLayout(newGridLayout(2,1));panel1=newPanel1();panel2=newPanel2();con.add(panel1);con.add(panel2);panel2.button1.addActionListener(this);panel2.button2.addActionListener(this);this.setVisible(true);this.pack();}publicvoidactionPerformed(ActionEvente){if(e.getActionCommand()=="中文"){this.setVisible(false);newClient00("輸入密碼");}elseif(e.getActionCommand()=="英文"){StringinputValue=JOptionPane.showInputDialog("Pleaseinputavalue");}}}publicclassmenu{publicstaticvoidmain(String[]args){newClient("用戶取款系統(tǒng)");}}packageZDC;//輸入密碼界面importjava.awt.*;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.sql.Statement;importjavax.swing.*;importjava.awt.event.*;classPanel01extendsJPanel{ JLabellabel1,label2,label3,label4;JPasswordFieldtextA;JTextFieldtextC; staticJTextFieldtextB;chart[]=newchar[4]; Panel01(){ setLayout(newGridLayout(4,4)); for(inti=0;i<4;i++){t[i]=(char)(Math.random()*26+'a');} Stringmm=newString(t); label2=newJLabel("請(qǐng)輸入卡號(hào):");label1=newJLabel("請(qǐng)輸入密碼:"); label3=newJLabel();label4=newJLabel("請(qǐng)輸入驗(yàn)證碼:");label3.setBackground(Color.white); label3.setForeground(Color.red); textC=newJTextField(10);textC.setForeground(Color.blue); label3.setText(mm); textA=newJPasswordField(6);textA.setEchoChar('*');textB=newJTextField(""); for(inti=0;i<5;i++){add(newJLabel());} add(label2);add(textB);add(newJLabel());add(newJLabel()); add(label1);add(textA);add(newJLabel());add(newJLabel()); add(label4);add(textC);add(label3); } } classPanel02extendsJPanel{ JButtonbutton1,button2; Panel02(){ setLayout(newGridLayout(3,6)); button1=newJButton("確定");button2=newJButton("取消"); for(inti=0;i<7;i++){add(newJLabel());}add(button1);add(newJLabel());add(newJLabel()); add(button2);for(inti=0;i<6;i++){add(newJLabel());} } } classClient00extendsJFrameimplementsActionListener{ Panel01panel1;Panel02panel2;JFrameframe;inti=0,j=0; Client00(Strings){ super(s); Containercon=this.getContentPane(); con.setLayout(newGridLayout(2,1)); panel1=newPanel01();panel2=newPanel02(); con.add(panel1);con.add(panel2); panel2.button1.addActionListener(this); panel2.button2.addActionListener(this); this.setVisible(true);this.pack(); } publicvoidactionPerformed(ActionEvente){ char[]passwords=panel1.textA.getPassword();Stringpassword=newString("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)重新輸入。");} elseif(e.getActionCommand()=="取消"){this.setVisible(false);newClient08("");} } publicvoidheshi(){ if(panel1.textA.getText().equals("")||panel1.textB.getText().equals("")) {JOptionPane.showMessageDialog(frame,"請(qǐng)輸入賬號(hào)、密碼!"); return;} try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connectioncon=DriverManager.getConnection("jdbc:odbc:hello","","");//連接數(shù)據(jù)庫(kù) Statementsql=con.createStatement(); Stringql=panel1.textB.getText(); ResultSetrs=sql.executeQuery("selectcnimafromcardwherecno="+ql+""); if(rs.next()){ Stringqerycmima=panel1.textA.getText(); Strings=rs.getString(1); if(qerycmima.equals(s)){ JOptionPane.showMessageDialog(frame,"連接成功!"); this.setVisible(false);newClient01("用戶取款系統(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(SQLExceptiong){ System.out.println("ECode"+g.getErrorCode()); System.out.println("EM"+g.getMessage()); }catch(Exceptione){ e.printStackTrace(); } } } classInputpassword{ publicstaticvoidmain(String[]args){ newClient00("用戶取款系統(tǒng)"); }}packageZDC;//選擇界面importjava.awt.*;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.sql.Statement;importjavax.swing.*;importjava.awt.event.*;classPanel03extendsJPanel{ JButtonbutton1,button2,button3,button4,button5; Panel03(){ setLayout(newGridLayout(8,6)); button1=newJButton("查詢");button2=newJButton("取款"); button3=newJButton("轉(zhuǎn)賬");button4=newJButton("退出");button5=newJButton("存款"); for(inti=0;i<7;i++){add(newJLabel());}add(button1);add(newJLabel());add(newJLabel()); add(button2);for(inti=0;i<8;i++){add(newJLabel());}add(button3);add(newJLabel());add(newJLabel());add(button5); for(inti=0;i<17;i++){add(newJLabel());}add(button4);for(inti=0;i<7;i++){add(newJLabel());} } } classClient01extendsJFrameimplementsActionListener{ Panel03panel1;JFrameframe; Client01(Strings){ super(s); Containercon=this.getContentPane(); panel1=newPanel03();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(); } publicvoidactionPerformed(ActionEvente){ if(e.getActionCommand()=="取款"){ this.setVisible(false); newClient02("請(qǐng)選擇取款金額"); } elseif(e.getActionCommand()=="查詢"){ this.setVisible(false); newClient06("查詢服務(wù)"); } elseif(e.getActionCommand()=="存款"){ this.setVisible(false); newClient05("請(qǐng)選擇存款金額"); } elseif(e.getActionCommand()=="轉(zhuǎn)賬"){ this.setVisible(false); newClient04("用戶轉(zhuǎn)賬服務(wù)"); } elseif(e.getActionCommand()=="退出"){this.setVisible(false);newClient08("");} } } classSelectfunction{ publicstaticvoidmain(String[]args){ newClient01("用戶取款系統(tǒng)"); newClient01("用戶存款系統(tǒng)"); } }packageZDC;//查詢功能importjava.awt.*;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.sql.Statement;importjavax.swing.*;importZDC.Panel01;importjava.awt.event.*;classPanel06extendsJPanel{ JLabellabel1,label2;JTextFieldtextA;JFrameframe; Panel06(){ setLayout(newGridLayout(4,4));label1=newJLabel("你的余額為:"); textA=newJTextField(6); for(inti=0;i<5;i++){add(newJLabel());} add(label1);add(textA);for(inti=0;i<9;i++){add(newJLabel());} } } classPanel07extendsJPanel{ JButtonbutton1,button2; Panel07(){ setLayout(newGridLayout(3,6)); button1=newJButton("繼續(xù)");button2=newJButton("查詢"); for(inti=0;i<7;i++){add(newJLabel());}add(button2);add(newJLabel());add(newJLabel()); add(button1);for(inti=0;i<7;i++){add(newJLabel());} } } classClient03extendsJFrameimplementsActionListener{ Panel06panel1;Panel07panel2; Client03(Strings){ super(s); Containercon=this.getContentPane(); con.setLayout(newGridLayout(2,1)); panel1=newPanel06();panel2=newPanel07(); con.add(panel1);con.add(panel2); panel2.button1.addActionListener(this); panel2.button2.addActionListener(this); this.setVisible(true);this.pack(); } publicvoidactionPerformed(ActionEvente){ if(e.getActionCommand().equals("繼續(xù)")){ this.setVisible(false); newClient01("選擇服務(wù)種類"); } elseif(e.getActionCommand()=="查詢")showcjine(); } publicvoidshowcjine(){ //Stringurl="jdbc:odbc:driver={MicrosoftAccessDriver(*.mdb)};DBQ=bankSystem.mdb";//程序直接使用當(dāng)前類目錄下的數(shù)據(jù)庫(kù)文件 try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connectioncon=DriverManager.getConnection("jdbc:odbc:hello","","");//連接數(shù)據(jù)庫(kù) Statementsql=con.createStatement();Stringql=Panel01.textB.getText(); Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); ResultSetrs=sql.executeQuery("selectcjinefromcardwherecno="+ql+""); if(rs.next()){ Stringucjine=rs.getString(1); panel1.textA.setText(ucjine); } else{JOptionPane.showMessageDialog(null,"該用戶不存在","警告!",JOptionPane.YES_NO_OPTION);} con.close(); }catch(Exceptionex){ ex.printStackTrace(); } } } classSearchfunction{ publicstaticvoidmain(String[]args){ newClient03("用戶查詢服務(wù)"); }}packageZDC;//查詢信息importjava.awt.*;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.sql.Statement;importjavax.swing.*;importjava.awt.event.*;classPanel11extendsJPanel{ JButtonbutton1,button2; Panel11(){ setLayout(newGridLayout(10,5)); button1=newJButton("查詢余額"); button2=newJButton("查本卡信息"); for(inti=0;i<=16;i++)add(newJLabel()); add(button1); for(inti=0;i<=13;i++)add(newJLabel()); add(button2); for(inti=0;i<=16;i++)add(newJLabel()); } } classClient06extendsJFrameimplementsActionListener{ Panel11panel11;JFrameframe; Client06(Strings){ super(s); Containercon=this.getContentPane(); panel11=newPanel11(); con.add(panel11); panel11.button1.addActionListener(this); panel11.button2.addActionListener(this); this.setVisible(true);this.pack(); } publicvoidactionPerformed(ActionEvente){ if(e.getActionCommand()=="查詢余額"){ this.setVisible(false); newClient03("用戶查詢服務(wù)"); } elseif(e.getActionCommand()=="查本卡信息"){ this.setVisible(false); newClient07("本卡信息"); } } } classSearchinformation{ publicstaticvoidmain(String[]args){ newClient06("查詢服務(wù)"); } }packageZDC;//轉(zhuǎn)賬功能importjava.awt.*;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.sql.Statement;importjavax.swing.*;importZDC.Panel01;importjava.awt.event.*;classPanel08extendsJPanel{ JLabellabel1,label2;JTextFieldtextA,textB; Panel08(){ setLayout(newGridLayout(4,4)); label1=newJLabel("輸入預(yù)轉(zhuǎn)賬號(hào):");label2=newJLabel("輸入預(yù)轉(zhuǎn)金額:"); textA=newJTextField(6);textB=newJTextField(6); for(inti=0;i<5;i++){add(newJLabel());} add(label1);add(textA);for(inti=0;i<6;i++){add(newJLabel());} add(label2);add(textB);add(newJLabel()); } } classPanel09extendsJPanel{ JButtonbutton1,button2; Panel09(){ setLayout(newGridLayout(3,6)); button1=newJButton("確定");button2=newJButton("取消"); add(newJLabel());add(newJLabel());add(newJLabel());add(newJLabel());add(newJLabel()); add(newJLabel());add(newJLabel());add(button1);add(newJLabel());add(newJLabel()); add(button2);add(newJLabel());add(newJLabel());add(newJLabel());add(newJLabel()); add(newJLabel());add(newJLabel());add(newJLabel()); } } classClient04extendsJFrameimplementsActionListener{ Panel08panel1;Panel09panel2;JFrameframe; Client04(Strings){ super(s); Containercon=this.getContentPane(); con.setLayout(newGridLayout(2,1)); panel1=newPanel08();panel2=newPanel09(); con.add(panel1);con.add(panel2); panel2.button1.addActionListener(this); panel2.button2.addActionListener(this); this.setVisible(true);this.pack(); } publicvoidactionPerformed(ActionEvente){ if(e.getActionCommand().equals("確定")){ zhuanzhang();//程序根據(jù)輸入賬號(hào)調(diào)用數(shù)據(jù)庫(kù),修改對(duì)應(yīng)金額數(shù)。 this.setVisible(false); newClient01("用戶取款系統(tǒng)"); } elseif(e.getActionCommand()=="取消"){ this.setVisible(false); newClient01("用戶取款系統(tǒng)");} } publicvoidzhuanzhang(){ if(panel1.textA.getText().equals("")||panel1.textB.getText().equals("")) {JOptionPane.showMessageDialog(frame,"請(qǐng)輸入欲轉(zhuǎn)賬號(hào)、金額!"); return;} //Stringurl="jdbc:odbc:driver={MicrosoftAccessDriver(*.mdb)};DBQ=bankSystem.mdb";//程序直接使用當(dāng)前類目錄下的數(shù)據(jù)庫(kù)文件 try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connectioncon=DriverManager.getConnection("jdbc:odbc:hello","","");//連接數(shù)據(jù)庫(kù) Statementsql=con.createStatement(); Stringcno=panel1.textA.getText();Stringql=Panel01.textB.getText(); Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); ResultSetss=sql.executeQuery("selectcnofromcardwherecno="+cno+""); Stringyjine=panel1.textB.getText(); intshjin=Integer.parseInt(yjine); if(ss.next()){ ResultSetrs=sql.executeQuery("selectcjinefromcardwherecno="+ql+""); if(rs.next()){ Stringqueryjine=rs.getString(1); intqyjine=Integer.parseInt(queryjine); if(shjin<qyjine){ intnewcjine=qyjine-shjin;intnewcjine2=qyjine+shjin; Stringnewjine=String.valueOf(newcjine);Stringnewjine2=String.valueOf(newcjine2); sql.executeUpdate("updatecardsetcjine='"+newjine+"'wherecno="+ql+""); sql.executeUpdate("updatecardsetcjine='"+newjine2+"'wherecno="+cno+""); JOptionPane.showMessageDialog(frame,"操作已成功,謝謝使用!"); this.setVisible(false);newClient01("用戶取款系統(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,"該用戶不存在,請(qǐng)重新輸入。","警告!",JOptionPane.YES_NO_OPTION);panel1.textA.setText("");} }catch(Exceptionex){ ex.printStackTrace(); } } } classTransferfunction{ publicstaticvoidmain(String[]args){ newClient04("用戶轉(zhuǎn)賬服務(wù)");}}packageZDC;//用戶取款importjava.awt.*;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.sql.Statement;importjavax.swing.*;importZDC.Panel01;importjava.awt.event.*;classPanel04extendsJPanel{ JButtonbutton1,button2,button3,button4; Panel04(){ setLayout(newGridLayout(4,6)); button1=newJButton("100");button2=newJButton("200"); button3=newJButton("300");button4=newJButton("500"); for(inti=0;i<7;i++){add(newJLabel());}add(button1);add(newJLabel());add(newJLabel()); add(button2);for(inti=0;i<8;i++){add(newJLabel());}add(button3);add(newJLabel()); add(newJLabel());add(button4);add(newJLabel()); } } classPanel05extendsJPanel{ JButtonbutton1,button2,button3,button4; Panel05(){ setLayout(newGridLayout(4,6)); button1=newJButton("800");button2=newJButton("1000"); for(inti=0;i<7;i++){add(newJLabel());}add(button1);add(newJLabel());add(newJLabel()); add(button2);for(inti=0;i<13;i++){add(newJLabel());} } } classClient02extendsJFrameimplementsActionListener{ Panel04panel1;Panel05panel2;JFrameframe; Client02(Strings){ super(s); Containercon=this.getContentPane(); con.setLayout(newGridLayout(2,1)); panel1=newPanel04();panel2=newPanel05(); 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(); } publicvoidactionPerformed(ActionEvente){ if(e.getActionCommand()=="100"){ this.setVisible(false); qukuan();//程序根據(jù)輸入金額和輸入卡號(hào),修改數(shù)據(jù)庫(kù)。 newClient01("用戶取款系統(tǒng)"); } elseif(e.getActionCommand()=="200"){ this.setVisible(false); qukuan(); newClient01("用戶取款系統(tǒng)");} elseif(e.getActionCommand()=="300"){ this.setVisible(false); qukuan(); newClient01("用戶取款系統(tǒng)");} elseif(e.getActionCommand()=="500"){ this.setVisible(false); qukuan(); newClient01("用戶取款系統(tǒng)");} elseif(e.getActionCommand()=="800"){ this.setVisible(false); qukuan(); newClient01("用戶取款系統(tǒng)");} elseif(e.getActionCommand()=="1000"){ this.setVisible(false); qukuan(); newClient01("用戶取款系統(tǒng)");} } publicvoidqukuan(){ try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connectioncon=DriverManager.getConnection("jdbc:odbc:hello","","");//連接數(shù)據(jù)庫(kù) Statementsql=con.createStatement();Stringql=Panel01.textB.getText(); ResultSetrs=sql.executeQuery("selectcjinefromcardwherecno="+ql+""); if(rs.next()){ Stringmm=rs.getString(1); intnn=Integer.parseInt(mm); Stringqerycjine=panel1.button1.getActionCommand(); intqueryjine=Integer.parseInt(qerycjine); if(queryjine<nn){ intnewjine=nn-queryjine;Stringnewjin=String.valueOf(newjine); intupdateMima=sql.executeUpdate("updatecardsetcjine='"+newjin+"'wherecno="+ql+""); if(updateMima==1){ JOptionPane.showMessageDialog(frame,"操作已成功,謝謝使用!");} this.setVisible(false); newClient01("用戶取款系統(tǒng)"); } else{JOptionPane.showMessageDialog(null,"你的卡余額已不足,請(qǐng)注意!","警告!",JOptionPane.YES_NO_OPTION); this.setVisible(false); newClient01("用戶取款系統(tǒng)"); } con.close(); frame.repaint(); } }catch(SQLExceptiong){ System.out.println("ECode"+g.getErrorCode()); System.out.println("EM"+g.getMessage()); }catch(Exceptione){ e.printStackTrace(); } } } classWithdraw{ publicstaticvoidmain(String[]args){ newClient02("請(qǐng)選擇取款金額"); } }packageZDC;//存款功能importjava.awt.*;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.sql.Statement;importjavax.swing.*;importZDC.Panel01;importjava.awt.event.*;classPanel10extendsJPanel{ JButtonbutton1,button2,button3,button4; Panel10(){ setLayout(newGridLayout(4,6)); button1=newJButton("100");button2=newJButton("200"); button3=newJButton("300");button4=newJButton("500"); for(inti=0;i<7;i++){add(newJLabel());}add(button1);add(newJLabel());add(newJLabel()); add(button2);for(inti=0;i<8;i++){add(newJLabel());}add(button3);add(newJLabel()); add(newJLabel());add(button4);add(newJLabel()); } } classPanel14extendsJPanel{ JButtonbutton1,button2,button3,button4; Panel14(){ setLayout(newGridLayout(4,6)); button1=newJButton("800");button2=newJButton("1000"); for(inti=0;i<7;i++){add(newJLabel());}add(button1);add(newJLabel());add(newJLabel()); add(button2);for(inti=0;i<13;i++){add(newJLabel());} } } classClient05extendsJFrameimplementsActionListener{ Panel04panel1;Panel05panel2;JFrameframe; Client05(Strings){ super(s); Containercon=this.getContentPane(); con.setLayout(newGridLayout(2,1)); panel1=newPanel04();panel2=newPanel05(); 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(); } publicvoidactionPerformed(ActionEvente){ if(e.getActionCommand()=="100"){ this.setVisible(false); cunkuan();//程序根據(jù)輸入金額和輸入卡號(hào),修改數(shù)據(jù)庫(kù)。 newClient01("用戶存款系統(tǒng)"); } elseif(e.getActionCommand()=="200"){this.setVisible(false);newClient01("用戶存款系統(tǒng)");} //這里當(dāng)點(diǎn)擊取款金額200時(shí),程序返回上層操作界面。 } publicvoidcunkuan(){ try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connectioncon=DriverManager.getConnection("jdbc:odbc:hello","","");//連接數(shù)據(jù)庫(kù) Statementsql=con.createStatement();Stringql=Panel01.textB.getText(); ResultSetrs=sql.executeQuery("selectcjinefromcardwherecno="+ql+""); if(rs.next()){ Stringmm=rs.getString(1); intnn=Integer.parseInt(mm); Stringqerycjine=panel1.button1.getActionCommand(); intqueryjine=Integer.parseInt(qerycjine); intnewjine=nn+queryjine;Stringnewjin=String.valueOf(newjine); intupdateMima=sql.executeUpdate("updatecardsetcjine='"+newjin+"'wherecno="+ql+""); if(updateMima==1){ JOptionPane.showMessageDialog(frame,"操作已成功,謝謝使用!");} this.setVisible(false); newClient01("用戶存款系統(tǒng)"); } else{JOptionPane.showMessageDialog(null,"請(qǐng)注意!","警告!",JOptionPane.YES_NO_OPTION); this.setVisible(false); newClient01("用戶取款系統(tǒng)"); } con.close(); frame.repaint(); }catch(SQLExceptiong){ System.out.println("ECode"+g.getErrorCode()); System.out.println("EM"+g.getMessage()); }catch(Exceptione){ e.printStackTrace(); } } } classDepositfunction{ publicstaticvoidmain(String[]args){ newClient05("請(qǐng)選擇存款金額"); } }packageZDC;//顯示用戶信息importjava.awt.*;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.sql.Statement;importjavax.swing.*;importZDC.Panel01;importjava.awt.event.*;classPanel12extendsJPanel{ JLabellabel1,label2,label3,label4; JButtonbutton1,button2;JTextFieldtext1,text2,text3,text4; Panel12(){ setLayout(newGridLayout(9,6)); label1=newJLabel("顯示用戶名:");label2=newJLabel("顯示性別:"); label3=newJLabel("顯示身份證:");label4=newJLabel("顯示卡號(hào):"); button1=newJButton("查詢");text1=newJTextField("");text2=newJTextField(""); button2=newJButton("取消");text3=newJTextField("");text4=newJTextField(""); for(inti=0;i<8;i++)add(newJLabel());add(label1);add(text1); for(inti=0;i<4;i++)add(newJLabel());add(label2);add(text2); for(inti=0;i<4;i++)add(newJLabel());add(label3);add(text3); for(inti=0;i<4;i++)add(newJLabel());add(label4);add(text4); for(inti=0;i<15;i++)add(newJLabel());add(button1); add(newJLabel());add(newJLabel());add(button2); for(inti=0;i<7;i++)add(newJLabel()); } } classClient07extendsJFrameimplementsActionListener{ Panel12panel12;JFrameframe; Client07(Strings){ super(s); Containercon=this.getContentPane(); panel12=newPanel12(); con.add(panel12); panel12.button1.addActionListener(this); panel12.button2.addActionListener(this); this.set
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 23604-2024鈦及鈦合金產(chǎn)品力學(xué)性能試驗(yàn)取樣方法
- 黑龍江省綏化市望奎縣第五中學(xué)(五四學(xué)制)2024-2025學(xué)年九年級(jí)上學(xué)期期中數(shù)學(xué)試卷(含答案)
- 贛南師范大學(xué)《環(huán)境監(jiān)測(cè)》2022-2023學(xué)年第一學(xué)期期末試卷
- 阜陽師范大學(xué)《中小學(xué)音樂教材教法》2022-2023學(xué)年第一學(xué)期期末試卷
- 阜陽師范大學(xué)《經(jīng)濟(jì)數(shù)學(xué)一》2021-2022學(xué)年第一學(xué)期期末試卷
- 阜陽師范大學(xué)《表演基礎(chǔ)理論》2021-2022學(xué)年第一學(xué)期期末試卷
- 無錫市2024-2025學(xué)年五年級(jí)上學(xué)期11月期中調(diào)研數(shù)學(xué)試卷二(有答案)
- 福建師范大學(xué)協(xié)和學(xué)院《外貿(mào)單證實(shí)務(wù)模擬操作》2022-2023學(xué)年第一學(xué)期期末試卷
- 福建師范大學(xué)《中國(guó)地理》2022-2023學(xué)年第一學(xué)期期末試卷
- 福建師范大學(xué)《教育學(xué)含教師職業(yè)道德》2021-2022學(xué)年第一學(xué)期期末試卷
- 4.2海水的性質(zhì)第一課時(shí)教學(xué)設(shè)計(jì)高中地理人教版必修一
- 年度人力資源預(yù)算編制
- 愛麗絲夢(mèng)游仙境讀書分享
- 《狂犬病暴露預(yù)防處置工作規(guī)范(2023年版)》解讀課件
- 學(xué)籍信息更改申請(qǐng)表
- 氣候年景評(píng)估方法
- 一例骶尾部Ⅳ期壓瘡患者傷口的護(hù)理
- 中學(xué)開展性別平等教育的工作情況匯報(bào)多篇合集
- 高中化學(xué)課程思政的內(nèi)涵及實(shí)施
- 仿生科學(xué)與技術(shù)
- 2017年單獨(dú)招生考試技能模擬試題3
評(píng)論
0/150
提交評(píng)論