2024年1月18日发(作者:)
图书管理系统python代码
一、鹿寨小学图书馆开馆了,准备开发一个图书管理系统。用json模拟数据库的方式完成下列业务:
1.用户登录;login() 判断用户名输入错误三次即强制退出,密码输入错误三次也强制退出。
2.显示图书列表;showAllBooks()
3.图书上架;addBook() 增加图书信息
4.图书下架;delBook() 删除增加图书信息
5.借书;lendBook()判断借出状态是不是可借,如果是,就更改为已借出
6.还书;returnBook()
7.显示用户 showallusers()
8.增加用户 adduser()
9.删除用户 deluser()
10.退出
显示用户名
增加用户
删除用户
a.
使用json数据保存用户数据(包含用户名,密码,姓名);
b. 使用json数据保存图书数据(包含编号,书名,作者,借出状态state);
可借---已借出
c. 编写用户各个业务函数,在main函数中将所有函数串联起来。
二、需要注意的是:第一次运行程序时,标黄的初始化数据要运行,第二次运行后就不需要保留(原因:json初始数据需要程序写入,不能手动添加!如果第二次运行时仍然保留的话,数据库的信息都会被初始化!)
该程序为面向过程的语言,缺点是当用户信息或图书信息变得很大时,程序的执行效率就会变得很慢,后续会利用面向对象的方法编写图书管理系统。完整的Python程序如下:
import json
import time
import sys
# 初始化数据
# booksdata = '[{"编号": 1001, "书名": "<红楼梦>", "作者": "曹雪芹", "借出状态": "已借出"},
# {"编号": 1002, "书名": "
# {"编号": 1003, "书名": "<圣经>", "作者": "耶稣", "借出状态": "可借"}]'
# usersdata = '[{"用户名": "admin", "密码": "123", "姓名": "张三"},{"用户名": "aaa", "密码":
"123", "姓名": "李四"}]'
# with open(r"", "w") as f:
# (usersdata)
# with open(r"", "w") as f:
# (booksdata)
# 读用户数据
def readusersdata():
with open(r"", "r") as f:
jsondata = ()
listdata = (jsondata)
return listdata
# 读图书数据
def readbooksdata():
with open(r"", "r") as f:
jsondata = ()
listdata = (jsondata)
return listdata
# 写用户数据
def writeusersdata(listdata):
jsondata = (listdata)
with open(r"", "w") as f:
(jsondata)
print("---用户数据写入成功")
# 写图书数据
def writebooksdata(listdata):
jsondata = (listdata)
with open(r"", "w") as f:
(jsondata)
print("---图书数据写入成功")
# 用户登录
def login():
with open(r"", "r") as f:
listusersdata = ()
usersdata = (listusersdata)
user = input("请输入用户名:")
msg = 0 # 判断用户名是否存在
usererror = 0 # 判断用户名输入错误次数
passworderror = 0 # 判断密码输入错误次数
while 1 == 1:
for x in usersdata:
if x["用户名"] == user:
usererror = 0
password = input("请输入用户密码:")
msg == 1
while 1 == 1:
if x["密码"] == password:
passworderror = 0
print("恭喜您,登入成功!")
return "成功"
else:
passworderror += 1
if passworderror == 2:
print("密码已输入错误两次,第三次输入错误将锁定账号!")
if passworderror == 3:
print("对不起!第三次密码输入错误,账号已锁定!系统正在退出...")
return "失败"
password = input("密码错误!请重新输入:")
if msg == 0:
usererror += 1
if usererror == 2:
print("账号已输入错误两次,第三次输入错误将锁定账号!")
if usererror == 3:
print("对不起!第三次账号输入错误,账号已锁定!系统正在退出...")
return "失败"
user = input("无此用户名!请重新输入:")
# 显示图书列表
def showAllBooks():
listdata = readbooksdata()
print("==============图书管理系统================")
print("编号", " ", "书名", " ", "作者", " ", "借出状态")
for x in listdata:
print(x["编号"], " ", x["书名"], " ", x["作者"], " ", x["借出状态"])
# 图书上架
def addBook():
print("==============增加图书信息================")
listdata = readbooksdata()
list1 = []
for book in listdata:
(book["编号"])
newNum = max(list1) + 1
# number=int(input("请输入图书编号:"))
# msg=0 #判断图书编号是否已存在
# while 1==1:
# for x in listdata:
# if x["编号"]==number:
# msg=1
# if msg==1:
# number=int(input("系统中已存在该编号!请输入新的图书编号:"))
# else:
# break
book = input("请输入书名:")
book = "<" + book + ">"
author = input("请输入作者:")
state = "可借"
newBook = {"编号": newNum, "书名": book, "作者": author, "借出状态": state}
(newBook)
writebooksdata(listdata)
# 图书下架
def delBook():
listdata = readbooksdata()
showAllBooks()
number = int(input("请输入要删除的图书编号:"))
for book in listdata:
if book["编号"] == number:
(book)
print("-----图书", book["书名"], "已下架!")
writebooksdata(listdata)
# 借书
def lendBook():
listdata = readbooksdata()
showAllBooks()
number = int(input("请输入要借的图书编号:"))
while 1 == 1:
for book in listdata:
print(book["编号"])
if book["编号"]==number:
if book["借出状态"] == "可借":
print("---恭喜你借出图书:", book["书名"], "成功!")
book["借出状态"] = "已借出"
writebooksdata(listdata)
return
else:
print("----",book["书名"], "已经借出!下次再来吧!")
return
else:
number=int(input("----没有此书籍,请重新输入要借的图书编号:"))
# 还书
def returnBook():
listdata = readbooksdata()
showAllBooks()
number = int(input("请输入要还的图书编号:"))
msg = 0
while 1 == 1:
for book in listdata:
if book["编号"] == number:
if book["借出状态"] == "已借出":
msg = 1
print("---恭喜你还书:", book["书名"], "成功!")
book["借出状态"] = "可借"
writebooksdata(listdata)
return
else:
print("该书不可还!")
if msg == 0:
number = input("----没有此书籍,请重新输入要还的图书编号:")
#增加用户账户
def adduser():
userdata = readusersdata()
account = input("请输入要增加的用户名:")
password = input("请输入要增加的用户密码:")
name = input("请输入要增加的用户姓名:")
append1 = {"用户名": account, "密码": password, "姓名": name}
(append1)
writeusersdata(userdata)
print("添加用户成功!")
#删除用户账号
def deluser():
userdata = readusersdata()
account = input("请输入要删除的用户名:")
msg=0
while 1==1:
for x in userdata:
if x["用户名"]==account:
msg=1
(x)
writeusersdata(userdata)
print("删除用户成功!")
return
if msg==0:
account=input("不存在此用户名,请重新输入要删除的用户名:")
# 显示用户列表
def showallusers():
listuser = readusersdata()
print("用户名", " ", "密码", " ", "姓名")
for x in listuser:
print(x["用户名"], " ", x["密码"], " ", x["姓名"])
# 主函数
def main():
print("==============图书管理系统================")
msg = login()
if msg == "成功":
while 1 == 1:
task = float(input("请输入要办理的业务:(1-显示图书列表,2-上架图书,3-下架图书,4-借书,5-还书,6-显示用户,7-增加用户,8-删除用户,9-退出)"))
if task == 1:
showAllBooks()
elif task == 2:
addBook()
elif task == 3:
delBook()
elif task == 4:
lendBook()
elif task == 5:
returnBook()
elif task == 6:
showallusers()
elif task == 7:
adduser()
showallusers()
elif task == 8:
showallusers()
deluser()
elif task == 9:
(0)
else:
print("没有此业务!")
else:
msg = 3
for i in range(0,msg):
print(msg-i)
(1)
(0)
# ---
if __name__=='__main__':
main()
运行程序结果如下:


发布评论