预期功能
1.本系统包括登录主界面、管理系统主界面以及各功能分支界面。
2.登录界面可以实现用户注册、用户登录和退出程序的功能。
3.管理系统主界面可以实现增加书籍、删除书籍、查阅书籍信息、修改书籍信息、查看所有书籍信息、返回登录界面和退出程序的功能。其中书籍信息包括书名、作者、出版社、定价和数目。
用户的注册和登录
在编写程序之前,我们需要导入sys
库,并且创建两个空列表books
和users
,用来存储书籍和用户的信息。除此之外,我们还需要设置一个标志flag
,用来判断用户是否成功登录系统。
import sys
books = []
users = []
flag = False
我们编写两个函数login()
和register()
,分别用来实现用户的注册和登录的功能。
函数login()
代码如下:
def login():
print('请输入用户名:', end='')
username = input()
print('请输入密码:', end='')
password = input()
if [username, password] in users:
print('\033[0;32m登录成功!\033[0m')
flag = True
fun()
else:
print('\033[0;31m用户名或密码错误!请重新登录!\033[0m')
函数register()
代码如下:
def register():
print('请输入用户名:', end='')
username = input()
print('请输入密码:', end='')
password = input()
users.append([username, password])
print('\033[0;32m注册成功!\033[0m')
注:上述代码中的
\033[0;32m
及类似代码表示设定字体样式和颜色,语法为\033[显示方式;前景色;背景色m
。函数login()
中调用了函数fun()
,后者是管理系统主界面函数,会在下面提到。
登录主界面
登录界面中,我们需要考虑到用户的错误输入的相关处理。最好的方法是使用try-except
语句。代码如下所示:
def main():
while True:
print('\n\n')
print('********************************************')
print('********************************************')
print('********************************************')
print('*************欢迎来到图书管理系统*************')
print('************Made by Chen Chunhan************')
print('********************************************')
print('*************** 1.Log in ***************')
print('*************** 2.Register ***************')
print('*************** 0.Exit ***************')
print('********************************************')
print('********************************************')
print('********************************************')
try:
num = int(input('请输入对应的数字:'))
if num == 1:
login()
elif num == 2:
register()
elif num == 0:
print('\033[0;36m再见!\033[0m')
sys.exit(0)
else:
print('\033[0;31m输入错误!请重新输入!\033[0m')
except ValueError:
print('\033[0;31m输入错误!请重新输入!\033[0m')
管理系统主界面
管理系统中有增加书籍、删除书籍、查阅书籍信息、修改书籍信息、查看所有书籍信息、返回登录界面和退出程序七大功能。我们之前提到,书籍的信息是通过列表来存储的,在管理系统主界面函数中,这一点将得到很好的体现。程序的代码实现比较简单,在此不再赘述。
我们定义管理系统主界面的函数fun()
。因为main()
已经被用过了,我也想不出有什么更好的名字,姑且用fun()
来将就一下。在fun()
中,我们也要用到try-except
语句来对可能出现的用户错误输入进行处理。
其中,在“查看所有书籍信息”的时候,我们需要把所有书籍信息按表格的形式输出,这样显得更加简洁直观。为实现这个功能,我们在程序开头导入第三方库prettytable
中的PrettyTable
模块:
from prettytable import PrettyTable
在这里,笔者使用的是Anaconda。对于第三方库
prettytable
的安装,我们在开始菜单中找到Anaconda Prompt,单击鼠标右键→更多→以管理员身份运行,输入命令pip install prettytable
,等待安装完成即可。安装后,我们可以运行代码import prettytable
,如果没有报错即为安装成功。
函数fun()
代码如下:
def fun():
while True:
print('\n\n')
print('********************************************')
print('********************************************')
print('********************************************')
print('********** 1.More Books **********')
print('********** 2.Delete Books **********')
print('********** 3.Search for Books **********')
print('********** 4.Change Information **********')
print('********** 5.View All Books **********')
print('********** 6.Back to Main Menu **********')
print('********** 0.Exit **********')
print('********************************************')
print('********************************************')
print('********************************************')
try:
num = int(input('请输入对应的数字:'))
print('\n')
if num == 1:
bookname = input('请输入书名:')
author = input('请输入作者:')
press = input('请输入出版社:')
price = input('请输入书籍定价:')
amount = input('请输入书籍数目:')
books.append([bookname, author, press, price, amount])
print('\n\033[0;32m添加书籍成功!\033[0m')
elif num == 2:
bookname = input('请输入书名:')
author = input('请输入作者:')
press = input('请输入出版社:')
price = input('请输入书籍定价:')
amount = input('请输入书籍数目:')
if [bookname, author, press, price, amount] in books:
books.remove([bookname, author, press, price, amount])
print('\n\033[0;32m删除书籍成功!\033[0m')
else:
print('\n\033[0;31m该书籍不存在!自动返回...\033[0m')
elif num == 3:
bookname = input('请输入书名:')
j = 0
for i in books:
if i[0] == bookname:
j = 1
print('书名:', i[0])
print('作者:', i[1])
print('出版社:', i[2])
print('定价:', i[3])
print('数目:', i[4])
if j == 0:
print('\n\033[0;31m该书籍不存在!自动返回...\033[0m')
print('\n查找结束\n')
elif num == 4:
bookname = input('请输入要修改的书名:')
author = input('请输入要修改的作者:')
press = input('请输入要修改的出版社:')
price = input('请输入要修改的书籍定价:')
amount = input('请输入要修改的书籍数目:')
if [bookname, author, press, price, amount] in books:
books.remove([bookname, author, press, price, amount])
bookname = input('请输入修改后的书名:')
author = input('请输入修改后的作者:')
press = input('请输入修改后的出版社:')
price = input('请输入修改后的书籍定价:')
amount = input('请输入修改后的书籍数目:')
books.append([bookname, author, press, price, amount])
print('\n\033[0;32m修改书籍成功!\033[0m')
else:
print('\n\033[0;31m该书籍不存在!自动返回...\033[0m')
elif num == 5:
table = PrettyTable(['书名', '作者', '出版社', '定价', '数目'])
for i in books:
table.add_row(i)
print(table)
elif num == 6:
main()
elif num == 0:
print('\033[0;36m再见!\033[0m')
sys.exit(0)
else:
print('\033[0;31m输入错误!请重新输入!\033[0m')
except ValueError:
print('\033[0;31m输入错误!请重新输入!\033[0m')
到此,对于这个程序的所有功能,我们都编写了对应的函数来实现。
完整的图书管理系统代码
import sys
from prettytable import PrettyTable
books = []
users = []
flag = False
def login():
print('请输入用户名:', end='')
username = input()
print('请输入密码:', end='')
password = input()
if [username, password] in users:
print('\033[0;32m登录成功!\033[0m')
flag = True
fun()
else:
print('\033[0;31m用户名或密码错误!请重新登录!\033[0m')
def register():
print('请输入用户名:', end='')
username = input()
print('请输入密码:', end='')
password = input()
users.append([username, password])
print('\033[0;32m注册成功!\033[0m')
def main():
while True:
print('\n\n')
print('********************************************')
print('********************************************')
print('********************************************')
print('*************欢迎来到图书管理系统*************')
print('************Made by Chen Chunhan************')
print('********************************************')
print('*************** 1.Log in ***************')
print('*************** 2.Register ***************')
print('*************** 0.Exit ***************')
print('********************************************')
print('********************************************')
print('********************************************')
try:
num = int(input('请输入对应的数字:'))
if num == 1:
login()
elif num == 2:
register()
elif num == 0:
print('\033[0;36m再见!\033[0m')
sys.exit(0)
else:
print('\033[0;31m输入错误!请重新输入!\033[0m')
except ValueError:
print('\033[0;31m输入错误!请重新输入!\033[0m')
def fun():
while True:
print('\n\n')
print('********************************************')
print('********************************************')
print('********************************************')
print('********** 1.More Books **********')
print('********** 2.Delete Books **********')
print('********** 3.Search for Books **********')
print('********** 4.Change Information **********')
print('********** 5.View All Books **********')
print('********** 6.Back to Main Menu **********')
print('********** 0.Exit **********')
print('********************************************')
print('********************************************')
print('********************************************')
try:
num = int(input('请输入对应的数字:'))
print('\n')
if num == 1:
bookname = input('请输入书名:')
author = input('请输入作者:')
press = input('请输入出版社:')
price = input('请输入书籍定价:')
amount = input('请输入书籍数目:')
books.append([bookname, author, press, price, amount])
print('\n\033[0;32m添加书籍成功!\033[0m')
elif num == 2:
bookname = input('请输入书名:')
author = input('请输入作者:')
press = input('请输入出版社:')
price = input('请输入书籍定价:')
amount = input('请输入书籍数目:')
if [bookname, author, press, price, amount] in books:
books.remove([bookname, author, press, price, amount])
print('\n\033[0;32m删除书籍成功!\033[0m')
else:
print('\n\033[0;31m该书籍不存在!自动返回...\033[0m')
elif num == 3:
bookname = input('请输入书名:')
j = 0
for i in books:
if i[0] == bookname:
j = 1
print('书名:', i[0])
print('作者:', i[1])
print('出版社:', i[2])
print('定价:', i[3])
print('数目:', i[4])
if j == 0:
print('\n\033[0;31m该书籍不存在!自动返回...\033[0m')
print('\n查找结束\n')
elif num == 4:
bookname = input('请输入要修改的书名:')
author = input('请输入要修改的作者:')
press = input('请输入要修改的出版社:')
price = input('请输入要修改的书籍定价:')
amount = input('请输入要修改的书籍数目:')
if [bookname, author, press, price, amount] in books:
books.remove([bookname, author, press, price, amount])
bookname = input('请输入修改后的书名:')
author = input('请输入修改后的作者:')
press = input('请输入修改后的出版社:')
price = input('请输入修改后的书籍定价:')
amount = input('请输入修改后的书籍数目:')
books.append([bookname, author, press, price, amount])
print('\n\033[0;32m修改书籍成功!\033[0m')
else:
print('\n\033[0;31m该书籍不存在!自动返回...\033[0m')
elif num == 5:
table = PrettyTable(['书名', '作者', '出版社', '定价', '数目'])
for i in books:
table.add_row(i)
print(table)
elif num == 6:
main()
elif num == 0:
print('\033[0;36m再见!\033[0m')
sys.exit(0)
else:
print('\033[0;31m输入错误!请重新输入!\033[0m')
except ValueError:
print('\033[0;31m输入错误!请重新输入!\033[0m')
main()
这里不便给出运行实例,大家可以自己试一试。
写在最后
以上就是用Python编写一个简易的图书管理系统的全部内容。这个管理系统还有很多需要优化的地方,我会在后续逐渐改良。