基于折半查找的python图书管理系统
程序员文章站
2022-07-12 20:52:44
...
最近,老师留的作业让我头脑经历了一次风暴
经历了无数bug的伤害,在内心挣扎了无数次之后
还是决定跟大家分享一下这个伤心的“故事”以及代码
我们小组决定设计一个图书管理系统,这让我在无数个寒冷的夜晚抱着自己弱小的身体安慰自己~~~,看着以前的大佬们的课题,感觉好厉害的样子,【弱小】.jpg~
好啦,不矫情啦,虽然作业还没结束,课题也没结题,但是我还是想把代码发出来和大家探讨,里面也有很多bug,我也会提出来几个,希望大佬们发现之后在评论区指点一下
好了,话不多说,甩手就是代码
#序号
id=['1','2','3','4']
#书名
books=['老人与海','瓦尔登湖','狂人日记','堂吉诃德']
#作者
author=['海明威','亨利.梭罗','鲁迅\t','塞万提斯']
#价格
prices=['29','28','44','62']
#库存
stocks=['25','19','38','21']
#用户名和密码列表
user=[['xiaoming','666'],['xiaozhang','666']]
#登录函数
def denglu():
d1=input("请输入用户名:")
d2=input("请输入密码:")
if [d1,d2] in user:
ui()
global b
tag=0
else:
print("输入错误,请重新登录!")
#注册函数
def zhuce():
dd1=input("请输入要注册的用户名:")
dd2=input("请输入要注册的密码:")
user.append([dd1,dd2])
print("注册成功!")
#最先开始的函数
tag=1
def main():
global tag
while tag==1:
print("*************************************")
print(" 欢迎来到图书管理信息系统 ")
print("*************************************")
print(" 1.登 录 ")
print(" 2.注 册 ")
print(" 3.退 出 ")
print("*************************************")
ss = input("请选择您的操作:")
if int(ss) ==1:
denglu()
elif int(ss)==2:
zhuce()
else:
tag=0
#展示所有图书函数
def showall():
print('序 号', '\t\t','书 名','\t\t','作者','\t\t', '价 格','\t\t', '库 存')
for i in range(len(id)):
print('',id[i],'\t ',books[i],'\t\t',author[i],'\t ',prices[i], '\t\t ',stocks[i])
#图书入库函数
def ruku():
cc = 0
a1 = input("请输入想要入库的图书序号:")
def BinarySearch(id,item):
n = len(id)
if a1 in id:
mid = n // 2
if id[mid] == item:
a5 = int(input("请输入想要入库的图书库存"))
temp = int(stocks[mid]) + a5
stocks[mid] = str(temp)
mergeSort(id)
elif item < id[mid]:
return BinarySearch(id[:mid],item)
else:
return BinarySearch(id[mid+1:],item)
print("录入成功!")
else:
a2 = input("请输入想要入库的图书名字")
a3 = input("请输入想要入库的图书作者:")
a4 = input("请输入想要入库的图书价格:")
a5 = input("请输入想要入库的图书库存:")
id.append(a1)
books.append(a2)
author.append(a3)
prices.append(a4)
stocks.append(a5)
for i in range(len(id)):
print('',id[i],'\t ',books[i],'\t\t',author[i],'\t\t ',prices[i], '\t\t ',stocks[i])
print("录入成功!")
#调用折半查找函数
BinarySearch(id,a1)
#图书借出函数
def borrowing():
b1 = int(input("请输入需要借出的图书序号:"))
def BinarySearch2(id,item):
n = len(id)
if n > 0:
mid = n // 2
if int(id[mid]) == item:
temp1 = int(stocks[mid]) - 1
stocks[mid] = str(temp1)
mergeSort(id)
#for i in range(len(id)):
#print('',id[i],'\t ',books[i],'\t\t',author[i],'\t\t ',prices[i], '\t\t ',stocks[i])
print("图书借出成功!")
elif item < int(id[mid]):
return BinarySearch2(id[:mid],item)
else:
return BinarySearch2(id[mid+1:],item)
else:
print("没有你搜索的图书哦")
BinarySearch2(id,b1)
#将图书排序(归并排序)
def mergeSort(id):
if len(id) == 0 or len(id) == 1:
return id
mid = len(id) // 2
left = id[:mid]
right = id[mid:]
sortedLeft = mergeSort(left)
sortedRight = mergeSort(right)
return merge(sortedLeft,sortedRight)
def merge(left,right):
result = []
while len(left) >0 and len(right) >0:
if left[0] <= right[0]:
result.append(left.pop(0))
else:
result.append(right.pop(0))
result += right
result += left
i = 0
print('序 号', '\t\t','书 名','\t\t','作者','\t\t', '价 格','\t\t', '库 存')
while i < len(id):
print('',id[i],'\t ',books[i],'\t\t',author[i],'\t\t ',prices[i], '\t\t ',stocks[i])
i = i + 1
#退出函数
tag1=1
def exit():
global tag1
tag1=0
print("成功退出图书管理信息系统!")
#图书管理系统主界面函数
def ui():
while tag1==1:
print("*************************************")
print(" 欢迎使用图书管理信息系统 ")
print("*************************************")
print(" 1.查看图书 ")
print(" 2.图书入库 ")
print(" 3.图书借出 ")
print(" 4.退 出 ")
print("*************************************")
control=int(input("请选择您的操作:"))
if control==1:
showall()
elif control==2:
ruku()
elif control==3:
borrowing()
elif control==4:
exit()
else:
print("输入错误,请重新输入!")
main()
关于bug的话:
我罗列了三个bug(一段伤心事),大家如果知道怎么解决的话,评论区指正一下【拜托】
555~~~~
最后附上一张图:
祝大家在即将到来的六月,心想事成【也祝我不要挂科and展示不要太糟糕!】,luckily~~~
下一篇: 前端开发 Vscode常用插件