赞
踩
目录
实现一个图书管理系统,要求有学生信息管理、图书信息管理和图书借阅管理三大功能。
创建一个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.错误捕获,当使用者输入不符合不正确的命令时,系统会报错,并给出相应的提示。
- 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('输入错误!')
设计系统时采用面向对象的思想会大幅度减轻工作量。就拿图书馆系系统来说,采用面向对象的设计方法会清楚的将系统分为三个模块:学生信息管理、图书信息管理和图书借阅管理,然后再依次实现各个模块的功能。三个主要功能实现之后可以再添加一些小功能来丰富系统。比如通过添加异常捕获来提高系统的健壮性。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。