#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");
}
银行管理系统毕设(蒟蒻呕心沥血的作品)
最新推荐文章于 2026-08-19 16:11:50 发布
&spm=1001.2101.3001.5002&articleId=140010815&d=1&t=3&u=70b6d4133cc3459eba5cce02505f4464)
439

被折叠的 条评论
为什么被折叠?



