锐英源软件
第一信赖

精通

英语

开源

擅长

开发

培训

胸怀四海 

第一信赖

当前位置:锐英源 / 学员作品 / 面授高中学员刘同学ATM自动取款机模拟程序
服务方向
软件开发
办公财务MIS
股票
设备监控
网页信息采集及控制
多媒体
软件开发培训
Java 安卓移动开发
Java Web开发
HTML5培训
iOS培训
网站前端开发
VC++
C++游戏开发培训
C#软件
C语言(Linux)
ASP.NET网站开发(C#)
C#软件+ASP.NET网站
SOCKET网络通信开发
COMOLE和ActiveX开发
C++(Linux)
汇编和破解
驱动开发
SkinMagicVC++换肤
流媒体开发
MicroStation二次开发
计算机英语翻译
联系方式
固话:0371-63888850
手机:138-0381-0136
Q Q:396806883

个人讲解

学员刘同学以高中文凭在学习10天C语言基础后,成功完成了本实践,并且在YY上进行了语音交流。

实践目的

制作这个代码的目的就是实践ATM机的一些简单功能,题目要求如下:

定义1个结构体类型ACCOUNT_STRU来表示一个银行帐户。

定义1个ACCOUNT_STRU数组来表示银行。

写个函数来表示ATM的功能的模拟:

开户

销户

查询余额

查询最后5笔明细

存款

取款

转帐

退出

程序启动后,以代码方式生成几个帐户,新帐户通过键盘输入数据来生成。

技术

从题意分析,要写这个代码,要用到的技术有:函数、结构体、数组、循环、输入输出、字符串的处理、Dos环境下的循环界面和复杂操作符的使用等。

函数

首先,在函数部分,我用main函数来构造主框架,也就是实现Dos环境下的循环,用了一些子函数来实现ATM机的单个功能,来供主函数调用,还写了一个用来验证密码的函数来供这些子函数调用。另外还把帐户明细的处理封装成了函数,在存款、取款和转帐功能里调用。

首先,如果没有各个功能的子函数,主函数的代码肯定有至少200行了,拆成子函数后,各个函数的长度控制在30行左右,在阅读上方便了很多。有些具备通用性的代码封装成子函数,也是我在实践中发现的,有的也是在老师提示下想到。

另外函数的声明形式和函数定义形式也进行了实践。

结构体和数组

我用结构体来实现个人的帐户功能,结构体里设计的成员是根据功能来确定的,首先是帐户ID,整型的;密码,字符串;余额,整型的;状态,表示帐户是否注销,或可用;明细数组,整型数组;明细偏移,整型的。

这里老师引导我从功能上来确定成员,比如状态,由于银行帐户的数据的模拟形式是数组类型,是静态全局的,某个帐户不存在分配和释放的情况,所以要注销就只能通过标志来实现,标志就演变为状态变量。

并且老师再次强调复杂的功能在提供了合适的数据成员基础上,也是容易实现的。比如要实现最后5笔明细,有5笔不是一笔,肯定要用数组了。最后5笔,隐含的意思要知道现在有多少笔,所以要定义个整型变量来记录下多少笔。知道有多少笔,在少于5笔时,就把新明细写到当前笔对应的项里,在大于5笔时就向上移动数组,把新明细写入到数组最后里。

用一个结构体数组来代表银行。函数中用到的数组有很多,比如说银行存放每个帐户的信息,这就用到数组来表示。

循环

主函数main函数的框架主要就由数组循环while语句和一个switch语句来组成,而各个子函数中用到的循环就更多,比如说开户,这就要写一个for循环或者while循环来实现在输入错误时,返回到循环开始的功能,让用户再次输入。

输入和输出

而输入输出就用到gets(),和scanf来实现各个数据的键入和显示。

字符串处理

在字符串的处理上,我用了一些比如strcmp的字符串来比较两个数据的大小。

Dos环境下的循环界面

而Dos环境下的循环界面,是由主函数main来实现,这个循环是为了在主界面,也就是菜单界面中来选择各个功能,实现各个功能后,能再回到主界面供用户选择,或者是退出。在循环中就是一个switch语句,来实现选中的子函数的功能。switch判断的是输入的结果字符串对应的整型值。如果输入9,则表示退出。

整个流程的伪代码为:

提示

输入

while(判断提示)

{

转换提示

根据转换结果调用子功能

提示

再输入

}

复杂操作符的使用

取模,在设计存款时,考虑每张纸币必须是100的,所以就用了%来判断金额。

初学者错误

模糊,对概念有深入印象,对形式和分几个要点说不上来。

遇到的编译错误有:

下面有函数定义,上面没有函数声明,则函数不能用。

函数的调用写成了函数的声明

函数的返回值怎么用

函数的声明和函数定义不一样,比如返回值不一样,参数类型不一样。

对字符串的比较用了==号,strcmp

结构体成员的访问,开始直接用结构体数组里某项来用,没想到要用点.来访问数据成员。

个人感悟

这个代码写了330多行,花费了10个小时左右的时间。写这个代码让我学会在写代码时,首先就是要态度端正,要在心里就重视起来,这样在写的时候就会用心去写,效率也会提高。再来就是要有耐心,因为想要让一个函数实现一个功能,就必须先构思,思考自己应该会用到什么样的技术,而一个小的功能用到的技术就很多,用的到代码就可能就会很长。而在技术点不清楚的时候一定要耐心的思考,仔细的回忆学到的知识点,触类旁通。接触到不懂的地方就要多问,自己也要思考,联想。

有代码发布前,老师在逻辑上检查出了一些错误,让我对于严谨二字又有了深切的感悟,大的功能总是要反应到变量使用这些细节上的,细节写对了,才能保证大的功能。

友情链接
版权所有 Copyright(c)2004-2015 锐英源软件
公司注册号:410105000449586 豫ICP备08007559号 最佳分辨率 1024*768
地址:郑州市文化路47号院1号楼4层(47-1楼位于文化路和红专路十字路口东北角,郑州大学工学院招待所南边,工学院科技报告厅西边。)