1、功能介绍:

(1)、添加新书:输入要添加的书名、存放的书架号、价格。

(2)、修改书架:输入要书名,然后对其修改书架号、价格

(3)、删除书架:输入书名,然后对应删除书名、书架号、价格

(4)、查询书架:展示所有的书籍

(5)、退出系统:退出系统

2、代码

# 创建一个dict,存放图书
books={"倚天屠龙记":{"id":1,"price":100.00},
"好吗好的":{"id":2,"price":200.00},
"告别薇安":{"id":3,"price":300.00},
"穆斯林的葬礼":{"id":4,"price":400.00}
}
# 创建一个list
menu=["1、添加新书","2、修改书架","3、删除书架","4、查询书架","5、退出系统"] # 系统启动+菜单展示
def start():
print("欢迎使用图书馆管理系统")
# 菜单展示
for i in menu:
print("**%s**" % i)
choose() # 功能选择
def choose():
choosenum = input("请选择一个功能:")
# 添加新书
if choosenum=="":
print("添加新书中....")
while True:
add_bookname = input("输入要添加的书名:")
# 如果图书馆已经有这本书
if ifexist(bookname=add_bookname):
s=input("已经有这本书了!\n请输入0重新选择功能,输入1继续添加新书:")
# 输入0回到choose()
if s=="":
return choose()
# 输入1停止剩余的语句,继续下一次的循环
elif s=="":
continue
else:
print("输入有误,已退出!")
# 退出系统
exit()
# 如果图书馆没有这本书,跳出while循环
else:
break
while True:
add_bookid = input("请输入要放得书架号:")
# 如果书架号已经被占用
if ifexist(bookid=add_bookid):
s=input("这个书架已经被占用了!\n请输入0重新选择功能,输入1继续添加书架:")
if s=="":
return choose()
elif s=="":
continue
else:
print("输入有误,已退出!")
exit()
# 如果书架号没有被占用,跳出while循环
else:
break
# 输入书的价格
add_bookprice=input("请输入书的价格:")
# 创建一个dict
add_bookidprice={"id":add_bookid,"price":add_bookprice}
# 往图书馆中添加新书
newbook(add_bookname,**add_bookidprice)
# 展示所有的图书
showbooks(**books)
# 修改书架
elif choosenum=="":
# 输入书名
update_bookname=input("请输入要修改的书名:")
# 对着书名,修改其书架号和价格
updatebook(update_bookname)
# 删除书架
elif choosenum=="":
# 输入书名
del_bookname = input("请选择要删除的书名:")
# 删除这本书的所有的记录
deletebook(del_bookname)
# 查询书架
elif choosenum=="":
# 展示所有的图书
showbooks(**books)
# 退出系统
elif choosenum=="":
print("退出系统!")
# 退出系统
exit()
else:
# 输入的功能不是1、2、3、4、5,抛出“输入的参数有误”
if isinstance(choosenum, str):
raise TypeError("输入参数有误!")
else:
# 退出系统
exit() # 修改书架
def updatebook(bookname):
# 查看书本是否已经存在
if ifexist(bookname=bookname):
num=input("你想修改什么呢?输入1修改书架号,输入2修改价格,输入其他退出:")
# 修改书的书架号
if num=="":
while True:
updatebook_id=input("你想放几号书架?:")
# 查看书架号是否被占用
if ifexist(bookid=updatebook_id):
print("这个书架已经满了!")
# 停止剩下的语句,继续下一次循环
continue
else:
# 修改书架号
books[bookname]["id"]=int(updatebook_id)
print("成功修改书架号!")
# 展示所有的图书
showbooks(**books)
# 修改书的价格
elif num=="":
updatebook_price=float(input("输入新的价格:"))
# 修改输的价格
books[bookname]["price"]=updatebook_price
print("成功修改价格!")
# 展示所有的图书
showbooks(**books)
else:
# 退出系统
exit()
# 图书馆没有这本书,返回主键面
else:
print("图书馆没有这本书!")
return choose()
#删除书架
def deletebook(bookname):
# 查看图书馆是否有这本书
if ifexist(bookname=bookname):
# 删除这本书
books.pop(bookname)
print("已删除%s" % bookname)
# 返回主键面
return choose()
else:
print("图书馆没有这本书!")
return choose() # 新书存入图书馆
def newbook(bookname,**kwargs):
# 新书存入图书馆中
books[bookname]=kwargs
print("添加成功了!") # 展示图书馆的所有的图书
def showbooks(**kwargs):
# 遍历books
for i in kwargs:
print("name=%s,id=%d,price=%.2f" % (i,int(books[i]["id"]),float(books[i]["price"])))
# 遍历完返回主键面
return choose() # 判断书名或者id是否存在于图书馆系统中
def ifexist(bookname='',bookid=''):
# 书名不为空
if bookname != '':
# 如果图书馆有这本书,返回True
if bookname in books:
return True
# 图书馆没有这本书,返回False
else:
return False
else:
# 遍历一个dict
for i in books:
# 如果输入参数bookid等于某个图书馆书架的id,返回True
if int(bookid)==books[i]['id']:
return True
return False
# 程序启动
start()

结果演示:

**1、添加新书**
**2、修改书架**
**3、删除书架**
**4、查询书架**
**5、退出系统**
请选择一个功能:1
添加新书中....
输入要添加的书名:哈哈
请输入要放得书架号:4
这个书架已经被占用了!
请输入0重新选择功能,输入1继续添加书架:1
请输入要放得书架号:6
请输入书的价格:50
添加成功了!
name=倚天屠龙记,id=1,price=100.00
name=好吗好的,id=2,price=200.00
name=告别薇安,id=3,price=300.00
name=穆斯林的葬礼,id=4,price=400.00
name=哈哈,id=6,price=50.00
请选择一个功能:2
请输入要修改的书名:哈哈
你想修改什么呢?输入1修改书架号,输入2修改价格,输入其他退出:1
你想放几号书架?:2
这个书架已经满了!
你想放几号书架?:7
成功修改书架号!
name=倚天屠龙记,id=1,price=100.00
name=好吗好的,id=2,price=200.00
name=告别薇安,id=3,price=300.00
name=穆斯林的葬礼,id=4,price=400.00
name=哈哈,id=7,price=50.00
请选择一个功能:3
请选择要删除的书名:哈哈
已删除哈哈
请选择一个功能:4
name=倚天屠龙记,id=1,price=100.00
name=好吗好的,id=2,price=200.00
name=告别薇安,id=3,price=300.00
name=穆斯林的葬礼,id=4,price=400.00
请选择一个功能:5
退出系统!

Process finished with exit code 0

用python写项目之图书管理系统的更多相关文章

  1. C项目实践--图书管理系统(2)

    前面在<<C项目实践-图书管理系统(1)>>中把系统中的三大功能模块中可能涉及到的常量,结构体及相关函数进行了声明定义,下来就来实现它们. 执行系统首先从登录到系统开始,所以首 ...

  2. javaWeb项目之图书管理系统(附视频讲解)

    视频播放地址:javaWeb图书系统 本系统为"Swing项目之图书管理系统"(此源码已共享)的Web版,网页框架用采用EasyUI 数据库为MysqL,写Web项目摒弃了火狐浏览 ...

  3. C项目实践--图书管理系统(3)

    接下来将要实现用户管理模块的相关功能,用户管理模块的主要功能包括增加用户,查找用户以及保存用户等功能,查找用户时,如果查找成功,充许对查找到用户进行更新或删除操作.如果查找不成功,则给出相应的提示信息 ...

  4. C项目实践--图书管理系统(1)

    1.功能需求分析 图书管理系统主要用于对大量的图书信息,包括书名.作者.出版社.出版日期.ISBN(书号)等进行增.删.改.查以及保存等操作.同时也包括对用户的管理,用户包括管理员和普通用户两种权限, ...

  5. 新建Django项目示例--图书管理系统

    知识点: Django 1. 安装 1. Django版本 1.11.xx 2. 安装方式 1. 命令行 --> Python环境(双版本,pip的使用) 2. PyCharm安装 2. 创建D ...

  6. C项目实践--图书管理系统(4)

    前面已经把图书管理系统的所有功能模块都已实现完毕了,下面通过运行来分析该系统的操作流程并检验是否符合逻辑设计要求. 3.系统操作过程 F5 运行 1.登录系统 系统运行之后,提示输入用户名和密码,系统 ...

  7. 【WPF on .NET Core 3.0】 Stylet演示项目 - 简易图书管理系统(3) - 使用Conductor切换页面

    前两章中, 我们已经实现了这个图书管理系统的登录窗口, 并实施了完善的单元测试. 该是时候回过头来关注我们的主窗口了. 一个功能丰富的系统一般会有多个页面, 我们图书管理系统虽然是"简易&q ...

  8. 44.Python实现简易的图书管理系统

    首先展示一下图书管理系统的首页: 这是图书管理系统的发布图书页面: 最后是图书管理系统的图书详情页已经图书进行删除的管理页. 该图书管理系统为练习阶段所做,能够实现图书详情的查询.图书的添加.图书的删 ...

  9. Java小项目迷你图书管理系统

    package 迷你图书管理系统; import java.util.Scanner; public class BookMgr { public static void main(String[] ...

随机推荐

  1. 第四章、深入理解vue组件

    4-1.使用组件的细节 a.使用is解决html出现bug 如下 table下面应该为tr,所以页面渲染的时候没有找到tr是有问题的,所以是有小bug,所以table中必须是tr b.改上面bug,t ...

  2. String常见的方法有哪些?

    length();//计算字符串的长度 charAt();//截取一个字符 getChars();//截取多个字符 equals();//比较两个字符串 equalsIgnoreCase();//比较 ...

  3. python3编写程序,根据输入的行列数值,生成相应的矩阵(其中元素为随机数)。

    代码如下: import random n = int(input("请输入行:")) m = int(input("请输入列:")) x = y = 0 wh ...

  4. ajax参数contentType与数据提交方式

    使用bootstrapTable时,服务器端无法获取参数(flask,request.form.get方法),检查发现是因为ajax提交的时候,方式是payload,要想用form提交,需要设置con ...

  5. tomcat Http11NioProtocol如何解析http请求及如何解决TCP拆包粘包

    前言 tomcat是常用的Web 应用服务器,目前国内有很多文章讲解了tomcat架构,请求流程等,但是没有如何解析http请求及如何解决TCP粘包拆包,所以这篇文章的目的就是介绍这块内容,一下内容完 ...

  6. net core天马行空系列:移植Feign,结合Polly,实现回退,熔断,重试,超时,做最好用的声明式http服务调用端

    系列目录 1.net core天马行空系列:原生DI+AOP实现spring boot注解式编程 2.net core天马行空系列: 泛型仓储和声明式事物实现最优雅的crud操作 3.net core ...

  7. (转)协议森林15 先生,要点单吗? (HTTP协议概览)

    协议森林15 先生,要点单吗? (HTTP协议概览) 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 我们在TCP流通信中说明了, ...

  8. 再刷JVM-JVM运行时数据区域

    前言 Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域.这些区域有各自的用途,以及创建和销毁的时机,有的区域随着虚拟机进程的启动而一直存在,有些区域则是依赖用户线程 ...

  9. MySQL笔记(5)-- SQL执行流程,MySQL体系结构

    MySQL的体系结构,可以清楚地看到 SQL 语句在 MySQL 的各个功能模块中的执行过程:Server层包括连接层.查询缓存.分析器.优化器.执行器等,涵盖MySQL的大多数核心服务功能,以及所有 ...

  10. Blazor-断开连接后重新加载浏览器

    在大多数情况下,Blazor将与以前相同的线路上重新连接到服务器.但有时无法重新连接,需要重新加载web浏览器才能使网站重新工作.如果服务器回收应用程序池,则需要手动重新加载页面在没有调试的情况下在I ...