语言模拟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语言学的也不太好).肯定很多不足和存在漏洞的地方.仅供借鉴.仅供借 ...
随机推荐
- PythonNote01_HTML标签
>头标签<head> >>位置 头标签要放在头部之间 >>种类 <title> : 指定整个网页的标题,在浏览器最上方显示. <meta&g ...
- javascript中的闭包、模块与模块加载
一.前言 闭包是基于词法作用域( 和动态作用域对应,词法作用域是由你写代码时,将变量写在哪里来决定的,因此当词法分析器处理代码时,会保持作用)书写代码时所产生的自然结果,甚至不需要为了利用闭包而有意 ...
- ADSL自动更换IP地址源代码
有些网站限制IP地址,什么一个IP地址只能一次之类的.特别是投票网址,为了防止刷票,限制1个IP只允许投票一次! 此程序采用Vs2010+C#开发,提供全部源代码!方便程序猿朋友二次开发! 可以后台运 ...
- 微服务之Swagger
Swagger使用 1. Swagger UI 按以下步骤配置,项目启动后访问:http://localhost:8080/swagger-ui.html 1.1 添加依赖 <dependenc ...
- 手机端页面自适应解决方案—rem布局
只需在页面引入这段原生js代码就可以了 (function (doc, win) { var docEl = doc.documentElement, resizeEvt = 'orientation ...
- GPS部标监控平台的架构设计(十一)-基于Memcached的分布式Gps监控平台
部标gps监控平台的架构,随着平台接入的车辆越来越多,架构也面临越来越大的负载挑战,我们当然希望软件尽可能的优化并能够接入更多的车辆,减少在硬件上的投资.但是当车辆增多到某一个临界点的时候,仍然要面临 ...
- MICAPS数据文件格式
MICAPS系统的数据结构是建立在文件系统基础上的.其特点是: l 利用目录来区分不同的数据来源.要素和层次,即不同的数据来源.要素和层次的数据要放在不同的目录中.同一目录中的数据只能有时次或时效上 ...
- paper 132:图像去噪算法:NL-Means和BM3D
这篇文章写的非常好,确定要~认真~慎重~的转载了,具体请关注本文编辑作者:http://wenhuix.github.io/research/denoise.html 我不会告诉你这里的代码都是f ...
- FRM-40400:事务完成:已应用和保存X条记录"消息框不显示处理方法
oldmesl := :system.message_level; :system.message_level :;--不显示长度超过25的信息 do_key('COMMIT_FORM'); :sys ...
- Fiddler 常用文档
时间飞逝,已经俩月有余没写东西了(本来写的就不多,(^▽^)),最近俩月的苦闷,此处省略 1W 字.... 闲言碎语不多讲,使用 Fiddler 有一小段时间了,今天在这里总结下,一来做个笔记,二来可 ...