python编写图书管理系统注册登录,用python编写图书管理系统

  python编写图书管理系统注册登录,用python编写图书管理系统

  本文主要详细介绍用python编写的图书管理系统。本文中的示例代码非常详细,具有一定的参考价值。感兴趣的朋友可以参考一下。

  本文分享python图书馆管理系统的具体代码,供大家参考。具体内容如下

  题目:写一个简单的图书借阅系统

  学校的二手书是一个很大的市场。A老师决定涉足这个领域。她需要写一个图书管理系统来帮助她管理图书的借阅。她希望这个程序可以做到:

  1.查询图书:可以一键查询系统中所有图书的信息和借阅情况。

  2.添加图书:在系统中添加图书时,需要输入图书的基本信息(书名、作者、推荐理由)。

  3.借书:只有在图书状态为“未借出”时才能借书,借书后的状态为“已借出”

  4.还书:成功还书后,书的状态将变为“未借出”,下一个同学可以再次借阅。

  既然已经学会了类和对象,就不用考虑其他编程模式了。

  1.类的两种用法:.类作为实例对象2的模板。作为功能包的类。第一种用法是使用类生成实例对象。作为一个类对象的模板,每个实例创建后,它将拥有该类的所有属性和方法。第二种用法是将多个函数(方法)与类打包在一起,这样类中的方法就可以相互协作。

  在这个项目中,要处理的对象是每一本具体的书,每本书都有自己的属性信息。因此,您可以定义一个book类,使用book类创建book实例并绑定属性(第一种用法)。

  而对于而这个管理系统的运行主体,是多个可供选择的功能的叠加,所以我们可以创建一个系统运行类BookManager,将查询书籍、添加书籍等功能封装成类中的方法以供调用(第二种用法)

  课堂上,我们已编写了基本功能,见附件1bookrent.py

  -

  对程序进行改造升级:

  1.图书信息从特许测量员

  V文件获取(附件2),注意在借阅和归还时修改图书的状态‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬
2. 考虑对书籍进行分类:继承Book类,创建一些子类,例如,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 状态:%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(欢迎使用大数据团队图书节约系统,每本书都是好书,希望钟老师的市场越来越好。\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文件中借还书籍的状态

          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()

  此次实验前前后后断断续续做了5天左右,主要还是对python的CSV模块不太熟悉,建议大家好好学习。

  以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持盛行IT软件开发工作室。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: