- 判斷空值錯誤
- 帳號不存在(錯誤)
- 密碼錯誤
- 登入成功
- 顯示介面登入成功介面
一開始帳號密碼可先寫死(程式沒問題後再連結資料庫上的資料)
連結資料庫上的資料
1.先在phpmyadmin上面,測試sql語法
2.程式:查詢帳號資訊
當使用者選擇1.登入時
要讓使用者輸入帳號、密碼,如下
所以這裡我們需要寫一個登入的功能:
功能需求需判斷:
- 判斷空值錯誤(回起始介面)
- 帳號不存在(錯誤)
- 密碼錯誤
- 登入成功
- 顯示介面登入成功介面
提示: 可以使用 ""
來判斷空值錯誤
先把帳號、密碼寫死:
例如:
帳號:aaa、密碼:ccc
參考程式碼:
def myindex2():
print("請選擇您要做的項目")
print("*-------------*")
print("1.查詢所有員工的資料")
print("2.修改員工資料")
print("3.刪除員工的帳號")
print("4.離開")
def login_staff():
while True:
acc=input("請輸入帳號")
if acc == "":break
staff_acc= 'aaa'
if (staff_acc!=acc):
print("{}帳號不存在".format(acc))
continue
mypwd='ccc'
pwd=input("請輸入密碼")
if pwd=="": break
if (mypwd != pwd):
print("密碼錯誤")
else:
print()
print("登入成功")
print()
myindex2() #呼叫myindex2 (登入成功的介面)
break
呼叫第二層介面後,先判斷使用者輸入的數字
輸入 1 時 :先印出 "讀取所有員工資訊"
輸入 2時 :先印出 "讀取所有員工資訊"
輸入 3時 :先印出 "修改資訊"
輸入 4時 :先印出 "離開" ,跳到第一層介面
參考程式碼:
def mymenu2():
while True:
myindex2()
item=int(input("請輸入您執行的動作"))
if item == 1 :
print("讀取所有員工資訊")
elif item == 2 :
print("更新資料")
elif item == 3 :
print("刪除資料")
elif item == 4 :
break
這時候使用者如果輸入4 時,break 跳離當下 while 迴圈,自然回到上一層的介面
連結資料庫上的資料
1.先在phpmyadmin上面,測試sql語法
SELECT sf_name,sf_account,sf_pwd FROM staff_info WHERE sf_account ='aaa' AND sf_del ='0'
2.程式:查詢帳號資訊
可以先開啟一個空的檔案練習
查詢SQL語言: 查詢帳號是否存在,並抓出該筆的密碼
import pymysql
conn = pymysql.connect(host='localhost',user='root',passwd='',db='my_python_db',charset='utf8')
cur = conn.cursor()
#帳號預設為'aaa'或者可讓使用者輸入 input()
acc='aaa'
#查詢sql語法
sql_1="SELECT sf_name,sf_account,sf_pwd FROM staff_info WHERE sf_account ='" + acc + "' AND sf_del ='0'"
#執行sql語法
cur.execute(sql_1)
#只抓一筆資料
staff_acc= cur.fetchone()
print(staff_acc) #印出 ('hibbb', 'aaa', 'ccc') (姓名,帳號,密碼)
這時你已經有使用者的帳號、密碼
請改寫剛剛的程式碼,把剛寫死的程式碼改成資料庫抓出來的帳號、密碼
判斷使用者
- 帳號不存在(錯誤)
- 密碼錯誤
- 登入成功
- 顯示介面登入成功介面
參考程式碼:
def login_staff():
while True:
acc=input("請輸入帳號")
if acc == "":break
sql_1="SELECT sf_name,sf_account,sf_pwd FROM staff_info WHERE sf_account ='" + acc + "' AND sf_del ='0'"
cur.execute(sql_1)
staff_acc= cur.fetchone()
print(staff_acc)
if (staff_acc==None):
print("{}帳號不存在".format(acc))
continue
mypwd=staff_acc[2]
print(mypwd)
pwd=input("請輸入密碼")
if pwd=="": break
if (mypwd != pwd):
print("密碼錯誤")
else:
print()
print("登入成功")
print()
mymenu2()
break
目前完成進度(程式碼參考):
import pymysql
conn = pymysql.connect(host='localhost',user='root',passwd='',db='my_python_db',charset='utf8')
cur = conn.cursor()
def myindex():
print("管理者登入系統")
print("*----------------*")
print("1.登入")
print("2.註冊帳號")
print("3.結束程式")
def myindex2():
print("請選擇您要做的項目")
print("*-------------*")
print("1.查詢所有員工的資料")
print("2.修改員工資料")
print("3.刪除員工的帳號")
print("4.離開")
def login_staff():
while True:
acc=input("請輸入帳號")
if acc == "":break
sql_1="SELECT sf_name,sf_account,sf_pwd FROM staff_info WHERE sf_account ='" + acc + "' AND sf_del ='0'"
cur.execute(sql_1)
staff_acc= cur.fetchone()
print(staff_acc)
if (staff_acc==None):
print("{}帳號不存在".format(acc))
continue
mypwd=staff_acc[2]
print(mypwd)
pwd=input("請輸入密碼")
if pwd=="": break
if (mypwd != pwd):
print("密碼錯誤")
else:
print()
print("登入成功")
print()
mymenu2()
break
def mymenu2():
while True:
myindex2()
item=int(input("請輸入您執行的動作"))
if item == 1 :
print("查詢所有資料")
elif item == 2 :
print("更新資料")
elif item == 3 :
print("刪除資料")
elif item == 4 :
break
def mymenu():
while True:
myindex() #呼叫起始介面
num = int(input("請輸入您要執行的動作"))
print()
if num == 1 :
login_staff()
elif num == 2 :
print("註冊功能")
print("登入功能")
elif num == 3 :
break #離開迴圈
#主程式
mymenu()
#關閉資料庫連線
cur.close()
conn.close()
Yiru@Studio - 關於我 - 意如