当前位置:   article > 正文

用Python实现一个图书管理系统(附带源码)_用python编写一个图书馆系统

用python编写一个图书馆系统

目录

一、题目信息

二、分析

三、主函数

四、总结


一、题目信息

实现一个图书管理系统,要求有学生信息管理、图书信息管理和图书借阅管理三大功能。

二、分析

创建一个LMS

  1. class LMS():
  2. def __init__(self, Lname):
  3. self.Lname = Lname
  4. self.Student = []
  5. self.Books = {}
  6. self.BowBooks = {}
  7. print(Lname, '开馆了')

1.学生信息管理:具有添加学生和删除学生两个功能,并将学生存在Student列表中。在删除学生时,如果学生还有未归还书籍则无法删除。

  1. # 学生信息管理
  2. def AddStudent(self, Sname):
  3. if Sname in self.Student:
  4. print('学生已存在')
  5. else:
  6. self.Student.append(Sname)
  7. print('学生', Sname, '已添加成功')
  8. def DelStudent(self, Sname):
  9. if Sname in self.BowBooks.keys():
  10. print('该学生还未归在本馆借阅的图书!')
  11. return
  12. if Sname not in self.Student:
  13. print('学生不存在!')
  14. else:
  15. self.Student.remove(Sname)
  16. print('学生', Sname, '已删除成功')

2.图书信息管理:具有添加图书和删除图书两个功能,并将图书存在Books字典中。添加和删除图书时都需要输入书名和书的数量。

  1. # 图书信息管理
  2. def AddBook(self, Bname, num=1):
  3. num = int(num)
  4. if Bname in self.Books.keys():
  5. self.Books[Bname] += num
  6. else:
  7. self.Books[Bname] = num
  8. print('已成功添加', num, '本', Bname)
  9. def DelBook(self, Bname, num):
  10. num = int(num)
  11. if Bname in self.Books.keys():
  12. if self.Books[Bname] <= num or num == -1:
  13. self.Books.pop(Bname)
  14. print('图书', Bname, '已删除成功')
  15. else:
  16. self.Books[Bname] -= num
  17. print('已成功删除', num, '本', Bname)
  18. print('图书', Bname, '现有库存', self.Books[Bname], '本')
  19. else:
  20. print('图书', Bname, '不存在')

3.图书借阅管理:具有借阅图书和归还图书两个功能,并将借阅人、借阅图书、借阅数量都存在BowBooks字典中。借书时,学生输入自己的姓名、所借书名和借书数量,然后系统会检查图书馆中是否记录了这个学生,如果系统中没有这个学生,那么该学生就不能借书。学生结束成功后,系统会将学生记录到BowBooks字典中,当学生还书后会自动删除。

  1. # 图书借阅管理
  2. def BowBook(self, Sname, Bname, num):
  3. num = int(num)
  4. if Sname not in self.Student:
  5. print('学生未添加')
  6. return
  7. if Bname in self.Books.keys():
  8. if self.Books[Bname] < num:
  9. print('库存不足!')
  10. else:
  11. self.Books[Bname] -= num
  12. if Sname in self.BowBooks.keys():
  13. if Bname in self.BowBooks[Sname].keys():
  14. self.BowBooks[Sname][Bname] += num
  15. else:
  16. self.BowBooks[Sname][Bname] = num
  17. else:
  18. self.BowBooks[Sname] = {
  19. Bname: num
  20. }
  21. print(Sname, '已成功借出', num, '本', Bname)
  22. if self.Books[Bname] == 0:
  23. self.Books.pop(Bname)
  24. print('图书', Bname, '已全部借出')
  25. else:
  26. print('图书', Bname, '现有库存', self.Books[Bname], '本')
  27. else:
  28. print('图书', Bname, '不存在')
  29. def GiveBook(self, Sname, Bname, num):
  30. num = int(num)
  31. if Sname not in self.BowBooks.keys():
  32. print('您未在本图书馆借过书')
  33. return
  34. if Bname in self.BowBooks[Sname].keys():
  35. if Bname in self.Books.keys():
  36. self.Books[Bname] += num
  37. print(Sname, '已成功归还', num, '本', Bname)
  38. else:
  39. self.Books[Bname] = num
  40. print(Sname, '已成功归还', num, '本', Bname)
  41. self.BowBooks[Sname][Bname] -= num
  42. if self.BowBooks[Sname][Bname] == 0:
  43. self.BowBooks[Sname].pop(Bname)
  44. if len(self.BowBooks[Sname]) == 0:
  45. self.BowBooks.pop(Sname)
  46. else:
  47. print('您没有在本图书馆借过这本书')

4.查看功能:通过Look函数使用者可以查看当前图书馆的在馆学生、图书库存和借阅人信息。

  1. # 查看
  2. def Look(self):
  3. if len(self.Student) == 0:
  4. print('当前没有学生在馆内。')
  5. else:
  6. print('当前在馆学生:')
  7. print(self.Student)
  8. print('共', len(self.Student), '人')
  9. if len(self.Books) == 0:
  10. print('当前没有藏书。')
  11. else:
  12. print('当前馆藏图书:')
  13. print(self.Books)
  14. if len(self.BowBooks) == 0:
  15. print('当前未外借图书')
  16. else:
  17. print('当前已借阅图书:')
  18. print(self.BowBooks)

5.错误捕获,当使用者输入不符合不正确的命令时,系统会报错,并给出相应的提示。

三、主函数

  1. if __name__ == '__main__':
  2. HeNanLibrary = LMS('HeNanLibrary')
  3. while True:
  4. try:
  5. cont = input('请输入操作命令:')
  6. if cont == 'AddBook':
  7. Bname = input('请输入书名:')
  8. num = input('请输入增加的数目:')
  9. HeNanLibrary.AddBook(Bname, num)
  10. elif cont == 'DelBook':
  11. Bname = input('请输入想要删除的书名:')
  12. num = int(input('请输入删除的数目:'))
  13. HeNanLibrary.DelBook(Bname, num)
  14. elif cont == 'AddStudent':
  15. Sname = input('请输入学生姓名:')
  16. HeNanLibrary.AddStudent(Sname)
  17. elif cont == 'DelStudent':
  18. Sname = input('请输入学生姓名:')
  19. HeNanLibrary.DelStudent(Sname)
  20. elif cont == 'BowBook':
  21. Sname = input('请输入借书人姓名:')
  22. Bname = input('请输入书名:')
  23. num = input('请输入借书数目:')
  24. HeNanLibrary.BowBook(Sname, Bname, num)
  25. elif cont == 'GiveBook':
  26. Sname = input('请输入还书人姓名:')
  27. Bname = input('请输入书名:')
  28. num = input('请输入还书数目:')
  29. HeNanLibrary.GiveBook(Sname, Bname, num)
  30. elif cont == 'Look':
  31. HeNanLibrary.Look()
  32. elif cont == 'exit':
  33. break
  34. else:
  35. print('请输入正确的操作命令!')
  36. except Exception:
  37. print('输入错误!')

四、总结

        设计系统时采用面向对象的思想会大幅度减轻工作量。就拿图书馆系系统来说,采用面向对象的设计方法会清楚的将系统分为三个模块:学生信息管理、图书信息管理和图书借阅管理,然后再依次实现各个模块的功能。三个主要功能实现之后可以再添加一些小功能来丰富系统。比如通过添加异常捕获来提高系统的健壮性。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/365629
推荐阅读
相关标签
  

闽ICP备14008679号