Python基础——歌曲管理系统

管理员操控

管理员登录请输入1,用户都登录请输入2:1
请输入管理员名:AB
请输入密码123
登录成功

    ==============================歌曲管理系统===================================
    ---------------------------------功能选择---------------------------------------
    				 1.录入歌曲信息
    				 2.查找歌曲信息
    				 3.删除歌曲信息
    				 4.修改歌曲信息
    				 5.显示歌曲排行
    				 6.修改登录密码
    				 0.退出系统
    ------------------------------------------------------------------------------
    ==============================================================================
    
请输入要执行的功能序号:

管理登录密码数据

{'管理员': 'AB', '密码': '123'}
{'管理员': 'CD', '密码': '456'}
{'管理员': 'ab', '密码': '123'}

使用步骤

class Manager():
    def __init__(self,name,pw):
        self.name=name
        self.pw=pw
    def change(self,other):
        if self.name==other.name and self.pw==other.pw:
            return True
        else:
            return False
    def updatePw(self,newPw):
        self.pw=newPw
    def showManager(self):
        print("管理员名:",self.name)
        print("密码:",self.pw)
#声明类名Manager 一个构造方法加三个普通方法
def check():
    filename = '管理档案.txt'
    Manager_check=[]
    while True:

        if os.path.exists(filename):
            a = 0
            管理员名=input('请输入管理员名:')
            密码 = input('请输入密码')
            with open(filename, 'r', encoding='utf-8') as rfile:
                song = rfile.readlines()
                for item in song:
                    d = dict(eval(item))
                    if d['管理员'] == 管理员名:
                        if d['密码'] == 密码:
                            a == 0
                            break
                    else:
                        a += 1
                if a == 0:
                    print('登录成功')
                    return
                else:
                    print('登录失败,请重新尝试')

引入库

import 用户使用

运行函数

if __name__ == '__main__':
    choice= input('管理员登录请输入1,用户都登录请输入2:')
    if choice =='1':
        check()
        main()
    if choice =="2":
        print('用户方法')
        用户使用.check()
        用户使用.menu()
        用户使用.main()
        用户使用.change()

主函数

import os
#引入库
def main():
    while True:
        menu()
        choice=int(input("请输入要执行的功能序号:"))
        if choice in [0,1,2,3,4,5,6]:
            if choice==0:
                answer=input("您要退出系统吗?y/n:")
                if answer == 'y' or answer == 'Y':
                    print("感谢您的使用")
                    return
                if answer == 'n' or answer == 'N':
                    continue
            elif choice == 1:
                insert()
            elif choice == 2:
                search()
            elif choice == 3:
                delete()
            elif choice == 4:
                modify()
            elif choice == 5:
                show()
            elif choice == 6:
                change()
        else:
            print("输入有误,请重新输入")

显示主页面菜单

def menu():
    print('''
    ==============================歌曲管理系统===================================
    ---------------------------------功能选择---------------------------------------
    \t\t\t\t 1.录入歌曲信息
    \t\t\t\t 2.查找歌曲信息
    \t\t\t\t 3.删除歌曲信息
    \t\t\t\t 4.修改歌曲信息
    \t\t\t\t 5.显示歌曲排行
    \t\t\t\t 6.修改登录密码
    \t\t\t\t 0.退出系统
    ------------------------------------------------------------------------------
    ==============================================================================''')

录入歌曲信息

def insert():
    song_list=[]
    while True:
        歌名=input("请输入歌名:")
        if not  歌名:
            break
        歌手 = input("请输入歌曲歌手:")
        if not 歌手:
            break
        try:
            曲风=input("请输入歌曲曲风:")
            排行=int(input("请输入歌曲排行:"))
            专辑 = input("请输入歌曲专辑:")
        except:
            print("输入有误,请重新输入")
            continue

        song={'歌名':歌名,'歌手':歌手,'曲风':曲风,'排行':排行,'专辑':专辑}
        song_list.append(song)
        answer=input("是否继续输入y/n:")
        if answer=='y'or answer=='Y':
            continue
        else:
            save(song_list)
            print("歌曲信息录入完毕!!!")
       		return main()

查找歌曲信息

filename='song.txt'
def save(list):
    son_txt=open(filename,'a',encoding='utf-8')
   # 打开文件用于追加,新文件将会写入已有文件;若该文件不存在,创建新文件进行写入即保存。
    for item in list:
        print(item)
        son_txt.write(str(item) + '\n')
    son_txt.close()

def search():
    song_query=[]
    while True:
        歌名=''
        if os.path.exists(filename):
            mode=input('按歌名查找输入1,按歌手查找输入2:')
            if mode=='1':
                歌名=input('请输入歌曲歌名:')
                with open(filename, 'r', encoding='utf-8') as rfile:
                # 一般常用with open,r以只读的方式打开文件,file encoding为文件使用的编码
                    song = rfile.readlines()
                    #读取文件所有行
                    for item in song:
                        d = dict(eval(item))
                       
                        if d['歌名'] == 歌名:
                                song_query.append(d)

                print(song_query)
                song_query.clear()
            elif mode=='2':
                歌手=input('请输入歌曲歌手:')
                with open(filename, 'r', encoding='utf-8') as rfile:
                    song = rfile.readlines()
                    for item in song:
                        d = dict(eval(item))
                       if d['歌手'] == 歌手:
                            song_query.append(d)
                print(song_query)
                song_query.clear()
            else:
                print('输入信息有误')
                search()
            answer=input('是否继续查询歌曲信息:y/n:')
            if answer=='y' or answer=='Y':
                continue
            else:
                break
        else:
            print('尚未保存歌曲信息:')
            return search()
        return main()

修改歌曲信息

def modify():
    
    if os.path.exists(filename):
        with open(filename,'r',encoding='utf-8') as rfile:
            song_old=rfile.readlines()
    else:
        return
    song_歌名=input('请输入你想修改的歌曲歌名:')
    with open(filename,'w',encoding='utf-8') as wfile:
    # w打开文件只用于写入,若该文件已存在则将其覆盖;不存在则创建新文件
        for item in song_old:
            d=dict(eval(item))
            #列表转为字典
            if d['歌名']==song_歌名:
                print(f'找到{song_歌名}的信息,可以修改')
                while True:
                    try:
                        d['歌名']=input('请输入新歌名:')
                        d['歌手']=input('请输入歌手:')
                        d['曲风']=input('请输入歌曲曲风:')
                        d['排行']=int(input('请输入歌曲排行:'))
                        d['专辑']=input('请输入歌曲专辑:')
                    except:
                        print('输入有误,请重新输入')
                        continue
                    else:
                        break
                wfile.write(str(d)+'\n')
            else:
                wfile.write(str(d)+'\n')
        wfile.close()
        answer=input('是否继续修改歌曲信息y/n:')
        if answer=='y' or answer=='Y':
            modify()
        else:
            print('信息修改成功!!!')

删除歌曲信息

def delete():
    while True:
        song_歌名=input('请输入想要删除的歌名:')
        if song_歌名!='':
            if os.path.exists(filename):
                with open(filename,'r',encoding='utf-8') as file:
                    song_old=file.readlines()
            else:
                song_old=[]
            flag=False
            if song_old:
                with open(filename,'w',encoding='utf-8') as wfile:
                    d={}
                    for item in song_old:
                        d=dict(eval(item))
                        if d['歌名']!=song_歌名:
                            wfile.write(str(d)+'\n')
                        else:
                            flag=True
                    if flag:
                        print(f"歌名为{song_歌名}的歌曲信息已经删除!")
                    else:
                        print(f'没有找到歌名为{song_歌名}的歌曲信息')
            else:
                print('无此歌曲信息')
                break
            # show()
            s=input('请选择是否继续删除歌曲信息y/n:')
            if s=='y' or s=='Y':
                continue
            else:
                return main()

修改登录密码

def change():
    filename='管理档案.txt'
    if os.path.exists(filename):
        with open(filename,'r',encoding='utf-8') as rfile:
            密码_old=rfile.readlines()
    else:
        return
    manager_管理员名=input('请输入管理员名:')
    with open(filename,'w',encoding='utf-8') as wfile:
        for item in 密码_old:
            d=dict(eval(item))
            # song_排行=int(input('请输入歌曲排行'))
            if d['管理员']==manager_管理员名:
                print(f'找到{manager_管理员名}的信息,可以修改')
                while True:
                    try:
                        d['密码']=input('请输入新密码:')
                    except:
                        print('输入有误,请重新输入')
                        continue
                    else:
                        break

                wfile.write(str(d)+'\n')
            else:
                wfile.write(str(d)+'\n')
        wfile.close()
        answer = input('是否继续修改y/n:')
        if answer == 'y' or answer == 'Y':
            modify()
        else:
            print('密码修改成功!!!')
return main()

用户操控

管理员登录请输入1,用户都登录请输入2:2
用户方法
请输入用户名:ab
请输入密码789
登录成功

    ==============================用户歌曲系统===================================
    ---------------------------------功能选择---------------------------------------
    				 1.录入最近播放
    				 2.查找歌曲信息
    				 3.显示最近播放
    				 4.修改登录密码
    				 0.退出系统
    ------------------------------------------------------------------------------
    ==============================================================================  
请输入要执行的功能序号:

用户登录密码数据

{'用户名': 'ab', '密码': '789'}
{'用户名': 'cd', '密码': '456'}
{'用户名': 'mn', '密码': '000'}

用户方法

class User():
    def __init__(self,name,pw):
        self.name=name
        self.pw=pw
    def change(self,user):
        if self.name==user.name and self.pw==user.pw:
            return True
        else:
            return False
    def updatePw(self,newPw):
        self.pw=newPw
    def showUser(self):
        print("用户名:",self.name)
        print("密码:",self.pw)
        return check()
# # user=User('ab','456')
def check():
    filename = '用户数据.txt'
    User_check = []
    while True:

        if os.path.exists(filename):
            a = 0
            用户名 = input('请输入用户名:')
            密码 = input('请输入密码')
            with open(filename, 'r', encoding='utf-8') as rfile:
                song = rfile.readlines()
                for item in song:
                    d = dict(eval(item))
                    if d['用户名'] == 用户名:
                        if d['密码'] == 密码:
                            a == 0
                            break
                    else:
                        a += 1
                if a == 0:
                    print('登录成功')
                    return
                else:
                    print('登录失败,请重新尝试')

用户运行函数

def main():
    while True:
        menu()
        choice=int(input("请输入要执行的功能序号:"))
        if choice in [0,1,2,3,4]:
            if choice==0:
                answer=input("您要退出系统吗?y/n:")
                if answer == 'y' or answer == 'Y':
                    print("感谢您的使用")
                    return
                if answer == 'n' or answer == 'N':
                    continue
            elif choice == 1:
                record()
            elif choice == 2:
                search()
            elif choice == 3:
                show()
            elif choice == 4:
                change()
        else:
            print("输入有误,请重新输入")

录入最近播放

def record():
    song_list=[]
    while True:
        歌名=input("请输入歌名:")
        if not  歌名:
            break
        歌手 = input("请输入歌曲歌手:")
        if not 歌手:
            break
        song={'歌名':歌名,'歌手':歌手}
        song_list.append(song)
        answer=input("是否继续输入y/n:")
        if answer=='y'or answer=='Y':
            continue
        else:
            save(song_list)
            print("最近播放录入完毕!!!")
        # break
            return main()
filename='用户专享.txt'
def save(list):
    son_txt=open(filename,'a',encoding='utf-8')
    for item in list:
        print(item)
        son_txt.write(str(item) + '\n')
    son_txt.close()

查找最近播放

def search():
    song_query=[]
    while True:
        gm=''
        if os.path.exists(filename):
            mode=input('按歌名查找输入1,按歌手查找输入2:')
            if mode=='1':
                歌名=input('请输入歌曲歌名:')
                with open(filename, 'r', encoding='utf-8') as rfile:
                    song = rfile.readlines()
                    for item in song:
                        d = dict(eval(item))
                    if d['歌名'] == 歌名:
                                song_query.append(d)
                print(song_query)
                song_query.clear()
            elif mode=='2':
                歌手=input('请输入歌曲歌手:')
                with open(filename, 'r', encoding='utf-8') as rfile:
                    song = rfile.readlines()
                    for item in song:
                        d = dict(eval(item))
                        if d['歌手'] == 歌手:
                            song_query.append(d)
                print(song_query)
                song_query.clear()
            else:
                print('输入信息有误')
                search()
            answer = input('是否继续查找歌曲信息:y/n:')
            if answer == 'y' or answer == 'Y':
                continue
            else:
                break
        else:
            print('尚未保存歌曲信息:')
            return search()
        return main()

显示最近播放

def show():
    filename = '用户专享.txt'
    song_list = {}
    if os.path.exists(filename):
        with open(filename, 'r', encoding='utf-8') as rfile:
            songs = rfile.readlines()
        for item in songs:
            d = dict(eval(item))
            song_list[d['歌手']] = d['歌名']
        print(song_list)
        return main()

修改用户密码

def change():
    filename = '用户数据.txt'
    if os.path.exists(filename):
        with open(filename, 'r', encoding='utf-8') as rfile:
            密码_old = rfile.readlines()
    else:
        return
    username_用户名 = input('请输入用户名:')
    with open(filename, 'w', encoding='utf-8') as wfile:
        for item in 密码_old:
            d = dict(eval(item))
            if d['用户名'] == username_用户名:
                print(f'找到{username_用户名}的信息,可以修改')
                while True:
                    try:
                        d['密码'] = input('请输入新密码:')
                    except:
                        print('输入有误,请重新输入')
                        continue
                    else:
                        break

                wfile.write(str(d) + '\n')
            else:
                wfile.write(str(d) + '\n')
        wfile.close()
        answer = input('是否继续修改y/n:')
        if answer == 'y' or answer == 'Y':
            change()
        else:
            print('密码修改成功!!!')

歌曲管理项目初此定稿已完成,在考核中我也认识到自己项目的不足,在以后学习中也会不断完善;知识漏洞仍有很多,令我刺挠且自卑,凌乱且头秃。但今天的天有点冷,所以还是需要我这个小太阳滴,继续吧!加油吧!

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值