【C語(yǔ)言】課程設(shè)計(jì)-ATM機(jī)模擬操作(附源碼)(共18頁(yè))

上傳人:494895****12427 文檔編號(hào):61812110 上傳時(shí)間:2022-03-12 格式:DOCX 頁(yè)數(shù):18 大小:199.39KB
收藏 版權(quán)申訴 舉報(bào) 下載
【C語(yǔ)言】課程設(shè)計(jì)-ATM機(jī)模擬操作(附源碼)(共18頁(yè))_第1頁(yè)
第1頁(yè) / 共18頁(yè)
【C語(yǔ)言】課程設(shè)計(jì)-ATM機(jī)模擬操作(附源碼)(共18頁(yè))_第2頁(yè)
第2頁(yè) / 共18頁(yè)
【C語(yǔ)言】課程設(shè)計(jì)-ATM機(jī)模擬操作(附源碼)(共18頁(yè))_第3頁(yè)
第3頁(yè) / 共18頁(yè)

下載文檔到電腦,查找使用更方便

0 積分

下載資源

還剩頁(yè)未讀,繼續(xù)閱讀

資源描述:

《【C語(yǔ)言】課程設(shè)計(jì)-ATM機(jī)模擬操作(附源碼)(共18頁(yè))》由會(huì)員分享,可在線閱讀,更多相關(guān)《【C語(yǔ)言】課程設(shè)計(jì)-ATM機(jī)模擬操作(附源碼)(共18頁(yè))(18頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。

1、精選優(yōu)質(zhì)文檔-----傾情為你奉上 C語(yǔ)言-ATM機(jī)模擬操作 程序?qū)崿F(xiàn)功能點(diǎn): a. 查詢:查詢帳戶的存款余額。按任意鍵返回主菜單; b. 取款:輸入100、500、1000、2000、5000、其它金額為取款金額,取款金額不超過帳戶余額,操作后帳戶余額應(yīng)相應(yīng)減少,之后可返回主菜單; c. 存款:輸入100、500、1000、2000、5000、其它金額為存款金額,存款金額不超過20000元,操作后帳戶余額應(yīng)相應(yīng)增加。之后可返回主菜單; d. 轉(zhuǎn)帳:輸入一個(gè)帳戶號(hào),程序判斷與文件信息是否相符,儲(chǔ)戶確認(rèn)無(wú)誤后,再輸入100、500、1000、2000、5000、其它金額為轉(zhuǎn)帳金額,轉(zhuǎn)

2、帳金額不得超過帳戶余額,操作后帳戶余額應(yīng)相應(yīng)減少。之后可返回主菜單; e. 修改密碼:連續(xù)輸入兩次新密碼(兩次輸入結(jié)果完全相同)后,新密碼取代舊密碼,并存放到帳戶信息文件中。之后可返回主菜單; f. 退出:退出系統(tǒng); g. 幫助:增加趣味性; h. 存款時(shí),可正可負(fù),正表示存款,負(fù)表示取款; i. 帳戶信息存放在accounts.txt文件,儲(chǔ)戶存取款記錄保存在records.txt中;(在目錄下創(chuàng)建這兩個(gè)文件) j. 采用模塊化程序設(shè)計(jì)方法來(lái)實(shí)現(xiàn),即main()顯示主菜單、調(diào)用相關(guān)函數(shù)實(shí)現(xiàn)相應(yīng)功能,起主控作用; k. 儲(chǔ)戶一天內(nèi)輸錯(cuò)密碼的次數(shù)不能超過3次,否則無(wú)法進(jìn)入系統(tǒng);

3、l. 有效避免輸入存款金額、取款金額為負(fù)數(shù)等異常情況的出現(xiàn)。 較為突出的功能是注冊(cè)、登錄時(shí)賬號(hào)密碼的核對(duì)驗(yàn)證;存款轉(zhuǎn)出轉(zhuǎn)入金額的核對(duì)。是否超過余額,是否不符合格式,是否為沖突操作。 (2)程序運(yùn)行截圖及說(shuō)明(每圖限50到100字); l 進(jìn)入程序,menu1可選擇登錄、注冊(cè)功能。 l 選擇登錄,輸入賬號(hào)密碼,通過輸入內(nèi)容與文件的匹配,判斷是否成功登錄。若登錄失敗,則重新選擇。 l 選擇注冊(cè),輸入賬號(hào)密碼,寫入文件中。 l 進(jìn)入menu2,有五大功能選擇,輸入對(duì)應(yīng)的序列號(hào)進(jìn)入。 l 余額查詢功能輸出賬號(hào)所對(duì)應(yīng)的余額。 l 取款功能,需要安裝要求取出

4、格式化的金額。 l 存款功能,選擇金額,若超過存款,自動(dòng)報(bào)錯(cuò)。存儲(chǔ)成功后,在屏幕上顯示余額并可在txt中看到對(duì)應(yīng)數(shù)目的增加。 l 修改密碼功能,輸入當(dāng)前密碼,輸入新密碼,并進(jìn)行確認(rèn)。即修改成功。 l 轉(zhuǎn)賬功能,輸入對(duì)方卡號(hào),核程序核對(duì)卡號(hào)是否存在,選擇金額轉(zhuǎn)賬,對(duì)應(yīng)存款的減少會(huì)反映在屏幕的余額上。 l 退出功能,任意鍵退出程序。 l 幫助功能,介紹了本程序的相關(guān)信息。 (3)采用的主要技術(shù)(限150到200字); 答:主要采用模塊化管理代碼。使用結(jié)構(gòu)體對(duì)文本信息進(jìn)行操作、運(yùn)用文件操作相關(guān)函數(shù)如fwrite()、fread()、fgets()、fputs

5、()、fgetc()、fputc()、fopen()、fclose()...... 并使用指針操作數(shù)值。 附:程序代碼 #include #include #include #include #include #define N 3 void enterzhanghao(); //ATM賬號(hào)輸入函數(shù) void inputmima(); //密碼輸入函數(shù) void menu(); //操作界面

6、void Withdraw(); //取款函數(shù) void daly(); //延時(shí)函數(shù) void yuer(); //余額查詢函數(shù) void Desposit(); //存款函數(shù) int quit(); //退出界面函數(shù) void change(); //密碼修改 void read(); //文件讀取函數(shù) void write(); //文件寫入函數(shù) void write2(floa

7、t h); //流水賬函數(shù) void tran_account();//轉(zhuǎn)賬函數(shù) void enter();//登錄函數(shù) void flesh();//注冊(cè)函數(shù) void help();//幫助 typedef struct { int num; int password; double accounte; }atm; atm ATM[N] = { { 10001, , 10000 }, { 10002, , 20000 }, { 10003, , 30000 } }; typedef struct { int year; int

8、month; int day; }riqi; int k; int main() { enterzhanghao(); } //ATM賬號(hào)輸入函數(shù) void enterzhanghao() { read(); printf("\t\t\t\t\t**************************************\n"); printf("\t\t\t\t\t-> 歡迎使用ATM機(jī)模擬操作的程序 <-\n"); printf("\t\t\t\t\t-> 1、登錄 <-\n");

9、 printf("\t\t\t\t\t-> 2、注冊(cè) <-\n"); printf("\t\t\t\t\t**************************************\n"); printf("請(qǐng)輸入對(duì)應(yīng)序號(hào):"); int k; scanf("%d", &k); switch (k){ case 1:enter(); break; case 2:flesh(); break; } } void enter() { system("cls"); int user;

10、 printf("請(qǐng)輸入賬號(hào):"); scanf("%d", &user); if (user == 0) { printf("\t\t\t\t\t* 賬號(hào)錯(cuò)誤 *\t\t\t\t\t\n"); enterzhanghao(); } else if (user != (ATM[k].num)) { for (k = 1; k < N; k++) { if (user == (ATM[k].num)) inputmima(); } system("cls");

11、 printf("\t\t\t\t\t* 賬戶不存在,請(qǐng)從新輸入 *\t\t\t\t\t\n"); enterzhanghao(); } else inputmima(); } void flesh() { system("cls"); printf("\t\t\t\t\t請(qǐng)輸入賬號(hào):"); scanf("%f", &ATM[k].num); printf("\t\t\t\t\t請(qǐng)輸入密碼:"); scanf("%f", &ATM[k].password); write(); } //密碼

12、輸入函數(shù) void inputmima() { int code; int temp = 3; read(); system("cls"); printf("\t\t\t\t\t* 請(qǐng)輸入密碼 *\t\t\t\t\n"); scanf("%d", &code); while (code != ATM[k].password) { temp--; system("cls"); printf("\t\t\t\t\t* 密碼錯(cuò)誤,請(qǐng)重新輸入 *\t\t\t\t\n"); printf(

13、"\t\t\t\t\t* 您還有: "); printf("%d", temp); printf(" 次機(jī)會(huì) *\n"); scanf("%d", &code); if (temp == 1) { system("cls"); printf("\t\t\t\t\t* 您已經(jīng) 3 次輸入密碼錯(cuò)誤 *\t\t\t\t\n"); printf("\t\t\t\t\t* 系統(tǒng)將退出操作 *\t\t\t\t\n"); daly(); enterzhanghao()

14、; } } menu(); } //操作界面 void menu() { system("cls"); int h = 1, x; while (h) { printf("\t\t\t\t\t----------------------\n"); printf("\n"); printf("\t\t\t\t\t1、\t查詢余額\n "); printf("\t\t\t\t\t2、\t取款\n "); printf("\t\t\t\t\t3、\t存款\n "); printf("\t\t\t\t\t4、\t

15、修改密碼 \n "); printf("\t\t\t\t\t5、\t轉(zhuǎn)賬 \n "); printf("\t\t\t\t\t6、\t退出登錄\n "); printf("\t\t\t\t\t7、\t幫助 \n "); printf("\n"); printf("\t\t\t\t\t----------------------\n\n "); scanf("%d", &x); switch (x) { case 1:yuer(); break; case 2:Withdraw(); break; case 3:Desposi

16、t(); break; case 4:change(); break; case 5:tran_account(); break; case 6:quit(); h = quit(); break; case 7:help(); break; } } } //取款函數(shù) void Withdraw() { system("cls"); float i; int y; printf("\t\t\t\t\t請(qǐng)輸入你要取款的金額:\n"); printf("\t\t\t\t\t----------------------

17、 \n"); printf("\n"); printf("\t\t\t\t\t1、\t100\n"); printf("\t\t\t\t\t2、\t200\n "); printf("\t\t\t\t\t3、\t500\n "); printf("\t\t\t\t\t4、\t1000\n "); printf("\t\t\t\t\t5、\t2000\n "); printf("\t\t\t\t\t6、\t其他金額\n "); printf("\n"); printf("\t\t\t\t\t----------------------

18、 \n"); printf("\t\t\t\t\t\t\t請(qǐng)輸入對(duì)應(yīng)序列號(hào):\n "); scanf("%d", &y); system("cls"); switch (y) { case 1:i = 100; break; case 2:i = 200; break; case 3:i = 500; break; case 4:i = 1000; break; case 5:i = 2000; break; case 6:scanf("%f", &i); break; default: printf("\t\t\t\t\t請(qǐng)重新輸

19、入"); Withdraw(); break; } if (i <= ATM[k].accounte&&i != 0) { ATM[k].accounte = ATM[k].accounte - i; printf("\t\t\t\t\t取款成功!你的余額為:"); printf("%f", ATM[k].accounte); i = i*(-1); write2(i); } else printf("\t\t\t\t\t余額不足!"); write(); } //延時(shí)函數(shù) void daly() { lon

20、g int h; int k; for (h = ; h>0; h--) { for (k = 300; k>0; k--); } } //余額查詢函數(shù) void yuer() { system("cls"); printf("\t\t\t\t\t賬號(hào)%4d, 余額:%.2lf\n\n\n\n\n", ATM[k].num, ATM[k].accounte); } //存款函數(shù) void Desposit() { system("cls"); int i; printf("\t\t\t\t\t請(qǐng)將鈔票整齊放入??!\n\n");

21、printf("\t\t\t\t\t請(qǐng)輸入你要存的金額:"); scanf("%d", &i); if (i % 100 == 0) printf("\t\t\t\t\t存款成功!"); else { printf("\t\t\t\t\t數(shù)額必須是100的整數(shù)倍!請(qǐng)重新放入??!"); daly(); Desposit(); } ATM[k].accounte = i + ATM[k].accounte; printf("%f", ATM[k].accounte); write(); write2(i); } //退出函數(shù) int

22、 quit() { system("cls"); int i; printf("\t\t\t\t\t謝謝你的使用?。?!\n\n"); i = 0; return i; } //密碼修改 void change() { daly(); system("cls"); int password1, password2, password3; printf("\t\t\t\t\t請(qǐng)輸入舊密碼:"); scanf("%d", &password1); printf("\n"); if (password1 == ATM[k].password)

23、 { loop:printf("\t\t\t\t\t請(qǐng)輸入新的密碼:"); scanf("%d", &password2); printf("\n"); printf("\t\t\t\t\t請(qǐng)?jiān)俅屋斎胄碌拿艽a:"); scanf("%d", &password3); if (password2 == password3) { ATM[k].password = password2; printf("\t\t\t\t\t\n密碼修改成功!\n"); } else { printf("\t\t\t\t\t\n密碼

24、不一致!\n"); printf("\t\t\t\t\t請(qǐng)重新輸入??!\n"); goto loop; } } else { printf("\t\t\t\t\t輸入錯(cuò)誤\n"); change(); } write(); } //文件讀取函數(shù) void read() { int i; FILE *fp; fp = fopen("accounts.txt", "r"); if (fp == NULL) { printf("\t\t\t\t\t打開文件失敗\n"); return; } for

25、(i = 0; i

26、文件失敗\n"); return; } for (i = 0; i

27、ltime(&t);//轉(zhuǎn)為時(shí)間結(jié)構(gòu)。 FILE *fp; fp = fopen("records.txt", "a"); if (fp == NULL) { printf("\t\t\t\t\t打開文件失敗\n"); return; } else { fprintf(fp, "%-5d", lt->tm_year + 1900); fprintf(fp, "%-3d", lt->tm_mon); fprintf(fp, "%-3d", lt->tm_mday); fprintf(fp, "%-5lf\n", h); }

28、fclose(fp); } //轉(zhuǎn)賬函數(shù) void tran_account() { int other_num[10]; int i, c, q, tran; //c用來(lái)判斷轉(zhuǎn)賬是否繼續(xù),q用來(lái)判斷用戶行為,tran用來(lái)存儲(chǔ)轉(zhuǎn)賬金額 system("CLS"); printf("\n\t\t\t\t\t\t\t\t0.返回菜單"); printf("\n\n\n\n\n\n\t\t\t請(qǐng)輸要對(duì)方的賬號(hào): "); scanf("%d", other_num[10]); //輸入對(duì)方賬號(hào) if (other_num[10] ==

29、ATM[k].num) //判斷是否為自身賬號(hào) { system("CLS"); printf("\n\n\n\n\n\n\n\n \t\t對(duì)不起,不能給自己轉(zhuǎn)賬,請(qǐng)重新輸入賬號(hào)!\n"); printf("\n\n\n按任意鍵返回!"); _getch(); system("CLS"); tran_account(); //遞歸調(diào)用 } else while (1) { for (i = 0; i < N; i++) { if (other_num[10] == ATM[i].nu

30、m) //匹配用戶 { while (1) { system("CLS"); printf("\t\t\t請(qǐng)輸入對(duì)方賬號(hào):%s", ATM[i].num); //顯示對(duì)方信息 printf("\n\n\n\n\n\t\t0.返回菜單\t\t\t9.確認(rèn)"); scanf("%d", &c);//輸入9確認(rèn) if (c == '9') { system("CLS"); do { printf("\n\t\t\t\t\t\t\t\t0.

31、返回菜單"); printf("\n\n\n\n\n\n\t\t請(qǐng)輸入轉(zhuǎn)賬金額(整百數(shù)):"); scanf("%d", &q); getchar(); if (q) //q為非0時(shí)進(jìn)入內(nèi)層條件語(yǔ)句 { tran = q; if (tran >= 100 && tran % 100 == 0) //判斷是否為整百 //數(shù)并且大于100的數(shù) { if (tran <= ATM[k].accounte)//取款數(shù)是否不超過余額

32、 { if (tran <= 3000) //判斷是否超過3000 { system("CLS"); ATM[k].accounte -= tran; ATM[k].accounte += tran; menu(); //調(diào)用save_info,存儲(chǔ)信息 printf("\n\n\n\n\n\n\t\t\t 交易成功!\n"); printf("\n\n\n\n\n\t\t0.

33、返回菜單\t\t\t9.繼續(xù)轉(zhuǎn)賬"); c = _getch(); if (c == '9') //輸入9就行轉(zhuǎn)賬 { system("CLS"); } else if (c == '0') //c為0返回菜單 { system("CLS"); menu(); } else {

34、 printf("輸入錯(cuò)誤,請(qǐng)重新輸入!\n"); system("CLS"); } } else { system("CLS"); printf("\n\n\n\n\n\n\t\t對(duì)不起,一次最多能轉(zhuǎn)賬3000元,請(qǐng)重新輸入!"); printf("\n\n\n\n\n按任意鍵返回!\n"); _getch(); system("CLS"

35、); } } else { system("CLS"); printf("\n\n\n\n\n\n\t\t\t您的余額不足,請(qǐng)重新輸入!"); printf("\n\n\n\n\n按任意鍵返回!\n"); _getch(); system("CLS"); } } else { system("CLS");

36、 printf("\n\n\n\n\n\n\t\t\t請(qǐng)輸入正確的金額!請(qǐng)重新輸入!"); printf("\n\n\n\n\n按任意鍵返回!\n"); _getch(); system("CLS"); } } else { system("CLS"); menu(); } } while (1); } else if (c == '0') m

37、enu(); } } } { system("CLS"); printf("\n\n\n\n\n\n\t\t\t用戶不存在!請(qǐng)重新輸入!"); printf("\n\n\n\n\n按任意鍵返回!\n"); _getch(); system("CLS"); tran_account(); //遞歸調(diào)用 } } } //幫助 void help() { system("CLS"); printf("\t\t\t\t\t**************************************

38、\n"); printf("\t\t\t\t\t->碼字不易,我可以在你心里跑一圈嗎 <-\n"); printf("\t\t\t\t\t-> 1、可以 <-\n"); printf("\t\t\t\t\t-> 2、當(dāng)然可以 <-\n"); printf("\t\t\t\t\t**************************************\n"); printf("\t\t\t\t\t-> 你要選哪個(gè)? <-\n"); int k; scanf("%d", &k); switch (k){ case 1:{printf("蟹蟹你~~~!\n"); _getch(); menu(); }; break; case 2:{printf("等下我,第十圈了!\3n"); _getch(); menu(); }break; } } 專心---專注---專業(yè)

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

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!