1. import sys
    2. # 打印书库中的所有书的函数
    3. def book_detail(books):
    4. for book_name, book_info in books.items():
    5. if book_info is not None:
    6. print('bookName:{} ISBN:{} title:{} author:{} number:{} borrowNumber:{}'
    7. .format(book_name, book_info['ISBN'], book_info['title'], book_info['author'], book_info['number'],
    8. book_info['borrow_num']))
    9. # 检查借书情况
    10. def check_borrow(book):
    11. for book_info in books.values():
    12. # {}跟%s差不多的效果,你翻译的时候注意
    13. print('{}被借出{}本'.format(book_info['title'], book_info['borrow_num']))
    14. # 查找书籍ISBN
    15. def search_book(books):
    16. flag = 'y'
    17. # 添加书籍
    18. while (flag == 'y'):
    19. title = input('输入你想查找的书籍的名字:')
    20. i = 0
    21. for book_info in books.values():
    22. i = 1
    23. if title in book_info.values():
    24. print('您所查找的书籍的信息如下:')
    25. print('title:{} ISBN:{}'.format(book_info['title'], book_info['ISBN']))
    26. if i == 0: # i=0说明没有找到符合输入的书籍
    27. print('没有该书!')
    28. # 防止出现错误输入
    29. while (True):
    30. flag = input('''如果你想要继续查找书籍请输入'y',想退出请输入'n':''')
    31. if flag == 'y' or flag == 'n':
    32. break
    33. else:
    34. print('请输入小写的y或n!')
    35. # 添加书籍数量的函数
    36. def add_book(books):
    37. flag = True
    38. # 添加书籍
    39. while (flag):
    40. next_flag = True
    41. isbn = input('输入你想添加的书籍的ISBN编号或者输入 exit 退出:')
    42. if isbn == 'exit':
    43. break
    44. no_book = True
    45. for book_info in books.values():
    46. if isbn in book_info.values():
    47. no_book = False
    48. print("1. 修改在库数目")
    49. print('2. 修改书籍名称')
    50. print('3. 修改书籍作者')
    51. print('4. 退出')
    52. option_menu = input('书籍在库, 请输入要进行的操作:')
    53. if option_menu == '4':
    54. break
    55. elif option_menu == '1':
    56. try:
    57. add_num = eval(input('请输入添加数量:'))
    58. except Exception:
    59. print("添加书籍在库数目时请输入数字")
    60. next_flag = False
    61. break
    62. if add_num < 0:
    63. print('输入错误, 请输入正整数')
    64. next_flag = False
    65. break
    66. book_info['number'] += int(add_num)
    67. elif option_menu == '2':
    68. new_title = input('请输入需要修改成的名称:')
    69. book_info['title'] = new_title
    70. elif option_menu == '3':
    71. new_author = input('请输入需要修改成作者的名称:')
    72. book_info['author'] = new_author
    73. else:
    74. print('请输入正确的操作代码')
    75. next_flag = False
    76. break
    77. else:
    78. no_book = True
    79. if no_book:
    80. new_book_info = {}
    81. title = input('输入你想添加的书籍的名称:')
    82. author = input('输入你想添加的书籍的作者:')
    83. # 需要做异常处理,防止错误输入
    84. try:
    85. number = eval(input('输入你想添加的书籍的在库数目:'))
    86. except Exception as e:
    87. print("添加书籍在库数目时请输入数字")
    88. next_flag = False
    89. new_book_info['ISBN'] = isbn
    90. new_book_info['title'] = title
    91. new_book_info['author'] = author
    92. new_book_info['number'] = number
    93. new_book_info['borrow_num'] = 0
    94. key = 'book_' + str(len(books) + 1)
    95. books[key] = new_book_info
    96. print('书籍【' + title + '】添加成功')
    97. # 防止出现错误输入
    98. while (next_flag):
    99. flag_continue = input('''如果你想要继续添加书籍请输入'y',想退出请输入'n':''')
    100. if flag_continue.lower() == 'y':
    101. break
    102. else:
    103. flag = False
    104. break
    105. # 借书函数
    106. def borrow_book(books):
    107. flag = 'y'
    108. # 添加书籍
    109. while (flag == 'y'):
    110. isbn = input('输入你想借的书籍的ISBN编号:')
    111. i = 0
    112. for book_info in books.values():
    113. i = 1
    114. if isbn in book_info.values():
    115. b_num = input('请输入要借的的数量:')
    116. if book_info['number'] >= int(b_num):
    117. book_info['number'] -= int(b_num)
    118. book_info['borrow_num'] += int(b_num)
    119. else:
    120. print('对不起,库存不足!')
    121. if i == 0: # i=0说明没有找到符合输入的ISBN号
    122. print('没有该ISBN编号!')
    123. # 防止出现错误输入
    124. while (True):
    125. flag = input('''如果你想要继续借书籍请输入'y',想退出请输入'n':''')
    126. if flag == 'y' or flag == 'n':
    127. break
    128. else:
    129. print('请输入小写的y或n!')
    130. # 还书函数
    131. def return_book(books):
    132. flag = 'y'
    133. # 添加书籍
    134. while (flag == 'y'):
    135. isbn = input('Enter the ISBN number of the book you want to return')
    136. i = 0
    137. for book_info in books.values():
    138. i = 1
    139. if isbn in book_info.values():
    140. r_num = input('Please enter the amount to be returned')
    141. if book_info['borrow_num'] >= int(r_num):
    142. book_info['number'] += int(r_num)
    143. book_info['borrow_num'] -= int(r_num)
    144. else:
    145. print('''I'm sorry, there aren't so many books on loan''')
    146. if i == 0:
    147. print('sorry we do not have this ISBN')
    148. while (True):
    149. flag = input('''If you want to continue returning books, type 'y' and 'n' to exit:''')
    150. if flag == 'y' or flag == 'n':
    151. break
    152. else:
    153. print('Please enter a lowercase y or n!')
    154. if __name__ == '__main__':
    155. # 初始图书馆图书信息
    156. books = {
    157. 'book_1': {
    158. 'ISBN': '12345678910121',
    159. 'title': '假如给我三天光明',
    160. 'author': '海伦凯勒',
    161. 'number': 2,
    162. 'borrow_num': 0},
    163. 'book_2': {
    164. 'ISBN': '12345678910122',
    165. 'title': '红与黑',
    166. 'author': '司汤达',
    167. 'number': 2,
    168. 'borrow_num': 0},
    169. 'book_3': {
    170. 'ISBN': '12345678910123',
    171. 'title': '鲁滨逊漂流记',
    172. 'author': '笛福',
    173. 'number': 2,
    174. 'borrow_num': 0},
    175. }
    176. # 初始化用户信息
    177. print('1. >>>>>>管理员<<<<<<')
    178. print('2. >>>>>>普通用户<<<<<<')
    179. user = input('^^^^^^请输入你的身份^^^^^^')
    180. if user == '1':
    181. password = input('^^^^^^请输入你的登陆密码^^^^^^')
    182. if password == 'admin':
    183. print("========欢迎登陆========")
    184. else:
    185. print('密码错误,自动退出系统')
    186. sys.exit(0)
    187. pass
    188. print('0. ******查 看 书 籍******')
    189. print('1. ******添 加 书 籍******')
    190. print('4. ******查看书籍借阅情况******')
    191. print('5. ******查      书******')
    192. print('6. ******退 出 系 统******')
    193. elif user == '2':
    194. print("========欢迎光临结束系统========")
    195. print("========关于我们的书籍========")
    196. print('0. ******查 看 书 籍******')
    197. print('2. ******借      书******')
    198. print('3. ******还      书******')
    199. print('4. ******查看书籍借阅情况******')
    200. print('5. ******查      书******')
    201. print('6. ******退 出 系 统******')
    202. else:
    203. print('输入错误,自动退出系统')
    204. sys.exit(0)
    205. # 操作选项
    206. option = input("\n请选择操作选项: ")
    207. while (option != '6'):
    208. if option == '0':
    209. print('~~~~~~图 书 列 表~~~~~~')
    210. book_detail(books)
    211. elif option == '1':
    212. print('您选择的是:【添加书籍】')
    213. add_book(books)
    214. elif option == '2':
    215. print('您选择的是:【借书】')
    216. borrow_book(books)
    217. elif option == '3':
    218. print('您选择的是:【还书】')
    219. return_book(books)
    220. elif option == '4':
    221. print('您选择的是:【查看书籍借阅情况】')
    222. check_borrow(books)
    223. elif option == '5':
    224. print('您选择的是:【查书】')
    225. search_book(books)
    226. else:
    227. print('不好意思,我不知道您要干什么,请重新选择')
    228. if user == '1':
    229. print('0. ******查 看 书 籍******')
    230. print('1. ******添 加 书 籍******')
    231. print('4. ******查看书籍借阅情况******')
    232. print('5. ******查      书******')
    233. print('6. ******退 出 系 统******')
    234. elif user == '2':
    235. print('0. ******查 看 书 籍******')
    236. print('2. ******借      书******')
    237. print('3. ******还      书******')
    238. print('4. ******查看书籍借阅情况******')
    239. print('5. ******查      书******')
    240. print('6. ******退 出 系 统******')
    241. option = input("\n请选择操作选项: ")

    测试

    1. (base) PS C:\Users\23046> cd "d:\Study\Python\kes00"
    2. (base) PS D:\Study\Python\kes00> python -u "d:\Study\Python\kes00\kes00.py"
    3. 1. >>>>>>管理员<<<<<<
    4. 2. >>>>>>普通用户<<<<<<
    5. ^^^^^^请输入你的身份^^^^^^1
    6. ^^^^^^请输入你的登陆密码^^^^^^admin
    7. ========欢迎登陆========
    8. 0. ******查 籍******
    9. 1. ******添 籍******
    10. 4. ******查看书籍借阅情况******
    11. 5. ******查      书******
    12. 6. ******退 统******
    13. 请选择操作选项: 0
    14. ~~~~~~图 表~~~~~~
    15. bookName:book_1 ISBN:12345678910121 title:假如给我三天光明 author:海伦凯勒 number:2 borrowNumber:0
    16. bookName:book_2 ISBN:12345678910122 title:红与黑 author:司汤达 number:2 borrowNumber:0
    17. bookName:book_3 ISBN:12345678910123 title:鲁滨逊漂流记 author:笛福 number:2 borrowNumber:0
    18. 0. ******查 籍******
    19. 1. ******添 籍******
    20. 4. ******查看书籍借阅情况******
    21. 5. ******查      书******
    22. 6. ******退 统******
    23. 请选择操作选项: 1
    24. 您选择的是:【添加书籍】
    25. 输入你想添加的书籍的ISBN编号或者输入 exit 退出:123456789
    26. 输入你想添加的书籍的名称:java
    27. 输入你想添加的书籍的作者:weng
    28. 输入你想添加的书籍的在库数目:10
    29. 书籍【java】添加成功
    30. 如果你想要继续添加书籍请输入'y',想退出请输入'n':n
    31. 0. ******查 籍******
    32. 1. ******添 籍******
    33. 4. ******查看书籍借阅情况******
    34. 5. ******查      书******
    35. 6. ******退 统******
    36. 请选择操作选项: 4
    37. 您选择的是:【查看书籍借阅情况】
    38. 假如给我三天光明被借出0
    39. 红与黑被借出0
    40. 鲁滨逊漂流记被借出0
    41. java被借出0
    42. 0. ******查 籍******
    43. 1. ******添 籍******
    44. 4. ******查看书籍借阅情况******
    45. 5. ******查      书******
    46. 6. ******退 统******
    47. 请选择操作选项: 5
    48. 您选择的是:【查书】
    49. 输入你想查找的书籍的名字:java
    50. 您所查找的书籍的信息如下:
    51. title:java ISBN:123456789
    52. 如果你想要继续查找书籍请输入'y',想退出请输入'n':n
    53. 0. ******查 籍******
    54. 1. ******添 籍******
    55. 4. ******查看书籍借阅情况******
    56. 5. ******查      书******
    57. 6. ******退 统******
    58. 请选择操作选项: 6
    59. (base) PS D:\Study\Python\kes00>

    image.png