ATM提款机及其可视化处理(四)

2023-11-02 08:10
文章标签 可视化 处理 atm 提款机

本文主要是介绍ATM提款机及其可视化处理(四),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在前面我们完成了用户端和管理员端的基础代码实现,这一节我们要实现整合在一起的功能实现

我们在整合代码时,一般将函数的实现和mian函数放在两个不同的.cpp文件中,这样只需要在函数中引用头文件和定义即可

首先我们就要引入提前定义的头文件

并且定义好要使用的变量

在start函数的参数中我们也可以看见要体现出传入指针从而达到通过形式参数的改变而引起实际参数的改变

 

这里的return可以替换成exit(0)更佳

其实函数体的主体实现还是依赖的

switch case方式进行选择然后实现

这里的for循环结构替换成whlie(1)更佳

这里使用for是为了方便调试

 

在引入管理员头文件后

就可以正常使用其中定义实现的函数

 

这里有一个密码输入三次锁卡操作

 

 

 

这里需要注意的是,用户的很多功能是要登陆之后才能实现的,所以我们需要将功能写在登陆成功之下

 

 

 

完整源码

#define _CRT_SECURE_NO_WARNINGS
#include "Bank1.h"
#include <stdio.h>
#include"Manger.h"void start(PList list, MPlist Mlist) {int point, flag, key;int choice, id,password,  money;char name[10],  idcard[20],  phone[12];printf("请选择身份:1.用户 2.管理员 ");scanf("%d", &point);if (point ==2) {for (int i = 0; i < 4; i++) {printf("请选择:  1. 注册 2. 登录  3.退出");scanf("%d", &choice);if (choice == 3){return;}switch (choice) {default:printf("输出错误请重试\n");break;case 1:printf("请输入账号、密码、姓名、电话、身份证:\n");scanf("%d%d%s%s%s", &id, &password, name, phone, idcard);Muser user;init_Muser(&user, name, idcard, phone);register_Manger(Mlist, id, password, &user);break;case 2:printf("请输入账号,密码:");scanf("%d%d", &id, &password);key = login_Manger(Mlist, id, password);while (Mlist->arr->count < 3) {if (key != -1) {printf("请选择:3.激活  4.注销\n");scanf("%d", &choice);switch (choice) {case 3:printf("请输入身份证号\n");scanf("%s", &idcard);active_Manger(Mlist, idcard);break;case 4:destory_Manger(Mlist);break;}}else{key = login_Manger(Mlist, id, password);}break;}}}}if (point == 1) {for (int i = 0; i < 6; i++) {printf("请选择:  1. 注册 2. 登录 3. 挂失  4.激活  5.注销  6.退出");scanf("%d", &choice);if (choice == 6){return;}switch (choice) {default:printf("输出错误请重试\n");break;case 1:printf("请输入账号、密码、姓名、电话、身份证、初始金额:\n");scanf("%d%d%s%s%s%d", &id, &password, name, phone, idcard, &money);User user;init_user(&user, name, phone, idcard);BankCard card;init_card(&card, id, password, money, &user);register_card(list, id, password, money, &user);break;case 2:printf("请输入账号,密码:");scanf("%d%d", &id, &password);flag = login_card(list, id, password);while (list->cards_array->count < 3) {if (flag != -1) {printf("请选择:1.存款 2.取款 3.转账 4. 查看流水 5.查看开卡时间 6.查余额 7.退出");scanf("%d", &choice);if (choice == 7){break;}switch (choice){default:printf("输出错误请重试\n");break;case 1:printf("请输入存钱金额:\n");scanf("%d", &money);savemoney(&card, money);break;case 2:printf("请输入取款金额:\n");scanf("%d", &money);withdrawmoney(&card, money);break;case 3:printf("请输入转账的账号和转账金额:\n");scanf("%d%d", &id, &money);transfer(list, &card, id, money);break;case 4:getwatermessage(&card);break;case 5:get_create_card_date(&card);break;case 6:getmoney(&card);break;}}else {flag=login_card(list, id, password);}}break;case 3:printf("请输入身份证号:\n");scanf("%s", idcard);lost(list, idcard);break;case 4:printf("请输入身份证号:\n");scanf("%s", idcard);active(list, idcard);break;case 5:printf("请输入账号:\n");int index = SearchCard(list, id);destory_card_records(&card);destory_card(list, index);break;}}}}

  

#include "Bank1.h"
#include <stdio.h>
#include"Manger.h"
void start(PList list,MPlist Mlist);int main() {SqList_BankCards cards;Mlist Mcard;init_sqlist_cards(&cards);init_Manger_list(&Mcard);start(&cards,&Mcard);destory(&cards);destory_Manger(&Mcard);return 0;
}

在主函数中我们只需要写入start函数和销毁函数即可

这篇关于ATM提款机及其可视化处理(四)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/329258

相关文章

Git可视化管理工具(SourceTree)使用操作大全经典

《Git可视化管理工具(SourceTree)使用操作大全经典》本文详细介绍了SourceTree作为Git可视化管理工具的常用操作,包括连接远程仓库、添加SSH密钥、克隆仓库、设置默认项目目录、代码... 目录前言:连接Gitee or github,获取代码:在SourceTree中添加SSH密钥:Cl

Pandas中统计汇总可视化函数plot()的使用

《Pandas中统计汇总可视化函数plot()的使用》Pandas提供了许多强大的数据处理和分析功能,其中plot()函数就是其可视化功能的一个重要组成部分,本文主要介绍了Pandas中统计汇总可视化... 目录一、plot()函数简介二、plot()函数的基本用法三、plot()函数的参数详解四、使用pl

Java 中的 @SneakyThrows 注解使用方法(简化异常处理的利与弊)

《Java中的@SneakyThrows注解使用方法(简化异常处理的利与弊)》为了简化异常处理,Lombok提供了一个强大的注解@SneakyThrows,本文将详细介绍@SneakyThro... 目录1. @SneakyThrows 简介 1.1 什么是 Lombok?2. @SneakyThrows

在 Spring Boot 中实现异常处理最佳实践

《在SpringBoot中实现异常处理最佳实践》本文介绍如何在SpringBoot中实现异常处理,涵盖核心概念、实现方法、与先前查询的集成、性能分析、常见问题和最佳实践,感兴趣的朋友一起看看吧... 目录一、Spring Boot 异常处理的背景与核心概念1.1 为什么需要异常处理?1.2 Spring B

python处理带有时区的日期和时间数据

《python处理带有时区的日期和时间数据》这篇文章主要为大家详细介绍了如何在Python中使用pytz库处理时区信息,包括获取当前UTC时间,转换为特定时区等,有需要的小伙伴可以参考一下... 目录时区基本信息python datetime使用timezonepandas处理时区数据知识延展时区基本信息

使用Python实现矢量路径的压缩、解压与可视化

《使用Python实现矢量路径的压缩、解压与可视化》在图形设计和Web开发中,矢量路径数据的高效存储与传输至关重要,本文将通过一个Python示例,展示如何将复杂的矢量路径命令序列压缩为JSON格式,... 目录引言核心功能概述1. 路径命令解析2. 路径数据压缩3. 路径数据解压4. 可视化代码实现详解1

Python 交互式可视化的利器Bokeh的使用

《Python交互式可视化的利器Bokeh的使用》Bokeh是一个专注于Web端交互式数据可视化的Python库,本文主要介绍了Python交互式可视化的利器Bokeh的使用,具有一定的参考价值,感... 目录1. Bokeh 简介1.1 为什么选择 Bokeh1.2 安装与环境配置2. Bokeh 基础2

Python Transformers库(NLP处理库)案例代码讲解

《PythonTransformers库(NLP处理库)案例代码讲解》本文介绍transformers库的全面讲解,包含基础知识、高级用法、案例代码及学习路径,内容经过组织,适合不同阶段的学习者,对... 目录一、基础知识1. Transformers 库简介2. 安装与环境配置3. 快速上手示例二、核心模

一文详解Java异常处理你都了解哪些知识

《一文详解Java异常处理你都了解哪些知识》:本文主要介绍Java异常处理的相关资料,包括异常的分类、捕获和处理异常的语法、常见的异常类型以及自定义异常的实现,文中通过代码介绍的非常详细,需要的朋... 目录前言一、什么是异常二、异常的分类2.1 受检异常2.2 非受检异常三、异常处理的语法3.1 try-

Python使用getopt处理命令行参数示例解析(最佳实践)

《Python使用getopt处理命令行参数示例解析(最佳实践)》getopt模块是Python标准库中一个简单但强大的命令行参数处理工具,它特别适合那些需要快速实现基本命令行参数解析的场景,或者需要... 目录为什么需要处理命令行参数?getopt模块基础实际应用示例与其他参数处理方式的比较常见问http