银行ATM机存取款系统程序设计Word格式文档下载.docx
- 文档编号:17378390
- 上传时间:2022-12-01
- 格式:DOCX
- 页数:31
- 大小:416.10KB
银行ATM机存取款系统程序设计Word格式文档下载.docx
《银行ATM机存取款系统程序设计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《银行ATM机存取款系统程序设计Word格式文档下载.docx(31页珍藏版)》请在冰豆网上搜索。
4)caidan函数:
向客户展示银行业务菜单,办理存取款、查询等
5)qukuan函数:
客户取款
6)xgmm函数:
进行密码修改
7)cunkuan函数:
客户存款
8)zhuanzhang函数:
客户转账
9)tuichu函数:
退出系统
2.主函数调用各功能函数流程
四.数据结构描述
structper/*定义结构体*/
{
charname[20];
/*姓名*/
charID[20];
/*卡号*/
intmoney;
/*金额*/
charcode[6];
/*密码*/
structper*next;
/*定义指针*/
};
typedefstructperson
{
structperkehu;
structperson*next;
}L;
该数据结构为链表,是一种动态进行存储分配的结构。
链表的每一个一个节点中包含了一个指针变量,用它存放下一个结点的地址,环环相扣。
五算法设计
1、开户
2.登录
否是
是
否
3.取款
是否
4.存款
开始
结束
输入存款金额
链表中添加该记录
5.密码修改
6.转账
7.查询
六.程序运行结果
1.开户
3.选择业务
4.取款
5、查询
7、修改密码
8、存款
9、退出
退出系统。
七总结
1.分工情况
何慧冬:
程序框架的搭建和运行调试后的修改
贡怡敏:
界面处理和函数内容的补充
徐唯一:
算法设计和流程图的制作
2.心得体会
这次对银行ATM机的程序编写过程中,遇到了不少困难。
首先是经过一个暑假,小组成员对之前学的C程序设计内容掌握程度不像上学期那么高,加上短学期接触到了C++的相关内容,对新知识点的理解和运用也不是很熟练,所以一开始比较难上手。
其次是对结构体、指针等重点难点内容的运用不是很擅长。
在弄清楚各个函数的使用后,把各个函数的功能镶嵌起来比较花功夫。
在设计上面,我们觉得“密码最多允许输错三次”这个环节比较考验人。
尤其是不断地调试,要把组员们各自编译的函数搭建起来完美运行并不是件容易的事,需要三个人一起分析和探讨,在调试的过程中不断修改,直至完美运行。
过程是艰辛的,结果是可喜的。
程序的完美呈现,离不开三个人的共同努力。
自己需要做好自己的那一部分,而团队合作便是成功的核心。
通过这次小组合作程序设计,真是让我受益匪浅。
银行ATM机的程序编写,不仅很好地让我们运用起所学的C语言的相关知识,也与我们的经济学专业相衔接,这与平时的做题有很大的不同。
虽然对于界面的设计看似较容易上手,但我们的程序构思却是和这界面设计有着莫大的联系,丝毫不能马虎的。
在调试运行我们的程序时,每一个步骤都不能省略,才能保证我们的程序是否真的完美运行没有差错。
在操作过程中的轻松,背后是我们小组齐心协力的智慧的结晶。
当然我们的程序在细节和人性化角度还存在着一些问题,比如说想要转账的,但是如果不小心摁到了取款,没有直接退出的环节,只能先“将错就错”后再退出,然后转到原本想操作的“转账”上面。
这次银行ATM机程序编写对我来说真是一次巨大的考验。
整个程序的算法设计,逻辑思维能力是关键性因素。
为了能够使我们的程序精益求精,少不了反复构思,返工的情况也是很常见的。
好不容易把整个思路构想出来,却因为某些瑕疵而全部推翻,很是郁闷。
不过功夫不负有心人,三人的智慧加在一起,没有什么做不到的。
共同思考,达成共识,没有合理的设计,也就不能编写出合适的程序。
不过因为我们的能力有限,还是存在一些遗憾,就比如我最在意的点错不能及时退出这一细节。
当然我们相信,在今后的学习过程中,我们能更加掌握好C语言的相关知识,将我们的程序完善,使其更具人性化。
3.自评得分
97
96
98
附页(源代码附加注释)
#include<
stdio.h>
string.h>
stdlib.h>
voidchaxun(structper*head);
/*各个函数的声明*/
voidkaihu(structper*head);
voiddenglu(structper*head);
voidcaidan(structper*head);
voidqukuan(structper*head);
voidxgmm(structper*head);
voidcunkuan(structper*head);
voidzhuanzhang(structper*head);
voidtuichu();
/*主函数*/
voidmain()
charx;
charchoose;
/*choose为定义输入选择的变量*/
intflag=1;
structperson*Phead=NULL;
/*r为定义二层头指针*/
structper*head=NULL;
/*head为定义一层头指针*/
printf("
********************************\n"
);
**欢迎使用ATM自动取款机系统***\n"
********************************\n\n\n\n"
---------------------------\n"
printf("
|请选择您的需求|\n"
|1开户|\n"
|2登录|\n"
scanf("
%s"
&
x);
system("
cls"
switch(x)
{
case'
1'
:
system("
kaihu(head);
/*调用开户函数*/
break;
2'
denglu(head);
/*调用登陆函数*/
}
}
/*开户函数*/
voidkaihu(structper*head)
head=NULL;
FILE*fp;
/*定义文件指针*/
per*p1=NULL,*p2=NULL;
/*p1,p1为定义链表指针*/
p1=(per*)malloc(sizeof(per));
/*开辟内存单元*/
请输入您的姓名:
\n"
/*将数据输入链表中*/
p1->
name);
请设置您的卡号:
ID);
请设置您银行卡密码:
code);
p1->
money=0;
next=NULL;
您的个人信息为\n"
姓名:
%s\n卡号:
%s\n余额:
%4d\n"
name,p1->
ID,p1->
money);
if(NULL==head)/*为新增客户开辟内存单元*/
head=(per*)malloc(sizeof(per));
head->
next=p1;
else/*为新增客户开辟内存单元*/
for(p2=head;
p2->
next!
=NULL;
p2=p2->
next);
p2->
next=p1;
if((fp=fopen("
save.txt"
"
ab+"
))==NULL)/*打开文件*/
cannotopenfile\n"
return;
if(fwrite(p1,sizeof(per),1,fp)!
=1)/*将链表信息写入文件中*/
filewriteerror\n"
fclose(fp);
恭喜您开户成功,请登录\n"
pause"
/*登陆函数*/
voiddenglu(structper*head)
chard[20];
charcode[20];
inti,j;
per*p,*q=NULL;
rb+"
))==NULL)/*打开一个二进制文件,为读方式*/
{
不能打开文件\n"
/*如不能打开,则结束程序*/
p=(per*)malloc(sizeof(per));
/*申请空间*/
head=p;
while(!
feof(fp))/*循环读数据直到文件尾结束*/
{
if(1!
=fread(p,sizeof(per),1,fp))
/*如果没读到数据,跳出循环*/
p->
next=(per*)malloc(sizeof(per));
/*为下一个结点申请空间*/
q=p;
/*保存当前结点的指针,作为下一结点的前驱*/
p=p->
next;
/*指针后移,新读入数据链到当前表尾*/
}
q->
next=NULL;
/*最后一个结点的后继指针为空*/
***********************\n"
* 欢迎来到建设银行*\n"
for(j=1;
j<
4;
j++)/*限制卡号输入的次数的循环*/
请您输入卡号\n"
d);
for(q=head;
q!
q=q->
next)/*便利链表*/
if(strcmp(q->
ID,d)!
=0)/*核对账号*/
continue;
else
for(i=1;
i<
i++)/*限制密码输入的次数的循环*/
\n\n请输入您的密码\n"
code);
code,code)!
=0)/*核对密码*/
密码不正确,请重新输入密码\n"
/*若密码不对,跳出循环*/
caidan(head);
/*调用菜单函数*/
\n\n\n您输入密码三次错误,谢谢光临\n"
system("
exit(0);
\n\n\n您输入的卡号有误,请重试\n"
}
您的卡号三次输入错误,谢谢使用"
/*银行菜单函数*/
voidcaidan(structper*head)
inti;
/*i为客户选择输入的变量*/
while
(1)
请选择您需要的业务\n"
/*银行业务菜单*/
***********************************\n"
**1取款*****2查询**\n"
**3转账*****4修改密码**\n"
**5存款*****6退出**\n"
***********************************\n\n\n"
%d"
i);
if(i<
6||i>
0)
switch(i)
case1:
qukuan(head);
/*调用银行取款函数*/
case2:
chaxun(head);
/*调用银行查询函数*/
;
case3:
zhuanzhang(head);
/*调用银行转账函数*/
case4:
xgmm(head);
/*调用银行修改密码函数*/
case5:
cunkuan(head);
/*调用银行存款函数*/
case6:
tuichu();
/*调用银行退出函数*/
}}
您的输入有误\n"
/*银行取款函数函数*/
voidqukuan(structper*head)
head=NULL;
per*p;
/*链表头指针*/
inti;
FILE*fp;
/*文件头指针*/
fp=fopen("
/*开辟空间*/
p=(per*)malloc(sizeof(per));
fread(p,sizeof(per),1,fp);
fclose(fp);
请按要求选择您要取款的金额\n"
**************************************\n"
**1:
100元*****2:
200元**\n"
**3:
300元*****4:
400元**\n"
**5:
500元*****6:
600元**\n"
if(i>
6||i<
=0)
对不起,您的输入有误\n\n"
i=100*i;
p->
money)
对不起,您的余额不足\n"
money-=i;
wb+"
if(fwrite(p,sizeof(per),1,fp)!
=1)/*将修改的信息重新写入文件*/
您已成功走取%d元\n"
i);
/*关闭文件*/
/*银行转账函数*/
voidzhuanzhang(structper*head)
inti,j,k;
请输入转账号码\n"
请再次输入转账号码\n"
j);
if(i!
=j)
两次账号不相同,请重新输入\n"
else
请输入转账金额\n"
scanf("
k);
if(k>
6||k<
k=k*100;
您已成功转账%d元\n"
k);
money-=k;
))==NULL)
=1)
}
/*银行查询函数*/
voidchaxun(structper*head)
/*链表头指针*/
per*p;
fp=fopen("
/*打开文件*/
fread(p,sizeof(per),1,fp);
/*将信息从文件中读出来*/
您卡上原有余额为%d元\n\n"
p->
money);
/*银行修改密码函数*/
voidxgmm(structper*head)
/*文件
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 银行 ATM 取款 系统 程序设计