




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、程序?qū)崿F(xiàn)其實(shí)并不是很難,主要是思路,對(duì)程序的各個(gè)功能的設(shè)計(jì),各個(gè)按鈕的處理事件及按鈕按照邏輯顯示出來(lái)和隱藏。服務(wù)器采用多線程并行機(jī)制,針對(duì)每個(gè)用戶登錄創(chuàng)建一個(gè)線程。程序代碼客戶端:importjavax.swing.*;.*;importjava.io.*;importjava.util.*;importjava.awt.event.*;importjava.awt.*;importjava.sql.*;importjava.math.*;importjavax.swing.*;classATMWindowsextendsJFrameimplementsActionListenerFontf;
2、Socketclint=null;DataOutputStreamout=null;DataInputStreamin=null;Connectioncon;Statementpre;ResultSetrs;inti,money;booleanb=true;/b的取值有0,1,共2個(gè)值分別告訴程序該吧數(shù)字鍵盤的輸入復(fù)制給username,password,Stringsusername=null;Stringspassword=null;Boxbox1,box2,box3,box11,box12;JPanelpanel1,panel2;JLabeltishi;JTextFieldusernam
3、e;JPasswordFieldpassword;JButtonn,queding,chaxun,qukuan,tuichu;ATMWindows(Strings)GraphicsEnvironmentge=GraphicsEnvironment.getLocalGraphicsEnvironment();Stringt=ge.getAvailableFontFamilyNames();f=newFont(t67,Font.BOLD,16);n=newJButton10;box1=Box.createVerticalBox();box2=Box.createHorizontalBox();bo
4、x3=Box.createVerticalBox();panel1=newJPanel();panel2=newJPanel();tishi=newJLabel("歡迎使用XX銀行!請(qǐng)輸入卡號(hào)。");tishi.setFont(f);username=newJTextField(20);password=newJPasswordField(20);panel1.setLayout(newGridLayout(3,3);panel2.setLayout(newGridLayout(4,1);for(i=1;i<n.length;i+)ni=newJButton(&quo
5、t;"+i);panel1.add(ni);ni.addActionListener(this);n0=newJButton("0");panel1.add(n0);n0.addActionListener(this);n0.setPreferredSize(newDimension(20,20);queding=newJButton("確定");chaxun=newJButton("查詢");/用戶輸入賬號(hào)和密碼后,點(diǎn)擊查詢按鈕登陸qukuan=newJButton("取款");tuichu=newJB
6、utton("退出");qukuan.show(false);chaxun.show(false);/初始化窗口后,賬號(hào)和密碼還沒(méi)輸入,不能用查詢按鈕登陸box1.add(tishi);tishi.setBounds(50,10,290,60);box1.add(username);username.setBounds(50,60,300,20);password.setBounds(60,60,300,20);panel2.add(queding);panel2.add(chaxun);panel2.add(qukuan);panel2.add(tuichu);box1.
7、setBounds(50,10,300,60);n0.setBounds(50,290,200,70);panel1.setBounds(50,80,200,210);panel2.setBounds(250,80,100,280);add(box1);add(panel1);add(panel2);add(n0);tuichu.addActionListener(this);queding.addActionListener(this);chaxun.addActionListener(this);qukuan.addActionListener(this);setLayout(null);
8、setTitle(s);setBounds(200,200,400,400);validate();setResizable(false);setVisible(true);setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);publicvoidactionPerformed(ActionEvente)if(e.getSource()=tuichu)/用戶退出,窗口不關(guān)閉,需要從新輸入賬號(hào)和密碼b=true;/用戶推出之后,從數(shù)字鍵輸入到usernamebox1.add(username);box1.remove(password);box1.v
9、alidate();username.setText(null);money=0;susername=null;spassword=null;tishi.setText("歡迎使用XX銀行!請(qǐng)輸入卡號(hào)。");chaxun.show(false);queding.show(true);qukuan.show(false);/用戶退出,查詢和取款按鈕不可見(jiàn)if(clint!=null)tryout.writeInt(-1);/服務(wù)器輸入數(shù)字-1,表示客戶已經(jīng)退出,服務(wù)器可以關(guān)閉該客戶的進(jìn)程catch(IOExceptione1)System.out.println(e1);el
10、seif(e.getSource()=queding)if(susername=null)susername=username.getText();username.setText(null);tishi.setText("請(qǐng)輸入密碼");b=false;/從數(shù)字鍵輸入到passwordbox1.remove(username);box1.add(password);box1.validate();password.setText(null);elseif(spassword=null)spassword=password.getText();chaxun.show(tru
11、e);b=true;/從數(shù)字鍵輸入到usernamequeding.show(false);tishi.setText("請(qǐng)點(diǎn)擊查詢按鈕登陸!");password.setText(null);elseintyue;try取款BigIntegern=newBigInteger(username.getText();yue=Value();if(yue>=0&&Value()>0)/余額大于等于0,表示用戶可以out.writeInt(Value();money=in.readInt();if(money&
12、lt;=yue)tishi.setText("取款成功,您的余額為:"+money);queding.show(false);username.setText(null);box1.validate();elseif(money=-3)/服務(wù)器連接數(shù)據(jù)庫(kù)錯(cuò)誤,取款失敗money=yue;tishi.setText("抱歉!服務(wù)器錯(cuò)誤,取款失敗。");username.setText(null);box1.validate();qukuan.show(false);queding.show(false);validate();elsequeding.sho
13、w(false);tishi.setText("操作失敗,您的余額為:"+money);username.setText(null);box1.remove(username);box1.validate();qukuan.show(true);validate();elsetishi.setText("輸入錯(cuò)誤,不能大于您的余額"+money);qukuan.show(true);queding.show(false);chaxun.show(false);username.setText(null);validate();catch(IOExcept
14、ione1)"+money);tishi.setText("輸入錯(cuò)誤,不能大于您的余額qukuan.show(true);queding.show(false);chaxun.show(false);username.setText(null);validate();System.out.println(e1);elseif(e.getSource()=qukuan)tishi.setText("請(qǐng)輸入取款金額然后點(diǎn)擊確定。");box1.remove(password);box1.add(username);box1.validate();box1.r
15、emove(username);box1.add(username);box1.validate();username.setText(null);qukuan.show(false);queding.show(true);elseif(e.getSource()=chaxun)tryclint=newSocket("localhost",4333);in=newDataInputStream(clint.getInputStream();out=newDataOutputStream(clint.getOutputStream();tishi.setText("
16、連接到服務(wù)器");catch(IOExceptione1)tishi.setText("無(wú)法連接到服務(wù)器!");tryout.writeUTF(susername);out.writeUTF(spassword);money=in.readInt();if(money>=0)tishi.setText("登陸成功,您當(dāng)前余額為:"+money);chaxun.show(false);qukuan.show(true);box1.remove(password);box1.validate();return;elseif(money=-1)
17、tishi.setText("卡號(hào)錯(cuò)誤請(qǐng)從新輸入卡號(hào)和密碼");susername=null;spassword=null;box1.remove(password);box1.add(username);box1.validate();password.setText(null);username.setText(null);queding.show(true);chaxun.show(false);validate();return;elseif(money=-2)tishi.setText("密碼錯(cuò)誤請(qǐng)從新輸入密碼!");spassword=nul
18、l;password.setText(null);chaxun.show(false);queding.show(true);b=false;/用戶輸入密碼錯(cuò)誤,數(shù)字鍵盤輸入到passwordreturn;elsetishi.setText("抱歉!服務(wù)器錯(cuò)誤,暫停服務(wù)。");queding.show(true);susername=null;spassword=null;box1.remove(password);box1.add(username);box1.validate();username.setText(null);chaxun.show(false);ret
19、urn;catch(IOExceptione1)System.out.println(e1);elsefor(i=0;i<n.length;i+)if(b)if(e.getSource()=ni)username.setText(username.getText()+i);return;elseif(e.getSource()=ni)password.setText(password.getText()+i);return;publicclassATMpublicstaticvoidmain(Stringargs)ATMWindowsatm=newATMWindows("ATM
20、");服務(wù)器:importjavax.swing.*;.*;importjava.io.*;importjava.util.*;importjava.util.Date;importjava.awt.event.*;importjava.awt.*;importjava.sql.*;importjava.math.*;importjavax.swing.*;importjava.text.SimpleDateFormat;publicclassATMServerpublicstaticvoidmain(Stringags)ServerSocketserver=null;Sockety
21、ou=null;while(true)tryserver=newServerSocket(4333);catch(IOExceptione)System.out.println("正在監(jiān)聽(tīng)");tryyou=server.accept();catch(IOExceptione)System.out.println("正在等待客戶");if(you!=null)newServerThread(you).start();classServerThreadextendsThreadDBdb=newDB();intb,money;ResultSetrs;Sock
22、etsocket;DataOutputStreamout=null;DataInputStreamin=null;Stringsusername=null;Stringspassword=null;ServerThread(Socketyou)tryin=newDataInputStream(you.getInputStream();out=newDataOutputStream(you.getOutputStream();catch(IOExceptione)System.out.println(e);publicvoidrun()trysusername=in.readUTF();spas
23、sword=in.readUTF();System.out.println(susername);if(db.connect()=1)/數(shù)據(jù)庫(kù)連接成功b=db.select(susername,spassword);db.close();out.writeInt(b);if(b>=0)/用戶賬號(hào)和密碼正確,登陸成功,等待取款while(true)money=in.readInt();if(money>=0)/客戶端輸入大于等于0時(shí),準(zhǔn)備取款,update數(shù)據(jù)庫(kù)db.connect();money=db.select(susername,spassword)-money;if(db.
24、update(money,susername)>0)/數(shù)據(jù)庫(kù)update成功,返回操作后的余額給客戶端System.out.println("數(shù)據(jù)庫(kù)update成功,返回操作后的余額給客戶端");out.writeInt(db.select(susername,spassword);else/數(shù)據(jù)庫(kù)update失敗,返回當(dāng)前余額給客戶端out.writeInt(db.select(susername,spassword);db.close();elseif(money=-1)/用戶已在客戶端退出db.close();System.out.println("此
25、用戶已經(jīng)退出終端,線程自動(dòng)結(jié)束");break;elseif(b=-3)db.close();System.out.println("數(shù)據(jù)庫(kù)錯(cuò)誤,用戶登陸失敗,自動(dòng)關(guān)閉連接線程");else/用戶驗(yàn)證失敗db.close();System.out.println("賬號(hào)或者密碼錯(cuò)誤,用戶登陸失敗,自動(dòng)關(guān)閉連接線程");elseout.writeInt(-3);/用-3表示數(shù)據(jù)庫(kù)連接失敗,通知客戶端暫停使用catch(IOExceptione)System.out.println(e);classDBConnectioncon;PreparedS
26、tatementpre;ResultSetrs=null;Stringsql=null;DB()publicintconnect()tryClass.forName("sun.jdbc.odbc.JdbcOdbcDriver");catch(ClassNotFoundExceptione)System.out.println(""+e);return0;trycon=DriverManager.getConnection("jdbc:odbc:user","","");System.out.pr
27、intln("數(shù)據(jù)庫(kù)連接成功");return1;catch(SQLExceptione)System.out.println(e);return0;publicintselect(Stringsusername,Stringspassword)trypre=con.prepareStatement("SELECT*FROMuserWHEREusername=?");pre.setString(1,susername);rs=pre.executeQuery();while(rs.next()if(spassword.equals(rs.getString(3)returnrs.getInt("usermoney");/密碼正確,返回余額給客戶端elsereturn-2;/用-2表示密碼錯(cuò)誤catch(SQLExceptione)System.out.println(e);return-3;/數(shù)據(jù)庫(kù)錯(cuò)誤,return-1;/用-1表示賬號(hào)錯(cuò)誤publicintupdate(intmoney,Stringsusername)try
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年上半年安徽省宿州碭山縣人武部縣總工會(huì)縣法院招聘10人易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 2025年上半年安徽淮南市壽縣縣直機(jī)關(guān)事業(yè)單位選調(diào)工作人員23人易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 2025年TOD自動(dòng)在線監(jiān)測(cè)儀項(xiàng)目合作計(jì)劃書
- 2025年上半年安徽合肥市大數(shù)據(jù)資產(chǎn)運(yùn)營(yíng)限公司招聘16人易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 2025年數(shù)碼生物顯微鏡項(xiàng)目可行性研究報(bào)告
- 2025年奶牛耳牌項(xiàng)目可行性研究報(bào)告
- 2025年便攜式VOC檢測(cè)儀項(xiàng)目可行性研究報(bào)告
- 高中化學(xué)1.2.2研究物質(zhì)性質(zhì)的基本程序?qū)W案2魯科版必修第一冊(cè)
- 2024江西撫州市市屬國(guó)有企業(yè)招聘員工專業(yè)筆試參考題庫(kù)附帶答案詳解
- 2024年甘肅蘭州野生動(dòng)物園管理有限公司招聘人員及擬錄用情況筆試參考題庫(kù)附帶答案詳解
- 無(wú)人機(jī)興趣班課件:第1節(jié)無(wú)人機(jī)介紹與現(xiàn)代無(wú)人機(jī)知識(shí)
- 2024年公共管理學(xué)考試題庫(kù)及答案
- 《第2節(jié) 在信息海洋中獲取信息》教學(xué)設(shè)計(jì)-2023-2024學(xué)年北師大初中信息技術(shù)七年級(jí)下冊(cè)
- 《主題三 我的畢業(yè)季》教學(xué)設(shè)計(jì)-2023-2024學(xué)年六年級(jí)下冊(cè)綜合實(shí)踐活動(dòng)遼師大版
- 義務(wù)教育小學(xué)科學(xué)2022年修訂版課程標(biāo)準(zhǔn)
- 各類學(xué)校校園安全應(yīng)急預(yù)案匯編-(附應(yīng)急全套流程圖)
- ??浦a(chǎn)士進(jìn)修匯報(bào)
- 《同步備課:撬重物的竅門》參考教案
- DL∕T 1250-2013 氣體絕緣金屬封閉開(kāi)關(guān)設(shè)備帶電超聲局部放電檢測(cè)應(yīng)用導(dǎo)則
- 護(hù)士法律法規(guī)培訓(xùn)一
- SL+336-2006水土保持工程質(zhì)量評(píng)定規(guī)程
評(píng)論
0/150
提交評(píng)論