#include
#include
#include
struct card{
char name[20];
char cardno[20];
char pwds[20];
float balance;
struct card*next;
};
struct card *head,*tail, *temp;
struct card member[50];
struct card * create_card(char cdn[],char nm[], char pwd[],float b){
struct card * t;
t = (struct card*) malloc(sizeof(struct card));
strcpy(t->cardno,cdn);
strcpy(t->name,nm);
strcpy(t->pwds,pwd);
t ->balance = b;
t ->next = NULL;
return t;
}
// 将某个节点加入到链表
void link_card(struct card* t ){
// 将节点加入到链表中
if(head==NULL){ // 链表为空的时候
head = tail = t;
}else{ //链表不为空的时候
tail -> next = t;
tail = t;
}
}
void manu_create_link(){
char cdn[20];
char pwd[20];
char name[20];
struct card * t;
float b;
for( ; ;){
printf("请输入卡号、姓名、密码:\n");
scanf("%s %s %s",cdn,name,pwd);
if(strcmp(cdn,"0")==0||strcmp(name,"0")==0||strcmp(pwd,"0")==0){
printf(" 退出\n");
break;
}else{
printf("请输入余额:\n");
scanf("%f",&b);
t = create_card(cdn,name,pwd,b);
link_card(t);
}
}
}
void query(){
char who[20];
printf("\n *****QUERY A CARD BY CARDNO******\n");
printf("which cardno:");
scanf("%s",&who);
temp=head;
while(tail!=NULL){
if(strcmp(who,temp->cardno)==0);{
printf("found\n");
printf("卡号:%s 姓名:%s 密码:%s 余额:%f\n",temp->cardno,temp->name,temp->pwds,temp->balance);
break;
}
temp=temp->next;
}
}
void withdraw(){
printf("开始取钱");
char zh[20];
int i,a,c;
float b;
printf("请输入你的账户\n");
scanf("%s",&zh);
temp=head;
while(tail!=NULL){
if(strcmp(zh,temp->cardno)==0){
printf("请确认你的账户%s",temp->name);
printf("如果账户正确请按1 否则请按0\n");
scanf("%d",&a);
if(a==1){
printf("请输入您的支出金额");
scanf("%f",&b);
temp->balance=temp->balance-b;
printf("您的账户余额为%f",temp->balance);
} else{
printf("请重新输入");
}
}break;
temp=temp->next;
}
}
void deposit(){
char zh[20];
int i,a,c;
float b,d,e;
printf("开始存钱");
printf("请输入你要存钱的账户");
scanf("%s",&zh);
while(tail!=NULL){
if(strcmp(zh,temp->cardno)==0){
printf("请确认你的存入账户");
scanf("%s",temp->name);
printf("请确认你的账户%s",temp->name);
printf("如果账户正确请按1 否则请按0\n");
scanf("%d",&a);
if(a==1){
printf("请输入您的存入金额");
scanf ("%f",&b);
e=temp->balance+b;
printf("结束放钞请按1 继续放钞请按0");
scanf("%d",c);
if(c==1){
printf("您的账户余额为%f",e);
}
else{
printf("继续存放,请输入要存放的金额\n");
scanf("%f",&d);
e=e+d;
printf("您的账户余额为:%f",e);
temp->balance=e;
}break;
}else{
printf("请重新输入\n");
}
}
}
}
void save_link(){
FILE *fp = fopen("d:/a.txt","w");
temp = head;
while(temp!=NULL){
fprintf(fp,"%s %s %s %f \n",temp->cardno,temp->pwds,temp->name,temp->balance);
temp = temp->next;
}
fclose(fp);
}
void printUsage(){
printf(" ====== 欢迎来到BANK ===== \n");
printf(" 开户:---------------- 1 \n");
printf(" 查询:---------------- 2 \n");
printf(" 修改密码:------------ 3 \n");
printf(" 取钱:---------------- 4 \n");
printf(" 存钱:---------------- 5 \n");
printf(" 浏览所有信息:-------- 6 \n");
printf(" 浏览所有信息:-------- 0 \n");
printf(" 您的选择: ");
}
void init_link(){
head = NULL;
tail = NULL;
temp = NULL;
}
void main(){
int op;
init_link();
while(1){
printUsage();
scanf("%d",&op);
if(op==0)
break;
switch(op){
case 1:
manu_create_link();
save_link();
printf(" 开户成功\n");
break;
case 2:
query();
break;
case 4:
withdraw();
break;
case 5:
deposit();
break;
default:
printf("****非法输入****\n");
}
}
}