[编程内容]

编程,模拟一个ATM(Automatic Teller Machine,自动取款机)的工作流程。依据帐户信息:姓名、帐号、密码、余额,完成ATM机功能:登录、显示余额、取款、修改密码。

程序工作流程:

  • 显示登录界面:      帐号:

密码:

接受用户输入。

  • 若为非法用户,提示出错,并重新登录,3次出错后退出;
  • 若为合法用户,则显示操作菜单,提供下述服务:

① 显示基本信息

② 修改密码

③ 查询余额

④ 存款

⑤ 取款

⑥ 退出

[编程分析]

① 利用数组作为存储单位,保存储户信息;

② 使用文件记载储户信息,程序启动时加载储户信息进入,程序退出时将链表中的储户信息写入文件;

③ 使用链表结构记录有关数据,使用链表完成相关操作;

[步骤]

一、用一个数组表示一个储户

struct people

{

char name[10];

char account[20];

char password[10];

float money;

struct people*next;

};

二、建立main函数

void main()

{

int i,z,a,t=0;

char account[20],password[10],ch;

struct people *head,*p;                               /*1*/

FILE *fp=fopen("1.txt","r");                        /*2*/

head=NULL;                                       /*3*/

if(fp==NULL){printf("系统出错");return 1;}            /*4*/

for(i=0;i<5;i++)                                      /*5*/

{

p=(struct people*)malloc(sizeof(struct people));         /*6*/

fscanf(fp,"%s%s%s%f",p->name,p->account,p->password,&(p->money));  /*7*/

p->next=head;                                    /*8*/

head=p;                                         /*9*/

}

fclose(fp);                                           /*10*/

printf("***********欢迎使用ATM自动取款机***********\n");

printf("*******************************************\n");

denglu(head,p);

}

  •  分析

——fopen函数原型 FILE * fopen(const char * path,const char * mode);参数path字符串包含欲打开的文件路径及文件名,参数mode字符串则代表着流形态(1.txt的内容见附件;mode流形态链接

http://www.cnblogs.com/devil-91/archive/2012/05/29/2523572.html

3——fopen函数若打开文件不成功,返回NULL;

4——fscanf函数

int fscanf(FILE*stream,constchar*format,[argument...]);FILE *stream:文件指针;char *format:格式字符串;[argument...]:输入列表。

功 能: 从一个流中执行格式化输入,fscanf遇到空格和换行时结束,注意空格时也结束。这与fgets有区别,fgets遇到空格不结束;

10——fclose函数关闭文件。

链表:1——定义头指针head和遍历指针p;

6——malloc函数为结点分配空间(malloc函数链接

http://blog.csdn.net/xw13106209/article/details/4962479)

8——结点的next指针指向上一个结点;

9——设置当前结点为头结点。

不能放在2后面,2表示FILE*指针fp的初始化,C中要求把变量的声明放在最前面。

三、建立功能函数

void denglu(struct people *head,struct people *p);

void jiemian(struct people *head,struct people *p);

void chaxun(struct people *head,struct people *p);

void qukuan(struct people *head,struct people *p);

void cunkuan(struct people *head,struct people *p);

void xiugai(struct people *head,struct people *p);

void tuika(struct people *head,struct people *p);

void xinxi(struct people *head,struct people *p);

[程序错误和缺陷]

错误:登录界面上第一次输入账号错误,有时会自动退出程序,不进入循环;

缺陷:

  • 登录界面不能实现:      帐号:

密码:

风格,而只能在把账号输入后显示“密码”;

  • 建立管理员界面,实现储户的增加、减少和储户信息的更改,要求用到链表结点的增加、删除、查找;
  • 在从文件中读取储户数据时设置新的变量控制储户个数的输入输出,而不是利用固定个数读取(如本例的5个储户信息);
  • 想一想如果此程序每次运行都需要将文件中的储户信息读入程序链表中,那当文件中的储户量达到一个很大的数字时,每次程序往链表中读入或写入数据时不但要消耗大量的时间,还需要计算机有足够的空间,程序效率太差。

[程序代码]

链接:http://www.cnblogs.com/mzct123/p/4822895.html

[附件]

1.txt内容:

zhangsan 2015001 123456 10000.000000

lisi 2015002 123456 6000.000000

wangwu 2015003 123456 4000.000000

cj 2015004 123456 100000.000000

jiaojiao 2015005 123456 100000.000000

银行ATM机工作流程模拟编程的更多相关文章

  1. 银行ATM机工作流程模拟编程(代码)

    #include<stdio.h>#include<stdlib.h>#include <conio.h>#include <string.h> voi ...

  2. 实验01——java模拟银行ATM系统

    用java写的一个模拟银行系统,比较初级. ATM.java package cn.tedu.yinhang; import java.util.Scanner; /** * @author 赵瑞鑫 ...

  3. 银行ATM存取款系统(C语言实现)

    这里使用的运行工具是DEV C++.老铁们一定要看仔细了.是DEV C++ 仅供借鉴:这个是大一时期写的.大四的时候整理了一下(本人C语言学的也不太好).肯定很多不足和存在漏洞的地方.仅供借鉴.仅供借 ...

  4. MySQL银行ATM存取款机系统(需求分析)

    银行ATM需求文档 一.E-R图形文 二.开发步骤 1.明确需求--数据库设计--编码实现功能--测试 2.绘制e-r图--绘制数据库模型图--使用三大方式规范数据库结构 三.开发思路 1. 模型图综 ...

  5. I2C总线完全版——I2C总线的结构、工作时序与模拟编程

    I2C总线的结构.工作时序与模拟编程 I2C总线的结构.工作时序与模拟编程I2C总线(Inter Integrated Circuit)是飞利浦公司于上个世纪80年代开发的一种"电路板级&q ...

  6. 模拟银行ATM系统(基础版)

    Account类 package ATM; public class Account {//定义Account类 private String accountID;//用于存储学生的用户账号(由八位数 ...

  7. ATM取款机的数据库模拟开发和实战总结

    一.ATM实战开发的简介. 学习了几天的Oracle,开始着手用数据库PL/SQL语言做一个简单的ATM取款机业务,主要是为了巩固数据库的知识,并非真正的去实现高端的业务.有兴趣的可以看看,希望对同胞 ...

  8. 工作流程,编程,调试,性能:Unity游戏开发者应该学习的20个改进技巧

    Unity 是一个备受欢迎的游戏开发平台.它的功能令人印象深刻,同时也迎合了不同的游戏开发需求.游戏开发者可以使用 Unity 创建任何类型的游戏,从世界级的 RPG 游戏到最流行的增强现实游戏 Po ...

  9. WinIo驱动级键盘模拟编程

    转自:http://blog.sina.com.cn/s/blog_455d7a320100vr37.html 前天无聊,翻翻自己的兴趣项目文件夹,发现了这个放下很久的项目!那是大三时候的事了.当时是 ...

随机推荐

  1. M4: 使用CommandBar

    本小节将介绍如何使用CommandBar, CommandBar分为PrimaryCommands和SecondaryCommands,在PrimaryCommands中不要放置多于四个按钮.然后将不 ...

  2. C++模板中的函数对象

    在C++模板类map中一个参数为Compare类型,该类型为一个比较函数,其完整定义如下: template< class Key, class T, class Compare = std:: ...

  3. cocos2d-x 3.2 listview scorllview 等容器在小米华为等部分手机显示泛白解决

    感觉记不住,代码贴上以免以后难找 在proj.android\src\org\cocos2dx\cpp\AppActivity.java 中的 public class AppActivity ext ...

  4. 第七课第一节,T语言流程语句( 版本5.0)

    流程语句 if语句 用if语句可以构成分支结构.它根据给定的条件进行判断,以决定执行某个分支程序段.TC综合开发工具的if语句有三种基本形式,并且每个语句的结尾都要有一个end (注:关键字,if,e ...

  5. ✡ leetcode 163. Missing Ranges 找出缺失范围 --------- java

    Given a sorted integer array where the range of elements are in the inclusive range [lower, upper], ...

  6. PHP聊天室框架

    内容和教程可以在这个网址查看 http://www.workerman.net/workerman-chat

  7. 论文笔记之:Progressive Neural Network Google DeepMind

    Progressive Neural Network  Google DeepMind 摘要:学习去解决任务的复杂序列 --- 结合 transfer (迁移),并且避免 catastrophic f ...

  8. Cacti-安装和使用详解

    Cacti是一套基于PHP,MySQL,SNMP及RRDTool开发的网络流量监测图形分析工具.Cacti是通过 snmp get来获取数据,使用 RRDtool绘画图形,而且你完全可以不需要了解RR ...

  9. There is already an open DataReader associated with this Command which must be closed first." exception in Entity Framework

    Fixing the "There is already an open DataReader associated with this Command which must be clos ...

  10. android图像与图像处理系列(一、Bitmap和BitmapFactory)

    1.Drawable对象 Android应用添加了Drawabe资源之后,Android SDK会为这份资源文件在R清单文件中创建一个索引项:R.drawable.file_name,接着我们可以在x ...