使用Python开发图书管理系统
一.主函数
#主函数
while True:
menu()
operate = int(input("请输入数字进行操作:0-5进行操作:"))#input函数所输入的结果是一个字符串类型于是需要通过类型转换
#通过判断得出的所要执行的操作
if operate==1:
Show_info()
elif operate==2:
add_info()
elif operate==3:
delete()
elif operate==4:
search()
elif operate==5:
modify()
elif operate==0:
print("退出程序,感谢您的使用!")
break
else:
print("输入无效!")
先实习一个无限循环,为了能够对其中的函数进行调用。通过输入对应的的数字来调用对应的方法。如果不对输入的数字进行强制转化,判断语句的数字要加引号。接下来是各个方法的撰写。
二.菜单
#菜单页面设计
def menu():
print('*'*16+' 图书管理系统 '+'*'*16)
print('\n'*2)
print(' '+'*'*10+'1. 显示图书信息'+'*'*10)
print('\n'*2)
print(' '+'*'*10+'2. 添加图书信息'+'*'*10)
print('\n'*2)
print(' '+'*'*10+'3. 删除图书信息'+'*'*10)
print('\n'*2)
print(' '+'*'*10+'4. 查找图书信息'+'*'*10)
print('\n'*2)
print(' '+'*'*10+'5. 修改图书信息'+'*'*10)
print('\n'*2)
print(' '+'*'*10+'0. 退出 '+'*'*10)
print('\n'*2)
首先是“菜单”,为了让用户能够更加直观的看出具体的数字对应的使用功能,我们就需要为用户提供一个菜单。
三.显示图书信息
def Show_info():
if len(Book_info)==0:
print("温馨提示:")
print("系统无信息,请添加!")
else:
print('*'*40+"图书信息表"+'*'*40)
for book_name,info in Book_info.items():
print(f"{book_name}信息如下:")
for row,re_info in info.items():
print("{}:{}".format(row,re_info))
print('|')
print('-'*50)
四.添加图书信息
def add_info():
'''添加书籍函数'''
info={}
new_book=input("请添加书名:\n")
if new_book not in Book_info:
#通过“异常”处理提高编程的健壮性
try:
No=int(input("请添加图书的编号:\n"))
price=float(input("请添加图书的价格:\n"))
year=int(input("请添加图书的出版年份:\n"))
ty=input("请添加图书的类型:\n")
author=input("请添加图书的作者:\n")
info['No']=No
info['year']=year
info['price']=price
info['type']=ty
info['author']=author
Book_info[new_book]=info
print("信息添加成功!")
except ValueError:
print("输入有误!")
else:
print("该图书信息已存在!")
五.删除图书信息
def delete():
'''删除书籍函数'''
if len(Book_info)==0:
print("系统无信息,请添加!")
else:
del_book=input("请输入要删除图书:\n")
if del_book in Book_info:
del Book_info[del_book]
print("删除成功!")
else:
print("该图书信息不存在!\n删除失败!")
六.查找图书信息
def search():
'''由于个人设计的字典嵌套类型导致(图书书名作为键值)于是查找图书信息时只通过能过图书的书名遍历'''
if len(Book_info)==0:
print("系统无信息,请添加!")
else:
name=input("请输入要所要查找的书籍名:\n")
for book_name,info in Book_info.items(): #先通过外层字典的遍历查找匹配到要查找的图书信息
if name==book_name:
print("{}的信息如下:".format(book_name))
print('-'*50)
for row,re_info in info.items():
print("{}'s {}:{}".format(book_name,row,re_info))
break
else:
print("该图书不存在!")
print('-'*50)
七.修改图书信息
def modify():
'''此函数功能可更改书籍信息(书籍编号、价格、出版年份、类型)'''
if len(Book_info)==0:
print("系统无信息,请添加!")
else:
name=input("请输入要更改的信息的图书书名:\n")
if name in Book_info.keys():
while True:
#修改菜单:提供多种数据的修改
menu2()
oper=int(input("请输入要修改的信息项:"))
if oper==1:
new_no=int(input("更改后的书籍编号为:\n"))
Book_info[name]['No']=new_no
print("修改书籍编号成功!")
elif oper==2:
new_price=float(input("更改后的价格为:\n"))
Book_info[name]['price']=new_price
print("修改价格出版年份成功!")
elif oper==3:
new_year=int(input("更改后的出版年份为:\n"))
Book_info[name]['year']=new_year
print("修改出版年份成功!")
elif oper==4:
new_type=input("更改后的类型为:\n")
Book_info[name]['type']=new_type
print("修改类型成功!")
elif oper==5:
new_author=input("更改后的作者为:\n")
Book_info[name]['author']=new_author
print("修改作者成功!")
else:
print("退出修改界面!")
break
else:
print("该图书不存在!")
#修改菜单设计
def menu2():
print("请输入要更改的内容:\n")
print('\n')
print('*'*10+'1.更改书籍编号 '+'*'*7+'\n')
print('\n')
print('*'*10+'2. 更改价格 '+'*'*10+'\n')
print('\n')
print('*'*10+'3.更改出版年份 '+'*'*7+'\n')
print('\n')
print('*'*10+'4. 更改类型 '+'*'*10+'\n')
print('\n')
print('*'*10+'5. 更改作者 '+'*'*10+'\n')
print('\n')
print('*'*10+'0. 退出修改界面 '+'*'*10+'\n')
在修改功能里头,我们可以做一个小菜单,让用户选择要更改的信息项。
八.总结
当然你也可以用嵌套列表来实现数据存储与删除,当然有了items()方法,字典相对于列表来说简介有效许多。
作者:Cosophia