銀行ATM存款機(jī)系統(tǒng)項(xiàng)目總結(jié)
銀行ATM存取款機(jī)系統(tǒng)項(xiàng)目總結(jié)
一、項(xiàng)目時(shí)間:
201*年9月29日201*年10月11日二、項(xiàng)目實(shí)際結(jié)果:
ATM存取款機(jī)系統(tǒng),能夠?qū)︺y行日常的存款業(yè)務(wù)進(jìn)行計(jì)算機(jī)管理。能夠按照銀行的業(yè)務(wù)需求,實(shí)現(xiàn)各項(xiàng)銀行日常存款、取款和轉(zhuǎn)賬業(yè)務(wù)。
三、主要的功能:1.開(kāi)戶(hù)
每個(gè)客戶(hù)憑個(gè)人身份證在銀行可以開(kāi)設(shè)多個(gè)銀行卡賬號(hào),但是每一個(gè)賬戶(hù)只有一個(gè)銀行卡,每個(gè)銀行卡。在開(kāi)設(shè)賬號(hào)時(shí)還需要提供一些開(kāi)戶(hù)數(shù)據(jù)。
2.存款
客戶(hù)持銀行卡在ATM機(jī)上輸入密碼,經(jīng)系統(tǒng)確認(rèn)后才能辦理存款業(yè)務(wù)。銀行規(guī)定,每個(gè)賬戶(hù)當(dāng)前的存款金額不得小于1元。
3.取款
取款時(shí)不僅要確認(rèn)身份,取款金額還要小于等于當(dāng)前的存款金額。
4.轉(zhuǎn)賬
轉(zhuǎn)賬的要求和取款類(lèi)似。
5.余額查詢(xún)
客戶(hù)持銀行卡在ATM機(jī)上輸入密碼,經(jīng)系統(tǒng)確認(rèn)后才能辦理存款業(yè)務(wù)。
6.項(xiàng)目的流程數(shù)據(jù)庫(kù)設(shè)計(jì)繪制E-R圖、數(shù)據(jù)庫(kù)模型圖建庫(kù)、建表、建約束插入測(cè)試數(shù)據(jù)利用事務(wù)實(shí)現(xiàn)較復(fù)雜的數(shù)據(jù)更新使用存儲(chǔ)過(guò)程創(chuàng)建、使用視圖模擬常規(guī)業(yè)務(wù)修改密碼、掛失等在整個(gè)項(xiàng)目中,圖中加了橫線的都是較為復(fù)雜的,需要耗費(fèi)很長(zhǎng)時(shí)間。
7.項(xiàng)目的特點(diǎn):
項(xiàng)目基本的功能較為完善,能夠滿足銀行的基礎(chǔ)業(yè)務(wù)需求,實(shí)現(xiàn)各項(xiàng)銀
行日常存款、取款和轉(zhuǎn)賬業(yè)務(wù)。但對(duì)于大銀行的借貸、網(wǎng)銀等業(yè)務(wù)仍難以實(shí)現(xiàn)滿足。
8.使用的技能:
1.2.3.4.
使用T-SQL語(yǔ)句創(chuàng)建數(shù)據(jù)庫(kù)表和表結(jié)構(gòu);使用T-SQL語(yǔ)句編程實(shí)現(xiàn)用戶(hù)業(yè)務(wù);使用事務(wù)和存儲(chǔ)過(guò)程封裝業(yè)務(wù)邏輯;使用視圖簡(jiǎn)化復(fù)雜的數(shù)據(jù)查詢(xún)。
9.開(kāi)發(fā)工作的評(píng)價(jià)
該項(xiàng)目是由我們七個(gè)小組(全班),分別負(fù)責(zé)不同的用例完成的。而我們第
四小組就負(fù)責(zé)的用例4的工作。由于每個(gè)小組建的數(shù)據(jù)庫(kù)名以及表中各種列名都不相同講解給其他組聽(tīng)時(shí)就會(huì)出現(xiàn)一些問(wèn)題。但就整個(gè)的完成情況來(lái)說(shuō),各組的工作都做得很好的。尤其是后面的四個(gè)用例難度比較前幾個(gè)組難,且要做的東西較多,但大家都完成的很好。
10.經(jīng)驗(yàn)和教訓(xùn)
經(jīng)過(guò)此次的項(xiàng)目案例,使我明白小組合作的重要性。很多東西也許自己一個(gè)人做起來(lái)有些難度,但經(jīng)過(guò)與小組的其他成員的討論請(qǐng)教就可以解決。而且,當(dāng)工作太多時(shí),可以進(jìn)行分工,加快工作的效率。
我們的職業(yè)導(dǎo)向老師曾說(shuō)過(guò),在項(xiàng)目小組中我們不應(yīng)該把自己看做一個(gè)個(gè)體,我們是小組的組成成員。小組成員之間的合作是否緊密會(huì)直接關(guān)系到這個(gè)項(xiàng)目的最終成果。
在數(shù)據(jù)庫(kù)的設(shè)計(jì)中架構(gòu)尤為重要!如果前面的數(shù)據(jù)庫(kù)框架沒(méi)有建好,那么后面的同學(xué)在創(chuàng)建數(shù)據(jù)庫(kù)、表以及約束的時(shí)候,是很容易出錯(cuò)的。到最后,數(shù)據(jù)庫(kù)的錯(cuò)誤就會(huì)越累積越多。
在后面的四個(gè)用例中幾乎每個(gè)都沒(méi)select查詢(xún)語(yǔ)句有關(guān)。因此,我們必須很熟悉查詢(xún)語(yǔ)句的用法。尤其是連接查詢(xún)和聯(lián)合查詢(xún),這兩種中的聯(lián)合查詢(xún)我就不是很會(huì)用。我們應(yīng)該拿起大一的課本好好復(fù)習(xí)關(guān)于查詢(xún)的語(yǔ)句。
最后就是,我發(fā)現(xiàn)如果每個(gè)用例都參與的話,比我們光看書(shū)要來(lái)的有用多了。因此我們以后如果想要讓自己的技能提高還是需要多多的做一些案例。實(shí)踐總會(huì)比光理論要來(lái)的有效。當(dāng)然,最好就是理論與實(shí)踐相結(jié)合。這樣就需要我們多看書(shū),上課時(shí)要認(rèn)真的聽(tīng)講,老師在做案例是要盡量跟著敲。而在課外我們更不能因?yàn)樗^的休息而太過(guò)于放松自己,要經(jīng)?纯磿(shū),將書(shū)上的例子什么的最好都做出來(lái)運(yùn)行看看。
擴(kuò)展閱讀:項(xiàng)目實(shí)戰(zhàn)銀行ATM
項(xiàng)目實(shí)戰(zhàn)銀行ATM(取款機(jī))系統(tǒng)
第一部分問(wèn)題描述某銀行擬開(kāi)發(fā)一套ATM取款機(jī)系統(tǒng),實(shí)現(xiàn)如下功能:
開(kāi)戶(hù)(到銀行填寫(xiě)開(kāi)戶(hù)申請(qǐng)單,卡號(hào)自動(dòng)生成)取錢(qián)存錢(qián)查詢(xún)余額
轉(zhuǎn)賬(如使用一卡通代繳手機(jī)話費(fèi),個(gè)人股票交易等)現(xiàn)要求對(duì)“ATM柜員機(jī)系統(tǒng)”進(jìn)行數(shù)據(jù)庫(kù)的設(shè)計(jì)并實(shí)現(xiàn),數(shù)據(jù)庫(kù)保存在F:\\bank目錄下,文件增長(zhǎng)率為15%
第二部分環(huán)境要求開(kāi)發(fā)工具:SQLServer201*企業(yè)版、PowerDesigner
第三部分問(wèn)題分析用戶(hù)信息表:userInfo見(jiàn)表1.1
表1.1用戶(hù)信息表
字段名稱(chēng)customerIDcustomerNamePIDtelephoneAddress
顧客編號(hào)開(kāi)戶(hù)名身份證號(hào)聯(lián)系電話居住地址必填必填,只能是18位或15位,身份證號(hào)唯一約束必填,格式為xxxx-xxxxxxxx或手機(jī)號(hào)11位可選輸入說(shuō)明自動(dòng)編號(hào)(標(biāo)識(shí)列),從1開(kāi)始,主鍵銀行卡信息表:cardInfo見(jiàn)表1.2
表1.2銀行卡信息表字段名稱(chēng)說(shuō)明卡號(hào)必填,主鍵,銀行的卡號(hào)規(guī)則和電話號(hào)碼一樣,一般前8位代表特殊含義,如某總行某支行等。假定該行要求其營(yíng)業(yè)廳的卡號(hào)格式為:10103576xxxxxxxx開(kāi)始,每4位號(hào)碼后有空格,卡號(hào)一般是隨機(jī)產(chǎn)生必填,默認(rèn)為RMB活期/定活兩便/定期必填必填,默認(rèn)為系統(tǒng)當(dāng)前日期必填,不低于1元必填,不低于1元,否則將銷(xiāo)戶(hù)必填,6為數(shù)字,開(kāi)戶(hù)時(shí)默認(rèn)為6個(gè)“8”必填,是/否值,默認(rèn)為“否”外鍵,必填,表示該卡對(duì)應(yīng)的顧客編號(hào),一般顧客允許辦理多張卡cardIDcurTypesavingTypeopenDateopenMoneybalancepassIsReportLosscustomerID
貨幣類(lèi)型存款類(lèi)型開(kāi)戶(hù)日期開(kāi)戶(hù)金額余額密碼是否掛失顧客編號(hào)交易信息表:transInfo見(jiàn)表1.表1.3交易信息表
字段名稱(chēng)transDatecardIDtransTypetransMoneyremark交易日期卡號(hào)交易類(lèi)型交易金額備注說(shuō)明必填,默認(rèn)為系統(tǒng)當(dāng)前日期必填,外鍵,可重復(fù)索引必填,只能是存入/支取必填,大于0可選輸入,其他說(shuō)明第四部分實(shí)現(xiàn)步驟
1.設(shè)計(jì)數(shù)據(jù)庫(kù)E-R模型圖(采用PowerDesigner建模工具)提示:根據(jù)第三部分的各個(gè)表,繪制概念數(shù)據(jù)模型圖(ConceptualDataModel)。
2.建庫(kù):要求保存在F:\\bank文件夾下,取名為bankDB,文件增長(zhǎng)率為15%。提示:以下所有步驟的軟件環(huán)境均為SQL查詢(xún)分析器
在F盤(pán)創(chuàng)建文件夾bank。提示:execxp_cmdshell‘mkdirf:\\bank’,NO_OUTPUT
建庫(kù)是要求檢測(cè)是否存在bankDB,如果存在先刪除再創(chuàng)建。提示:參考上機(jī)相關(guān)代碼ifexists(…)…
3.建表:創(chuàng)建用戶(hù)信息表userInfo,銀行卡信息表cardInfo,交易信息表transInfo提示:參照第三部分各表提出的要求,確定表中各個(gè)字段的長(zhǎng)度、數(shù)據(jù)類(lèi)型,注意一個(gè)漢字占兩個(gè)字節(jié)。身份證號(hào)字段為了驗(yàn)證方便,一般保存為字符串;是/否掛失字段,可保存為BIT(即1/0)類(lèi)型。
4.加約束
根據(jù)第三部分“說(shuō)明”一欄中的要求,分析每列相應(yīng)的約束條件例如:
(1)主鍵,添加主鍵(PrimaryKey)約束
(2)只能是18位或者15位,添加檢查(check)約束。(利用字符串長(zhǎng)度函數(shù)len())(3)……
同一個(gè)表的多個(gè)約束可以連寫(xiě)例如:
AlterTABLEcardInfoADDCONSTRAINTPK_cardIDPRIMARYKEY(cardID),CONSTRAINTCK_cardIDCHECK(cardID,….),CONSTRAINTDF_cruType….
5.建關(guān)系提示:根據(jù)三表的字段,通過(guò)外鍵約束來(lái)建立表之間的關(guān)系
6.插入測(cè)試數(shù)據(jù):
先假定卡號(hào)不自動(dòng)隨機(jī)產(chǎn)生,而是人工指定,向相關(guān)表中插入如下開(kāi)戶(hù)信息張三開(kāi)戶(hù)身份證:123456789012345,電話:010-678989地址:北京海淀,開(kāi)戶(hù)金額:1000,活期,卡號(hào):1010357612345678李四開(kāi)戶(hù)
身份證:321245678912345678電話:0478-44443333開(kāi)戶(hù)金額:1,定期,卡號(hào):1010357612121134
插入交易信息
張三的卡中取款900元李四的卡中存款5000元
要求保存交易記錄,以便客戶(hù)查詢(xún)和銀行業(yè)務(wù)統(tǒng)計(jì)。提示:當(dāng)張三取款900時(shí),會(huì)向信息表(transInfo)中添加一條交易記錄,同時(shí)應(yīng)自動(dòng)更新銀行卡信息表(cardInfo)中的現(xiàn)有余額(減少900元),先假定手動(dòng)完成插入更新信息。
7.常規(guī)業(yè)務(wù)模擬
修改密碼張三(1010357612345678)修改銀行卡密碼為123456李四(1010357612121134)修改銀行卡密碼為123123掛失帳號(hào)李四(1010357612121134)因銀行卡丟失,申請(qǐng)掛失統(tǒng)計(jì)銀行的資金流通余額和盈利結(jié)算。統(tǒng)計(jì)說(shuō)明:存入代表資金流入,支取代表資金流出,則有:資金流通余額=總存入量總支取量假定存款利率為千分之3,貸款利率為千分之8,則有:盈利結(jié)算=總支取量×0.008總存入量×0.003提示:定義兩個(gè)變量存放總存入和總支取量、sum()函數(shù)及轉(zhuǎn)換函數(shù)convert()
查詢(xún)本周開(kāi)戶(hù)的卡號(hào),顯示該卡相關(guān)信息。提示:求時(shí)間差的日期函數(shù)DateDiff,求星期幾用DatePart函數(shù)查詢(xún)本月交易金額最高的卡號(hào)提示:在交易信息表中,采用子查詢(xún)和Distinct去掉重復(fù)的卡號(hào)。查詢(xún)掛失帳號(hào)的客戶(hù)信息。提示:利用子查詢(xún)In的方式或內(nèi)部連接InnerJoin
催款提醒業(yè)務(wù)例如因某種業(yè)務(wù)的需要,每個(gè)月末如果發(fā)現(xiàn)用戶(hù)帳上余額少于200元,將致電催款。
8.創(chuàng)建索引和視圖。
給交易表的卡號(hào)cardID字段創(chuàng)建重復(fù)索引,以便加速查詢(xún),填充因子為70%按指定索引查詢(xún)張三的交易記錄
創(chuàng)建視圖。為了向客戶(hù)顯示友好信息,請(qǐng)創(chuàng)建視圖,把表中英文字段名改成中文字
段名,3個(gè)表對(duì)應(yīng)的視圖名分別為:view_userInfo、view_cardInfo、view_Info
9.創(chuàng)建觸發(fā)器trig_trans:改進(jìn)上述的存款或取款語(yǔ)句,當(dāng)存取或取錢(qián)(如張三取款900元)
時(shí),會(huì)往交易信息表transInfo中插入一條交易記錄,同時(shí)會(huì)自動(dòng)更新(而不是人工更新)用戶(hù)信息表userInfo中的余額(如減少900元)。因此,我們應(yīng)該在交易信息表transInfo中創(chuàng)建插入觸發(fā)器,自動(dòng)觸發(fā)更新余額的動(dòng)作。提示:
如果交易類(lèi)型是“支取”,則應(yīng)判斷余額是否足夠支取(余額-支取金額>=1),否則
提示余額不足。如果支取成功,更新余額,減去支取的金額。如果是“存入”,則更新余額,加上存入的金額。
交易結(jié)束后,提示交易信息:是否成功,目前余額是多少。10.測(cè)試觸發(fā)器:張三的卡號(hào)支取1000,李四的卡號(hào)存入200.提示:這里需要張三和李四的卡號(hào),現(xiàn)實(shí)中的取款機(jī)依靠讀卡器讀出卡號(hào),此處可以根據(jù)張三和李四的名字查出卡號(hào)來(lái)模擬(采用內(nèi)連接或子查詢(xún))
11.創(chuàng)建存儲(chǔ)過(guò)程:
取錢(qián)或存錢(qián)的存儲(chǔ)過(guò)程proc_takeMoney提示:取錢(qián)時(shí)要求提供密碼,存取不用。取錢(qián)時(shí)需驗(yàn)證密碼是否正確,然后向交易表transInfo中插入一條支取的交易信息即可。因?yàn)槲覀円呀?jīng)在該表上創(chuàng)建了插入觸發(fā)器,所以插入時(shí)將自動(dòng)觸發(fā)上述動(dòng)作,檢測(cè)余額是否足夠支取,然后自動(dòng)更新余額。存儲(chǔ)過(guò)程參數(shù):卡號(hào)、交易金額、交易類(lèi)型、密碼(默認(rèn)為空)測(cè)試:調(diào)用存儲(chǔ)過(guò)程取錢(qián)或存取,張三的卡號(hào)支取300(密碼123456),李四的卡號(hào)存入500,同樣,張三、李四的卡號(hào)可以根據(jù)名字查出來(lái)。
產(chǎn)生隨機(jī)卡號(hào)的存儲(chǔ)過(guò)程proc_randCardID提示:銀行卡卡號(hào)共19位(4位數(shù)一組,中間用空格隔開(kāi)),對(duì)于某個(gè)銀行來(lái)說(shuō),前面8個(gè)數(shù)字是固定的,后面8個(gè)數(shù)字要求隨機(jī)的,并且唯一。我們只需要產(chǎn)生8位隨機(jī)的數(shù)字,然后和前8位固定的數(shù)字“10103576”連接即可。隨機(jī)函數(shù)的用法下:RAND(隨機(jī)種子):將產(chǎn)生0~1的隨機(jī)數(shù),要求每次的隨機(jī)種子不一樣。為了保證隨機(jī)種子每次不相同,一般的算法如下:隨機(jī)種子=當(dāng)前的月份數(shù)×100000+當(dāng)前秒數(shù)×1000+當(dāng)前毫秒數(shù)產(chǎn)生了0~1的隨機(jī)數(shù)后,我們?nèi)⌒?shù)點(diǎn)后8位,即:0.xxxxxxxx測(cè)試:產(chǎn)生隨機(jī)號(hào)
開(kāi)戶(hù)的存儲(chǔ)過(guò)程proc_openAccount提示:開(kāi)戶(hù)的相關(guān)信息作為該存儲(chǔ)過(guò)程的參數(shù),包括開(kāi)戶(hù)名、身份證號(hào)、電話號(hào)碼、開(kāi)戶(hù)金額、存款類(lèi)型和地址(默認(rèn)值為空)。該存儲(chǔ)過(guò)程調(diào)用上述的隨機(jī)卡號(hào)的存儲(chǔ)過(guò)程生成隨機(jī)卡號(hào),如果該隨機(jī)卡號(hào)在cardInfo中不存在,則往相關(guān)表插入開(kāi)戶(hù)信息。否則將調(diào)用上述隨機(jī)卡號(hào)的存儲(chǔ)過(guò)程,重新產(chǎn)生隨機(jī)卡號(hào)(使用while循環(huán))測(cè)試:調(diào)用此存儲(chǔ)過(guò)程開(kāi)戶(hù)。王五,身份證:334456889012678,電話:2222-63598978,開(kāi)戶(hù)金額:1000,活期,地址:河南新鄉(xiāng)。趙二,身份證:213445678912342222,電話:0760-44446666,開(kāi)戶(hù)金額:1,定期
12.創(chuàng)建事務(wù):同銀行的帳戶(hù)間一般都支持轉(zhuǎn)賬功能,因?yàn)檗D(zhuǎn)賬的規(guī)則為一方支取,另
一方存入相應(yīng)金額。這兩步要求要么同時(shí)完成,要么同時(shí)失敗,所以采用事務(wù)處理。如果任何一方失敗,可以撤銷(xiāo)回滾操作,F(xiàn)模擬從李四轉(zhuǎn)賬201*到張三的帳號(hào)上,要求顯示轉(zhuǎn)賬信息、是否轉(zhuǎn)賬成功及轉(zhuǎn)賬后雙方的余額。為了調(diào)用方便,采用存儲(chǔ)過(guò)程實(shí)現(xiàn),需要3個(gè)參數(shù):轉(zhuǎn)出方卡號(hào)、接收方卡號(hào)和轉(zhuǎn)賬金額。測(cè)試:調(diào)用此事務(wù)存儲(chǔ)過(guò)程,模擬從李四轉(zhuǎn)賬201*到張三的帳號(hào)上。(張三、李四的卡號(hào)同前,需要根據(jù)張三、李四的名字查出卡號(hào))
13.創(chuàng)建登錄帳號(hào)和數(shù)據(jù)庫(kù)用戶(hù)
添加SQL登錄帳號(hào)sysAdmin,密碼1234,作為系統(tǒng)維護(hù)的帳號(hào),具有對(duì)上述3
個(gè)表增、刪、改、查的權(quán)限。測(cè)試帳號(hào)創(chuàng)建是否成功
(1)打開(kāi)SQL查詢(xún)分析器,選擇菜單“文件”->“連接”,選擇SQLServer身份驗(yàn)
證,如圖1.15所示。(2)輸入sysAdmin的帳號(hào)和密碼,測(cè)試能否登錄
(3)登錄成功后,輸入增、刪、改、查語(yǔ)句檢查權(quán)限是否正確
友情提示:本文中關(guān)于《銀行ATM存款機(jī)系統(tǒng)項(xiàng)目總結(jié)》給出的范例僅供您參考拓展思維使用,銀行ATM存款機(jī)系統(tǒng)項(xiàng)目總結(jié):該篇文章建議您自主創(chuàng)作。
來(lái)源:網(wǎng)絡(luò)整理 免責(zé)聲明:本文僅限學(xué)習(xí)分享,如產(chǎn)生版權(quán)問(wèn)題,請(qǐng)聯(lián)系我們及時(shí)刪除。