基于python圖書館管理系統(tǒng)設(shè)計(jì)實(shí)例詳解
寫完這個(gè)項(xiàng)目后,導(dǎo)師說這個(gè)你完全可以當(dāng)作畢業(yè)項(xiàng)目使用了,寫的很全,很多的都設(shè)計(jì)考慮周全,但我的腳步絕不止于現(xiàn)在,我想要的是星辰大海!與君共勉!
這個(gè)項(xiàng)目不是我的作業(yè), 只是無意中被拉進(jìn)來了,然后就承擔(dān)了所有,肝了一周多,終于完成,但這個(gè)也算是一個(gè)很大的項(xiàng)目了吧,對(duì)于我現(xiàn)在來說,寫這個(gè)項(xiàng)目遇到了很多困難,這是真的,其中涉及到數(shù)據(jù)庫(kù)的使用,就遇到了一點(diǎn)瓶頸, 但這不算什么,還是要被我搞定的。

夢(mèng)想就像這個(gè)遠(yuǎn)處夕陽(yáng),終究觸手可及!
Python項(xiàng)目:
項(xiàng)目前提:
這個(gè)項(xiàng)目涉及到的知識(shí)點(diǎn)有很多, 知識(shí)串聯(lián)起來就會(huì)顯得復(fù)雜,但這也是鍛煉自己的一個(gè)能力。 下面先描述這個(gè)項(xiàng)目的大致結(jié)構(gòu)。
成品圖

架構(gòu)圖

數(shù)據(jù)庫(kù)圖

思維導(dǎo)圖

項(xiàng)目感想:
畫這個(gè)思維導(dǎo)圖的時(shí)候,我想了很久,是不是所有功能都需要去實(shí)現(xiàn),我們把這個(gè)項(xiàng)目的入口分別學(xué)生端和教師端, 那是否就有對(duì)應(yīng)的存儲(chǔ)數(shù)據(jù)的模塊呢, 于是我想到了使用數(shù)據(jù)庫(kù), 使用數(shù)據(jù)庫(kù)去建立對(duì)應(yīng)的表,然后不就可以分別保存了嗎,而在這個(gè)項(xiàng)目中, 界面的選擇也是很關(guān)鍵, 如果不適用界面,還是使用一個(gè)原生代碼交互式, 那么這個(gè)項(xiàng)目的挑戰(zhàn)性就很不人性化,也不友好, 這個(gè)我還是選擇了tkinter庫(kù), 簡(jiǎn)單上手, 用來設(shè)計(jì)簡(jiǎn)單的界面最好不過了, 然后就是關(guān)于 程序的框架 如何去設(shè)計(jì), 這個(gè)沒有現(xiàn)存的框架去套用, 所以我使用了面對(duì)對(duì)象的思維去闡述,畢竟老師和學(xué)生都有很多相同點(diǎn), 在這里使用函數(shù)的繼承和多態(tài)最好不過了,然后連接到數(shù)據(jù)庫(kù),這個(gè)數(shù)據(jù)庫(kù)我是用MySQL去搭建的, 其他的數(shù)據(jù)庫(kù)也是一樣的道理,其他的也就順手寫完了。整體來說, 這個(gè)項(xiàng)目提升還有很大,只不過我現(xiàn)在能力不足, 也快考試了,沒這么多時(shí)間去搞,生活還得向前走,加油!
因?yàn)檫@個(gè)項(xiàng)目代碼太多了, 在這里就不分享出來,有需要的可以私聊找我!
如果覺得文章很長(zhǎng),可以根據(jù)目錄進(jìn)行跳轉(zhuǎn)閱讀! 也可以收藏關(guān)注點(diǎn)擊,謝謝。
項(xiàng)目框架:
在__init__函數(shù)中:
這是一個(gè)構(gòu)造函數(shù), 在這里單獨(dú)的拿出來,就是方便程序的運(yùn)行,也方便打印一些help信息。 在下面這些代碼中, 導(dǎo)入了很多模塊,對(duì)的, 這些不是第三方庫(kù)哦, 這是我自己編寫的類函數(shù),在下面的實(shí)例中,你們也可以看到,使用這樣的方便,在編寫代碼的時(shí)候可以方便很多,你們一定要用!
# # -*- coding : utf-8 -*- # @Time : 2020/7/1 21:29 # @author : 沙漏在下雨 # @Software : PyCharm # @CSDN : https://me.csdn.net/qq_45906219 from TeacherLogin import TeacherLogin from StudentLogin import StudentLogin from mysql_login import Mysql from Login import Login text = """ author: 沙漏在下雨 time: 七月計(jì)劃 嘗試使用python 搭建一個(gè) 圖書館管理系統(tǒng) 使用tkinter作為簡(jiǎn)易的GUI界面 功能上滿足日常所需 數(shù)據(jù)保存在本地?cái)?shù)據(jù)庫(kù)中 """ print(text) print(help(StudentLogin)) print(help(TeacherLogin)) print(help(Mysql)) print(help(Login)) Login()
Login登入模塊:
講道理,我應(yīng)該先闡述一下注冊(cè)的, 不然都沒有賬號(hào),怎么點(diǎn)擊登入。但是因?yàn)槲野阎饕K寫在了login中了, 看下面的圖:

這里登入方式有二種, 注冊(cè)方式也有二種, 分別是管理員和學(xué)生,在login模塊中, 設(shè)置了一個(gè)注冊(cè)按鈕, 點(diǎn)擊注冊(cè)按鈕, 整個(gè)界面就會(huì)跳轉(zhuǎn)到注冊(cè)界面中, 這個(gè)稍后再說, 所以整體構(gòu)架還是存放到login中, 我覺得會(huì)很方便一點(diǎn), 主要是便于傳root 和 password 中。
我們先看看login模塊的大致函數(shù),然后細(xì)講:


整個(gè)__init__ 中, 是生成這個(gè)界面的函數(shù), 包括一些必要的值,也構(gòu)造在其中, 然后根據(jù)用戶輸入的賬號(hào)密碼, 進(jìn)行身份的驗(yàn)證, 這個(gè)模塊寫到test_db() 中, 如果賬號(hào)正確, 那么就進(jìn)入對(duì)應(yīng)的模塊中, 不對(duì),那么就會(huì)有錯(cuò)誤彈窗警告,比如這個(gè),或者其他的。

怎么進(jìn)行身份的驗(yàn)證呢 ? 這個(gè)其實(shí)也很簡(jiǎn)單, 連接到數(shù)據(jù)庫(kù)之后,就向數(shù)據(jù)庫(kù)執(zhí)行檢索命令, 根據(jù)賬號(hào)進(jìn)行初步查找, 然后如果賬號(hào)密碼都正確的話, 那不就是身份正常了嗎, 所以思路正確。
登入成功之后, 就會(huì)對(duì)數(shù)據(jù)庫(kù)進(jìn)行表單的更新, 我把這個(gè)功能寫在了update中, 會(huì)更新最后登入時(shí)間, 時(shí)間的獲取我寫在了get_time中, 這樣就能簡(jiǎn)單的實(shí)現(xiàn), 一個(gè)登入模塊的設(shè)置了。
數(shù)據(jù)庫(kù)中:
我覺得還是有必要先講一下數(shù)據(jù)庫(kù), 了解一下數(shù)據(jù)庫(kù)的大致構(gòu)造, 不然你們看的很暈,我也不好講這些。
我建立了一個(gè)數(shù)據(jù)庫(kù) book , 里面新建了三個(gè)表單, student, teacher, books,分別學(xué)生,老師, 圖書表, 互不干擾,相互工作。
在student:

表的大致構(gòu)造如上, 其實(shí)也就是簡(jiǎn)單的信息, 復(fù)雜的我暫時(shí)也做不了, 然后teacher 表單 信息 其實(shí)和 students 是一樣的, 只不過這樣設(shè)計(jì), 可以封開, 更好管理!
在books中;


books字段的設(shè)計(jì),其實(shí)也不是很難, 把一些基本信息加入就可以了,然后這個(gè)books中, 我寫了一個(gè)小爬蟲, 把表單信息補(bǔ)充了一下, 先充實(shí)一下,方便接下來的操作。
然后我們講一下這個(gè)模塊中, 這是一個(gè)連接數(shù)據(jù)庫(kù)的一個(gè)父類,這就很方便其他的類進(jìn)行繼承, 或者重寫操作, 所以,這個(gè)類的實(shí)現(xiàn)是十分簡(jiǎn)單的,也就是進(jìn)行數(shù)據(jù)庫(kù)的連接, 關(guān)閉, 獲得數(shù)據(jù)庫(kù)的游標(biāo) 和 db值, 讓其他類去繼承這些, 就可以進(jìn)行數(shù)據(jù)庫(kù)的簡(jiǎn)單操作了,。

然后我們看看如何注冊(cè)賬號(hào),
Register注冊(cè)模塊:
差點(diǎn)我就忘記注冊(cè)這個(gè)模塊的設(shè)計(jì)了, 最開始的賬號(hào)是我自己直接在數(shù)據(jù)庫(kù)中填入的,我說怎么感覺少了很多來著, 后面急急忙忙的補(bǔ)上去。
注冊(cè)GUI:
注冊(cè)分為二種注冊(cè), 一個(gè)管理員, 一個(gè)學(xué)生, 在登入的界面進(jìn)行選擇,然后注冊(cè)的界面也會(huì)發(fā)生相對(duì)于的變化。

變化就是 把 這個(gè)管理員注冊(cè) 改成 學(xué)生注冊(cè) 哈哈哈哈哈哈
注冊(cè)的時(shí)候,也會(huì)進(jìn)行數(shù)據(jù)的檢測(cè), 比如賬號(hào)是否被注冊(cè)咯, 密碼是不是過于簡(jiǎn)單之類的, 先給出注冊(cè)的函數(shù)吧

我們?cè)谳斎肟蛑休斎氲男畔?,?huì)通過init函數(shù)進(jìn)行傳值, 所有的都會(huì)成為本地變量, 在start_reg中 會(huì)進(jìn)行信息檢測(cè), 然后給出一些錯(cuò)誤彈窗,比如這樣:


然后你就要重新思考一個(gè)帥氣的名字, 就可以方便你的注冊(cè)了,當(dāng)所有的正常之后,就會(huì)運(yùn)行reg_people 函數(shù), 進(jìn)行表單的提交,實(shí)際上就是更新數(shù)據(jù)庫(kù), 更新對(duì)應(yīng)的數(shù)據(jù)庫(kù), 如果是學(xué)生注冊(cè)就更新student 反之更新teacher表,這樣就完成了注冊(cè)模塊。 然后就可以很簡(jiǎn)單的登入了, 在這里給一下爬蟲程序先
爬蟲程序:

這個(gè)代碼就不解釋了,需要私聊
學(xué)生界面 students:
我們選擇學(xué)生登入, 正確輸入, 就會(huì)跳轉(zhuǎn)至學(xué)生界面:
界面GUI

登入之后,顯示這樣的界面, 雖然有點(diǎn)丑,,沒事,。
函數(shù)大致:


基本上的功能都能實(shí)現(xiàn),也有對(duì)應(yīng)的異常處理方式, 以及彈窗提示, 換句話說, 你想得到的東西,在這里都能實(shí)現(xiàn), 需要就私聊吧,寫著太累了,一個(gè)個(gè)描訴。
管理員界面teacher:
不同于學(xué)生界面, 管理員界面的功能更加復(fù)雜,不, 更加豐富,界面:


界面就是這樣的,tk界面外觀勉勉強(qiáng)強(qiáng), 還行吧。



函數(shù)功能也是一樣的,你想的我都能實(shí)現(xiàn),還是一句話,沒有你們想不到的,只有我老八做不到的,奧里給,肝了。
后記:
一個(gè)多禮拜, 千行代碼, 肝了兄弟們, 需要的私聊我, 還是個(gè)學(xué)生,你懂的。
到此這篇關(guān)于基于python圖書館管理系統(tǒng)設(shè)計(jì)實(shí)例詳解的文章就介紹到這了,更多相關(guān)基于python圖書館管理系統(tǒng)設(shè)計(jì)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- python圖書管理系統(tǒng)
- python實(shí)現(xiàn)圖書管理系統(tǒng)
- python實(shí)現(xiàn)簡(jiǎn)單圖書管理系統(tǒng)
- python代碼實(shí)現(xiàn)圖書管理系統(tǒng)
- Python簡(jiǎn)易版圖書管理系統(tǒng)
- python面向?qū)ο蠓▽?shí)現(xiàn)圖書管理系統(tǒng)
- 基于python實(shí)現(xiàn)圖書管理系統(tǒng)
- Python實(shí)現(xiàn)圖書借閱管理系統(tǒng)
- Python實(shí)現(xiàn)圖書管理系統(tǒng)設(shè)計(jì)
- python編寫圖書管理系統(tǒng)
相關(guān)文章
python操作excel之openpyxl模塊讀寫xlsx格式使用方法詳解
這篇文章主要介紹了python操作excel之openpyxl模塊讀寫xlsx格式使用方法詳解,需要的朋友可以參考下2022-12-12
python實(shí)現(xiàn)opencv+scoket網(wǎng)絡(luò)實(shí)時(shí)圖傳
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)opencv+scoket網(wǎng)絡(luò)實(shí)時(shí)圖傳,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-03-03
python簡(jiǎn)單實(shí)現(xiàn)插入排序?qū)嵗a
在本篇文章里小編給大家整理了一篇關(guān)于python簡(jiǎn)單實(shí)現(xiàn)插入排序?qū)嵗a,有需要的朋友們可以學(xué)習(xí)參考下。2020-12-12
Django框架HttpRequest對(duì)象用法實(shí)例分析
這篇文章主要介紹了Django框架HttpRequest對(duì)象用法,結(jié)合實(shí)例形式分析了Django框架HttpRequest對(duì)象發(fā)送請(qǐng)求數(shù)據(jù)的相關(guān)使用技巧,需要的朋友可以參考下2019-11-11
Python基于wordcloud及jieba實(shí)現(xiàn)中國(guó)地圖詞云圖
這篇文章主要介紹了Python基于wordcloud及jieba實(shí)現(xiàn)中國(guó)地圖詞云圖,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06
python3實(shí)現(xiàn)ftp服務(wù)功能(客戶端)
這篇文章主要為大家詳細(xì)介紹了python3實(shí)現(xiàn)ftp服務(wù)功能,客戶端的相應(yīng)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-03-03
50行Python代碼實(shí)現(xiàn)視頻中物體顏色識(shí)別和跟蹤(必須以紅色為例)
本文通過50行Python代碼實(shí)現(xiàn)視頻中物體顏色識(shí)別和跟蹤效果,通過實(shí)例截圖和實(shí)例代碼給大家講解的非常詳細(xì),需要的朋友可以參考下2019-11-11

