question1
'''学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail
功能:1.系统以菜单方式工作
2.学生信息录入功能(文件)
3.学生信息浏览
4.查询排序功能
1)学号排序
2)姓名排序
5.信息删改
'''
import json
import os
class StudentManage(object):
student_info = {
'许晨希':{"name": '许晨希',
"age": 20,
"studentID": '04162022',
'gender': '男',
'birthday':'1999-03-12',
'address':'西安',
'Tele':'123456',
'Email':'123456@163.com'}
}
def __init__(self):
self.newData = {}
def add_student_info(self):
name = input("请输入名字:")
if name not in self.student_info:# 名字为空 跳出循环
if not name:
print('名字不可为空')
try:
age = int(input("请输入年龄:"))
studentID = int(input("请输入学号:"))
gender = input('请输入性别:')
birthday = input('请输入生日')
address = input('请输入地址')
Tele = input('请输入电话')
Email = input('请输入电子邮箱')
except:
print("输入无效....重新录入信息")
new_info = {"name": name, "age": age, "studentID": studentID, 'gender': gender,
'birthday':birthday,'address':address,'Tele':Tele,'Email':Email}
self.student_info[name] = new_info
print('信息录入成功')
else:
print('该学生信息已录入')
def show(self):
print("学生信息显示".center(50, '*'))
i = input('''请选择查询方式:
1)按学生学号排序显示全部
2)按学生姓名排序显示全部
3)查找单个学生信息
''')
if i == '1':
print("按学号完整学生信息显示".center(50, '*'))
print('按学号排序结果如下:')
userInfo = self.student_info.values()
for j in userInfo:
self.newData[j['studentID']] = j
print(self.newData)
elif i == '2':
print("按姓名完整学生信息显示".center(50, '*'))
print(self.student_info)
elif i == '3':
info = input('请输入想要查询的学生姓名:')
if info in self.student_info:
print(self.student_info[info])
else:
print('查无此人')
def mod_student_info(self):
mod_name = input("请输入修改的学生姓名:")
if mod_name in self.student_info:
age = int(input("请输入年龄:"))
studentID = int(input("请输入学号:"))
gender = input('请输入性别:')
birthday = input('请输入生日')
address = input('请输入地址')
Tele = input('请输入电话')
Email = input('请输入电子邮箱')
info = {"name": mod_name, "age": age, "studentID": studentID, 'gender': gender,
'birthday': birthday, 'address': address, 'Tele': Tele, 'Email': Email}
self.student_info['name'] = info
else:
print("学生信息不匹配,没有找到%s" % mod_name)
def del_student_info(self):
name = input("请输入删除的学生姓名:")
if name in self.student_info:
del self.student_info[name]
print('删除%s成功'% name)
else:
print("学生信息不匹配,没有找到%s" % name)
def save_info(self):
if os.path.exists("tudent.txt"):
with open("student.txt", "r",encoding="utf-8") as f:
data = f.read()
self.student_info = json.loads(data)
dataStr = json.dumps(self.student_info)
with open("student.txt", "w",encoding="utf-8") as f:
f.write(dataStr)
else:
with open("student.txt", "w+",encoding="utf-8") as f:
f.seek(0, 0)
dataStr = json.dumps(self.student_info)
f.write(dataStr)
print('信息存储成功')
def main():
# 创建学生管理的对象
student = StudentManage()
prompt = """
学生信息管理系统
1). 学生信息录入;
2). 浏览学生信息;
3). 修改学生信息;
4). 删除学生信息;
5). 存储学生信息;
6). 退出
请输入你的选择:"""
while True:
choice = input(prompt)
if choice == '1':
student.add_student_info()
elif choice == '2':
student.show()
elif choice == '3':
student.mod_student_info()
elif choice == '4':
student.del_student_info()
elif choice == '5':
student.save_info()
elif choice == '6':
exit(0)
else:
print("请输入正确的选项")
if __name__ == '__main__':
main()
question2
“”"
书籍借阅系统需求分析:
1. 书籍的属性信息: 编号,书名, 作者,出版社,金额,类别,借阅状态(借出数量, 未借的数量)
2. 书籍借阅需要的操作:
1). 书籍信息;
书籍,期刊,报刊,分类,增删改查(字典套字典)
2). 借阅书籍
3). 归还书籍
更新书籍的库存信息,以及罚款相关信息,并显示其未按时归还的总信息
4). 续借书籍
0). 退出
“”"
‘’’
读者管理需求分析:
1. 读者等级处理,如教师与学生两类,并定义其可借阅图书的数量,以及节约时间
2. 读者信息,录入,挂失,注销,查询。
3. 统计,借阅排行榜,资料状态统计,未按时还书信息。
4. 罚款金额设置,借阅时长设置。
‘’’
"""
书籍借阅系统需求分析:
1. 书籍的属性信息: 编号,书名, 作者,出版社,金额,类别,借阅状态(借出数量, 未借的数量)
2. 书籍借阅需要的操作:
1). 书籍信息;
书籍,期刊,报刊,分类,增删改查(字典套字典)
2). 借阅书籍
3). 归还书籍
更新书籍的库存信息,以及罚款相关信息,并显示其未按时归还的总信息
4). 续借书籍
0). 退出
“”"
‘’’
读者管理需求分析:
1. 读者等级处理,如教师与学生两类,并定义其可借阅图书的数量,以及节约时间
2. 读者信息,录入,挂失,注销,查询。
3. 统计,借阅排行榜,资料状态统计,未按时还书信息。
4. 罚款金额设置,借阅时长设置。
‘’’
from prettytable import PrettyTable
class identity(object):
# 定义存储用户名和密码的字典
StudentDict = {'xcx': '123',
'lucy': '456',
'jay': '789'}
TeacherDict = {
'xxx': '123',
'yyy': '456'
}
# 定义静态方法选择身份
@staticmethod
def Choice():
print('*' * 50)
print('\033[5;31;2m\t\t\t\t欢迎使用图书管理系统\033[0m\n')
answer = input(' 请选择您的身份:[1] 教师账号 [2] 学生帐号 [3] 注册帐号\n')
if answer == '1':
# 如果选择是1,调用老师的验证函数
identity.TeacherIdentity()
elif answer == '2':
# 如果选择是2,调用学生用户的验证函数
identity.StudentIdentity()
elif answer == '3':
# 如果选择是3,选择注册一个新的帐号,并调用验证函数登陆
name = input('注册新用户———请输入您的姓名:')
code = input('注册新用户———请输入您的密码:')
cate = input('注册新用户————请输入您的类别:(1为学生,2为教师)')
if cate == '1':
identity.TeacherDict[name] = code
print('***您已成功注册图书管理系统用户,请登陆:***')
identity.TeacherIdentity()
elif cate == '2':
identity.StudentDict[name] = code
print('***您已成功注册图书管理系统用户,请登陆:***')
identity.StudentIdentity()
else:
print('***您的选择错误,不能登陆!***')
# 定义类方法验证教师信息
@classmethod
def TeacherIdentity(cls):
# 管理员的验证函数
username1 = input('请输入您的帐号:')
passwd1 = input('请输入您的密码:')
print('')
print('*' * 50)
for key in cls.TeacherDict:
if (key == username1 and cls.TeacherDict[key] == passwd1):
print('\033[5;31;2m\t\t您的身份是教师,欢迎您进入图书管理系统\033[0m')
break
else:
print('您的用户名或身份不正确!请重新输入:')
break
# 定义类方法验证学生信息
@classmethod
def StudentIdentity(cls):
# 学生信息的验证函数
username2 =input('请输入您的帐号:')
passwd2 = input('请输入您的密码:')
print(' ')
print('*' * 50)
for key in cls.StudentDict:
if (key == username2 and cls.StudentDict[key] == passwd2):
print('\033[5;31;2m\t\t您的身份是学生,欢迎您进入图书管理系统\033[0m')
else:
print('您的用户名或身份不正确!请重新输入:')
break
class Book(object):
def __init__(self, ID , name, author,press , price, cate,borrowed=0, borrow=0):
"""
编号,书名, 作者,出版社,金额,类别
:param name: 书籍名称
:param author: 作者
:param borrowed: 已经借出的书籍数量
:param borrow: 未借出的书籍数量
"""
self.ID = ID
self.name = name
self.author = author
self.press = press
self.price = price
self.cate = cate
self.borrowed = borrowed
self.borrow = borrow
# 书籍信息的字符串显示
def __str__(self):
return '<Book: %s>' % (self.name)
class BookManage(object):
books = []
def __iter__(self):
return (book.name for book in self.books)
def init(self):
"""初始化书籍信息的函数, 添加书籍信息"""
self.books.append(Book('001', "Python核心编程", 'Linus', '一号出版社', '50', 'Python' , 5, 0))
self.books.append(Book('002', "数据结构与算法", 'Guido', '二号出版社', '60', 'C',0, 10))
self.books.append(Book('003', "Java核心编程", 'Linus', '三号出版社', '25', 'Java',5, 10))
print( "初始化书籍信息成功" )
def find(self, name):
"""
根据用户传入的书籍名称判断书籍是否存在, 如果存在, 返回该书籍对象; 如果不存在, 返回None
:param name:
:return:
"""
for book in self.books:
if book.name == name:
return book
else:
return None
def borrowBook(self):
# 删除字符串左右的空格
name = input("借阅书籍名称:").strip()
# 查找书籍, 如果存在, 返回书籍对象, 不存在, 返回None;
book = self.find(name)
if book:
if book.borrow > 0:
# 未借出书籍数量减1;
book.borrow -= 1
print("书籍借阅成功" )
else:
print("书籍%s库存不足" % (book.name))
else:
print("书籍%s不存在" % (name))
def returnBook(self):
name = input("归还书籍名称:").strip()
book = self.find(name)
if book:
book.borrow += 1
print("书籍归还成功")
else:
print("书籍%s不存在" % (name))
def show(self):
print("书籍信息显示".center(50, '*'))
table = PrettyTable()
table.field_names = ["编号", "书籍名称", "作者", '出版社','金额','类别','已借出数量', '库存数量']
for index, book in enumerate(self.books):
table.add_row([book.ID, book.name, book.author, book.press, book.price,
book.cate,book.borrowed, book.borrow])
print(table)
def main():
# 创建书籍管理的对象
bm = BookManage()
User = identity()
# 先初始化书籍信息
bm.init()
prompt = """
书籍借阅管理系统
1). 录入书籍信息;
2). 借阅书籍信息
3). 归还书籍
4). 查询书籍信息
5). 退出
请输入你的选择:"""
User.Choice()
while True:
choice = input(prompt)
if choice == '1':
pass
elif choice == '2':
bm.borrowBook()
elif choice == '3':
bm.returnBook()
elif choice == '4':
bm.show()
elif choice == '5':
exit(0)
else:
print("请输入正确的选项")
if __name__ == '__main__':
main()