record 09 ATM 物件思想 綜合練習

2022-07-13 12:51:10 字數 2834 閱讀 6873

#__author: hasee

#date: 2018/1/17

# 明確在程式執行期間,有哪些物件參與-取款機

# 分析物件的行為、資料屬性

# 資料屬性-所有使用者的資訊

# 行為屬性-登陸校驗、顯示餘額、取款服務、轉賬服務

# 定義類

class atm:

user_info = 0

def __init__(self):

f = open('user_info.txt')

atm.user_info = f.readlines()

f.close()

def login_check(self, n, p):

result = 0

for w, u in enumerate(atm.user_info):

# print(u)

u1 = u.split()

# print(u1)

if u1[0] == n and u1[1] == p:

result = 1

break

elif u1[0] == n and u1[1] != p:

result = 2

break

else:

result = 3

return result, u1, w

def show_money(self, u):

print('當前賬戶餘額:%s' % u[2])

def get_money(self, u, w):

print('請輸入取款金額:')

money = int(input())

if money % 50 != 0:

print('金額不合法')

elif money > 1000:

print('不能超過單筆限額')

elif money > int(u[2]):

print('餘額不足')

else:

u[2] = str(int(u[2]) - money)

atm.user_info[w] = ' '.join(u) + '\n'

f = open('user_info.txt', 'w')

f.writelines(atm.user_info)

f.close()

def move_money(self, u, w):

print("請輸入收款賬號:")

name1 = input()

result2 = 0

for w2, u2 in enumerate(atm.user_info):

u21 = u2.split()

if u21[0] == name1:

result2 = 1

break

if result2 == 0:

print('收款賬號不存在')

else:

print('收款賬號有效,開始進行轉賬交易')

print('請輸入轉賬金額')

money2 = int(input())

if money2 > 2000:

print('不能超過單筆限額')

elif money2 > int(u21[2]):

print('餘額不足')

else:

print('金額有效,開始轉賬')

u[2] = str(int(u[2]) - money2) #對列表的索引重新賦值

atm.user_info[w] = ' '.join(u) + '\n'

#將新的列表u通過join轉換為字串,通過前面的atm.user_info[w]確定位置

u21[2] = str(int(u21[2]) + money2)

atm.user_info[w2] = ' '.join(u21) + '\n'

f = open('user_info.txt', 'w')

f.writelines(atm.user_info) #writeline後面接的是列表

f.close()

atm = atm()

# print(atm.user_info)

result1 = 0

while result1 != 1:

print('請輸入賬號:')

name = input()

print('請輸入密碼:')

password = input()

result1, user1, w1 = atm.login_check(name, password)

print(user1)

if result1 == 1:

print('登陸成功')

elif result1 == 2:

print('密碼不正確')

else:

print('賬號不存在')

choice = none

while choice != '0':

print('請選擇服務 1-查詢餘額 2-取款 3-轉賬 0-退出')

choice = input()

if choice == '1':

atm.show_money(user1)

if choice == '2':

atm.get_money(user1, w1)

atm.show_money(user1)

if choice == '3':

atm.move_money(user1, w1)

atm.show_money(user1)

if choice =='0':

break

陣列RECORD使用

record 型別的變數只能儲存從資料庫中查詢出的一行記錄,如果查詢出了多行記錄,就會出現錯誤。record型別變數直接賦值 declare type type record user is record user id number 10 user name varchar2 20 record ...

學習record相關知識

概念 當使用元組進行程式設計的時候,如果過於龐大的元素數量,將會很難記住。record提出來,是用於提供c語言裡面的一種類似structure的乙個有著固定數目字段的資料結構。記錄定義 record person,構造乙個record p1 person.例項 author erlang.hell ...

oracle學習總結 record

記錄變數學習 基本語法 type 記錄型變數的名稱 is record 變數名 變數型別,變數名 變數型別。例項 建立乙個過程,用於引數出入員工編號,運用記錄型變數列印員工姓名和薪資 create or replace procedure pro2 v in empno in emp.empno t...