#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <conio.h>
#define ZHANGHUSHU 100000000 // 银行管理系统存储最多账号数量
// 定义账户的结构体数据类型
struct Zhanghu
{
char zhanghao[16]; // 用户账号
char xingming[9]; // 用户姓名
char mima[7]; // 账户密码
char shenfenzheng[19]; // 用户身份证号码
float yue; // 账户余额
char kaihushijian[50]; // 开户时间
};
// 定义交易记录的结构体数据类型
typedef struct
{
char zhanghao[10]; // 交易账号
char jiaoyishijian[50]; // 交易时间
char leixing[5]; // 交易类型
float jiaoyijine; // 交易金额
float jiaoyiyue; // 交易后的余额
char duifangzhanghao[16]; // 交易时的对方账号
}Jiaoyi;
// 定义账户结构体数组,可以注册1000
struct Zhanghu zhanghu[1000];
// 账户序号 交易序号 当前登录的账户下标 转账时对方的账户下标
int zhanghuxuhao = 0, jiaoyixuhao = 0, dangqianxiabiao = 0, duifangzhanghuxiabiao=0;
// 定义交易记录的结构体数组,可以存储10000条交易记录
Jiaoyi jiaoyi[10000];
int menu(); // 主菜单函数
void zhuce(); // 注册函数
void main()
{
system("color 2F");
printf("\n\n\n\n\t\t\t◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇\n");
printf("\t\t\t◇ ◇\n");
printf("\t\t\t◇ 欢迎使用人民银行ATM终端系统 ◇\n");
printf("\t\t\t◇ ◇\n");
printf("\t\t\t◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇\n");
printf("\t\t\t◇ 2017年08月12日 ◇\n");
printf("\t\t\t◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇\n");
printf("\t\t\t");
system("pause"); // 暂停功能
system("CLS"); // 清屏
while (1)
{
switch (menu())
{
case 1: // 调用注册模块
zhuce();
printf("\t\t\t");
break;
case 2:
break;
case 3:
break;
case 4:
break;
case 0:
printf("\t\t\t感谢使用人民银行ATM终端管理系统!\n");
printf("\t\t\t");
system("pause");
exit(0);
}
}
}
int menu()
{
char c;
do
{
system("CLS"); // 每次选择执行之前清屏
printf("\n\n\n\n\t\t\t□□□□□□□□□□□□□□□□□□□□□□□□\n");
printf("\t\t\t□ □\n");
printf("\t\t\t□ 人民银行ATM终端管理系统 □\n");
printf("\t\t\t□ □\n");
printf("\t\t\t□□□□□□□□□□□□□□□□□□□□□□□□\n");
printf("\t\t\t□ □\n");
printf("\t\t\t□ 1.注册账号 2.登录系统 □\n");
printf("\t\t\t□ □\n");
printf("\t\t\t□ 3.导入数据 4.存储数据 □\n");
printf("\t\t\t□ □\n");
printf("\t\t\t□ 0.退出系统 □\n");
printf("\t\t\t□ □\n");
printf("\t\t\t□□□□□□□□□□□□□□□□□□□□□□□□\n");
printf("\t\t\t请选择【0-4】:");
c = getchar();
} while (c<'0' || c>'4');
return (c - '0');
}
void zhuce()
{
int baiwei, shiwei, gewei, len; // 定义账号最后三位数字
char mima2[7]; // 注册时密码需要输入两次
char t[30]; // 开户时间
int i=0, j = 0;
time_t rawtime;
struct tm *timeinfo;
time(&rawtime); // 调用时间函数取得开户时间
timeinfo = localtime(&rawtime);
strcpy(t, asctime(timeinfo));
for (i = 0; i < strlen(t); i++)
{
if (t[i] == '\n')
{
t[i] = '\0';
break;
}
// 银行账户前12位数字是固定
strcpy(zhanghu[zhanghuxuhao].zhanghao, "201708126688");
baiwei = zhanghuxuhao / 100;
shiwei = zhanghuxuhao / 10 % 10;
gewei = zhanghuxuhao % 10;
zhanghu[zhanghuxuhao].zhanghao[12] = baiwei + '0';
zhanghu[zhanghuxuhao].zhanghao[13] = shiwei + '0';
zhanghu[zhanghuxuhao].zhanghao[14] = gewei + '0';
zhanghu[zhanghuxuhao].zhanghao[15] = '\0';
system("CLS");
printf("\n\n\n\n\t\t\t□□□□□□□□□□□□□□□□□□□□□□□□\n");
printf("\t\t\t□ □\n");
printf("\t\t\t□ ATM终端系统注册功能模块 □\n");
printf("\t\t\t□ □\n");
printf("\t\t\t□□□□□□□□□□□□□□□□□□□□□□□□\n");
// 用户自己输入账号的姓名
printf("\t\t\t请输入账号姓名:");
fflush(stdin); // 消耗输入字符后的回车操作
scanf("%s", zhanghu[zhanghuxuhao].xingming);
// 用户输入密码
do
{
printf("\t\t\t请输入账号密码:");
fflush(stdin); // 消耗输入字符后的回车操作
scanf("%s", zhanghu[zhanghuxuhao].mima);
len = strlen(zhanghu[zhanghuxuhao].mima);
if (len != 6)
{
printf("\t\t\t银行账号密码必须是6个数字.\n");
system("pause");
return;
}
// 此处用户字符串长度函数进行判断密码的位数
printf("\t\t\t请确认账号密码:");
fflush(stdin);
scanf("%s", mima2);
// 判断密码是否一致
if (strcmp(zhanghu[zhanghuxuhao].mima, mima2) != 0)
{
j++;
printf("\t\t\t密码错误,你还有%d次机会\n",3-j);
}
// 密码输入超过三次自动退出
if (j == 3)
{
system("pause");
return;
}
} while (strcmp(zhanghu[zhanghuxuhao].mima, mima2) != 0);
// 输入身份证号码
do
{
printf("\t\t\t请输入身份证号码:");
fflush(stdin);
scanf("%s", zhanghu[zhanghuxuhao].shenfenzheng);
len = strlen(zhanghu[zhanghuxuhao].shenfenzheng);
if (len != 18)
{
printf("身份证号码错误,请输入18个字符.\n");
}
else /* 110001201708086611或 11000120170808661X*/
{
}
} while (len != 18);
getch();
}
}