




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
課程設(shè)計(大作業(yè))匯報課程名稱:面向?qū)ο蟪绦蛟O(shè)計課程設(shè)計設(shè)計題目:ATM柜員機(jī)模擬程序院系:信息技術(shù)學(xué)院班級:設(shè)計者:學(xué)號:指導(dǎo)老師:設(shè)計時間:-1-4--1-8信息技術(shù)學(xué)院昆明學(xué)院課程設(shè)計(大作業(yè))任務(wù)書姓名: 院(系):信息技術(shù)學(xué)院專業(yè):計算機(jī)科學(xué)和技術(shù) 學(xué)號:任務(wù)起止日期:-1-4--1-8課程設(shè)計題目:設(shè)計一個ATM柜員機(jī)模擬程序,實現(xiàn)系統(tǒng)登錄、余額查詢、ATM取款、ATM存款、修改密碼等部分ATM柜員機(jī)基礎(chǔ)功效,模擬ATM工作原理和人機(jī)交互。課程設(shè)計要求:使用圖形用戶界面。當(dāng)輸入給定卡號和密碼(初始卡號和密碼為123456)時,系統(tǒng)能登錄ATM柜員機(jī)系統(tǒng),用戶能夠根據(jù)以下規(guī)則進(jìn)行:1、查詢余額:初始余額為10000元2、ATM取款:每次取款金額為100倍數(shù),總額不超出5000元,支取金額不許可透支。3、ATM存款:不能出現(xiàn)負(fù)存款。4、修改密碼:新密碼長度大于6位,不許可出現(xiàn)6位完全相同情況,只有舊密碼正確,新密碼符合要求,且兩次輸入相同情況下才能夠成功修改密碼。工作計劃及安排:1月4號,老師部署任務(wù)、講授設(shè)計內(nèi)容。1月5號,查閱資料,進(jìn)行初步設(shè)想并畫出步驟圖。1月6號,具體設(shè)計,創(chuàng)建各個類、編寫程序代碼。1月7號,測試,對程序進(jìn)行調(diào)試、運(yùn)行并進(jìn)行對應(yīng)分析。1月8號,書寫課程設(shè)計匯報,驗收、考評及答辯。指導(dǎo)老師簽字年月日
課程設(shè)計(大作業(yè))成績學(xué)號: 姓名: 指導(dǎo)老師:課程設(shè)計題目:設(shè)計一個ATM柜員機(jī)模擬程序,實現(xiàn)系統(tǒng)登錄、余額查詢、ATM取款、ATM存款、修改密碼等部分ATM柜員機(jī)基礎(chǔ)功效,模擬ATM工作原理和人機(jī)交互??偨Y(jié):經(jīng)過為時一周課程設(shè)計,我受益匪淺,把平時所學(xué)知識通通利用了進(jìn)來,即使平時積淀知識點(diǎn)比較少、比較單一,不過在這次試驗中把零零碎碎知識全部連貫起來了,也達(dá)成了課程設(shè)計目標(biāo),最關(guān)鍵是經(jīng)過一周努力我最終用面向?qū)ο蟪绦蛟O(shè)計知識做出了這個“ATM柜員機(jī)模擬系統(tǒng)”。因為知識積淀比較少,且有些知識掌握不太牢靠,記憶模模糊糊,最終決定惡補(bǔ)一下落下知識點(diǎn)再進(jìn)行程序設(shè)計。第一天,去圖書館借了相關(guān)圖書,把知識點(diǎn)打牢,然后參考了相同多個實例,并進(jìn)行了部分分析和總結(jié)?;A(chǔ)功課做好以后第二天正式開工,選定好了題目,進(jìn)行方法選擇、框架設(shè)計、畫出步驟圖、UML圖,進(jìn)行了初步程序設(shè)計構(gòu)想。第三天,編寫程序代碼,這個過程我認(rèn)為是最艱苦,因為代碼太多,還有API接口不是很熟悉,所以要常常翻閱手冊,花費(fèi)了很多時間。程序一不小心就會犯錯不能運(yùn)行,還需要認(rèn)真檢驗,細(xì)心細(xì)心加細(xì)心才能做好。反復(fù)進(jìn)行分析調(diào)試,最終一天把程序調(diào)試經(jīng)過后,進(jìn)行課程設(shè)計匯報撰寫。即使很幸苦不過,最終結(jié)果還是令人滿意,最終感謝指導(dǎo)老師對我們幫助和支持。指導(dǎo)老師評語:成績:填表時間: 指導(dǎo)老師署名:
課程設(shè)計(大作業(yè))匯報題目分析1.系統(tǒng)需求分析(1)設(shè)計目標(biāo):伴隨市場經(jīng)濟(jì)繁榮發(fā)展,大家物質(zhì)生活得到極大提升,手中剩下資金也日益增多。受傳統(tǒng)觀念影響,絕大多數(shù)人喜愛把資金投進(jìn)銀行,而在需要使用現(xiàn)金時候再到銀行提取現(xiàn)金。這就造成銀行業(yè)務(wù)急劇增加。即使銀行網(wǎng)點(diǎn)越來越多,銀行工作效率也伴隨信息化有較顯著增加,不過依舊不能滿足廣大用戶需要。而一味增加營業(yè)網(wǎng)點(diǎn),從理論上即使能稍微緩解銀行壓力,不過治標(biāo)不治本,而且每增加一個網(wǎng)點(diǎn),不僅要付出昂貴資金成本,還需要長久投入人力資本,成本很之昂貴。這時候就迫切需要一個自動,易于普及,低成本設(shè)備來處理這一問題。于是ATM機(jī)系統(tǒng)應(yīng)運(yùn)而生了。自動柜員機(jī),即ATM,是指銀行在不一樣地點(diǎn)設(shè)置一個小型機(jī)器,利用一張信用卡大小膠卡上磁帶統(tǒng)計用戶基礎(chǔ)戶口資料(通常就是銀行卡),讓用戶能夠透過機(jī)器進(jìn)行提款、存款、轉(zhuǎn)賬等銀行柜臺服務(wù),大多數(shù)用戶全部把這種自助機(jī)器稱為自動提款機(jī)。本文正是經(jīng)過設(shè)計一個ATM模擬模擬程序來實現(xiàn)ATM機(jī)系統(tǒng)基礎(chǔ)功效,充足利用自己所學(xué)Java知識進(jìn)行設(shè)計編程。(2)題目設(shè)計要求:本ATM柜員機(jī)關(guān)鍵功效以下所述:要求使用圖形用戶界面。當(dāng)輸入給定卡號和密碼(初始卡號和密碼為123456)時,系統(tǒng)能登錄ATM柜員機(jī)系統(tǒng),用戶能夠根據(jù)以下規(guī)則進(jìn)行:查詢余額:初始余額為10000元。ATM取款:每次取款金額為100倍數(shù),總額不超出5000元,支取金額不許可透支。ATM存款:不能出現(xiàn)負(fù)存款。修改密碼:新密碼長度大于6位,不許可出現(xiàn)6位完全相同情況,只有舊密碼正確,新密碼符合要求,且兩次輸入相同情況下才能夠成功修改密碼。2.ATM模擬系統(tǒng)總體設(shè)計結(jié)構(gòu)(1)設(shè)計思想:經(jīng)過程序要求,我們能夠清楚知道此次設(shè)計ATM柜員模擬程序需要實現(xiàn)四大功效,即查詢余額、取款、存款、修改密碼。首次之外,作為ATM系統(tǒng),還需要最基礎(chǔ)兩大功效,即登陸和退出。依據(jù)上述功效分析,我們能夠把整個ATM系統(tǒng)分為登陸模塊、查詢模塊、取款模塊、存款模塊、修改密碼模塊。除此之外,還有在登陸系統(tǒng)后功效選擇模塊,退出功效則鑲嵌在各個需要模塊中。因為各個模塊功效實現(xiàn)是經(jīng)過界面顯示出來,則程序設(shè)計又能夠了解為幾大界面設(shè)計:登陸界面、主界面、查詢余額界面、取款界面、存款界面、修改密碼界面。除了幾大界面之外,還有系統(tǒng)初始化,關(guān)鍵是初始卡號、密碼設(shè)定等。在程序大致框架確定以后,我們需要了解各個模塊所要實現(xiàn)和需要含有功效。依據(jù)現(xiàn)有銀行ATM系統(tǒng),我們能夠很快就能夠了解此次設(shè)計ATM系統(tǒng)應(yīng)該含有操作。a.登陸界面用戶輸入正確賬號和密碼就能夠登錄到該系統(tǒng)主界面中去,進(jìn)行對應(yīng)操作:取款、存款、查詢、修改密碼。b.主界面主界面包含查詢、存款、取款、修改密碼、退出功效按鈕,按下對應(yīng)按鈕,能夠進(jìn)行對應(yīng)操作。c.查詢界面在主界面中按下查詢按鈕能夠進(jìn)行查詢操作。經(jīng)過查詢功效我們能夠查詢賬戶余額,在查詢過程中我們能夠選擇取款業(yè)務(wù),除此之外,查詢界面之中還有返回和退出操作。返回操作會使用戶回到主界面,退出操作會使用戶直接回到登陸界面。d.取款界面取款界面既能夠經(jīng)過主界面進(jìn)入,也能夠經(jīng)過查詢、存款等操作過程中界面進(jìn)入。取款功效在對話框中輸入你想要取出金額,不過次金額不能夠比賬戶余額大,且必需是100整數(shù)倍,取款完成,會彈出是否顯示余額提醒,選“是”話就會進(jìn)入查詢界面,選“否”話,則回到主界面。e.存款界面在主界面按下存款按鈕能夠進(jìn)行存款操作,在對話中輸入你需要存入金額,所輸入數(shù)字也要是100整數(shù)倍,而且不能夠是負(fù)數(shù)。存款完成,會彈出是否顯示余額提醒,選“是”話就會進(jìn)入查詢界面,選“否”話,則回到主界面。f.修改密碼選擇修改密碼按鈕能夠進(jìn)行修改密碼房,不過要先輸入就密碼正確而且兩次輸入新密碼一致才能夠修改密碼。修改完成后,會返回主界面。(2)ATM柜員機(jī)總體步驟圖,圖圖1圖1(3)ATM柜員機(jī)模擬模擬系統(tǒng)UML圖,圖圖2圖23.系統(tǒng)開發(fā)及運(yùn)行環(huán)境軟件平臺:Eclipse,jdk全套軟件,editpuls編輯器Eclipse是一個開放源代碼、基于Java可擴(kuò)展開發(fā)平臺。就其本身而言,它只是一個框架和一組服務(wù),用于經(jīng)過插件組件構(gòu)建開發(fā)環(huán)境。幸運(yùn)是,Eclipse附帶了一個標(biāo)準(zhǔn)插件集,包含Java開發(fā)工具(JavaDevelopmentKit,JDK)。Eclipse是著名跨平臺自由集成開發(fā)環(huán)境(IDE)。最初關(guān)鍵用來Java語言開發(fā),經(jīng)過安裝不一樣插件Eclipse能夠支持不一樣計算機(jī)語言,比如C++和Python等開發(fā)工具。Eclipse本身只是一個框架平臺,不過眾多插件支持使得Eclipse擁有其它功效相對固定IDE軟件極難含有靈活性。很多軟件開發(fā)商以Eclipse為框架開發(fā)自己IDE。圖3二、各模塊分析和實現(xiàn)1.系統(tǒng)各模塊介紹代碼中出現(xiàn)Account類、MainFrame類、Load類、Take類、Input類、Setpew類和Display類全部繼承了Java類JFrame。(1)賬戶創(chuàng)建模塊ClassAccout創(chuàng)建用戶,初始化用戶信息功效和保留用戶信息,比如:卡號、密碼、原有余額、取款后卡里余額和存款后卡里余額。這類包含組員有:組員變量account、count、password和方法結(jié)構(gòu)方法Account()。實現(xiàn)了賬戶信息初始化工作,設(shè)置默認(rèn)賬戶信息,賬號:123456,密碼:123456。方便后續(xù)測試登陸時作為進(jìn)入ATM模擬系統(tǒng)信息憑證。創(chuàng)建賬戶關(guān)鍵代碼:classAccount{privateintcount=10000;//初始賬戶余額10000privateStringaccount="123456";//初始賬號privateStringpassword="123456";//初始密碼publicAccount(){//賬戶函數(shù)}publicvoidsetpw(Stringpassword){//設(shè)置密碼this.password=password;}publicvoiddeccount(intmoney){//deccount取款count-=money;//取款后再原來基礎(chǔ)上減所取部分}publicvoidreccount(intmoney){//reccount存款count+=money;//存款后在原來基礎(chǔ)上加所存部分 }(2)主界面結(jié)構(gòu)模塊ClassMainFrame結(jié)構(gòu)主界面,提供業(yè)務(wù)選擇,讓用戶能夠在這個界面選擇存款、取款、查詢余額、修改密碼。它包含組員有:結(jié)構(gòu)方法MainFrame()和初始化主界面方法initComponents()和組員變量checked、cunkuan、quite、qukuan、reset。實現(xiàn)功效關(guān)鍵為主界面初始化,主界面布局管理,設(shè)置好查詢、存款、取款、退出、返回操作按鈕。關(guān)鍵代碼:classMainFrameextendsJFrame{//主框架方法由JFrame繼承而來publicJButtonchecked;//檢測publicJButtoncunkuan;//存款publicJButtonquit;//退出publicJButtonqukuan;//取款publicJButtonreset;//重設(shè)//框架按鈕參數(shù)publicMainFrame(){//主框架函數(shù)initComponents();//添加組件this.setLocationRelativeTo(null);//設(shè)置窗口相對于指定組件位置this.setVisible(false);//隱藏其它窗口}(3)登陸模塊ClassLoad實現(xiàn)登錄功效和登錄界面,假如用戶名和密碼匹配就能夠登錄到主界面不然報錯。它組員有:Jpassword、accountnum、committ、JL1、JL2和結(jié)構(gòu)方法Load()和初始化方法initComponents()。關(guān)鍵代碼:classLoadextendsJFrame{ publicJPasswordFieldJpassword;publicJTextFieldaccountnum;//publicJButtoncommit;//增刪privateJLabeljL1;//設(shè)置對齊privateJLabeljL2;publicLoad(){initComponents();//初始化添加組件和添加監(jiān)聽器this.setLocationRelativeTo(null);//使窗口至于屏幕中央this.setVisible(true);}(4)取款模塊ClassTake實現(xiàn)取款功效,按返回鍵返回主界面,按清除鍵能夠刪除輸入數(shù)字,而且取出金額必需是100整數(shù)倍,一次取出金額不能超出5000,取完款后能夠顯示余額。該類組員有:back、clear、commit、quite、JL1、JT1和結(jié)構(gòu)方法Take()和初始化initComponents()。關(guān)鍵代碼:classTakeextendsJFrame{ publicJButtonback;publicJButtonclear;publicJButtoncommit;privateJLabeljL1;publicJTextFieldjT1;publicJButtonquit; Stringstr="";publicTake(){initComponents();this.setLocationRelativeTo(null);this.setVisible(false);}(5)存款模塊Classinput實現(xiàn)存款功效,存款金額必需是100整數(shù)倍,不然報錯提醒重新輸入。組員有:clear、commit、jL1、jT1、str和結(jié)構(gòu)函數(shù)Inputhe()和初始化方法initComponents()。關(guān)鍵代碼:classInputextendsJFrame{ privateJButtonclear;privateJButtoncommit;privateJLabeljL1;privateJTextFieldjT1;Stringstr="";publicInput(){initComponents();this.setLocationRelativeTo(null);this.setResizable(false);this.setVisible(false);}(6)顯示余額模塊ClassDisplay功效為顯示目前余額,在顯示余額時JTextField內(nèi)容不能夠編輯,組員有:組員變量back、jL1、quit、qukuan和結(jié)構(gòu)方法Display()和方法數(shù)set(Stringstr)和初始化方法initComponents()。關(guān)鍵代碼:classDisplayextendsJFrame{ publicJButtonback;privateJLabeljL1;publicJTextFieldjT1;publicJButtonquit;publicJButtonqukuan;publicDisplay(){initComponents();jT1.setText(String.valueOf(myaccount.get()));this.setLocationRelativeTo(null);this.setVisible(false);}(7)修改密碼模塊classSetpw創(chuàng)建這類是為了實現(xiàn)修改密碼功效,設(shè)置密碼必需是六位以上字符,而且所設(shè)置密碼不能是同一個字符組成,不然報錯。組員有:組員變量commit、commitpw、jPwcommit、jPwnew、jPwold、newpw、oldpw、quit和結(jié)構(gòu)方法Setpw()和初始化方法initComponents()。關(guān)鍵代碼:classSetpwextendsJFrame{publicJButtoncommit;publicJLabelcommitpw;publicJPasswordFieldjPwcommit;publicJPasswordFieldjPwnew;publicJPasswordFieldjPwold;publicJLabelnewpw;publicJLabeloldpw;publicJButtonquit;publicSetpw(){initComponents();this.setResizable(false);this.setLocationRelativeTo(null);this.setVisible(false);}2.事件監(jiān)聽組件介紹(1)MainFrame類監(jiān)聽模塊在該類中設(shè)置了五個監(jiān)聽器,監(jiān)聽鼠標(biāo)單擊按鈕,分別監(jiān)聽退出quit.addActionListener(newActionListener()、修改密碼reset.addActionListener(newActionListener()、查詢checked.addActionListener(newActionListener()、取款cunkuan.addActionListener(newActionListener()、存款qukuan.addActionListener(newActionListener()等按鈕事件。(2)Load類監(jiān)模塊commit.addActionListener(newjava.awt.event.ActionListener()在該類中只有一個監(jiān)聽器,監(jiān)聽鼠標(biāo)單擊“確定”按鈕時事件。(3)Take類監(jiān)聽模塊在該類中設(shè)置了四個監(jiān)聽器,一樣是監(jiān)聽鼠標(biāo)單擊按鈕事件,分別監(jiān)聽“清除”clear.addActionListener(newActionListener()、“退出”quit.addActionListener(newActionListener()、“返回”back.addActionListener(newActionListener()、“確定”commit.addActionListener(newActionListener()按鈕事件。(4)input類監(jiān)模塊在這個類中共設(shè)置了兩個監(jiān)聽器,它們也是監(jiān)聽鼠標(biāo)單擊按鈕事件。它們監(jiān)聽“清除”clear.addActionListener(newActionListener()、“確定”commit.addActionListener(newActionListener()按鈕事件。(5)display類監(jiān)聽模塊在display中設(shè)置了三個監(jiān)聽器,全部屬于監(jiān)聽鼠標(biāo)單擊按鈕事件,分別監(jiān)聽“退出”quit.addActionListener(newActionListener()、“返回”back.addActionListener(newActionListener()、“取款”qukuan.addActionListener(newjava.awt.event.ActionListener()按鈕事件。(6)Setpw類監(jiān)聽模塊在這個類中設(shè)置了兩個監(jiān)聽器,它們是監(jiān)聽鼠標(biāo)單擊按鈕事件,分別監(jiān)聽“確定”commit.addActionListener(newActionListener()、“退出”quit.addActionListener(newActionListener()按鈕事件。三、系統(tǒng)調(diào)試分析1.登陸界面打開MyEcplise,編譯運(yùn)行程序后,將會看到圖3所表示歡迎界面。點(diǎn)擊確定以后,會進(jìn)入圖4所表示登陸界面。圖3歡迎登陸頁面圖4登陸界面進(jìn)入到登陸界面后,需要輸入賬號和密碼,當(dāng)賬號和密碼正確時,才會進(jìn)入到主界面。賬號和密碼不符合時,會進(jìn)入圖4所表示錯誤提醒界面。初始賬號和密碼為“123456”。圖5登陸犯錯提醒界面2.賬號密碼登陸當(dāng)輸入密碼和卡號正確,單擊確定后就會進(jìn)入到主界面,選擇服務(wù),圖6所表示,點(diǎn)擊對應(yīng)按鈕就能夠選擇所需要服務(wù)了,點(diǎn)擊“退出”會回到登陸界面。圖6主界面3.存款點(diǎn)擊存款,進(jìn)入存款界面,圖7所表示。圖7存款界面當(dāng)輸入錢數(shù)不是100倍數(shù)時,就會彈出圖7所表示錯誤提醒界面。輸入正確時,進(jìn)入圖9所表示界面。選“是”話,會進(jìn)入查詢余額界面,查看存款操作是否成功;選“否”話,會回到主界面。圖8存款犯錯提醒界面圖9操作完成后選擇界面4.取款點(diǎn)擊取款按鈕,進(jìn)入取款界面,圖10所表示。當(dāng)輸入錢數(shù)是負(fù)數(shù),或是0,或不是100倍數(shù),又或大于5000時,會彈出圖11所表示犯錯提醒界面。當(dāng)輸入錢數(shù)符合要求時,會彈出如同存款操作一樣選擇界面,圖9所表示。圖10取款界面圖11取款錯誤提醒界面5.查詢點(diǎn)擊主界面中查詢按鈕,或是在存款和取款操作完成后選擇界面中選“是”話,就會進(jìn)入到圖12所表示查詢界面。點(diǎn)擊取款按鈕,會進(jìn)入到取款界面。初始金額為50000,圖12中余額是經(jīng)過存款、取款操作以后金額。圖12查詢界面6.修改密碼點(diǎn)擊主界面中修改密碼按鈕,進(jìn)入到圖13所表示修改密碼界面。新密碼長度大于6位,不許可出現(xiàn)6位完全相同情況,只有舊密碼正確,新密碼符合要求,且兩次輸入相同情況下才能夠成功修改密碼,彈出圖14所表示提醒界面,點(diǎn)擊確定后會回到主界面。不然,密碼修改不成功,點(diǎn)擊確定按鈕,界面沒有反應(yīng)。圖13修改密碼界面圖14修改密碼成功提醒界面經(jīng)過上面操作,既測試了程序?qū)崿F(xiàn)效果,又對系統(tǒng)使用進(jìn)行了具體說明。從上面運(yùn)行結(jié)果能夠看出,程序基礎(chǔ)上實現(xiàn)了全部設(shè)計要求,而且運(yùn)行正常。四、總結(jié)經(jīng)過為時一周課程設(shè)計,我受益匪淺,把平時所學(xué)知識通通利用了進(jìn)來,即使平時積淀知識點(diǎn)比較少、比較單一,不過在這次試驗中把零零碎碎知識全部連貫起來了,也達(dá)成了課程設(shè)計目標(biāo),最關(guān)鍵是經(jīng)過一周努力我最終用面向?qū)ο蟪绦蛟O(shè)計知識做出了這個“ATM柜員機(jī)模擬系統(tǒng)”。因為知識積淀比較少,且有些知識掌握不太牢靠,記憶模模糊糊,最終決定惡補(bǔ)一下落下知識點(diǎn)再進(jìn)行程序設(shè)計。第一天,去圖書館借了相關(guān)圖書,把知識點(diǎn)打牢,然后參考了相同多個實例,并進(jìn)行了部分分析和總結(jié)?;A(chǔ)功課做好以后第二天正式開工,選定好了題目,進(jìn)行方法選擇、框架設(shè)計、畫出步驟圖、UML圖,進(jìn)行了初步程序設(shè)計構(gòu)想。第三天,編寫程序代碼,這個過程我認(rèn)為是最艱苦,因為代碼太多,還有API接口不是很熟悉,所以要常常翻閱手冊,花費(fèi)了很多時間。程序一不小心就會犯錯不能運(yùn)行,還需要認(rèn)真檢驗,細(xì)心細(xì)心加細(xì)心才能做好。反復(fù)進(jìn)行分析調(diào)試,最終一天把程序調(diào)試經(jīng)過后,進(jìn)行課程設(shè)計匯報撰寫。即使很幸苦不過,最終結(jié)果還是令人滿意,最終感謝指導(dǎo)老師對我們幫助和支持。在這次課程設(shè)計中,我關(guān)鍵利用了Java圖形界面編程方面知識,加深了對Java語言中各個基礎(chǔ)知識點(diǎn)了解和應(yīng)用,將自己所學(xué)知識利用到實際操作當(dāng)中,而不再是紙上談兵。經(jīng)過這次設(shè)計,我深刻感受到了面向?qū)ο笳Z言中類庫強(qiáng)大功效,掌握了利用Java中類實現(xiàn)一些基礎(chǔ)功效,并學(xué)會了自己查詢使用類方法,為以后面向?qū)ο笳Z言自學(xué)奠定了基礎(chǔ)。在這次課程設(shè)計中,我查了很多資料,很好鍛煉了自己查閱資料能力和快速吸收新知識能力。同時,也加深了和同學(xué)交流,在設(shè)計過程中,我們相互幫助,共度難關(guān),培養(yǎng)了很好默契。總而言之,在這次課程設(shè)計中,我學(xué)到了很多知識,同時也感謝我同學(xué)幫助和指導(dǎo)。在以后學(xué)習(xí)當(dāng)中,我會愈加努力學(xué)習(xí)好專業(yè)知識,并將所學(xué)知識用于實踐當(dāng)中去,方便牢靠掌握知識。五、參考文件[1]葉核亞.Java程序設(shè)計實用教程(第3版.電子工業(yè)出版社,[2]耿祥義.JAVA課程設(shè)計.清華大學(xué)出版,[3]王文濤,袁海燕JAVA實用程序設(shè)計100例[M]北京:人民郵電出版社,.5[4]雍俊海JAVA程序設(shè)計[M]北京:清華大學(xué)出版社,.8[5]劉寶林JAVA程序設(shè)計和案例[M]北京:高等教育出版社,.11[6]史斌星,史佳.Java基礎(chǔ)及應(yīng)用教程[M].北京.清華大學(xué)出版社..27.15.101.[7]Y.DanielLiang.Java語言程序設(shè)計[M].北京.機(jī)械工業(yè)出版社..六、附錄源代碼程序源代碼:/*********API接口************/importjavax.swing.*;importjavax.swing.JOptionPane;importjava.awt.event.*;importjava.awt.*;/***********主類*****************/publicclassATMmodel{Accountmyaccount=newAccount();//賬戶實例化Loadload=newLoad();MainFrameJmain=newMainFrame();//主框架實例化Taketake=newTake();Inputinput=newInput();Displaydis=newDisplay();Setpwsetpw=newSetpw();//設(shè)置密碼實例化/************主方法******************/publicATMmodel(){JOptionPane.showMessageDialog(null,"歡迎使用ATM柜員模擬系統(tǒng)!");//進(jìn)入主界面時用JOptionPane.showMessageDialog();彈出系統(tǒng)提醒 }publicstaticvoidmain(String[]args){ATMmodelatm=newATMmodel();//主函數(shù)實例化}/**************創(chuàng)建賬戶**********/classAccount{privateintcount=10000;//初始賬戶余額10000privateStringaccount="123456";//初始賬號privateStringpassword="123456";//初始密碼publicAccount(){//賬戶函數(shù)}publicvoidsetpw(Stringpassword){//設(shè)置密碼this.password=password;}publicvoiddeccount(intmoney){//deccount取款count-=money;//取款后再原來基礎(chǔ)上減所取部分}publicvoidreccount(intmoney){//reccount存款count+=money;//存款后在原來基礎(chǔ)上加所存部分 }publicintget(){returncount;//獲取余額}publicStringgetaccount(){returnaccount;//獲取賬號}publicStringgetpw(){returnpassword;//獲取密碼 }}/*********************主界面************************/classMainFrameextendsJFrame{//主框架方法由JFrame繼承而來publicJButtonchecked;//檢測publicJButtoncunkuan;//存款publicJButtonquit;//退出publicJButtonqukuan;//取款publicJButtonreset;//重設(shè)//框架按鈕參數(shù)publicMainFrame(){//主框架函數(shù)initComponents();//添加組件this.setLocationRelativeTo(null);//設(shè)置窗口相對于指定組件位置this.setVisible(false);//隱藏其它窗口}/*控件初始化*/ privatevoidinitComponents(){//初始化添加組件和添加監(jiān)聽器cunkuan=newJButton();qukuan=newJButton();checked=newJButton();reset=newJButton();quit=newJButton(); setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);//退出程序setTitle("ATM柜員模擬程序"); setName("mianframe");//設(shè)置名稱setResizable(false);//窗口大小不可改變cunkuan.setText("存款");//將“cunkuan”轉(zhuǎn)換成“存款”cunkuan.addActionListener(newActionListener(){//設(shè)置事件監(jiān)聽publicvoidactionPerformed(ActionEventevt){//活動事件響應(yīng)cunkuanActionPerformed(evt);}}); qukuan.setText("取款");qukuan.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEventevt){qukuanActionPerformed(evt);}}); checked.setText("查詢");checked.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEventevt){checkedActionPerformed(evt);}}); reset.setText("修改密碼");reset.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEventevt){resetActionPerformed(evt);}}); quit.setText("退出");quit.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEventevt){quitActionPerformed(evt);}});//程序界面劃分,界面布局// GroupLayoutlayout=newGroupLayout(getContentPane());//GroupLayout它將組件按層次分組,以決定它們在Container中位置getContentPane().setLayout(layout);//內(nèi)容面板layout.setHorizontalGroup(//水平劃分layout.createParallelGroup(GroupLayout.Alignment.LEADING).addGroup(layout.createSequentialGroup().addContainerGap().addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup(layout.createSequentialGroup().addComponent(cunkuan).addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED,105,Short.MAX_VALUE).addComponent(reset)).addGroup(javax.swing.GroupLayout.Alignment.TRAILING,layout.createSequentialGroup().addComponent(qukuan).addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED,143,Short.MAX_VALUE).addComponent(quit)).addComponent(checked)).addContainerGap()));layout.setVerticalGroup(//垂直劃分layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup(layout.createSequentialGroup().addGap(46,46,46).addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE).addComponent(cunkuan).addComponent(reset)).addGap(51,51,51).addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE).addComponent(quit).addComponent(qukuan)).addGap(57,57,57).addComponent(checked).addGap(39,39,39)));pack();//使此JFrame子組件按其首選大小進(jìn)行布局}privatevoidquitActionPerformed(ActionEventevt){//識別是否退出 load.setVisible(true);this.setVisible(false);}privatevoidresetActionPerformed(ActionEventevt){//識別是否修改 setpw.setVisible(true); this.setVisible(false); }privatevoidcheckedActionPerformed(ActionEventevt){//識別是否查詢dis.setVisible(true);this.setVisible(false);}privatevoidqukuanActionPerformed(ActionEventevt){//識別是否取款take.setVisible(true);this.setVisible(false);}privatevoidcunkuanActionPerformed(ActionEventevt){//識別是否存款 input.setVisible(true); this.setVisible(false);}}/********登錄界面********/classLoadextendsJFrame{ publicJPasswordFieldJpassword;publicJTextFieldaccountnum;//publicJButtoncommit;//增刪privateJLabeljL1;//設(shè)置對齊privateJLabeljL2;publicLoad(){initComponents();//初始化添加組件和添加監(jiān)聽器this.setLocationRelativeTo(null);//使窗口至于屏幕中央this.setVisible(true);} privatevoidinitComponents(){jL1=newJLabel();//對齊方法jL2=newJLabel();accountnum=newJTextField();//許可編輯單行文本commit=newJButton();Jpassword=newJPasswordField();//單獨(dú)提供它能夠較方便地安全更改JTextFieldUI而不影響密碼輸入setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);setTitle("ATM柜員模擬程序");//設(shè)置標(biāo)題setResizable(false);//窗口大小不可改變jL1.setText("賬號:");jL2.setText("密碼:");commit.setText("確定");commit.addActionListener(newjava.awt.event.ActionListener(){//設(shè)置事件監(jiān)聽publicvoidactionPerformed(java.awt.event.ActionEventevt){commitActionPerformed(evt);}});/**********界面登陸設(shè)計**********/javax.swing.GroupLayoutlayout=newjavax.swing.GroupLayout(getContentPane());getContentPane().setLayout(layout);//獲取組件窗格layout.setHorizontalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup(layout.createSequentialGroup().addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup(layout.createSequentialGroup().addContainerGap(50,Short.MAX_VALUE).addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING).addComponent(jL1)//添加組件jL1.addComponent(jL2)).addGap(31,31,31).addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING,false).addComponent(Jpassword).addComponent(accountnum,javax.swing.GroupLayout.DEFAULT_SIZE,143,Short.MAX_VALUE))).addGroup(layout.createSequentialGroup().addGap(122,122,122).addComponent(commit))).addContainerGap(72,Short.MAX_VALUE)));layout.setVerticalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup(layout.createSequentialGroup().addGap(85,85,85).addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE).addComponent(accountnum,javax.swing.GroupLayout.PREFERRED_SIZE,javax.swing.GroupLayout.DEFAULT_SIZE,javax.swing.GroupLayout.PREFERRED_SIZE).addComponent(jL1)).addGap(41,41,41).addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE).addComponent(jL2).addComponent(Jpassword,javax.swing.GroupLayout.PREFERRED_SIZE,javax.swing.GroupLayout.DEFAULT_SIZE,javax.swing.GroupLayout.PREFERRED_SIZE)).addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED,72,Short.MAX_VALUE).addComponent(commit).addGap(64,64,64)));pack();}privatevoidcommitActionPerformed(ActionEventevt){ if(accountnum.getText().equals(myaccount.getaccount())&&Jpassword.getText().equals(myaccount.getpw()))//識別密碼是否和初始密碼一致 { Jmain.setVisible(true); this.setVisible(false); accountnum.setText(""); Jpassword.setText(""); } else{ JOptionPane.showMessageDialog(null,"密碼和賬戶不匹配,請重新輸入","犯錯提醒",1);//密碼不正確提醒 accountnum.setText(""); Jpassword.setText(""); }}}/*******取款界面********/classTakeextendsJFrame{ publicJButtonback;publicJButtonclear;publicJButtoncommit;privateJLabeljL1;publicJTextFieldjT1;publicJButtonquit; Stringstr="";publicTake(){initComponents();this.setLocationRelativeTo(null);this.setVisible(false);}privatevoidinitComponents(){jL1=newJLabel();jT1=newJTextField();commit=newJButton();back=newJButton();quit=newJButton();clear=newJButton();setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);jL1.setText("取款金額:");commit.setText("確定");commit.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEventevt){commitActionPerformed(evt);}});back.setText("返回");back.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEventevt){backActionPerformed(evt);}});quit.setText("退出");quit.addActionListener(newActionListener(){publicvoidactionPerformed(java.awt.event.ActionEventevt){quitActionPerformed(evt);}});clear.setText("清除");clear.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEventevt){clearActionPerformed(evt);}});javax.swing.GroupLayoutlayout=newjavax.swing.GroupLayout(getContentPane());getContentPane().setLayout(layout);layout.setHorizontalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup(layout.createSequentialGroup().addGap(41,41,41).addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup(layout.createSequentialGroup().addComponent(jL1).addGap(33,33,33).addComponent(jT1,javax.swing.GroupLayout.PREFERRED_SIZE,174,javax.swing.GroupLayout.PREFERRED_SIZE)).addGroup(layout.createSequentialGroup().addComponent(clear).addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED,147,Short.MAX_VALUE).addComponent(quit)).addGroup(layout.createSequentialGroup().addComponent(commit).addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED,147,Short.MAX_VALUE).addComponent(back))).addContainerGap(69,javax.swing.GroupLayout.PREFERRED_SIZE)));layout.setVerticalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup(layout.createSequentialGroup().addGap(103,103,103).addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE).addComponent(jL1).addComponent(jT1,javax.swing.GroupLayout.PREFERRED_SIZE,javax.swing.GroupLayout.DEFAULT_SIZE,javax.swing.GroupLayout.PREFERRED_SIZE)).addGap(61,61,61).addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE).addComponent(commit).addComponent(back)).addGap(29,29,29).addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE).addComponent(clear).addComponent(quit)).addContainerGap(65,Short.MAX_VALUE)));pack();}privatevoidclearActionPerformed(ActionEventevt){ str="";jT1.setText(str);}privatevoidquitActionPerformed(ActionEventevt){ load.setVisible(true); this.setVisible(false); }privatevoidbackActionPerformed(ActionEventevt){ Jmain.setVisible(true); this.setVisible(false);}privatevoidcommitActionPerformed(ActionEventevt){ if(Integer.parseInt(jT1.getText())>0&&Integer.parseInt(jT1.getText())%100==0&&Integer.parseInt(jT1.getText())<=5000){//取款數(shù)必需為100整數(shù)且不可超出5000myaccount.deccount(Integer.parseInt(jT1.getText()));intresult=javax.swing.JOptionPane.showConfirmDialog(null,"是否顯示余額?","",javax.swing.JOptionPane.YES_NO_OPTION,javax.swing.JOptionPane.QUESTION_MESSAGE);if(result==javax.swing.JOptionPane.YES_OPTION){dis.set(String.valueOf(myaccount.get()));str=""; jT1.setText(str);dis.setVisible(true);this.setVisible(false);}else{Jmain.setVisible(true);this.setVisible(false);}}else{JOptionPane.showMessageDialog(null,"取款金額不能為負(fù)數(shù)"+"\n取款金額不能為0"+"\n取款金額必需是100倍數(shù)"+ "\n金額一次不能超出5000"+"\n請重新輸入你要取金額數(shù)","犯錯提醒",1);//假如數(shù)次輸錯提醒str="";jT1.setText(str);}}}/***********存款界面*********/classInputextendsJFrame{ privateJButtonclear;privateJButtoncommit;privateJLabeljL1;privateJTextFieldjT1;Stringstr="";publicInput(){initComponents();this.setLocationRelativeTo(null);this.setResizable(false);this.setVisible(false);}privatevoidinitComponents(){jL1=newJLabel();jT1=newJTextField();commit=newJButton();clear=newJButton();setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);jL1.setText("存款金額:");commit.setText("確定");commit.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEventevt){commitActionPerformed(evt);}});clear.setText("清除");clear.addActionListener(newjava.awt.event.ActionListener(){publicvoidactionPerformed(java.awt.event.ActionEventevt){clearActionPerformed(evt);}});javax.swing.GroupLayoutlayout=newjavax.swing.GroupLayout(getContentPane());getContentPane().setLayout(layout);layout.setHorizontalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup(layout.createSequentialGroup().addGap(47,47,47).addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup(layout.createSequentialGroup().addGap(12,12,12).addComponent(commit).addGap(111,111,111).addComponent(
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- T-ZSM 0049-2024“領(lǐng)跑者”評價技術(shù)要求 機(jī)織兒童服裝
- 二零二五年度高效節(jié)能大棚租賃及能源管理協(xié)議
- 二零二五年度個人環(huán)保項目貸款抵押擔(dān)保合同
- 二零二五年度汽車銷售區(qū)域代理退出協(xié)議
- 二零二五年度街道辦事處社區(qū)工作者績效激勵聘用合同
- 二零二五年度智能交通管理系統(tǒng)知識產(chǎn)權(quán)授權(quán)協(xié)議
- 2025年度車輛質(zhì)押融資服務(wù)協(xié)議
- 二零二五年度高新技術(shù)園區(qū)建設(shè)資金委托墊資合同
- 2025年度終止供貨協(xié)議函模板與合同終止后的利益平衡
- 企業(yè)采購管理流程改進(jìn)調(diào)研報告
- 四年級下冊語文第二單元 快樂讀書吧:十萬個為什么 導(dǎo)讀課件
- 文創(chuàng)產(chǎn)品設(shè)計-課件
- 風(fēng)電場葉片無人機(jī)巡檢作業(yè)技術(shù)導(dǎo)則
- 制度機(jī)制風(fēng)險點(diǎn)及防控措施3篇
- “小小科學(xué)家”廣東省少年兒童科學(xué)教育體驗活動+生物試題4
- 《研學(xué)旅行課程設(shè)計》課件-了解研學(xué)旅行概念
- MOOC 財務(wù)報表分析-華中科技大學(xué) 中國大學(xué)慕課答案
- 2024屆南京市建鄴區(qū)中考聯(lián)考物理試卷含解析
- 心腦血管疾病的危險因素與管理1
- 第一單元練習(xí)卷(單元測試)2023-2024學(xué)年統(tǒng)編版語文六年級下冊
- 中醫(yī)保健創(chuàng)業(yè)計劃書
評論
0/150
提交評論