ATM系统

article/2025/8/20 16:51:28

ATM系统


1、简介

ATM系统包含两个菜单栏,一个是登录、注册菜单栏,一个时是功能菜单栏。
ATM系统共有四个功能:
  充值功能:用户登录成功后可以为本账户充值(存款)。
  转账功能:用户登录后可以实现两个用户转账功能。
  提现功能:用户登录成功后可以为本用户提现(取钱)。
  查询余额功能:用户登录成功后可以查看自己账户的余额。
ATM系统包含日志系统:记录,用户的注册、充值、转账、提现、查询、退出(正常退出)信息。
ATM系统的数据和日志采用文件系统书写,可以直接替换成数据库等。

2、准备

请添加图片描述

文件系统存储在数据文件夹中:db.log存储日志信息、db.txt存储的是用户的账户信息(用户的余额)、user.txt存储注册信息(用户信息、密码)

# 使用到的标准库
import  datetime

3、菜单栏

3.1 主菜单栏

请添加图片描述

def tips1():print("""
====================主菜单===================1 --> 注册2 --> 登录3 --> 退出
==============================================""")

3.2 功能菜单栏

请添加图片描述

def tips2():print("""
====================功能菜单===================1 --> 充值功能2 --> 转账功能3 --> 提现功能4 --> 查询余额功能5 --> 退出
==============================================""")

4、主页面

4.1 注册功能

请添加图片描述

def register():"""实现用户注册"""import datetimeprint("欢迎来到注册页面"+"-"*20)ip_name = input("请输入用户名>>>:")passwd = input("请输入密码>>>:")passwd_1 = input("确定密码>>>:")while passwd != passwd_1:print("两次密码不一致,请从新输入密码"+"*"*20)passwd = input("请输入密码>>>:")passwd_1 = input("确定密码>>>:")with open("./数据/user.txt","a+",encoding="utf-8") as f:f.seek(0,0)for line in f:try:name,_ = line.strip().split(":")while ip_name == name:print("用户名已经被占用,重新输入用户名" + "*" * 10)ip_name = input("请重新输入用户名>>>:")except ValueError:passf.write("{}:{}\n".format(ip_name,passwd))with open("./数据/db.log", "a", encoding="utf-8") as f:new_time = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')f.write("{}-->在{}注册成功\n".format(ip_name, new_time))with open("./数据/db.txt","a",encoding="utf-8") as f:f.write("{}:0\n".format(ip_name))print("{}注册成功!".format(ip_name))

4.2 登录功能

请添加图片描述

def login():"""实现用户登录"""import datetimeprint("欢迎来到登录页面"+"-"*20)ip_name = input("请输入用户名>>>:")ip_passwd = input("请输入密码>>>:")with open("./数据/user.txt","r",encoding="utf-8") as f:for line in f:try:name,passwd = line.strip().split(":")if ip_name == name and ip_passwd == passwd:print("{},欢迎来到AMT取款机".format(name))with open("./数据/db.log", "a", encoding="utf-8") as fo:new_time = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')fo.write("{}-->在{}登录成功\n".format(ip_name, new_time))return 1,ip_nameelif ip_name == name or ip_passwd != passwd:ip_passwd = input("密码错误,请重新输入密码>>>:")while ip_passwd != passwd:ip_passwd = input("密码错误,请重新输入密码>>>:")print("{},欢迎来到AMT取款机".format(name))with open("./数据/db.log", "a", encoding="utf-8") as fo:new_time = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')fo.write("{}-->在{}登录成功\n".format(ip_name, new_time))return 1,ip_nameelse:print("请先注册再登录!!!")except ValueError:passreturn 0,0

5、功能页面

5.1 充值功能

请添加图片描述

def recharge(ip_uesr):"""用户充值"""import osimport datetimeprint("欢迎来到充值界面"+'-'*30)try:num = float(input("请输入充值的钱(元)>>>:"))if num <= 0:print("充值金额小于0,充值失败!")else:with open("./数据/db.txt","r",encoding="utf-8") as fi,\open("./数据/.db.txt.swap","w",encoding="utf-8") as fo:for line in fi:try:uesr,money = line.strip().split(":")if ip_uesr == uesr:new_money = float(money) + numfo.write("{}:{}\n".format(ip_uesr,new_money))else:fo.write(line)except:passos.remove("./数据/db.txt")os.rename("./数据/.db.txt.swap","./数据/db.txt")print("{}充值{}元成功!".format(ip_uesr,num))with open("./数据/db.log","a",encoding="utf-8") as f:new_time = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')f.write("{}-->在{}-->充值{}元\n".format(ip_uesr,new_time,num))except  ValueError: # float转换错误print("请输入正确的金额!!!")

5.2 转账功能

请添加图片描述

def transfer_accounts():"""用户转账"""import osimport datetimeprint("欢迎来到转账界面"+'-'*30)try :payment_user = input("转账付款用户>>>:")payment_money = float(input("转账金额(元)>>>:"))collection_user = input("转账收款用户>>>:")user_list = []with open("./数据/db.txt","r",encoding="utf-8") as f:for line in f:try:user,_ = line.strip().split(":")user_list.append(user)except ValueError:  # line 可能没有值passif (payment_user in user_list) and (collection_user in user_list):if payment_money < 0:print("转账的金额小于0,转账失败!")else:with open("./数据/db.txt", "r", encoding="utf-8") as fi, \open("./数据/.db.txt.swap", "w", encoding="utf-8") as fo:for line in fi:try:uesr, money = line.strip().split(":")if uesr == payment_user:if payment_money > float(money):fo.write(line)print("转账失败,余额不足!!")returnelse:new_money = float(money) - payment_moneyfo.write("{}:{}\n".format(payment_user, new_money))print("{}向{}转账{}元成功".format(payment_user, collection_user, payment_money))elif uesr == collection_user:new_money = float(money) + payment_moneyfo.write("{}:{}\n".format(collection_user, new_money))else:fo.write(line)except ValueError:passos.remove("./数据/db.txt")os.rename("./数据/.db.txt.swap", "./数据/db.txt")with open("./数据/db.log", "a", encoding="utf-8") as f:new_time = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')f.write("{}-->在{}-->向{}转账{}元\n".format(payment_user, new_time, collection_user, payment_money))elif (payment_user not in user_list) and (collection_user in user_list):print("转账付款用户错误,转账失败!!")elif (collection_user not in user_list) and (payment_user in user_list):print("转账收款用户错误,转账失败!!")else:print("转账收款和付款用户均错误,转账失败!!")except  ValueError: # float转换错误print("请输入正确的金额!!!")

5.3 提现功能

请添加图片描述

def withdrawal(ip_user):"""用户提现"""import osimport datetimeprint("欢迎来到提现界面" + '-' * 30)try:num = float(input("请输入提现的金额(元)>>>:"))if num <= 0:print("提现金额小于0,提现失败!")else:with open("./数据/db.txt", "r", encoding="utf-8") as fi, \open("./数据/.db.txt.swap", "w", encoding="utf-8") as fo:for line in fi:try:uesr, money = line.strip().split(":")if float(money) >= num :if ip_user == uesr:new_money = float(money) - numfo.write("{}:{}\n".format(ip_user, new_money))else:fo.write(line)else:print("余额不足,提现失败!!")returnexcept:   # line 空值 split(":")报错passos.remove("./数据/db.txt")os.rename("./数据/.db.txt.swap", "./数据/db.txt")print("{}提现{}元成功!".format(ip_user, num))with open("./数据/db.log", "a", encoding="utf-8") as f:new_time = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')f.write("{}-->在{}-->提现{}元\n".format(ip_user, new_time, num))except  ValueError:  # float转换错误print("请输入正确的金额!!!")

5.4 查看余额功能

请添加图片描述

def query(ip_user):"""余额查询"""import datetimewith open("./数据/db.txt", "r", encoding="utf-8") as fi:for line in fi:try:uesr, money = line.strip().split(":")if uesr == ip_user:print("用户:{}\n余额:{}".format(ip_user,money))except:  # line 空值 split(":")报错passwith open("./数据/db.log", "a", encoding="utf-8") as f:new_time = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')f.write("{}-->在{}-->查看余额\n".format(ip_user, new_time))

6、运行主代码

if __name__ == "__main__":while True:tips1()main_function = input("请选择功能>>>:")if main_function == "1":        # 注册register()elif main_function == "2":      # 登录n,user = login()while n == 1:tips2()function = input("请选择功能>>>:")if function == "1":     # 充值功能recharge(user)elif function == "2":   # 转账功能transfer_accounts()elif function == "3" :  # 提现功能withdrawal(user)elif function == "4":   # 查询余额功能query(user)elif function == "5":   # 退出with open("./数据/db.log", "a", encoding="utf-8") as f:new_time = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')f.write("{}-->在{}-->退出登录\n".format(user,new_time))breakelse:print("该功能正在完善,敬请期待!!")elif main_function == "3":      # 退出breakelse:print("该功能正在完善,敬请期待!!")

http://chatgpt.dhexx.cn/article/iEuURA5d.shtml

相关文章

银行卡在哪个银行都能取款吗?

银行卡要想取款&#xff0c;分两种情况。 第一种情况是在银行窗口取款&#xff0c;你是哪个银行的银行卡&#xff0c;就得在哪个银行取款&#xff0c;在不同的银行窗口是办理不了的&#xff0c;比如你的卡是工商银行的&#xff0c;你去建设银行窗口是取不了现金的。 第二种情况…

ATM取款机系统

模拟银行实现ATM机取款系统 该系统使用( ( (SQLServer) ) )数据库 功能介绍&#xff1a; 开户&#xff08;到银行填写开户申请单&#xff09;取钱存钱查询余额转账 根据需求设计相对应的数据库概念模型 流程分步详解 1 创建数据库Bank_db --创建数据库 CREATE DATABASE B…

银行ATM活动图

一、 图形文档 1. 密码验证活动图 2. 取款活动图 3. 存款活动图 4. 转账活动图 5. 查询活动图 6. 改密活动图 7. ATM管理员操作活动图 二、 文字说明 1、密码验证活动图 描述银行主机密码验证的过程&#xff0c;包含的动作有&#xff1a;插卡、提示输入密码、输入密码、密…

银行ATM系统——分析类图及文档

一、图形文档 从不同角度出发&#xff0c;可以得出的分析类图有以下两种&#xff1a; 基于类的责任得出的分析类图 基于用况驱动得出的分析类图 二、 文字说明 1、 类图综述 银行ATM分析类类图主要包括实体类&#xff0c;描述了类与类之间的关系&#xff0c;以及说明类有何…

支付平台--清结算流程详解及对账详解

图为清算对账流程 在第三方支付平台拿到银行&#xff08;应该走专线&#xff09;给的对账文件后&#xff0c;会有手动对账和自动对账功能。 手动对账是对自动对账的补充&#xff0c;在自动对账出现问题或者出现差错时再人工介入进行重新对账的操作。 而在很多的情况下&#xf…

数商云采购管理系统支付结算功能详解,实现建筑工程企业采购业务智能化管理

建筑工程行业企业过去受技术、场地等限制&#xff0c;一直采用传统的采购方式&#xff0c;再加上整个行业内部信息相对割裂、采购面临层层传播、中间沟通亦面临多层税费等问题&#xff0c;为建筑工程采购工作增添了不少困难。随着互联网时代的发展&#xff0c;在大数据、云计算…

【支付架构】跨境支付

目录 1 业务介绍 1.1 什么是跨境支付 1.2 跨境支付发展历程 2 技术实现 2.1 业务流程 2.2 交互设计 简单地说&#xff0c;跨境支付指的是两个或两个以上的国家或地区因国际贸易所产生的债券&#xff0c;再借助一定的支付方式与结算工具&#xff0c;实现资金能够跨国…

国际业务结算

国际结算 国际结算(International Settlement)&#xff1a;指处于两个不同国家的当事人&#xff0c;&#xff08;因为商品买卖、服务供应、资金调拨、国际借贷&#xff09;通过银行办理的两国间货币收付业务。 信用证 信用证是一种有条件的银行付款承诺&#xff0c;是开证行…

支付清结算之账户和账务处理(详解)

本文重点介绍清结算中的账户和账务的处理。正文开始前可复习《支付清结算之基本概念和入门》和《支付清结算之渠道侧处理》&#xff0c;以便理解这里的流程。 目录 一、账户体系 1、资产类账户 2、负债类账户 3、所有者权益类账户 4、损益类账户 5、成本类账户 6、共同…

电商平台资金结算流程是什么样的?

&#xff08;图源&#xff1a;pexels网站&#xff09; 在疫情的影响下&#xff0c;越来越多的传统企业开始转向电商&#xff0c;希望通过互联网来拓展业务&#xff0c;开拓新市场。同时&#xff0c;也有越来越多的新兴企业从事电子商务&#xff0c;利用互联网的优势快速发展壮…

支付清结算之账户和账务处理

这是清结算系列的第四篇文章&#xff0c;本文重点介绍清结算中的账户和账务的处理。 请务必阅读这几篇文章以便理解这里的流程。 支付清结算之基本概念和入门支付清结算之渠道侧处理支付清结算之电商侧处理 一、账户体系 在设计清结算系统前&#xff0c;首先需要完成账户体系…

经济法基础(2020年)——第三章 支付结算法律制度

第一节 支付结算概述 支付结算概述 未经中国人民银行批准的非银行金融机构和其他单位不得作为中介机构办理支付结算业务 支付结算工具和原则 传统的人民币非现金支付工具 三票一卡 汇票、本票、支票和银行卡结算方式 汇兑、托收承付和委托收款 原则 恪守信用、履行付款原…

电子支付与结算总结

电子支付与结算总结 第一章 电子支付概述名词解释简答题选择判断题 第二章 支付工具与支付方式名词解释简答题 第三章 网上银行支付名词解释简答题 第四章 电话支付名词解释简答题 第五章 移动支付名词解释简答题讨论题视频 第六章 自助银行支付名词解释简答题讨论题 第七章 跨…

中国支付结算系统发展简史

中国支付结算系统发展史 1949年到今天&#xff0c;中国支付结算系统经历了3个重要的阶段&#xff0c;从无到有&#xff0c;从简单到完善。今天中国的现代支付系统加上各个商业银行内部系统作为基础设计&#xff0c;支撑着第三方支付系统&#xff0c;让我们享受着不需要现金以及…

一张美团外卖的小票看透支付清结算架构!

见字如面&#xff0c;我是军哥&#xff01; 我很少推荐别人的公众号&#xff0c;因为我能看上的原创公众号并不多&#xff0c;让我主动推荐就更难了。 今天这位朋友叫宇宙&#xff0c;认识有两年了&#xff0c;在支付行业里非常有名气&#xff0c;最近闲着无聊翻了他多篇原创文…

支付 VS 清算 VS 结算

概念 标准定义 支付&#xff1a; 完成付款人向收款人转移可以接受的货币债权的过程&#xff0c;包括交易过程、清算过程和结算过程等三个过程&#xff08;一个完整的支付过程&#xff0c;清算和结算都属于支付的某个环节&#xff09;&#xff1b;清算&#xff1a; 包含了在收…

第三方支付平台结算流程是什么样的?

在电商发展的初期曾遇到过一个瓶颈&#xff0c;那就是买卖双方对彼此互不信任&#xff0c;互联网市场中的交易是无形的&#xff0c;大家对对方的信息一无所知&#xff0c;买家害怕自己给了钱没收到货&#xff0c;卖家害怕自己给了货没收到钱&#xff0c;由于缺少这种信任&#…

支付结算系统

不同银行之间 以支付的手段达到结算的目的 所有银行在中国人民银行开 人民银行清算账户&#xff0c;在这个账户存款 用于资金清算通过 人民银行支付系统&#xff08;二代支付系统&#xff09; / 城商行支付系统 等在银行账户间转账结算 文章目录 清算账户管理系统大额支付系统…

支付清结算介绍

清结算定义 交易 - 交易过程包括了支付产生&#xff0c;确认和发送&#xff0c;特别是交易有关各方身份的确认以及支付工具能力的确认。 清算 - 是收付双方之间交换支付工具或相关支付信息&#xff0c;清讫债权债务关系的过程和方法。支付工具的交换包括了交易撮合&#xff0c;…

支付宝直付通实现账单结算(分账)功能完整Demo

&#x1f60a; 作者&#xff1a; 一恍过去 &#x1f496; 主页&#xff1a; https://blog.csdn.net/zhuocailing3390 &#x1f38a; 社区&#xff1a; Java技术栈交流 &#x1f389; 主题&#xff1a; 支付宝直付通实现账单结算(分账)功能完整Demo ⏱️ 创作时间&#xff…