#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#include<string.h>
typedef struct
{
char name[10];
char pass_word[6];
int money;
}stu;
typedef struct node
{
char name[10];
char pass_word[6];
int money;
struct node *next;
}Node,*list;
void input();/*manager can use this function to register the account*/
void delet();/*manager can use this function to delete the account*/
void output();/*manager can use this function to look through the account*/
void search(char n[10]);/*following function are for User*/
void draw_money(char n[10]);
void transfer_money(char n[10]);
void save_money(char n[10]);
int main()
{
FILE *fp;
int choice1,choice2,choice3,i,k1,k2,flag;
stu s,u;
i=1;
printf("******************************************************\n");
printf("-----------------------welcome------------------------\n");
printf("--------The system of ATM design by zhu kun--------\n");
printf("******************************************************\n");
while (1)
{
printf("\nPlease select a permission:\n");
printf("1.Manager\t\t2.User\t\t3.Exit\n");
scanf("%d",&choice1);
if (choice1==1)
{
while (1)
{
k2=0;
printf("Please select the choice:\n");
printf("1.input account\t\t2.delete account\t\t3.output\t\t4.return\t\t5.exist\n");
scanf("%d",&choice2);
switch(choice2)
{
case 1:input();break;
case 2:delet();break;
case 3:output();break;
case 4:k2=1;break;
case 5:return 0;
}
if (k2==1) break;
}
}
if (choice1==2)
{
while (i<=3)
{
printf("\ninput your user name:\n");
scanf("%s",u.name);
printf("\ninput your password:\n");
scanf("%s",u.pass_word);
fp=fopen("c:\\user.txt","a+");
while (!feof(fp))
{
fscanf(fp,"%s %s %d ",s.name,s.pass_word,&(s.money));
if (strcmp(u.name,s.name)==0&&strcmp(u.pass_word,s.pass_word)==0)
{
printf("\n----------login succesful!----------\n");flag=1;break;
}
}
if (flag==1)break;
printf("\nname or password is error!input again!\n");
fclose(fp);
i++;
if (i==3)
{printf("\nyou failed three times!\n");getchar();exit(1);}
}
if(flag==1)
{
while(1)
{
k1=0;
printf("Please select the choise:\n");
printf("1.search account\t\t2.draw money\n");
printf("3.transfer money\t\t4.save money\n");
printf("5.return\t\t6.exit\n");
scanf("%d",&choice2);
switch(choice2)
{
case 1:search(u.name);break;
case 2:draw_money(u.name);break;
case 3:transfer_money(u.name);break;
case 4:save_money(u.name);break;
case 5:k1=1;break;
case 6:return 0;
}
if (k1==1)break;
}
}
}
if (choice1==3) return 0;
}
}
void input()
{
FILE *fp;
stu x[20];
char name[10],pass_word[6];
char e[4]={"end"};
char e2;
int money;
int j,k,f;
int i=1;
fp=fopen("c:\\user.txt","r");
for (j=0;!feof(fp);j++)
{
fscanf(fp,"%s %s %d ",x[j].name,x[j].pass_word,&(x[j].money));
}
fclose(fp);
fp=fopen("c:\\user.txt","a");
printf("please input the name,password,money(input 'end 0 0' to end):\n");
while(strcmp(name,e)!=0)
{
f=2;
printf("--%d--: ",i);
i++;
scanf("%s %s %d",name,pass_word,&money);
if (strcmp(name,e)==0) break;
for (k=0;k<j;k++)
{
if (strcmp(x[k].name,name)==0||money<0)
{
printf("the account is exist!or your money is error!\n");
printf("Do you want to return? Y/N\n");
getchar(); e2=getchar();
if (e2=='Y')
{
f=1;
break;
}
else f=0;
}
}
if (f==1)
{
i=i-1;break;
}
if (f==0)
{
i=i-1;continue;
}
fprintf(fp,"%s %s %d\n",name,pass_word,money);
}
fclose(fp);
}
void search(char n[10])
{
FILE *fp;
stu x;
int flag=0;
fp=fopen("c:\\user.txt","r");
while (!feof(fp))
{
fscanf(fp,"%s %s %d ",x.name,x.pass_word,&(x.money));
if (strcmp(x.name,n)==0)
{
printf("\n%s %d\n",x.name,x.money);
flag=1;break;
}
}
if (flag==0)printf("\nNot exsit.\n");
fclose(fp);
}
void delet()
{
FILE *fp;
list head;
list p;
list q;
char n[10];
p=(list)malloc(sizeof(Node));
q=p;
fp=fopen("c:\\user.txt","r");
while(!feof(fp))
{
list newNode=(list)malloc(sizeof(Node));
fscanf(fp,"%s %s %d ",newNode->name,newNode->pass_word,&(newNode->money));
p->next=newNode;
p=newNode;
p->next=NULL;
}
fclose(fp);
head=q->next;
p=head;
printf("\nThe accounts are:\n");
while (p!=NULL)
{
printf("\n%s\t\t%d",p->name,p->money);
p=p->next;
}
printf("\nWhat account do you want to delete?\n");
scanf("%s",n);
p=head;
while (strcmp((p->name),n)!=0&&p->next!=NULL)
{
q=p;p=p->next;
}
if (strcmp((p->name),n)==0)
{
if(p==head)head=p->next;
else q->next=p->next;
}
else printf("%s not been found!\n",n);
fp=fopen("c:\\user.txt","w");
p=head;
while (p!=NULL)
{
fprintf(fp,"%s %s %d\n",p->name,p->pass_word,p->money);
p=p->next;
}
fclose(fp);
}
void draw_money(char n[10])
{
FILE *fp;
stu user[20];
int i,j;
int dmoney;
char e;
fp=fopen("c:\\user.txt","r");
for (i=0;!feof(fp);i++)
{
fscanf(fp,"%s %s %d ",user[i].name,user[i].pass_word,&(user[i].money));
}
fclose(fp);
j=i;
while(1)
{
printf("How much do you want to draw?:");
scanf("%d",&dmoney);
for (i=0;i<j;i++)
{
if (strcmp((user[i].name),n)==0)
break;
}
printf("\n%d\n",user[i].money);
if (dmoney>(user[i].money)||dmoney<0)
{
printf("your balance is insuffcient or the money you input is error,please input right money again!\n");
printf("Do you want to return? Y/N\n");
getchar();e=getchar();
if (e=='Y') break;
}
else
{
user[i].money=user[i].money-dmoney;
printf("Do you want to return? Y/N\n");
getchar();e=getchar();
if (e=='Y') break;
}
}
fp=fopen("c:\\user.txt","w");
for (i=0;i<j;i++)
{
fprintf(fp,"%s %s %d\n",user[i].name,user[i].pass_word,user[i].money);
}
fclose(fp);
}
void save_money(char n[10])
{
FILE *fp;
stu user[20];
int i,j;
char e;
int smoney;
fp=fopen("c:\\user.txt","r+");
for (i=0;!feof(fp);i++)
{
fscanf(fp,"%s %s %d ",user[i].name,user[i].pass_word,&(user[i].money));
}
fclose(fp);
j=i;
while (1)
{
printf("\nHow much do you want to save?\n");
scanf("%d",&smoney);getchar();
if (smoney<=0)
{
printf("The money that you want to save is error!!!,please input again\n");
printf("Do you want to return? Y/N\n");
e=getchar();
if (e=='Y') break;
else
{
continue;
}
}
for (i=0;i<j;i++)
{
if (s