王牌对王牌第一季综艺,黄视频在线观看网站,世界一级毛片,成人黄色免费看

薈聚奇文、博采眾長(zhǎng)、見(jiàn)賢思齊
當(dāng)前位置:公文素材庫(kù) > 公文素材 > 范文素材 > 銀行ATM機(jī)工作流程模擬編程(鏈表)

銀行ATM機(jī)工作流程模擬編程(鏈表)

網(wǎng)站:公文素材庫(kù) | 時(shí)間:2019-05-29 03:34:21 | 移動(dòng)端:銀行ATM機(jī)工作流程模擬編程(鏈表)

銀行ATM機(jī)工作流程模擬編程(鏈表)

程序設(shè)計(jì)基礎(chǔ)(一)綜合作業(yè)銀行ATM機(jī)工作流程模擬編程

班級(jí)學(xué)號(hào)姓名

[綜合作業(yè)目的]

1、通過(guò)編程及上機(jī)調(diào)試,掌握函數(shù)、文件、結(jié)構(gòu)及鏈表的綜合應(yīng)用;2、掌握查找、排序等基本算法;3、掌握模塊化程序設(shè)計(jì)的方法。

[綜合作業(yè)內(nèi)容]

編程,模擬一個(gè)ATM(AutomaticTellerMachine,自動(dòng)取款機(jī))的工作流程。依據(jù)帳戶信息:姓名、帳號(hào)、密碼、余額,完成ATM機(jī)功能:登錄、顯示余額、取款、修改密碼。

具體要求:

1、合理規(guī)劃數(shù)據(jù)結(jié)構(gòu),以保存儲(chǔ)戶信息;

2、使用鏈表結(jié)構(gòu)記錄有關(guān)數(shù)據(jù),使用鏈表完成相關(guān)操作;

3、使用文件記載儲(chǔ)戶信息,程序啟動(dòng)時(shí)加載儲(chǔ)戶信息,程序退出時(shí)保存儲(chǔ)戶信息;4、程序工作流程:

顯示登錄界面:帳號(hào):

密碼:接受用戶輸入。

若為非法用戶,提示出錯(cuò),并重新登錄,3次出錯(cuò)后退出;若為合法用戶,則顯示操作菜單,提供下述服務(wù):

①顯示基本信息②修改密碼③查詢余額④存款

⑤取款(每次取款額度為¥5000元)⑥退出

5、*用戶一次登錄后的取款總數(shù)超過(guò)¥50000者,則程序自動(dòng)產(chǎn)生一個(gè)明細(xì)記錄,記載該

用戶的登錄時(shí)間、地點(diǎn)(登錄時(shí)間、地點(diǎn)假設(shè)已知,并用字符串表示)。考慮此種情況較少出現(xiàn),為節(jié)省存儲(chǔ)空間,不宜在描述儲(chǔ)戶信息的數(shù)據(jù)結(jié)構(gòu)中直接分配字符數(shù)組(建議在其數(shù)據(jù)結(jié)構(gòu)中添加一個(gè)指向字符串?dāng)?shù)組的指針,…);6、提交設(shè)計(jì)文檔及源代碼清單。

[綜合作業(yè)要求]

1、獨(dú)立、按時(shí)完成綜合作業(yè);

2、進(jìn)行需求分析,完成相關(guān)數(shù)據(jù)結(jié)構(gòu)的規(guī)劃與設(shè)計(jì);3、實(shí)現(xiàn)菜單所列功能。具體要求:

每個(gè)功能為一個(gè)獨(dú)立的函數(shù);所有的輸入之前都要有提示。

4、在程序的調(diào)試中,應(yīng)用所學(xué)的計(jì)算機(jī)知識(shí),完成大批數(shù)據(jù)的輸入。并列出完整、嚴(yán)格的

測(cè)試結(jié)果(包括輸入和輸出);

5、提交完整的C代碼及設(shè)計(jì)文檔(包括設(shè)計(jì)方案、具體功能及實(shí)現(xiàn)、特點(diǎn)小結(jié)等)。

擴(kuò)展閱讀:程序設(shè)計(jì)基礎(chǔ)(一)綜合作業(yè)報(bào)告

程序設(shè)計(jì)基礎(chǔ)(一)綜合作業(yè)報(bào)告銀行ATM機(jī)工作流程模擬編程

班級(jí):XXXXXX班

學(xué)號(hào):0000000000姓名:AAA

一、題目要求

編程,模擬一個(gè)ATM(AutomaticTellerMachine,自動(dòng)取款機(jī))的工作流程。依據(jù)帳戶信息:姓名、帳號(hào)、密碼、余額,完成ATM機(jī)功能:登錄、顯示余額、取款、修改密碼。

具體要求:

1合理規(guī)劃數(shù)據(jù)結(jié)構(gòu),以保存儲(chǔ)戶信息;

2使用鏈表結(jié)構(gòu)記錄有關(guān)數(shù)據(jù),使用鏈表完成相關(guān)操作;

3使用文件記載儲(chǔ)戶信息,程序啟動(dòng)時(shí)加載儲(chǔ)戶信息,程序退出時(shí)保存儲(chǔ)戶信息;4程序工作流程:

1)顯示登錄界面:帳號(hào):

密碼:

接受用戶輸入。

2)若為非法用戶,提示出錯(cuò),并重新登錄,3次出錯(cuò)后退出;3)若為合法用戶,則顯示操作菜單,提供下述服務(wù):

顯示基本信息修改密碼查詢余額存款

取款(每次取款額度為¥5000元)退出

5用戶一次登錄后的取款總數(shù)超過(guò)¥50000者,則程序自動(dòng)產(chǎn)生一個(gè)明細(xì)記錄,記載該

用戶的登錄時(shí)間、地點(diǎn)(登錄時(shí)間、地點(diǎn)假設(shè)已知,并用字符串表示)?紤]此種情況較少出現(xiàn),為節(jié)省存儲(chǔ)空間,不宜在描述儲(chǔ)戶信息的數(shù)據(jù)結(jié)構(gòu)中直接分配字符數(shù)組(建議在其數(shù)據(jù)結(jié)構(gòu)中添加一個(gè)指向字符串?dāng)?shù)組的指針,…);6提交設(shè)計(jì)文檔及源代碼清單。

二、設(shè)計(jì)方案

基本思路:用戶的原始數(shù)據(jù)被保存在一個(gè)account文本文件中,程序啟動(dòng)時(shí),建立鏈

表,加載用戶數(shù)據(jù)。提示用戶登錄,檢查用戶信息正確后,允許進(jìn)行下一步操作;對(duì)于用戶不正確的操作,均進(jìn)行提示或警告,讓其重新操作;程序結(jié)束,選擇0安全退出并儲(chǔ)存用戶數(shù)據(jù)。

框架結(jié)構(gòu):logon_system()模擬登錄界面,用戶登錄后,在menu中進(jìn)行主菜單的處理,

用戶根據(jù)需要選擇進(jìn)行下一步操作,將其他功能的具體實(shí)現(xiàn)分別放到子函數(shù)或者子菜單中進(jìn)行,實(shí)現(xiàn)分支選擇操作。

三、具體功能及實(shí)現(xiàn)基本功能:

(1)從文件中讀入數(shù)據(jù)初始化

建立鏈表,從account文本文件中加載用戶數(shù)據(jù)。

(2)顯示登錄界面,并有提示

這一功能在logon_system()函數(shù)中實(shí)現(xiàn),顯示登錄界面,提示用戶進(jìn)行登錄操作,并有相關(guān)溫馨提示。

(3)檢查登錄信息是否正確

這一功能在access()中實(shí)現(xiàn),如果用戶輸入信息不正確,提示用戶重新操作。具體包括:輸入的賬號(hào)在account文件中不存在,即沒(méi)有這個(gè)儲(chǔ)蓄賬戶;輸入的密碼錯(cuò)誤,提示用戶重新輸入,若三次輸入不成功,程序自動(dòng)退出,每次錯(cuò)誤輸入后,提示用戶剩余輸入次數(shù);密碼不足六位,提示用戶重新輸入,這種錯(cuò)誤不減少用戶的輸入次數(shù)。

(4)顯示主菜單,用戶選擇后,進(jìn)入子菜單

顯示主菜單功能在menu()中實(shí)現(xiàn),包括

取款:選擇后進(jìn)入取款界面(draw_money()函數(shù)實(shí)現(xiàn)),提供50、100、

200、500、800、1000、201*及自由輸入金額(extra()實(shí)現(xiàn))的取款。其中輸入金額不是整50或100的進(jìn)行提示,取款金額超過(guò)當(dāng)前能夠取出的最大整金額進(jìn)行提示(isoverdraw()實(shí)現(xiàn)),并顯示當(dāng)前最多能取款的整數(shù)金額。取款超過(guò)5000的進(jìn)行記錄并對(duì)用戶說(shuō)明(extra()實(shí)現(xiàn))。

存款:提示用戶輸入存款金額,其中輸入金額不是整50或100的進(jìn)行提示

(deposit()實(shí)現(xiàn))。

查詢:顯示當(dāng)前余額(query()實(shí)現(xiàn))。

改密:提示用戶輸入舊密碼,兩次輸入新密碼來(lái)達(dá)到確認(rèn)效果,每次輸入密

碼,對(duì)于密碼不足六位、原密碼輸入錯(cuò)誤、兩次輸入新密碼不一致,均有提示,并讓用戶重新操作(revise()實(shí)現(xiàn))。退出:用戶結(jié)束操作,退出程序。

四、特點(diǎn)小結(jié)

由函數(shù)實(shí)現(xiàn)每個(gè)功能,思路清晰,結(jié)構(gòu)明了;分枝型操作,便于用戶進(jìn)行;注重細(xì)節(jié)的程序設(shè)計(jì)思路,幾乎對(duì)每一步操作都進(jìn)行了判錯(cuò)以及提示處理,保證了

程序能正常地運(yùn)行;

詳盡的提示信息,友好的界面設(shè)計(jì),提高了程序的實(shí)用性和觀賞性;

五、程序代碼

#include#include#includetypedefstructme{

inthour,minute,second;charaddress[100];floatmm;}memo;

typedefstructacc{

longnumber;charname[9];charpass[7];floatm;

structacc*next;structme*mnext;

}ac;

ac*create_list();ac*access(ac*head);voidsave(ac*head);voidmenu();

floatisoverdraw(float,int);voiddraw_money(ac*);voiddeposit(ac*);voidquery(ac*);voidrevise(ac*);voidlogon_system();floatextra(ac*);intmain(){

intflag,select;ac*t,*head;

head=create_list();logon_system();t=access(head);if(t==NULL){

printf("三次輸入錯(cuò)誤,系統(tǒng)將自動(dòng)退出!\\n");return0;}

flag=1;while(flag){

printf("戶主:%s帳號(hào):%Ld\\n\\n\\n",t->name,t->number);menu();

scanf("%d",&select);

while(select5){

printf("輸入有誤,請(qǐng)重新選擇:\\n");scanf("%d",&select);}

system("CLS");switch(select){

case1:draw_money(t);break;case2:deposit(t);break;case3:query(t);break;case4:revise(t);break;

case0:save(head);return1;}}

return1;}

/*程序開(kāi)始時(shí),建鏈表,加載用戶信息*/ac*create_list(){

ac*p,*head=NULL;FILE*fp;

fp=fopen("E:\\\\account.txt","r");if(fp==NULL){

printf("filenotexits\\n");exit(0);}

while(!feof(fp)){

p=(ac*)malloc(sizeof(ac));fscanf(fp,"%d",&(p->number));fscanf(fp,"%s",p->name);fscanf(fp,"%s",p->pass);

fscanf(fp,"%f\\n",&(p->m));//在account文本文件中,每個(gè)人的信息間有換行符,故"%f\\n"p->mnext=NULL;p->next=head;head=p;}

fclose(fp);returnhead;}

/*檢查用戶登錄信息,對(duì)密碼錯(cuò)誤、密碼位數(shù)不足、賬戶不存在等情況進(jìn)行提示,只有密碼錯(cuò)誤t++,否則t不變*/ac*access(ac*head){

ac*p;intt=0;

intn,flag=0;charpp[100];while(tnumber==n&&strcmp(p->pass,pp)==0&&strlen(pp)==6){

flag=1;break;}

elseif(p->number==n&&strcmp(p->pass,pp)!=0&&strlen(pp)==6){

printf("密碼錯(cuò)誤,請(qǐng)重新輸入!剩余輸入次數(shù)%d\\n",2-t);p=head;break;}

elseif(p->number==n&&strlen(pp)!=6){

printf("溫馨提示:密碼是六位數(shù)字或字母,請(qǐng)重新輸入!\\n");t--;//這種情況t不變,故先減一,抵消后面t++的作用p=head;break;}else

p=p->next;}

if(flag==1)break;elseif(p==NULL)

printf("您輸入的賬戶不存在,請(qǐng)重新輸入:\\n");elset++;}

if(t>=3)

returnNULL;else

returnp;}

/*顯示菜單*/voidmenu(){

printf("\\t1取款\\n");printf("\\t2存款\\n");printf("\\t3查詢\\n");printf("\\t4改密\\n");printf("\\t0退出\\n");

printf("請(qǐng)選擇您要的服務(wù):\\n");}

/*取錢(qián):如果用戶輸入非整50或100、超支現(xiàn)象,提示重新進(jìn)行操作*/voiddraw_money(ac*t){

intx;

printf("\\t1.505.800\\n\\n");printf("\\t2.1006.1000\\n\\n");printf("\\t3.201*.201*\\n\\n");printf("\\t4.5008.輸入金額\\n\\n");printf("請(qǐng)選擇:\\n");scanf("%d",&x);while(x=9){

printf("輸入有誤,請(qǐng)重新選擇:\\n");scanf("%d",&x);}

switch(x){

case1:t->m=isoverdraw(t->m,50);break;//判斷是否超支case2:t->m=isoverdraw(t->m,100);break;case3:t->m=isoverdraw(t->m,200);break;case4:t->m=isoverdraw(t->m,500);break;case5:t->m=isoverdraw(t->m,800);break;case6:t->m=isoverdraw(t->m,1000);break;

case7:t->m=isoverdraw(t->m,201*);break;case8:t->m=extra(t);break;}

}

/*存款:只能整存*/voiddeposit(ac*t){

floatm;

printf("請(qǐng)輸入您要存入的金額:\\n");scanf("%f",&m);while((int)m%50!=0){

printf("我們只能提供面值為50或100的服務(wù),請(qǐng)重新輸入您要存入的金額:\\n");

scanf("%f",&m);}

if((int)m%50==0){

t->m=t->m+m;

printf("存款成功!\\n");}}

/*顯示余額*/

voidquery(ac*t){

printf("你當(dāng)期的余額為:%.2f元\\n\\n\\n",t->m);}

voidlogon_system(){

printf("\\n\\n");

printf("\\t歡迎使用中國(guó)MM銀行自動(dòng)服務(wù)系統(tǒng),我們將竭誠(chéng)為您服務(wù)!");printf("\\n\\n\\n");printf("\\t帳號(hào):\\n");printf("\\n");

printf("\\t密碼:\\n\\n\\n\\n\\n");

printf("\\t溫馨提示:1.請(qǐng)保護(hù)好您的密碼,謹(jǐn)防泄漏;\\n\\t\\t2.若出現(xiàn)吞卡或不出鈔現(xiàn)象,\\

請(qǐng)及時(shí)與工作人員聯(lián)系,\\n\\t\\t不要相信其它任何提示信息,以防上當(dāng)受騙。");

printf("\\n\\n\\n");

printf("請(qǐng)輸入您的帳號(hào)及密碼:\\n");}

/*給用戶提供自由輸入取款金額的功能*/floatextra(ac*t){

floatm,x,k;

printf("請(qǐng)輸入取款金額:\\n");scanf("%f",&m);

while((int)m%50!=0){

printf("您的輸入有誤,我們只能提供面值金額為50或100的服務(wù),請(qǐng)重新輸入取款金額:\\n");scanf("%f",&m);}

if(mm,m);returnx;}

else//取款超過(guò)5000則被記錄{

k=t->m-m;

x=isoverdraw(t->m,m);//是否超支if(k>0){

t->mnext=(memo*)malloc(sizeof(memo));t->mnext->hour=12;t->mnext->minute=12;t->mnext->second=12;

strcpy(t->mnext->address,"武漢科技大學(xué)");printf("溫馨提示:為了保護(hù)您的財(cái)產(chǎn)安全,您本次操作將系統(tǒng)自動(dòng)被記錄!\\n");}

returnx;}}

/*修改密碼:對(duì)輸入不足六位、輸入錯(cuò)誤密碼、兩次輸入新密碼前后不一致等情況,提示用戶重新輸入*/voidrevise(ac*t){

inti;

charpass_a[3][7];

printf("請(qǐng)輸入當(dāng)前密碼:\\n");scanf("%s",pass_a[0]);

while(strcmp(pass_a[0],t->pass)!=0){

if(strlen(pass_a[0])==6)

printf("您輸入的密碼有誤,請(qǐng)重新輸入:\\n");else{

printf("您輸入的密碼有誤,請(qǐng)重新輸入:\\n");

printf("溫馨提示:密碼是六位數(shù)字或字母,請(qǐng)重新輸入!\\n");}

scanf("%s",pass_a[0]);}

printf("請(qǐng)輸入新密碼:\\n");//輸入新密碼時(shí)也可能出現(xiàn)密碼不足六位的情況

scanf("%s",pass_a[1]);

while(strlen(pass_a[1])!=6){

printf("您輸入的密碼有誤,請(qǐng)重新輸入:\\n");

printf("溫馨提示:密碼是六位數(shù)字或字母,請(qǐng)重新輸入!\\n");scanf("%s",pass_a[1]);}

printf("請(qǐng)?jiān)俅屋斎胄旅艽a:\\n");scanf("%s",pass_a[2]);

while(strlen(pass_a[2])!=6){

printf("您輸入的密碼有誤,請(qǐng)重新輸入:\\n");

printf("溫馨提示:密碼是六位數(shù)字或字母,請(qǐng)重新輸入!\\n");scanf("%s",pass_a[2]);}

while(strcmp(pass_a[1],pass_a[2])!=0){

printf("兩次新密碼輸入不一致,請(qǐng)重新輸入新密碼:\\n");scanf("%s",pass_a[1]);while(strlen(pass_a[1])!=6){printf("您輸入的密碼有誤,請(qǐng)重新輸入:\\n");

printf("溫馨提示:密碼是六位數(shù)字或字母,請(qǐng)重新輸入!\\n");scanf("%s",pass_a[1]);}

printf("請(qǐng)?jiān)俅屋斎胄旅艽a:\\n");scanf("%s",pass_a[2]);

while(strlen(pass_a[2])!=6){

printf("您輸入的密碼有誤,請(qǐng)重新輸入:\\n");

printf("溫馨提示:密碼是六位數(shù)字或字母,請(qǐng)重新輸入!\\n");scanf("%s",pass_a[2]);}}

for(i=0;ipass[i]=pass_a[1][i];printf("密碼修改成功!\\n");}

/*檢查用戶取款是否超支*/

floatisoverdraw(floatm,intn){

intk;m=m-n;if(m}

FILE*fp;

fp=fopen("E:\\\\account.txt","w");if(fp==NULL){

printf("Can"topenfile\\n");return;}

p=head;

while(p!=NULL){

fprintf(fp,"%d%s%s%f\\n",p->number,p->name,p->pass,p->m);p=p->next;}

fclose(fp);

六、過(guò)程展示

顯示登錄系統(tǒng)

用戶登錄,出現(xiàn)錯(cuò)誤,進(jìn)行提示

取款界面,引導(dǎo)用戶正確操作

取款超過(guò)5000,被記錄

存款界面

查詢余額

修改密碼

附:account文件

友情提示:本文中關(guān)于《銀行ATM機(jī)工作流程模擬編程(鏈表)》給出的范例僅供您參考拓展思維使用,銀行ATM機(jī)工作流程模擬編程(鏈表):該篇文章建議您自主創(chuàng)作。

來(lái)源:網(wǎng)絡(luò)整理 免責(zé)聲明:本文僅限學(xué)習(xí)分享,如產(chǎn)生版權(quán)問(wèn)題,請(qǐng)聯(lián)系我們及時(shí)刪除。


銀行ATM機(jī)工作流程模擬編程(鏈表)》由互聯(lián)網(wǎng)用戶整理提供,轉(zhuǎn)載分享請(qǐng)保留原作者信息,謝謝!
鏈接地址:http://www.taixiivf.com/gongwen/654287.html
相關(guān)文章