[编程内容]

编程,模拟一个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. Android Framework层Power键关机流程(二,关机流程)

    二,关机流程 从前一篇博文我们知道,当用户长按Power键时会弹出(关机.重启,飞行模式等选项)对话框,我们点击关机,则会弹出关机确认对话框.那么从选项对话框到关机确认对话框又是一个什么流程呢.下面我 ...

  2. angularjs中展示富文本编辑器文本,向DOM中插入元素

    前几天在用textangular富文本编辑器插件时,将存储的文本及格式存储到数据库中,但是从后台接口中再向angular页面插入时却不能执行,即在Angular中操作DOM没有实现,后来查看了一下,操 ...

  3. SQL SERVER 2008配置Database Mail –用SQL 数据库发邮件

    SQL SERVER 2008配置Database Mail –用SQL  数据库发邮件 https://blogs.msdn.microsoft.com/apgcdsd/2011/06/28/sql ...

  4. [专题汇总]AC自动机

    1.The 2011 ACM-ICPC Asia Dalian Regional Contest ZOJ 3545 Rescue the Rabbit  简单的AC自动机+状压DP, 状态DP[nod ...

  5. C# 多线程同步和线程通信

    多线程通信 1. 当线程之间有先后的依赖关系时,属于线程之间的通信问题.也就是后一个线程要等待别的一个或多个线程全部完成,才能开始下一步的工作.可以使用: WaitHandle Class WaitH ...

  6. phpstorm 激活

    http://idea.lanyus.com/

  7. 移动互联网实战--Web Restful API设计和基础架构

    前言: 在移动互联网的大潮中, Web Restful API逐渐成为Web Server重要的一个分支. 移动端和服务端的交互, 主流的方式还是通过Http协议的形式来进行. 请求以Get/Post ...

  8. 在linux和windows下自动备份数据库

    摘要: 详细介绍在windows和linux下自动备份数据库的过程,希望可以让新手立即上手吧! 本文档内容共分为2大部分:linux和windows Linux和windows都分为:准备工作和操作阶 ...

  9. (转)注意力机制(Attention Mechanism)在自然语言处理中的应用

    注意力机制(Attention Mechanism)在自然语言处理中的应用 本文转自:http://www.cnblogs.com/robert-dlut/p/5952032.html  近年来,深度 ...

  10. 如何在IIS 7.5中部署Asp.Net MVC 5的网站

    0 Sign in to vote 系统是 windwos 2008 已经安装.Net 4.0 和 .Net 4.5 已经安装MVC4 的需要文件,MVC5 找不见下载地方,求各位大哥告知一下在哪里可 ...