第一篇:Atm機中英轉(zhuǎn)換去取款存款等C語言
#include
void LanguageMenu();void MainMenu_c();void Query_c();void Deposit_c();void WithDraw_c();void MainMenu_e();void Query_e();void Deposit_e();void WithDraw_e();float Money=1000;void main(){
int bExit=1,Exit=1;int i,j;while(Exit!=0){ LanguageMenu();
j=getche();
system(“cls”);
bExit=1;switch(j){case'1':while(bExit!=0)
{
MainMenu_c();
i=getche();
system(“cls”);
switch(i)
{
case'1':Query_c();break;
case'2':Deposit_c();break;
case'3':WithDraw_c();break;
case'4':bExit=0;break;
default:break;
}
} break;
case'2': while(bExit!=0)
{
MainMenu_e();
i=getche();
system(“cls”);
switch(i)
{
case'1':Query_e();break;
case'2':Deposit_e();break;
case'3':WithDraw_e();break;
case'4':bExit=0;break;
default:break;
}
} break;
case'3':Exit=0;break;default:break;} } }
void LanguageMenu(){
printf(“1.中文n2.Englishn3.退出”);}
void MainMenu_c(){ printf(“1查詢n2存錢n3取錢n4退出n”);}
void Query_c(){ printf(“此帳戶有%.2f 元n”,Money);system(“pause”);system(“cls”);}
void Deposit_c(){ float n;printf(“輸入你要存的數(shù)目并確認:元”);scanf(“%f”,&n);Money=Money+n;
system(“pause”);system(“cls”);
}
void WithDraw_c(){ printf(“輸入取款金額并確認: 元”);float n;scanf(“%f”,&n);while(n>Money)
{
printf(“n余額不足,請重新輸入!n”);
system(“pause”);
system(“cls”);
printf(“輸入取款金額并確認: 元”);
scanf(“%f”,&n);
} Money=Money-n;system(“pause”);system(“cls”);}
void MainMenu_e(){ printf(“1Queryn2Depositn3Withdrawn4Exitn”);
}
void Query_e(){ printf(“This account has %.2f yuann”,Money);system(“pause”);system(“cls”);}
void Deposit_e()
{ float n;printf(“Input your the amount you want to deposit and confirmation: yuan”);scanf(“%f”,&n);Money=Money+n;system(“pause”);system(“cls”);
}
void WithDraw_e(){ printf(“Input the amount and confirmation: yuan”);float n;scanf(“%f”,&n);while(n>Money)
{
printf(“nBalance is insufficient, please enter again!n”);
system(“pause”);
system(“cls”);
printf(“Input the amount and confirm it: yuan”);
scanf(“%f”,&n);
} Money=Money-n;system(“pause”);system(“cls”);}
第二篇:ATM機C語言程序
直接運行沒有錯誤的代碼c----n ==>==>請輸入你要轉(zhuǎn)入的金額:“);
scanf(”%f“,&zj);
if(zj>0.00 && zj<0.01)zj=0.01;
if(zj<0){system(”cls“);
printf(”n“);
for(i=1;i<=80;i++)printf(”=“);
printf(”n ==>對不起,轉(zhuǎn)入的金額不能為負值!n“);
break;}
printf(”n“);
for(i=1;i<=80;i++)printf(”=“);
printf(”n ==>你要將本賬戶中的 %.2f 元 RMB 轉(zhuǎn)入賬戶 %d 中:nn ==>==>確認請按1nn ==>==>==> 重新輸入請按其他鍵nn“,zj,zh[j]);
for(i=1;i<=80;i++)printf(”=“);
printf(”n“);
scanf(”%d“,&c);
if(c==1){
system(”cls“);
printf(”n“);
if(ck[m]>=zj){
for(i=1;i<=80;i++)printf(”=“);
ck[m]=ck[m]-zj;
ck[j]+=zj;
jf[j]+=zj/100;
printf(”n ==>恭喜你,轉(zhuǎn)賬成功!n“);}
else {
for(i=1;i<=80;i++)printf(”=“);
printf(”n ==>==>對不起,你的余額不足,請重新選擇操作!n“);}
break;}
}
}
else {system(”cls“);
printf(”n“);
for(i=1;i<=80;i++)printf(”=“);
printf(”n ==> 操作錯誤!nn ==>==> 請重新選擇操作!n“);
}
}
}
else {system(”cls“);
printf(”n“);
for(i=1;i<80;i++)printf(”=“);
printf(”nn“);
printf(” ==>>>>> 你輸入的賬號或密碼錯誤,請重新輸入!nn “);
for(i=1;i<80;i++)printf(”=“);}
}
else if(kk==1){system(”cls“);
printf(”nn“);
for(i=1;i<80;i++)printf(”=“);
printf(”nn“);
printf(” ==>對不起,此功能暫時不能實現(xiàn)!nn“);
for(i=1;i<80;i++)printf(”=“);
printf(”n“);} else {system(”cls“);
printf(”nn“);
for(i=1;i<80;i++)printf(”=“);
printf(”nn“);
printf(” ==>對不起,你的輸入有誤!nn“);
for(i=1;i<80;i++)printf(”=“);
printf(”n");} } } }
第三篇:C語言模擬ATM機
一、實驗?zāi)康?/p>
通過設(shè)計一個ATM機模擬操作的程序,全面運用課程的主要知識點,鞏固對模塊化程序設(shè)計、文件操作的理解,提高軟件編程能力。
二、實驗要求
要求每人獨立完成設(shè)計,編寫一個ATM機模擬操作程序。提交實驗報告、源程序、程序運行截圖。
1.程序具有以下功能:
1)登錄系統(tǒng):
輸入卡號(16位)、密碼(6位),只有卡號、密碼同時正確(帳戶信息存放在文件中)才能進入系統(tǒng); 2)操作功能:
? 查詢:查詢帳戶的存款余額。按任意鍵返回主菜單;
? 修改密碼:連續(xù)輸入兩次新密碼(兩次輸入結(jié)果完全相同)后,新密碼取代舊密碼,并存放到帳戶信息文件中。之后可返回主菜單;
? 取款:輸入50或100的倍數(shù)模擬為取款金額,請注意:取款金額不得超過帳戶余額,操作后帳戶余額應(yīng)相應(yīng)減少。之后可返回主菜單;
? 存款:輸入50或100的倍數(shù)模擬為存款金額,現(xiàn)假設(shè)存款金額不得超過20000元,操作后帳戶余額應(yīng)相應(yīng)增加。之后可返回主菜單;
? 轉(zhuǎn)帳:先輸入一個帳戶號(已保存在帳戶信息文件中),然后顯示一部分用戶名(如:張*山),儲戶確認無誤后,再輸入50或100的倍數(shù)模擬為轉(zhuǎn)帳金額,請注意:轉(zhuǎn)帳金額不得超過帳戶余額,操作后帳戶余額應(yīng)相應(yīng)減少。之后可返回主菜單; ? 退出:退出系統(tǒng)。
2.定義如下結(jié)構(gòu)體類型:
? “日期”結(jié)構(gòu)體Date:成員有:year(年)、month(月)、day(日);
? “帳戶”結(jié)構(gòu)體Account:成員有:no(帳戶號)、name(姓名)、balance(余額)? “存取款記錄”結(jié)構(gòu)體Record,:成員有:no(帳戶號)、date(日期)、number(數(shù)量,可正可負,正表示存款,負表示取款)3.帳戶信息存放在accounts.txt文件,儲戶存取款記錄保存在records.txt中; 4.采用模塊化程序設(shè)計方法來實現(xiàn),即main()顯示主菜單、調(diào)用相關(guān)函數(shù)實現(xiàn)相應(yīng)功能,起主控作用。5.附加功能:
? 儲戶一天內(nèi)輸錯密碼的次數(shù)不能超過3次,否則無法進入系統(tǒng); ? 應(yīng)避免輸入存款金額、取款金額為負數(shù)等異常情況的出現(xiàn)。
三、程序已經(jīng)實現(xiàn)的功能點
實驗要求均已實現(xiàn)。此外還有:
1.卡號、密碼位數(shù)輸錯時,提示并返回重新輸入,2.簡化取款時的輸入
3.轉(zhuǎn)賬時,轉(zhuǎn)賬賬戶為原賬戶時,提示并返回重新輸入 4.在多個模塊中添加了退出功能,無需回到主菜單即可退出系統(tǒng) 5.在查詢模塊中加入了存取記錄明細查詢
四、程序運行截圖及說明
1.登陸模塊
1)卡號不為16位時,輸出提示并返回重新輸入
2)卡號不存在時,輸出提示并返回重新輸入
3)密碼位數(shù)輸錯時,輸出提示并返回重新輸入密碼,不作為密碼錯誤處理,也無需重新輸入卡號
4)密碼連續(xù)輸錯三次時,鎖定卡號,今日無法登錄
2.登錄后的系統(tǒng)主菜單
3.查詢模塊
1)查詢模塊主菜單
2)查詢明細
4.取款模塊
1)當余額不足50時,無法進入取款模塊
2)取款模塊主菜單
3)便捷取款
4)手動輸入取款金額
輸錯時,返回重新輸入
5)取款后的菜單
6)取款完成后選擇顯示余額
5.存款模塊
1)解決輸入錯誤問題
2)存款成功
6.密碼修改模塊
1)原密碼輸錯時,返回重新輸入,不提供退出功能
2)密碼位數(shù)輸錯、兩次輸入新密碼不一致時,返回重新輸入
3)輸入無誤時
7.轉(zhuǎn)賬模塊
1)轉(zhuǎn)入卡號位數(shù)輸錯時,提示并返回重新輸入
2)未查找到該卡號時,輸出提示,提供退出功能,鍵入除*外任意鍵重新輸入
3)轉(zhuǎn)入卡號與當前卡號相同時,輸出提示
4)輸出轉(zhuǎn)入卡賬戶的部分用戶名
5)解決轉(zhuǎn)賬金額輸錯的問題
6)轉(zhuǎn)賬成功
五、采用的主要技術(shù)
1.宏定義:由于本程序的printf語句較多,為了便于編寫,故用PR代替 2.鏈表:賬戶信息采用鏈表結(jié)構(gòu),內(nèi)存動態(tài)分配,使用內(nèi)存無限制,可以擴展到所有可以使用的內(nèi)存 3.switch多分支選擇結(jié)構(gòu) 4.文本文件的讀寫
5.利用time.h頭文件,簡便地獲取系統(tǒng)日期 6.system()函數(shù)和fflush()函數(shù)的簡單使用
六、設(shè)計心得
1.各函數(shù)的功能要相對獨立,逐步求精。
2.如果函數(shù)的參數(shù)為指針,且僅作為輸入?yún)?shù),則應(yīng)在類型前加const,以防止該指針在函數(shù)體內(nèi)被意外修改
附:程序代碼
/*** * 運行本程序前,請在本程序根目錄下建立文件“accounts.txt”,格式如下: * 卡號1(16位)
姓名1 賬戶余額1 密碼1 * 卡號2(16位)
姓名2 賬戶余額2 密碼2 * …… ****/
#include
typedef struct {
short int year;short int month;short int day;}Date;//日期
typedef struct Account { char no[17];char name[20];double balance;char password[7];struct Account* next;}Account;
typedef struct { char no[17];Date date;double number;}Record;//記錄
Account *head = NULL;//賬戶信息鏈表表頭 Account *now_acc = NULL;//當前賬戶
/************函數(shù)申明************/ void InitializeAccount();//導(dǎo)入賬戶信息 //-------char LockAccountTopic(const char *no);//檢測賬戶是否被鎖定 void LockAccount(const char *no);//鎖定賬戶 //-------void Login();//登錄
Account* FindbyNo(const char *no);//查找卡號對應(yīng)賬戶信息在鏈表中的地址 //-------void Demand();//查詢主菜單 void PrintBalance();//輸出余額 void Printetail();//輸出明細 //-------void Modifiy();//修改密碼 //-------void Withdrawal();//取款主界面
void WithdrawalOt(long money);//取款 //-------void Depositing();//存款 //-------void Transfer();//轉(zhuǎn)賬
char *CoverUpName(const char *name);//掩蓋部分用戶名 //-------void Log(double money, const char *no);//將存款記錄寫入文件中 void Save();//保存賬號信息 void FreeData();//釋放鏈表空間 //-------
int main(){ char choose;
InitializeAccount();//導(dǎo)入賬戶信息 Login();//登錄 do { system(“cls”);PR(“tt
n”);PR(“tt
請選擇服務(wù)
n”);PR(“tt+-+---------+
+---------+-+n”);PR(“tt|5|33轉(zhuǎn)賬|
|查詢32|1|n”);PR(“tt+-+---------+
+---------+-+nn”);PR(“tt
+---------+-+n”);
PR(“tt
|取款32|2|n”);PR(“tt
+---------+-+nn”);PR(“tt
+---------+-+n”);PR(“tt
|存款32|3|n”);PR(“tt
+---------+-+nn”);PR(“tt+-+---------+
+---------+-+n”);PR(“tt|0|33退出系統(tǒng)|
|修改密碼32|4|n”);PR(“tt+-+---------+
+---------+-+nn”);PR(“請選擇服務(wù):”);fflush(stdin);choose = getchar();switch(choose){ case '1': Demand();break;//查詢 case '2': Withdrawal();break;//取款 case '3': Depositing();break;//存款 case '4': Modifiy();break;//修改密碼 case '5': Transfer();break;//轉(zhuǎn)賬 case '0': FreeData();return 0;//退出 default:
printf(“輸入錯誤,請重新選擇n”);//解決用戶可能的輸入錯誤
system(“pause”);
} } while(1);return 0;}
/**********導(dǎo)入賬戶信息**********/ void InitializeAccount(){ FILE *fp;Account temp;PR(“系統(tǒng)初始化中,請稍侯...n”);if(!(fp = fopen(“accounts.txt”, “r”))){
PR(“