C语言编写的自动取款机模拟程序
#include〈stdio。h>
#include<string。h>
#include <stdio.h>
#include〈stdlib.h〉
#include〈direct.h〉
#include<io.h>
#include 〈errno。h>
/********************************************************************************
作者 : 万水千山总是情
QQ : 824955445
时间 : 2014/4/29
功能: : 模拟自动取款机
test : 结构体的运用,文件的读取和写入操作
备注 : 尽量考虑到了各种错误,但是一定有所疏忽,对于错误的处理并不是都感到满意。因为只是模拟
对于某些输入内容没有过于严格的进行检验.
暂时:实现功能如下:
1。用户帐号注册和登录
2.取款,存款,转账,更改密码,余额查询.
以后有时间或者有兴趣会增加其他功能的,比如帐号注销,超级管理员之类的。
**********************************************************************************/
#define AC_USER_NAME_MIN 6
#define AC_PASSWD_MIN 6
#define ILLEAGUE_CHAR 0
#define TIME_OUT -5
#define PASSWD_WRONG —6
#define LOAD_SUCCESSFUL -7
#define CREAT_S -9
#define CREAT_F —10
#define LEAGUE_CHAR -11
#define UNKNOW -12
#define AC_USER_NAME_MAX 15
#define USER_NAME_MAX 12
#define AC_PASSWD_MAX 12
char root_path[255]="D:\\bank_systems\\";//根目录
char auth[255]="D:\\bank_systems\\”;
int users_sum=0;
struct s_user
{
char name[USER_NAME_MAX];
char account_name [AC_USER_NAME_MAX];
char account_passwd [AC_PASSWD_MAX];
char balance[10];
char tel[12];
char auth_flag;
};
struct s_user g_user;
void read_file(FILE *fp,char *read_path,char *des,char *error,char exit_flag)
{
int i=0;
fp=NULL;
if((fp=fopen(read_path,”r”))!=NULL)
{
do
{
des[i]=fgetc(fp);
}while(des[i++]!=EOF);
des[i—1]=’\0';
}
else
{
printf(”%s\n”,error);
if(exit_flag==1)
{
exit(1);
}
}
fclose(fp);
}
void write_file(FILE *fp,char *write_path,char *src,char *error,char exit_flag)
{
fp=NULL;
if((fp=fopen(write_path,"w"))!=NULL)
{
fwrite(src,sizeof(char),strlen(src),fp);
}
else
{
printf(”%s\n",error);
if(exit_flag==1)
{
exit(1);
}
}
fclose(fp);
}
void dtos(double res,char*str_send )
{
long pow[]={1,10,100,1000,10000,100000,1000000};
long temp;
int i=0;
int t=0;
int len=0;
temp=(long)(res*100);
if(res!=0)
{
for(;;)
{
if(temp>=pow[i])
{
i++;
}
else
{
break;
}
}
for(t=0;t<i;t++)
{
str_send[t]=(char)(temp/pow[i-1—t]+'0’);
temp=temp%pow[i-1-t];
}
str_send[i]=’\0’;
len=strlen(str_send);
str_send[len+1]='\0’;
str_send[len]=str_send[len-1];
str_send[len—1]=str_send[len—2];
str_send[len—2]='.’;
if(str_send[0]==’.’)
{
str_send[strlen(str_send)+1]='\0’;
for(i=strlen(str_send);i〉0;i--)
{
str_send[i]=str_send[i—1];
}
str_send[0]=’0';
}
}
else
{
str_send[0]=’0';
str_send[1]='\0’;
}
}
void type_user(struct s_user *user)
{
double result=0;