概述
//======================================================
//项目名称:ATM用户界面
//环境:vs2019,easy x图形库
//作者:jack shi
//开始时间:2019.6.3
//完成时间:2019.6.20
//======================================================
//======================================================
#include <graphics.h>
#include <conio.h>//_kbhit()函数(重点:不会清空缓冲区)、getch()函数
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <windows.h>//sleep()头文件
#include "页面绘制.h"
#define MAX 10//该银行系统能读取用户的最多条数
//==================================================
int c;//用户结构体变量下标
int count = 0;//读入用户条数
extern FILE* fp;
char filename[] = "123.txt"; //文件路径
typedef struct user
{
char id[20];
char name[20];//一个汉字为2个字节
char password[7];//需用字符串存放密码,若用int,则002022为2022
char money[20];
}AC;
AC a[MAX];
//函数声明=========================================
void system_ready(FILE* fp);//读取用户文件
int system();
int login();
int moneyadd();
int moneycut();
int moneytransfer();
int moneysee();
int passwordreset();
int findid(char* id_);//查找id
void update(FILE* fp);//用户文件写入
AC typeChang(char* ch);
void gbiao(int x, int y);//绘制光标
void check(int t,int flog);//判断功能函数执行状态,从而确定下一步操作。
int main()
{
errno_t fp_p;//接收fopen_返回值
fp_p= fopen_s(&fp,filename, "r+");
if (fp_p!=0)
{
puts("文件打开失败");
printf("%d",fp_p);//打印fopen_s返回值
exit(0);
}
system_ready(fp);//系统初始化
/*-----------------------------------------------------
for(p=0;p<count;p++)//在控制台打印改变前的用户信息
{
printf("%sn",a[p].id);
printf("%sn",a[p].name);
printf("%sn",a[p].password);
printf("%fn",a[p].money);
}
-------------------------------------------------------*/
if (login() == 1)
system();
/*-----------------------------------------------------
for(p=0;p<count;p++)//在控制台打印改变后的用户信息
{
printf("%sn",a[p].id);
printf("%sn",a[p].name);
printf("%sn",a[p].password);
printf("%fn",a[p].money);
}
-------------------------------------------------------*/
update(fp);//更新用户信息
fclose(fp);
closegraph();
return 0;
}
void check(int t,int function)//1取款、2存款、3转账、4改密码//t接收1代表对应的功能函数执行成功,相反t接收0执行失败.int flog确定是何种功能函数
{
if (t == 1)
T(function);
else
F(function);
}
void gbiao(int x, int y)
{
while (!_kbhit())//判断是否有键盘事键,若无,光标闪烁
{
setlinecolor(RGB(0, 0, 0));
setlinestyle(PS_SOLID | PS_ENDCAP_SQUARE, 1);
//setrop2(R2_XORPEN); //设置异或绘图方式
line(x, y, x, y + 20);
Sleep(400);
setlinecolor(WHITE);
line(x, y, x, y + 20);
Sleep(400);
}
}
int findid(char* id_)
{
int i;
for (i = 0; i < count; i++)
{
if (strcmp(a[i].id, id_) == 0)
return i;
}
return -1;
}
int passwordreset()
{
int i, x = 312, y = 165;
char ch_p;
char xh[20];
static char password_s[7], password_1[7], password_2[7];
RECT r_1 = { 310,160,475,190 };//输入原密码区域
RECT r_2 = { 310,210,475,240 };//输入新密码区域
RECT r_3 = { 310,260,475,290 };//再次输入新密码区域
graph_draw(5);
i = 0;
setfillcolor(BLUE);
while (i < 6)//密码长度6位
{
gbiao(x, y);
ch_p = _getch();
if (ch_p >= '0' && ch_p <= '9')//密码的输入只能为数字
{
password_s[i] = ch_p;
xh[i] = '*';
password_s[i + 1] = '