
python --图书管理系统
此图书管理系统偏简易版,提供大概思路(但也麻雀虽小,五脏俱全),实际可以根据自己需求做更多拓展
目录
一、前言
此图书管理系统偏简易版,提供大概思路,实际可以根据自己需求做更多拓展
二、思路
主要从登录/注册 界面入手,进行一步一步拓展,将用户信息存入动态字典中,书籍信息存入列表中(当然,后续也可以增加更多功能,例如用户可以主动给图书馆捐赠书籍,设定积分系统来规定借的书的多少以及种类等等,如果是种类,则需要将列表换成字典),以及用户登录之后自行更改用户名和密码(本文中设定了index索引,所以更改这些信息很方便也很简单)-----可自己自行添加,比较简单,这里就不做拓展了
三、实现代码
①设定好需要的变量
# 定义变量区
n = 0
key = 0
index = 0 # 判断用户是否存在的索引
str1 = "0" # 存储用户名
str_key = "0" # 存储密码
users = {
}
book_list = ["老人与海", "红楼梦", "水浒传", "西游记",
"三国演义", "解忧杂货铺", "哈利波特", "唐诗三百首",
"小虎队大冒险", "查理九世", "鲁滨逊漂流记", "斯塔克工业制造"] # 书单名称
day_time = 0 # 借书天数
day_time1 = 0 # 用户实际使用天数
咳咳,因为是漫威迷,所以加上了这个书籍(不要在意~~)
这里必须先定义一个空字典,以备后续动态添加用户信息做准备,如果不提前设定,则会出现未定义
②登录、注册界面
print("图书管理系统--\n")
print("请登录后再使用\n")
key = int(input("登录-1,若无账号请注册-3,按其余任意键退出\n"))
if key == 3:
n += 1
print("请输入用户名和密码\n")
str1 = input("用户名:")
print("\n")
str_key = input("密码:")
# 注意此时不从0开始,从1开始
users[n] = {
"user_num": n,
"name": str1,
"keywords": str_key
}
print("当前用户信息:\n")
print(users)
elif key == 1:
print("请输入用户名 \n")
str2 = input("用户名: ")
# 判断用户是否存在
for i, user in users.items(): # 前者接受users字典的索引,后者user接受其索引下的值
if str2 == user["name"]:
index = i
print(index)
break
if index == 0:
print("请先注册\n")
str3 = input("按下任意键跳转")
continue
# 用户存在,输入密码
print("欢迎尊敬的 " + str2 + " 用户")
print("请输入密码")
while 1:
key1 = input("密码: ")
if key1 == users[index]["keywords"]:
print("登陆成功")
break
else:
print("请重新输入")
这里 可以看出之前设定 n的目的是为了更加方便的自动给用户贴上标签(也就是排序),这里对字典的遍历采用item()对其变换为列表之后再遍历,相比于之间使用 for i in length(users) 在这种情况下会更为准确,for i in length(users)会出现第一个注册的信息无法访问
③借书界面
# 开始访问内部界面
while 1:
print("1---查看书籍信息\n") # 提前创建好书籍信息
print("2---租借书籍\n")
print("3---归还书籍")
print("任意键退出图书馆")
kind_num = int(input("请选择选项: "))
if kind_num == 1:
print(book_list) # 打印列表
print("是否继续操作?Yes or No")
choice = input(" ")
if choice == "Yes":
print("请选择要借用的书籍:") # 进入借书界面,选择借用书籍,借用天数,并在后台实时更新剩余书籍数目
print(book_list)
book_name = input("请输入要借用的书籍名称")
if book_name in book_list:
day_time = int(input("请输入要借用的天数:"))
print("借书成功,请按时归还")
book_list.remove(book_name)
print("剩余可借书籍")
print(book_list)
else:
print("不存在此书")
print("是否继续操作?Yes or No")
choice = input(" ")
if choice == "Yes":
continue
else:
break
else:
break
elif kind_num == 2:
while 1:
print("请选择要借用的书籍:") # 进入借书界面,选择借用书籍,借用天数,并在后台实时更新剩余书籍数目
print(book_list)
book_name = input("请输入要借用的书籍名称")
if book_name in book_list:
day_time = int(input("请输入要借用的天数:"))
print("借书成功,请按时归还")
book_list.remove(book_name)
print("剩余可借书籍")
print(book_list)
else:
print("图书馆暂未收藏此书籍")
print("是否继续操作?Yes or No")
choice = input(" ")
if choice == "Yes":
continue
else:
break
elif kind_num == 3:
# 进入归还界面,将书籍信息加入到列表中
book_name = input("输入借用的书籍:")
day_time1 = int(input("输入实际借用天数:"))
if day_time1 <= day_time:
book_list.append(book_name)
else:
print("已拉黑用户")
del users[index] # 设定index索引的好处,因为登录之后,index并不会改变,所以可以很方便的进行操作信息,当然以后也可以根据这一点,让用户自行更改自己的用户名和密码
print("当前用户信息: \n")
print(users)
else:
# 任意键退出系统
break
四、所有代码
# 图书管理系统----python综合实践
# 定义变量区
n = 0
key = 0
index = 0 # 判断用户是否存在的索引
str1 = "0" # 存储用户名
str_key = "0" # 存储密码
users = {
}
book_list = ["老人与海", "红楼梦", "水浒传", "西游记",
"三国演义", "解忧杂货铺", "哈利波特", "唐诗三百首",
"小虎队大冒险", "查理九世", "鲁滨逊漂流记", "斯塔克工业制造"] # 书单名称
day_time = 0 # 借书天数
day_time1 = 0 # 用户实际使用天数
# 实体部分区域
while 1:
print("图书管理系统--\n")
print("请登录后再使用\n")
key = int(input("登录-1,若无账号请注册-3,按其余任意键退出\n"))
if key == 3:
n += 1
print("请输入用户名和密码\n")
str1 = input("用户名:")
print("\n")
str_key = input("密码:")
# 注意此时不从0开始,从1开始
users[n] = {
"user_num": n,
"name": str1,
"keywords": str_key
}
print("当前用户信息:\n")
print(users)
elif key == 1:
print("请输入用户名 \n")
str2 = input("用户名: ")
# 判断用户是否存在
for i, user in users.items(): # 前者接受users字典的索引,后者user接受其索引下的值
if str2 == user["name"]:
index = i
print(index)
break
if index == 0:
print("请先注册\n")
str3 = input("按下任意键跳转")
continue
# 用户存在,输入密码
print("欢迎尊敬的 " + str2 + " 用户")
print("请输入密码")
while 1:
key1 = input("密码: ")
if key1 == users[index]["keywords"]:
print("登陆成功")
break
else:
print("请重新输入")
# 开始访问内部界面
while 1:
print("1---查看书籍信息\n") # 提前创建好书籍信息
print("2---租借书籍\n")
print("3---归还书籍")
print("任意键退出图书馆")
kind_num = int(input("请选择选项: "))
if kind_num == 1:
print(book_list) # 打印列表
print("是否继续操作?Yes or No")
choice = input(" ")
if choice == "Yes":
print("请选择要借用的书籍:") # 进入借书界面,选择借用书籍,借用天数,并在后台实时更新剩余书籍数目
print(book_list)
book_name = input("请输入要借用的书籍名称")
if book_name in book_list:
day_time = int(input("请输入要借用的天数:"))
print("借书成功,请按时归还")
book_list.remove(book_name)
print("剩余可借书籍")
print(book_list)
else:
print("不存在此书")
print("是否继续操作?Yes or No")
choice = input(" ")
if choice == "Yes":
continue
else:
break
else:
break
elif kind_num == 2:
while 1:
print("请选择要借用的书籍:") # 进入借书界面,选择借用书籍,借用天数,并在后台实时更新剩余书籍数目
print(book_list)
book_name = input("请输入要借用的书籍名称")
if book_name in book_list:
day_time = int(input("请输入要借用的天数:"))
print("借书成功,请按时归还")
book_list.remove(book_name)
print("剩余可借书籍")
print(book_list)
else:
print("图书馆暂未收藏此书籍")
print("是否继续操作?Yes or No")
choice = input(" ")
if choice == "Yes":
continue
else:
break
elif kind_num == 3:
# 进入归还界面,将书籍信息加入到列表中
book_name = input("输入借用的书籍:")
day_time1 = int(input("输入实际借用天数:"))
if day_time1 <= day_time:
book_list.append(book_name)
else:
print("已拉黑用户")
del users[index]
print("当前用户信息: \n")
print(users)
else:
# 任意键退出系统
break
else:
break
五、打包为exe文件
首先安装pyinstaller
pip install -m pyinstaller
然后直接输出就行了(前提是当前代码文件需要在当前项目中,即保障路径一致性)
pyinstaller -F 文件名
网传是pyinstaller -F -w 文件名,但是因为本文中涉及到 input 的命令行窗口 ,所以需要去掉-w,否则会报错--- input(): lost sys.stdin
代码有任何问题请在评论区留言
制作不易,请多多点赞支持呐!
转载请说明出处
更多推荐
所有评论(0)