【C語(yǔ)言】課程設(shè)計(jì)-ATM機(jī)模擬操作(附源碼)(共18頁(yè))
《【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
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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 市教育局冬季運(yùn)動(dòng)會(huì)安全工作預(yù)案
- 2024年秋季《思想道德與法治》大作業(yè)及答案3套試卷
- 2024年教師年度考核表個(gè)人工作總結(jié)(可編輯)
- 2024年xx村兩委涉案資金退還保證書
- 2024年憲法宣傳周活動(dòng)總結(jié)+在機(jī)關(guān)“弘揚(yáng)憲法精神推動(dòng)發(fā)改工作高質(zhì)量發(fā)展”專題宣講報(bào)告會(huì)上的講話
- 2024年XX村合作社年報(bào)總結(jié)
- 2024-2025年秋季第一學(xué)期初中歷史上冊(cè)教研組工作總結(jié)
- 2024年小學(xué)高級(jí)教師年終工作總結(jié)匯報(bào)
- 2024-2025年秋季第一學(xué)期初中物理上冊(cè)教研組工作總結(jié)
- 2024年xx鎮(zhèn)交通年度總結(jié)
- 2024-2025年秋季第一學(xué)期小學(xué)語(yǔ)文教師工作總結(jié)
- 2024年XX村陳規(guī)陋習(xí)整治報(bào)告
- 2025年學(xué)校元旦迎新盛典活動(dòng)策劃方案
- 2024年學(xué)校周邊安全隱患自查報(bào)告
- 2024年XX鎮(zhèn)農(nóng)村規(guī)劃管控述職報(bào)告