一个简单的ATM程序

目前实现的功能不多,目前具有的功能,用户的登录,转账,提现,查看余额。并用装饰器检测在各个接口用户是否有登录。

好了,上代码。

这是各个文件

==========>atm.py#Auther: He Jianhanimport os,sysroutes = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))sys.path.append(routes)

from core import main#调入主运行文件并执行main.run(routes)

==========>main.pyimport os,sys,jsonfrom core import operation

sign_in = {"name":None,"stata":False,"information":None}#name;用于存储用户姓名#stata:存储登录信息#inforamtion :存储用户文件信息

def into_sign_in(routes,name):    #将储存用户信息的文件代入遇到sign_in    with open(routes + r"\user\%s" % (name), "r") as f:        username = json.load(f)    sign_in["name"] = name    sign_in["stata"] = True    sign_in["information"] = username

def run(routes):    #让用户输入登录信息    #登录成功执行选项操作模块    loop = True    while loop:        name = input("Your ID:")        password = input("Your password:")        if os.path.exists(routes+r"\user\%s"%(name)):            with open(routes+r"\user\%s"%(name),"r") as f:                username = json.load(f)            if password == username["password"]:                into_sign_in(routes, name)                print("welcom \033[31;1m%s\033[0m !!!"%(name))                operation.operations(sign_in)                loop = False            else:                print("密码错误")        elif name == "q":            loop = False        else:            print("找不到该用户")

==========>operation.py
from core import paragraph

def operations(sign_in):    #显示选项操作信息    #根据选择调取相应函数    operation_loop = True    while operation_loop:        print("你想要做哪些操作:"              "\n0 显示余额"              "\n1 转账"              "\n2 提现"              "\n3 退出")        operation_dict = {"0":"look",                          "1":"repay",                          "2":"take",                          "3":"exit"}        choice_operation = input("选择你要的操作")        if choice_operation in operation_dict:            operation_dict_itmes = operation_dict[choice_operation]            if operation_dict_itmes == "look":                print("你的余额剩下\033[31;1m%s\033[0m"%(sign_in["information"]["money"]))            elif operation_dict_itmes == "take":                while True:                    money = input("你要提现多少金额")                    if money.isdigit():                        money = float(money)                        paragraph.paragraphs(sign_in,operation_dict_itmes,money)                    elif money == "q":                        break                    else:                        print("错误!!!!!请输入整数")            elif operation_dict_itmes == "repay":                while True:                    name = input("你转账给谁")                    if os.path.exists(routes+r"\user\%s"%(name)):                        while True:                            money = input("你要转多少金额")                            if money.isdigit():                                money = int(money)                                go = paragraph.paragraphs(sign_in, operation_dict_itmes, money)                                if go:                                    paragraph.paragraphs(name, "Receivables", money)                            elif money == "q":                                break                            else:                                print("请输入整数")                        break                    elif name == "q":                        break                    else:                        print("没有该用户")            elif operation_dict_itmes == "exit":                operation_loop = False        else:            print("没有这个操作")

==========>paragraph.py
import os,jsonroutes = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

paragraph_dict = {"repay":{"plus_reduce":"reduce","interest":"0"},                  "take":{"plus_reduce":"reduce","interest":"0.05"},                  "Receivables":{"plus_reduce":"plus","interest":"0"}}#根据相应的类型决定加减金额,还有利息

def load(name,result_plus_reduce):    #根据用户文件信息打开相关文件进行覆盖存储    name["money"] = result_plus_reduce    with open(routes+r"\user\%s"%(name["name"]),"w") as loadss:        json.dump(name,loadss)

def prov_login(paragraphs):    #装饰器,用于验证用户是否登录,防止未登录就进行金额加减操作    def proving(*args,**kwargs):        if type(args[0]) == dict:            if args[0]["stata"]:                paragraphs(*args)                return True            else:                print("账号没有登录")                return        else:            paragraphs(*args)    return proving

@prov_logindef paragraphs(sign_in,operation_dict_itmes,money):    #进行金额的加减操作    if paragraph_dict[operation_dict_itmes]["plus_reduce"] == "plus":        with open(routes + r"\user\%s" % (sign_in), "r") as dumpss:            dumpsss = json.load(dumpss)        result_plus_reduce = float(dumpsss["money"]) + money        result_plus_reduce = round(result_plus_reduce,2)        load(dumpsss, result_plus_reduce)    elif paragraph_dict[operation_dict_itmes]["plus_reduce"] == "reduce":        result_plus_reduce = float(sign_in["information"]["money"]) - money - \                             float(paragraph_dict[operation_dict_itmes]["interest"])*money        result_plus_reduce = round(result_plus_reduce, 2)        if result_plus_reduce < 0 :            print("你的\033[31;1m金额\033[0m不足")        else:            load(sign_in["information"], result_plus_reduce)            print("你%s了\033[31;1m%s\033[0m"%(operation_dict_itmes,int(money)))
时间: 2025-01-04 04:33:10

一个简单的ATM程序的相关文章

利用JSP编程技术实现一个简单的购物车程序

实验二   JSP编程 一.实验目的1. 掌握JSP指令的使用方法:2. 掌握JSP动作的使用方法:3. 掌握JSP内置对象的使用方法:4. 掌握JavaBean的编程技术及使用方法:5. 掌握JSP中数据库编程方法: 二.实验要求 : 利用JSP编程技术实现一个简单的购物车程序,具体要求如下. (1)用JSP编写一个登录页面,登录信息中有用户名和密码,分别用两个按钮来提交和重置登录信息. (2)编写一个JSP程序来处理用户提交的登录信息,如果用户名为本小组成员的名字且密码为对应的学号时,采用J

一个简单的Qt程序分析

本文概要:通过一个简单的Qt程序来介绍Qt程序编写的基本框架与一些Qt程序中常见的概念 #include <QApplication> #include <QPushButton> int main(int argc, char *argv[]) { QApplication app(argc, argv); QPushButton *button = new QPushButton("Quit"); QObject::connect(button, SIGNA

通过反汇编一个简单的C程序,分析汇编代码理解计算机是如何工作的

实验一:通过反汇编一个简单的C程序,分析汇编代码理解计算机是如何工作的 学号:20135114 姓名:王朝宪 注: 原创作品转载请注明出处   <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 1 1)实验部分(以下命令为实验楼64位Linux虚拟机环境下适用,32位Linux环境可能会稍有不同) 使用 gcc –S –o main.s main.c -m32 命令编译成汇编代码,如下代码中的数字请自行修改以防与

一个简单的Java程序

一个.NET技术还是很菜的水平的猿人现在要去学习Java不知道是坏是好,无从得知啊! 不过在网上看了好多Java方面的简单例子,感觉Java还是蛮不错的么!不管以后怎么样啦,先开始自己的Java菜鸟之旅吧! 建立一个Java项目,建立一个属于自己的包,然后就开始自己的Java之旅... 创建的时候勾上这个生成main方法的选项,这个好像类似与我们.Net程序里控制台程序有木有.... 创建完成后就是这么一个样子,可以看到我们的包,还有给我们创建好自己的类,并且带了一个静态的main方法咋看就像.

理解计算机的工作方式——通过汇编一个简单的C程序并分析汇编代码

Author: 翁超平 Notice:原创作品转载请注明出处 See also:<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000  本文通过汇编一个简单的C程序,并分析汇编代码,来理解计算机是如何工作的.整个过程都在实验楼上完成,感兴趣的读者可以通过上面给出的课程链接自行动手学习.以下是实验过程和结果. 一.操作步骤 1.首先在通过vim程序建立main.c文件.代码如下: 图1 2.使用如下命令将main.c编

1.一个简单的OpenGL程序

一.OpenGL介绍 1.与C语言紧密结合. OpenGL命令最初就是用C语言函数来进行描述的,对于学习过C语言的人来讲,OpenGL是容易理解和学习的. 如果你曾经接触过TC的graphics.h,你会发现,使用OpenGL作图甚至比TC更加简单. 2.强大的可移植性. 微软的Direct3D虽然也是十分优秀的图形API,但它只用于Windows系统(现在还要加上一个XBOX游戏机). 而OpenGL不仅用于 Windows,还可以用于Unix/Linux等其它系统,它甚至在大型计算机.各种专

如何利用CEF3创建一个简单的应用程序 (Windows Platform)

1. 说明 这篇文章主要讲述如何利用CEF3来创建一个简单的应用程序,引用的是1535及以上版本中包含的 Cefsimple 项目例子.如果想知道关于CEF3更多的使用方法,可以去访问 GeneralUsage. 2. 开始 首先,根据自身所使用的开发平台,可以去 这里 下载对应的发布版本.针对这个教程,我们需要下载1750或者更新的版本.当前支持的平台有Windows, Linux和Mac OS X.每一个版本都包含了当在特定平台上编译特定版本CEF3时所需要的所有文件和资源.您可以通过包含在

网易云课堂_C++程序设计入门(上)_第2单元:丹青画松石– EGE图形库_第2节:一个简单的EGE程序

网易云课堂_C++程序设计入门(上)_第2单元:丹青画松石– EGE图形库_第2节:一个简单的EGE程序 #ifndef _GRAPHICS_H_ #define _GRAPHICS_H_ #ifndef __cplusplus #error You must use C++ compiler, or you need filename with '.cpp' suffix #endif #include "ege.h" using namespace ege; #endif #inc

DuiVision开发教程(2)-如何写一个简单的界面程序

基于DuiVision界面库开发的界面程序主要包括如下几部分内容: 1.资源定义,包括图片资源.各个窗口界面的xml定义文件 2.事件处理类代码,用于处理界面响应消息 3.其他业务逻辑代码 下面举例说明如何写一个简单的界面程序. 第一步:使用VC向导创建一个有两个tab页面的DuiVision工程 向导生成的解决方案文件如下: 默认有两个工程,分别是DuiVision库和应用程序工程.自动生成的代码目录中bin目录下的内容那个如下,bkimg目录存放窗口背景图片,skins目录存放图片资源,xm