活期储蓄帐目管理要点Word文档格式.docx
《活期储蓄帐目管理要点Word文档格式.docx》由会员分享,可在线阅读,更多相关《活期储蓄帐目管理要点Word文档格式.docx(15页珍藏版)》请在冰点文库上搜索。
![活期储蓄帐目管理要点Word文档格式.docx](https://file1.bingdoc.com/fileroot1/2023-5/8/f3a367c0-3b62-4052-bdd2-28e691efad54/f3a367c0-3b62-4052-bdd2-28e691efad541.gif)
3查询
(5)模块划分:
01)voidInsertList(LINK*&
L)//链表插入实现开户功能
02)voidSearch(LINK*L)//链表查找,实现用户登陆功能
03)voidDeposit(LINK*&
L,LINK*p)//用户存款、取款
04)voidPrintList(LINK*L)//打印链表,实现用户信息输出
05)voidDeleteList(LINK*&
L)//链表删除,实现销户功能(需要账号和密码)
06)voidsave(LINK*L)//保存链表,实现用户信息保存到文件
07)voidPrint(LINK*&
L)//打开文件,得到链表
08)voidmenu()//主菜单函数
09)voidchoice()//菜单选择函数
(6)数据结构:
typedefstructElemType//定义结构体
{
charname[11];
intaccount;
charpassword[7];
floatmoney;
}ElemType;
typedefstructlnode//定义链表
ElemTypedata;
structlnode*next;
}LINK;
(7)心得:
这次实验我学到了很多在课本上没有注意的知识,在设计实验的过程中,我通过对链表的应用,让我对链表的应用更加的牢固,也通过设计,我也发现了我在学习中的不足,在不断改进程序的同时,我也发现了很多能够改进的地方,在改进程序的同时,巩固对链表的知识掌握。
这次我设计的程序,主要是以链表为中心,通过对链表的建立,插入,删除打印等来实现开户、销户、存钱、取钱等功能。
其中链表打印的环节的功能我不是很明白,通过上网查询。
查找资料。
逐渐改善。
最终实现完全的程序
(8)源程序:
#include<
stdio.h>
string.h>
stdlib.h>
conio.h>
#definefile"
lnode.txt"
inttotal=0;
//定义的全局变量,用于开户所需
charname[11];
intaccount;
charpassword[7];
floatmoney;
typedefstructlnode//定义链表
{
ElemTypedata;
structlnode*next;
}LINK;
voidInitList(LINK*&
L)//建立空链表
L=(LINK*)malloc(sizeof(LINK));
L->
next=NULL;
}
voidInsertList(LINK*L)//链表插入实现开户功能
intx;
LINK*s;
s=(LINK*)malloc(sizeof(LINK));
printf("
请输入你要开户的姓名(10字符以内):
"
);
scanf("
%s"
s->
data.name);
x=rand()%10;
//随机数
total+=x;
//total随机增大一个数值(10以内)x
s->
data.account=10000000+total;
\n你开户的账号为:
%d\n"
data.account);
请输入你账号的密码(6位数以内):
data.password);
data.money=0.00;
if(L->
next==NULL)
L->
next=s;
else
s->
next=L->
next;
}
开户成功。
\n"
voidDeleteList(LINK*L)//链表删除实现销户功能(需要账号和密码)
LINK*p=L,*q;
charpass[6];
ints;
请输入你要销户的账号:
%d"
&
s);
请输入该账号的密码:
pass);
while(p->
next!
=NULL)
if(p->
next->
data.account==s)
break;
p=p->
if(p->
while(strcmp(p->
data.password,pass)!
=0)
{
printf("
密码错误!
请重新输入:
scanf("
}
q=p->
p->
next=q->
free(q);
printf("
账号销户成功。
elseprintf("
你所要销户的的账号不存在(或者已经销户)。
voidPrintList(LINK*L)//打印链表,实现用户信息输出
LINK*p=L->
while(p!
%s\t"
p->
%d\t%s\t%.2f\n"
data.account,p->
data.password,p->
data.money);
voidDeposit(LINK*L,LINK*p)//用户存款、取款
intcq;
floatmn;
while
(1)
if(p!
请选择存款
(1)、取款
(2)、查询余额(3)、退出账号(4)。
\n(请输入括号内的数字,输入其它字符默认为取款):
cq);
if(cq==1)
{
printf("
请输入你的存款金额:
scanf("
%f"
mn);
p->
data.money=p->
data.money+mn;
存款成功!
}
elseif(cq==3)
{printf("
你账户的余额为:
%.2f\n"
elseif(cq==4)
账号退出成功。
return;
else
请输入你的取款金额:
FH:
if((p->
data.money-mn)>
data.money-mn;
取款成功!
else
取款失败!
你账户上的金额不足!
\n你的账户余额为:
%.f\n"
请输入合适的取款金额:
gotoFH;
voidSearch(LINK*L)//链表查找,实现用户登陆功能
intacc;
请输入你要登录的账号:
acc);
请输入你的密码:
while(p!
data.account==acc)
if(p==NULL)
不存在该账户\n"
if(strcmp(p->
data.password,pass)==0)
账号登录成功。
else
while(strcmp(p->
charpa;
密码错误\n"
是否重新输入(是,就输入任意键)、(否,从键盘上输入Norn):
\n%c"
pa);
if(pa=='
n'
||pa=='
N'
)
{system("
cls"
return;
\n请重新输入你的密码:
Deposit(L,p);
voidsave(LINK*L)//保存链表,实现用户信息保存到文件
FILE*fp;
if((fp=fopen(file,"
rb"
))==NULL)
cannotopenfile.\n"
exit
(1);
if(p!
if(fwrite(p,sizeof(structlnode),1,fp)!
=1)
filewriteerror\n"
fclose(fp);
voidPrint(LINK*&
LINK*p,*s;
s->
while(fread(s,sizeof(structlnode),1,fp))
total++;
//用于记录账号的,以致账号不重复
if(L->
L->
p=s;
p->
next=s->
s=(LINK*)malloc(sizeof(LINK));
voidmenu()//主菜单函数
************欢迎进入活期储蓄账目管理***********\n"
1.储户开户。
2.储户销户。
3.储户的账号存款、取款。
4.查看所有储蓄账户信息。
5.退出账目管理。
***********************************************\n"
voidchoice()//菜单选择函数
LINK*L;
InitList(L);
menu();
charx,ch;
请选择你需要的功能:
scanf("
%c"
x);
getchar();
if(x>
'
5'
输入有误,请重新选择操作:
if(x=='
switch(x)
case'
1'
:
InsertList(L);
ch=getchar();
break;
2'
DeleteList(L);
3'
Search(L);
4'
PrintList(L);
default:
getch();
//暂停功能(读取任意键继续)(conio.h)
system("
save(L);
voidmain()
choice();
}
。