一:项目基本功能:
主功能页面:
- 用户注册:
- 用户登录:
- 取钱功能:
- 存钱功能:
- 收支明细:
- 查询余额:
- 计算器(实现1-50位数据的加减法)
A. 用户注册要求:
卡号:由用户自己输入,要求全部为0-9数字至少10位,最高13位
密码:必须包含:数字、字母、下划线,且倒数第三位必须是‘@’字符
可以注册多个用户,而且用户名不能重复注册
B. 用户根据用户名密码进行登录。如果三次密码错误,冻结一天。
C. 取钱功能
用户可以选择
1、100
2、200
3、300
4、400
5、500
6、1000
7、其他金额输入金额
0 、返回上一层
D. 存钱
用户可以输入金额点存入,那么余额自动加上存入的钱
E. 查看收支明细
用户点此功能自动显示存取款的明细表,要求显示:日期时间、以及存钱或者取钱
每页显示5条,要求可以翻页显示:
F. 查看余额
显示用户的余额
G. 计算器
要求能支持最高50位数的加减。
备注:所有用户名、密码、余额可存放在一个文件中。每个用户名下的收支明细为单独一个文件。
二:代码具体实现:
1.头文件,结构体
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<time.h>
#include<windows.h>
#define M 55 //定义了数量M是100作为数组初始化的数量
struct Customer//用户------------------------------------------------------------------------
{
char account[100];
char pwd[100];
float money;
struct Customer *next;
};
struct DealDetail//账单明细-------------------------------------------------------------------
{
char account[100];
char date[20];
char deal_time[20];
float money;
struct DealDetail *next;
};
2.具体功能的实现:
//主菜单----------------------------------------------------------------------------
void menu()
{
printf("\t\t欢迎进入ATM系统!\n");
printf("\t1、用户注册:\n");
printf("\t2、用户登录:\n");
printf("\t3、取钱功能:\n");
printf("\t4、存钱功能:\n");
printf("\t5、收支明细:\n");
printf("\t6、查询余额:\n");
printf("\t7、计算器: \n");
printf("\t8、0退出系统 \n");
}
//注册时,保存文件,文件内容是账号,密码 --------------------------------------------
int saveAccountToFile(char acc[100],char pwd[100])
{
FILE *fp;
fp=fopen(“d:\account.txt”,“a”);//追加文件
if(fp!=NULL)
{
fprintf(fp,"%s\t%s\t0.0\n",acc,pwd);//0.0是money
fclose(fp);
}
}
//账号查重---------------------------------------------------------------------------
int checkAccount(char account[100])
{
FILE *fp;
char fAccount[100],fpassword[100];
float fmoney;
int duplicate_error=0;
fp=fopen("d:\\account.txt","r");
if(fp!=NULL)
{
while(1)
{
memset(fAccount,'\0',sizeof(fAccount));
fscanf(fp,"%s%s%f",fAccount,fpassword,&fmoney);
if(strlen(fAccount)==0)
{
break;
}
if(strcmp(fAccount,account)==0)
{
duplicate_error=1;//返回值是1,账号重复
break;
}
}
fclose(fp);
}
return duplicate_error;
}
//注册-----------------------------------------------------------------------
void register_account()
{
char account[100],password[100];
int i,len;
int digit=0,alpha=0,xhx=0;//数字,字母,下划线
int pd;//判断是不是有账号重复
while(1)
{
printf("请输入账号(账号必须为数字0~9):");
scanf("%s",account);
printf("请输入密码:");
scanf("%s",password);
len=strlen(account);
if(len<10 || len>13)
{
printf("账号长度违规\n");
continue;
}
for(i=0;i<len;i++)
{
if(account[i]<'0' || account[i]>'9')
{
break;
}