活期储蓄账目管理 代码

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

#include
#include
#include
#include
int total=1;//定义的全局变量,用于开户所需
typedef struct ElemType
{
char name[8];
int account;
char password[6];
float money;
}ElemType;
typedef struct lnode
{
ElemType data;
struct lnode *next;
}LINK;
void InitList(LINK *&L)
{
L=(LINK *)malloc (sizeof(LINK));
L->next=NULL;
}
void InsertList(LINK *&L)
{
LINK *s;
s=(LINK*)malloc(sizeof(LINK));
printf("请输入你要开户的姓名:");
scanf("%s",s->);
s->data.account=10001000+total++;
printf("\n你开户的账号为:%d\n",s->data.account);
printf("请输入你账号的密码:");
scanf("%s",s->data.password);
s->data.money=0.00;
s->next=NULL;
if(L->next==NULL)
L->next=s;
else
{
s->next=L->next;
L->next=s;
}
printf("开户成功。\n");
}
void DeleteList(LINK *&L)
{
LINK *p=L,*q;
char pass[6];
int s;
printf("请输入你要销户的账号:");
scanf("%d",&s);
printf("请输入该账号的密码:");
scanf("%s",pass);
while(p->next!=NULL)
{
if(p->next->data.account==s)
break;
p=p->next;
}
if(p->next!=NULL)
{
while(strcmp(p->next->data.password,pass)!=0)
{
printf("密码错误!请重新输入:");
scanf("%s",pass);
}
q=p->next;
p->next=q->next;
free(q);
printf("账号销户成功。\n");
}
else printf("你所要销户的的账号不存在(或者已经销户)。\n");
}
void PrintList(LINK*L)
{
LINK *p=L->next;
while (p!=NULL)
{
printf("%s\t",p->);
printf("%d\t%s\t%.2f\n",p->data.account,p->data.password,p->data.money);
p=p->next;
}
}
void Deposit(LINK *&L,LINK *p)
{
int cq;
float mn;
while(1)
if(p!=NULL)
{
printf("请选择存款(1)、取款(2)、查询余额(3)、退出账号(4)。\n(请输入括号内的数字,输入其它字符默认为取款):");
scanf("%d",&cq);
if(cq==1)
{
printf("请输入你的存款金额:");
scanf("%f",&mn);
p->data.money=p->data.money+mn;
printf("存款成功!\n");
}
else if(cq==3)
{
printf("你账户的余额为:%.2f\n",p->data.money);
}
else if(cq==4)
{
printf("账号退出成功。\n");
return;
}
else
{
printf("请输入你的取款金额:");
FH: scanf("%f",&mn);
if((p->data.money-mn)>=0)
{
p->data.money=p->data.money-mn;
printf("取款成功!\n");
}
else
{
printf("取款失败!\n");
printf("你账户上的金额不足!你的账户余额为:%.2fRMB\n",p->data.money);
printf("请输入合适的取款金额:");
goto FH;
}
}
}
}
void Search(LINK *L)
{
LINK *p=L->next;
int acc;
char pass[6];
printf("请输入你要登录的账号:");
scanf("%d",&acc);
printf("请输入你的密码:");
scanf("%s",pass);
while(p!=NULL)
{
if(p->data.account==acc)
break;
p=p->next;
}
if(p==NULL)
printf("不存在该账户\n");
el

se
{
if(strcmp(p->data.password,pass)==0)
printf("账号登录成功。\n");
else
{
while(strcmp(p->data.password,pass)!=0)
{
char pa;
printf("密码错误\n");
printf("是否重新输入(是,就输入任意键)、(否,从键盘上输入N or n):");
scanf("\n%c",&pa);
if(pa=='n'||pa=='N')
{system ("cls");return;}
printf("\n请重新输入你的密码:");
scanf("%s",pass);
}
}
Deposit(L,p);
}
}
void save(LINK *L)
{
FILE *fp;
fp=fopen("Account","w");
LINK *p=L->next;
while(p!=NULL)
{
if(fwrite(p,sizeof(struct lnode),1,fp)!=1)
printf("file write error\n");
p=p->next;
}
fclose(fp);
}
void Print(LINK *&L)
{
FILE *fp;
LINK *p,*s;
if((fp=fopen("Account","r"))==NULL)
{
printf("can not open.\n");
exit(0);
}
s=(LINK*)malloc(sizeof(LINK));s->next=NULL;
for(;fread(s,sizeof(struct lnode),1,fp)!=0; )
{
total++;//用于记录账号的,以致账号不重复
if(L->next==NULL)
{
L->next=s;
p=s;
p->next=s->next;
}
else
{
p->next=s;
p=s;
p->next=s->next;
}
s=(LINK*)malloc(sizeof(LINK));s->next=NULL;

}
fclose(fp);

}
void menu()
{
printf("************欢迎进入活期储蓄账目管理***********\n");
printf(" 1.储户开户。\n");
printf(" 2.储户销户。\n");
printf(" 3.储户的账号存款、取款。\n");
printf(" 4.返回菜单。\n");
printf(" 5.查看所有储蓄账户信息。\n");
printf(" 6.退出账目管理。\n");
printf("***********************************************\n");
}
void choice()
{
LINK *L;
InitList(L);
Print(L); //第一次创建的时候,需要屏
while(1)
{
char xunhan,ch;
printf("请选择你需要的功能:");
scanf("%c",&xunhan);
if(xunhan=='6')
break;
system ("cls");
switch(xunhan)
{
case '1':InsertList(L);ch=getchar();break;
case '2':DeleteList(L);ch=getchar();break;
case '3':Search(L);ch=getchar();break;
case '4':menu();ch=getchar();break;
case '5':PrintList(L);ch=getchar();break;
default:printf("输入错误!请重新选择功能。\n");break;
}
}
save(L);
}
void main()
{
menu();
choice();
}

相关文档
最新文档