语言模拟ATM自动取款机系统
C语言实验报告
题目名称:C语言模拟ATM自动取款机系统
C语言模拟实现ATM自动取款机功能:输入密码,余额查询,取款,存款,转账,修改密码,退出功能;
代码实现的功能:
- 账号及密码输入:用户输入密码,才能进入。
- 登陆成功界面:共有六个选项,查询余额、取款、存款、转账,修改密码,退出分别对应1,2,3,4,5,6选项,若序号输入不正确会予以提示。
- 选定1后,进入查询余额界面; 选定2后,进入取款界面; 选定3后,进入存款界面; 选定4后,修改密码,选定5,进入转账;选定6,退出界面;
- 如果过程中操作有误,提醒是否继续操作。
二:分析问题
一:问题描述:
(1)
在main()函数用switch语句现实菜单功能,根据用户选择,进入不同功能区;
(2)
模拟ATM自动取款机功能的实现,需要用自定义函数实现板块化。
所用的自定义函数如下:
登录界面:void enter();
登录成功后的界面:void jiemian();
实现密码输入:void land();
实现余额查
询:void inquiry();
实现取款功能:void withdraw();
实现存款功能:void deposit();
实现转账:void zhuangzhang();
实现修改密码:void correctscrect();
结束:void out();
输入有误,提示是否继续:int keep();
(3)
库函数:strcmp();system();
(4)
用户信息
结构体存储个人信息;
结构体数组存储的存储设计数据库知识,本实验模拟ATM机,简化处理,已经注册用户数据信息存储在结构体数组中;
三:解决问题
1. 用户信息
用结构体来描述用户的姓名、卡号、密码以及金额。
假设用户信息在结构体数组中;
2. 主函数函数
Switch语句实现菜单话;
(3)Void land();
需要解决的问题:1.密码输入2.检查密码是否输入正确3.密码输入次数不能超过3次。(if语句)
(4)void jiemian();
提示用户进行操作printf();
(5)void withdraw();
1.取款时,输入的金额不能为被100整除;
2.取款的金额不能大于余额;
3.修改余额;
(6)void deposit();
1.存款金额不能不被100整除
(7)void correctscrect();
1.修改密码,需要重复输入二遍来确定密码是否修改成功;
(8)void zhuangzhang();
1.转账金额不能不被100整除
2.输入对方账号
3.转账金额是否足够,不能不被100整除
(9)int keep();
1.当输入有误时,提醒是否继续操作;
(8)void out();
1.调用main(),下一个用户操作;
#include <stdio.h> #include <stdlib.h> #include<string.h> #include <unistd.h> void enter();//进入界面 void jiemian();//登录成功界面 void land();//登录 void inquiry();//查询余额 void withdraw();//取款 void deposit();//存款 void correctscrect();//修改密码 void out();//退出 void zhuangzhang();//转账 int keep();//当输入有误是否继续 /* **用户信息 */ struct essage { ]; long int acountion; long int keyword; float money; }; ]= {{,,},{,,},{,,}}; int X; int main() { int i; land(); jiemian(); /** 菜单 **/ ) { printf("请输入编号:\n"); scanf("%d",&i); switch (i) { : { system("cls"); inquiry(); printf("按任意键继续!\n"); system("pause"); jiemian(); break; } : { system("cls"); withdraw(); printf("按任意键继续!\n"); system("pause"); jiemian(); break; } : { system("cls"); deposit(); printf("按任意键继续!\n"); system("pause"); jiemian(); break; } : { system("cls"); correctscrect(); printf("按任意键继续!\n"); system("pause"); jiemian(); break; } : { system("cls"); zhuangzhang(); system("pause"); jiemian(); break; } : { printf("欢迎下次!\n"); system("cls"); main(); } default : { break; } } } ; } void enter() { printf("******************************\n"); printf("********welcome to ATM!*******\n"); printf("******************************\n"); } int keep() { char a; printf("是否继续?\n"); ) { printf("继续请输入:y 退出按n\n"); getchar(); //a= getchar(); //getchar(); scanf("%c",&a); if(a =='y') { ; } else if(a=='n') ; else { printf("输入有误!\n"); continue; } } } void land() { long int keyword; int i; ; ) { printf("请输入密码:\n"); count++; scanf("%ld",&keyword); ; i<; i++) { if(keyword==a[i].keyword) { X = i; return; } } ) { printf("你输入的密码次数超过3次!\n"); exit(); } else { printf("你输入密码有误!请重新输入!\n"); } } } void inquiry() { printf("你当前余额为:%f\n",a[X].money); } void jiemian() { printf("**************1.查询余额 2.取款*************\n"); printf("**************3.存款 4.修改密码*********\n"); printf("**************5.转账 6.退出**************\n"); } void deposit() { int n; int j; ) { printf("请输入存储金额:\n"); scanf("%d",&n); ==) { a[X].money+=n; printf("存款成功!\n"); printf("当前余额:%f",a[X].money); return; } else { printf("输入金额有错!\n"); j = keep(); ) { system("cls"); continue; } else return ; } } } void withdraw() { int n; int m; ) { printf("余额不足!\n"); return; } ) { printf("请输入取款金额!\n"); scanf("%d",&n); if(n>a[X].money) { printf("余额不足!\n"); m = keep(); ) continue; else return; } !=) { printf("输入有误!请重新输入取款金额!\n"); // system("pause"); m = keep(); ) continue; else return; } else { printf("成功!"); a[X].money=a[X].money-n; return ; } } } void correctscrect() { int b; long int n; long int m; long int q; ) { printf("请输入旧密码:\n"); scanf("%ld",&q); if((q!=a[X].keyword)) { printf("输入有误!\n"); b =keep(); ) continue; else return; } else break; } ) { printf("请输入新密码:\n"); scanf("%ld",&n); printf("请在一次输入新密码:\n"); scanf("%ld",&m); if(n!=m) { printf("二次密码不一样!\n"); b = keep(); ) continue; else return ; } else { printf("修改密码成功!\n"); a[X].keyword = n; break; } } } void zhuangzhang() { long int n; int m; int i; int j; ; printf("转账!\n"); ) { printf("输入转账账号!\n"); scanf("%ld",&n); ; i<; i++) { if(a[i].acountion==n) { leap=; break; } } ) { printf("你输入的账号不存在!\n"); j = keep(); ) { system("cls"); continue; } else return ; } } ) { printf("输入转账金额;\n"); scanf("%d",&m); ) { printf("余额不足!\n"); j= keep(); ) continue; else return; } if(m>a[X].money) { printf("余额不足!\n"); j= keep(); ) continue; else return; } !=) { printf("输入有误!请重新输入取款金额!\n"); j = keep(); ) continue; else return; } else { printf("转账成功!"); a[X].money=a[X].money-m; a[i].money = a[i].money+m; return ; } }
语言模拟ATM自动取款机系统的更多相关文章
- C#实现ATM自动取款机
本篇用C#实现ATM自动取款机的一些功能.面临的第一个问题是:如何把与自动取款机相关的有形的.无形的方面抽象出来.大致如下: (1)关于用户帐号的类:Account(2)关于银行数据库的类:BankD ...
- MySQL银行ATM存取款机系统(需求分析)
银行ATM需求文档 一.E-R图形文 二.开发步骤 1.明确需求--数据库设计--编码实现功能--测试 2.绘制e-r图--绘制数据库模型图--使用三大方式规范数据库结构 三.开发思路 1. 模型图综 ...
- 数据库期末作业之银行ATM存取款机系统
--一.建库.建表.建约束 --1.使用SQL创建表 --客户信息表userinfo --字段名称 说明 备注 --customerID 顾客编号 自动编号(标识列),从1开始,主键 --用序列seq ...
- mysql的ATM存取款机系统
##建库 CREATE DATABASE bankDB; ##客户信息表 CREATE TABLE userInfo ( customerID INT PRIMARY KEY AUTO_INCREME ...
- ATM自动取款机程序感想
上周四的Java考试,老师并没有我们考暑假给我们布置的样卷的java程序,而是让我们做一个设计ATM的程序,然而这个对于我们来说好难,因为暑假没有学好java,首先基础知识还没有掌握,输入数据一开始都 ...
- C语言模拟ATM机界面
虽然是满屏的printf.printf.printf.printf......尴尬 但是一个小项目做下来还是能学习到很多的,有很多小的问题,不是亲自来敲一遍代码,是不会发现的.他的框架,每一个小函数功 ...
- linux 下用C实现 ATM 自动取款机功能 (进程间通信)
直接先上图: 项目需求: 主要分为两人大模块: 客户端 .进入时的功能开户.销户.登录.解锁 开户:输入姓名.身份证号.设置密码,如果开户成功,则服务器上保存一个账号信号(一个账号存一个文件,文件名建 ...
- 5、原生jdbc链接数据库实例-自动取款机
ATM自动取款机需求 一.登陆 1.界面要求:服务选择 1.老用户登陆:进入后输入卡号密码登陆 2.新用户开户:开户需要输入身份证号,记录姓名,开户时间.然后机器给出卡号,原始密码:111111. 卡 ...
- 银行ATM存取款系统(C语言实现)
这里使用的运行工具是DEV C++.老铁们一定要看仔细了.是DEV C++ 仅供借鉴:这个是大一时期写的.大四的时候整理了一下(本人C语言学的也不太好).肯定很多不足和存在漏洞的地方.仅供借鉴.仅供借 ...
随机推荐
- tomcat,zookeeper,activeMQ,Kafka设置jvm参数
1,tomcat设置jvm参数 设置方法: 在tomcat bin 目录增加配置:setenv.sh #add tomcat pid CATALINA_PID="$CATALINA_ ...
- 使用命令行 Subversion 访问项目源文件(SVN)
from:http://www.open.collab.net/scdocs/ddUsingSVN_command-line.html.zh-cn 命令行 Subversion 入门 如果您参与的项目 ...
- Appium环境搭建
早就想学习移动端的自动化测试:今天看了些资料@虫师,整理下环境搭建流程:标"1"为最佳流程: 文字版的流程可以参见虫师的博客:
- 【转】Apache Digest验证
Apache默认使用basic模块验证,都是明文传输,不太安全,所以本文使用Digest来验证,以提高安全性. 1.Apache配置: A.目录权限配置 Alias /nagios "/us ...
- 鸟哥linux私房菜基础篇
1)注销:exit2)指令太长:命令太长的时候,可以使用反斜杠 (\) 来跳脱[Enter]符号,使挃令连续到下一行3)系统语言显示和设置命令:echo $LANG,显示当前系统语言:简体中文zh_C ...
- Hihocoder 1059 String Matching Content Length
预处理下连续相等的字符个数其实主要是看是否满3个 后面递推的时候特判下+1上次递推[i-1,j-1]不是来自[i-2,j-1]也不是来自[i-1,j-2]其实就是只来自[i-4,j-4]+3,和[i- ...
- Android--带你一点点封装项目 MVP+BaseActivity+Retrofit+Dagger+RxJava(二)
1,昨天我们基本上把MVP给封装起来了,今天接着昨天的东西来结合RxJava把Retrofit把网络框架简单的封装一下,先看一下我们今天实现的效果: 哈哈 ,还是昨天的效果,好吧 ,我认错. 2,由于 ...
- Apache+Tomcat实现负载均衡
反向代理负载均衡 (Apache2+Tomcat7/8) 使用代理服务器可以将请求转发给内部的Web服务器,让代理服务器将请求均匀地转发给多台内部Web服务器之一上,从而达到负载均衡的目的.这种代理方 ...
- oracle 笔试题
ORACLE笔试题一.单选题1.在Oracle中,以下不属于集合操作符的是( ). A. UNION B. SUM C. MINUS D. INTERSECT2.在Oracle中,执行下面的语句:SE ...
- RGB颜色表
RGB(255,23,140)是光的三原色,也即红绿蓝Red.Green.Blue,它们的最大值是255,相当于100%. 白色:rgb(255,255,255) 黑色:rgb(0,0,0) 红色:r ...