您好,欢迎访问三七文档
当前位置:首页 > 金融/证券 > 金融资料 > 银行ATM机存取款系统程序设计
银行ATM机存取款系统程序设计任课教师:蒋安珩小组成员:何慧冬14212114国际经济与贸易贡怡敏14Y12114国际经济与贸易(全英)徐唯一14512125金融学2013-09-08银行ATM机存取款系统程序设计一案例描述1.总体描述银行ATM机存取款系统业务描述如下:银行ATM存取款系统能为用户提供存款、取款、查询、转账和修改密码的功能。用户通过开户业务在本系统开立银行账户,之后可以通过该银行账户登录ATM系统,在系统中实现存款、取款、查询账户信息、修改密码的操作。本系统各个业务有如下注意点:(1)登录系统用户登录之前,必须在登录界面输入其银行账户,通过其正确输入的银行账户登录系统。(2)开户业务要使用本系统必须首先执行开户业务开立新的银行账户,并且将此新开的银行存储于文件当中。同时,系统以身份证号码作为开户的充分条件,即一个身份证号码只能开立一次银行账户。(3)存款业务客户登陆系统后,选择存款业务,即可以将输入的存款金额存入相应的账户。(4)取款业务客户登陆系统后,选择取款业务,即可以将输入的取款金额从相应的银行账户取出,但其取款金额必须大于目前的账户余额。(5)查询业务客户登陆系统后,可以选择查询业务,查询账户余额。(6)转账业务客户登陆系统后,可以选择转账业务进行转账。注意的是转账的目的账户必须是本系统已经存在的银行账户。(7)修改密码客户登陆系统后,可以选择修改密码,进行密码修改。二界面设计用户根据需要进行登录和开户的选择。三模块化设计方案1.系统主要函数及功能1)chaxun函数:用以查询客户个人余额2)kaihu函数:用以开户3)denglu函数:客户登录4)caidan函数:向客户展示银行业务菜单,办理存取款、查询等5)qukuan函数:客户取款6)xgmm函数:进行密码修改7)cunkuan函数:客户存款8)zhuanzhang函数:客户转账9)tuichu函数:退出系统2.主函数调用各功能函数流程开始打开文件,载入信息用户菜单界面1、开户输入姓名设置卡号设置银行卡密码D修改密码2、登录输入卡号输入密码A取款B查询C转账E存款F退出四.数据结构描述structper/*定义结构体*/{charname[20];/*姓名*/charID[20];/*卡号*/intmoney;/*金额*/charcode[6];/*密码*/structper*next;/*定义指针*/};typedefstructperson{structperkehu;structperson*next;}L;该数据结构为链表,是一种动态进行存储分配的结构。链表的每一个一个节点中包含了一个指针变量,用它存放下一个结点的地址,环环相扣。五算法设计1、开户开始输入姓名输入卡号输入银行密码链表中添加该记录结束2.登录否是是否开始结束输入密码输入卡号进入用户菜单界面与原密码是否相同错误次数是否小于三3.取款是否结束是否大于存款金额链表中添加该记录成功取出输入取款金额余额不足开始4.存款开始结束输入存款金额链表中添加该记录5.密码修改否是开始结束链表中添加该记录输入密码输入卡号输入新密码与原密码是否相同6.转账是否输入转入卡号开始结束是否大于存款金额链表中添加该记录成功转入再次输入转入卡号输入转账金额余额不足7.查询六.程序运行结果1.开户开始结束输出余额2.登录3.选择业务4.取款5、查询6.转账7、修改密码8、存款9、退出退出系统。七总结1.分工情况何慧冬:程序框架的搭建和运行调试后的修改贡怡敏:界面处理和函数内容的补充徐唯一:算法设计和流程图的制作2.心得体会何慧冬:这次对银行ATM机的程序编写过程中,遇到了不少困难。首先是经过一个暑假,小组成员对之前学的C程序设计内容掌握程度不像上学期那么高,加上短学期接触到了C++的相关内容,对新知识点的理解和运用也不是很熟练,所以一开始比较难上手。其次是对结构体、指针等重点难点内容的运用不是很擅长。在弄清楚各个函数的使用后,把各个函数的功能镶嵌起来比较花功夫。在设计上面,我们觉得“密码最多允许输错三次”这个环节比较考验人。尤其是不断地调试,要把组员们各自编译的函数搭建起来完美运行并不是件容易的事,需要三个人一起分析和探讨,在调试的过程中不断修改,直至完美运行。过程是艰辛的,结果是可喜的。程序的完美呈现,离不开三个人的共同努力。自己需要做好自己的那一部分,而团队合作便是成功的核心。贡怡敏:通过这次小组合作程序设计,真是让我受益匪浅。银行ATM机的程序编写,不仅很好地让我们运用起所学的C语言的相关知识,也与我们的经济学专业相衔接,这与平时的做题有很大的不同。虽然对于界面的设计看似较容易上手,但我们的程序构思却是和这界面设计有着莫大的联系,丝毫不能马虎的。在调试运行我们的程序时,每一个步骤都不能省略,才能保证我们的程序是否真的完美运行没有差错。在操作过程中的轻松,背后是我们小组齐心协力的智慧的结晶。当然我们的程序在细节和人性化角度还存在着一些问题,比如说想要转账的,但是如果不小心摁到了取款,没有直接退出的环节,只能先“将错就错”后再退出,然后转到原本想操作的“转账”上面。徐唯一:这次银行ATM机程序编写对我来说真是一次巨大的考验。整个程序的算法设计,逻辑思维能力是关键性因素。为了能够使我们的程序精益求精,少不了反复构思,返工的情况也是很常见的。好不容易把整个思路构想出来,却因为某些瑕疵而全部推翻,很是郁闷。不过功夫不负有心人,三人的智慧加在一起,没有什么做不到的。共同思考,达成共识,没有合理的设计,也就不能编写出合适的程序。不过因为我们的能力有限,还是存在一些遗憾,就比如我最在意的点错不能及时退出这一细节。当然我们相信,在今后的学习过程中,我们能更加掌握好C语言的相关知识,将我们的程序完善,使其更具人性化。3.自评得分何慧冬:97贡怡敏:96徐唯一:98附页(源代码附加注释)#includestdio.h#includestring.h#includestdlib.hstructper/*定义结构体*/{charname[20];charID[20];intmoney;charcode[6];structper*next;};typedefstructperson{structperkehu;structperson*next;}L;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);printf(**欢迎使用ATM自动取款机系统***\n);printf(********************************\n\n\n\n);printf(---------------------------\n);printf(|请选择您的需求|\n);printf(---------------------------\n);printf(|1开户|\n);printf(---------------------------\n);printf(|2登录|\n);printf(---------------------------\n);scanf(%s,&x);system(cls);switch(x){case'1':system(cls);kaihu(head);/*调用开户函数*/break;case'2':system(cls);denglu(head);/*调用登陆函数*/break;}}/*开户函数*/voidkaihu(structper*head){head=NULL;FILE*fp;/*定义文件指针*/per*p1=NULL,*p2=NULL;/*p1,p1为定义链表指针*/p1=(per*)malloc(sizeof(per));/*开辟内存单元*/printf(请输入您的姓名:\n);/*将数据输入链表中*/scanf(%s,p1-name);printf(请设置您的卡号:\n);scanf(%s,p1-ID);printf(请设置您银行卡密码:\n);scanf(%s,p1-code);p1-money=0;p1-next=NULL;printf(您的个人信息为\n);printf(姓名:%s\n卡号:%s\n余额:%4d\n,p1-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)/*打开文件*/{printf(cannotopenfile\n);return;}if(fwrite(p1,sizeof(per),1,fp)!=1)/*将链表信息写入文件中*/printf(filewriteerror\n);fclose(fp);printf(\n);printf(恭喜您开户成功,请登录\n);system(pause);system(cls);denglu(head);}/*登陆函数*/voiddenglu(structper*head){chard[20];charcode[20];inti,j;FILE*fp;/*定义文件指针*/per*p,*q=NULL;if((fp=fopen(save.txt,rb+))==NULL)/*打开一个二进制文件,为读方式*/{printf(不能打开文件\n);/*如不能打开,则结束程序*/}p=(per*)malloc(sizeof(per));/*申请空间*/head=p;while(!feof(fp))/*循环读数据直到文件尾结束*/{if(1!=fread(p,sizeof(per),1,fp))break;/*如果没读到数据,跳出循环*/p-next=(per*)malloc(sizeof(per));/*为下一个结点申请空间*/q=p;/*保存当前结点的指针,作为下一结点的前驱*/p=p-next;/*指针后移,新读入数据链到当前表尾*/}q-next=NULL;/*最后一个结点的后继指针为空*/fclose(fp);printf(***********************\n);printf(*欢迎来到建设银行*\n);printf(***********************\n);for(j=1;j4;j++)/*限制卡号输入的次数的循环*/{printf(请您输入卡号\n);scanf(%s,d);for(q=head;q!=NULL;q=q-next)/*便利链表*/{if(strcmp(q-ID,d)!=0)/*核对账号*/{continue;}else{for(i=1;i4;i++)/*限制密码输入的次数的循环*/{printf(\n\n请输入您的密码\n);scanf(%s,code);if(strcmp(q-code,
本文标题:银行ATM机存取款系统程序设计
链接地址:https://www.777doc.com/doc-7364487 .html