第一篇:銀行ATM系統(tǒng)軟件工程設(shè)計報告
西安郵電學(xué)院
學(xué)院名稱學(xué)生姓名專業(yè)名稱班級軟件工程報告
計算機學(xué)院
網(wǎng)絡(luò)工程
: : : :
Part A: ? What is Software Engineering(SE)軟件工程是一門工程學(xué)科,涉及軟件生產(chǎn)的各個方面,從最初的系統(tǒng)描述一直到使用后的維護,都屬于其學(xué)科范疇。軟件工程人員運用的是系統(tǒng)的、有組織的的工作方法,這種方法對于制作高質(zhì)量的軟件是最有效的。
? How many different parts in SE development(1).問題的定義以及規(guī)劃;(2).需求分析;(3).軟件設(shè)計;(4).程序編碼;(5).軟件測試;(6).軟件維護。
? What is Software Processes 軟件過程是指制作軟件產(chǎn)品的一組活動及其結(jié)果。所有的軟件工程都包含:(1).軟件描述;(2)軟件開發(fā);
(3)軟件的有效性驗證;(4)軟件進化。
? Software development(Technology and method)軟件工程方法是一種軟件開發(fā)的結(jié)構(gòu)化方法,其目的在于提高軟件質(zhì)量的同時,使其性價比較高。結(jié)構(gòu)化分析方法(DeMarco,1978)和JSD方法(Jackson,1983)在20世紀70年代首次開發(fā)出來,這些方法旨在識別系統(tǒng)中基本的功能模塊,面向功能的方法現(xiàn)在仍被廣泛應(yīng)用。在20世紀80到90年代,Booch(1994)和Rumbaugh(1991)等人又提出了面向?qū)ο蟮姆椒ā,F(xiàn)在這些不同的方法已經(jīng)被集成了一種方法——統(tǒng)一建模語言(UML)。
? Project and Project management
軟件項目管理者和其他的工程項目管理者的工作性質(zhì)是相同的,然而,軟件工程管理與其他的工程管理相比,在很多方面是有顯著的區(qū)別的。(1).軟件產(chǎn)品是無形的;(2).沒有標準的軟件過程;
(3).大型軟件項目常常是“一次性”項目。
一、需求分析
由于經(jīng)濟社會發(fā)展速度的大幅提高,幾乎所有的銀行都配備了不用繁瑣的人工操作的ATM自動取款機。人們可以隨時隨地進行交易,不再受銀行的服務(wù)時間的約束,取款時也為人們節(jié)省了很多時間,方便快捷。
這個項目的開發(fā)是為銀行提供一套高效穩(wěn)定可靠的終端服務(wù)平臺,為儲戶登錄,存款,取款,查詢,打印憑條等操作提供便利,尤其是在ATM機出現(xiàn)故障的情況下,提供了故障恢復(fù)的功能。
二、軟件設(shè)計
本系統(tǒng)相應(yīng)的需求有以下方面:
(1)能夠讀取和存儲客戶賬戶中的存取款信息,并方便有效地進行客戶選擇的交易操作。這主要包括以下內(nèi)容:
① 自動調(diào)用銀行總系統(tǒng)中客戶原有信息 ② 銀行客戶賬戶中的信息的查詢、讀取 ③ 客戶操作的識別,及信息的錄入、更新、存儲
(2)能夠?qū)⒖蛻糨斎氲男畔⒓皶r上傳到銀行總系統(tǒng)中,并將客戶原有信息進行自動更新。這其中主要包括以下內(nèi)容:
① 匯總客戶更新的信息,直接上傳到銀行總系統(tǒng)中 ② 抽調(diào)銀行總系統(tǒng)中客戶原有信息,并進行修改
③ 將銀行總系統(tǒng)中客戶原有信息更新為客戶最新輸入的信息,并存儲(3)提供客戶信息訪問的權(quán)限和管理。其中包括: ① 客戶訪問普通信息的權(quán)限
② 銀行系統(tǒng)管理員對客戶信息的錄入、更改和刪除
需要補充說明的幾點有:
(1)數(shù)據(jù)保存:需要長期保存的數(shù)據(jù)信息有
① 客戶信息:客戶開通銀行賬戶的基本信息 ② 賬戶信息:客戶在銀行的存取款信息(2)系統(tǒng)用戶:銀行系統(tǒng)管理員和客戶
① 銀行系統(tǒng)管理員:對ATM機中的信息可進行錄入、更改和刪除等操作 ② 客戶:在ATM機上可進行存取交易操作
系統(tǒng)的總體規(guī)劃
登陸界面否驗證是選擇操作界面是查詢存款取款是否出現(xiàn)故障否否是是否故障恢復(fù)成功打印是是否打印憑條否否是否交易結(jié)束是退卡
客戶端流程
三、軟件開發(fā)與運行維護
由于本人水平有限以及時間倉促,暫時用C語言來實現(xiàn),后期的運行維護也尚未展開。
#include “stdio.h” /*讀取文件 將內(nèi)容存放到內(nèi)存*/ #include “stdlib.h” #include “string.h” fscanf(fp,“#%s %s %fn”,atm[m].zhan#include “conio.h” ghao,atm[m].password,&atm[m].allmon ey);int No=0,m,n=0;fclose(fp);/*記錄用戶賬號次序變量*/ FILE *fp,*fp1;struct atmsystem { char zhanghao[9];
/*賬號*/ char password[11];
/*密碼*/ float allmoney;
/*總金額*/ }atm[30],atmtemp;/*定義30個帳戶與一個臨時帳戶*/
main()
/*主函數(shù)*/ { void kaihu();
/*聲明開戶函數(shù)*/ int check();
/*聲明密碼驗證函數(shù)*/ void service();
/*聲明服務(wù)菜單函數(shù)*/ void zhuanzhang();
/*聲明轉(zhuǎn)帳函數(shù)*/ void changepw();
/*聲明更改密碼函數(shù)*/ void quit();/*聲明退出函數(shù)*/ char a;/*菜單選擇用的變量*/ if((fp=fopen(“USER.txt”,“r”))==NULL)/*打開文件*/ {
printf(“File cannot be openedn”);
system(“pause”);
return 0;} for(m=0;!feof(fp);m++)/*關(guān)閉文件*/ No=m+1;for(;;)
/*循環(huán)主菜單*/ { system(“cls”);
/*設(shè)置清屏*/ printf(“***********Welcome to ATM System*************nn”);
printf(“Please select:n1.Create a new accountn2.Customer Servicen3.Exit Systemn”);/*輸出主菜單*/
printf(“-------------n”);
scanf(“%c”,&a);
/*接收一個數(shù)字字符*/
if(a=='1')
/*判斷是否是1*/
{
printf(“Setting user informationn”);
kaihu();
/*調(diào)用新開戶的函數(shù)*/
printf(“nPress any key to continue”);
getch();
system(“cls”);
/*設(shè)置清屏*/
}
else if(a=='2')
/*判斷是否是2*/
{
if(check()==1)/*調(diào)用檢查賬戶函數(shù)*/
service();/*認證后 開始服務(wù)*/
else 已經(jīng)存在,請重新輸入*/
{
getch();
printf(“nSorry,you
break;have been wrong for 3 times.”);
}
else if(n==29)quit();/*輸入的帳戶不存在,開建新帳戶*/ }
flag=1;
} }
else if(a=='3')
if(flag==1)break;
/*判斷是否是3*/ quit();/*退出*/ }
system(“pause”);return 0;} void kaihu()
/*定義新開帳戶函數(shù)*/ { int i,j,flag=0;char pw,ch1;float money;char ch[7];
if(No<=30)/*判斷是否有空間創(chuàng)建帳戶*/ { for(;;){ printf(“Please enter your account ID:(less than 8 characters)n”);
scanf(“%s”,&atmtemp.zhanghao);
/*接收一個字符串*/ if(strcmp(atmtemp.zhanghao,“exit”)==0)exit(1);for(n=0;n<30;n++)/*驗證輸入的帳戶和密碼*/ { if(strcmp(atm[n].zhanghao,atmtemp.zhanghao)==0)/*如果輸入的帳戶已經(jīng)存在*/
{
printf(“nAccount already exists, please re-enter.nIf you want to exit,please enter 'exit' when you enter ID.nPress any key to continue.nn”);
/*帳戶/*跳出檢查*/ }
printf(“n”);
for(j=0;j<3;j++){ i=0;
printf(“Please enter your password:(less than 10 characters)n”);
pw=getch();
while(pw!='r')/*接收密碼*/ {
if(pw=='b')
{
printf(“b b”);
--i;
} else
{
putchar('*');
atmtemp.password[i++]=pw;
} pw=getch();
} atmtemp.password[i]='