模拟银行ATM存款存取款的相关功能

模拟银行ATM存款存取款的相关功能

具体需求:

  1. 模拟.3张银行卡,1001,1002,1003,分别设置密码和余额(可以用9个变里分别保存卡号.密码和余额)
  2. 提示用户输入银行卡和密码
  3. 如果用户输入正确—提示让用户选择取款﹒存款还是退出,并提示余额多少﹔若输入错误—重新输入卡号密码;
  4. 选择取款–-~提示输入取款额度,如果超过余额,提示余额不足;否则,在余额上减掉相应金额;
  5. 选择存款—输入存款额度,余额加上相应额度,并提示余额多少;
  6. 选择退出–―退卡
  7. 限制3次输入错误账号密码,提示银行卡已被锁定

上代码

public class ATM {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner input = new Scanner(System.in);
		
		String cid1 = "1001";
		String cpassWord1 = "123456";
		double cbalance1 = 1000;
		
		String cid2 = "1002";
		String cpassWord2 = "123456";
		double cbalance2 = 1000;
		
		
		String cid3 = "1003";
		String cpassWord3 = "123456";
		double cbalance3 = 1000;
		
		
		int count = 0; //统计连续输出错误次数
		while(true) {
			System.out.println("--------------ATM-----------------");
			//登录功能
			double balance = 0;
			System.out.println("请输入账号: ");
			String id = input.next();
			System.out.println("请输入密码: ");
			String pwd = input.next();
			if(id.equals(cid1) && pwd.equals(cpassWord1)) {
				balance = cbalance1;
			}else if(id.equals(cid2) && pwd.equals(cpassWord2)) {
				balance = cbalance2;
			}else if(id.equals(cid3) && pwd.equals(cpassWord3)) {
				balance = cbalance3;
			}else {
				count++;
				if(count == 0) {
					System.out.println("您已经输入三次,账号被锁定");
				}else {
					System.out.println("您已经输入"+count+"次,还有"+(3 - count)+"次机会");
					continue;	
					
				}
			
			}
			
			count = 0; //当在3次以内输入正确后,要清零,否则下一个账号会保存上一个账号输入错误次数
			//具体业务
			while(true) {
				System.out.println("请输入要办理业务编号:1.存款 2.取款 3.退卡");
				int flag = input.nextInt();
				if(flag == 1) {
					//控制存款业务
					while(true) {
						System.out.println("您的余额"+balance+"元,请输入您要存款金额:");
						double money1 = input.nextDouble();
						if(money1 <= 0) {
							System.out.println("您输入金额有误,不能小于等于0");
							continue;
						}else {
							balance += money1;
							System.out.println("您存款"+money1+"元,您的余额"+balance+"元");
							break;	
						}

					}
					
				}else if(flag == 2) {
					//控制存款业务
					while(true) {
						System.out.println("您的余额"+balance+"元,请输入您要取款金额:");
						double money2 = input.nextDouble();
						if(money2 > balance) {
							System.out.println("您输入金额有误,不能大于等于现在余额");
							continue;
						}else {
							balance -= money2;
							System.out.println("您取款"+money2+"元,您的余额"+balance+"元");
							break;	
						}

					}
					
				}else if(flag == 3){
					break;//退卡,重新输入卡号和密码
				}else {
					System.out.println("没有此业务,请重新选择");
					continue;
				}
				
				
			}
		}
		

	}

}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的模拟银行ATM机的C语言程序,实现了单个账户的查询、存款、取款、转账和修改密码功能。程序中使用了模块化设计,将各个功能封装成了不同的函数。 ``` #include <stdio.h> #include <stdlib.h> #include <string.h> // 定义账户结构体 struct account { char username[20]; char password[20]; float balance; }; // 定义全局变量,存储当前登录账户信息 struct account curr_account; // 函数声明 void login(); void menu(); void query(); void deposit(); void withdraw(); void transfer(); void change_password(); int main() { login(); menu(); return 0; } // 登录函数 void login() { printf("请输入用户名和密码:\n"); scanf("%s %s", curr_account.username, curr_account.password); // TODO: 根据用户名和密码从数据库中查询账户信息,如果不存在或密码错误,则提示重新输入 curr_account.balance = 1000; // 假设账户初始余额为1000元 } // 菜单函数 void menu() { while (1) { printf("\n请选择您要进行的操作:\n"); printf("1. 查询余额\n"); printf("2. 存款\n"); printf("3. 取款\n"); printf("4. 转账\n"); printf("5. 修改密码\n"); printf("6. 退出\n"); int choice; scanf("%d", &choice); switch (choice) { case 1: query(); break; case 2: deposit(); break; case 3: withdraw(); break; case 4: transfer(); break; case 5: change_password(); break; case 6: printf("谢谢使用,再见!\n"); exit(0); // 退出程序 default: printf("无效的选项,请重新输入!\n"); break; } } } // 查询余额函数 void query() { printf("您的余额为%.2f元\n", curr_account.balance); } // 存款函数 void deposit() { float amount; printf("请输入存款金额:\n"); scanf("%f", &amount); if (amount <= 0) { printf("存款金额必须大于0!\n"); return; } curr_account.balance += amount; printf("存款成功!您的余额为%.2f元\n", curr_account.balance); } // 取款函数 void withdraw() { float amount; printf("请输入取款金额:\n"); scanf("%f", &amount); if (amount <= 0) { printf("取款金额必须大于0!\n"); return; } if (amount > curr_account.balance) { printf("余额不足,取款失败!\n"); return; } curr_account.balance -= amount; printf("取款成功!您的余额为%.2f元\n", curr_account.balance); } // 转账函数 void transfer() { char target_username[20]; float amount; printf("请输入对方用户名和转账金额:\n"); scanf("%s %f", target_username, &amount); if (strcmp(target_username, curr_account.username) == 0) { printf("不能给自己转账!\n"); return; } if (amount <= 0) { printf("转账金额必须大于0!\n"); return; } if (amount > curr_account.balance) { printf("余额不足,转账失败!\n"); return; } // TODO: 根据目标用户名从数据库中查询账户信息,如果不存在,则提示重新输入 curr_account.balance -= amount; printf("转账成功!您的余额为%.2f元\n", curr_account.balance); } // 修改密码函数 void change_password() { char new_password[20]; printf("请输入新密码:\n"); scanf("%s", new_password); // TODO: 将新密码更新到数据库中 strcpy(curr_account.password, new_password); printf("密码修改成功!\n"); } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值