用python写项目之图书管理系统
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写项目之图书管理系统的更多相关文章
- C项目实践--图书管理系统(2)
前面在<<C项目实践-图书管理系统(1)>>中把系统中的三大功能模块中可能涉及到的常量,结构体及相关函数进行了声明定义,下来就来实现它们. 执行系统首先从登录到系统开始,所以首 ...
- javaWeb项目之图书管理系统(附视频讲解)
视频播放地址:javaWeb图书系统 本系统为"Swing项目之图书管理系统"(此源码已共享)的Web版,网页框架用采用EasyUI 数据库为MysqL,写Web项目摒弃了火狐浏览 ...
- C项目实践--图书管理系统(3)
接下来将要实现用户管理模块的相关功能,用户管理模块的主要功能包括增加用户,查找用户以及保存用户等功能,查找用户时,如果查找成功,充许对查找到用户进行更新或删除操作.如果查找不成功,则给出相应的提示信息 ...
- C项目实践--图书管理系统(1)
1.功能需求分析 图书管理系统主要用于对大量的图书信息,包括书名.作者.出版社.出版日期.ISBN(书号)等进行增.删.改.查以及保存等操作.同时也包括对用户的管理,用户包括管理员和普通用户两种权限, ...
- 新建Django项目示例--图书管理系统
知识点: Django 1. 安装 1. Django版本 1.11.xx 2. 安装方式 1. 命令行 --> Python环境(双版本,pip的使用) 2. PyCharm安装 2. 创建D ...
- C项目实践--图书管理系统(4)
前面已经把图书管理系统的所有功能模块都已实现完毕了,下面通过运行来分析该系统的操作流程并检验是否符合逻辑设计要求. 3.系统操作过程 F5 运行 1.登录系统 系统运行之后,提示输入用户名和密码,系统 ...
- 【WPF on .NET Core 3.0】 Stylet演示项目 - 简易图书管理系统(3) - 使用Conductor切换页面
前两章中, 我们已经实现了这个图书管理系统的登录窗口, 并实施了完善的单元测试. 该是时候回过头来关注我们的主窗口了. 一个功能丰富的系统一般会有多个页面, 我们图书管理系统虽然是"简易&q ...
- 44.Python实现简易的图书管理系统
首先展示一下图书管理系统的首页: 这是图书管理系统的发布图书页面: 最后是图书管理系统的图书详情页已经图书进行删除的管理页. 该图书管理系统为练习阶段所做,能够实现图书详情的查询.图书的添加.图书的删 ...
- Java小项目迷你图书管理系统
package 迷你图书管理系统; import java.util.Scanner; public class BookMgr { public static void main(String[] ...
随机推荐
- ARC中__bridge, __bridge__transfer, __bridge_retained 关系
总结于 IOS Tuturial 中 ARC两章,详细在dropbox pdf 文档. Toll-Free Bridging 当你在 Objective-C 和 Core Foundation 对象之 ...
- IRM3800 红外遥控器解码 linux驱动
这一次还是接在 Cemera 上.用 中断引脚 EINT20 也就是 GPG12. 之前焊的 51 板子上有一个红外接收器. 请注意了,是 标准的 NEC 码规范:首次发送的是9ms的高电平脉冲,其后 ...
- Django_orm
Object Relational Mapping(ORM) ORM介绍 ORM概念 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据 ...
- 面试官:HashMap死循环形成的原因是什么?
介绍 HashMap实现原理 之前的文章已经分析了HashMap在JDK1.7的实现,这篇文章就只分析HashMap死循环形成的原因 死循环形成是在扩容转移元素的时候发生的 void resize(i ...
- 解决mongo单文档超过16M
mongodb导入大文件的数据时,导入一小部分后,提示lost connect,失去连接.mongo文件有6.3G,网上查了一下,原来Mongo对单次处理好像有大小限制(16m),所以大文件会出问题, ...
- Spring注解 - 生命周期、属性赋值、自动装配
一.Bean的生命周期 流程 Bean创建 -- 初始化 -- 销毁 创建: 单实例:在容器启动时创建对象 多实例:每次调用时创建对象 初始化: 都是在对象创建完成后,调用初始化方法 销毁: 单实例: ...
- 初创电商公司Drop的数据湖实践
欢迎关注微信公众号:ApacheHudi 1. 引入 Drop是一个智能的奖励平台,旨在通过奖励会员在他们喜爱的品牌购物时获得的Drop积分来提升会员的生活,同时帮助他们发现与他们生活方式产生共鸣的新 ...
- express第三方中间件研究之bodyParser中间件
转载至:http://www.cnblogs.com/lianer/p/5178693.html 接触nodejs已有一段时间了,但最近才开始落实项目,于是使用express应用生成器生成了一个应用. ...
- Java并发编程之验证volatile不能保证原子性
Java并发编程之验证volatile不能保证原子性 通过系列文章的学习,凯哥已经介绍了volatile的三大特性.1:保证可见性 2:不保证原子性 3:保证顺序.那么怎么来验证可见性呢?本文凯哥(凯 ...
- 常用的API和基础算法
和数学相关 1,java.lang.Math类 abs(x):求绝对值 sqrt(x):求平方根 pow(x,y):求x的y次方 ceil(x):向上取整 floor(x):向下取整 round(x) ...