Python写的ATM小程序

发布时间:2019-09-19 08:04:45编辑:auto阅读(1652)

    很久没写博客了,近两年的时间一直在搞Openstack相关的东西,有时间我也会把我认为值得写得一些技术和经验分享出来。

    以后准备好好学学Python了,要不快没饭吃了j_0009.gif,这两个礼拜看了一些视频教程和书籍,遂拿这个ATM小程序练练手。


    文件结构:


    程序共有6个py文件和3个文本文件

    cashin.py  -- 还款模块
    goods_list  -- 商品列表
    login.py -- 主文件
    menu.py -- 菜单模块
    printlist.py  -- 记录打印模块
    record_tran.txt  -- 用户操作记录
    shopping.py -- 购买模块
    user_list -- 用户列表
    withdraw.py -- 提现模块


    源代码:


    login.py

    #!/usr/bin/python
    
    import sys
    from menu import menu_show
    
    while True:
        user = str(raw_input("\033[1;32;40mPlease input your name:\033[0m"))
        f = open('user_list','r+')
        for line in f.readlines():
            n = str(line.split()[0])
            p = str(line.split()[1])
            if user == n:
                while True:
                    password = str(raw_input("\033[1;32;40mPlease input your password:\033[0m"))
                    if password != p:
                        print "\033[1;31;40mThe password is incorrect\033[0m"
                        continue
                    else:
                        print "\033[1;32;40myes let you in.\033[0m"
                        global money
                        money_total = 15000
                        while True:
                            print "\033[1;33;40mYou total money is: \033[0m",money_total
                            money_total = menu_show(user,money_total)
            else:
                print "\033[1;31;40mThe user is not vaild, please re-input:\033[0m"
                continue


    menu.py

    #!/usr/bin/python
    
    import sys
    import os
    from shopping import show_shopping_list
    from printlist import print_list
    from withdraw import with_draw
    from cashin import cash_in
    
    def menu_show(n,mo):
        print "Welcome %s, This is the ATM system:" %n
        print "Select what you want to do:"
        print " 1. Shopping"
        print " 2. Withdraw"
        print " 3. Cash in"
        print " 4. Print list"
        print " 5. Exit"
        user_input = int(raw_input("Input 0 ~ 5 "))
        global current_user
        current_user = n
        mo = menu_select(user_input,mo)
        return mo
    
    def menu_select(input,money):
        if input == 1:
            money = show_shopping_list(current_user,money)
        if input == 2:
            money = with_draw(current_user,money)
        if input == 3:
            money = cash_in(current_user,money)
        if input == 4:
            print_list(current_user)
        if input == 5:
            print "\033[1;33;40mThank you for using ATM, Good bye!\033[0m"
            sys.exit()
        return money


    shopping.py

    #!/usr/bin/python
    
    import sys
    import time
    
    def show_shopping_list(n,m):
        
        #read the file to a dictionary
        goods_dict={}
        goods = open('goods_list','r+')
        for line in goods.readlines():
            key = line.split()[0]
            value = line.split()[1]+' '+line.split()[2]
            goods_dict[key] = value
        
        #print the goods list
        print "The current user is %s." %n
        print goods_dict   
        
        #decrease the money
        buy_number = int(raw_input("Please select which one you want to buy:"))
        goods_name = goods_dict[`buy_number`].split()[0]
        goods_value = int(goods_dict[`buy_number`].split()[1])
        
        m = calculate(int(m),goods_value)
        
        #record the log
        shopping_file_write(n,goods_name,goods_value,0)
        
        return m
    
    
    def calculate(qian,pri):
        new_qian = qian - pri
        return new_qian
        
    def shopping_file_write(user,name,price,fee):
        tran_time=time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))
        spath = "record_tran.txt"
        f = open(spath,'a')
        f.write("%s|%s|%s|%d|%d  \n"  %(user,tran_time,name,price,fee))
        f.close()


    withdraw.py

    #!/usr/bin/python
    
    import time
    
    #withdraw function
    
    def with_draw(n,m):
        print "Hello %s, you account have %d RMB." %(n,m)
        print "Attention: There are 5% fee per withdraw !"
        draw = int(raw_input("Please input how much money you want to with draw:"))
        m = m - draw * 1.05
        
        #record to the log
        
        withdraw_file_write(n,draw)
        
        return m
    
    def withdraw_file_write(user,withdraw):
        shouxufei = cash * 0.05
        tran_time=time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))
        spath = "record_tran.txt"
        f = open(spath,'a')
        f.write("%s|%s|withdraw|%d|%d  \n" %(user,tran_time,withdraw,shouxufei))
        f.close()


    cashin.py

    #!/usr/bin/python
    
    import time
    
    #cash in function
    
    def cash_in(n,m):
        print "Hello %s, your account have %d RMB now." %(n,m)
        cash = int(raw_input("Please input how much money you want to save in :"))
        m = m + cash
        cashin_file_write(n,cash)
        return m
    
    def cashin_file_write(user,cashin):
        tran_time=time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))
        spath = "record_tran.txt"
        f = open(spath,'a')
        f.write("%s|%s|cashin|%d|0  \n"  %(user,tran_time,cashin))
        f.close()


    printlist.py

    #!/usr/bin/python
    
    #select current user's bill
    
    def print_list(n):
        print "Hello %s, Here is your bill:" %n
        print "Account|Date|Goods|Price|Fee"
        spath1 = "./record_tran.txt"
        f1 = open(spath1,'r')
        for line in f1.readlines():
            if line.split('|')[0] == n:
                print line


    user_list

    user1 123
    user2 456


    goods_list

    1  Car  250000
    2  Clothes   399
    3  Shoes  199
    4  Iphone5s   4999
    5  Coffee   35
    6  Foods    68
    7  Bicycle   1688


    example of record_tran.txt

    user1|2014-07-08 16:59:27|Iphone5s|4999|0  
    user2|2014-07-08 16:59:31|withdraw|1000|50  
    user1|2014-07-08 16:59:56|withdraw|500|25  
    user2|2014-07-09 14:38:33|cashin|3456|0  
    user2|2014-07-09 14:39:10|Coffee|35|0


关键字