【含视频教程】python实现图书管理系统

2023-11-17

嗨嗨,大家好~ 我是小圆 今天给大家分享一下如何用python实现图书管理系统
手把手带你制作图书管理系统,文章末尾还有视频教程哦!!
话不多说马上开始吧!!
请添加图片描述

用户注册

def logon():
    print("欢迎来到图书管理系统注册页面~")
    username = input("请输入用户名:")
    if len(username)<6:
        print("用户名不能小于6个字符")
    else:
        email = input("请输入邮箱:")
        password = input("请输入密码:")
        if len(password)<8:
            print("密码不能少于8位")
        else:
            rpassword = input("请确认密码:")
            if password ==rpassword:
                print("注册成功!")
                # 函数调用,每追加一列数据都进行换行 每个数据之间都有空格
                preserve_data(path,[username,'   '+ email,'   '+ password + '\n'])
                login_tips = input('是否登录?(yes/no)')
                if login_tips =='yes':
                    login()
                else:
                    pass
                return True
            else:
                print("两次输入的密码不一致,请重新输入!")
                # 递归调用
                logon()

保存数据到文件

path = r'/Users/mozili/PYTHONWORKSPACE/bookManage/user.txt'
def preserve_data(file_path,data):
    # 将字符串转换为bytes,因为write写入的是字节流,不能是字符串 当为w时需要解码
    # data = data.encode()
    # 打开文件,追加数据到文件
    with open(file_path,'a') as wstream:
        # 判断是否可写
        if wstream.writable():
            wstream.writelines(data)
        else:
            print("没有权限!")

用户登录

def login():
    print("欢迎来到图书管理系统登录页面~")
    tips = input("是否已经注册?(yes/no)")
    if tips =='yes':
        while True:
            username = input("输入用户名:")
            password = input("输入密码:")
            # 读取文件时可能会出现找不到文件的异常,因此使用try except
            try:
                # 读取文件中的内容
                with open(path, 'rb') as stream:
                    # 读取多行保存到列表中,列表中保存的是二进制,字节
                    result = stream.readlines()
                    # print(result)
                    # 列表推导式,循环遍历列表,将字节解码为字符串放在一个新列表uesr_list
                    uesr_list = [i.decode() for i in result]
                    # print(uesr_list)
                    # 循环遍历列表,检查输入的用户名和密码是否在字符串中
                    for i in uesr_list:
                        info = i.split('   ')
                        # print(info)
                        if username == info[0] and password == info[2].rstrip('\r\n'):
                            print("登录成功")
                            operate(book_path,username)
                            break
                    else:
                        raise Exception("用户名或密码错误,请重新输入!")

            except Exception as err:
                print(err)
            # 没有异常时执行else语句
            else:
                break
    else:
        print("您还未注册,请先注册后再登录!")
        # 递归
        logon()

查询图书

def find_books(path):
    try:
        with open(path, 'r') as rstream:
            # readlines读到的内容是一个列表
            container = rstream.readlines()
            # 通过列表推导式得到新的列表,即每个元素去掉后面的换行符号
            new_container = [books_name.rstrip('\n') for books_name in container]
            for b_name in new_container:
                # 打印图书+《》
                print("《{}》".format(b_name))

    except Exception as err:
        print("错误原因:",err)

添加图书

需要源码、教程,或者是自己有关python不懂的问题,都可以来这里哦 https://jq.qq.com/?_wv=1027&k=byXFCxLC 这里还有学习资料与免费课程领取

def add_book(b_path,username):
    # 添加前首先判断是否是管理员
    permission(b_path, username)
    # 追加图书 不能是w ,否则会清空之前的内容
    with open(b_path, 'a') as wstream:
        # 判断是否可写
        if wstream.writable:
            msg = input("请输入书名:")
            try:
                # 添加书籍之前判断某本书是否已经添加
                with open(b_path) as rstream:
                    while True:
                        line = rstream.readline()
                        # 去掉右边的换行
                        line = line.rstrip('\n')
                        # 当找到空行是如果还没有找到与输入的书名一致的时候,就添加输入的书名
                        if not line:
                            book = '\n' + msg
                            wstream.write(book)
                            print("添加成功")
                            break
                        else:
                            # 输入的图书和读到的行有一致的则提示不能重复添加
                            if line == msg:
                                print("{}已添加,请不要重复添加哦~".format(msg))
                                break
            except Exception as err:
                print("错误原因:", err)
        else:
            print("没有权限")

修改图书

def update_book(b_path,username):
    permission(b_path, username)
    try:
        with open(b_path, 'r') as rstream:
            container = rstream.read()
            # 通过'\n'来分割字符串,返回结果是列表
            container = container.split('\n')
            # print(container)
            # 删除前先展示有哪些图书
            find_books(book_path)
            book_name = input("请输入需要修改的图书书名:")
            # 循环遍历修改书名
            for i in range(len(container)):
                if book_name == container[i]:
                    rbook_name = input("请输入修改后的图书书名:")
                    container[i] = rbook_name + '\n'
                else:
                    # 列表中的每个书名后面加换行符,用于写入文件时换行
                    container[i] = container[i] + '\n'
            # print(container)
            # 将书名更新后的内容以writelines写入文件中  writelines(可迭代)
            with open(b_path, 'w') as wwstream:
                wwstream.writelines(container)
            print("修改成功")
    except Exception as err:
        print("错误原因:", err)

请添加图片描述

删除图书

def del_book(b_path,username):
    permission(path, username)
    try:
        with open(b_path, 'r') as rstream:
            container = rstream.read()
            # 通过'\n'来分割字符串,返回结果是列表
            container = container.split('\n')
            # print(container)
            # 展示有哪些图书
            find_books(book_path)
            book_name = input("请输入需要删除的图书书名:")
            # 循环遍历修改书名
            for i in range(len(container) - 1):
                if book_name == container[i]:
                    container.remove(container[i])
                else:
                    # 列表中的每个书名后面加换行符,用于写入文件时换行
                    container[i] = container[i] + '\n'
            # print(container)
            # 将书名删除后的内容以writelines写入文件中  writelines(可迭代)
            with open(b_path, 'w') as wwstream:
                wwstream.writelines(container)
            print("删除成功")
    except Exception as err:
        print("错误原因:", err)

借书

def borrow_book(username):
    while True:
        print("图书列表:")
        find_books(book_path)
        borrow_books = input("请选择图书:")
        try:
            with open('../user_books/user_books.txt') as rstream:
                # 每次读取一行
                lines = rstream.readline()
                lines = lines.rstrip('\n')
                # 将读到的内容通过空格分割保存到列表
                lines = lines.split(' ')
                # 判断输入的书是否已被借走
                if borrow_books not in lines:
                    # print(lines)
                    # 借书之前先判断该用户之前是否借过,如果借过,就在后面累加图书,用,分割图书
                    # for user_book in lines:
                    if username in lines:
                        with open('../user_books/user_books.txt', 'a') as wstream:
                            # 判断之前是否借过某本书
                            if borrow_books not in lines:
                                wstream.write(' {}'.format(borrow_books))
                                print("借书成功")
                                break
                            else:
                                print("您已借过此书,请从新选择!")
                                break
                    else:
                        # 将选择的图书与用户名一起保存到文件中
                        with open('../user_books/user_books.txt', 'a') as wstream:
                            wstream.write('\n{} {}\n'.format(username, borrow_books))
                            print("借书成功")
                            break
                else:
                    print("<<{}>>已被用户{}借走,请重新选择~".format(borrow_books,lines[0]))
        except Exception as err:
            print("错误原因:", err)

还书

def return_book(username):
    try:
        with open('../user_books/user_books.txt') as rstream:
            # print("{}您已借阅,未归还图书如下:".format(username))
            # 读到的结果是列表
            lines = rstream.readlines()
            # 遍历列表,将里面的元素再拆分为列表
            for i in range(len(lines)):
                # 去掉换行
                lines[i] = lines[i].rstrip('\n')
                lines[i] = lines[i].rstrip(' ')
                lines[i] = lines[i].split(' ')
                for ii in range(len(lines[i])-1):
                    # 只打印登录用户借阅的图书
                    if username == lines[i][0]:
                        print("{}您已借阅,未归还图书如下:".format(username))
                        print(lines[i][ii+1])
                        msg = input("请选择你要归还的图书:")
                        with open('../user_books/user_books.txt') as rstream:
                            lines = rstream.readlines()
                            for i in range(len(lines)):
                                if username in lines[i] and msg in lines[i]:
                                    # 用空字符串替换msg,即表示删除归还的图书
                                    lines[i] = lines[i].replace(msg, '')
                                    with open('../user_books/user_books.txt', 'w') as wstream:
                                        # 将变更后的列表再写入文件,只变更当前用户的图书信息
                                        wstream.writelines(lines)
                                        print("归还成功!")
                                        break

                            with open('../user_books/user_books.txt') as rstream:
                                lines = rstream.readlines()
                                for i in range(len(lines)):
                                    lines[i] = lines[i].rstrip('\n')
                                    lines[i] = lines[i].rstrip(' ')
                                    lines[i] = lines[i].split(' ')
                                    # print(type(lines[i]))
                                    for ii in range(len(lines[i])):
                                        # 图书归还成功后判断列表中只有用户名了,如果只有用户名则将用户名用空字符串代替
                                        if username == lines[i][0] and len(lines[i]) == 1:
                                            lines[i][0] = lines[i][0].replace(lines[i][0], '')
                                            lines.append(lines[i][0])
                                # print(lines)
                                str = ''
                                for i in range(len(lines)):
                                    for ii in range(len(lines[i])):
                                        # 将嵌套列表中的元素取出来拼接成字符串
                                        str += lines[i][ii] + ' '
                                    str += '\n'
                                # 遍历完毕删除之前列表里面嵌套的列表,追加字符串str
                                lines.clear()
                                lines.append(str)

                                # print(lines)
                                # 将更新后的列表写入文件
                                with open('../user_books/user_books.txt', 'w') as wstream:
                                    wstream.writelines(lines)
                    else:
                        print("您还没有借阅记录哦~")

    except Exception as err:
        print("错误原因:", err)

查看个人信息

def look_person_info(path,username):
    with open(path) as rstream:
        lines = rstream.readlines()
        # print(lines)
        for info in lines:
            # 分割成一个列表
            info = info.split('   ')
            # print(info)
            if username in info:
                print("----个人信息----")
                print("用户名:", info[0])
                print("邮箱:", info[1])
                print("密码:", info[2].rstrip(' '))

修改个人信息

def update_password(path,username):
    tips = input("请选择操作:\n 1.修改邮箱\n 2.修改密码\n")

    # 修改邮箱
    if tips =='1':
        new_email = ''
        line = []
        try:
            with open(path) as rstream:
                while True:
                    line = rstream.readline()
                    if not line:
                        break
                    line = line.split('   ')
                    # 去掉密码后面的换行符
                    line[2] = line[2].rstrip('\n')
                    if username == line[0]:
                        new_email = input("请输入新邮箱:")
                        line[1] = new_email
                        break
        except Exception as err:
            print(err)

        else:
            # 将新修改邮箱后的用户的所有信息追加到文件夹
            with open(path, 'a') as wstream:
                for i in range(len(line)):
                    if i == 0:
                        # 遍历列表,第一个列表元素需要前面需要加换行,后面需要加空格与其他元素分割
                        line[i] = '\n' + line[i] + '   '
                    else:
                        line[i] = line[i] + '   '
                wstream.writelines(line)
                print("修改成功")
            # 删除修改邮箱之前用户的信息
            with open(path) as rstream:
                # 读取多行
                lines = rstream.readlines()
                i = 0
                l = len(lines)
                while i < l:
                    # 当 当前用户名在用户信息行且新的邮箱不在时就删除之前的用户信息,不会删除其他用户的信息
                    if username in lines[i] and new_email not in lines[i]:
                        lines.remove(lines[i])
                    i += 1
                    l -= 1
                # 删除旧邮箱对应的当前用户信息后,再将新邮箱对应的用户信息以及其他用户的信息从新写入到文件
                with open(path, 'w') as wstream:
                    wstream.writelines(lines)
    # 修改密码
    elif tips =='2':
        new_password = ''
        line = []
        try:
            with open(path) as rstream:
                while True:
                    line = rstream.readline()
                    if not line:
                        break
                    line = line.split('   ')
                    # 去掉密码后面的换行符
                    line[2] = line[2].rstrip('\n')
                    if username == line[0]:
                        new_password = input("请输入新密码:")
                        # 判断新密码与旧密码是否一致
                        if new_password ==line[2]:
                            # 抛出异常
                            raise Exception("新密码不能与旧密码相同哦~")
                        else:
                            line[2] =new_password
                            break
        # 可以捕获到前面raise抛出的异常
        except Exception as err:
            print(err)

        else:
            # 将新修改密码后的用户的所有信息追加到文件夹
            with open(path,'a') as wstream:
                for i in range(len(line)):
                    if i ==0:
                        # 遍历列表,第一个列表元素需要前面需要加换行,后面需要加空格与其他元素分割
                        line[i] = '\n'+line[i]+'   '
                    else:
                        line[i] = line[i] +'   '
                wstream.writelines(line)
                print("修改成功")
            # 删除修改密码之前用户的信息
            with open(path) as rstream:
                # 读取多行
                lines = rstream.readlines()
                i =0
                l = len(lines)
                while i < l:
                    # 当 当前用户名在用户信息行且新的密码不在时就删除之前的用户信息,不会删除其他用户的信息
                    if username in lines[i] and new_password not in lines[i]:
                        lines.remove(lines[i])
                    i+=1
                    l-=1
                # 删除旧密码对应的当前用户信息后,再将新密码对应的用户信息以及其他用户的信息从新写入到文件
                with open(path,'w') as wstream:
                    wstream.writelines(lines)

个人信息

需要源码、教程,或者是自己有关python不懂的问题,都可以来这里哦 https://jq.qq.com/?_wv=1027&k=byXFCxLC 这里还有学习资料与免费课程领取

def person_information(path,username):
    tips = input("请选择操作:\n 1.查看个人信息\n 2.修改个人信息\n")
    if tips =='1':
        look_person_info(path,username)
    elif tips =='2':
        update_password(path, username)

只有管理员才可以进行图书的增删改操作

def permission(user_path,username):
    try:
        with open(user_path) as rstream:
            while True:
                line = rstream.readline()
                # 读到空行跳出循环
                if not line:
                    break
                # 通过3个空格将字符串line分割为一个列表,存储三个值
                line = line.split('   ')
                # 循环遍历列表,去掉列表中每个元素后面的换行,如果有就去掉,没有就不取掉
                for i in range(len(line)):
                    line[i] = line[i].rstrip('\n')
                # 判断是否管理员,如果是就可以进行添加操作
                if username == 'admin123':
                    pass
                else:
                    print("只有管理员{}才可以进行该操作~".format(username))
                    # 不是管理员将回到操作页面
                    operate(path, username)
    except Exception as err:
        print("错误原因:",err)

图书增删改借还操作

book_path = r'/Users/mozili/PYTHONWORKSPACE/book.txt'
# book_list = ['水浒传\n','红楼梦\n','廊桥遗梦']
def operate(b_path,username):
    while True:
        msg = input("请选择操作:\n 1.查询图书\n 2.添加图书\n 3.修改图书\n 4.删除图书\n 5.借书\n 6.归还图书\n 7.个人信息\n 8.退出登录\n")
        # 查询图书
        if msg =='1':
            find_books(book_path)
        # 添加图书
        elif msg =='2':
            add_book(b_path, username)
        # 修改图书
        elif msg =='3':
            update_book(b_path, username)
        # 删除图书
        elif msg =='4':
            del_book(b_path, username)
        # 借书
        elif msg =='5':
            borrow_book(username)
        # 还书
        elif msg =='6':
            return_book(username)
        #查看、修改个人信息
        elif msg =='7':
            person_information(path, username)

        # 退出登录
        elif msg =='8':
            msg = input("确定退出登录吗?(yes/no)")
            if msg == 'yes':
                break



login()

视频教程

视频教程就放在这里啦,但是我是分了四个视频发的,辛苦你们多点击几下啦
还有不会的就直接问我吧 !!

需要源码、教程,或者是自己有关python不懂的问题,都可以来这里哦 https://jq.qq.com/?_wv=1027&k=byXFCxLC 这里还有学习资料与免费课程领取

【python基础】手把手带你制作图书管理系统1 - 案例介绍

好啦,今天的分享到这里就结束了 ~
对文章有问题的,或者有其他关于python的问题,可以在评论区留言或者私信我哦
觉得我分享的文章不错的话,可以关注一下我,或者给文章点赞(/≧▽≦)/

请添加图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【含视频教程】python实现图书管理系统 的相关文章

  • 来自 python 的 FQL 多重查询因 unicode 查询而失败

    使用 python 2 6 5 和 facebook sdk 0 3 2 import facebook api facebook GraphAPI token api fql example u SELECT uid2 FROM frie
  • Python的unpack中的逗号是什么意思?

    我们可以简单地使用 crc struct unpack gt i data 为什么人们这样写 crc struct unpack gt i data 逗号是什么意思 第一个变体返回一个单元素元组 In 13 crc struct unpac
  • Python 将列表中的字符串转换为数字

    我遇到了以下错误消息 以 10 为基数的 int 的文字无效 2 2 外部用单引号括起来 内部用双引号括起来 该数据位于primes列出使用print primes 0 样本数据在primes list 2 3 5 7 The primes
  • 对 Python DataFrame 进行子集化

    我正在从 R 过渡到 Python 我刚刚开始使用 Pandas 我有一个可以很好地子集化的 R 代码 k1 lt subset data Product p id Month lt mn Year yr select c Time Pro
  • 计算温度的偏导数(温度的水平平流)

    我想知道哪种方法计算x和y方向温度的偏导数 温度的水平平流 最正确 第二个代码使用温度 纬向风和经向风的数据矩阵 提取温度 T 纬向风分量 u 和经向风分量 v 的数据 import matplotlib pyplot as plt imp
  • 在 python + Flask + Gunicorn + nginx + Compute Engine 应用程序中从 Google Cloud Storage 读取文件失败

    在 python Flask Gunicorn nginx Compute Engine 应用程序中读取从 Google Cloud Storage 下载的文件失败 代码链接 https github com samuq CE test h
  • 如何更改条形图上的 y 轴限制?

    我有一个df 我从中索引了europe n我绘制了一个条形图 europe n r 5 c 45 looks like this df Country string df Population numeric 变量 plt bar df C
  • 肥皂服务的良好框架是什么?

    我正在寻找一个用于肥皂的好框架service 我更喜欢使用Pythonic框架 但是在查看了soaplib rpclib 太不稳定 SOAPy 不适用于2 7 和ZSI 太 令人困惑 之后 我不确定这是否可能 我对使用另一种语言感到满意 尽
  • 在 Windows 上将 NumPy 与 BLAS 链接

    我正在尝试在 Windows 系统上安装 Theano 并且需要安装 BLAS 和 LAPACK 我的 System32 文件夹中有这些的 dll 文件 当我运行 numpy config来自 Anaconda 的 show 库的路径正确显
  • 图像堆栈的最大强度投影

    我正在尝试重新创建该功能 max array 3 来自 MatLab 它可以获取 N 个图像的 300x300px 图像堆栈 我在这里说 图像 因为我正在处理图像 实际上这只是一个大的双数组 300x300xN 并创建一个 300x300
  • 将数据框列打包到 pandas 中列出

    我需要将 pandas DataFrame 列打包到包含列表的一列中 例子 For gt gt gt df a b c 0 81 88 1 1 42 7 23 2 8 37 63 3 18 22 20 制作列表栏 list col 0 81
  • 对于 pygtk 应用程序来说,什么是好的嵌入式浏览器?

    我计划在我的 pygtk 应用程序中使用嵌入式浏览器 并且我正在 gtkmozembed 和 pywebkitgtk 之间进行辩论 两者之间有什么引人注目的区别吗 还有我不知道的第三种选择吗 应该注意的是 我不会使用它来访问网络上的内容 我
  • Python3.1中的视图?

    Python3 1中的视图到底是什么 它们的行为方式似乎与迭代器类似 并且它们也可以具体化为列表 迭代器和视图有何不同 据我所知 视图仍然附加到创建它的对象上 对原始对象的修改会影响视图 来自docs http docs python or
  • 尝试修复我的功能

    我正在开发一个函数 我必须返回一个元组 其中第一个参数是最大数字的 str 第二个参数是 int 列表 这是示例以及我为该函数编写的内容 投票 G G N G C G 1 3 0 1 您必须将最大值的位置映射到正确的一方 parties N
  • 监控单个文件

    我需要监控 使用watchdog http pythonhosted org watchdog index html 单个文件 而不是整个目录 避免监视整个目录的最佳方法是什么 我想this http pythonhosted org wa
  • 在Python中引用不带换行符的长字符串

    我正在尝试在 Python 中编写一个长字符串 该字符串显示为 OptParser 选项的帮助项 在我的源代码 py 文件中 我想放置换行符 以便我的代码不会花费新行 但是 我不希望这些换行符影响代码运行时该字符串的显示方式 例如 我想写
  • 检测图像是否损坏或损坏

    我需要以编程方式检查用户在我的应用程序上选择作为壁纸的图像是否已损坏或损坏 基本上我为用户提供了选择自己的图像作为壁纸的选项 现在 当图像加载时 我只想检查它是否已损坏 如果您正在寻找 PHP 解决方案而不是 javascript 解决方案
  • 安排 Asyncio 任务每 X 秒执行一次?

    我正在尝试创建一个 python 不和谐机器人 它将每隔 X 秒检查一次活跃会员 并根据会员的在线时间奖励积分 我正在使用 asyncio 来处理聊天命令 这一切都正常 我的问题是找到一种方法来安排每隔 X 秒异步检查一次活动成员 我已经阅
  • 在 python 中使用递归替代 len()

    作为 CS1301 问题的一部分 我正在尝试使用递归编写一个函数 该函数将执行与 len 完全相同的操作 但是 我有两个问题 我正在使用全局变量 但我在课程中还没有学到这一点 cs1301 自动评分器告诉我 我的函数返回 26 而不是 13
  • Pandas 替换特定列上的值

    我知道这两个类似的问题 熊猫替换值 https stackoverflow com questions 27117773 pandas replace values Pandas 替换数据框中的列值 https stackoverflow

随机推荐

  • 微信支付流程

    一 微信支付流程 APP用户点击进行支付 会向我们自己的订单服务发送请求 携带订单的相关信息 订单服务接收到请求之后需要保存订单 调用微信统一下单接口生成预支付订单 微信会返回预支付订单标识 订单服务会根据微信返回的标识生成带签名的支付信息
  • SQL 注入-盲注

    目录 一 什么时候用到盲注 二 盲注的优缺点 三 盲注的流程 四 盲注的分类 五 布尔盲注 5 1 原理以及什么时候使用布尔盲注 5 2 例如upload labs靶场中的Less 8 5 3 布尔盲注常用函数及定义 5 4 length
  • PyQt5 第一章 PyQt5简介和安装

    第一章 PyQt5简介和安装 零基础入门玩转 PyQt5 邀请码 LWskm3AS 1 1 PyQt5 简介 PyQt5是Digia的一套Qt5应用框架与python的结合 同时支持2 x和3 x Qt库由Riverbank Computi
  • 计算机与图像处理论文标题,数字图像处理论文各种题目.doc

    数字图像处理论文各种题目 待处理图片 参考最终效果图 29利用中值空间滤波去去除波形噪声 要求 掌握空间滤波原理 了解中值空间滤波在实际中的应用 利用MATLAB实现对波形的中值滤波 改进算子 使图像达到标准对照图像效果 待处理图片 处理后
  • webpack html 引入cdn,Webpack如何引入CDN连接来优化编译后的体积

    背景 在 Vue 项目中 引入到工程中的全部 js 文件 编译时都会被打包进 vendor js 也就致使了 vendor js 文件体积变得至关臃肿 必定程度上影响着页面的渲染 为了减小编译后的体积 提升页面渲染速度 咱们能够经过引入 C
  • python时间戳转换年,月,日,季度,周

    数据结构 def q year day week day dict 0 星期一 1 星期二 2 星期三 3 星期四 4 星期五 5 星期六 6 星期天 for x in range 0 366 time item star time int
  • github上传的报错的问题解决

    文章目录 前言 一 遇见的问题 二 开始配置ssh key 这就完成了 可以重新尝试一下上面代码到github 前言 有很多伙伴们在操作github时候 上传代码的时候 会有报错问题 上传代码失败 这里我给出我本人的的解决办法 一 遇见的问
  • Sakura美化

    文章原地址在 我的博客 接上次的文章 闲着也是闲着 不如搭个免费的博客玩玩 0 前言 做hexo的美化工作 主要是 修改布局文件 HTML模板ejs文件 添加功能 做好CSS 还是得对HTML 结构 CSS 表现 Javascript 行为
  • 【华为OD机试真题 Python】整理扑克牌 (A卷2022Q4)

    前言 本专栏将持续更新华为OD机试题目 并进行详细的分析与解答 包含完整的代码实现 希望可以帮助到正在努力的你 关于OD机试流程 面经 面试指导等 如有任何疑问 欢迎联系我 wechat steven moda email nansun09
  • python数据容器--集合的常用操作

    python数据容器 集合的常用操作 数据是无序存储的 不支持下标索引 不允许重复数据的存在 set集合基本操作 my set 传智教育 itheima 黑马程序员 添加新元素 my set add python print f 添加元素后
  • Mysql mysqldump备份数据

    mysqldump客户端实用程序执行逻辑备份 生成一组 SQL 语句 可以执行这些语句来重现原始数据库对象定义和表数据 它转储一个或多个 MySQL 数据库以进行备份或传输到另一台 SQL 服务器 mysqldump 命令还可以生成 CSV
  • C++实验一:简单数据及运算(解方程、海伦公式求三角形面积)

    实验目的 1 掌握C 中的基本数据类型的算术运算和逻辑运算 2 理解并掌握C 中运算符的优先级 3 掌握简单的类型转换方法 4 掌握C 的math头文件中常用的几种数学运算 5 了解visual studio的debug功能 并使用debu
  • Java动态代理代码编写

    Java动态代理代码编写 代理的概念 动态代理技术是整个java技术中最重要的一个技术 它是学习java框架的基础 不会动态代理技术 那么在学习Spring这些框架时是学不明白的 动态代理技术就是用来产生一个对象的代理对象的 在开发中为什么
  • 《AGIC学习之 LangChain获取电影信息》

    先获取 TMDB 的token https www themoviedb org settings api 申请API 应用URL是你的ip地址才行 应用简介要翻译为英文 import os os environ TMDB BEARER T
  • 企业电子招标采购系统源码Spring Cloud + Spring Boot + MybatisPlus + Redis + Layui + 前后端分离 + 二次开发

    功能描述 1 门户管理 所有用户可在门户页面查看所有的公告信息及相关的通知信息 主要板块包含 招标公告 非招标公告 系统通知 政策法规 2 立项管理 企业用户可对需要采购的项目进行立项申请 并提交审批 查看所有的立项信息 主要功能包含 招标
  • Ubuntu输入密码后无法进入桌面,但是可以进入命令行界面

    安装中文版的ubuntu经常会出现无法进入桌面的状况 这里给出我的解决方案 初步断定是Xwindows界面软件出问题了 所以重装即可 Solve 1 Ctrl Alt F1进入命令行界面 root账户登陆 Ctrl Alt F1进入命令行界
  • yum出现Error downloading packages错误

    yum出现Error downloading packages错误 错误表现方式 yum可以list 可以clean cache 但是无法安装 错误提示 Downloading packages Error downloading pack
  • Ubuntu上用网易云音乐乱码(亲测可用)

    使用Ubuntu听音乐的时候 播放列表总显示为乱码 这点非常不爽 于是上网搜索了下 终于找到了解决的办法 简单的方法就是将MP3标签转换为Unicode编码 要使用到python mutagen 在新立得软件管理中可以直接找到 也可以用以下
  • 让 Linux 应用随处运行,使用AppImage的方式安装软件!

    前言 大家好 我是小满同学 我是通过中国大学MOOC上的 零基础学Linux操作系统 这门课程入门了linux 学习和使用linux一年多 收获了很多 下面是关于linux下安装软件方式的一些分享 在课程中 我们了解到在linux平台下安装
  • 【含视频教程】python实现图书管理系统

    嗨嗨 大家好 我是小圆 今天给大家分享一下如何用python实现图书管理系统 手把手带你制作图书管理系统 文章末尾还有视频教程哦 话不多说马上开始吧 用户注册 def logon print 欢迎来到图书管理系统注册页面 username