用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[] ...
随机推荐
- 第二章、 Vue 起步
2-2.编写hello world 首先创建vue实例,然后实例接收一些配置项,el表示实例负责管理的区域,data表示区域内的数据 两秒后内容变为bye world 其中app表示实例对象,$dat ...
- angular root在css和less的写法
背景:angular7项目,angular cli创建了一个模板 新建了一个common.css 本身modle会有一个专属的less文件 写样式 父组件下的子组件样式修改 什么情况下用:root ...
- C#桌面开发的未来-WebWindow
WebWindow源码作者博客基于Chromium的Edge体验体验方式一:体验方式二:预期目标:遗留的问题 WebWindow WebWindow是跨平台的库. Web Window的当前实验实现可 ...
- TARS基金会:构建微服务开源生态
导语 在20世纪60至70年代,软件开发人员通常在大型机和小型机上使用单体架构进行软件开发,没有一个应用程序能够满足大多数最终用户的需求.垂直行业使用的软件代码量更小,与其他应用程序的接口更简单,而可 ...
- linux下 GUI 数码相册项目 持续更新中
GITHUB: https://github.com/nejidev/digital_photo_album 本项目,是部分参考别人的项目,是全新从0编写的.算法实现和别人肯定是不同的,github ...
- Oracle 11g rac中关于crsctl stop cluster/crs/has的区别
转载至http://www.oracleplus.net/arch/1203.html,整理后得. 1 通过命令查看cluster/has/crs管理的内容 [root@11rac1 ~]# crsc ...
- Azure CLI 简单入门
Azure CLI 是什么 Azure 命令行接口 (CLI) 是用于管理 Azure 资源的 Microsoft 跨平台命令行体验. Azure CLI 易于学习,是构建适用于 Azure 资源的自 ...
- 01 UIPath抓取网页数据并导出Excel(非Table表单)
上次转载了一篇<UIPath抓取网页数据并导出Excel>的文章,因为那个导出的是table标签中的数据,所以相对比较简单.现实的网页中,有许多不是通过table标签展示的,那又该如何处理 ...
- 吃透这份pdf,面试阿里、腾讯、百度等一线大厂,顺利拿下心仪offer!
前言 最近一位年前裸辞的朋友来找我诉苦,说因为疫情原因现在都在家吃老本.本想着年后就来找工作的,但是现在这个情况也不好找,而且很多公司也随着这次疫情面临着资金紧缺导致裁员严重的甚至倒闭,导致很多人失业 ...
- LeetCode(不用加号的加法)
题目: 设计一个函数把两个数相加,不得使用+或者其他算数运算符. 示例: 输入:a=1,b=1 输出:2 提示: a,b均有可能是负数或0 结果不会溢出32位整数 初始思路: 看到题目我就明白只能用位 ...