基于python圖書(shū)館管理系統(tǒng)設(shè)計(jì)實(shí)例詳解
寫(xiě)完這個(gè)項(xiàng)目后,導(dǎo)師說(shuō)這個(gè)你完全可以當(dāng)作畢業(yè)項(xiàng)目使用了,寫(xiě)的很全,很多的都設(shè)計(jì)考慮周全,但我的腳步絕不止于現(xiàn)在,我想要的是星辰大海!與君共勉!
這個(gè)項(xiàng)目不是我的作業(yè), 只是無(wú)意中被拉進(jìn)來(lái)了,然后就承擔(dān)了所有,肝了一周多,終于完成,但這個(gè)也算是一個(gè)很大的項(xiàng)目了吧,對(duì)于我現(xiàn)在來(lái)說(shuō),寫(xiě)這個(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)起來(lái)就會(huì)顯得復(fù)雜,但這也是鍛煉自己的一個(gè)能力。 下面先描述這個(gè)項(xiàng)目的大致結(jié)構(gòu)。
成品圖
架構(gòu)圖
數(shù)據(jù)庫(kù)圖
思維導(dǎo)圖
項(xiàng)目感想:
畫(huà)這個(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)單上手, 用來(lái)設(shè)計(jì)簡(jiǎn)單的界面最好不過(guò)了, 然后就是關(guān)于 程序的框架 如何去設(shè)計(jì), 這個(gè)沒(méi)有現(xiàn)存的框架去套用, 所以我使用了面對(duì)對(duì)象的思維去闡述,畢竟老師和學(xué)生都有很多相同點(diǎn), 在這里使用函數(shù)的繼承和多態(tài)最好不過(guò)了,然后連接到數(shù)據(jù)庫(kù),這個(gè)數(shù)據(jù)庫(kù)我是用MySQL去搭建的, 其他的數(shù)據(jù)庫(kù)也是一樣的道理,其他的也就順手寫(xiě)完了。整體來(lái)說(shuō), 這個(gè)項(xiàng)目提升還有很大,只不過(guò)我現(xiàn)在能力不足, 也快考試了,沒(méi)這么多時(shí)間去搞,生活還得向前走,加油!
因?yàn)檫@個(gè)項(xiàng)目代碼太多了, 在這里就不分享出來(lái),有需要的可以私聊找我!
如果覺(jué)得文章很長(zhǎng),可以根據(jù)目錄進(jìn)行跳轉(zhuǎn)閱讀! 也可以收藏關(guān)注點(diǎn)擊,謝謝。
項(xiàng)目框架:
在__init__函數(shù)中:
這是一個(gè)構(gòu)造函數(shù), 在這里單獨(dú)的拿出來(lái),就是方便程序的運(yùn)行,也方便打印一些help信息。 在下面這些代碼中, 導(dǎo)入了很多模塊,對(duì)的, 這些不是第三方庫(kù)哦, 這是我自己編寫(xiě)的類函數(shù),在下面的實(shí)例中,你們也可以看到,使用這樣的方便,在編寫(xiě)代碼的時(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è) 圖書(shū)館管理系統(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è)的, 不然都沒(méi)有賬號(hào),怎么點(diǎn)擊登入。但是因?yàn)槲野阎饕K寫(xiě)在了login中了, 看下面的圖:
這里登入方式有二種, 注冊(cè)方式也有二種, 分別是管理員和學(xué)生,在login模塊中, 設(shè)置了一個(gè)注冊(cè)按鈕, 點(diǎn)擊注冊(cè)按鈕, 整個(gè)界面就會(huì)跳轉(zhuǎn)到注冊(cè)界面中, 這個(gè)稍后再說(shuō), 所以整體構(gòu)架還是存放到login中, 我覺(jué)得會(huì)很方便一點(diǎn), 主要是便于傳root 和 password 中。
我們先看看login模塊的大致函數(shù),然后細(xì)講:
整個(gè)__init__ 中, 是生成這個(gè)界面的函數(shù), 包括一些必要的值,也構(gòu)造在其中, 然后根據(jù)用戶輸入的賬號(hào)密碼, 進(jìn)行身份的驗(yàn)證, 這個(gè)模塊寫(xiě)到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è)功能寫(xiě)在了update中, 會(huì)更新最后登入時(shí)間, 時(shí)間的獲取我寫(xiě)在了get_time中, 這樣就能簡(jiǎn)單的實(shí)現(xiàn), 一個(gè)登入模塊的設(shè)置了。
數(shù)據(jù)庫(kù)中:
我覺(jué)得還是有必要先講一下數(shù)據(jù)庫(kù), 了解一下數(shù)據(jù)庫(kù)的大致構(gòu)造, 不然你們看的很暈,我也不好講這些。
我建立了一個(gè)數(shù)據(jù)庫(kù) book , 里面新建了三個(gè)表單, student, teacher, books,分別學(xué)生,老師, 圖書(shū)表, 互不干擾,相互工作。
在student:
表的大致構(gòu)造如上, 其實(shí)也就是簡(jiǎn)單的信息, 復(fù)雜的我暫時(shí)也做不了, 然后teacher 表單 信息 其實(shí)和 students 是一樣的, 只不過(guò)這樣設(shè)計(jì), 可以封開(kāi), 更好管理!
在books中;
books字段的設(shè)計(jì),其實(shí)也不是很難, 把一些基本信息加入就可以了,然后這個(gè)books中, 我寫(xiě)了一個(gè)小爬蟲(chóng), 把表單信息補(bǔ)充了一下, 先充實(shí)一下,方便接下來(lái)的操作。
然后我們講一下這個(gè)模塊中, 這是一個(gè)連接數(shù)據(jù)庫(kù)的一個(gè)父類,這就很方便其他的類進(jìn)行繼承, 或者重寫(xiě)操作, 所以,這個(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ì)了, 最開(kāi)始的賬號(hào)是我自己直接在數(shù)據(jù)庫(kù)中填入的,我說(shuō)怎么感覺(jué)少了很多來(lái)著, 后面急急忙忙的補(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è)咯, 密碼是不是過(guò)于簡(jiǎn)單之類的, 先給出注冊(cè)的函數(shù)吧
我們?cè)谳斎肟蛑休斎氲男畔ⅲ瑫?huì)通過(guò)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)單的登入了, 在這里給一下爬蟲(chóng)程序先
爬蟲(chóng)程序:
這個(gè)代碼就不解釋了,需要私聊
學(xué)生界面 students:
我們選擇學(xué)生登入, 正確輸入, 就會(huì)跳轉(zhuǎn)至學(xué)生界面:
界面GUI
登入之后,顯示這樣的界面, 雖然有點(diǎn)丑,,沒(méi)事,。
函數(shù)大致:
基本上的功能都能實(shí)現(xiàn),也有對(duì)應(yīng)的異常處理方式, 以及彈窗提示, 換句話說(shuō), 你想得到的東西,在這里都能實(shí)現(xiàn), 需要就私聊吧,寫(xiě)著太累了,一個(gè)個(gè)描訴。
管理員界面teacher:
不同于學(xué)生界面, 管理員界面的功能更加復(fù)雜,不, 更加豐富,界面:
界面就是這樣的,tk界面外觀勉勉強(qiáng)強(qiáng), 還行吧。
函數(shù)功能也是一樣的,你想的我都能實(shí)現(xiàn),還是一句話,沒(méi)有你們想不到的,只有我老八做不到的,奧里給,肝了。
后記:
一個(gè)多禮拜, 千行代碼, 肝了兄弟們, 需要的私聊我, 還是個(gè)學(xué)生,你懂的。
到此這篇關(guān)于基于python圖書(shū)館管理系統(tǒng)設(shè)計(jì)實(shí)例詳解的文章就介紹到這了,更多相關(guān)基于python圖書(shū)館管理系統(tǒng)設(shè)計(jì)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- python圖書(shū)管理系統(tǒng)
- python實(shí)現(xiàn)圖書(shū)管理系統(tǒng)
- python實(shí)現(xiàn)簡(jiǎn)單圖書(shū)管理系統(tǒng)
- python代碼實(shí)現(xiàn)圖書(shū)管理系統(tǒng)
- Python簡(jiǎn)易版圖書(shū)管理系統(tǒng)
- python面向?qū)ο蠓▽?shí)現(xiàn)圖書(shū)管理系統(tǒng)
- 基于python實(shí)現(xiàn)圖書(shū)管理系統(tǒng)
- Python實(shí)現(xiàn)圖書(shū)借閱管理系統(tǒng)
- Python實(shí)現(xiàn)圖書(shū)管理系統(tǒng)設(shè)計(jì)
- python編寫(xiě)圖書(shū)管理系統(tǒng)
相關(guān)文章
初步認(rèn)識(shí)Python中的列表與位運(yùn)算符
這篇文章主要介紹了Python中的列表與位運(yùn)算符,是Python入門(mén)學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-10-10python實(shí)現(xiàn)啟動(dòng)一個(gè)外部程序,并且不阻塞當(dāng)前進(jìn)程
這篇文章主要介紹了python實(shí)現(xiàn)啟動(dòng)一個(gè)外部程序,并且不阻塞當(dāng)前進(jìn)程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-12-12Pandas時(shí)間數(shù)據(jù)處理詳細(xì)教程
日常工作中日期格式有多種表達(dá)形式,比如年份開(kāi)頭或是月份開(kāi)頭2022/6/4、6/4/2022等,通過(guò)pandas的日期數(shù)據(jù)處理,這篇文章主要給大家介紹了關(guān)于Pandas時(shí)間數(shù)據(jù)處理的相關(guān)資料,需要的朋友可以參考下2023-01-01python使用super()出現(xiàn)錯(cuò)誤解決辦法
這篇文章主要介紹了python使用super()出現(xiàn)錯(cuò)誤解決辦法的相關(guān)資料,對(duì)于TypeError: must be type, not classobj的錯(cuò)誤進(jìn)行處理,需要的朋友可以參考下2017-08-08Python編程中使用Pillow來(lái)處理圖像的基礎(chǔ)教程
這篇文章主要介紹了Python編程中使用Pillow來(lái)處理圖像的基礎(chǔ)教程,Pillow和PIL都是Python下十分強(qiáng)大的圖片處理利器,朋友可以參考下2015-11-11pytorch利用Dataset讀取數(shù)據(jù)報(bào)錯(cuò)問(wèn)題及解決
這篇文章主要介紹了pytorch利用Dataset讀取數(shù)據(jù)報(bào)錯(cuò)問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-09-09Python高階函數(shù)之filter()函數(shù)代碼示例
這篇文章主要介紹了Python高階函數(shù)之filter()函數(shù)代碼示例,獲取了一個(gè)序列的時(shí)候,想要把一些內(nèi)容去掉,保留一部分內(nèi)容的時(shí)候可以使用高效的filter()函數(shù),需要的朋友可以參考下2023-07-07Python實(shí)現(xiàn)合并多個(gè)Excel文件中的指定sheet
這篇文章主要為大家介紹了一個(gè)用于合并多個(gè)Excel文件中指定sheet的Python代碼,這個(gè)功能可以方便地整理和分析數(shù)據(jù),文中的示例代碼簡(jiǎn)潔易懂,需要的可以參考下2023-10-10基于python實(shí)現(xiàn)Pycharm斷點(diǎn)調(diào)試
這篇文章主要介紹了基于python實(shí)現(xiàn)Pycharm斷點(diǎn)調(diào)試,在我們寫(xiě)程序的時(shí)候,很容易遇到各種各樣的bug,然后編譯器提示程序出錯(cuò)的地方。很多時(shí)候可以通過(guò)提示的信息修改程序,但是有時(shí)我們想得到更多的信息,這個(gè)時(shí)候就需要進(jìn)行斷點(diǎn)調(diào)試,下面我們就一起來(lái)學(xué)習(xí)ycharm斷點(diǎn)調(diào)試2022-02-02