ATM的具体功能实现

一:项目基本功能:

主功能页面:

  1. 用户注册:
  2. 用户登录:
  3. 取钱功能:
  4. 存钱功能:
  5. 收支明细:
  6. 查询余额:
  7. 计算器(实现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;
		}
	
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值