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()

运行程序结果如下: