很久没写博客了,近两年的时间一直在搞Openstack相关的东西,有时间我也会把我认为值得写得一些技术和经验分享出来。
以后准备好好学学Python了,要不快没饭吃了,这两个礼拜看了一些视频教程和书籍,遂拿这个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