C语言编写的自动取款机模拟程序


#include〈stdio。h>
#include<string。h>
#include <stdio.h>
#include〈stdlib.h〉
#include〈direct.h〉
#include<io.h>
#include 〈errno。h>
/********************************************************************************
作者 : 万水千山总是情
QQ : 824955445
时间 : 2014/4/29
功能: : 模拟自动取款机
test : 结构体的运用,文件的读取和写入操作
备注 : 尽量考虑到了各种错误,但是一定有所疏忽,对于错误的处理并不是都感到满意。因为只是模拟
对于某些输入内容没有过于严格的进行检验.
暂时:实现功能如下:
1。用户帐号注册和登录
2.取款,存款,转账,更改密码,余额查询.
以后有时间或者有兴趣会增加其他功能的,比如帐号注销,超级管理员之类的。
**********************************************************************************/
#define AC_USER_NAME_MIN 6
#define AC_PASSWD_MIN 6
#define ILLEAGUE_CHAR 0
#define TIME_OUT -5
#define PASSWD_WRONG —6
#define LOAD_SUCCESSFUL -7
#define CREAT_S -9
#define CREAT_F —10
#define LEAGUE_CHAR -11
#define UNKNOW -12
#define AC_USER_NAME_MAX 15
#define USER_NAME_MAX 12
#define AC_PASSWD_MAX 12
char root_path[255]="D:\\bank_systems\\";//根目录
char auth[255]="D:\\bank_systems\\”;
int users_sum=0;
struct s_user
{
char name[USER_NAME_MAX];
char account_name [AC_USER_NAME_MAX];
char account_passwd [AC_PASSWD_MAX];
char balance[10];
char tel[12];
char auth_flag;
};
struct s_user g_user;
void read_file(FILE *fp,char *read_path,char *des,char *error,char exit_flag)
{
int i=0;
fp=NULL;
if((fp=fopen(read_path,”r”))!=NULL)
{
do
{
des[i]=fgetc(fp);
}while(des[i++]!=EOF);
des[i—1]=’\0';
}
else
{
printf(”%s\n”,error);
if(exit_flag==1)
{
exit(1);
}
}
fclose(fp);
}
void write_file(FILE *fp,char *write_path,char *src,char *error,char exit_flag)
{
fp=NULL;
if((fp=fopen(write_path,"w"))!=NULL)
{
fwrite(src,sizeof(char),strlen(src),fp);
}
else
{
printf(”%s\n",error);
if(exit_flag==1)
{
exit(1);
}
}
fclose(fp);
}
void dtos(double res,char*str_send )
{
long pow[]={1,10,100,1000,10000,100000,1000000};
long temp;
int i=0;
int t=0;
int len=0;
temp=(long)(res*100);
if(res!=0)
{
for(;;)
{
if(temp>=pow[i])
{
i++;
}
else
{
break;
}
}
for(t=0;t<i;t++)
{
str_send[t]=(char)(temp/pow[i-1—t]+'0’);
temp=temp%pow[i-1-t];
}
str_send[i]=’\0’;
len=strlen(str_send);
str_send[len+1]='\0’;
str_send[len]=str_send[len-1];
str_send[len—1]=str_send[len—2];
str_send[len—2]='.’;
if(str_send[0]==’.’)
{
str_send[strlen(str_send)+1]='\0’;
for(i=strlen(str_send);i〉0;i--)
{
str_send[i]=str_send[i—1];
}
str_send[0]=’0';
}
}
else
{
str_send[0]=’0';
str_send[1]='\0’;
}
}
void type_user(struct s_user *user)
{
double result=0;
相关文章:
C语言编写的自动取款机模拟程序
#include〈stdio。h> #include<string。h> #include <stdio.h> #include〈stdlib.h〉 #include〈direct.h〉 #include<io.h> #include 〈errno。h> /********************************************************…...
【常用数据结构】开发中常用的数据结构?
开发中常用的数据结构包括数组、链表、栈、队列、树、图、堆和散列表(哈希表)。这些数据结构在软件开发中有着广泛的应用,并且各自具有独特的特点和用途。 数组 数组是最基本的数据结构之一,用于在内存中连续存储多个元素。数…...
OCC 点云
OCC的基础知识可能还是要系统学习一下,部分导入的模型面类型是很多面都是GeomAbs_BSplineSurface,最终获取参数都要拟合一下,拟合后的生成的面对象没有大小,比如平面只有矢量(大小没有思路) 圆柱拟合面没有…...
方法重写与方法重载
1. 方法重载与方法重写的定义 方法重写(Overriding) 方法重写(Overriding)是指在子类中重新定义与父类中相同的方法。此操作允许子类提供特定的实现,以替代父类的实现。方法重写是实现多态性(Polymorphis…...
Vue3实现地球上加载柱体
最终效果为上图。 实现该技术,需要一些技术,我分别罗列一下: canvas:需要使用canvas根据json来绘制地球,不懂的可以看这篇canvas绘制地球 threejs:需要会使用threejs,这里并没有使用shader&am…...
OpenGL入门003——使用Factory设计模式简化渲染流程
前面两节已经学会了如何使用opengl创建窗口并绘制三角形,我们可以看出有些步骤是固定的,而且都写在main.cpp,这一节我们将了解如何使用Factroy设计模型。将模型渲染逻辑封装在一个单独的类中,简化开发流程,且提高代码复…...
01_AI编程案例展示:借助AI轻松爬取海量网盘链接
爬虫案例展示 今天,我们将展示如何利用AI快速开发一个网络爬虫, 使用的工具是Python和Claude 3.5 Sonnet(国内可用豆包替代) 我们的目标是爬取panhub.fun网站上的夸克网盘链接, 即使你是编程新手,也可以轻松完成这样的任务。 案例1-批量爬取panhub网盘整合包 下…...
【机器学习导引】ch5-神经网络
Q&A 1x1 卷积层在深度学习中的作用? 1x1 卷积层在深度学习中具有几个重要的作用: 通道压缩:1x1卷积可以通过调整输出通道数来减少特征图的深度,从而降低计算成本和参数数量。这有助于在保持特征的情况下简化模型。特征融合&am…...
【Axure原型分享】颜色选择器——填充颜色
今天和大家分享颜色选择器——填充颜色的原型模板,点击颜色区域可以弹出颜色选择器,点击可以选择对应颜色,颜色区域会变色我们选择的颜色,具体效果可以观看下方视频或者打开预览地址体验。 【原型效果】 【Axure高保真原型】颜色…...
怎么安装行星减速电机才是正确的
行星减速电机由于其高效、精密的传动能力,广泛应用于自动化设备、机器人、机床以及其他需要精准控制的领域。正确的安装行星减速电机对于确保设备的性能与延长使用寿命至关重要。 一、前期准备 在进行行星减速电机的安装之前,必须做好充分的前期准备工作…...
Unity程序化生成地形
制作地形: 绘制方块逐个绘制方块并加噪波高度删除Gizmos和逐个绘制 1.draw quad using System.Collections; using System.Collections.Generic; using UnityEngine;[RequireComponent(typeof(MeshFilter))] public class mesh_generator : MonoBehaviour {Mesh m…...
Vxe UI vue vxe-table 表格中使用下拉表格,单元格渲染下拉表格
Vxe UI vue vxe-table 表格中使用下拉表格,单元格渲染下拉表格 单元格中渲染下拉表格,需要使用到 vxe-table-select 这个组件,在 vxe-table 4.7 中使用非常简单,只需要配置好渲染器数据源就可以。 支持单选 也可以多选 代码 …...
Android开发教程实加载中...动效
Android开发教程实加载中…动效 加载中,发送中,匹配中都可以用,就是后面是三个点还是两个点,不断在切换 一、思路: 隔500ms发送一次,改变内容 二、效果图: 看视频更加直观点: An…...
NVR设备ONVIF接入平台EasyCVR视频融合平台智慧小区视频监控系统建设方案
一、方案背景 智慧小区构成了“平安城市”建设的基石。随着社会的进步,社区安全问题逐渐成为公众关注的热点。诸如高空抛物、乱丢垃圾、破坏车辆、入室盗窃等不文明行为和违法行为频繁出现。目前,许多小区的物业管理和安全防护系统仍然较为简单和陈旧&a…...
适配器模式适用的场景
适配器模式是一种常用的设计模式,能够将不兼容的接口转换为客户端所需的接口。在实际开发中,我们常常会遇到需要统一接口、替换外部系统、兼容旧接口或适配不同数据格式的情况。本文将结合详细的代码示例,介绍适配器模式的适用场景。 1. 统一…...
Ambari里面添加hive组件
1.创建hive数据库 在添加hive组件之前需要做的事情,先在master这个虚拟机里面创建好hive 先进入虚拟机里面进入mysql 然后输入这个命令看看有没有自己创建的hive数据库 show databases;有的话会显示下面这个样子 没有的同学使用以下命令可以在MySQL中创建hive数…...
Windows部署rabbitmq
本次安装环境: 系统:Windows 11 软件建议版本: erlang OPT 26.0.2rabbitmq 3.12.4 一、下载 1.1 下载erlang 官网下载地址: 1.2 下载rabbitmq 官网下载地址: 建议使用解压版,安装版可能会在安装软件…...
【Flask】四、flask连接并操作数据库
目录 前言 一、 安装必要的库 二、配置数据库连接 三、定义模型 四、操作数据库 1.添加用户 2.删除用户 3.更新用户信息 4查询所有用户 五、测试结果 前言 在Flask框架中,数据库的操作是一个核心功能,它允许开发者与后端数据库进行交互…...
ES跟Kafka集成
配合流程 1. Kafka作为分布式流处理平台,能够实时收集和处理不同数据源的数据流; 2. 通过Kafka Connect或者Logstash等中间件,可以将Kafka中的数据流实时推送到Elasticsearch中; 3. Elasticsearch接收到数据后,会根据…...
Python Matplotlib:基本图表绘制指南
Python Matplotlib:基本图表绘制指南 Matplotlib 是 Python 中一个非常流行的绘图库,它以简单易用和功能丰富而闻名,适合各种场景的数据可视化需求。在数据分析和数据科学领域,Matplotlib 是我们展示数据的有力工具。本文将详细讲…...
BGE-Reranker-v2-m3为何必须用?RAG幻觉过滤入门必看
BGE-Reranker-v2-m3为何必须用?RAG幻觉过滤入门必看 如果你正在搭建RAG系统,或者已经搭建了但总觉得回答质量时好时坏,经常出现“幻觉”——也就是模型一本正经地胡说八道——那你很可能遇到了一个核心问题:向量检索“搜不准”。…...
【Python内存管理终极指南】:20年专家实测5大智能策略,90%开发者忽略的GC优化盲区揭晓
第一章:Python智能体内存管理策略对比评测报告全景概览本报告聚焦于当前主流Python智能体(Agent)框架在内存管理层面的设计差异与运行表现,涵盖LangChain、LlamaIndex、AutoGen及自研轻量Agent Runtime四大实现。评测维度包括对象…...
基于Comsol相控阵技术的实用钢纵波超声波成像模型:单层缺陷TFM成像与压力声学仿真
comsol 相控阵 超声成像 此模型为压力声学仿真超声波,实用钢纵波速度6000 密度7.8e-9 单层缺陷TFM成像相控阵超声检测这玩意儿在工业NDT圈子里算是老熟人了,今天咱们拿COMSOL搞个钢材料缺陷成像的骚操作。模型基础是压力声学模块,材料参数先给…...
SiameseUIE多任务统一Schema设计:一套定义覆盖NER/关系/事件/情感
SiameseUIE多任务统一Schema设计:一套定义覆盖NER/关系/事件/情感 1. 引言:信息抽取的“瑞士军刀” 想象一下,你手头有一堆杂乱无章的中文文档——可能是新闻稿、用户评论、技术报告或者客服对话。老板让你快速从中找出所有提到的人名、公司…...
Graphormer开源模型部署教程:3.7GB小模型+RTX4090一键启动分子建模服务
Graphormer开源模型部署教程:3.7GB小模型RTX4090一键启动分子建模服务 1. 项目介绍 Graphormer是一种基于纯Transformer架构的图神经网络模型,专门为分子图(原子-键结构)的全局结构建模与属性预测而设计。这个3.7GB的小模型在OG…...
Agent上线后有专人运营支持吗?深度解析AI Agent的全生命周期运维保障体系
随着AI Agent(智能体)在企业业务场景中的深度渗透,从简单的流程自动化到复杂的跨境贸易、研发辅助,企业对“数字员工”的期待已不再局限于单次的开发交付,而是转向了长期的稳定运行与持续进化。对于许多决策者而言&…...
S32K312实战:用AUTOSAR Icu模块测量PWM占空比与周期(基于NXP MCAL与EB Tresos)
S32K312实战:AUTOSAR Icu模块精准测量PWM信号的工程实践 在汽车电子开发中,PWM信号的精确测量是ECU功能实现的基础环节。无论是发动机控制单元中的转速信号采集,还是车身电子中的执行器状态反馈,都需要对PWM信号的周期、占空比等参…...
实战演练:基于快马平台,快速搭建一个软件密钥授权管理后台原型
实战演练:基于快马平台,快速搭建一个软件密钥授权管理后台原型 最近在开发一个软件授权管理系统时,发现很多项目都需要类似的密钥管理功能。正好用InsCode(快马)平台快速搭建了一个原型,以VMware16密钥管理为例,分享一…...
WebPages 发布
WebPages 发布 引言 随着互联网技术的飞速发展,Web技术已经成为现代信息社会不可或缺的一部分。WebPages作为Web技术的重要应用,旨在为用户提供高效、便捷的网页浏览体验。本文将详细介绍WebPages的发布过程,包括技术选型、功能设计、性能优化以及用户体验等方面。 技术选…...
SAP BAPI实战指南:核心模块高频接口速查与应用解析
1. SAP BAPI入门:为什么开发者需要这份速查手册 第一次接触SAP BAPI时,我盯着满屏的接口文档差点崩溃——光是FICO模块就有二十多个常用BAPI,每个接口的参数列表长得像毕业论文。后来在项目上踩过几次坑才明白,BAPI的难点不在于技…...
