一,制作背景:
前两天学习了下python的文件操作,想着利用文件操作结合前面所学的内容制作一个简易的图书管理工具。为什么说是简易呢。哈哈,因为想法很完美,但能力有限,所以这个简易的图书管理工具只有注册账号、登录系统、查询图书、和添加图书、退出系统 几个小功能~~~
二、代码逻辑:
1,首先使用字典,将几个操作赋值给变量~
'''图书管理系统'''
print('===================请输入你所需要的操作===================')
caozuo = {1: '注册账号', 2: '登录系统', 3: '图书录入操作', 4: '图书查询操作', 5: '退出图书管理系统'}
print(1, caozuo[1], 2, caozuo[2], 3, caozuo[3], 4, caozuo[4], 5, caozuo[5])
2,定义函数,编写注册功能~
def register():
username = input('请设置用户名:')
while not username.isidentifier():#判断用户输入的字符串是否符合python标识符规范
username = input('检测到用户输入的用户名不符合规范,请重新设置用户名:')
else:
print('设置用户名成功!')
mobile = input('请设置11位手机号:')
while not mobile.isdigit() or len(mobile) != 11:
#判断用户输入的手机号字符串是否全部都是数字,是否是11位
mobile = input('检测用户输入的手机号格式错误,请重新输入:')
password = input('请设置密码: ')
while not password.isidentifier():#判断用户输入的字符串是否符合python标识符规范
password = input('检测到用户输入的密码不符合规范,请重新设置密码:')
else:
password02 = input('请再次输入密码确认:')
while not password02.isidentifier() or password02 != password:
password02 = input('再次输入的密码存在问题,请检查(是否与第一次输入的密码一致,是否存在特殊字符):')
else:
print('密码设置成功')
print('恭喜您,图书管理系统账号已注册成功,欢迎您使用!')
return username, mobile, password
1,注册功能演示:
![](https://i-blog.csdnimg.cn/blog_migrate/1dd259bfcc6cc3421f69e862012b5ac6.png)
2,注册成功之后用户信息会写入到文件 用户信息.txt 中
![](https://i-blog.csdnimg.cn/blog_migrate/39c7f5689a4bb2a579a545df856c369c.png)
3,定义函数,编写系统登录功能~
def login(username01, password01):
username = input('请输入用户名: ')
while username != username01:
username = input('检测到用户名输出错误,请重新输入用户名: ')
else:
print('用户名匹配正确!')
password = input('请输入密码: ')
while password != password01:
password = input('检测到密码输出错误,请重新输入密码: ')
else:
print('密码匹配正确!')
print('登录系统成功!')
登录功能演示:
![](https://i-blog.csdnimg.cn/blog_migrate/a5faa7088482c4abb10b5063d96e0a1d.png)
4,根据用户输入的编号,编写对应操作逻辑~。如,用户输入1,即执行注册账号的操作~
while True:
user_caozuo = int(input('请输入需要选择的操作:'))
if user_caozuo == 1:
username01, mobile01, password01 = register()
with open('D:/python/PythonProject/python_20230121/图书管理系统/用户信息.txt', 'a', encoding='utf-8') as fp:
fp.write(username01),
fp.write('\r\n'),
fp.write(password01)
if user_caozuo == 2:
with open('D:/python/PythonProject/python_20230121/图书管理系统/用户信息.txt', 'r', encoding='utf-8') as fp:
name = fp.readline()
passwd = fp.readlines(2)[1]
new_name = name[0:5]
login(new_name, passwd)
# print(passwd)
if user_caozuo == 3:
book_entry = input('请输入图书名称: ')
with open('D:/python/PythonProject/python_20230121/图书管理系统/图书信息.txt', 'a', encoding='utf-8') as fp:
fp.write('\r\n'),
fp.write(book_entry)
if user_caozuo == 4:
user_select01 = input('是否查看已录入的全部书籍清单,是请输入1,否请输入0: ')
if user_select01 == '1':
with open('D:/python/PythonProject/python_20230121/图书管理系统/图书信息.txt', 'r', encoding='utf-8') as fp:
text = fp.read()
print(text)
elif user_select01 == '0':
book = []
select_book = input('请输入要查找的书名:')
with open('D:/python/PythonProject/python_20230121/图书管理系统/图书信息.txt', 'r', encoding='utf-8') as fp:
text02 = fp.readlines()
for item in text02:
new_text = item.strip()
if new_text == select_book:
print(new_text)
if user_caozuo == 5:
print('退出图书管理系统,欢迎下次再来!')
break
【备注:代码原理是通过读取文件中存储的用户信息来判断登录的账号和注册的账号是否一致,其中用户名处是采用字符串截取的方式读取的,目前配置是截取5位,如果用户名长度过长,登录时会匹配不上,所以可以修改代码new_name变量处,灵活截取】~~~
5,查询图书、添加图书 功能演示:
1,添加图书:
![](https://i-blog.csdnimg.cn/blog_migrate/7ef22fbc6620e09fe93a684ed7dc0594.png)
2,查询图书:
1,)查询系统保存的全部图书名称:
![](https://i-blog.csdnimg.cn/blog_migrate/8f499e9fefd97bb86253f3b74a2961e5.png)
2,)根据输入的书籍名称,查看对应的图书:
![](https://i-blog.csdnimg.cn/blog_migrate/ec1f6980f27abef58c945a8875731b4b.png)
3,最后输入5,即可退出系统
![](https://i-blog.csdnimg.cn/blog_migrate/1a4de66e142706a13bf5ef62eba6b1f7.png)