网络编程
位置:首页>> 网络编程>> Python编程>> 基于python实现图书管理系统

基于python实现图书管理系统

作者:昇柱  发布时间:2022-11-28 05:46:42 

标签:python,图书管理系统

本文实例为大家分享了python实现图书管理系统的具体代码,供大家参考,具体内容如下

添加新书

基于python实现图书管理系统

查询

基于python实现图书管理系统

基于python实现图书管理系统

借阅

基于python实现图书管理系统

基于python实现图书管理系统

二次添加新书(读取已有的.xls并修改)

基于python实现图书管理系统

基于python实现图书管理系统

代码:


import xlwt
import xlrd

def read_old_data(row0_len):
   try:
       filename=".\图书.xls"
       old_data = []#读取表格已有内容
       data = xlrd.open_workbook(filename)
       sheet0 = data.sheet_by_index(0)
       nrows = sheet0.nrows  #获取该sheet中的有效行数
       print("Info:读取到已有数据表格")
       print("有效行数:",nrows)
       for i in range(nrows):
           for j in range(row0_len):
               old_data.append(sheet0.cell(i,j).value)
       print("共有旧的数据:",len(old_data))
   except IOError:
       print("Info: 没有找到文件或读取文件失败/n1 =>新建图书.xls文件")
       nrows=0
   return old_data,nrows

def new_book():

book = []
   print_value=("书名","作者","编号","位置","数量")
   row0_len=len(print_value)#列数
   input_value=''
   '''
   try:

'''
   (old_data,nrows)=read_old_data(row0_len)

#打开存储
   book_excel = xlwt.Workbook()
   sheet1 = book_excel.add_sheet("books",cell_overwrite_ok=0)

#写入旧数据:
   for i in range(nrows):
       for j in range(row0_len):
           sheet1.write(i,j,old_data[(i*row0_len)+j])

while(1):
       print("添加新书")
       #输入
       for i in range(row0_len):
           print("请输入:"+print_value[i])
           input_value = input()

#判断是否输出
           if(input_value == 'q'):
               book_excel.save("图书.xls")
               return
           book.append(input_value)
       #保存到硬盘
       for i in range(row0_len):
           sheet1.write(nrows,i,book[i])
       nrows=nrows+1
       book=[]#清空book缓存
   return

def search():
   #打开excel
   book_excel = xlrd.open_workbook("图书.xls")
   sheet1 = book_excel.sheets()[0]
   book_num =sheet1.nrows
   #while(1):
   #输入书名
   bookname = input("请输入书名:")
   find_flag=0
   #查找
   for i in range(book_num):
       if(bookname == sheet1.cell_value(i,0)):
           if(int(sheet1.cell_value(i,4))>0):
               find_flag=1
               print("书名:",sheet1.cell_value(i,0))
               print("作者:",sheet1.cell_value(i,1))
               print("位置:",sheet1.cell_value(i,3))
               print("库存(本):",sheet1.cell_value(i,4))
               return
   if(find_flag==1):
       print("查无此书。")
   return

def borrow():
   #打开excel
   book_excel =xlrd.open_workbook("图书.xls")
   sheet1 = book_excel.sheets()[0]
   book_num = sheet1.nrows
   row0_len=5#5列
   while(1):
       #输入书名
       bookname = input("请输入书名:")
       if(bookname == 'q'):
           return
       #查找
       for i in range(0,book_num):
           if(bookname == sheet1.cell(i,0).value):

kucun=int(sheet1.cell_value(i,4))

if(kucun>0):
                   (old_data,nrows)=read_old_data(row0_len)#5列
                   book_excel_w = xlwt.Workbook("图书.xls")
                   sheet2 = book_excel_w.add_sheet("books",cell_overwrite_ok=True)
                   #写入旧数据:
                   for n in range(nrows):
                       for j in range(row0_len):
                           sheet2.write(n,j,old_data[(n*row0_len)+j])

print("借到了!")
                   sheet2.write(i,4,str(kucun-1))
                   print("剩余库存:",kucun-1)
                   book_excel_w.save("图书.xls")
                   break
   return

def main_window():
   while(1):
       print("\n====图书管理系统====")
       print("1.新书加入")
       print("2.书籍查询")
       print("3.图书借阅")
       print("========4退出=======")
       x= (input("请输入你的操作"))
       print('\n')
       if(x == '1'):
           new_book()
       elif(x=='2'):
           search()
       elif(x=='3'):
           borrow()

elif(x=='4'):
           break
       else:
           print("输入无效")

return

main_window()

来源:https://blog.csdn.net/weixin_45568186/article/details/115712025

0
投稿

猜你喜欢

  • 我就废话不多说了,直接上代码吧!'''python对象销毁(垃圾回收)'''class Po
  • 本文实例为大家分享了python递归全排列的实现方法,供大家参考,具体内容如下排列:从n个元素中任取m个元素,并按照一定的顺序进行排列,称为
  • 通过本文给大家介绍Python3控制路由器——使用requests重启极路由.py的相关知识,代码写了相应的注释,以后再写成可以方便调用的模
  • 问:怎样解决mysql连接过多的错误?答:系统不能连接数据库,关键要看两个数据:1、数据库系统允许的最大可连接数max_connection
  • 很多网站现在都有使用QQ作为在线客服工具,我们点击它可以很方便的和网站人员联系,本站为你整理了在网站上使用QQ在线客服的代码,共13种风格,
  • 深底色风格的页面设计很受欢迎,它可以创造出别致优雅、极富创造力的效果。深底色设计适用于许多网站类型,但并非所有。这种风格应该在恰当的条件下使
  • 对于每个类型拥有的值范围以及并且指定日期何时间值的有效格式的描述见7.3.6 日期和时间类型。 1、这里是一个使用日期函数的例子。
  • 在Python教程里,针对默认参数,给了一个“重要警告”的例子:def f(a, L=[]):  L.append(a) &nbs
  • 一、工厂模式(Factory Pattern)工厂模式(Factory Pattern),提供了一种实例化(创建)对象的最佳方式。在工厂模式
  • 最近公司产品和百度贴吧合作搞活动,为了增加人气,打算做个自动签到的小程序。这个是测试登录的代码,写的比较随意,仅实现了登录并读取关注贴吧列表
  • PHP PDO 事务与自动提交现在通过 PDO 连接上了,在开始进行查询前,必须先理解 PDO 是如何管理事务的。事务支持四大特性(ACID
  •   可以,具体方法如下::<% set fs=createobject("scripting.
  • 前言网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或
  • 网上有不少生成缩略图的ASP组件。若你的虚拟空间不支持注册新组件,可能会感觉自己的网站失色不少。心晴不才,结合网上资源写了个无组件生成缩略图
  • 利用空闲几天把《JavaScript权威指南》安静的读了一篇。真是一本好书呀!呵呵,这句话见的太多了。好在什么地方呢?听我慢慢道来。从开始接
  • 在任何有监督机器学习项目的模型构建阶段,我们训练模型的目的是从标记的示例中学习所有权重和偏差的最佳值。如果我们使用相同的标记示例来测试我们的
  • 本文使用案例是基于 python2.7 实现以下内容均为个人使用 peewee 的经验和遇到的坑,不会涉及过多的基本操作。所以,没有使用过
  • 存储过程的优缺点: 存储过程优点: 1.由于应用程序随着时间推移会不断更改,增删功能,T-SQL过程代码会变得更复杂,StoredProce
  • MySQL数据库配置技巧用root用户启动远程服务一直是安全大忌,因为如果服务程序出现问题,远程攻击者极有可能获得主机的完全控制权。MySQ
  • 前言首先,我们开发的项目会有多个版本.其次,我们的项目版本会随着更新越来越多,我们不可能因出了新版本就不维护旧版本了.那么,我们就需要对版本
手机版 网络编程 asp之家 www.aspxhome.com