C语言ATM程序模拟.doc
- 格式:doc
- 大小:421.50 KB
- 文档页数:18
C语⾔编制模拟ATM取款机密码输⼊过程(第三天)---恢复内容开始---//// main.c// whilexu//// Created by mac on 18/7/17.// Copyright © 2018年 111. All rights reserved.//#include <stdio.h>int main(int argc, const char * argv[]) {/*初始密码12341、提⽰欢迎光临2、提⽰请输⼊密码:do while循环语句控制能输⼊⼏次密码if语句来判断输⼊的密码是否正确失败:密码错误请重新输⼊(还有⼏次机会)成功:显⽰新的操作界⾯密码正确*/int password = 0;int time = 3;//提⽰⽤户操作printf("*****欢迎光临!*****\n");printf("请输⼊您的密码:");do{scanf("%d",&password);//判断密码是否正确if(password ==1234){printf("密码正确\n");break;}else{time--;if(time==0){printf("错误次数过多,退出\n");break;}printf("密码错误,请重新输⼊密码(还有%d次机会):\n",time);}}while (time>0);return0;}//1、总结:理清要实现的操作有哪些;2、分析要⽤哪些语句来实现;3、根据提⽰的错误来修正错误;4、运⾏---恢复内容结束---。
目录三、编程题部分(银行ATM模拟存取系统)1、设计内容 (2)2、设计 (2)(1)数据分析 (2)(2)程序流程分析 (3)3、编码及调试 (13)4、程序运行截图 (32)四、总结与体会 (37)五、参考文献 (39)三、编程题部分1、设计内容完成一个管理类的综合型设计:银行ATM模拟存取系统。
要求学生进行数据结构的设计、对函数进行模块化结构化设计、并灵活运用数组、结构体、指针、文件等多种数据类型设计开发系统。
通过写程序,学生应掌握用计算机程序设计语言解决实际问题的方法、步骤。
该系统应该具有以下功能:1)账户管理功能a) 开户:完成账户注册的功能。
即输入账户的相关信息。
要求账户号长度12位,密码长度不得低于6位,必须使用暗码,账户信息保存到数组中,账户信息最后保存到相关文件中;b) 账户登录:输入账户、密码,验证是否能够登录该系统;c)密码修改:输入两次相同的密码方可修改。
2)账务管理功能a) 存款:每笔存款金额大于0元小于等于1000元,以50元为基本单位。
需记录交易日期和时间。
b) 取款:每笔取款金额大于等于100元小于等于2000元,以50元为基本单位。
需记录交易日期和时间。
c) 转账:每笔转账金额大于等于100元小于等于5000元。
需记录交易日期和时间。
3)查询功能a) 存款记录查询b) 取款记录查询c) 转账记录查询d) 余额查询4)文件功能及其它功能:数据都应保存在相关文件中。
2、设计(1)数据分析(描述定义的各主要变量的作用及意义);char zhanghao[16];/*用户账号*/char xingming[9];/*用户姓名*/char mima[7];/*账户密码*/char shengfenzheng[19];/*用户身份证号*/float yue;/*账户余额*/char kaihushijian[50];/*开户时间*/char zhanghao[16];/*交易的账号*/char jiaoyishijian[50];/*交易时间*/char leixing[5];/*交易类型*/float jiaoyijine;/*交易金额*/float jiaoyiyue;/*交易后的余额*/char duifangzhanghao[12];/*交易时的对方账号*/int zhanghuxuhao=0,jiaoyixuhao=0,dangqianxiabiao=0,duifangzhanghuxiabiao=0;/*账户序号,交易序号,当前登录的账户下标,转账时对方的账户下标*/注册函数:int baiwei,shiwei,gewei,len;/*定义账号的后三位*/char mima2[7];/*注册时第二次输入的密码*/登录函数:char zhanghao[16],mima[7];/*登录时输入的账号和密码*/装载和保存文件函数:FILE *fp;/*定义文件指针*/char wenjianming[13];/*定义输入的文件名*/存、取款,转账函数:float jine;/*输入的存、取款,转账金额*/char t[30];/*把取得的存、取款,转账时间赋给该数组*/转账函数:char duifangzhanghao[16],c;/*输入的对方账号赋给该数组。
C语言-ATM机模拟操作程序实现功能点:a.查询:查询帐户的存款余额。
按任意键返回主菜单;b.取款:输入100、500、1000、2000、5000、其它金额为取款金额,取款金额不超过帐户余额,操作后帐户余额应相应减少,之后可返回主菜单;c.存款:输入100、500、1000、2000、5000、其它金额为存款金额,存款金额不超过20000元,操作后帐户余额应相应增加。
之后可返回主菜单;d.转帐:输入一个帐户号,程序判断与文件信息是否相符,储户确认无误后,再输入100、500、1000、2000、5000、其它金额为转帐金额,转帐金额不得超过帐户余额,操作后帐户余额应相应减少。
之后可返回主菜单;e.修改密码:连续输入两次新密码(两次输入结果完全相同)后,新密码取代旧密码,并存放到帐户信息文件中。
之后可返回主菜单;f.退出:退出系统;g.帮助:增加趣味性;h.存款时,可正可负,正表示存款,负表示取款;i.帐户信息存放在accounts.txt文件,储户存取款记录保存在records.txt中;(在目录下创建这两个文件)j.采用模块化程序设计方法来实现,即main()显示主菜单、调用相关函数实现相应功能,起主控作用;k.储户一天内输错密码的次数不能超过3次,否则无法进入系统;l.有效避免输入存款金额、取款金额为负数等异常情况的出现。
较为突出的功能是注册、登录时账号密码的核对验证;存款转出转入金额的核对。
是否超过余额,是否不符合格式,是否为冲突操作。
(2)程序运行截图及说明(每图限50到100字);●进入程序,menu1可选择登录、注册功能。
●选择登录,输入账号密码,通过输入内容与文件的匹配,判断是否成功登录。
若登录失败,则重新选择。
●选择注册,输入账号密码,写入文件中。
●进入menu2,有五大功能选择,输入对应的序列号进入。
●余额查询功能输出账号所对应的余额。
●取款功能,需要安装要求取出格式化的金额。
一、课题要求1、当输入给定的卡号和密码(初始卡号和密码为123456)时,系统能登录A TM柜员机系统。
2、查询余额:初始余额为10000元。
3、ATM取款:每次取款金额为100的倍数,总额不超过5000元,支取金额不允许透支。
4、ATM存款:不能出现负存款。
5、修改密码:新密码长度不小于6位,不允许出现6位完全相同的情况,只有旧密码正确,新密码符合要求,且两次输入相同的情况下才可以成功修改密码。
二、代码#include "stdafx.h"#include "stdio.h"#include "windows.h"#include "stdlib.h"#include "conio.h"void gotoxy(int x,int y); //光标位置函数void enter_ATM(); //账号输入函数void input_code(); //密码输入函数void caozuo(); //基本操作界面void qukuan(); //取款函数void success(); //操作成功函数void delay(); //延时函数void yu_e(); //余额查询函数void cunkuan(); //存款函数void panduan(long int z); //判断取款是否合法函数void exit(); //退出界面函数void mima(); //密码修改void zhuangyi();long int CODE=123456,YU_E=10000;//=========================主函数========================//main(){enter_ATM();caozuo();}//======================================================////==================================柜台机账号输入函数=======================================//void enter_ATM(){system("cls");printf("********************************\n");printf("* *\n");printf("* 欢迎使用A TM 柜台机*\n");printf("* 请输入卡号*\n");printf("* *\n");printf("* *\n");printf("********************************\n");long int user;gotoxy(14,4);scanf("%d",&user);while(user!=123456){system("cls");printf("********************************\n");printf("* *\n");printf("* 账户不存在,请从新输入*\n");printf("* *\n");printf("* *\n");printf("* 取消确定*\n");printf("* *\n");printf("********************************\n");gotoxy(13,3);scanf("%d",&user);}input_code();}//========================================================================= =================////=======================================密码输入函数========================================//void input_code(){long int code;int temp=3,time;system("cls");printf("********************************\n");printf("* *\n");printf("* 请输入密码*\n");printf("* *\n");printf("* *\n");printf("* 取消确定*\n");printf("* *\n");printf("********************************\n");gotoxy(14,3);scanf("%d",&code);while(code!=CODE){temp--;if(temp==0){{system("cls");printf("********************************\n");printf("* *\n");printf("* 您已经3 次输入密码*\n");printf("* 系统将退出操作*\n");printf("* *\n");printf("* ");printf("%d",time);printf(" *\n");printf("* *\n");printf("********************************\n");delay();}enter_ATM();}system("cls");printf("********************************\n");printf("* *\n");printf("* 密码错误,请重新输入*\n");printf("* 您还有");printf("%d",temp);printf(" 次机会*\n");printf("* *\n");printf("* 取消确定*\n");printf("* *\n");printf("********************************\n");gotoxy(14,4);scanf("%d",&code);}caozuo();}//========================================================================= ============////============================================主操作界面函数========================================//void caozuo(){system("cls");printf("********************************\n");printf("* 请选择一下业务*\n");printf("* 1.修改密码*\n");printf("* 2.查询余额*\n");printf("* 3.取款*\n");printf("* 4.实时存款*\n");printf("********************************\n");switch(getch()){case '1': mima(); break;case '2': yu_e(); break;case '3': qukuan(); break;case '4': cunkuan(); break;case '5': exit(); break;default:printf("error\n");}}//========================================================================= =========================////==============================密码修改函数==============================// void mima(){long int mm1,mm2,mm3;char temp;system("cls");printf("********************************\n");printf("* *\n");printf("* 旧密码: *\n");printf("* *\n");printf("* 新密码: *\n");printf("* 确认新密码: *\n");printf("* *\n");printf("********************************\n");gotoxy(15,2);scanf("%d",&mm1);gotoxy(15,4);scanf("%d",&mm2);gotoxy(15,5);scanf("%d",&mm3);if(mm1!=CODE){system("cls");printf("********************************\n");printf("* *\n");printf("* 旧密码错误*\n");printf("* *\n");printf("* 请重新输入!*\n");printf("* *\n");printf("* *\n");printf("********************************\n");delay();if(mm2!=mm3){system("cls");printf("********************************\n"); printf("* *\n"); printf("* 确认密码不一致*\n"); printf("* *\n"); printf("* 请重新输入!*\n"); printf("* *\n"); printf("* *\n"); printf("********************************\n"); delay();delay();zhuangyi();}if(mm2<100000){system("cls");printf("********************************\n"); printf("* *\n"); printf("* 密码必须大于或等于6位数*\n"); printf("* *\n"); printf("* 请重新输入!*\n"); printf("* *\n"); printf("* *\n"); printf("********************************\n"); delay();delay();zhuangyi();}temp=mm2%111111;if(temp==0){system("cls");printf("********************************\n"); printf("* *\n"); printf("* 密码过于简单*\n"); printf("* *\n"); printf("* 请重新输入!*\n"); printf("* *\n"); printf("* *\n"); printf("********************************\n"); delay();CODE=mm2;system("cls");printf("********************************\n");printf("* *\n");printf("* 操作成功*\n");printf("* *\n");printf("* 1.返回 2.退出*\n");printf("* *\n");printf("* *\n");printf("********************************\n");switch(getch()){case '1': caozuo(); break;case '2': exit(); break;}}//======================================================================// //==========================余额查询函数============================//void yu_e(){system("cls");printf("********************************\n");printf("* *\n");printf("* *\n");printf("* 系统正在查询*\n");printf("* 请稍候... *\n");printf("* *\n");printf("* *\n");printf("********************************\n");delay();delay();system("cls");printf("********************************\n");printf("* *\n");printf("* 您的余额为*\n");printf("* *\n");printf(" ");printf("%d",YU_E);printf("\n* *\n");printf("* 1.返回 2.退出*\n");printf("********************************\n");switch(getch()){case '2': exit(); break;}}//==================================================================////===================================取款函数====================================//void qukuan(){long int temp;system("cls");printf("********************************\n");printf("* 请选择您要取款的金额*\n");printf("* 1.100 2.200 *\n");printf("* 3.500 4.800 *\n");printf("* 5.1000 6.其它*\n");printf("* *\n");printf("* 7.返回8.退出*\n");printf("********************************\n");switch(getch()){case '1': panduan(100); break;case '2': panduan(200); break;case '3': panduan(500); break;case '4': panduan(800); break;case '5': panduan(1000); break;case '6':system("cls");printf("********************************\n");printf("* *\n");printf("* 请输入您要取款的金额*\n");printf("* *\n");printf("* *\n");printf("* *\n");printf("* *\n");printf("********************************\n");gotoxy(14,4);scanf("%d",&temp);panduan(temp); break;case '7':caozuo(); break;case '8':exit(); break;}}//========================================================================= =======////======================================判断取款是否合法函数void panduan(long int z){int beishu;if(z>YU_E){system("cls");printf("********************************\n"); printf("* *\n"); printf("* 余额不足!*\n"); printf("* 请重新操作*\n"); printf("* *\n"); printf("* 1.返回 2.退出*\n"); printf("* *\n"); printf("********************************\n"); switch(getch()){case '1': qukuan();case '2': exit();}}beishu=z%100;if(beishu!=0){system("cls");delay();printf("********************************\n"); printf("* *\n"); printf("* 本ATM机只支持100 的人民币*\n"); printf("* 请重新操作*\n"); printf("* *\n"); printf("* 1.返回 2.退出*\n"); printf("* *\n"); printf("********************************\n"); switch(getch()){case '1': qukuan();case '2': exit();}}if(z==5000||z>5000){system("cls");printf("********************************\n"); printf("* *\n"); printf("* 每次取款不能超过5000 元*\n");printf("* *\n");printf("* 1.返回 2.退出*\n");printf("* *\n");printf("********************************\n");switch(getch()){case '1': qukuan();case '2': exit();}}YU_E=YU_E-z;success();}//========================================================================= =================////==============================================存款函数=============================================//void cunkuan(){long int temp;system("cls");printf("********************************\n");printf("* *\n");printf("* 请放入人民币*\n");printf("* *\n");printf("* 取消确定*\n");printf("* *\n");printf("* *\n");printf("********************************\n");gotoxy(14,3);scanf("%d",&temp);while(temp<0){system("cls");printf("********************************\n");printf("* *\n");printf("* 非法存款*\n");printf("* 请重新放入人民币*\n");printf("* *\n");printf("* 取消确定*\n");printf("* *\n");printf("********************************\n");gotoxy(14,4);scanf("%d",&temp);}success();}//========================================================================= ========================////===================================光标位置函数=========================================//void gotoxy(int x,int y){COORD coord;coord.X=x;coord.Y=y;SetConsoleCursorPosition( GetStdHandle( STD_OUTPUT_HANDLE ), coord );}//========================================================================= ==============////===========================================简答延时函数===========================================//void delay(){long int bl1;int bl2;for(bl1=655356;bl1>0;bl1--){for(bl2=410;bl2>0;bl2--);}}//========================================================================= ==========================////=======================操作成功函数===========================//void success(){system("cls");printf("********************************\n");printf("* *\n");printf("* *\n");printf("* 系统正在处理*\n");printf("* 请稍候... *\n");printf("* *\n");printf("* *\n");printf("********************************\n");delay();delay();system("cls");printf("********************************\n");printf("* *\n");printf("* *\n");printf("* 1.返回 2.退出*\n");printf("* *\n");printf("* *\n");printf("********************************\n");switch(getch()){case '1':caozuo(); break;case '2':exit(); break;}}//==============================================================// //==========================系统退出函数===========================// void exit(){system("cls");printf("********************************\n");printf("* *\n");printf("* *\n");printf("* 欢迎您的再次使用*\n");printf("* 系统正在退出... *\n");printf("* *\n");printf("* *\n");printf("********************************\n");delay();delay();enter_ATM();}//================================================================// //============== 简单转移函数=============//void zhuangyi(){mima();}//========================================//三、部分效果截图。
2.7.1.4 练习4 模仿A TM模仿ATM取款程序,包括清空、存钱、取钱、查询余额、计算利息、有界面//atm.c#include<stdi o.h>#include<stdlib.h>float total=0;//全¨?局?变À?量¢?,ê?用®?于®¨²所¨´有®D函¡¥数ºyvoid clear(void){total=0;}void save(void){printf("Input Save Amount:");float amount;scanf("%f",&amount);scanf("%*c");total+=amount;}void get(void){printf("Input Get Amount:");int amount;scanf("%d",&amount);scanf("%*c");if(amount>total){printf("Amount Error!\n");get();}elsetotal-=amount;}void inquiry(void){printf("You balance is: %f.\n",total);}void menu(){printf("+------------------------------+\n");printf(" Welcome to Bank of Set \n");printf("+------------------------------+\n");printf("[1]Press 1 to Save money.\n");printf("[2]Press 2 to inquiry balance.\n");printf("[3]Press 3 to get money.\n");printf("[4]Press 4 to clear account.\n");printf("C hoose:");int i;scanf("%d",&i);scanf("%*c");switch(i){case 1:save();break;case 2:inquiry();break;case 3:get();break;case 4:clear();break;default:printf("Press Error!\n");menu();break;}}void Exit(){printf("Press <R> to return menu.\n");printf("Press <Q> to quit.\n");char ch;scanf("%c",&ch);scanf("%*c");//去除缓冲区里面输入的回车键if(ch=='Q'||ch=='q')exit(0);}int main(){while(1){menu();Exit();system("cls");//清屏}return 0;。
⽤c语⾔编写的⼀个ATM取款机程序学了⼀个多星期的c语⾔了,⽼师布置来了作业,⽤C编写个ATM机的模拟程序,客户界⾯有,取款,2存款,3转账,4退出。
并且要求输⼊错误后,有三次机会重输,定义输⼊密码hellowold,⽤switch分⽀。
#include<stdio.h>#include<string.h>#define key "hellowold"//定义密码#define zhanghu "123456789"#define line "==================\n"int num;//选择类型char arr[20];//定义数组char password[20];//定义数组int money;//取款⾦额int i=0;int main(){printf(line);printf("\t1取款\n");printf("\t2存款\n");printf("\t3转账\n");printf("\t4退出\n");printf(line);printf("请选择操作类型: \n");scanf("%d",&num);switch(num){case1:{ do{printf("请输⼊密码:\n");scanf("%s",&password);if(strcmp(key,password)==0){printf("请输⼊取款⾦额:\n");scanf("%d",&money);printf("请取⾛你的%d⽑爷爷",money);break;}else{printf("密码输⼊错误");}i++;}while((strcmp(key,password)!=0)&&i<=2);}}第⼆步存款,定义账号#include<stdio.h>#include<string.h>#define key "hellowold"//定义密码#define zhanghu "#define other "ni de mao ye ye"#define line "==================\n"int num;//选择类型char arr[20];//定义数组char password[20];//定义数组char others[20];int money;//取款⾦额int num2;//存款⾦额int i=0;int main(){printf(line);printf("\t1取款\n");printf("\t2存款\n");printf("\t3转账\n");printf("\t4退出\n");printf(line);printf("请选择操作类型: \n");scanf("%d",&num);switch(num){case1:{ do{printf("请输⼊密码:\n");scanf("%s",&password);if(strcmp(key,password)==0){printf("请输⼊取款⾦额:\n");scanf("%d",&money);printf("请取⾛你的%d⽑爷爷",money);break;}else{printf("密码输⼊错误");}i++;}while((strcmp(key,password)!=0)&&i<=2);break;}今天先变到这⾥吧,作业还多着了,排版不是很好看,就将就这看吧。
C语言模拟ATM机的编写程序#include <stdio.h>void main(){long int a,b,c,d,e,f,g,k,l,m,n,o,p,h;n=0;h=10000;k=123456;loop0: printf("\t\t\t欢迎使用中国邮政ATM取款机!\n\n");printf("请插入你的银行卡,并输入你的密码,三次密码输入错误,将终止程序:\n");scanf("%ld",&l);if(k==l){loop1: printf("请输入你选择的操作类型:\n");printf("请输入0-4进行选择:\n");printf("1:<转账>\t2:<查询>\t3:<取款>\t4:<修改密码>\t0:<取卡>\n");scanf("%ld",&a);switch(a){case 1: printf("请输入转账账号:\n");scanf("%d",&o);printf("请输入你需要转账的金额:\n");scanf("%d",&p);printf("请输入你选择的操作类型:\n");printf("请输入0或1进行选择:\n");printf("1:<确认>\t0:<返回>\n");h=10000-p;scanf("%ld",&b);switch(b){case 1:printf("\n转账%d元人民币成功!\n\n",p);goto loop1;break;case 0:goto loop1;break;default :printf("\n无此操作项!\n\n");goto loop1;}break;loop4:case 2:printf("请输入你选择的操作类型:\n");printf("请输入0-2进行选择:\n");printf("1:<查询余额>\t2:<查询明细>\t0:<返回>\n");scanf("%ld",&c);switch(c){case 1:printf("\n你的余额为:%5d\n\n",h);goto loop1;break;case 2:printf("\n你的账单为:******。
c语言atm机编程代码下面是一个简单的C语言ATM机编程代码示例:#include <stdio.h>// ATM机账户结构体typedef struct {int account_number;float balance;} Account;// 初始化账户信息void init_account(Account *account, int acc_no, float bal) { account->account_number = acc_no;account->balance = bal;}// 存款void deposit(Account *account, float amount) {account->balance += amount;}// 取款void withdraw(Account *account, float amount) {if (account->balance >= amount) {account->balance -= amount;} else {printf("余额不足!\n");}}// 查询余额void check_balance(Account *account) {printf("当前余额:%.2f\n", account->balance); }// 主函数int main() {Account my_account;int choice;float amount;// 初始化账户信息init_account(&my_account, 123456789, 5000.0);// ATM机操作菜单printf("欢迎使用ATM机!\n");printf("请选择操作:\n");printf("1. 存款\n");printf("2. 取款\n");printf("3. 查询余额\n");printf("0. 退出\n");do {printf("请输入操作代码:");scanf("%d", &choice);switch (choice) {case 1:printf("请输入存款金额:");scanf("%f", &amount);deposit(&my_account, amount); break;case 2:printf("请输入取款金额:");scanf("%f", &amount);withdraw(&my_account, amount); break;case 3:check_balance(&my_account);break;case 0:printf("退出程序!\n");break;default:printf("无效的操作!\n");}} while (choice != 0);return 0;}。
课程设计任务书课程名称:程序设计基础课程设计设计题目:银行ATM存取款系统、个人通信录系统(任选一题)已知技术参数和设计要求:需求说明及要求题目一:银行ATM存取款系统银行ATM存取款系统业务描述如下:银行ATM存取款系统能为用户提供存款、取款、查询、转账和修改密码的功能。
为了模拟真实的ATM业务环境,本系统必须实现存款、取款、查询、转账、修改密码以及开户的功能。
用户通过开户业务在本系统开立银行账户,之后可以通过该银行账户登陆ATM系统,在系统中实现存款、取款、查询账户信息、修改密码的操作。
本系统各个业务有如下注意点:(1)登陆系统用户登陆之前,必须在登陆界面输入其银行账户,通过其正确输入的银行账户登陆系统。
(2)开户业务要使用本系统必须首先执行开户业务开立新的银行账户,并且将此新开的银行存储于文件当中。
同时,系统以身份证号码作为开户的充分条件,即一个身份证号码只能开立一次银行账户。
(3)存款业务客户登陆系统后,选择存款业务,即可以将输入的存款金额存入相应的账户。
(4)取款业务客户登陆系统后,选择取款业务,即可以将输入的取款金额从相应的银行账户取出,但是取款金额必须大于目前的账户余额。
(5)查询业务客户登陆系统后,可以选择查询业务,查询账户余额。
(6)转账业务客户登陆系统后,可以选择转账业务,进行转账。
注意的是转账的目的账户必须是本系统已经存在的银行账户。
(7)修改密码客户登陆系统后,可以选择修改密码业务,进行密码修改。
题目二:个人通信录系统个人通信录系统业务描述如下:个人通信录必须为用户提供好友管理、系统管理和帮助三个部分。
好友管理包括好友信息录入、好友信息修改、好友信息删除和好友信息查询查询的功能,在此基础上可以设置好友分组;系统管理包括密码修改、分组配置;帮助需要为用户提供系统的操作帮助。
本系统各个业务有如下注意点:(1)登陆系统用户在登陆界面输入用户名和密码,校验正确后可以登陆系统。
(2)好友管理业务新增的好友信息保存至文件,之后对好友信息的管理都是对文件中的好友信息进行处理,并且可以将好友信息进行分组。
一、课题要求1、当输入给定的卡号和密码(初始卡号和密码为123456)时,系统能登录A TM柜员机系统。
2、查询余额:初始余额为10000元。
3、ATM取款:每次取款金额为100的倍数,总额不超过5000元,支取金额不允许透支。
4、ATM存款:不能出现负存款。
5、修改密码:新密码长度不小于6位,不允许出现6位完全相同的情况,只有旧密码正确,新密码符合要求,且两次输入相同的情况下才可以成功修改密码。
二、代码#include "stdafx.h"#include "stdio.h"#include "windows.h"#include "stdlib.h"#include "conio.h"void gotoxy(int x,int y); //光标位置函数void enter_ATM(); //账号输入函数void input_code(); //密码输入函数void caozuo(); //基本操作界面void qukuan(); //取款函数void success(); //操作成功函数void delay(); //延时函数void yu_e(); //余额查询函数void cunkuan(); //存款函数void panduan(long int z); //判断取款是否合法函数void exit(); //退出界面函数void mima(); //密码修改void zhuangyi();long int CODE=123456,YU_E=10000;//=========================主函数========================//main(){enter_ATM();caozuo();}//======================================================////==================================柜台机账号输入函数=======================================//void enter_ATM(){system("cls");printf("********************************\n");printf("* *\n");printf("* 欢迎使用A TM 柜台机*\n");printf("* 请输入卡号*\n");printf("* *\n");printf("* 取消确定*\n");printf("* *\n");printf("********************************\n");long int user;gotoxy(14,4);scanf("%d",&user);while(user!=123456){system("cls");printf("********************************\n");printf("* *\n");printf("* 账户不存在,请从新输入*\n");printf("* *\n");printf("* *\n");printf("* 取消确定*\n");printf("* *\n");printf("********************************\n");gotoxy(13,3);scanf("%d",&user);}input_code();}//========================================================================= =================////=======================================密码输入函数========================================//void input_code(){long int code;int temp=3,time;system("cls");printf("********************************\n");printf("* *\n");printf("* 请输入密码*\n");printf("* *\n");printf("* *\n");printf("* 取消确定*\n");printf("* *\n");printf("********************************\n");gotoxy(14,3);scanf("%d",&code);while(code!=CODE){temp--;if(temp==0){for(time=5;time>0;time--){system("cls");printf("********************************\n");printf("* *\n");printf("* 您已经3 次输入密码*\n");printf("* 系统将退出操作*\n");printf("* *\n");printf("* ");printf("%d",time);printf(" *\n");printf("* *\n");printf("********************************\n");delay();}enter_ATM();}system("cls");printf("********************************\n");printf("* *\n");printf("* 密码错误,请重新输入*\n");printf("* 您还有");printf("%d",temp);printf(" 次机会*\n");printf("* *\n");printf("* 取消确定*\n");printf("* *\n");printf("********************************\n");gotoxy(14,4);scanf("%d",&code);}caozuo();}//========================================================================= ============////============================================主操作界面函数========================================//void caozuo(){system("cls");printf("********************************\n");printf("* 请选择一下业务*\n");printf("* 1.修改密码*\n");printf("* 2.查询余额*\n");printf("* 3.取款*\n");printf("* 4.实时存款*\n");printf("* 5.退出*\n");printf("********************************\n");switch(getch()){case '1': mima(); break;case '2': yu_e(); break;case '3': qukuan(); break;case '4': cunkuan(); break;case '5': exit(); break;default:printf("error\n");}}//========================================================================= =========================////==============================密码修改函数==============================// void mima(){long int mm1,mm2,mm3;char temp;system("cls");printf("********************************\n");printf("* *\n");printf("* 旧密码: *\n");printf("* *\n");printf("* 新密码: *\n");printf("* 确认新密码: *\n");printf("* *\n");printf("********************************\n");gotoxy(15,2);scanf("%d",&mm1);gotoxy(15,4);scanf("%d",&mm2);gotoxy(15,5);scanf("%d",&mm3);if(mm1!=CODE){system("cls");printf("********************************\n"); printf("* *\n"); printf("* 旧密码错误*\n"); printf("* *\n"); printf("* 请重新输入!*\n"); printf("* *\n"); printf("* *\n"); printf("********************************\n"); delay();delay();zhuangyi();}if(mm2!=mm3){system("cls");printf("********************************\n"); printf("* *\n"); printf("* 确认密码不一致*\n"); printf("* *\n"); printf("* 请重新输入!*\n"); printf("* *\n"); printf("* *\n"); printf("********************************\n"); delay();delay();zhuangyi();}if(mm2<100000){system("cls");printf("********************************\n"); printf("* *\n"); printf("* 密码必须大于或等于6位数*\n"); printf("* *\n"); printf("* 请重新输入!*\n"); printf("* *\n"); printf("* *\n"); printf("********************************\n"); delay();delay();zhuangyi();}temp=mm2%111111;if(temp==0){system("cls");printf("********************************\n");printf("* *\n");printf("* 密码过于简单*\n");printf("* *\n");printf("* 请重新输入!*\n");printf("* *\n");printf("* *\n");printf("********************************\n");delay();delay();zhuangyi();}CODE=mm2;system("cls");printf("********************************\n");printf("* *\n");printf("* 操作成功*\n");printf("* *\n");printf("* 1.返回 2.退出*\n");printf("* *\n");printf("* *\n");printf("********************************\n");switch(getch()){case '1': caozuo(); break;case '2': exit(); break;}}//======================================================================////==========================余额查询函数============================//void yu_e(){system("cls");printf("********************************\n");printf("* *\n");printf("* *\n");printf("* 系统正在查询*\n");printf("* 请稍候... *\n");printf("* *\n");printf("* *\n");printf("********************************\n");delay();delay();system("cls");printf("********************************\n");printf("* *\n");printf("* 您的余额为*\n");printf("* *\n");printf(" ");printf("%d",YU_E);printf("\n* *\n");printf("* 1.返回 2.退出*\n");printf("********************************\n");switch(getch()){case '1': caozuo(); break;case '2': exit(); break;}}//==================================================================////===================================取款函数====================================//void qukuan(){long int temp;system("cls");printf("********************************\n");printf("* 请选择您要取款的金额*\n");printf("* 1.100 2.200 *\n");printf("* 3.500 4.800 *\n");printf("* 5.1000 6.其它*\n");printf("* *\n");printf("* 7.返回8.退出*\n");printf("********************************\n");switch(getch()){case '1': panduan(100); break;case '2': panduan(200); break;case '3': panduan(500); break;case '4': panduan(800); break;case '5': panduan(1000); break;case '6':system("cls");printf("********************************\n");printf("* *\n");printf("* 请输入您要取款的金额*\n");printf("* *\n");printf("* *\n");printf("* *\n");printf("* *\n");printf("********************************\n");gotoxy(14,4);scanf("%d",&temp);panduan(temp); break;case '7':caozuo(); break;case '8':exit(); break;}}//========================================================================= =======////======================================判断取款是否合法函数==================================//void panduan(long int z){int beishu;if(z>YU_E){system("cls");printf("********************************\n");printf("* *\n");printf("* 余额不足!*\n");printf("* 请重新操作*\n");printf("* *\n");printf("* 1.返回 2.退出*\n");printf("* *\n");printf("********************************\n");switch(getch()){case '1': qukuan();case '2': exit();}}beishu=z%100;if(beishu!=0){system("cls");delay();printf("********************************\n");printf("* 本ATM机只支持100 的人民币*\n");printf("* 请重新操作*\n");printf("* *\n");printf("* 1.返回 2.退出*\n");printf("* *\n");printf("********************************\n");switch(getch()){case '1': qukuan();case '2': exit();}}if(z==5000||z>5000){system("cls");printf("********************************\n");printf("* *\n");printf("* 每次取款不能超过5000 元*\n");printf("* 请重新操作*\n");printf("* *\n");printf("* 1.返回 2.退出*\n");printf("* *\n");printf("********************************\n");switch(getch()){case '1': qukuan();case '2': exit();}}YU_E=YU_E-z;success();}//========================================================================= =================////==============================================存款函数=============================================//void cunkuan(){long int temp;system("cls");printf("********************************\n");printf("* *\n");printf("* 请放入人民币*\n");printf("* 取消确定*\n");printf("* *\n");printf("* *\n");printf("********************************\n");gotoxy(14,3);scanf("%d",&temp);while(temp<0){system("cls");printf("********************************\n");printf("* *\n");printf("* 非法存款*\n");printf("* 请重新放入人民币*\n");printf("* *\n");printf("* 取消确定*\n");printf("* *\n");printf("********************************\n");gotoxy(14,4);scanf("%d",&temp);}YU_E=YU_E+temp;success();}//========================================================================= ========================////===================================光标位置函数=========================================//void gotoxy(int x,int y){COORD coord;coord.X=x;coord.Y=y;SetConsoleCursorPosition( GetStdHandle( STD_OUTPUT_HANDLE ), coord );}//========================================================================= ==============////===========================================简答延时函数===========================================//void delay(){int bl2;for(bl1=655356;bl1>0;bl1--){for(bl2=410;bl2>0;bl2--);}}//========================================================================= ==========================////=======================操作成功函数===========================//void success(){system("cls");printf("********************************\n");printf("* *\n");printf("* *\n");printf("* 系统正在处理*\n");printf("* 请稍候... *\n");printf("* *\n");printf("* *\n");printf("********************************\n");delay();delay();system("cls");printf("********************************\n");printf("* *\n");printf("* 操作已成功*\n");printf("* *\n");printf("* 1.返回 2.退出*\n");printf("* *\n");printf("* *\n");printf("********************************\n");switch(getch()){case '1':caozuo(); break;case '2':exit(); break;}}//==============================================================////==========================系统退出函数===========================//void exit(){printf("********************************\n");printf("* *\n");printf("* *\n");printf("* 欢迎您的再次使用*\n");printf("* 系统正在退出... *\n");printf("* *\n");printf("* *\n");printf("********************************\n");delay();delay();enter_ATM();}//================================================================////============== 简单转移函数=============//void zhuangyi(){mima();}//========================================//三、部分效果截图。