Java模擬ATM系統(tǒng)畢業(yè)設(shè)計(jì)_第1頁
Java模擬ATM系統(tǒng)畢業(yè)設(shè)計(jì)_第2頁
Java模擬ATM系統(tǒng)畢業(yè)設(shè)計(jì)_第3頁
Java模擬ATM系統(tǒng)畢業(yè)設(shè)計(jì)_第4頁
Java模擬ATM系統(tǒng)畢業(yè)設(shè)計(jì)_第5頁
已閱讀5頁,還剩45頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

北京郵電大學(xué)畢業(yè)設(shè)計(jì)北京郵電大學(xué)畢業(yè)設(shè)計(jì)#系統(tǒng)詳細(xì)設(shè)計(jì)系統(tǒng)詳細(xì)設(shè)計(jì)概述對概要設(shè)計(jì)的一個(gè)細(xì)化,就是詳細(xì)設(shè)計(jì)每個(gè)模塊實(shí)現(xiàn)算法,所需的局部結(jié)構(gòu)。詳細(xì)設(shè)計(jì)的實(shí)現(xiàn)根據(jù)結(jié)構(gòu)程序設(shè)計(jì)原理,將每個(gè)模塊的功能用相應(yīng)的標(biāo)準(zhǔn)語句表示出來。基本任務(wù)為每個(gè)模塊進(jìn)行詳細(xì)的算法設(shè)計(jì)。用某種圖形、表格、語言等工具將每個(gè)模塊處理過程的詳細(xì)算法描述出來。為模塊內(nèi)的數(shù)據(jù)結(jié)構(gòu)進(jìn)行設(shè)計(jì)。對于需求分析、概要設(shè)計(jì)確定的概念性的數(shù)據(jù)類型進(jìn)行確切的定義。為數(shù)據(jù)結(jié)構(gòu)進(jìn)行物理設(shè)計(jì),即確定數(shù)據(jù)庫的物理結(jié)構(gòu)。物理結(jié)構(gòu)主要指數(shù)據(jù)庫的存儲(chǔ)記錄格式、存儲(chǔ)記錄安排和存儲(chǔ)方法,這些都依賴于具體所使用的數(shù)據(jù)庫系統(tǒng)。其他設(shè)計(jì):根據(jù)軟件系統(tǒng)的類型,還可能要進(jìn)行以下設(shè)計(jì):①代碼設(shè)計(jì)。為了提高數(shù)據(jù)的輸入、分類、存儲(chǔ)、檢索等操作,節(jié)約內(nèi)存空間,對數(shù)據(jù)庫中的某些數(shù)據(jù)項(xiàng)的值要進(jìn)行代碼設(shè)計(jì)。②輸入輸出格式設(shè)計(jì)。③人機(jī)對話設(shè)計(jì)。對于一個(gè)實(shí)時(shí)系統(tǒng),用戶與計(jì)算機(jī)頻繁對話,因此要進(jìn)行對話方式、內(nèi)容、格式的具體設(shè)計(jì)。編寫詳細(xì)設(shè)計(jì)說明書。評審。對處理過程的算法和數(shù)據(jù)庫的物理結(jié)構(gòu)都要評審。系統(tǒng)邏輯設(shè)計(jì)數(shù)據(jù)庫設(shè)計(jì)指對系統(tǒng)所采用的數(shù)據(jù)模式、子模式、應(yīng)用程序、數(shù)據(jù)庫等根據(jù)用戶的具體要求進(jìn)行分析和設(shè)計(jì)。它也是管理信息系統(tǒng)設(shè)計(jì)的重要組成部分。數(shù)據(jù)庫設(shè)計(jì)的基本原則是盡可能提高數(shù)據(jù)組織的相對獨(dú)立性,簡化其結(jié)構(gòu),即用規(guī)范化方法設(shè)施數(shù)據(jù)存儲(chǔ)的結(jié)構(gòu),提高數(shù)據(jù)的可維護(hù)性、完整性、一致性。通過收集和分析用戶需求,確定了數(shù)據(jù)庫要保存的信息,我將此次數(shù)據(jù)庫設(shè)計(jì)為二個(gè)如下所示表的設(shè)計(jì)如下:表 用戶信息設(shè)計(jì)表1客戶表(user)字段信息字段名稱類型寬度小數(shù)位數(shù)空特性姓名u性別身份證號卡號用戶信息表定義了用戶的姓名、性別、身份證號碼和卡號,其中身份證號是主鍵,用于在查詢卡信息的時(shí)候,從數(shù)據(jù)庫中提取出相關(guān)數(shù)據(jù)顯示在用戶的交互界面,方便用戶查看相關(guān)信息。而卡號是賬戶信息的表中的主鍵,在此表中屬于外鍵,定義了用戶表和賬戶信息表的關(guān)系。表 賬戶信息設(shè)計(jì)表2賬戶表(card)字段信息字段名稱類型寬度小數(shù)位數(shù)空特性卡號賬戶余額int密碼賬戶信息設(shè)計(jì)表主要設(shè)計(jì)了賬戶的卡號,賬戶余額以及密碼等字段,其中卡號是該表的主鍵。數(shù)據(jù)庫設(shè)計(jì)如下:名字:用戶登錄信息描述:助記詞登錄時(shí),用于確認(rèn)身份定義:登錄信息帳號密碼名字:修改密碼信息描述:用戶確認(rèn)修改后的信息定義:修改密碼信息原密碼新密碼確認(rèn)密碼名字:轉(zhuǎn)賬信息描述:用戶所要轉(zhuǎn)入賬戶的信息定義:轉(zhuǎn)賬信息用戶賬號余額對方賬號轉(zhuǎn)入金額名字:查詢余額信息描述:用戶需要清楚的知道自己賬戶中的信息定義:查詢余額信息用戶余額界面模塊設(shè)計(jì)用戶界面設(shè)計(jì)目前已成為評價(jià)軟件質(zhì)量的一條重要指標(biāo),所謂用戶界面是批軟件系統(tǒng)與用戶交互的接口,通常包括輸入、輸出設(shè)計(jì)、人機(jī)對話的界面設(shè)計(jì)。首頁設(shè)計(jì)的窗體實(shí)現(xiàn)當(dāng)插入現(xiàn)金卡之后出現(xiàn)如上歡迎界面,系統(tǒng)出現(xiàn)選擇確定和取消的登入方式,點(diǎn)擊按鈕之后(確定)出現(xiàn)后對話框:〃首頁設(shè)計(jì)窗體classPanelOIextendsJPanel{JLabelIabel1,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("請輸入卡號:");label1=newJLabel("請輸入密碼:");label3=newJLabel();label4=newJLabel("請輸入驗(yàn)證碼:");add(textB);add(textA);add(textC);}}classPanel02extendsJPanel{JButtonbutton1,button2;Panel02(){setLayout(newGridLayout(3,6));button1=newJButton("確定");button2=new18比9口("取消");}}該代碼對首頁的組件進(jìn)行了設(shè)計(jì),用戶在使用過程需要將卡號,密碼和驗(yàn)證碼都輸入正確才能進(jìn)入下一步的操作,如果其中一個(gè)出現(xiàn)問題則不能成功登陸,也不能實(shí)現(xiàn)后面相對應(yīng)的操作。〃首頁添加監(jiān)聽器并添加actionclassClient00extendsJFrameimplementsActionListener{publicvoidactionPerformed(ActionEvente){char口passwords=panel1.textA.getPassword();Stringpassword=newString("1234");〃此處設(shè)置賬號123456的初始密碼為1234,每輸入一次都有提示,在連續(xù)輸入三次不正確后系統(tǒng)自動(dòng)退出。if(e.getActionCommand().equals("確定"))if(panel1.textC.getText().equals(panel1.label3.getText())){right();}elseif(e.getActionCommand()=="取消"){this.setVisible(false);newClient08("");}}publicvoidright(){if(panel1.textA.getText().equals("")||panel1.textB.getText().equals("")){JOptionPane.showMessageDialog(frame," 請輸入賬號、密碼!");return;}Stringurl="jdbc:mysql://localhost:3306/atm?useUnicode=true&characterEncoding=gbk";//定義與連接數(shù)據(jù)庫的urltry{Class.forName("com.mysql.jdbc.Driver");//加載mysql數(shù)據(jù)庫驅(qū)動(dòng)Connectioncon=DriverManager.getConnection(url,"root","123");〃連接URL為 jdbc:mysql〃服務(wù)器地址/數(shù)據(jù)庫名,后面的2個(gè)參數(shù)分別是登陸用戶名和密碼Statementsql=con.createStatement();Stringql=panel1.textB.getText();ResultSetrs=sql.executeQuery("selectcpwdfromcardwhereucno="+ql+"");在此時(shí)輸入的數(shù)據(jù)會(huì)與數(shù)據(jù)庫進(jìn)行數(shù)據(jù)匹配,因此可能會(huì)出現(xiàn)錯(cuò)誤的信息,那么要對錯(cuò)誤的信息進(jìn)行處理,于是針對輸入密碼的錯(cuò)誤次數(shù)設(shè)置了處理過程,相應(yīng)的處理過程寫成下面的代碼:if(rs.next()){Stringqerycpwd=panel1.textA.getText();Strings=rs.getString(1);if(qerycpwd.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ì),請你再仔細(xì)想想.");panel1.textA.setText("");}else{JOptionPane.showMessageDialog(frame,"對不起,你輸入的密碼次數(shù)達(dá)三次,下次再見。”);System.exit(0);}}con.close();frame.repaint();}else{

JOptionPane.showMessageDialog(null,"該用戶不存在,重新輸入!","警告!JOptionPane.YES_NO_OPTION);return;}}取消,圖錨入密碼取消清輸入卡號;清輸久密碼;確定清輸入驗(yàn)證碼:確定登錄界面登錄模塊采用的是密碼、驗(yàn)證碼的方式,需要用戶輸入卡號、密碼和驗(yàn)證碼然后點(diǎn)擊確認(rèn)進(jìn)行驗(yàn)證登錄,程序?qū)⒏鶕?jù)輸入卡號查找對應(yīng)密碼,第一如果賬號找到則繼續(xù)下一步,在這里我用了輸入驗(yàn)證碼的方式,輸入正確則繼續(xù),程序系統(tǒng)將根據(jù)卡號調(diào)用后臺(tái)數(shù)據(jù)庫查找與卡號對應(yīng)的密碼并與用戶輸入的密碼相對比。密碼正確則繼續(xù),否則當(dāng)輸入的錯(cuò)誤密碼次數(shù)達(dá)到三次時(shí),系統(tǒng)將提示你需要與前臺(tái)服務(wù)員取得聯(lián)系。第二如果沒有找到,則提示輸入賬號錯(cuò)誤。查詢信息頁面的設(shè)計(jì)〃查詢余額頁面窗體設(shè)計(jì)classPanel06extendsJPanel{JLabellabel1,label2;JTextFieldtextA;JFrameframe;Panel06cHsetLayout(newGridLayout(4,4));label1=newJLabel("你的余額為:");textA=newJTextField(6);}在查詢模塊中,將通過用戶所使用的賬戶賬號來進(jìn)行余額的查詢,將顯示賬戶的實(shí)際余額,點(diǎn)擊“查詢”按鈕,在程序中通過按鈕的方法進(jìn)行方法的調(diào)用,就可以實(shí)現(xiàn)查詢余額的功能并且把查詢到的賬戶余額顯示在此界面上。當(dāng)用戶點(diǎn)擊“繼續(xù)”時(shí),程序則返回到初始主界面。classPanel07extendsJPanel{JButtonbutton1,button2;Panel07(){setLayout(newGridLayout(3,6));button1=newJButton("繼續(xù)");button2=newJButton("查詢");classClient03extendsJFrameimplementsActionListener{Panel06panell;Panel07panel2;publicvoidactionPerformed(ActionEvente){if(e.getActionCommand().equals("繼續(xù)")){this.setVisible(false);newClient01("選擇服務(wù)種類");}elseif(e.getActionCommand()=="查詢")showcbal();}publicvoidshowcbal(){Stringurl="jdbc:mysql://localhost:3306/atm";//定義與連接數(shù)據(jù)庫的urltry{Class.forName("com.mysql.jdbc.Driver");//加載mysql數(shù)據(jù)庫驅(qū)動(dòng)Connectioncon=DriverManager.getConnection(url,"root","123");〃連接URL為 jdbc:mysql〃服務(wù)器地址/數(shù)據(jù)庫名,后面的2個(gè)參數(shù)分別是登陸用戶名和密碼ResultSetrs=sql.executeQuery("selectcbalfromcardwherecno="+ql+"");if(rs.next()){Stringucbal=rs.getString(1);}con.close();}catch(Exceptionex){ex.printStackTrace();}}}圖 查詢卡信息模塊這個(gè)功能用來顯示賬戶的基本信息包括用戶名、性別、身份證、卡號等,點(diǎn)擊查詢按鈕后系統(tǒng)將根據(jù)與輸入的卡號相一致的字段信息查詢后臺(tái)數(shù)據(jù)庫進(jìn)行比較,并將匹配的信息顯示在此頁面上。當(dāng)點(diǎn)擊“取消”按鈕時(shí),系統(tǒng)將返回到初始主界面。修改密碼界面的設(shè)計(jì)〃修改密碼頁面窗體設(shè)計(jì)Panel10(){setLayout(newGridLayout(10,6));label1=newJLabel("請輸入原密碼:");label2=newJLabel("請輸入新密碼:");label3=newJLabel("再次確認(rèn)密碼:");button1=newJButton("確定");button2=newJButton("取消");修改密碼過程需要對數(shù)據(jù)庫進(jìn)行操作,首先要找到該賬戶的賬戶信息進(jìn)行匹配,只有輸入的原密碼正確了才能進(jìn)行下面的修改,而且兩次輸入的新密碼必須一致,如果不一致也不能進(jìn)行修改,如果都正確則需要更新數(shù)據(jù)庫中已經(jīng)存入的密碼。publicvoidupdateM(){Stringurl="jdbc:mysql://localhost:3306/atm";//定義與連接數(shù)據(jù)庫的urltry{Class.forName("com.mysql.jdbc.Driver");//加載mysql數(shù)據(jù)庫驅(qū)動(dòng)Connectioncon=DriverManager.getConnection(url,"root","123");〃連接URL為 jdbc:mysql〃服務(wù)器地址/數(shù)據(jù)庫名,后面的2個(gè)參數(shù)分別是登陸用戶名和密碼Statementsql=con.createStatement();Stringcno=Panel01.textB.getText();ResultSetrs=sql.executeQuery("selectcpwdfromcardwherecno="+cno+"");}classbankSystem05{publicstaticvoidmain(String[]args){newClient02("修改密碼服務(wù)");}}圖 修改密碼模塊這個(gè)模塊需要用戶輸入舊密碼后,再次輸入兩次新密碼來進(jìn)行確認(rèn),然后點(diǎn)擊“確定”按鈕進(jìn)行密碼的修改,修改成功后將給出提示信息,其中還考慮到了一些用戶可能的輸入錯(cuò)誤問題,在程序設(shè)計(jì)時(shí)我做出了一些異常的判斷和處理,比如空輸入,輸入兩次新密碼不一致以及原密碼輸入不正確等問題。修改更新密碼的完成,依然采用的是“確定”按鈕控件的 事件來進(jìn)行完成。4.5.4轉(zhuǎn)賬頁面的窗體設(shè)計(jì)〃轉(zhuǎn)賬頁面窗體設(shè)計(jì)Panel08(){setLayout(newGridLayout(4,4));label1=newJLabel("輸入預(yù)轉(zhuǎn)賬號:");label2=newJLabel("輸入預(yù)轉(zhuǎn)金額:");}classClient04extendsJFrameimplementsActionListener{publicvoidactionPerformed(ActionEvente){if(e.getActionCommand().equals("確定")){zhuanzhang();〃程序根據(jù)輸入賬號調(diào)用數(shù)據(jù)庫,修改對應(yīng)金額數(shù)。this.setVisible(false);newClient01("用戶取款系統(tǒng)");}publicvoidzhuanzhang(){if(panel1.textA.getText().equals("")llpanel1.textB.getText().equals("")){JOptionPane.showMessageDialog(frame,” 請輸入欲轉(zhuǎn)賬號、金額!");return;}Stringurl="jdbc:mysql://localhost:3306/atm";//定義與連接數(shù)據(jù)庫的urltry{Class.forName("com.mysql.jdbc.Driver");//加載mysql數(shù)據(jù)庫驅(qū)動(dòng)Connectioncon=DriverManager.getConnection(url,"root","123");〃連接URL為 jdbc:mysql〃服務(wù)器地址/數(shù)據(jù)庫名,后面的2個(gè)參數(shù)分別是登陸用戶名和密碼ResultSetss=sql.executeQuery("selectcnofromcardwherecno="+cno+"");intshbal=Integer.parseInt(ybal);if(ss.next()){ResultSetrs=sql.executeQuery("selectcbalfromcardwherecno="+ql+"");轉(zhuǎn)賬時(shí)用戶將根據(jù)需要自己輸入預(yù)轉(zhuǎn)賬號和預(yù)轉(zhuǎn)金額,這個(gè)模塊的設(shè)計(jì)其實(shí)質(zhì)是具體的SQL語句操作,系統(tǒng)根據(jù)輸入的賬號查找與之對應(yīng)的用戶數(shù)據(jù)表,從而根據(jù)操作修改金額。第一,系統(tǒng)首先根據(jù)本賬號,后臺(tái)數(shù)據(jù)庫進(jìn)行本卡金額與輸入的金額對比,如果找到且在金額允許范圍,就提示轉(zhuǎn)賬成功,并更新本賬號的數(shù)據(jù)信息。第二,如果沒有找到輸入的預(yù)轉(zhuǎn)賬號,則提示沒有該用戶,并跳轉(zhuǎn)回來重新輸入預(yù)轉(zhuǎn)賬號。if(rs.next()){Stringquerybal=rs.getString(1);intqybal=Integer.parseInt(querybal);if(shbal<qybal){intnewcbal=qybal-shbal;intnewcbal2=qybal+shbal;Stringnewbal=String.valueOf(newcbal);Stringnewbal2=String.valueOf(newcbal2);sql.executeUpdate("updatecardsetcbal='"+newbal+"'wherecno="+ql+"");sql.executeUpdate("updatecardsetcbal='"+newbal2+"'wherecno="+cno+"");JOptionPane.showMessageDialog(frame," 操作已成功,謝謝使用!");this.setVisible(false);newClient01("用戶取款系統(tǒng)");}}con.close();frame.repaint();}}圖轉(zhuǎn)賬業(yè)務(wù)模塊這個(gè)模塊中,用戶將根據(jù)需要自己輸入預(yù)轉(zhuǎn)賬號和預(yù)轉(zhuǎn)金額,這個(gè)模塊的設(shè)計(jì)其實(shí)質(zhì)是具體的 語句操作,系統(tǒng)根據(jù)輸入的賬號查找與之對應(yīng)的用戶數(shù)據(jù)表,從而根據(jù)操作修改金額。第一,系統(tǒng)首先根據(jù)本賬號,后臺(tái)數(shù)據(jù)庫進(jìn)行本卡金額與輸入的金額對比,如果找到且在金額允許范圍,就提示轉(zhuǎn)賬成功,并更新本賬號的數(shù)據(jù)信息。第二,如果沒有找到輸入的預(yù)轉(zhuǎn)賬號,則提示沒有該用戶,并跳轉(zhuǎn)回來重新輸入預(yù)轉(zhuǎn)賬號。4.5.5取款界面的窗體設(shè)計(jì)〃取款頁面窗體設(shè)計(jì)classClient02extendsJFrameimplementsActionListener{Panel04panell;Panel05panel2;JFrameframe;publicvoidactionPerformed(ActionEvente){if(e.getActionCommand()=="100"){this.setVisible(false);qukuan();〃程序根據(jù)輸入金額和輸入卡號,修改數(shù)據(jù)庫。newClient01("用戶取款系統(tǒng)");}elseif(e.getActionCommand()=="500"){this.setVisible(false);newClient01("用戶取款系統(tǒng)");}〃這里當(dāng)點(diǎn)擊取款金額200時(shí),程序返回上層操作界面。}publicvoidqukuan(){Stringurl="jdbc:mysql://localhost:3306/atm";//定義與連接數(shù)據(jù)庫的urltry{Class.forName("com.mysql.jdbc.Driver");//加載mysql數(shù)據(jù)庫驅(qū)動(dòng)Connectioncon=DriverManager.getConnection(url,"root","123");〃連接URL為 jdbc:mysql〃服務(wù)器地址/數(shù)據(jù)庫名,后面的2個(gè)參數(shù)分別是登陸用戶名和密碼if(rs.next()){Stringmm=rs.getString(1);intnn=Integer.parseInt(mm);Stringqerycbal=panel1.button1.getActionCommand();intquerybal=Integer.parseInt(qerycbal);取款時(shí)用戶將根據(jù)需要自己輸入取款金額,這個(gè)模塊的設(shè)計(jì)其實(shí)質(zhì)是具體的SQL語句操作,系統(tǒng)根據(jù)輸入的金額查找與之對應(yīng)的用戶數(shù)據(jù)表,從而根據(jù)操作修改金額。第一,系統(tǒng)首先根據(jù)本賬號,后臺(tái)數(shù)據(jù)庫進(jìn)行本卡金額與輸入的金額對比,如果找到且在金額允許范圍,就提示取款成功,并更新本賬號的數(shù)據(jù)信息。第二,如果沒有找到輸入的預(yù)轉(zhuǎn)賬號,則提示沒有該用戶,并跳轉(zhuǎn)回來重新輸入預(yù)轉(zhuǎn)賬號。if(querybal<nn){intnewbal=nn-querybal;Stringnewbals=String.valueOf(newbal);intupdatepwd=sql.executeUpdate("updatecardsetcbal='"+newbals+"'wherecno="+ql+"");if(updatepwd==1){JOptionPane.showMessageDialog(frame,”操作已成功,謝謝使用!");}this.setVisible(false);newClient01("用戶取款系統(tǒng)");}else{JOptionPane.showMessageDialog(null,"對不起,你的卡余額已不足!",警告!",JOptionPane.YES_NO_OPTION);this.setVisible(false);newClient01("用戶取款系統(tǒng)");}圖 取款模塊取款模塊是 系統(tǒng)中一個(gè)相對比較重要的模塊,因?yàn)?機(jī)主要實(shí)現(xiàn)的功能就是取款業(yè)務(wù),用戶選擇賬戶名并點(diǎn)擊相應(yīng)的取款金額,將觸發(fā)按鈕控件的 事件,對后臺(tái)數(shù)據(jù)庫進(jìn)行操作。此處設(shè)置的幾個(gè)數(shù)字按鈕比較大,方便用戶的操作,其中一些相應(yīng)的提示信息也會(huì)給出,以防止用戶的錯(cuò)誤操作。由于這個(gè)模塊不需要用戶手動(dòng)輸入,所以在程序設(shè)計(jì)時(shí)沒有使用輸入的異常處理。根據(jù)參考資料及網(wǎng)上查詢,在程序中我采用的 語句調(diào)用方法是預(yù)處理指令的方法,事實(shí)證明,這種方法對于處理此程序有很大的益處,而且還可以防止非法的 輸入。當(dāng)用戶點(diǎn)擊對應(yīng)的數(shù)據(jù)按鈕后系統(tǒng)會(huì)根據(jù)本賬號查找本卡余額并與按鈕的數(shù)字相對比,如果選擇的金額大于本卡余額將顯示相應(yīng)的提示信息(不允許透支)。退出界面設(shè)計(jì)〃轉(zhuǎn)賬頁面窗體設(shè)計(jì)classAthreadextendsThread{staticintj=1;publicvoidrun(){for(;j<2;){newClient09("提示退出對話框");try{sleep(30000);j++;}}classPanel13extendsJPanel{JLabellabel;Panel13(){label=newJLabel("謝謝使用,請?jiān)?0秒內(nèi)退出此卡!");}classbankSystem08{publicstaticvoidmain(String[]args){newClient07("");}

圖 退卡模塊退卡模塊是相對簡單的模塊,沒有什么具體的界面設(shè)計(jì),只是一個(gè)消息的顯示,也是一種友好的界面處理方式,以防止用戶的錯(cuò)誤操作的方法。5系統(tǒng)實(shí)現(xiàn)程序設(shè)計(jì)程序設(shè)計(jì)的基本概念有程序、數(shù)據(jù)、子程序、子例程、協(xié)同例程、模塊以及順序性、并發(fā)性、并行性、和分布性等。程序是程序設(shè)計(jì)中最為基本的概念,子程序和協(xié)同例程都是為了便于進(jìn)行程序設(shè)計(jì)而建立的程序設(shè)計(jì)基本單位,順序性、并發(fā)性、并行性和分布性反映程序的內(nèi)在特性。程序設(shè)計(jì)規(guī)范是進(jìn)行程序設(shè)計(jì)的具體規(guī)定。程序設(shè)計(jì)是軟件開發(fā)工作的重要部分,而軟件開發(fā)是工程性的工作,所以要有規(guī)范。語言影響程序設(shè)計(jì)的功效以及軟件的可靠性、易讀性和易維護(hù)性。專用程序?yàn)檐浖藛T提供合適的環(huán)境,便于進(jìn)行程序設(shè)計(jì)工作。程序設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu)算法程序設(shè)計(jì) 是指設(shè)計(jì)、編制、調(diào)試程序的方法和過程。它是目標(biāo)明確的智力活動(dòng)。由于程序是軟件的本體,軟件的質(zhì)量主要通過程序的質(zhì)量來體現(xiàn),在軟件研究中,程序設(shè)計(jì)的工作非常重要,內(nèi)容涉及到有關(guān)的基本概念、工具、方法以及方法學(xué)等。程序設(shè)計(jì)通常分為問題建摸,算法設(shè)計(jì),編寫代碼,編譯調(diào)試和整理并寫出文檔資料五個(gè)階段。本系統(tǒng)中用 編程工具,采用結(jié)構(gòu)化的編程方法對模塊進(jìn)行程序編寫。具體源程序見附頁。程序調(diào)試程序調(diào)試,是將編制的程序投入實(shí)際運(yùn)行前,用手工或編譯程序等方法進(jìn)行測試,修正語法錯(cuò)誤和邏輯錯(cuò)誤的過程。這是保證計(jì)算機(jī)信息系統(tǒng)正確性的必不可少的步驟。編完計(jì)算機(jī)程序,必須送入計(jì)算機(jī)中測試?!酢酢酢酢酢酢踯浖y試的目的是盡可能多的發(fā)現(xiàn)程序中的錯(cuò)誤,而調(diào)試則是在進(jìn)行了成功的測試之后才開始的工作。程序調(diào)試是指在系統(tǒng)測試的基礎(chǔ)上,將發(fā)現(xiàn)的問題進(jìn)行改正,使之符合設(shè)計(jì)標(biāo)準(zhǔn)。用頭腦去分析思考與錯(cuò)誤征兆有關(guān)的信息。避開死胡同。只把調(diào)試工具當(dāng)做手段。利用調(diào)試工具,可以幫助思考,但不能代替思考,因?yàn)檎{(diào)試工具給的是一種無規(guī)律的調(diào)試方法。避免用試探法,最多只能把它當(dāng)做最后手段。再出現(xiàn)錯(cuò)誤的地方,可能還有別的錯(cuò)誤。修改錯(cuò)誤的一個(gè)常見失誤是只修改了這個(gè)錯(cuò)誤的征兆或這個(gè)錯(cuò)誤的表現(xiàn),而沒有修改錯(cuò)誤本身。如果提出的修改不能解釋與這個(gè)錯(cuò)誤有關(guān)的全部線索,那就表明只修改了錯(cuò)誤的一部分。注意修正一個(gè)錯(cuò)誤的同時(shí)可能會(huì)引入新的錯(cuò)誤。修改錯(cuò)誤的過程將迫使人們暫時(shí)回到程序設(shè)計(jì)階段。修改錯(cuò)誤也是程序設(shè)計(jì)的一種形式。修改源代碼程序,不要改變目標(biāo)代碼。調(diào)試方法1簡單調(diào)試方法:步驟在程序中插入打印語句、優(yōu)點(diǎn)是能夠顯示程序的動(dòng)態(tài)過程,比較容易檢查源程序的有關(guān)信息。確定是效率低,可能輸入大量無關(guān)的數(shù)據(jù),發(fā)現(xiàn)錯(cuò)誤帶有偶然性。運(yùn)行部分程序。有時(shí)為了測試某些被懷疑有錯(cuò)的程序段,卻將整個(gè)程序反復(fù)執(zhí)行許多次,在這種情況下,應(yīng)設(shè)法使被測程序只執(zhí)行需要檢查的程序段,以提高效率。借助調(diào)試工具。目前大多數(shù)程序設(shè)計(jì)語言都有專門的調(diào)試工具,可以用這些工具來分析程序的動(dòng)態(tài)行為。2回溯法排錯(cuò)。確定最先發(fā)現(xiàn)錯(cuò)誤癥狀的地方,人工沿程序的控制流往回追蹤源程序代碼,直到找到錯(cuò)誤或范圍。具來分析程序的動(dòng)態(tài)行為。3歸納法排錯(cuò)。是一種系統(tǒng)化的思考方法,是從個(gè)別推斷全體的方法,這種方法從線索(錯(cuò)誤征兆出發(fā)),通過分析這些線索之間的關(guān)系找出故障。主要有步:收集有關(guān)數(shù)據(jù)。收集測試用例,弄清測試用例觀察到哪些錯(cuò)誤征兆,以及在什么情況下出現(xiàn)錯(cuò)誤等信息。組織數(shù)據(jù)。整理分析數(shù)據(jù),以便發(fā)現(xiàn)規(guī)律,即什么條件下出現(xiàn)錯(cuò)誤,什么條件下不出現(xiàn)錯(cuò)誤。導(dǎo)出假設(shè)。分析研究線索之間的關(guān)系,力求找出它們的規(guī)律,從而提出關(guān)于錯(cuò)誤的一個(gè)或多個(gè)假設(shè),如果無法做出假設(shè),則應(yīng)設(shè)計(jì)并執(zhí)行更多的測試用例,以便獲得更多的數(shù)據(jù)。證明假設(shè)。假設(shè)不等于事實(shí),證明假設(shè)的合理性是極其重要的,不經(jīng)證明就根據(jù)假設(shè)排除錯(cuò)誤,往往只能消除錯(cuò)誤的征兆或只能改正部分錯(cuò)誤。證明假設(shè)的方法是用它解釋所有原始的測試結(jié)果,如果能圓滿地解釋一切現(xiàn)象,則假設(shè)得到證明,否則要么是假設(shè)不成立或不完備,要么是有多個(gè)錯(cuò)誤同時(shí)存在。4演繹法排錯(cuò)。設(shè)想可能的原因,用已有的數(shù)據(jù)排除不正確的假設(shè),精化并證明余下的假設(shè)。5對分查找法。如果知道每個(gè)變量子啊程序內(nèi)若干個(gè)關(guān)鍵點(diǎn)上的正確值,則可用賦值語句或輸入語句在程序中的關(guān)鍵點(diǎn)附近“注入”這些變量的正確值,然后檢查程序的輸出。如果輸出結(jié)果是正確的,則表示錯(cuò)誤發(fā)生在前半部分,否則,不妨認(rèn)為錯(cuò)誤在后半部分。這樣反復(fù)進(jìn)行多次,逐漸逼近錯(cuò)誤位置。調(diào)試分類i靜態(tài)調(diào)試可以采用如下兩種方法:輸出寄存器的內(nèi)容。在測試中出現(xiàn)問題,設(shè)法保留現(xiàn)場信息。把所有寄存器和主存中有關(guān)部分的內(nèi)容打印出來(通常以八進(jìn)制或十六進(jìn)制的形式打?。?,進(jìn)行分析研究。用這種方法調(diào)試,輸出的是程序的靜止?fàn)顟B(tài)(程序在某一時(shí)刻的狀態(tài)),效率非常低,不得已時(shí)才采用。為取得關(guān)鍵變量的動(dòng)態(tài)值,在程序中插入打印語句。這是取得動(dòng)態(tài)信息的簡單方法,并可檢驗(yàn)在某時(shí)間后某個(gè)變量是否按預(yù)期要求發(fā)生了變化。此方法的缺點(diǎn)是可能輸出大梁需要分析的信息,必須修改源程序才能插入打印語句,這可能改變關(guān)鍵的時(shí)序關(guān)系,引入新的錯(cuò)誤。2動(dòng)態(tài)調(diào)試通常利用程序語言提供的調(diào)試功能或?qū)iT的調(diào)試工具來分析程序的動(dòng)態(tài)行為。一般程序語言和工具提供的調(diào)試功能有檢查主存和寄存器;設(shè)置斷點(diǎn),即當(dāng)執(zhí)行到特定語句或改變特定變量的值時(shí),程序停止執(zhí)行,以便分析程序此時(shí)的狀態(tài)。綜上所述,本系統(tǒng)采用的主要方法如下:單元測試:是指原程序中每個(gè)程序單元進(jìn)行測試,檢查各個(gè)模塊是否正確實(shí)現(xiàn)規(guī)定的功能,從而發(fā)現(xiàn)模塊在編碼中或算法中的錯(cuò)誤。采用白盒法對各模塊進(jìn)行邏輯錯(cuò)誤排查,用黑盒法錄入一些有特征的數(shù)據(jù)從不同角度驗(yàn)證結(jié)果。集成測試:在單元測試的基礎(chǔ)上,將所有模塊按照設(shè)計(jì)要求組裝成一個(gè)完整的系統(tǒng)進(jìn)行測試。3認(rèn)測試(有效性測試)它的任務(wù)是檢查軟件的功能與性能是否與需求規(guī)格說明書中確定的指標(biāo)相符合。一般分為用黑盒進(jìn)行確認(rèn)測試,再檢查軟件所有文檔的完整性、正確性一一軟件配置審查。試運(yùn)行系統(tǒng)試運(yùn)行是指對系統(tǒng)的運(yùn)行環(huán)境和資源進(jìn)行設(shè)置、系統(tǒng)運(yùn)行和控制參數(shù)設(shè)定、數(shù)據(jù)加載以及調(diào)整系統(tǒng)與業(yè)務(wù)工作同步等。6系統(tǒng)維護(hù)維護(hù)是指在已完成對軟件的研制(分析、設(shè)計(jì)、編碼和測試)工作并交付使用以后,對軟件產(chǎn)品所進(jìn)行的一些軟件工程的活動(dòng)。即根據(jù)軟件運(yùn)行的情況,對軟件進(jìn)行適當(dāng)修改,以適應(yīng)新的要求,以及糾正運(yùn)行中發(fā)現(xiàn)的錯(cuò)誤。編寫軟件問題報(bào)告、軟件修改報(bào)告。系統(tǒng)維護(hù)概述系統(tǒng)維護(hù)是軟件生存周期中時(shí)間最長的一個(gè)階段,所花費(fèi)的精力和費(fèi)用也是最多的一個(gè)階段,系統(tǒng)維護(hù)的目的是保證系統(tǒng)中的各個(gè)要素隨著環(huán)境的變化始終處于最新的、正確的工作狀態(tài)。系統(tǒng)維護(hù)是信息系統(tǒng)可靠運(yùn)行的重要技術(shù)保障,我們應(yīng)給予足夠的重視。軟件維護(hù)類型軟件維護(hù)活動(dòng)類型總起來大概有四種:糾錯(cuò)性維護(hù)(校正性維護(hù))、適應(yīng)性維護(hù)、完善性維護(hù)或增強(qiáng)、預(yù)防性維護(hù)或再工程。除此四類維護(hù)活動(dòng)外,還有一些其它類型的維護(hù)活動(dòng),如:支援性維護(hù)(如用戶的培訓(xùn)等)。針對以上幾種類型的維護(hù),可以采取一些維護(hù)策略,以控制維護(hù)成本。()改正性維護(hù)改正性維護(hù)是指改正在系統(tǒng)開發(fā)階段已發(fā)生而系統(tǒng)測試階段尚未發(fā)現(xiàn)的錯(cuò)誤。這方面的維護(hù)工作量要占整個(gè)維護(hù)工作量的? 。所發(fā)現(xiàn)的錯(cuò)誤有的不太重要,不影響系統(tǒng)的正常運(yùn)行,其維護(hù)工作可隨時(shí)進(jìn)行:而有的錯(cuò)誤非常重要,甚至影響整個(gè)系統(tǒng)的正常運(yùn)行,其維護(hù)工作必須制定計(jì)劃,進(jìn)行修改,并且要進(jìn)行復(fù)查和控制。(適應(yīng)性維護(hù)適應(yīng)性維護(hù)是指使用軟件適應(yīng)信息技術(shù)變化和管理需求變化而進(jìn)行的修改。這方面的維護(hù)工作量占整個(gè)維護(hù)工作量的? 。由于目前計(jì)算機(jī)硬件價(jià)格的不斷下降.各類系統(tǒng)軟件屢出不窮,人們常常為改善系統(tǒng)硬件環(huán)境和運(yùn)行環(huán)境而產(chǎn)生系統(tǒng)更新?lián)Q代的需求;企業(yè)的外部市場環(huán)境和管理需求的不斷變化也使得各級管理人員不斷提出新的信息需求。這些因素都將導(dǎo)致適應(yīng)性維護(hù)工作的產(chǎn)生。進(jìn)行這方面的維護(hù)工作也要像系統(tǒng)開發(fā)一樣,有計(jì)劃、有步驟地進(jìn)行。完善性維護(hù)完善性維護(hù)是為擴(kuò)充功能和改善性能而進(jìn)行的修改,主要是指對已有的軟件系統(tǒng)增加一些在系統(tǒng)分析和設(shè)計(jì)階段中沒有規(guī)定的功能與性能特征。這些功能對完善系統(tǒng)功能是非常必要的。另外,還包括對處理效率和編寫程序的改進(jìn),這方面的維護(hù)占整個(gè)維護(hù)工作的? ,比重較大.也是關(guān)系到系統(tǒng)開發(fā)質(zhì)量的重要方面。這方面的維護(hù)除了要有計(jì)劃、有步驟地完成外.還要注意將相關(guān)的文檔資料加入到前面相應(yīng)的文檔中去。預(yù)防性維護(hù)預(yù)防性維護(hù)為了改進(jìn)應(yīng)用軟件的可靠性和可維護(hù)性,為了適應(yīng)未來的軟硬件環(huán)境的變化,應(yīng)主動(dòng)增加預(yù)防性的新的功能,以使應(yīng)用系統(tǒng)適應(yīng)各類變化而不被淘汰。例如將專用報(bào)表功能改成通用報(bào)表生成功能,以適應(yīng)將來報(bào)表格式的變化。這方面的維護(hù)工作量占整個(gè)維護(hù)工作量的左右。維護(hù)人員'確定,更改要)UL/磅\;維護(hù)美'型」嚴(yán)重性

評價(jià)A員安排錯(cuò)誤

噪析r=±iR善星適應(yīng)性安排、改正性)維『犧篇改正!列我?計(jì)劃護(hù)魄

維實(shí)糾錯(cuò)項(xiàng)目表評儕、優(yōu)先次___1序,高'_e/人/員安排改的件

修過軟理解程序有析原設(shè)計(jì)安排計(jì)劃*修改程序、測試程序復(fù)審開發(fā)羽目表何題

分析軟件維護(hù)過程逋過評審并工一??交付用戶的軟件7ATM銀行取款系統(tǒng)測試7.1引言軟件測試(英語:softwaretesting),描述一種用來促進(jìn)鑒定軟件的正確性、完整性、安全性和質(zhì)量的過程。軟件測試的經(jīng)典定義是:在規(guī)定的條件下對程序進(jìn)行操作,以發(fā)現(xiàn)程序錯(cuò)誤,衡量軟件質(zhì)量,并對其是否能滿足設(shè)計(jì)要求進(jìn)行評估的過程。它是幫助識(shí)別開發(fā)完成(中間或最終的版本)的計(jì)算機(jī)軟件(整體或部分)的正確度 、完全度 和質(zhì)量 的軟件過程;是的重要子域。軟件測試是軟件開發(fā)過程的重要組成部分,是用來確認(rèn)一個(gè)程序的功能、性能是否符合開發(fā)之前所提出的一些要求。軟件測試就是在軟件投入運(yùn)行前,對軟件需求分析、設(shè)計(jì)規(guī)格說明和編碼的最終復(fù)審,是軟件質(zhì)量保證的關(guān)鍵步驟。軟件測試是為了發(fā)現(xiàn)錯(cuò)誤而執(zhí)行程序的過程。測試的目的:(1)測試是為了發(fā)現(xiàn)程序中的錯(cuò)誤而執(zhí)行程序的過程。(2)好的測試方案是極可能發(fā)現(xiàn)迄今為止尚未發(fā)現(xiàn)的錯(cuò)誤的測試方案。(3)成功的測試是發(fā)現(xiàn)了至今為止尚未發(fā)現(xiàn)的錯(cuò)誤的測試。(4)測試并不僅僅是為了找出錯(cuò)誤。通過分析錯(cuò)誤產(chǎn)生的原因和錯(cuò)誤的發(fā)生趨勢,可以幫助項(xiàng)目管理者發(fā)現(xiàn)當(dāng)前軟件開發(fā)過程中的缺陷,以便及時(shí)改進(jìn)。(5)這種分析也能幫助測試人員設(shè)計(jì)出有針對性的測試方法,改善測試的效率和有效性。(6)沒有發(fā)現(xiàn)錯(cuò)誤的測試也是有價(jià)值的,完整的測試是評定軟件質(zhì)量的一種方法。(7)另外,根據(jù)測試目的的不同,還有回歸測試、壓力測試、性能測試等,分別為了檢驗(yàn)修改或優(yōu)化過程是否引發(fā)新的問題、軟件所能達(dá)到處理能力和是否達(dá)到預(yù)期的處理能力等。測試的原則:(1)測試應(yīng)該盡早進(jìn)行,最好在需求階段就開始介入,因?yàn)樽顕?yán)重的錯(cuò)誤不外乎是系統(tǒng)不能滿足用戶的需求。(2)程序員應(yīng)該避免檢查自己的程序,軟件測試應(yīng)該由第三方來負(fù)責(zé)。(3)設(shè)計(jì)測試用例時(shí)應(yīng)考慮到合法的輸入和不合法的輸入以及各種邊界條件,特殊情況下要制造極端狀態(tài)和意外狀態(tài),如網(wǎng)絡(luò)異常中斷、電源斷電等。(4)應(yīng)該充分注意測試中的群集現(xiàn)象。(5)對錯(cuò)誤結(jié)果要進(jìn)行一個(gè)確認(rèn)過程。一般由A測試出來的錯(cuò)誤,一定要由B來確認(rèn)。嚴(yán)重的錯(cuò)誤可以召開評審會(huì)議進(jìn)行討論和分析,對測試結(jié)果要進(jìn)行嚴(yán)格地確認(rèn),是否真的存在這個(gè)問題以及嚴(yán)重程度等。(6)制定嚴(yán)格的測試計(jì)劃。一定要制定測試計(jì)劃,并且要有指導(dǎo)性。測試時(shí)間安排盡量寬松,不要希望在極短的時(shí)間內(nèi)完成也有一個(gè)高水平的測試。(7)妥善保存測試計(jì)劃、測試用例、出錯(cuò)統(tǒng)計(jì)和最終分析報(bào)告,為維護(hù)提供方便。測試方法從是否關(guān)心軟件內(nèi)部結(jié)構(gòu)和具體實(shí)現(xiàn)的角度劃分(按測試分類)通常有兩種方式:單元測試和組裝測試。對本系統(tǒng)著重單元測試。單元測試中通常使用白盒測試法,也就是根據(jù)程序的內(nèi)部處理邏輯來設(shè)計(jì)測試用例。白盒測試法主要的方法有:語句覆蓋,條件覆蓋,判定覆蓋,判定一條件覆蓋,條件組合覆蓋,路徑覆蓋。從軟件開發(fā)的過程按階段劃分有單元測試、集成測試、確認(rèn)測試、系統(tǒng)測試、驗(yàn)收測試、回歸測試。本系統(tǒng)采用的是這種方法:在單元測試時(shí),測試者需要依據(jù)詳細(xì)設(shè)計(jì)說明書和源程序清單,了解該模塊的條件和模塊的邏輯結(jié)構(gòu),主要采用白盒測試的測試用例,輔之以黑盒測試的測試用例,使之對任何合理的輸入和不合理的輸入,都能鑒別和響應(yīng)。在集成測試時(shí)通常,在單元測試的基礎(chǔ)上,需要將所有模塊按照設(shè)計(jì)要求組裝成為系統(tǒng)。這時(shí)需要考慮的問題是:(1)在把各個(gè)模塊連接起來的時(shí)候,穿越模塊接口的數(shù)據(jù)是否會(huì)丟失;一個(gè)模塊的功能是否會(huì)對另一個(gè)模塊的功能產(chǎn)生不利的影響(3)各個(gè)子功能組合起來,能否達(dá)到預(yù)期要求的父功能;(4)全局?jǐn)?shù)據(jù)結(jié)構(gòu)是否有問題;(5)單個(gè)模塊的誤差累積起來,是否會(huì)放大,從而達(dá)到不能接受的程度。在單元測試的同時(shí)可進(jìn)行集成測試,發(fā)現(xiàn)并排除在模塊連接中可能出現(xiàn)的問題,最終構(gòu)成要求的軟件系統(tǒng)。確認(rèn)測試又稱有效性測試。任務(wù)是驗(yàn)證軟件的功能和性能及其它特性是否與用戶的要求一致。對軟件的功能和性能要求在軟件需求規(guī)格說明書中已經(jīng)明確規(guī)定。它包含的信息就是軟件確認(rèn)測試的基礎(chǔ)。系統(tǒng)測試,是將通過確認(rèn)測試的軟件,作為整個(gè)基于計(jì)算機(jī)系統(tǒng)的一個(gè)元素,與計(jì)算機(jī)硬件、外設(shè)、某些支持軟件、數(shù)據(jù)和人員等其它系統(tǒng)元素結(jié)合在一起,在實(shí)際運(yùn)行環(huán)境下,對計(jì)算機(jī)系統(tǒng)進(jìn)行一系列的組裝測試和確認(rèn)測試。系統(tǒng)測試的目的在于通過與系統(tǒng)的需求定義作比較,發(fā)現(xiàn)軟件與系統(tǒng)的定義不符合或與之矛盾的地方。驗(yàn)收測試在通過了系統(tǒng)的有效性測試及軟件配置審查之后,就應(yīng)開始系統(tǒng)的驗(yàn)收測試。;驗(yàn)收測試是以用戶為主的測試。軟件開發(fā)人員和QA(質(zhì)量保證)人員也應(yīng)參加。由用戶參加設(shè)計(jì)測試用例,使用生產(chǎn)中的實(shí)際數(shù)據(jù)進(jìn)行測試。在測試過程中,除了考慮軟件的功能和性能外,還應(yīng)對軟件的可移植性、兼容性、可維護(hù)性、錯(cuò)誤的恢復(fù)功能等進(jìn)行確認(rèn)?;貧w測試指在軟件維護(hù)階段,為了檢測代碼修改而引入的錯(cuò)誤所進(jìn)行的測試活動(dòng)?;貧w測試是軟件維護(hù)階段的重要工作,有研究表明,回歸測試帶來的耗費(fèi)占軟件生命周期的1/3總費(fèi)用以上。部分測試用例□□□□□□(1)將程序文件夾在eclipse點(diǎn)擊運(yùn)行。按下回車鍵。(2)首頁窗體出現(xiàn),并且顯示正常,則測試成功?!酢酢酢酢酢酢酢?1)將程序文件夾在eclipse點(diǎn)擊運(yùn)行。按下回車鍵。(2)在登錄框中輸入帳號、密碼和驗(yàn)證碼,全部輸入正確則跳到主要的業(yè)務(wù)選擇界面。若帳號、密碼或者驗(yàn)證碼有一個(gè)輸入錯(cuò)誤則會(huì)提示帳號密碼輸入錯(cuò)誤的字樣。(3)以上均可以實(shí)現(xiàn),測試成功?!酢酢酢酢酢酢酢觞c(diǎn)擊修改密碼,進(jìn)入修改密碼界面,可以輸入舊密碼、新密碼、確認(rèn)新密碼來修改密碼。點(diǎn)擊提交后,在數(shù)據(jù)庫中對應(yīng)的表中,查到賬戶的信息是否輸入正確以及兩次的新密碼是否一致,若都正確,就修改了這些信息并提示修改成功,從而將后臺(tái)額數(shù)據(jù)庫中的相應(yīng)信息就行更新。經(jīng)過測試,這些功能都能實(shí)現(xiàn)。□□□□□□□□取款時(shí)用戶將根據(jù)需要自己輸入取款金額,這個(gè)模塊的設(shè)計(jì)其實(shí)質(zhì)是具體的SQL語句操作,系統(tǒng)根據(jù)輸入的金額查找與之對應(yīng)的用戶數(shù)據(jù)表,從而根據(jù)操作修改金額。第一,系統(tǒng)首先根據(jù)本賬號,后臺(tái)數(shù)據(jù)庫進(jìn)行本卡金額與輸入的金額對比,如果找到且在金額允許范圍,就提示取款成功,并更新本賬號的數(shù)據(jù)信息。第二,如果沒有找到輸入的預(yù)轉(zhuǎn)賬號,則提示沒有該用戶,并跳轉(zhuǎn)回來重新輸入預(yù)轉(zhuǎn)賬號。點(diǎn)擊取款,進(jìn)入取款管理界面,輸入相應(yīng)取款金額,并在數(shù)據(jù)庫中修改相應(yīng)的表中數(shù)據(jù)。點(diǎn)擊提交,提示取款成功,點(diǎn)擊查詢余額則可以顯示了賬戶中的金額增加。經(jīng)過測試,這些功能都能實(shí)現(xiàn)?!酢酢酢酢酢踉诓樵兡K中,將通過用戶所使用的賬戶賬號來進(jìn)行余額的查詢,將顯示賬戶的實(shí)際余額,點(diǎn)擊“查詢”按鈕,在程序中通過按鈕的 方法進(jìn)行方法的調(diào)用,就可以實(shí)現(xiàn)查詢余額的功能并且把查詢到的賬戶余額顯示在此界面上。當(dāng)用戶點(diǎn)擊“繼續(xù)”時(shí),程序則返回到初始主界面。點(diǎn)擊提交,若出現(xiàn)相應(yīng)的查詢信息,則測試成功。經(jīng)測試,這些功能都能實(shí)現(xiàn)?!酢酢酢酢酢蹀D(zhuǎn)賬時(shí)用戶將根據(jù)需要自己輸入預(yù)轉(zhuǎn)賬號和預(yù)轉(zhuǎn)金額,這個(gè)模塊的設(shè)計(jì)其實(shí)質(zhì)是具體的SQL語句操作,系統(tǒng)根據(jù)輸入的賬號查找與之對應(yīng)的用戶數(shù)據(jù)表,從而根據(jù)操作修改金額。第一,系統(tǒng)首先根據(jù)本賬號,后臺(tái)數(shù)據(jù)庫進(jìn)行本卡金額與輸入的金額對比,如果找到且在金額允許范圍,就提示轉(zhuǎn)賬成功,并更新本賬號的數(shù)據(jù)信息。第二,如果沒有找到輸入的預(yù)轉(zhuǎn)賬號,則提示沒有該用戶,并跳轉(zhuǎn)回來重新輸入預(yù)轉(zhuǎn)賬號。點(diǎn)擊提交,若出現(xiàn)相應(yīng)的轉(zhuǎn)賬信息,提交后提示轉(zhuǎn)賬成功,則測試成功。經(jīng)測試,這些功能都能實(shí)現(xiàn)。結(jié)論本文主要介紹了模擬的自動(dòng)取款系統(tǒng)。從用戶視角看主要有四大模塊:取款、查詢信息、轉(zhuǎn)賬和修改密碼。實(shí)現(xiàn)了報(bào)表管理系統(tǒng)的功能要求。在設(shè)計(jì)過程中主要使用了的后臺(tái)開發(fā)功能,以及對數(shù)據(jù)庫的操作,可以事先將需要的數(shù)據(jù)編寫到數(shù)據(jù)庫中,系統(tǒng)只需將對數(shù)據(jù)的操作從開發(fā)層面?zhèn)魅霐?shù)據(jù)庫來完成數(shù)據(jù)的修改以及更新操作。由于時(shí)間與水平所限,本系統(tǒng)的功能有待進(jìn)一步完善,只挑選用戶感興趣的相關(guān)信息進(jìn)行顯示,大大提高 的靈活性和界面友好型。參考資料劉長生謝強(qiáng),丁秋林應(yīng)用中的漢字亂碼問題分析.計(jì)算機(jī)技術(shù)與發(fā)展趙川丁志剛宗宇偉等基于 的測試工具管理平臺(tái)構(gòu)建軟件世界年期:張紅梅,王磊計(jì)算機(jī)及網(wǎng)絡(luò)技術(shù)應(yīng)用 實(shí)驗(yàn)科學(xué)與技術(shù), , :美國 人民郵電出版社衛(wèi)建文蔣詠梅計(jì)算機(jī)網(wǎng)絡(luò)編程語言一一 計(jì)算機(jī)系統(tǒng)應(yīng)用機(jī)械工業(yè)出版社 年月編程思想第版機(jī)械工業(yè)出版社機(jī)械工業(yè)出版社陳剛. 從入門到精通[M].北京:清華大學(xué)出版社 年月陸惠思,《軟件工程》,電子工業(yè)出版社。任永功,王政軍軟件技術(shù)與數(shù)據(jù)庫 計(jì)算機(jī)工程, , :夏寬理《 語言程序設(shè)計(jì)》機(jī)械工業(yè)出版社 出版致謝行文至此,我的這篇論文已接近尾聲;歲月如梭,我四年的大學(xué)時(shí)光也即將敲響結(jié)束的鐘聲。離別在即,站在人生的又一個(gè)轉(zhuǎn)折點(diǎn)上,心中難免思緒萬千,一種感恩之情油然而生。在學(xué)校的學(xué)習(xí)生活即將結(jié)束,回顧四年來的學(xué)習(xí)經(jīng)歷,面對現(xiàn)在的收獲,我感到無限欣慰。至此,向在我畢業(yè)設(shè)計(jì)中提供幫助的老師及同學(xué)們致謝。畢業(yè)設(shè)計(jì)期間遇到的問題都經(jīng)過了杰普王亞娟老師全面、具體的指導(dǎo)。王亞娟老師淵博的學(xué)識(shí)、敏銳的思維和民主而嚴(yán)謹(jǐn)?shù)淖黠L(fēng)使我受益非淺,這使得我不僅僅順利完成了設(shè)計(jì),而且感受頗深。感謝任聚財(cái)老師在畢業(yè)設(shè)計(jì)工作中給予的幫助。感謝我的朋友和其他老師對我的關(guān)心和幫助。外文資料《Effectjava》I.AlwaysOverrideHashCodeWhenYouOverrideEqualsAcommonsourceofbugsisthefailuretooverridethehashCodemethod.YoumustoverridehashCodeineveryclassthatoverridesequals.FailuretodosowillresultinaviolationofthegeneralcontractforObject.hashCode,whichwillpreventyourclassfromfunctioningproperlyinconjunctionwithallhash-basedcollections,includingHashMap,HashSet,andHashtable.Hereisthecontract,copiedfromtheObjectspecification[JavaSE6]:⑴Wheneveritisinvokedonthesameobjectmorethanonceduringanexecutionofanapplication,thehashCodemethodmustconsistentlyreturnthesameinteger,providednoinformationusedinequalscomparisonsontheobjectismodified.Thisintegerneednotremainconsistentfromoneexecutionofanapplicationtoanotherexecutionofthesameapplication.Iftwoobjectsareequalaccordingtotheequals(Object)method,thencallingthehashCodemethodoneachofthetwoobjectsmustproducethesameintegerresult.Itisnotrequiredthatiftwoobjectsareunequalaccordingtotheequals(Object)method,thencallingthehashCodemethodoneachofthetwoobjectsmustproducedistinctintegerresults.However,theprogrammershouldbeawarethatproducingdistinctintegerresultsforunequalobjectsmayimprovetheperformanceofhashtables.ThekeyprovisionthatisviolatedwhenyoufailtooverridehashCodeisthesecondone:equalobjectsmusthaveequalhashcodes.Twodistinctinstancesmaybelogicallyequalaccordingtoaclass'sequalsmethod,buttoObject'shashCodemethod,they'rejusttwoobjectswithnothingmuchincommon.ThereforeObject'shashCodemethodreturnstwoseeminglyrandomnumbersinsteadoftwoequalnumbersasrequiredbythecontract..AlwaysOverridetoStringWhilejava.lang.ObjectprovidesanimplementationofthetoStringmethod,thestringthatitreturnsisgenerallynotwhattheuserofyourclasswantstosee.Itconsistsoftheclassnamefollowedbyan“at”sign(@)andtheunsignedhexadecimalrepresentationofthehashcode.ThegeneralcontractfortoStringsaysthatthereturnedstringshouldbe“aconcisebutinformativerepresentationthatiseasyforapersontoread”[JavaSE6].Whileitcouldbearguedthat“PhoneNumber@163b91"isconciseandeasytoread,itisn,tveryinformativewhencomparedto"(707)867-5309.”ThetoStringcontractgoesontosay,“Itisrecommendedthatallsubclassesoverridethismethod.”Goodadvice,indeed!Whileitisn,tasimportantasobeyingtheequalsandhashCodecontracts,providingagoodtoStringimplementationmakesyourclassmuchmorepleasanttouse.ThetoStringmethodisautomaticallyinvokedwhenanobjectispassedtoprintln,printf,thestringconcatenationoperator,orassert,orprintedbyadebugger.Ifyou,veprovidedagoodtoStringmethodforPhoneNumber,generatingausefuldiagnosticmessageisaseasyasthis:System.out.println("Failedtoconnect:"+phoneNumber);ProgrammerswillgeneratediagnosticmessagesinthisfashionwhetherornotyouoverridetoString,butthemessageswon,tbeusefulunlessyoudo.ThebenefitsofprovidingagoodtoStringmethodextendbeyondinstancesoftheclasstoobjectscontainingreferencestotheseinstances,especiallycollections.Whichwouldyouratherseewhenprintingamap,“Jenny=PhoneNumber@163b91"or“Jenny=(707)867-5309”?Whenpractical,thetoStringmethodshouldreturnalloftheinterestinginformationcontainedintheobject,asinthephonenumberexamplejustshown.Itisimpracticaliftheobjectislargeorifitcontainsstatethatisnotconducivetostringrepresentation.Underthesecircumstances,toStringshouldreturnasummarysuchas“Manhattanwhitepages(1487536listings)”or“Thread[main,5,main]”.Ideally,thestringshouldbeself-explanatory.(TheThreadexampleflunksthistest.)Oneimportantdecisionyou,llhavetomakewhenimplementingatoStringmethodiswhethertospecifytheformatofthereturnvalueinthedocumentation.Itisrecommendedthatyoudothisforvalueclasses,suchasphonenumbersormatrices.Theadvantageofspecifyingtheformatisthatitservesasastandard,unambiguous,human-readablerepresentationoftheobject.Thisrepresentationcanbeusedforinputandoutputandinpersistenthuman-readabledataobjects,suchasXMLdocuments.Ifyouspecifytheformat,it'susuallyagoodideatoprovideamatchingstaticfactoryorconstructorsoprogrammerscaneasilytranslatebackandforthbetweentheobjectanditsstringrepresentation.ThisapproachistakenbymanyvalueclassesintheJavaplatformlibraries,includingBigInteger,BigDecimal,andmostoftheboxedprimitiveclasses.ThedisadvantageofspecifyingtheformatofthetoStringreturnvalueisthatonceyou'vespecifiedit,you'restuckwithitforlife,assumingyourclassiswidelyused.Programmerswillwritecodetoparsetherepresentation,togenerateit,andtoembeditintopersistentdata.Ifyouchangetherepresentationinafuturerelease,you'llbreaktheircodeanddata,andtheywillyowl.Byfailingtospecifyaformat,youpreservetheflexibilitytoaddinformationorimprovetheformatinasubsequentrelease.Whetherornotyoudecidetospecifytheformat,youshouldclearlydocumentyourintentions.Ifyouspecifytheformat,youshoulddosoprecisely.Whetherornotyouspecifytheformat,provideprogrammaticaccesstoalloftheinformationcontainedinthevaluereturnedbytoString.Forexample,thePhoneNumberclassshouldcontainaccessorsfortheareacode,prefix,andlinenumber.Ifyoufailtodothis,youforceprogrammerswhoneedthisinformationtoparsethestring.Besidesreducingperformanceandmakingunnecessaryworkforprogrammers,thisprocessiserror-proneandresultsinfragilesystemsthatbreakifyouchangetheformat.Byfailingtoprovideaccessors,youturnthestringformatintoadefactoAPI,evenifyou'vespecifiedthatit'ssubjecttochange..MinimizetheAccessibilityofClassesandMembersThesinglemostimportantfactorthatdistinguishesawell-designedmodulefromapoorlydesignedoneisthedegreetowhichthemodulehidesitsinternaldataandotherimplementationdetailsfromothermodules.Awell-designedmodulehidesallofitsimplementationdetails,cleanlyseparatingitsAPIfromitsimplementation.ModulesthencommunicateonlythroughtheirAPIsandareoblivioustoeachothers'innerworkings.Thisconcept,knownasinformationhidingorencapsulation,isoneofthefundamentaltenetsofsoftwaredesign[Parnas72].Informationhidingisimportantformanyreasons,mostofwhichstemfromthefactthatitdecouplesthemodulesthatcompriseasystem,allowingthemtobedeveloped,tested,optimized,used,understood,andmodifiedinisolation.Thisspeedsupsystemdevelopmentbecausemodulescanbedevelopedinparallel.Iteasestheburdenofmaintenancebecausemodulescanbeunderstoodmorequicklyanddebuggedwithlittlefearofharmingothermodules.Whileinformationhidingdoesnot,inandofitself,causegoodperformance,itenableseffectiveperformancetuning:onceasystemiscompleteandprofilinghasdeterminedwhichmodulesarecausingperformanceproblems(Item55),thosemodulescanbeoptimizedwithoutaffectingthecorrectnessofothermodules.Informationhidingincreasessoftwarereusebecausemodulesthataren'ttightlycoupledoftenproveusefulinothercontextsbesidestheonesforwhichtheyweredeveloped.Finally,informationhidingdecreasestheriskinbuildinglargesystems,becauseindividualmodulesmayprovesuccessfulevenifthesystemdoesnot.Javahasmanyfacilitiestoaidininformationhiding.Theaccesscontrolmechanism[JLS,6.6]specifiestheaccessibilityofclasses,interfaces,andmembers.Theaccessibilityofanentityisdeterminedbythelocationofitsdeclarationandbywhich,ifany,oftheaccessmodifiers(private,protected,andpublic)ispresentonthedeclaration.Properuseofthesemodifiersisessentialtoinformationhiding.Theruleofthumbissimple:makeeachclassormemberasinaccessibleaspossible.Inotherwords,usethelowestpossibleaccesslevelconsistentwiththeproperfunctioningofthesoftwarethatyouarewriting.Fortop-level(non-nested)classesandinterfaces,thereareonlytwopossibleaccesslevels:package-privateandpublic.Ifyoudeclareatop-levelclassorinterfacewiththepublicmodifier,itwillbepublic;otherwise,itwillbepackage-private.Ifatop-levelclassorinterfacecanbemadepackage-private,itshouldbe.Bymakingitpackage-private,youmakeitpartoftheimplementationratherthantheexportedAPI,andyoucanmodifyit,replaceit,oreliminateitinasubsequentreleasewithoutfearofharmingexistingclients.Ifyoumakeitpublic,youareobligatedtosupportitforevertomaintaincompatibility.Ifapackage-privatetop-levelclass(orinterface)isusedbyonlyoneclass,considermakingthetop-levelclassaprivatenestedclassofthesoleclassthatusesit(Item22).Thisreducesitsaccessibilityfromalltheclassesinitspackagetotheoneclassthatusesit.Butitisfarmoreimportanttoreducetheaccessibilityofagratuitouslypublicclassthanofapackage-privatetop-levelclass:thepublicclassispartofthepackage'sAPI,whilethepackage-privatetop-levelclassisalreadypartofitsimplementation.Aftercarefullydesigningyourclass,spublicAPI,yourreflexshouldbetomakeallothermembersp

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論