共計(jì) 9876 個(gè)字符,預(yù)計(jì)需要花費(fèi) 25 分鐘才能閱讀完成。
本篇內(nèi)容主要講解“Python 如何連接 Mysql 實(shí)現(xiàn)圖書借閱系統(tǒng)”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實(shí)用性強(qiáng)。下面就讓丸趣 TV 小編來帶大家學(xué)習(xí)“Python 如何連接 Mysql 實(shí)現(xiàn)圖書借閱系統(tǒng)”吧!
數(shù)據(jù)庫的表結(jié)構(gòu)
我們在這里需要三張表,一張用戶表,一張圖書表和一張借閱表。注意我們的數(shù)據(jù)庫命名為 bbs(book borrow system)
1. 用戶表

2. 圖書表

bookname: 書名
author:作者
booknum:圖書編號
bookpress: 出版社
bookamoun: 圖書數(shù)量
3. 借閱表

id: 借閱號
borrowname: 借閱人
borrowbook: 借閱圖書
bookid: 圖書編號同圖書表 booknum
borrowamoun: 借閱數(shù)量
borrowdate: 借閱日期
borrowback: 歸還日期
Python 程序
1. 主程序:圖書借閱系統(tǒng).py
# _*_ coding:utf-8 _*_
import pymysql
import db_event
import book_manage
[1]登陸 [2]注冊 [3]退出 )
choice = int(input( 請輸入您要進(jìn)行的操作(數(shù)字):))
if choice == 1:
name = input(請輸入用戶名:)
login_status=db_event.user_login(name)
if login_status==1:
book_manage.manage(name)
else:
print(登陸失敗)
continue
elif choice==2:
create_user = db_event.user_create()
print( 用戶創(chuàng)建成功,您創(chuàng)建的用戶信息如下:/n\
姓名:%s 年齡:%d 性別:%s 密碼:%s % (create_user[0], create_user[1], create_user[2], create_user[3]))
elif choice==3:
exit()
else:
print(無效操作!)
continue
2. 圖書的管理信息:book_manage.py
import db_event
def manage(name):
while True:
print( 歡迎進(jìn)入圖書系統(tǒng) \n\
[1]查詢圖書 [2] 借閱圖書 [3]捐贈(zèng)圖書 [4]歸還圖書 [5]退出 )
num = int(input( 輸入您的選擇:))
if num == 1:
db_event.book_select()
elif num == 2 :
chos=int(input( 請選擇 [1] 借閱 [2]續(xù)借 [3]查詢借閱信息 [4]退出 ))
if chos==1:
db_event.book_borrow(name)
elif chos==2:
db_event.borrow_again()
elif chos==3:
db_event.borrow_info_select(name)
elif chos==4:
continue
else:
print(無效操作)
elif num == 3 :
db_event.book_juanzeng()
elif num == 4 :
db_event.book_back()
elif num == 5 :
break
else:
print(無效輸入!)
3. 數(shù)據(jù)庫的操作:db_event.py
# _*_ coding:utf-8 _*_
import pymysql
import random
import string
def user_login(name):
db = pymysql.connect(localhost , ljz , redhat , bbs)
cursor = db.cursor()
sql = SELECT name,mima FROM user WHERE name= %s %(name)
cursor.execute(sql)
results = cursor.fetchall()
if results:
res=results[0]
for i in range(3):
mima = input(請輸入密碼:)
if mima == res[1]:
print(登陸成功!)
login_status = 1
break
else:
login_status=0
print(密碼輸入不正確! 請重新輸入)
# print(login_status)
if login_status == 1 :
return login_status
else:
print(您已輸入錯(cuò)誤密碼三次,無法登陸圖書借閱系統(tǒng),歡迎下次使用!)
login_status = 0
return login_status
else:
login_status = 0
print(您輸入的用戶不存在!)
return login_status
db.close()
#判斷是否登陸成功,1 為成功,0 為不成功
# login_status=user_login()
# if login_status==1:
# print(ok)
# else:
# print(no)
#關(guān)閉數(shù)據(jù)庫連接
# curcor.close()
# db.close()
def user_create():
db = pymysql.connect(localhost , ljz , redhat , bbs)
cursor = db.cursor()
name=input(請輸入姓名:)
age=int(input( 請輸入年齡:))
sex=input(請輸入性別 [M] 男 [W]女 :)
mima=input(為您的用戶設(shè)置一個(gè) 8 位數(shù)密碼:)
sql = INSERT INTO user VALUES(%s ,%s, %s , %s) %(name,age,sex,mima)
cursor.execute(sql)
db.commit()
sql1= SELECT * FROM user WHERE name= %s %(name)
cursor.execute(sql1)
results=cursor.fetchone()
return results
db.close()
#create_user=user_create()
#print( 用戶創(chuàng)建成功,您創(chuàng)建的用戶信息如下:/n\
# 姓名:%s 年齡:%d 性別:%s 密碼:%s %(create_user[0],create_user[1],create_user[2],create_user[3]))
def book_info_select(x,y):
db = pymysql.connect(localhost , ljz , redhat , bbs)
cursor = db.cursor()
sql = SELECT * FROM book WHERE %s= %s %(x,y)
cursor.execute(sql)
results=cursor.fetchone()
if results:
print(書名:%s 作者:%s 書籍編號:%s 出版社:%s 剩余數(shù)量:%d %(results[0],results[1],results[2],results[3],results[4]))
else:
print(沒有您所要查詢的圖書)
db.close()
def book_select():
a = int(input( 輸入您要查詢的圖書關(guān)鍵信息 \
[1]書名 [2]作者 [3]書籍號 [4]出版社 ))
b=
if a == 1 :
b= bookname
name=input(請輸入要查詢的書名:)
book_info_select(b,name)
elif a == 2 :
b= author
auth=input(請輸入作者名:)
book_info_select(b,auth)
elif a == 3 :
b= booknum
num=input(請輸入書籍編號)
book_info_select(b,num)
elif a == 4 :
b= bookpress
press=input(請輸入出版社:)
book_info_select(b,press)
else:
print(輸入有誤)
book_select()
def gen_code(len=8):
code_str = string.ascii_letters + string.digits
return .join(random.sample(code_str, len))
def book_add(name,auth,press,amount):
db = pymysql.connect(localhost , ljz , redhat , bbs)
cursor = db.cursor()
num=gen_code()
sql = INSERT INTO book VALUES(%s , %s , %s , %s ,%s) %(name,auth,num,press,amount)
sql1 = SELECT booknum FROM book
cursor.execute(sql1)
res = cursor.fetchall()
list=[]
for i in res :
list.append(i)
try:
while True:
if num in list:
gen_code()
else:
cursor.execute(sql)
db.commit()
print(圖書捐贈(zèng)成功,謝謝您!)
break
except:
print(輸入圖書數(shù)目錯(cuò)誤!)
db.rollback()
db.close()
def book_update_add(name,auth,press,amount):
db = pymysql.connect(localhost , ljz , redhat , bbs)
cursor = db.cursor()
sql= UPDATE book SET bookamount=bookamount+%s WHERE bookname= %s AND author= %s AND bookpress= %s %(amount,name,auth,press)
try:
cursor.execute(sql)
db.commit()
print(圖書捐贈(zèng)成功,謝謝您!)
except:
print(輸入圖書數(shù)目錯(cuò)誤!)
db.rollback()
db.close()
def book_juanzeng():
db = pymysql.connect(localhost , ljz , redhat , bbs)
cursor = db.cursor()
name=input(請輸入您要捐贈(zèng)的圖書書名:)
auth=input(請輸入您要捐贈(zèng)的圖書作者:)
press=input(請輸入您要捐贈(zèng)的圖書的出版社:)
amount = int(input( 輸入您要捐贈(zèng)的數(shù)目:))
sql = SELECT * FROM book WHERE bookname= %s AND author= %s AND bookpress= %s %(name,auth,press)
cursor.execute(sql)
results=cursor.fetchone()
if results:
book_update_add(name,auth,press,amount)
else:
book_add(name,auth,press,amount)
db.close()
def book_if_borrow(booknum,amount):
db = pymysql.connect(localhost , ljz , redhat , bbs)
cursor = db.cursor()
sql = SELECT bookamount FROM book WHERE booknum= %s %(booknum)
cursor.execute(sql)
res = cursor.fetchall()
if res:
if res[0][0] = amount :
# 編號為 booknum 的書的數(shù)量還有,可以借
return True
else:
print(您所需要的編號為 %s 的書籍當(dāng)前圖書館只有 %d 本,不滿足您的需求 %(booknum,res[0][0]))
return False
else:
print(查無此書,請確認(rèn)您的書籍編號!)
return False
db.close()
def book_borrow_after(amount,booknum):
db = pymysql.connect(localhost , ljz , redhat , bbs)
cursor = db.cursor()
sql = UPDATE book SET bookamount=bookamount-%s WHERE booknum= %s %(amount,booknum)
cursor.execute(sql)
db.commit()
db.close()
def borrow_add(name,booknum,amount):
db = pymysql.connect(localhost , ljz , redhat , bbs)
cursor = db.cursor()
days = int(input( 請輸入您選擇借閱的天數(shù)(不可超過 365 天):))
sql = INSERT INTO borrow VALUES(NULL, %s ,(SELECT bookname FROM book WHERE booknum= %s), %s ,%s,CURDATE(),DATE_ADD(CURDATE(),INTERVAL %s DAY)) %(name,booknum,booknum,amount,days)
cursor.execute(sql)
db.commit()
def select_after_borrow(booknum,name):
db = pymysql.connect(localhost , ljz , redhat , bbs)
cursor = db.cursor()
sql2 = SELECT * FROM borrow WHERE bookid= %s AND borrowname= %s % (booknum, name)
cursor.execute(sql2)
return cursor.fetchall()
def book_borrow(name):
db = pymysql.connect(localhost , ljz , redhat , bbs)
cursor = db.cursor()
booknum=input(請輸入您要借閱的圖書編號:)
amount=int(input( 請輸入您要借閱的書籍個(gè)數(shù):))
sql1 = SELECT * FROM book WHERE booknum= %s % (booknum)
cursor.execute(sql1)
result = cursor.fetchone()
res = book_if_borrow(booknum,amount)
if res:
print(您要借閱的書籍書名:%s 作者:%s 書籍編號:%s 出版社: %s 當(dāng)前剩余:%d 本 借后剩余:%d 本 %(result[0],result[1],result[2],result[3],result[4],result[4]-amount))
book_borrow_after(amount,booknum)
#db.commit()
borrow_add(name,booknum,amount)
info=select_after_borrow(booknum,name)
print( 以下是您的借閱圖書信息,注意借閱號,這將是您還書的憑證!\n\
借閱號:%d 借閱人:%s 借閱圖書:%s 圖書編號:%s 借閱數(shù)量:%d 借閱日期:%s 歸還日期:%s %(info[-1][0],info[-1][1],info[-1][2],info[-1][3],info[-1][4],info[-1][5],info[-1][6]))
print(借閱成功)
while True:
a=int(input( 請輸入您選擇:[1]繼續(xù)借閱 [2]退出 ))
if a == 1:
book_borrow(name)
break
elif a == 2 :
break
else:
print(無效操作)
else:
print(借閱失敗)
while True:
a=int(input( 請輸入您選擇:[1]繼續(xù)借閱 [2]退出 ))
if a == 1:
book_borrow(name)
break
elif a == 2 :
break
else:
print(無效操作)
db.close()
def back_if_over(id):
db = pymysql.connect(localhost , ljz , redhat , bbs)
cursor = db.cursor()
sql = SELECT * FROM borrow WHERE backdate = CURDATE() AND id = %s %(id)
cursor.execute(sql)
res=cursor.fetchall()
if res:
return True
else:
return False
db.close()
def book_back_update(id):
db = pymysql.connect(localhost , ljz , redhat , bbs)
cursor = db.cursor()
sql = UPDATE book SET bookamount=bookamount+(SELECT borrowamount FROM borrow WHERE id = %s) WHERE booknum=(SELECT bookid FROM borrow WHERE id = %s) %(id,id)
cursor.execute(sql)
db.commit()
db.close()
def borrow_back_update(id):
db = pymysql.connect(localhost , ljz , redhat , bbs)
cursor = db.cursor()
sql = DELETE FROM borrow WHERE id=%s %(id)
cursor.execute(sql)
db.commit()
db.close()
def book_back():
db = pymysql.connect(localhost , ljz , redhat , bbs)
cursor = db.cursor()
while True:
id = int(input( 請輸入您的借閱號:))
sql1 = SELECT * FROM borrow WHERE id=%s %(id)
cursor.execute(sql1)
info =cursor.fetchone()
if info:
print( 以下是您的借閱圖書信息,注意借閱號,這將是您還書的憑證!\n\
借閱號:%d 借閱人:%s 借閱圖書:%s 圖書編號:%s 借閱數(shù)量:%d 借閱日期:%s 歸還日期:%s % (info[0], info[1], info[2], info[3], info[4], info[5], info[6]))
choice=int(input( 請確認(rèn)您的歸還借書信息:[1]確認(rèn) [2]返回 [3]退出 ))
if choice == 1 :
# 判斷是否逾期: if back_if_over(id):
book_back_update(id)
borrow_back_update(id)
print(還書成功)
break
else:
print(您已逾期,請聯(lián)系管理員!)
break
elif choice == 2:
continue
elif choice == 3 :
break
else:
print(無效輸入)
else:
print(請輸入正確的借閱號)
def borrow_info_again(id,day):
db = pymysql.connect(localhost , ljz , redhat , bbs)
cursor = db.cursor()
sql1 = SELECT * FROM borrow WHERE id=%s % (id)
cursor.execute(sql1)
info = cursor.fetchone()
print( 以下是您的借閱圖書信息:\n\
借閱號:%d 借閱人:%s 續(xù)借天數(shù):%d 借閱圖書:%s 圖書編號:%s 借閱數(shù)量:%d 初始借閱日期:%s 歸還日期:%s %(info[0], info[1],day,info[2], info[3], info[4], info[5], info[6]))
db.close()
def borrow_update_again(id):
db = pymysql.connect(localhost , ljz , redhat , bbs)
cursor = db.cursor()
a=int(input( 請輸入您的續(xù)借天數(shù)(不超過 31 天):))
if a 31 :
print(您的借閱天數(shù)已超過系統(tǒng)權(quán)限,如要借閱,請聯(lián)系管理員!)
else:
sql= UPDATE borrow SET backdate=DATE_ADD(backdate,INTERVAL %s DAY) WHERE id=%s %(a,id)
cursor.execute(sql)
db.commit()
db.close()
return a
def borrow_again():
id=int(input( 輸入您的借閱號:))
if back_if_over(id):
day=borrow_update_again(id)
borrow_info_again(id,day)
print(續(xù)借成功)
else:
print(您已逾期,請先聯(lián)系管理員再進(jìn)行操作,謝謝!)
def borrow_info_select(name):
db = pymysql.connect(localhost , ljz , redhat , bbs)
cursor = db.cursor()
sql = SELECT * FROM borrow WHERE borrowname= %s %(name)
cursor.execute(sql)
res=cursor.fetchall()
if res:
for i in range(len(res)):
print( 以下是您的第 %d 條借閱圖書信息:\n\
借閱號:%d 借閱人:%s 借閱圖書:%s 圖書編號:%s 借閱數(shù)量:%d 借閱日期:%s 歸還日期:%s % (i+1,res[i][0], res[i][1], res[i][2], res[i][3], res[i][4], res[i][5], res[i][6]))
else:
print(您沒有借閱圖書)
db.close()
到此,相信大家對“Python 如何連接 Mysql 實(shí)現(xiàn)圖書借閱系統(tǒng)”有了更深的了解,不妨來實(shí)際操作一番吧!這里是丸趣 TV 網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!
向 AI 問一下細(xì)節(jié)
丸趣 TV 網(wǎng) – 提供最優(yōu)質(zhì)的資源集合!