目录
一、题目信息
二、分析
三、主函数
四、总结
一、题目信息
实现一个图书管理系统,要求有学生信息管理、图书信息管理和图书借阅管理三大功能。
二、分析
创建一个LMS类
class LMS():
def __init__(self, Lname):
self.Lname = Lname
self.Student = []
self.Books = {}
self.BowBooks = {}
print(Lname, '开馆了')
1.学生信息管理:具有添加学生和删除学生两个功能,并将学生存在Student列表中。在删除学生时,如果学生还有未归还书籍则无法删除。
# 学生信息管理
def AddStudent(self, Sname):
if Sname in self.Student:
print('学生已存在')
else:
self.Student.append(Sname)
print('学生', Sname, '已添加成功')
def DelStudent(self, Sname):
if Sname in self.BowBooks.keys():
print('该学生还未归在本馆借阅的图书!')
return
if Sname not in self.Student:
print('学生不存在!')
else:
self.Student.remove(Sname)
print('学生', Sname, '已删除成功')
2.图书信息管理:具有添加图书和删除图书两个功能,并将图书存在Books字典中。添加和删除图书时都需要输入书名和书的数量。
# 图书信息管理
def AddBook(self, Bname, num=1):
num = int(num)
if Bname in self.Books.keys():
self.Books[Bname] += num
else:
self.Books[Bname] = num
print('已成功添加', num, '本', Bname)
def DelBook(self, Bname, num):
num = int(num)
if Bname in self.Books.keys():
if self.Books[Bname] <= num or num == -1:
self.Books.pop(Bname)
print('图书', Bname, '已删除成功')
else:
self.Books[Bname] -= num
print('已成功删除', num, '本', Bname)
print('图书', Bname, '现有库存', self.Books[Bname], '本')
else:
print('图书', Bname, '不存在')
3.图书借阅管理:具有借阅图书和归还图书两个功能,并将借阅人、借阅图书、借阅数量都存在BowBooks字典中。借书时,学生输入自己的姓名、所借书名和借书数量,然后系统会检查图书馆中是否记录了这个学生,如果系统中没有这个学生,那么该学生就不能借书。学生结束成功后,系统会将学生记录到BowBooks字典中,当学生还书后会自动删除。
# 图书借阅管理
def BowBook(self, Sname, Bname, num):
num = int(num)
if Sname not in self.Student:
print('学生未添加')
return
if Bname in self.Books.keys():
if self.Books[Bname] < num:
print('库存不足!')
else:
self.Books[Bname] -= num
if Sname in self.BowBooks.keys():
if Bname in self.BowBooks[Sname].keys():
self.BowBooks[Sname][Bname] += num
else:
self.BowBooks[Sname][Bname] = num
else:
self.BowBooks[Sname] = {
Bname: num
}
print(Sname, '已成功借出', num, '本', Bname)
if self.Books[Bname] == 0:
self.Books.pop(Bname)
print('图书', Bname, '已全部借出')
else:
print('图书', Bname, '现有库存', self.Books[Bname], '本')
else:
print('图书', Bname, '不存在')
def GiveBook(self, Sname, Bname, num):
num = int(num)
if Sname not in self.BowBooks.keys():
print('您未在本图书馆借过书')
return
if Bname in self.BowBooks[Sname].keys():
if Bname in self.Books.keys():
self.Books[Bname] += num
print(Sname, '已成功归还', num, '本', Bname)
else:
self.Books[Bname] = num
print(Sname, '已成功归还', num, '本', Bname)
self.BowBooks[Sname][Bname] -= num
if self.BowBooks[Sname][Bname] == 0:
self.BowBooks[Sname].pop(Bname)
if len(self.BowBooks[Sname]) == 0:
self.BowBooks.pop(Sname)
else:
print('您没有在本图书馆借过这本书')
4.查看功能:通过Look函数使用者可以查看当前图书馆的在馆学生、图书库存和借阅人信息。
# 查看
def Look(self):
if len(self.Student) == 0:
print('当前没有学生在馆内。')
else:
print('当前在馆学生:')
print(self.Student)
print('共', len(self.Student), '人')
if len(self.Books) == 0:
print('当前没有藏书。')
else:
print('当前馆藏图书:')
print(self.Books)
if len(self.BowBooks) == 0:
print('当前未外借图书')
else:
print('当前已借阅图书:')
print(self.BowBooks)
5.错误捕获,当使用者输入不符合不正确的命令时,系统会报错,并给出相应的提示。文章来源:https://www.toymoban.com/news/detail-511532.html
三、主函数
if __name__ == '__main__':
HeNanLibrary = LMS('HeNanLibrary')
while True:
try:
cont = input('请输入操作命令:')
if cont == 'AddBook':
Bname = input('请输入书名:')
num = input('请输入增加的数目:')
HeNanLibrary.AddBook(Bname, num)
elif cont == 'DelBook':
Bname = input('请输入想要删除的书名:')
num = int(input('请输入删除的数目:'))
HeNanLibrary.DelBook(Bname, num)
elif cont == 'AddStudent':
Sname = input('请输入学生姓名:')
HeNanLibrary.AddStudent(Sname)
elif cont == 'DelStudent':
Sname = input('请输入学生姓名:')
HeNanLibrary.DelStudent(Sname)
elif cont == 'BowBook':
Sname = input('请输入借书人姓名:')
Bname = input('请输入书名:')
num = input('请输入借书数目:')
HeNanLibrary.BowBook(Sname, Bname, num)
elif cont == 'GiveBook':
Sname = input('请输入还书人姓名:')
Bname = input('请输入书名:')
num = input('请输入还书数目:')
HeNanLibrary.GiveBook(Sname, Bname, num)
elif cont == 'Look':
HeNanLibrary.Look()
elif cont == 'exit':
break
else:
print('请输入正确的操作命令!')
except Exception:
print('输入错误!')
四、总结
设计系统时采用面向对象的思想会大幅度减轻工作量。就拿图书馆系系统来说,采用面向对象的设计方法会清楚的将系统分为三个模块:学生信息管理、图书信息管理和图书借阅管理,然后再依次实现各个模块的功能。三个主要功能实现之后可以再添加一些小功能来丰富系统。比如通过添加异常捕获来提高系统的健壮性。文章来源地址https://www.toymoban.com/news/detail-511532.html
到了这里,关于用Python实现一个图书管理系统(附带源码)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!