基于折半查找的python图书管理系统

最近,老师留的作业让我头脑经历了一次风暴
经历了无数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~~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值