银行ATM机工作流程模拟编程
[编程内容]
编程,模拟一个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机工作流程模拟编程的更多相关文章
- 银行ATM机工作流程模拟编程(代码)
#include<stdio.h>#include<stdlib.h>#include <conio.h>#include <string.h> voi ...
- 实验01——java模拟银行ATM系统
用java写的一个模拟银行系统,比较初级. ATM.java package cn.tedu.yinhang; import java.util.Scanner; /** * @author 赵瑞鑫 ...
- 银行ATM存取款系统(C语言实现)
这里使用的运行工具是DEV C++.老铁们一定要看仔细了.是DEV C++ 仅供借鉴:这个是大一时期写的.大四的时候整理了一下(本人C语言学的也不太好).肯定很多不足和存在漏洞的地方.仅供借鉴.仅供借 ...
- MySQL银行ATM存取款机系统(需求分析)
银行ATM需求文档 一.E-R图形文 二.开发步骤 1.明确需求--数据库设计--编码实现功能--测试 2.绘制e-r图--绘制数据库模型图--使用三大方式规范数据库结构 三.开发思路 1. 模型图综 ...
- I2C总线完全版——I2C总线的结构、工作时序与模拟编程
I2C总线的结构.工作时序与模拟编程 I2C总线的结构.工作时序与模拟编程I2C总线(Inter Integrated Circuit)是飞利浦公司于上个世纪80年代开发的一种"电路板级&q ...
- 模拟银行ATM系统(基础版)
Account类 package ATM; public class Account {//定义Account类 private String accountID;//用于存储学生的用户账号(由八位数 ...
- ATM取款机的数据库模拟开发和实战总结
一.ATM实战开发的简介. 学习了几天的Oracle,开始着手用数据库PL/SQL语言做一个简单的ATM取款机业务,主要是为了巩固数据库的知识,并非真正的去实现高端的业务.有兴趣的可以看看,希望对同胞 ...
- 工作流程,编程,调试,性能:Unity游戏开发者应该学习的20个改进技巧
Unity 是一个备受欢迎的游戏开发平台.它的功能令人印象深刻,同时也迎合了不同的游戏开发需求.游戏开发者可以使用 Unity 创建任何类型的游戏,从世界级的 RPG 游戏到最流行的增强现实游戏 Po ...
- WinIo驱动级键盘模拟编程
转自:http://blog.sina.com.cn/s/blog_455d7a320100vr37.html 前天无聊,翻翻自己的兴趣项目文件夹,发现了这个放下很久的项目!那是大三时候的事了.当时是 ...
随机推荐
- 数据结构《16》----自动补齐实现《一》----Trie 树
1. 简述 Trie 树是一种高效的字符串查找的数据结构.可用于搜索引擎中词频统计,自动补齐等. 在一个Trie 树中插入.查找某个单词的时间复杂度是 O(len), len是单词的长度. 如果采用平 ...
- BZOJ 2595 斯坦那树
很久以前就想做,后来弃坑了. 最近又在群里有人问了类似的问题,艾老师说是斯坦纳树(%%%) 就是状压DP,然后用Spfa对状态进行转移. #include <iostream> #incl ...
- OD调试篇6--对一些真正的小程序进行一点点的修改
先打开这个程序看看,提醒你这是一个未注册版本的软件.会发现只能添加4个联系人,这显然是我不想看见的,于是我要对这个程序进行一些修改,嘿嘿... 通过OD载入这个程序 有一些(SEH)也就是异常,我们可 ...
- windows server 2008 r2 切换windows 7主题方法
1. 打开Powershell 里 Cmdlets 管理角色和功能Import-Module servermanager 2. 安装桌面体验Add-WindowsFeature Desktop-Exp ...
- angularjs 迭代器
angularjs 迭代器可以使用管道字符(|)添加到表达式和指令中. 有以下五种转换数据的迭代器: (1)currency-格式化数字为货币格式. (2)filter-从数组中选择一个一个子集. ( ...
- Linux压缩那些事儿
tar简介 Linux的压缩命令的源文件只能有一个,这意味在压缩之前不得不先将要压缩的所有文件打包成一个包,然后再压缩包,这样来完成对多个文件的压缩.所以在了解解压缩之前就必须先了解打包命令. Lin ...
- 动态添加Marquee标签,并动态赋值与属性
前台加载js $(function(){ var publishStr="<%=publishText%>" var marqueeStr=" <mar ...
- Mysql外键约束设置使用方法
如果表A的主关键字是表B中的字段,则该字段称为表B的外键,表A称为主表,表B称为从表.外键是用来实现参照完整性的,不同的外键约束方式将可以使两张表紧密的结合起来,特别是修改或者删除的级联操作将使得日常 ...
- 什么是JavaEE
Java技术不仅是一门编程语言而且是一个平台.同时Java语言是一门有着特定语法和风格的高级的面向对象的语言,Java平台是Java语言编写的特定应用程序运行的环境.Java平台有很多种,很多的Jav ...
- [poj 1502]昂贵的聘礼
一道不算太难的最短路喵~ 容我吐槽一下,酋长的地位居然不是最高的额——那你特么的居然还算是酋长?! 枚举一个地位区间 [i..i+M-1] 只要所有的交易者的地位都在该区间中,那么就不会引起冲突 而这 ...