欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python編寫圖書管理系統

 更新時間:2022年03月10日 12:52:04   作者:Brisa56  
這篇文章主要為大家詳細介紹了python編寫圖書管理系統,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了python實現圖書管理系統的具體代碼,供大家參考,具體內容如下

題目:寫一個簡單的圖書借閱系統????????????????????????????????????????????????????????????????????????????????????????????????

學校二手書是個大市場,A老師決定涉足這個領域,她需要寫一個圖書管理系統幫她管理書籍的借閱情況,她希望這個程序可以做到:????????????????????????????????????????????????????????????????????????????????????????????????

1. 查詢書籍:可以一鍵查詢系統里所有書籍的信息和借閱情況????????????????????????????????????????????????????????????????????????????????????????????????
2. 添加書籍:往系統添加書籍時,需要輸入書籍的基本信息(書名,作者,推薦理由)????????????????????????????????????????????????????????????????????????????????????????????????
3. 借閱書籍:當書籍的狀態(tài)是“未借出”的時候,書籍才可以借,借出以后的書籍狀態(tài)為“已借出”????????????????????????????????????????????????????????????????????????????????????????????????
4. 歸還書籍:歸還成功后書籍的狀態(tài)會更改成“未借出”,下一個同學可以再借了。????????????????????????????????????????????????????????????????????????????????????????????????

既然已經學習了類和對象,所以不用考慮其他編程模式。????????????????????????????????????????????????????????????????????????????????????????????????

類的兩種用法:1. 類作為實例對象的模板 2. 類作為函數包。第一種用法是使用類生成實例對象。類作為實例對象的模版,每個實例創(chuàng)建后,都將擁有類的所有屬性和方法。第二種用法是用類將多個函數(方法)打包封裝在一起,讓類中的方法相互配合。????????????????????????????????????????????????????????????????????????????????????????????????

該項目中,處理的對象是每本具體的書籍,每本書都有自己的屬性信息,由此,可以定義一個Book類,利用Book類創(chuàng)建一個個書的實例,綁定屬性(第一種用法)????????????????????????????????????????????????????????????????????????????????????????????????

而對于而這個管理系統的運行主體,是多個可供選擇的功能的疊加,所以我們可以創(chuàng)建一個系統運行類BookManager,將查詢書籍、添加書籍等功能封裝成類中的方法以供調用(第二種用法)????????????????????????????????????????????????????????????????????????????????????????????????

課堂上,我們已編寫了基本功能,見附件1BookRent.py????????????????????????????????????????????????????????????????????????????????????????????????

------------------------------------------????????????????????????????????????????????????????????????????????????????????????????????????

對程序進行改造升級:????????????????????????????????????????????????????????????????????????????????????????????????

1. 圖書信息從CSV文件獲取(附件2),注意在借閱和歸還時修改圖書的狀態(tài)????????????????????????????????????????????????????????????????????????????????????????????????
2. 考慮對書籍進行分類:繼承Book類,創(chuàng)建一些子類,例如,FictionBook,改造其初始化方法,增加參數type=‘玄幻類’????????????????????????????????????????????????????????????????????????????????????????????????
3. 實現模糊查詢:例如,讓用戶輸入作者名,就能打印出系統里該作者所有書籍的相關信息;輸入玄幻類,打印出所有這類書籍的相關信息

CSV表格部分如下:

代碼:

# coding = utf-8
import csv
from itertools import islice
import pandas as pd
import os


class Book:
? ? def __init__(self, name, author, recommendation, type, status=0): ?# 對實例屬性進行初始化
? ? ? ? self.name = name
? ? ? ? self.author = author
? ? ? ? self.recommendation = recommendation
? ? ? ? self.status = status
? ? ? ? self.type = type

? ? def __str__(self):
? ? ? ? if self.status == 1:
? ? ? ? ? ? status = '已借出'
? ? ? ? else:
? ? ? ? ? ? status = '未借出'
? ? ? ? return '名稱:《%s》作者:%s 推薦語:%s 類別: %s 狀態(tài):%s ' % (self.name, self.author, self.recommendation, self.type, status)


class FictionBook(Book):
? ? def __init__(self, type='奇幻'):
? ? ? ? self.type = type


class NovelBook(Book):
? ? def __init__(self, type='小說'):
? ? ? ? self.type = type


class JottingsBook(Book):
? ? def __init__(self, type='隨筆'):
? ? ? ? self.type = type


class BookManager:
? ? books = []

? ? def __init__(self):
? ? ? ? f = open('BookInfos.csv', 'r')
? ? ? ? readers = csv.reader(f)
? ? ? ? for row in islice(readers, 1, None):
? ? ? ? ? ? self.books.append(Book(row[0], row[1], row[2], row[3], row[4]))
? ? ? ? f.close()

? ? def menu(self): ?# 顯示選擇菜單,根據不同菜單的選項調用不同的方法
? ? ? ? print('歡迎使用大數據團隊圖書節(jié)約系統,每本書都是好書,希望鐘老師的市場越來越好。\n')
? ? ? ? while True:
? ? ? ? ? ? print(' 1.查詢書籍\n 2.添加書籍\n 3.借閱書籍\n 4.歸還書籍\n 5.退出系統\n')
? ? ? ? ? ? choice = int(input('請輸入數字選項對應的功能,例如:1(指....)'))
? ? ? ? ? ? if choice == 1:
? ? ? ? ? ? ? ? self.show_all_book()
? ? ? ? ? ? elif choice == 2:
? ? ? ? ? ? ? ? self.add_book()
? ? ? ? ? ? elif choice == 3:
? ? ? ? ? ? ? ? self.lend_book()
? ? ? ? ? ? elif choice == 4:
? ? ? ? ? ? ? ? self.return_book()
? ? ? ? ? ? elif choice == 5:
? ? ? ? ? ? ? ? print('感謝使用!歡迎下次再來!')
? ? ? ? ? ? ? ? break

? ? def show_all_book(self): ?# 顯示書籍信息
? ? ? ? print("1.查詢作者相關書籍\n2.查詢類別相關書籍\n3.查詢所有書籍")
? ? ? ? ch = eval(input('請輸入你的選擇:例如:1(指....)'))
? ? ? ? if ch == 1:
? ? ? ? ? ? author = input("請輸入作者名字:")
? ? ? ? ? ? for book in self.books:
? ? ? ? ? ? ? ? if book.author == author:
? ? ? ? ? ? ? ? ? ? print('')
? ? ? ? ? ? ? ? ? ? print(book)
? ? ? ? elif ch == 2:
? ? ? ? ? ? type = input("請輸入書籍類別:")
? ? ? ? ? ? for book in self.books:
? ? ? ? ? ? ? ? if book.type == type:
? ? ? ? ? ? ? ? ? ? print('')
? ? ? ? ? ? ? ? ? ? print(book)
? ? ? ? elif ch == 3:
? ? ? ? ? ? for book in self.books:
? ? ? ? ? ? ? ? print('')
? ? ? ? ? ? ? ? print(book)
? ? ? ? else:
? ? ? ? ? ? print("您的輸入有誤噢!")

? ? def add_book(self): ?# 添加書籍
? ? ? ? new_name = input('請輸入書籍的名字:')
? ? ? ? new_author = input('請輸入書籍的作者:')
? ? ? ? new_comment = input('請輸入書籍的推薦語:')
? ? ? ? new_type = input('請輸入書籍的類別:')
? ? ? ? new_book = [new_name, new_author, new_comment, new_type, 0]
? ? ? ? # 寫入CSV文件
? ? ? ? f = open('BookInfos.csv', 'a+')
? ? ? ? writer = csv.writer(f)
? ? ? ? writer.writerow(new_book)
? ? ? ? f.close()
? ? ? ? # 改變books[]
? ? ? ? self.books.append(Book(new_book[0], new_book[1], new_book[2], new_book[3], new_book[4]))
? ? ? ? print('書籍錄入成功!\n')

? ? def check_book(self, name): ?# 檢查是否存在該書籍
? ? ? ? for book in self.books:
? ? ? ? ? ? if book.name == name:
? ? ? ? ? ? ? ? return book
? ? ? ? else:
? ? ? ? ? ? return -1

? ? def lend_book(self): ?# 借閱書籍
? ? ? ? name = input('請輸入你想借閱的書籍名字:')
? ? ? ? res = self.check_book(name)
? ? ? ? if res != -1:
? ? ? ? ? ? if res.status == 1:
? ? ? ? ? ? ? ? print('你來晚了,這本書已經被借走了')
? ? ? ? ? ? else:
? ? ? ? ? ? ? ? print('借閱成功!借了不看會變胖~~~')
? ? ? ? ? ? ? ? res.status = 1
? ? ? ? ? ? ? ? manager.change_status(name)
? ? ? ? else:
? ? ? ? ? ? print('這本書暫時沒有在系統里!')

? ? def return_book(self): ?# 歸還書籍
? ? ? ? name = input('請輸入歸還書籍的名字:')
? ? ? ? res = self.check_book(name)
? ? ? ? if res == -1:
? ? ? ? ? ? print('沒有這本書,你恐怕輸錯書名了~')
? ? ? ? else:
? ? ? ? ? ? if res.status == 0:
? ? ? ? ? ? ? ? print('這本書沒有被借走!')
? ? ? ? ? ? else:
? ? ? ? ? ? ? ? print('歸還成功')
? ? ? ? ? ? ? ? res.status = 0
? ? ? ? ? ? ? ? manager.change_status(name)
? ? ? ? ? ? ? ? # 這里我做實驗時有些些問題,去掉manager.會出現 name is not defined 學藝不精,還不夠了解python,見諒

? ? @staticmethod
? ? def change_status(name): ?# 修改CSV文件中借還書籍的狀態(tài)
? ? ? ? in_file = open("BookInfos.csv", "r")
? ? ? ? reader = csv.reader(in_file)
? ? ? ? out_file = open("BookInfos1.csv", "w", newline='')
? ? ? ? writer = csv.writer(out_file)
? ? ? ? for row in reader:
? ? ? ? ? ? if row[0] == name:

? ? ? ? ? ? ? ? if row[4] == '0':
? ? ? ? ? ? ? ? ? ? row[4] = '1'
? ? ? ? ? ? ? ? else:
? ? ? ? ? ? ? ? ? ? row[4] = '0'
? ? ? ? ? ? writer.writerow(row)
? ? ? ? in_file.close()
? ? ? ? out_file.close()
? ? ? ? os.remove("BookInfos.csv") ?# 刪除原文件
? ? ? ? os.rename("BookInfos1.csv", "BookInfos.csv") ?# 重命名寫入文件,此法不可取,但是我暫時找不到好的方法了
? ? ? ? print("已修改CSV文件")
? ? ? ? # 這里我做實驗時也有些些問題。1.不會修改特定單元格,2.選擇了修改后替換原文件的方法,此法若真實用于大型文件管理,會導致效率大幅度降低,不可取,見諒


manager = BookManager()
manager.menu()

此次實驗前前后后斷斷續(xù)續(xù)做了5天左右,主要還是對python的CSV模塊不太熟悉,建議大家好好學習。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • python tkinter canvas使用實例

    python tkinter canvas使用實例

    這篇文章主要介紹了python tkinter canvas使用實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-11-11
  • 解決pandas無法在pycharm中使用plot()方法顯示圖像的問題

    解決pandas無法在pycharm中使用plot()方法顯示圖像的問題

    今天小編就為大家分享一篇解決pandas無法在pycharm中使用plot()方法顯示圖像的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • 如何在scrapy中集成selenium爬取網頁的方法

    如何在scrapy中集成selenium爬取網頁的方法

    這篇文章主要介紹了如何在scrapy中集成selenium爬取網頁的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-11-11
  • Python實現的彩票機選器實例

    Python實現的彩票機選器實例

    這篇文章主要介紹了Python實現彩票機選器的方法,可以模擬彩票號碼的隨機生成功能,需要的朋友可以參考下
    2015-06-06
  • 使用Cython提升Python性能的方法步驟

    使用Cython提升Python性能的方法步驟

    Cython是Python的一種擴展,允許Python代碼調用C庫,本文主要介紹了使用Cython提升Python的性能的方法步驟,具有一定的參考價值,感興趣的可以了解一下
    2023-05-05
  • python調用文字識別OCR輕松搞定驗證碼

    python調用文字識別OCR輕松搞定驗證碼

    本文主要介紹了python調用文字識別OCR輕松搞定驗證碼,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • python面向對象法實現圖書管理系統

    python面向對象法實現圖書管理系統

    這篇文章主要為大家詳細介紹了python面向對象法實現圖書管理系統,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-04-04
  • python如何將多個PDF進行合并

    python如何將多個PDF進行合并

    這篇文章主要為大家詳細介紹了python如何將多個PDF進行合并,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-08-08
  • Python中的字典及其使用方法

    Python中的字典及其使用方法

    這篇文章主要介紹了Python中的字典及其使用方法,包括使用字典(添加、刪除、修改等操作)、遍歷字典以及字典與列表之間的嵌套使用具有一定的參考價值,需要的小伙伴可以參考一下
    2022-03-03
  • 深入理解Python 代碼優(yōu)化詳解

    深入理解Python 代碼優(yōu)化詳解

    本文初步探討了 python 常見的性能優(yōu)化技巧以及如何借助工具來定位和分析程序的性能瓶頸,并提供了相關可以進行性能優(yōu)化的工具或語言,希望能夠更相關人員一些參考。
    2014-10-10

最新評論