C语言ATM终端机模拟系统

#include 
#include 
#include 
#include 
#include 
#include 
#define N 20
void Initial();				//初始化界面
void BuildUser();			 //管理员新建用户
int UserLogin();				//用户登陆界面
void AdminLogin();				//管理员登陆界面
void Menu(int n);			  //主界菜单
void ChangePassword();			   //密码修改
typedef struct User			      //用户数据结构体
{
    char UserID[N];              //用户ID
    char Name[N];                  //姓名
    char UserPassword[N];		   //用户密码
	float money;				      //用户当前余额
	char time[N];					  //用户最后一次使用系统时间
}USERDATA;
typedef struct D				  //用户操作日志结构体
{
	char id[N];
	char o;
	char money;
	char balance;
	char tim[N];
}PDATA;
float MoneySave(struct User *p);				//存款函数
float DrawMoney(struct User *p);				//取款函数
float Trans(struct User *p);					//转账函数
void Balance();									//查看余额
USERDATA userdata[500];
int main()
{
    system("cls");						//清屏
	system("title ATM终端模拟系统");
	system("color 0b");
	Initial();
	//printf("调试");
	return 0;
}

void Initial()
{
	system("cls");
	int a,ret,b;
	do{                      //错误输入非1或2,重新输入

	printf("\n\n\n                                                \n");
	printf("                          欢迎使用 ATM 终端服务系统\n\n");
	printf("                -------------------------------------------------    \n\n");
	printf("                   请输入您的选择 :\n\n");
	printf("                -------------------------------------------------   \n\n");
	//printf("        _________________________________________________\n");
	printf("                                1 用户登录                   \n\n\n");
	//printf("        _________________________________________________\n");
	printf("                                2 前台服务                   \n\n\n");
	printf("                                3 退出系统                   \n\n\n");
	printf("                -------------------------------------------------\n");
	printf("\t\t\t\t\t\t\t");
	system("date /t");
	printf("\t\t\t\t\t\t\t");
	system("time  /t");
	do{                     //实现检错,错误输入重新输
	   //printf("                      重新输入您的选择 :\n");
	   printf("                ------------");
	   scanf("%d",&a);
	   switch(a)             //初始选项 非1,2重新输入。
	   {
	    case 1: b=1;break;
		case 2: b=1;break;
		case 3: exit(0);break;
		default:
		    printf("                                    ");
		    printf("错误输入,请重试。\n");break;
	   }
	   getchar();
	}while(b!=1);
	if(a==1)
	{
		ret=UserLogin();            //用户登录
		Menu(ret);					//菜单
        ret=1;
	}
	else if(a==2)
	{
		system("cls");        //清屏
        AdminLogin();
        ret=1;
	}
	}while(ret!=1);
}
int UserLogin()
{
	char a[N],b[N];
	FILE *fp;

		if((fp=fopen("iddata.txt","a+"))==NULL)    //打开文件
	{
		printf("打开失败\n");
		exit(0);
	}
	int i=0,j,k=0,s;
	do{
		 fscanf(fp,"%s%s%s%f",&userdata[i].Name,&userdata[i].UserID,&userdata[i].UserPassword,&userdata[i].money);//将文件中的数据读入内存
		 i++;
	}while(!feof(fp));						//判断是否到文件结尾
	fclose(fp);								//关闭文件
	system("cls");
	printf("\n\n\n\n\n                   请输入用户账号:");
	//printf("                                    ");
    gets(a);
    printf("\n\n                   请输入用户密码:");
    //printf("                                    ");
    gets(b);
	for(j=0;jmoney+=money;
	printf("\t\t\t");
	printf("成功存入%.2f元,请按任意返回继续操作。\n",money);
	printf("                                    ");
	getch();
	return money;
}
float DrawMoney(struct User *p)
{
	float money;
	int s=0;
	printf("\n\t\t\t请输入您的取款金额:");  //取款
	do{
		scanf("%f",&money);
		if(money>p->money)
		{
			printf("\n\t\t\t您卡里没有辣么多钱了\n");
			printf("\n\t\t\t按任意键返回,查询余额。");
			getch();
			return 0;
		}
		if(money>2500)
		{
            printf("\n\t\t\t一次最多可以取2500元,请重新输入取款金额:");//一次最多不能取超过2500元
		}
		if((int)money%50!=0)
		{
			printf("\n\t\t\t只能取出面值为50或100的RMB。\n\n\t\t\t请再次输入您的取款金额:");
		}
	}while(money>2500||(int)money%50!=0);
	p->money-=money;
	printf("\n\t\t\t成功取出%.2f元。请按任意键返回上层。\n",money);
	getch();
	return -money;
}
float Trans(struct User *p)
{
	FILE *fp;
	char a[N];
	float money;
	printf("\n\t\t\t请输入您要转账的同行账户:");
re:
	scanf(" %s",a);
	char path[30]="G:\\1\\ATM\\private_record\\",suffix[]=".txt";
    strcat(path,a);
    strcat(path,suffix);
	if((fp=fopen(path,"r+"))==NULL)
	{
	    fp=fopen(path,"w+");
	    printf("\n\t\t\t该账户不存在,请重新输入转账账户:");
		goto re;
	}
	else
	{
		printf("\n\t\t\t请输入转账金额:");
		scanf("%f",&money);
		while(money>p->money||money<=0)
		{
			if(money>p->money)
            {
			printf("\n\t\t\t您卡里没有辣么多钱了\n");
			printf("\n\t\t\t请先按键查询余额后重新确认转账金额。");
			printf("\t\t   ");
			getch();return 0;
			break;
            }
		}
		p->money-=money;
		printf("\n\t\t\t成功转入目标账户%.2f元,按任意键返回上层\n",money);
		fclose(fp);
		printf("                                    ");
		getch();
		return -money;
	}
}
void ChangePassword()
{
	char str1[7],str2[7];
	do{
		printf("\n\t\t\t请输入新的密码,密码为6位:");
		scanf("%s",str1);
		printf("\n\t\t\t请再输入一次:");
		scanf("%s",str2);
		if(strcmp(str1,str2)!=0)
        {
            printf("\n\t\t\t你输入的密码有误,请重新输入一遍:");
        }

	}while(strcmp(str1,str2)!=0);
	printf("\n\t\t\t密码修改成功,请选择其他操作。");
	getch();
}




















你可能感兴趣的:(C语言,ATM终端机模拟系统,实训,文件操作)