Python寫的ATM小程式

很久沒寫部落格了,近兩年的時間一直在搞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("33[1;32;40mPlease input your name:33[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("33[1;32;40mPlease input your password:33[0m"))                  if password != p:                      print "33[1;31;40mThe password is incorrect33[0m"                      continue                  else:                      print "33[1;32;40myes let you in.33[0m"                      global money                      money_total = 15000                      while True:                          print "33[1;33;40mYou total money is: 33[0m",money_total                          money_total = menu_show(user,money_total)          else:              print "33[1;31;40mThe user is not vaild, please re-input:33[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 "33[1;33;40mThank you for using ATM, Good bye!33[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