银行的ATM机存取款系统程序设计_第1页
银行的ATM机存取款系统程序设计_第2页
银行的ATM机存取款系统程序设计_第3页
银行的ATM机存取款系统程序设计_第4页
银行的ATM机存取款系统程序设计_第5页
已阅读5页,还剩62页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实用标准文案精彩文档实用标准文案精彩文档银行 ATM 机存取款系统程序设计任课教师: 蒋 安 珩小组成员:何慧冬 14212114 国际经济与贸易 贡怡敏 14Y12114 国际经济与贸易(全 英)徐唯一 14512125 金融学2013-09-08银行 ATM 机存取款系统程序设计一 案例描述总体描述银行 ATM 机存取款系统业务描述如下:银行 ATM 存取款系统能为用户提供存款、取款、查询、转账和修改密码的功能。用户通 过开户业务在本系统开立银行账户,之后可以通过该银行账户登录 ATM 系统,在系统中实 现存款、取款、查询账户信息、修改密码的操作。本系统各个业务有如下注意点:( 1) 登录

2、系统 用户登录之前,必须在登录界面输入其银行账户,通过其正确输入的银行账户登录系统。( 2) 开户业务要使用本系统必须首先执行开户业务开立新的银行账户, 并且将此新开的银行存储于文件当 中。同时, 系统以身份证号码作为开户的充分条件, 即一个身份证号码只能开立一次银行账 户。( 3) 存款业务客户登陆系统后,选择存款业务,即可以将输入的存款金额存入相应的账户。( 4) 取款业务客户登陆系统后, 选择取款业务, 即可以将输入的取款金额从相应的银行账户取出, 但其取 款金额必须大于目前的账户余额。( 5) 查询业务客户登陆系统后,可以选择查询业务,查询账户余额。( 6) 转账业务客户登陆系统后,

3、可以选择转账业务进行转账。 注意的是转账的目的账户必须是本系统已经 存在的银行账户。( 7) 修改密码客户登陆系统后,可以选择修改密码,进行密码修改。界面设计用户根据需要进行登录和开户的选择三 模块化设计方案1系统主要函数及功能实用标准文案实用标准文案chaxun 函数:用以查询客户个人余额kaihu 函数:用以开户denglu 函数:客户登录caidan 函数:向客户展示银行业务菜单,办理存取款、查询等qukuan 函数:客户取款xgmm 函数:进行密码修改cunkuan 函数:客户存款zhuanzhang 函数:客户转账tuichu 函数:退出系统2主函数调用各功能函数流程实用标准文案精彩

4、文档实用标准文案精彩文档四 数据结构描述struct perchar name20;char ID20;int money;char code6;struct per *next;/* 定义结构体 */* 姓名 */* 卡号 */* 金额 */* 密码 */* 定义指针 */;typedef struct personstruct per kehu ;struct person *next;L;该数据结构为链表, 是一种动态进行存储分配的结构。 链表的每一个一个节点中包含了一个指针变量,用它存放下一个结点的地址,环环相扣。五 算法设计1、开户开始输入姓名输入银行密码链表 加该中添 记录结束2.

5、登录3.取款4.存款开始实用标准文案实用标准文案与原密码6.转账开始再次输入转入卡号成功转入余额不足精彩文档链表中 加该记添 录实用标准文案精彩文档实用标准文案精彩文档是否7.查询六 程序运行结果开户登录选择业务取款5、查询6.转账7、修改密码8 、存款9、退出退出系统。七 总结1. 分工情况何慧冬:程序框架的搭建和运行调试后的修改 贡怡敏:界面处理和函数内容的补充 徐唯一:算法设计和流程图的制作心得体会何慧冬:这次对银行 ATM 机的程序编写过程中,遇到了不少困难。首先是经过一个暑假, 小组成员对之前学的 C 程序设计内容掌握程度不像上学期那么高,加上短学期接 触到了 C+ 的相关内容,对新

6、知识点的理解和运用也不是很熟练,所以一开始比 较难上手。 其次是对结构体、 指针等重点难点内容的运用不是很擅长。 在弄清楚各 个函数的使用后, 把各个函数的功能镶嵌起来比较花功夫。 在设计上面, 我们觉得 “密码最多允许输错三次” 这个环节比较考验人。 尤其是不断地调试, 要把组员们 各自编译的函数搭建起来完美运行并不是件容易的事,需要三个人一起分析和探 讨,在调试的过程中不断修改,直至完美运行。过程是艰辛的,结果是可喜的。程 序的完美呈现, 离不开三个人的共同努力。 自己需要做好自己的那一部分, 而团队 合作便是成功的核心。贡怡敏:通过这次小组合作程序设计,真是让我受益匪浅。银行 ATM 机

7、的程序编写,不仅很好地让我们运用起所学的 C 语言的相关知识,也与我们的经济学专业相衔接,这与平时的做题有很大的不同。 虽然对于界面的设计看似较容易上手, 但我们的程 序构思却是和这界面设计有着莫大的联系, 丝毫不能马虎的。 在调试运行我们的程 序时,每一个步骤都不能省略,才能保证我们的程序是否真的完美运行没有差错。 在操作过程中的轻松, 背后是我们小组齐心协力的智慧的结晶。 当然我们的程序在 细节和人性化角度还存在着一些问题, 比如说想要转账的, 但是如果不小心摁到了 取款,没有直接退出的环节,只能先“将错就错”后再退出,然后转到原本想操作 的“转账”上面。徐唯一:这次银行 ATM 机程序编

8、写对我来说真是一次巨大的考验。整个程序的算法设计, 逻辑思维能力是关键性因素。为了能够使我们的程序精益求精,少不了反复构思, 返工的情况也是很常见的。 好不容易把整个思路构想出来, 却因为某些瑕疵而全部 推翻, 很是郁闷。 不过功夫不负有心人, 三人的智慧加在一起, 没有什么做不到的。 共同思考, 达成共识, 没有合理的设计, 也就不能编写出合适的程序。 不过因为我 们的能力有限, 还是存在一些遗憾, 就比如我最在意的点错不能及时退出这一细节。 当然我们相信,在今后的学习过程中,我们能更加掌握好 C 语言的相关知识,将 我们的程序完善,使其更具人性化。自评得分何慧冬: 97贡怡敏: 96徐唯一

9、: 98附页(源代码附加注释)#include#include#includestruct perchar name20;char ID20;int money;char code6;struct per *next;typedef struct personstruct per kehu ;struct person *next;L;/* 定义结构体 */* 各个函数的声明 */void chaxun(struct per *head);void kaihu(struct per *head);void denglu(struct per *head);void caidan(struct

10、per *head);void qukuan(struct per *head);void xgmm(struct per *head);void cunkuan(struct per *head);void zhuanzhang(struct per *head);void tuichu();/* 主函数 */void main()char x;char choose;/*choose 为定义输入选择的变量 */int flag=1;struct person *Phead=NULL;/*r 为定义二层头指针 */struct per *head=NULL;/*head 为定义一层头指针 *

11、/printf(*n);printf(* 欢迎使用 ATM 自动取款机系统 *n);printf(*nnnn);printf(n);printf(| 请选择您的需求printf(n);printf(|1 开户printf(n);printf(|2 登录printf(n);|n);|n);|n);/* 调用开户函数 */* 调用登陆函数 */scanf(%s,&x);system(cls);switch(x)case 1:system(cls);kaihu(head); break;case 2:system(cls); denglu(head); break;/* 开户函数 */ void k

12、aihu(struct per *head)head=NULL;FILE *fp; /* 定义文件指针 */*p1,p1 为定义链表指针 */* 开辟内存单元 */* 将数据输入链表中 */per *p1=NULL,*p2=NULL;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;卡 号 : %s nprint

13、f( 您的个人信息为 n);printf( 姓 名 : %s n额: %4dn,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(cannot open filen);return;if(fwrite(p1,sizeof(per),

14、1,fp)!=1)/* 打开文件 */* 将链表信息写入文件中 */printf(file write errorn);fclose(fp);printf(n);printf( 恭喜您开户成功,请登录 n);system(pause);system(cls);denglu(head);/* 登陆函数 */void denglu(struct per *head)char d20;char code20;int i,j;FILE *fp;per *p,*q=NULL;if(fp=fopen(save.txt,rb+)=NULL) */printf( 不能打开文件 n);p=(per*)mallo

15、c(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(printf(printf(for( j=1;jnext)/* 保存当前结点的指针

16、,作为下一结点的前驱/* 指针后移,新读入数据链到当前表尾/* 最后一个结点的后继指针为空 */*n);* 欢迎来到建设银行 *n);*n);/* 限制卡号输入的次数的循环 */* 便利链表 */if(strcmp(q-ID,d)!=0) /* 核对账号 */continue;elsefor(i=1;icode,code)!=0) /* 核对密码 */printf( 密码不正确,请重新输入密码 n);system(pause);system(cls);continue; /* 若密码不对,跳出循环 */elsesystem(cls);caidan(head); /* 调用菜单函数 */n);p

17、rintf(nnn 您输入密码三次错误,谢谢光临system(pause);system(cls);exit(0);printf(nnn 您输入的卡号有误,请重试 n);system(pause);system(cls);printf( 您的卡号三次输入错误,谢谢使用 );exit(0);/* 银行菜单函数 */void caidan(struct per *head)head=NULL;int i;/*i为客户选择输入的变量*/while(1)printf( 请选择您需要的业务 n);*/* 银行业务菜单printf( *printf(*1 取款2 查询*n);printf( *printf

18、(*3 转账4 修改密码*n);printf( *printf(*5 存款6 退出*n);printf(*nnn);scanf(%d,&i);if(i0)switch(i)/* 调用银行取款函数case 1:qukuan(head);*/system(pause);system(cls);break;case 2: system(cls);chaxun(head);/* 调用银行查询函数*/break;case 3:system(cls);zhuanzhang(head);/* 调用银行转账函数*/break;case 4:system(cls);xgmm(head);/* 调用银行修改密码函

19、数*/break;case 5:system(cls);cunkuan(head);/* 调用银行存款函数 */break;case 6:system(cls);tuichu();/* 调用银行退出函数 */break;实用标准文案精彩文档实用标准文案精彩文档elseprintf( 您的输入有误 n); system(pause); system(cls);/* 银行取款函数函数 */ void qukuan(struct per *head)head=NULL;per *p;*/int i;FILE *fp;*/fp=fopen(save.txt,rb+);/* 链表头指针/* 文件头指针/

20、* 开辟空间 */p=(per*)malloc(sizeof(per);fread(p,sizeof(per),1,fp);fclose(fp);system(cls);printf( 请按要求选择您要取款的金额n);printf(*n);printf(* 1: 1002: 200*n);printf(*n);printf(* 3: 3004: 400*n);printf(*n);printf(* 5: 5006: 600*n);printf(*n);scanf(%d,&i);if(i6|ip-money )printf( 对不起,您的余额不足 n);system(pause);system(

21、cls);caidan(head);elsep-money-=i;if(fp=fopen(save.txt,wb+)=NULL)printf(cannot open filen);return;if(fwrite(p,sizeof(per),1,fp)!=1)件*/printf(file write errorn);printf( 您已成功走取 %d 元 n,i);p-next=NULL;fclose(fp);/* 打开文件 */* 将修改的信息重新写入文/* 关闭文件 */实用标准文案精彩文档实用标准文案精彩文档实用标准文案精彩文档/* 银行转账函数 */void zhuanzhang(st

22、ruct per *head)head=NULL;per *p;FILE *fp;fp=fopen(save.txt,rb+);p=(per*)malloc(sizeof(per);fread(p,sizeof(per),1,fp);fclose(fp);int i,j,k;printf( 请输入转账号码 n);scanf(%d,&i);printf( 请再次输入转账号码 n);scanf(%d,&j);if(i!=j)printf( 两次账号不相同,请重新输入 n zhuanzhang(head);elsesystem(cls);printf( 请输入转账金额 n);printf(*n);p

23、rintf(* 1: 1002: 200*n);printf(*n);printf(* 3: 3004: 400*n);printf(*n);printf(* 5: 5006: 600*n);*n);printf( scanf(%d,&k);if(k6|kp-money )printf( 对不起,您的余额不足 n);system(pause);system(cls);caidan(head);elseprintf( 您已成功转账 %d 元 n,k); p-money-=k;if(fp=fopen(save.txt,wb+)=NULL)printf(cannot open filen);retu

24、rn;if(fwrite(p,sizeof(per),1,fp)!=1)printf(file write errorn);p-next=NULL;fclose(fp);p-next=NULL;system(pause);system(cls);/* 银行查询函数 */void chaxun(struct per *head)head=NULL;*/per *p;FILE *fp;fp=fopen(save.txt,rb+);p=(per*)malloc(sizeof(per);fread(p,sizeof(per),1,fp);*/fclose(fp);/* 链表头指针/* 文件头指针 */

25、* 打开文件 */* 将信息从文件中读出来printf( 您卡上原有余额为 %d 元 nn,p-money);system(pause);system(cls);/* 银行修改密码函数 */void xgmm(struct per *head)head=NULL;*/per *p;char code20;FILE *fp;fp=fopen(save.txt,rb+); p=(per*)malloc(sizeof(per); fread(p,sizeof(per),1,fp);fclose(fp);printf( 请输入您的原密码 n);scanf(%s,code); if(strcmp(p-code,code)=0) /* 链表头指针/* 文件头指针 */* 开辟内存 */* 打开文件 */* 将信息从文件中读出来 */* 核对密码 */实用标准文案精彩文档实用标准文案精彩文档printf( 密码正确 n);printf( 请输入您的新密码 :n);/* 文件头指针 */scanf(%s,p-code);if(fp=fopen(save.txt,wb+)=NULL)printf(cann

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论