This article mainly introduces the use of Python3 to write a simple credit card management program code, very good, with reference value, need to refer to a friend
1. Program Execution Code:
#Author by Andy#_*_ coding:utf-8 _*_import os,sys,timebase_dir=os.path.dirname (Os.path.dirname (Os.path.abspath (__ file__)) Sys.path.append (Base_dir) str= "Welcome to the bank credit card self-service system! \ n "For I in Str:sys.stdout.write (i) Sys.stdout.flush () Time.sleep (0.3) while True:print (" 1, administrative personnel entrance. ") Time.sleep (0.3) print (" 2, User login entry. ") Print (" 3, exit Please press q! ") Choice=input (":") from core import main exit_flag=true while Exit_flag:user_choice=main.menu (choice) if User_cho Ice = = ' 1 ': Main.get_user_credit () elif User_choice = = ' 2 ': main.repayment () elif User_choice = = ' 3 ': Main.enchashment () elif User_choice = = ' 4 ': main.change_pwd () elif User_choice = = ' 5 ': Main.transfer () elif User_choice = = ' 6 ': Main.billing_query () elif user_choice = ' 7 ': Print ("The feature is under construction, more exciting, please look forward! ") elif User_choice = = ' A ': Main.change_user_credit () elif User_choice = = ' B ': Main.add_user () elif use R_choice = = ' C ': Main.del_user () elif User_choice = = ' d ': Main.change_pwd () elif User_choice = = ' Q ' or user_choice = = ' Q ': print ("Welcome to use again, goodbye!") ") Exit_flag = False
2, program function function:
#Author by Andy#_*_ coding:utf-8 _*import json,sys,os,time,shutilbase_dir=os.path.dirname (Os.path.dirname ( Os.path.abspath (__file__)) sys.path.append (Base_dir) #定义认证装饰器def auth (func): Def wrapper (*args,**kwargs): # Print (" Please enter the card number and password to verify! ") F = open (base_dir+ ' \data\\user_db.txt ', ' r ') log_file = open (base_dir+ ' \logs\log.txt ', ' A + ', encoding= ' utf-8 ') Bill_log_file = open (Base_dir + ' \logs\\bill_log.txt ', ' A + ', encoding= ' utf-8 ') Func_name = func.__name__ Time_forma Te = '%y-%m-%d%x ' start_time = Time.strftime (Time_formate, Time.localtime ()) User_data = Json.load (f) count=0 While Count < 3:global user_id global user_pwd user_id = input (' Please enter your card number: ') user_pwd = input (' Please enter your The password: ') if user_id in user_data:if user_pwd = = user_data[user_id][' Password ']: Log_file.write (start_t IME + ' card number%s certified successful!\n '% user_id) Log_file.flush () time.sleep (1) log_file.close Keywor ds = Func (*args, **kwargs) if func_name = = ' repayment ' or func_name = = ' transfer ' or func_name = = ' Enchashment ': Bill_log_file.write ( Start_time + ' card number ' + user_id + ' initiate ' + func_name + ' business, amount:%s \ n '% keywords) bill_log_file.flush () Time.sleep (1) bill_log_file.close return keywords Else:return keywords Else:print (' Card number or password error! Please re-enter! ') log_file.write (start_time + ' card number%s authentication failed!\n '% user_id) Log_file.flush () time.sleep (1) Log_file.close Count +=1 else:print ("The card number does not exist, please confirm!") if Count = = 3:print ("Sorry, you have lost 33 times, the card number is locked!") ") Log_file.write (start_time + ' card '%s ') was locked for three consecutive verification failures! \ n '% user_id) time.sleep (1) log_file.close return wrapper# defines the menu function, which displays the non-pass menu according to different users. Def menu (choice): if choice = = ' 2 ': Print ("Please select service category: \ n" "1, check the credit limit.) \ n "" 2, credit card repayment. \ n "" 3, credit card withdrawal. \ n "" 4, Change password. \ n "" 5, credit card transfer. \ n "" 6, credit card billing enquiry. \ n "" 7, easy shopping. \ n"8, Exit Please press q!\n") Service_items = input ('--') elif choice = = ' 1 ': Print ("Please select service category: \ n" "A, modify the user credit limit.) \ n "" B, add credit card users. \ n "" C, delete the credit card user. \ n "" D, modify the user password. \ n "" E, exit Please press q!\n ") Service_items = input ('---') else:print (" Thanks for using, Wish life happy! ") Exit () Return service_items# define the backup user data file function def back_up_file (): time_formate = '%y-%m-%d ' sys_time = Time.strftime (T Ime_formate, Time.localtime ()) shutil.copy (Base_dir + "\data\\user_db.txt", Base_dir + "\data\\user_db--" + Sys_time + ". Bak.txt ") #定义获取用户数据信息函数def Get_user_data (): With open (Base_dir +" \data\\user_db.txt ", ' r+ ', encoding= ' Utf-8 ') as F:use R_data = Json.load (f) Return user_data# define user data variables User_data = Get_user_data () #定义查询信用额度函数 @authdef get_user_credit (): User_ credit=user_data[user_id][' Credit ' print ("Your current limit is:%s yuan \ n"% (User_credit)) Time.sleep (2) Return user_credit# define credit card Also Section function @authdef repayment (): User_data = Get_user_data () user_credit=int (user_data[user_id][' credit ') User_balance=int ( User_data[user_id][' Balance ') User_bill = user_credit-user_balance print ("You currently need to repay the amount:%s Yuan. \ n"%user_bill) Exit_flag=true W Hile exit_flag:repayment_value=input ("Please enter repayment amount:") if Repayment_value.isdigit (): Repayment_value=int (repayment_v alue) user_data[user_id][' Balance '] = user_data[user_id][' Balance '] + repayment_value f = open (Base_dir + "\data \\user_db.txt ", ' r+ ', encoding= ' Utf-8 ') json.dump (User_data, F) f.close () print (" Congratulations, the repayment is successful! ") Print ("You currently need to repay the amount:%s Yuan. \ n"% (user_data[user_id][' credit ')-user_data[user_id][' Balance ')) Time.sleep (1) Exit_flag = False return repayment_value else:print ("Please enter the correct amount!") ") #定义信用卡提现函数 @authdef enchashment (): user_credit=user_data[user_id][' credit '] print (" Your available withdrawal quota is:%s "%user_credit) Exit_flag=true while Exit_flag:enchashment_value=input ("Please enter the amount you want to cash in:") if Enchashment_value.isdigit (): Enchash Ment_value=int (enchashment_value) if enchashment_value% = = 0:if Enchashment_value <= user_credit:user_data[user_id][' Balance '] = user_credit-enchashment_value f = open (Base_ Dir + "\data\\user_db.txt", ' r+ ', encoding= ' Utf-8 ') json.dump (User_data, F) f.close () print ("withdrawal Success, your current available quota is:%s "%user_data[user_id][' Balance ')" Time.sleep (1) exit_flag = False return Enchash Ment_value Else:print ("Your withdrawal amount must be less than or equal to your credit limit!") ") Else:print (" The cash amount must be an integral multiple of 100!) ") Else:print (" The input is incorrect, the cash amount must be a number, and an integer multiple of 100 ") @auth # define the credit card transfer function Def transfer (): user_balance=user_data[user_id][' balance Print ("Your current available quota is:%s"%user_balance) exit_flag=true while exit_flag:transfer_user_id = input ("Please enter the offset account:") trans Fer_value = input ("Please enter the transfer amount:") if transfer_user_id in User_data.keys (): While Exit_flag:if transfer_value.i Sdigit (): While Exit_flag:transfer_value=int (Transfer_value) user_passwd=input ("Please enter a password to verify the identity : ") if user_passwd = = user_data[user_id][' Password ': user_balance = user_balance-transfer_value user_data[transfer_user_id][' B Alance ']=int (user_data[transfer_user_id][' Balance ') + transfer_value f = open (Base_dir + "\data\\user_db.txt ", ' r+ ', encoding= ' Utf-8 ') json.dump (User_data, F) f.close () print (" The transfer is successful, your current available quota is: %s "% user_balance) time.sleep (1) exit_flag = False return transfer_value Else:print ("Password is wrong, please re-enter!") ") Else:print (" The transfer amount must be a number, please confirm! ") ") Else:print (" The account does not exist, please confirm! ") # @auth # define the credit Card bill query function @authdef billing_query (): Print ("We currently only offer to query all billing features!") Print ("Your bill is: \ n") Bill_log_file = open (Base_dir + ' \logs\\bill_log.txt ', ' R ', encoding= ' utf-8 ') for lines in Bill_lo G_file:if user_id in Lines:print (Lines.strip ()) print () time.sleep (1) #定义修改信用卡额度函数def change_user_credit (): P Rint ("You are modifying the user's credit limit!") ") Exit_flag=true while EXIT_FLAG:TARGET_USER_ID=INPUT ("Please enter the user card number you want to modify: \ n") if target_user_id in User_data.keys (): While Exit_flag:new_credit=input ("Please enter a new credit limit: \ n ") if New_credit.isdigit (): new_credit= int (new_credit) user_data[target_user_id][' credit ']=new_ Credit print ("New credits for card number%s:%s"% (target_user_id,new_credit)) choice = input ("Confirm please enter 1 or press any key to cancel: \ n") if choice = = ' 1 ': F = open (Base_dir + "\data\\user_db.txt", ' r+ ', encoding= ' Utf-8 ') json.dump (US Er_data, F) f.close () print ("The credit limit has been successfully modified and the new limit has been applied!") ") print (the new credit limit for card number%s is:%s"% (target_user_id, user_data[target_user_id][' credits ')) Time.sleep (1) Exit_flag = False Else:print ("The user's credit limit has not changed! Else:print ("The credit limit must be a number!") Please confirm! ") Else:print (" The card number does not exist, please confirm! ") ") #定义修改口令函数 @authdef change_pwd (): Print (" Note: The user password is being modified! ") Exit_flag = True while exit_flag:old_pwd = input (" Please enter current password: ") if old_pwd = = Get_user_data () [user_id][] PAssword "]: New_pwd = input (" Please enter new password: ") New_ack = input (" Please enter new password again: ") if new_pwd = = New_ack:user_data= Get_user_data () user_data[user_id]["Password"]=new_pwd f = open (Base_dir + "\data\\user_db.txt", ' r+ ', encod ing= ' Utf-8 ') json.dump (User_data, F) f.close () print ("Congratulations, password modification succeeded!") ") Time.sleep (1) exit_flag = False else:print (" Two times the password is inconsistent, please confirm! ") ") Else:print (" The password you entered is not correct, please confirm it! ") ") #定义新增信用卡函数def Add_user (): Exit_flag = True while exit_flag:user_id = input (" user_id: ") Balance = input (" Balance : ") credit = Input (" Credits: ") if Balance.isdigit () and Credit.isdigit (): Balance = Int (Balance) credit = i NT (Credit) Else:print ("balance and credits must be numbers!") ") Continue Name = input (" name: ") Password = input (" Password: ") print (" New credit card user information is: \ n "" user_id:%s\n " "Balance:%s\n" "credit:%s\n" "name:%s\n" "password:%s\n"% (user_id, Balance, Credit, Name, Pa ssWOrd)) CHoice = input ("Submit please press 1, cancel please press 2, exit please press Q:") if choice = = ' 1 ': Back_up_file () user_data=get_user_data () User_data [user_id] = {"Balance": Balance, "credits": Credit, "name": Name, "Password": Password} f = open (Base_dir + "\data\\us Er_db.txt ", ' w+ ', encoding= ' Utf-8 ') json.dump (User_data, F) f.close () print (" New User success! ") Time.sleep (1) exit_flag=false elif choice = = ' 2 ': continue elif choice = = ' Q ' or choice = = ' Q ': Time.sleep (1) exit_flag = False else:print (' invaliable options! ') #定义删除信用卡函数def Del_user (): Exit_flag = True while Exit_flag:user_id=input ("Enter the card number of the credit card you want to delete:") if user_id = = ' Q ' or u ser_id = = ' Q ': print (' Welcome to use again, bye! ') Time.sleep (1) exit_flag=false else:user_data=get_user_data () print ("New credit card user information is: \ n" "Use r_id:%s\n "" balance:%s\n "" credit:%s\n "" name:%s\n "% (user_id, user_data[user_id][' Balanc E '], user_data[user_id][' credit '], User_data[user_id][' Name '])) choice = input ("Submit press 1, cancel please press 2, exit please press Q:") if choice = = ' 1 ': Back_up_file () User_data.pop ( USER_ID) F = open (Base_dir + "\data\\user_db.txt", ' w+ ', encoding= ' Utf-8 ') json.dump (User_data, F) F.C Lose () print ("Delete user succeeded! ") Time.sleep (1) exit_flag = False elif Choice = = ' 2 ': continue elif choice = = ' Q ' or choic E = = ' Q ': print (' Welcome to use again, bye! ') Time.sleep (1) exit_flag = False else:print (' invaliable options! ')
3. User Data files:
{"003": {"name": "Wangwu", "Password": "Qazwsx", "credit": 16000, "Balance": 8000}, "004": {"name": "Zhaoliu", "Password": "EDCRFV", "credit": 18000, "Balance": 6000}, "002": {"Name": "Lisi", "Password": "123456", "Credits": 14000, "Balance": 10 "009": {"Password": "qwerty", "name": "Hanmeimei", "credit": 15000, "Balance": 15000}, "005": {"Name": "Fengqi", "Pa ssWOrd ":" 1234qwer "," credit ": 15000," Balance ": 10700}," 010 ": {" Name ":" Lilei "," Password ":" qaswed "," credits ": 50000," Balance ": 50000}," 008 ": {" name ":" Zhengshi "," Password ":" 123456 "," credit ": 12345," Balance ": 12345}," 006 ": {" name ":" Z Houba "," Password ":" 123456 "," credit ": 20000," Balance ": 8300}," 001 ": {" Name ":" Zhangsan "," Password ":" abcd1234 "," Cred It ": 12000," Balance ": 12000}," 007 ": {" Name ":" Wujiu "," Password ":" 123456 "," credit ": 20000," Balance ": 11243}}
4. Related Log content:
Log in log:
2016-12-20 22:12:18 Card number 005 Certification success!
2016-12-20 22:14:20 Card number 005 Certification success!
2016-12-20 22:17:26 Card number 006 Certification success!
2016-12-20 22:18:06 Card number 005 Certification success!
2016-12-20 22:18:06 Card number 006 Certification success!
2016-12-20 22:21:10 Card number 005 certification failed!
2016-12-20 22:21:10 Card number 006 Certification success!
2016-12-20 22:23:17 Card number 006 Certification success!
2016-12-20 22:25:33 Card number 006 Certification success!
2016-12-20 22:26:14 Card number 006 Certification success!
2016-12-20 22:32:15 Card number 006 Certification success!
2016-12-20 22:44:57 Card number 005 Certification success!
2016-12-20 22:45:50 Card number 006 Certification success!
2016-12-20 22:47:10 Card number 006 Certification success!
2016-12-20 22:48:27 Card number 006 Certification success!
2016-12-20 22:49:30 Card number 006 Certification success!
2016-12-20 22:52:13 Card number 006 Certification success!
2016-12-20 22:53:44 Card number 006 Certification success!
Transaction log:
2016-12-20 21:25:35 card number 006 launches repayment business, the amount is: 100
2016-12-20 21:27:01 Card number 005 launches repayment business, the amount is: 100
2016-12-20 22:14:20 Card number 005 launches repayment business, the amount is: 100
2016-12-20 22:17:26 card number 006 launches transfer business, the amount is: 300
The above is a small part of the introduction of the use of Python3 to write a simple credit card management procedures, I hope we have some help, if you have any questions please give me a message, small series will promptly reply to you. Thank you very much for your support for topic.alibabacloud.com!