




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
數據庫課程設計實驗報告-銀行賬戶管理系統(常用版)(可以直接使用,可編輯完整版資料,歡迎下載)
數據庫課程設計實驗報告-銀行賬戶管理系統(常用版)(可以直接使用,可編輯完整版資料,歡迎下載)數據庫課程設計報告題目:銀行賬戶管理系統院系名稱:計算機學院專業名稱:軟件工程班級: 09級01班學生姓名: ***學號(8位): *******指導教師: ***設計起止時間:2021年12月19日~2021年12月30日設計目的銀行賬戶管理是銀行業務流程中十分重要的且必備的環節,由于銀行有大量數據需要處理,全部采用人工方式明顯不現實:這不僅需要花費很高的成本,而且處理事務的效率和質量都存在很大的問題,出于這些問題的考慮,使用計算機來處理這類問題就成為一個相當理想的方案。利用計算機可以極大地降低成本,更重要的是可以幾乎沒有錯誤地高效地處理所有的事務,所以做一款基于銀行賬戶管理方面的系統是十分必要的。本次課程設計通過對《銀行賬戶管理系統》中銀行業務流程的基本實現以及用戶環節的事務處理,旨在體驗數據庫設計和實現的基本過程中掌握數據庫模式的設計、分析和實現方法,了解數據庫應用系統軟件開發的一般過程。二.設計內容 分別完成銀行業務功能、ATM功能和用戶管理功能,并設計數據庫以支持這些功能的實現,最后通過代碼進行具體實現以及數據庫鏈接。 所用數據庫:SQLServer2021 開發語言:Java 數據庫設計:使用了六張表,分別為:管理員表(admin)、ATM機表(ATM)、ATM機出納表(ATMOutIn)、銀行柜臺出納表(BankOutIn)、銀行卡表(card)、用戶表(users)。三個觸發器,分別為:凍結用戶賬號操作(userstatus_update)、ATM機存取款操作(ATMOutIn_insert)和銀行存取款操作(BankOutIn_insert)。一個視圖、一個虛表:用戶操作查詢(allInfo(userId,cunquTime,cunquAddress,cunquMoney,cunquSummary,balanceMoney))。銀行業務功能:設置管理員賬號,賦予管理員權限以實現開戶、銷戶、存款、取款、查詢、辦卡和掛失功能。ATM功能:ATM機連接系統數據庫,實現用戶登錄、存(?。┛钜约坝脩舨樵児δ?。用戶管理:通過登錄功能獲得系統數據庫中自己的用戶信息,并有權限修改系統允許用戶修改的信息。三.概要設計1.功能模塊圖; 2.各個模塊詳細的功能描述。 銀行業務功能:管理員登錄在數據庫中添加管理員數據,管理員可登錄系統并有權限完成與用戶相關所有操作。開戶收集用戶信息,為用戶分配賬號并通過程序在系統數據庫中添加用戶信息。銷戶根據賬號在數據庫中查找用戶,確認用戶身份信息后,管理員通過程序刪除數據庫中用戶信息。存款根據卡號在數據庫中查找用戶,依據存入金額,管理員通過程序修改數據庫中用戶的金額信息。取款根據卡號在數據庫中查找用戶,通過密碼確認用戶,依據取出金額,經判斷取出金額合法后(不大于余額),管理員通過程序修改數據庫中用戶的金額信息。查詢以用戶卡號、賬號或身份證號之一為關鍵字,在數據庫中查找用戶,依據業務需求顯示用戶信息(開戶人信息、用戶近期操作記錄)。辦卡為用戶賬號綁定卡號,由管理員通過程序將卡號以及用戶設置的密碼存入系統數據庫相應用戶信息中。掛失根據賬號在數據庫中查找用戶,用戶提供登錄密碼確認用戶身份信息后,管理員通過程序將數據庫中用戶卡狀態信息由“使用”改為“凍結”。 ATM功能:登錄ATM機依據用戶卡號和密碼在系統數據庫中查詢用戶信息,在信息匹配的情況下進入用戶操作界面。存款ATM機依據用戶存入金額,通過程序修改數據庫中用戶的金額信息。取款ATM機依據取出金額,通過對比本機余額和數據庫中用戶余額,若金額合法則通過程序修改數據庫中用戶的金額信息,否則彈出錯誤信息。 用戶管理:登錄依據用戶賬號和密碼由管理員或ATM機在系統數據庫中查詢用戶信息,在信息匹配的情況下用戶獲得用戶管理權限。查詢個人信息打印數據庫中記錄的用戶個人信息。修改個人信息收集用戶新信息,由管理員操作,修改數據庫中用戶擁有修改權限的相應數據。查詢近期操作依據用戶提供所要查詢時間范圍,由管理員或ATM機通過程序查詢系統數據庫中用戶的操作記錄。四.詳細設計1.功能函數的調用關系圖publicstaticvoidmian(String[]args){publicstaticvoidmian(String[]args){ AdminLoginJFrame() AdminDao 管理員登錄界面 ChaxunKaInfo(StringuserId) KaMimaXiuGai(StringcardId) UserLoginJFrame()MainFrame() 用戶登錄界面 KaCaoZuo(Stringtimes,StringcardId)主界面 ChaXunCaoZuo(Usersuser) UserGuanLi(StringATMId,StringcardId) ATMLoginJFrame() actionPerformed(ActionEvente) ATM機登錄界面 UserChaXun(StringcardId)} 用戶類 卡查詢 操作 卡密修改 操作 卡操作記 錄 查詢近期 操作 用戶管理 登錄方法 用戶信息 查詢2.重點設計及編碼數據庫設計:createdatabaseaccountuseaccount createtableusers(userIdvarchar(10)notnull,/*用戶賬號,主鍵*/userNamevarchar(10)notnull,/*用戶名*/userPasswordvarchar(10)notnull,/*密碼*/idNovarchar(20)notnull,/*身份證號碼,唯一*/userMoneynumeric(10,2)default0,/*總金額,不能小于零*/userStatusvarchar(4)check(userStatus='使用'oruserStatus='凍結')default'使用',/*用戶狀態(使用,凍結),默認是使用中*/userAddressvarchar(30)notnull,/*用戶地址*/startTimeDateTime,/*開戶時間,應該是開戶時的系統時間,不應該人為輸入*/primarykey(userId),/*設置主鍵*/)--用戶的狀態一旦變成凍結狀態,那么卡也應該不能使用createtriggeruserstatus_updateonusersafterupdateasifupdate(userStatus)beginif(selectuserStatusfrominserted)='凍結'updatecardsetcardStatus='凍結'whereuserId=(selectuserIdfromdeleted)if(selectuserStatusfrominserted)='使用'updatecardsetcardStatus='使用'whereuserId=(selectuserIdfromdeleted)endcreatetablecard(cardIdvarchar(20)primarykey,/*卡號,主鍵*/userIdvarchar(10)notnull,/*用戶賬號,外鍵,參照users表的userId*/cardPasswordvarchar(10)notnull,/*卡密碼*/cardStatusvarchar(5)check(cardStatusin('使用','凍結','掛失'))default'使用',/*卡狀態(使用,凍結,掛失),默認是使用*/--cardMoneynumeric(10,2)check(cardMoney>=0),foreignkey(userId)referencesusers(userId)ondeletecascade/*當刪除用戶帳號時,他的卡號會及聯刪除*/)--管理員表createtableadmin(adminIdvarchar(10)notnullprimarykey,/*操作員號碼,主鍵*/adminNamevarchar(10)notnull,/*操作員名字*/adminPasswordvarchar(20)notnull,/*操作員密碼*/BankAddressvarchar(20)notnull/*操作員所在銀行地址*/)insertintoadminvalues('001','沈萬三','123','工商銀行長安分行')--創建一個ATM表,至少應該含有編號以及ATM機里的總金額createtableATM(ATMIdvarchar(10)primarykey,/*ATM機ID*/ATMMoneynumeric(20,2)check(ATMMoney>=0),/*ATM機里的總錢數,不允許用戶的取款數大于它的總錢數,所以它的總錢數不能小于*/ATMAddressvarchar(20)/*ATM機的地點*/)insertintoATMvalues('000',10000,'長安區')insertintoATMvalues('111',50000,'長安區')--用戶ATM機存取款信息表createtableATMOutIn(ATMIdvarchar(10),/*取款機號,外鍵,參照ATM表的ATMId*/cardIdvarchar(20)notnull,/*用戶卡號,外鍵,參照card表的cardId*/ATMTimeDateTime,/*在ATM機存取款時間(應該是進行存取款時的系統時間*/ATMCunQunumeric(10,2),/*ATM機存款金額*/ATMSummaryvarchar(30),/*存取款摘要*/balanceMoneynumeric(10,2)default0,/*經過操作后賬號中的金額*/foreignkey(ATMId)referencesATM(ATMId)ondeletecascade,foreignkey(cardId)referencescard(cardId)ondeletecascade)--創建一個觸發器,當產生這一信息時,賬號上的錢也會隨之改動createtriggerATMOutIn_insertonATMOutInafterinsertasdeclare@num_rowsintselect@num_rows=@@rowcountif@num_rows=0/*未插入成功*/returnif@num_rows>0/*數據插入成功*/beginupdateuserssetuserMoney=userMoney+(selectATMCunQufromInserted)whereuserIdin(selectuserIdfromcardc,insertediwherec.cardId=i.cardId)updateATMsetATMMoney=ATMMoney+(selectATMCunQufromInserted)whereATMIdin(selectATMIdfrominserted)/*對應的atm機的總金額也會隨之改變*/declare@balanceMoneynumeric(10,2)/*賬號余額*/select@balanceMoney=(selectuserMoneyfromuserswhereuserIdin(selectuserIdfromcardc,insertediwherec.cardId=i.cardId))updateATMOutInsetbalanceMoney=(@balanceMoney)wherecardIdin(selectcardIdfrominserted)andatmtimein(selectatmtimefrominserted)/*完成了賬號金額的修改,再將新的金額插入到信息表中,就是剩余的總余額了(注意修改的只是一個賬號此次的操作*/end--用戶銀行存取款信息信息表createtableBankOutIn(adminIdvarchar(10)notnull,/*操作員號碼,外鍵,參照操作員表的adminId*/cardIdvarchar(20)notnull,/*用戶卡號,外鍵,參照用戶信息表*/BankTimeDateTime,/*銀行存款時間*/BankCunQunumeric(10,2),/*銀行存款*/BankSummaryvarchar(30),balanceMoneynumeric(10,2)default0,/*經過操作后賬號中的金額*/foreignkey(adminId)referencesadmin(adminId)ondeletecascade,foreignkey(cardId)referencescard(cardId)ondeletecascade)--創建一個觸發器,當插入這條數據時會自動修改users表里的金額信息createtriggerBankOutIn_insertonBankOutInforinsertasdeclare@num_rowsintselect@num_rows=@@rowcountif@num_rows=0/*未插入成功*/returnif@num_rows>0/*數據插入成功*/beginupdateuserssetuserMoney=userMoney+(selectBankCunQufromInserted)whereusers.userId=(selectuserIdfromcardc,insertediwherec.cardId=i.cardId)declare@balanceMoneynumeric(10,2)select@balanceMoney=(selectuserMoneyfromuserswhereuserId=(selectuserIdfromcardc,insertediwherec.cardId=i.cardId))updateBankOutInsetbalanceMoney=(@balanceMoney)wherecardId=(selectcardIdfrominserted)andbanktime=(selectbanktimefrominserted)/*完成了賬號金額的修改,再將新的金額插入到信息表中,就是剩余的總余額了(要注意這個信息總額的唯一性)*/end--總信息可以用其它的表推出,建一個視圖,一個虛表,來綜合他們的信息createviewallInfo(userId,cunquTime,cunquAddress,cunquMoney,cunquSummary,balanceMoney)asselectuserId,bankTime,BankAddress,bankCunqu,bankSummary,balanceMoneyfrombankoutinb,admina,cardcwhereb.adminId=a.adminIdandc.cardId=b.cardIdunionselectuserId,ATMTime,ATMAddress,ATMCunqu,ATMSummary,balanceMoneyfromatmoutina,cardc,ATMatmwherec.cardId=a.cardIdanda.atmid=atm.atmid數據庫鏈接:packagecom.connection;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.PreparedStatement;importjava.sql.ResultSet;importjava.sql.SQLException;/***定義一個數據庫的連接及關閉資源的類*@authorAdministrator**/publicclassDBConnection{ /** *創建數據庫的鏈接 *@return返回一個數據庫的鏈接 */ publicstaticConnectiongetConnection(){ Connectionconn=null; try{ Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");//加載數據庫驅動 Stringurl=st:1433;databaseName=account"; Stringusername="sa";//數據庫用戶名 Stringpassword="1126";//數據庫密碼 conn=DriverManager.getConnection(url,username,password);//獲得數據庫的鏈接 }catch(ClassNotFoundExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); }catch(SQLExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); } returnconn; } /** *關閉數據庫資源 *@paramobj數據庫打開的資源對象(在此處用Object,因為鏈接數據庫是會打開多個資源) */ publicstaticvoidcloseObject(Objectobj){ if(obj!=null){ if(objinstanceofResultSet){ try{ ((ResultSet)obj).close(); }catch(SQLExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); } } if(objinstanceofPreparedStatement){ try{ ((PreparedStatement)obj).close(); }catch(SQLExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); } }- if(objinstanceofConnection){ try{ ((Connection)obj).close(); }catch(SQLExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); } } } }}程序入口函數:packagecom.main;importcom.frame.MainFrame;publicclassBegin{ /** *@paramargs */ publicstaticvoidmain(String[]args){ //TODOAuto-generatedmethodstub newMainFrame(); }}五.測試數據及運行結果1.正常測試數據和運行結果管理員登錄:登錄名:沈萬三登錄密碼:123 管理員操作:查詢用戶信息開戶ATM機操作登錄查詢2.異常測試數據及運行結果 1.查詢失敗 ATM機存款失敗六.調試情況,設計技巧及體會1.改進方案 本系統基本實現了銀行賬戶管理的基本功能,不過在細節方面處理的不夠完善,細化功能也做的不夠好,此外,交互界面美工基本沒做。對于此,在接下來的時間里我將對系統不斷完善,盡力做到盡善盡美。2.體會 在課程設計的兩周中,我在數據庫設計以及代碼編寫方面都遇到了不少問題,所幸在同學們的幫助下以及借助網絡查找相應問題,總算按時完成了課程設計關于上機的任務。 在此過程中我通過數據庫設計和實現的基本過程中掌握數據庫模式的設計、分析和實現方法,了解數據庫應用系統軟件開發的一般過程,獲益匪淺。七.參考文獻 《數據庫系統原理與應用》——孟彩霞、喬平安、張榮編著八.附錄:數據庫設計:createdatabaseaccountuseaccount createtableusers(userIdvarchar(10)notnull,/*用戶賬號,主鍵*/userNamevarchar(10)notnull,/*用戶名*/userPasswordvarchar(10)notnull,/*密碼*/idNovarchar(20)notnull,/*身份證號碼,唯一*/userMoneynumeric(10,2)default0,/*總金額,不能小于零*/userStatusvarchar(4)check(userStatus='使用'oruserStatus='凍結')default'使用',/*用戶狀態(使用,凍結),默認是使用中*/userAddressvarchar(30)notnull,/*用戶地址*/startTimeDateTime,/*開戶時間,應該是開戶時的系統時間,不應該人為輸入*/primarykey(userId),/*設置主鍵*/)--用戶的狀態一旦變成凍結狀態,那么卡也應該不能使用createtriggeruserstatus_updateonusersafterupdateasifupdate(userStatus)beginif(selectuserStatusfrominserted)='凍結'updatecardsetcardStatus='凍結'whereuserId=(selectuserIdfromdeleted)if(selectuserStatusfrominserted)='使用'updatecardsetcardStatus='使用'whereuserId=(selectuserIdfromdeleted)endcreatetablecard(cardIdvarchar(20)primarykey,/*卡號,主鍵*/userIdvarchar(10)notnull,/*用戶賬號,外鍵,參照users表的userId*/cardPasswordvarchar(10)notnull,/*卡密碼*/cardStatusvarchar(5)check(cardStatusin('使用','凍結','掛失'))default'使用',/*卡狀態(使用,凍結,掛失),默認是使用*/--cardMoneynumeric(10,2)check(cardMoney>=0),foreignkey(userId)referencesusers(userId)ondeletecascade/*當刪除用戶帳號時,他的卡號會及聯刪除*/)--管理員表createtableadmin(adminIdvarchar(10)notnullprimarykey,/*操作員號碼,主鍵*/adminNamevarchar(10)notnull,/*操作員名字*/adminPasswordvarchar(20)notnull,/*操作員密碼*/BankAddressvarchar(20)notnull/*操作員所在銀行地址*/)insertintoadminvalues('001','沈萬三','123','工商銀行長安分行')--創建一個ATM表,至少應該含有編號以及ATM機里的總金額createtableATM(ATMIdvarchar(10)primarykey,/*ATM機ID*/ATMMoneynumeric(20,2)check(ATMMoney>=0),/*ATM機里的總錢數,不允許用戶的取款數大于它的總錢數,所以它的總錢數不能小于*/ATMAddressvarchar(20)/*ATM機的地點*/)insertintoATMvalues('000',10000,'長安區')insertintoATMvalues('111',50000,'長安區')--用戶ATM機存取款信息表createtableATMOutIn(ATMIdvarchar(10),/*取款機號,外鍵,參照ATM表的ATMId*/cardIdvarchar(20)notnull,/*用戶卡號,外鍵,參照card表的cardId*/ATMTimeDateTime,/*在ATM機存取款時間(應該是進行存取款時的系統時間*/ATMCunQunumeric(10,2),/*ATM機存款金額*/ATMSummaryvarchar(30),/*存取款摘要*/balanceMoneynumeric(10,2)default0,/*經過操作后賬號中的金額*/foreignkey(ATMId)referencesATM(ATMId)ondeletecascade,foreignkey(cardId)referencescard(cardId)ondeletecascade)--創建一個觸發器,當產生這一信息時,賬號上的錢也會隨之改動createtriggerATMOutIn_insertonATMOutInafterinsertasdeclare@num_rowsintselect@num_rows=@@rowcountif@num_rows=0/*未插入成功*/returnif@num_rows>0/*數據插入成功*/beginupdateuserssetuserMoney=userMoney+(selectATMCunQufromInserted)whereuserIdin(selectuserIdfromcardc,insertediwherec.cardId=i.cardId)updateATMsetATMMoney=ATMMoney+(selectATMCunQufromInserted)whereATMIdin(selectATMIdfrominserted)/*對應的atm機的總金額也會隨之改變*/declare@balanceMoneynumeric(10,2)/*賬號余額*/select@balanceMoney=(selectuserMoneyfromuserswhereuserIdin(selectuserIdfromcardc,insertediwherec.cardId=i.cardId))updateATMOutInsetbalanceMoney=(@balanceMoney)wherecardIdin(selectcardIdfrominserted)andatmtimein(selectatmtimefrominserted)/*完成了賬號金額的修改,再將新的金額插入到信息表中,就是剩余的總余額了(注意修改的只是一個賬號此次的操作*/end--用戶銀行存取款信息信息表createtableBankOutIn(adminIdvarchar(10)notnull,/*操作員號碼,外鍵,參照操作員表的adminId*/cardIdvarchar(20)notnull,/*用戶卡號,外鍵,參照用戶信息表*/BankTimeDateTime,/*銀行存款時間*/BankCunQunumeric(10,2),/*銀行存款*/BankSummaryvarchar(30),balanceMoneynumeric(10,2)default0,/*經過操作后賬號中的金額*/foreignkey(adminId)referencesadmin(adminId)ondeletecascade,foreignkey(cardId)referencescard(cardId)ondeletecascade)--創建一個觸發器,當插入這條數據時會自動修改users表里的金額信息createtriggerBankOutIn_insertonBankOutInforinsertasdeclare@num_rowsintselect@num_rows=@@rowcountif@num_rows=0/*未插入成功*/returnif@num_rows>0/*數據插入成功*/beginupdateuserssetuserMoney=userMoney+(selectBankCunQufromInserted)whereusers.userId=(selectuserIdfromcardc,insertediwherec.cardId=i.cardId)declare@balanceMoneynumeric(10,2)select@balanceMoney=(selectuserMoneyfromuserswhereuserId=(selectuserIdfromcardc,insertediwherec.cardId=i.cardId))updateBankOutInsetbalanceMoney=(@balanceMoney)wherecardId=(selectcardIdfrominserted)andbanktime=(selectbanktimefrominserted)/*完成了賬號金額的修改,再將新的金額插入到信息表中,就是剩余的總余額了(要注意這個信息總額的唯一性)*/end--總信息可以用其它的表推出,建一個視圖,一個虛表,來綜合他們的信息createviewallInfo(userId,cunquTime,cunquAddress,cunquMoney,cunquSummary,balanceMoney)asselectuserId,bankTime,BankAddress,bankCunqu,bankSummary,balanceMoneyfrombankoutinb,admina,cardcwhereb.adminId=a.adminIdandc.cardId=b.cardIdunionselectuserId,ATMTime,ATMAddress,ATMCunqu,ATMSummary,balanceMoneyfromatmoutina,cardc,ATMatmwherec.cardId=a.cardIdanda.atmid=atm.atmid程序源碼:DBConnection.javapackagecom.connection;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.PreparedStatement;importjava.sql.ResultSet;importjava.sql.SQLException;/***定義一個數據庫的連接及關閉資源的類*@authorAdministrator**/publicclassDBConnection{ /** *創建數據庫的鏈接 *@return返回一個數據庫的鏈接 */ publicstaticConnectiongetConnection(){ Connectionconn=null; try{ Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");//加載數據庫驅動 Stringurl="jdbc:microsoft:sqlserver://localhost:1433;databaseName=account"; Stringusername="sa";//數據庫用戶名 Stringpassword="1126";//數據庫密碼 conn=DriverManager.getConnection(url,username,password);//獲得數據庫的鏈接 }catch(ClassNotFoundExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); }catch(SQLExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); } returnconn; } /** *關閉數據庫資源 *@paramobj數據庫打開的資源對象(在此處用Object,因為鏈接數據庫是會打開多個資源) */ publicstaticvoidcloseObject(Objectobj){ if(obj!=null){ if(objinstanceofResultSet){ try{ ((ResultSet)obj).close(); }catch(SQLExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); } } if(objinstanceofPreparedStatement){ try{ ((PreparedStatement)obj).close(); }catch(SQLExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); } } if(objinstanceofConnection){ try{ ((Connection)obj).close(); }catch(SQLExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); } } } }}AdminDao.javapackagecom.dao;importjava.sql.Connection;importjava.sql.PreparedStatement;importjava.sql.ResultSet;importjava.sql.SQLException;importcom.connection.DBConnection;importcom.dto.Admin;/***處理管理員操作的類(將管理員的操作封裝與此)*@authorAdministrator**/publicclassAdminDao{ Connectionconn=null; PreparedStatementps=null; ResultSetrs=null; /** *驗證管理員的身份和密碼 *@paramadminName *@paramadminPassword *@return */ publicbooleanloginCheck(StringadminName,StringadminPassword){ booleanflag=false; Stringsql="selectadminPasswordfromadminwhereadminName=?"; //根據傳過來的用戶名搜索密碼,這樣能夠減少數據庫的負擔 conn=DBConnection.getConnection(); try{ ps=conn.prepareStatement(sql); ps.setString(1,adminName); rs=ps.executeQuery(); if(rs.next()){ if(adminPassword.equals(rs.getString(1))){ flag=true; } } }catch(SQLExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); }finally{ //關閉數據庫的鏈接 DBConnection.closeObject(rs); DBConnection.closeObject(ps); DBConnection.closeObject(conn); } returnflag; } /** *通過管理員登錄名,獲取管理員的信息 *@paramadminName *@return */ publicAdmingetAdminByName(StringadminName){ Adminadmin=newAdmin(); Stringsql="select*fromadminwhereadminName=?"; conn=DBConnection.getConnection(); try{ ps=conn.prepareStatement(sql); ps.setString(1,adminName); rs=ps.executeQuery(); if(rs.next()){ //從數據庫中獲取信息,并付給admin對象 admin.setAdminId(rs.getString(1)); admin.setAdminName(rs.getString(2)); admin.setAdminPassword(rs.getString(3)); admin.setBankAddress(rs.getString(4)); } }catch(SQLExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); } returnadmin; } }AllInfoDao.javapackagecom.dao;importjava.sql.Connection;importjava.sql.PreparedStatement;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.util.ArrayList;importjava.util.List;importcom.connection.DBConnection;importcom.dto.AllInfo;/***對視圖操作的方法進行封裝*@authorAdministrator**/publicclassAllInfoDao{ Connectionconn=null; PreparedStatementps=null; /** *根據傳遞過來的用戶賬號以及次數顯示用戶的操作信息 *@paramnumbers操作次數 *@paramuserId用戶賬號 *@return一系列的用戶操作 */ publicList<AllInfo>getCaoZuoByUserId(Stringnumbers,StringuserId){ ResultSetrs=null; List<AllInfo>list=newArrayList<AllInfo>(); //Stringsql="selecttop?*frombankoutinwhereuserId=?orderbybanktimedesc"; if("".equals(numbers)||null==numbers){ Stringsql="select*fromallInfowhereuserId=?orderbycunquTimedesc"; conn=DBConnection.getConnection(); try{ ps=conn.prepareStatement(sql); ps.setString(1,userId); rs=ps.executeQuery(); while(rs.next()){ AllInfoinfo=newAllInfo(); info.setUserId(rs.getString(1)); info.setCunquTime(rs.getDate(2)); info.setCunquAddress(rs.getString(3)); info.setCunquMoney(rs.getDouble(4)); info.setCunquSummary(rs.getString(5)); info.setBalanceMoney(rs.getDouble(6)); list.add(info); } }catch(SQLExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); }finally{ DBConnection.closeObject(rs); DBConnection.closeObject(ps); DBConnection.closeObject(conn); } }else{ inttimes=Integer.parseInt(numbers); StringBufferstb=newStringBuffer(); stb.append("selecttop"); stb.append(times); stb.append("*fromallInfowhereuserId="); stb.append(userId); stb.append("orderbycunquTimedesc"); Stringsql=stb.toString(); conn=DBConnection.getConnection(); try{ ps=conn.prepareStatement(sql); rs=ps.executeQuery(); while(rs.next()){ AllInfoinfo=newAllInfo(); info.setUserId(rs.getString(1)); info.setCunquTime(rs.getDate(2)); info.setCunquAddress(rs.getString(3)); info.setCunquMoney(rs.getDouble(4)); info.setCunquSummary(rs.getString(5)); info.setBalanceMoney(rs.getDouble(6)); list.add(info); } }catch(SQLExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); }finally{ DBConnection.closeObject(rs); DBConnection.closeObject(ps); DBConnection.closeObject(conn); } } returnlist; } }ATMDao.javapackagecom.dao;importjava.sql.Connection;importjava.sql.PreparedStatement;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.util.ArrayList;importjava.util.List;importcom.connection.DBConnection;importcom.dto.ATM;/***處理ATM機的相關操作*@authorAdministrator**/publicclassATMDao{ Connectionconn=null; PreparedStatementps=null; /** *通過ATMId號獲取ATM里的余額 *@paramATMId傳遞過來的ATMId *@returnATM機的余額 */ publicdoublegetATMMoneyById(StringATMId){ ResultSetrs=null; doubleATMMoney=0; Stringsql="selectATMMoneyfromatmwhereATMId=?"; conn=DBConnection.getConnection(); try{ ps=conn.prepareStatement(sql); ps.setString(1,ATMId); rs=ps.executeQuery(); if(rs.next()){ ATMMoney=rs.getDouble(1);//獲取ATM機里的余額 } }catch(SQLExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); } returnATMMoney; } /** *通過atm機號獲取atm機的信息 *@paramatmIdatm機號 *@return */ publicList<ATM>getATMInfoByATMId(StringatmId){ List<ATM>list=newArrayList<ATM>(); ResultSetrs=null;StringBufferstb=newStringBuffer("select*fromatmwhereatmIdlike'%");stb.append(atmId);stb.append("%'"); Stringsql=stb.toString(); conn=DBConnection.getConnection(); try{ ps=conn.prepareStatement(sql); rs=ps.executeQuery(); while(rs.next()){ ATMatm=newATM(); atm.setATMId(rs.getString(1)); atm.setATMMoney(rs.getDouble(2)); atm.setATMAddress(rs.getString(3)); list.add(atm); } }catch(SQLExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); } returnlist; }}ATMOutInDao.javapackagecom.dao;importjava.sql.Connection;importjava.sql.PreparedStatement;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.util.ArrayList;importjava.util.List;importcom.connection.DBConnection;importcom.dto.ATMOutIn;/***取款機存儲信息表處理*@authorAdministrator**/publicclassATMOutInDao{ Connectionconn=null; PreparedStatementps=null; //當在ATM機上進行存取款操作時,就會自動生成一條存取款信息 publicbooleanATMOutInInfo(ATMOutInatmoutin){ booleanflag=false; Stringsql="insertintoATMOutInvalues(?,?,getDate(),?,?,default)"; conn=DBConnection.getConnection(); try{ ps=conn.prepareStatement(sql); ps.setString(1,atmoutin.getATMId()); ps.setString(2,atmoutin.getCardId()); ps.setDouble(3,atmoutin.getATMCunQu()); ps.setString(4,atmoutin.getATMSummary()); intcount=ps.executeUpdate(); if(count>0){ flag=true;//證明數據插入成功 } }catch(SQLExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); }finally{ DBConnection.closeObject(ps); DBConnection.closeObject(conn); } returnflag; } /** *根據傳遞過來的額數據,顯示該ATM機近期的操作數 *@paramnumbers需要顯示的數量 *@paramuserId需要顯示的用戶id號 *@return一系列的操作數據 */ publicList<ATMOutIn>getCaoZuoByATMId(Stringtimes,StringatmId){ ResultSetrs=null; List<ATMOutIn>list=newArrayList<ATMOutIn>(); ATMOutInaoi=newATMOutIn(); //Stringsql="selecttop?*frombankoutinwhereuserId=?orderbybanktimedesc"; if("".equals(times)){ Stringsql="select*fromatmoutinwhereatmid=?orderbyatmtimedesc"; conn=DBConnection.getConnection(); try{ ps=conn.prepareStatement(sql); ps.setString(1,atmId); rs=ps.executeQuery(); while(rs.next()){ aoi.setATMId(rs.getString(1)); aoi.setCardId(rs.getString(2)); aoi.setATMTime(rs.getDate(3)); aoi.setATMCunQu(rs.getDouble(4)); aoi.setATMSummary(rs.getString(5)); aoi.setBalanceMoney(rs.getDouble(6)); list.add(aoi); } }catch(Exceptione){ e.printStackTrace(); }finally{ DBConnection.closeObject(rs); DBConnection.closeObject(ps); DBConnection.closeObject(conn); } }else{ intnumbers=Integer.parseInt(times); StringBufferstb=newStringBuffer(); stb.append("selecttop"); stb.append(numbers); stb.append("*fromatmoutinwhereatmid="); stb.append(atmId); stb.append("orderbyatmtimedesc"); Stringsql=stb.toString(); conn=DBConnection.getConnection(); try{ ps=conn.prepareStatement(sql); //ps.setInt(1,numbers); //ps.setString(2,userId); rs=ps.executeQuery(); while(rs.next()){ aoi.setATMId(rs.getString(1)); aoi.setCardId(rs.getString(2)); aoi.setATMTime(rs.getDate(3)); aoi.setATMCunQu(rs.getDouble(4)); aoi.setATMSummary(rs.getString(5)); aoi.setBalanceMoney(rs.getDouble(6)); list.add(aoi); } }catch(SQLExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); }finally{ DBConnection.closeObject(rs); DBConnection.closeObject(ps); DBConnection.closeObject(conn); } } returnlist; } /** *根據卡號返回該卡的操作 *@paramcardId卡號 *@return */ publicList<ATMOutIn>getCaozuoByCardId(Stringtimes,StringcardId){ ResultSetrs=null; List<ATMOutIn>list=newArrayList<ATMOutIn>(); conn=DBConnection.getConnection(); if("".equals(times)){//獲取所有操作 Stringsql="select*fromATMOutInwherecardId=?"; try{ ps=conn.prepareStatement(sql); ps.setString(1,cardId); rs=ps.executeQuery(); while(rs.next()){ ATMOutInatmoutin=newATMOutIn(); atmoutin.setATMId(rs.getString(1)); atmoutin.setCardId(rs.getString(2)); atmoutin.setATMTime(rs.getDate(3)); atmoutin.setATMCunQu(rs.getDouble(4)); atmoutin.setATMSummary(rs.getString(5)); atmoutin.setBalanceMoney(rs.getDouble(6)); list.add(atmoutin); } }catch(SQLExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); }finally{ DBConnection.closeObject(ps); DBConnection.closeObject(conn); } }else{ intnumbers=Integer.parseInt(times); StringBufferstb=newStringBuffer(); stb.append("selecttop"); stb.append(numbers); stb.append("*fromatmoutinwherecardId="); stb.append(cardId); stb.append("orderbyatmtimedesc"); Stringsql=stb.toString(); try{ ps=conn.prepareStatement(sql); rs=ps.executeQuery(); while(rs.next()){ ATMOutInatmoutin=newATMOutIn(); atmoutin.setATMId(rs.getString(1)); atmoutin.setCardId(rs.getString(2)); atmoutin.setATMTime(rs.getDate(3)); atmoutin.setATMCunQu(rs.getDouble(4)); atmoutin.setATMSummary(rs.getString(5)); atmoutin.setBalanceMoney(rs.getDouble(6)); list.add(atmoutin); } }catch(SQLExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); }finally{ DBConnection.closeObject(rs); DBConnection.closeObject(ps); DBConnection.closeObject(conn); } } returnlist; } /** *根據傳遞過來的信息,查詢ATM的操作 *@paramyear年份 *@parammonth月份 *@paramday日期 *@paramATMIdatm號 *@retur
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 公司危險廢棄物管理制度
- 智慧園區運維管理制度
- 公司工作服著裝管理制度
- 為規范公司病假管理制度
- 公司職員停車場管理制度
- 幼兒園食堂培訓管理制度
- 日常安全保密管理制度
- 景區共享超市管理制度
- 施工材料備料管理制度
- 國內天然氣安全管理制度
- 車站值班員(中級)鐵路職業技能鑒定考試題及答案
- 山東省威海市2023-2024學年高二下學期期末考試英語試題(解析版)
- 2024年陜西省西安市中考地理試題卷(含答案逐題解析)
- 草晶華工作計劃
- 2023-2024學年吉安市遂川縣七年級語文(下)期末試卷附答案詳析
- 人工智能訓練師(中級數據標注員)理論考試題庫(含答案)
- 腦干損傷護理常規
- 小學數學組教研活動記錄表-評課
- 2024年廣東清遠連平縣事業單位招聘工作人員51人公開引進高層次人才和急需緊缺人才筆試參考題庫(共500題)答案詳解版
- 2024年西部機場集團榆林機場公司招聘35人高頻考題難、易錯點模擬試題(共500題)附帶答案詳解
- 銀行智能化方案設計
評論
0/150
提交評論