银行管理系统毕设(蒟蒻呕心沥血的作品)

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define N 110 
#include<conio.h>
void Flag1();
void set(); //设置
void initialization(); //初始
void clear_buff();
int i,k;	//结构体查找
void check();
void rid(); //录入数据
void Page1();
void date();
void Flag2();
void Page2();
void Deposit(); //存款
void DrawMoney();
void transfer_accounts(); //转账
void Change_Password();
struct account {
	char idcard[10];
	char password[7];
	double balance;
} a[N];
int main() {
	initialization();
	Flag1();
	return 0;
}
void Flag1() {
	int c = 0;
	do {
		Page1();
		scanf("%d", &c);
		clear_buff();
		switch (c) {
		case 1:
			set();
			break;
		case 2:
			check();
			if (i != 100)
				Flag2();
			break;
		case 3:
			break;
		default:printf("\n\n\n\t\t您输入的数据不符合要求!!!\n\n\n\n\n");
			system("pause");
		}
	} while (c != 3);
}
void Page1() {
	system("cls");
	date();
	printf("\n#################################################################################\n");
	printf("\n▓                          *		模拟ATM系统		  *                           ▓\n");
	printf("\n#################################################################################\n");
	printf("\n          ◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆\n");
	printf("          |◆|******|◆|										|◆|******|◆|\n");
	printf("          |◆|******|◆|		☆ 设置			请按 1			|◆|******|◆|\n");
	printf("          |◆|******|◆|		☆ 登录系统		请按 2			|◆|******|◆|\n");
	printf("          |◆|******|◆|		☆ 退出			请按 3			|◆|******|◆|\n");
	printf("          |◆|******|◆|										|◆|******|◆|\n");
	printf("          ◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆\n");
	printf("\n#################################################################################\n");
}
void Flag2() {
	int c;//选择功能的变量
	do {
		rid();
		Page2();
		scanf("%d", &c);
		clear_buff();
		switch (c) {
		case 1: { system("cls");
			Deposit();
			break;//存款
		}
		case 2: system("cls");
			DrawMoney();
			break;//取款

			case 3: 
				system("cls");//查询业务
				printf("余额为%lf元\n", a[i].balance);
				system("pause");
				break;
		
			case 4: system("cls");
				transfer_accounts(); 
				break;//转账

			case 5: system("cls"); 
				Change_Password();

				break;//密码修改

			
		case 6: break;
		default:printf("您输入的选择有误,请输入正确的选项:");
		}
	} while ( c != 6);
}
void Page2() {
	system("cls");//清屏
	date();
	printf("\n#################################################################################\n");
	printf("\n▓                               * 欢迎使用  *                                 ▓\n");
	printf("\n#################################################################################\n");
	printf("\n          ◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆\n");
	printf("          |◆|******|◆|        ☆ 存款业务       请按 1        |◆|******|◆|\n");
	printf("          |◆|******|◆|        ☆ 取款业务       请按 2        |◆|******|◆|\n");
	printf("          |◆|******|◆|        ☆ 查询业务       请按 3        |◆|******|◆|\n");
	printf("          |◆|******|◆|        ☆ 转账业务       请按 4        |◆|******|◆|\n");
	printf("          |◆|******|◆|        ☆ 修改密码       请按 5        |◆|******|◆|\n");
	printf("          |◆|******|◆|        ☆ 退出系统       请按 6        |◆|******|◆|\n");
	printf("          |◆|******|◆|                                        |◆|******|◆|\n");
	printf("          ◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆\n");
	printf("\n#################################################################################\n");
	printf("\n▓                          *******************************                    ▓\n");
	printf("\n#################################################################################\n");
	printf("\n\n\t\t##请输入你的选择:");
}
void set() {
	FILE* fp = fopen("bank.txt", "r");
	FILE* ffp = fopen("bank.txt", "a");
	system("cls");
	for (i = 1; i < 100; i++)
		fscanf(fp, "%s\t%s\t%lf\n", &a[i].idcard, &a[i].password, &a[i].balance);
	do {
		printf("\n请输入您的卡号(六位):");
		fgets(a[0].idcard, sizeof(a[0].idcard), stdin);
		a[0].idcard[strlen(a[0].idcard) - 1] = '\0';
		int tmp = strlen(a[0].idcard);
		if (strlen(a[0].idcard) != 6) {
			printf("\n输入卡号错误,请重新输入");
		}
		for (i = 1; i < 100; i++)
			if (strcmp(a[i].idcard, a[0].idcard) == 0) {
				printf("\n您输入的卡号已存在,请重新输入");
				break;
			}
	} while ( strlen(a[0].idcard) != 6 || i != 100);
	printf("\n请输入密码(六位)");
	for (int j = 0; j < 6; j++){
		a[0].password[j] = getch();
		printf("*");
	}
	a[0].balance = 0;
	fprintf(ffp, "%s\t%s\t%lf\n", a[0].idcard, a[0].password, a[0].balance);
	printf("\n开户成功\n");
	system("pause");
	fclose(ffp);
	fclose(fp);
}
void check() {
	rid();
	system("cls");
	int time = 3;
	do {
		printf("\n请输入您的卡号:");
		fgets(a[0].idcard, sizeof(a[0].idcard), stdin);
		a[0].idcard[strlen(a[0].idcard) - 1] = '\0';
		printf("\n请输入密码(六位)");
		for (int j = 0; j < 6; j++) {
			a[0].password[j] = getch();
			printf("*");
		}
		for (i = 1; i < 100; i++) {
			if (strcmp(a[i].idcard, a[0].idcard) == 0 && strcmp(a[i].password, a[0].password) == 0)
				break;
		}
		if (i == 100) {
			time--;
			printf("\n您输入账号或密码错误,剩余%d次机会重新输入\n", time);
		}
	} while (time != 0 && i == 100);
}
void initialization() {
	FILE* fp = fopen("bank.txt", "r");
	if (fp == NULL) {
		FILE* ffp = fopen("bank.txt", "w");
		fclose(ffp);
	}
	else fclose(fp);
}
void clear_buff() {
	char ch;
	while ((ch = getchar()) != '\n' && ch != EOF) {
		// 什么都不做,只是继续读取字符直到遇到换行符或文件结束符  
	}
}
void rid() {
	FILE* fp = fopen("bank.txt", "r");
	for (int j = 1; j < 100; j ++) {
		fscanf(fp,"%s\t%s\t%lf\n", &a[j].idcard, &a[j].password, &a[j].balance);
	}
	fclose(fp);
}
void date() { //显示当前日期
		printf("当前日期:");
		system("date/t");
		printf("当前时间:");
		system("time/t");
}
void Deposit() {
	system("cls");
	printf("\n\n");
	printf("\t\t||================================================================||\n");
	printf("\t\t||                           *存款金额*                           ||\n");
	printf("\t\t||================================================================||\n");
	printf("\t\t||                                                                ||\n");
	printf("\t\t||                                                                ||\n");
	printf("\t\t||         1、200        2、400        3、600        4、800       ||\n");
	printf("\t\t||                                                                ||\n");
	printf("\t\t||                                                                ||\n");
	printf("\t\t||         5、1000        6、2000        7、4000        8、自定义  ||\n");
	printf("\t\t||                                                                ||\n");
	printf("\t\t||================================================================||\n");
	printf("\t\t||================================================================||\n");
	printf("\n\n\t\t\t请输入你的存款金额:");
	int d;
	scanf("%d", &d);
	clear_buff();
	switch (d) {
		double jin;
	case 1: {jin = 200;
		printf("\t\t\t存款%lf元", jin);
		printf("\n\n\n\t\t\t^^^^存款成功^^^^");
		a[i].balance += jin;
		if (a[i].balance < 0) {
			printf("\n您的余额不足\n");
			break;
		}
		printf("\n\n\t\t\t$您的余额为:%lf", a[i].balance);
		break;
	}
	case 2: {jin = 400;
		printf("\t\t\t存款%lf元", jin);
		printf("\n\n\n\t\t\t^^^^存款成功^^^^");
		a[i].balance += jin;
		printf("\n\n\t\t\t$您的余额为:%lf", a[i].balance);
		break;
	}
	case 3: {
		jin = 600;
		printf("\t\t\t存款%lf元", jin);
		printf("\n\n\n\t\t\t^^^^存款成功^^^^");
		a[i].balance += jin;
		printf("\n\n\t\t\t$您的余额为:%lf", a[i].balance);
		break;
	}
	case 4: {
		jin = 800;
		printf("\t\t\t存款%lf元", jin);
		printf("\n\n\n\t\t\t^^^^存款成功^^^^");
		a[i].balance += jin;
		printf("\n\n\t\t\t$您的余额为:%lf", a[i].balance);
		break;
	}
	case 5: {jin = 1000;
		printf("\t\t\t存款%lf元", jin);
		printf("\n\n\n\t\t\t^^^^存款成功^^^^");
		a[i].balance += jin;
		printf("\n\n\t\t\t$您的余额为:%lf", a[i].balance);
		break;
	}
	case 6: {jin = 2000;
		printf("\t\t\t存款%lf元", jin);
		printf("\n\n\n\t\t\t^^^^存款成功^^^^");
		a[i].balance += jin;
		printf("\n\n\t\t\t$您的余额为:%lf", a[i].balance);
		break;
	}
	case 7: {
		jin = 4000;
		printf("\t\t\t存款%lf元", jin);
		printf("\n\n\n\t\t\t^^^^存款成功^^^^");
		a[i].balance += jin;
		printf("\n\n\t\t\t$您的余额为:%lf", a[i].balance);
		break;
	}
	case 8: {
		printf("\n请输入存款金额:");
		scanf("%lf", &jin);
		clear_buff();
		printf("\t\t\t存款%lf元", jin);
		printf("\n\n\n\t\t\t^^^^存款成功^^^^");
		a[i].balance += jin;
		printf("\n\n\t\t\t$您的余额为:%lf", a[i].balance);
		break;
	}
	default:printf("\n\n\n\t\t\t您的选择不在服务范围内!!!\n\n\n\t\t\t请重新选择业务:");
	}
	FILE* ffp = fopen("bank.txt", "w");
	for (int j = 1; j < 100; j++) {
		if (strlen(a[j].idcard) == 0)
			break;
		fprintf(ffp, "%s\t%s\t%lf\n", a[j].idcard, a[j].password, a[j].balance);
	}
	fclose(ffp);
	system("pause");
}
void DrawMoney() {
	system("cls");
	printf("\n\n");
	printf("\t\t||================================================================||\n");
	printf("\t\t||                           *取款金额*                           ||\n");
	printf("\t\t||================================================================||\n");
	printf("\t\t||                                                                ||\n");
	printf("\t\t||                                                                ||\n");
	printf("\t\t||         1、200        2、400        3、600        4、800       ||\n");
	printf("\t\t||                                                                ||\n");
	printf("\t\t||                                                                ||\n");
	printf("\t\t||         5、1000        6、2000        7、4000        8、自定义  ||\n");
	printf("\t\t||                                                                ||\n");
	printf("\t\t||================================================================||\n");
	printf("\t\t||================================================================||\n");
	printf("\n\n\t\t\t请输入你的取款金额:");
	int e;
	scanf("%d", &e);
	clear_buff();
	switch (e) {
		double jin;
	case 1: {jin = 200;
		printf("\t\t\t取款%lf元", jin);
		if ((a[i].balance - jin) < 0) {
			printf("\n余额不足\n");
			break;
		}
		a[i].balance -= jin;
		printf("\n\n\n\t\t\t^^^^取款成功^^^^");
		printf("\n\n\t\t\t$您的余额为:%lf", a[i].balance);
		break;
	}
	case 2: {jin = 400;
		printf("\t\t\t取款%lf元", jin);
		if ((a[i].balance - jin) < 0) {
			printf("\n余额不足\n");
			break;
		}
		a[i].balance -= jin;
		printf("\n\n\n\t\t\t^^^^取款成功^^^^");
		printf("\n\n\t\t\t$您的余额为:%lf", a[i].balance);
		break;
	}
	case 3: {
		jin = 600;
		printf("\t\t\t取款%lf元", jin);
		if ((a[i].balance - jin) < 0) {
			printf("\n余额不足\n");
			break;
		}
		printf("\n\n\n\t\t\t^^^^取款成功^^^^");
		a[i].balance -= jin;
		printf("\n\n\t\t\t$您的余额为:%lf", a[i].balance);
		break;
	}
	case 4: {
		jin = 800;
		printf("\t\t\t取款%lf元", jin);
		if ((a[i].balance - jin) < 0) {
			printf("\n余额不足\n");
			break;
		}
		printf("\n\n\n\t\t\t^^^^取款成功^^^^");
		a[i].balance -= jin;
		printf("\n\n\t\t\t$您的余额为:%lf", a[i].balance);
		break;
	}
	case 5: {jin = 1000;
		printf("\t\t\t取款%lf元", jin);
		if ((a[i].balance - jin) < 0) {
			printf("\n余额不足\n");
			break;
		}
		printf("\n\n\n\t\t\t^^^^取款成功^^^^");
		a[i].balance -= jin;
		printf("\n\n\t\t\t$您的余额为:%lf", a[i].balance);
		break;
	}
	case 6: {jin = 2000;
		printf("\t\t\t取款%lf元", jin);
		if ((a[i].balance - jin) < 0) {
			printf("\n余额不足\n");
			break;
		}
		printf("\n\n\n\t\t\t^^^^取款成功^^^^");
		a[i].balance -= jin;
		printf("\n\n\t\t\t$您的余额为:%lf", a[i].balance);
		break;
	}
	case 7: {
		jin = 4000;
		printf("\t\t\t取款%lf元", jin);
		if ((a[i].balance - jin) < 0) {
			printf("\n余额不足\n");
			break;
		}
		printf("\n\n\n\t\t\t^^^^取款成功^^^^");
		a[i].balance -= jin;
		printf("\n\n\t\t\t$您的余额为:%lf", a[i].balance);
		break;
	}
	case 8: {
		printf("\n请输入取款金额:");
		scanf("%lf", &jin);
		clear_buff();
		if ((a[i].balance - jin) < 0) {
			printf("\n余额不足\n");
			break;
		}
		printf("\t\t\t取款%lf元", jin);
		printf("\n\n\n\t\t\t^^^^取款成功^^^^");
		a[i].balance -= jin;
		printf("\n\n\t\t\t$您的余额为:%lf", a[i].balance);
		break;
	}
	default:printf("\n\n\n\t\t\t您的选择不在服务范围内!!!\n\n\n\t\t\t请重新选择业务:");
	}

	FILE* ffp = fopen("bank.txt", "w");
	for (int j = 1; j < 100; j++) {
		if (strlen(a[j].idcard) == 0)
			break;
		fprintf(ffp, "%s\t%s\t%lf\n", a[j].idcard, a[j].password, a[j].balance);
	}
	fclose(ffp);
	system("pause");
}
void transfer_accounts() {
	printf("请输入要转账的卡号:");
	fgets(a[0].idcard, sizeof(a[0].idcard), stdin);
	a[0].idcard[strlen(a[0].idcard) - 1] = '\0';
	for (k = 1; k < 100; k++)
		if (strcmp(a[k].idcard, a[0].idcard) == 0)
			break;
	if (k == 100) 
		printf("\n此账号不存在");
	else {
		printf("\n请输入要转的金额:");
		double jin;
		scanf("%lf", &jin);
		clear_buff();
		if ((a[i].balance - jin) < 0) {
			printf("\n余额不足\n");
		} else{
		a[k].balance += jin;
		a[i].balance -= jin;
		printf("\n转账成功\n");
			}
	}
	FILE* ffp = fopen("bank.txt", "w");
	for (int j = 1; j < 100; j++) {
		if (strlen(a[j].idcard) == 0)
			break;
		fprintf(ffp, "%s\t%s\t%lf\n", a[j].idcard, a[j].password, a[j].balance);
	}
	fclose(ffp);
	
	system("pause");
}
void Change_Password() {
	printf("请输入新的密码(六位):");
	for (int j = 0; j < 6; j++) {
		a[i].password[j] = getch();
		printf("*");
	}
	FILE* ffp = fopen("bank.txt", "w");
	for (int j = 1; j < 100; j++) {
		if (strlen(a[j].idcard) == 0)
			break;
		fprintf(ffp, "%s\t%s\t%lf\n", a[j].idcard, a[j].password, a[j].balance);
	}
	fclose(ffp);
	printf("\n修改成功\n");
	system("pause");
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值