基于Python的图书馆后台管理系统

Momenter

发布日期: 2018-10-22 19:50:52 浏览量: 1652
评分:
star star star star star star star star star star
*转载请注明来自write-bug.com

一、需求分析

1.1 数据流图

1.2 数据字典

学生信息表(students)

学生信息包括真实姓名,性别学号,电话号码,专业以及班级

字段名 字段描述 字段类型
sname 学生姓名 varchar(2000)
sno 学号 varchar(2000)
sex 性别 varchar(100)
telnum 电话号码 varchar(50)
major 专业 varchar(2000)
class 班级 varchar(1000)

账户信息(admin)

账户信息包括账户名,账户密码,以及账户角色

字段名 字段描述 字段类型
account 账户名 varchar(200)
pwd 密码 varchar(200)
role 角色 varchar(200)
sno 学号/工号 varchar(200)

书籍信息(books)

书籍信息包括书名,书的作者,住的编号,书的价格以及拥有的数量

字段名 字段描述 字段类型
bname 书籍名 varchar(2000)
author 书籍作者 varchar(2000)
bnum 书籍编号 varchar(2000)
bprices 书记价格 varchar(2000)
had 拥有数量 varchar(2000)
  • 借阅记录(logs)

借阅记录包括借阅书籍的书名,借阅者的学号,借阅时间,借阅时长,借阅状态

字段名 字段描述 字段类型
bname 借阅的书籍名 varchar(200)
bsno 借阅者的学号/工号 varchar(200)
btime 借阅时间 date(0)
howlong 借阅时长 varchar(200)
outline 节借阅状态 varchar(200)

1.3 加工说明

本数据结构操作系统使用Python3编写,使用时需安装python3环境,以及所需要使用到的库,库的安装使用python的pip工具使用命令行(cmd/bash)切换至程序目录,然后输入pip install -r requirements.txt本程序在编写是没有写异常,所以当数据库配置不当或者其他问题是,请自行搜索出现的错误,测试运行程序使用的是win10 1803系统,并未对UNIX系统进行适配,在读代码时请参照源代码文件,由于Python讲究缩进,所以本文后的代码只作为功能参考

二、数据库设计

2.1 概念结构设计

2.1.1 E-R图

2.2 数据库设计

2.2.1 模式设计

数据库设计模式采用的是主从模式,主从模式,是数据库设计模式中最常见,也是日常设计工作中用的最多的一种模式,他描述了两个表之间的主从关系,是典型的一对多关系。

对象的个数较多且不固定;各个对象之间的属性几乎没有差异;对象的属性在数据库设计阶段能够完全确定;各个对象没有独立的业务处理需求,此时用“主从模式”。将各个对象设计为“从表”的记录,与“主表”对象建立一对多的关系。

在本数据库应用系统中,建立了四个主从模式的表,他们分别是,学生信息表,账户信息表,借阅记录表以及图书信息表,四个表之间中,学生信息表,账户信息表以及借阅记录表通过bsno/sno字段进行关联,图书信息表以及借阅记录表通过图书书籍名进行关联其中学生表与账户信息表中学生表为主表,账户信息表为从表,而在图书信息表与借阅记录表中,图书记录表为主表,借阅记录表为从表。操作借阅记录表的同时会影响图书信息表的拥有书籍书字段的值,创建账号的同时也会关联学生信息

2.2.2 数据库表结构

学生信息表(students)

学生信息包括真实姓名,性别学号,电话号码,专业以及班级

字段名 字段描述 字段类型
sname 学生姓名 varchar(2000)
sno 学号 varchar(2000)
sex 性别 varchar(100)
telnum 电话号码 varchar(50)
major 专业 varchar(2000)
class 班级 varchar(1000)

账户信息(admin)

账户信息包括账户名,账户密码,以及账户角色

字段名 字段描述 字段类型
account 账户名 varchar(200)
pwd 密码 varchar(200)
role 角色 varchar(200)
sno 学号/工号 varchar(200)

书籍信息(books)

书籍信息包括书名,书的作者,住的编号,书的价格以及拥有的数量

字段名 字段描述 字段类型
bname 书籍名 varchar(2000)
author 书籍作者 varchar(2000)
bnum 书籍编号 varchar(2000)
bprices 书记价格 varchar(2000)
had 拥有数量 varchar(2000)

借阅记录(logs)

借阅记录包括借阅书籍的书名,借阅者的学号,借阅时间,借阅时长,借阅状态

字段名 字段描述 字段类型
bname 借阅的书籍名 varchar(200)
bsno 借阅者的学号/工号 varchar(200)
btime 借阅时间 date(0)
howlong 借阅时长 varchar(200)
outline 节借阅状态 varchar(200)

三、应用程序设计

3.1 系统设计

3.1.1 功能模块图

本程序包含有登陆模块,主界面显示模块,书记搜索模块,书记添加模块,还书借书模块这几个大模块,而这几个大模块还会掉用一些小模块来提高运行效率以及提高代码的可读性,其次还调用了一些系统模块来处理登陆密码隐写以及数据库连接等功能,具体情况如下图(箭头表示调用顺序,采用未加粗字体的为小模块或模块简介)

3.1.2 模块功能说明

  • 登陆模块(login):输入账号和密码,调用系统自带的隐写模块(getpass),隐写密码,输入次数超过三次退出系统,三次以内重新调用该模块,这些情况下返回数值0告诉main方法登陆状况,登陆成功则返回登陆用户名

  • 菜单显示模块(menu):此模块会调用角色获取模块,并通过调用系统的内置时间方法(time)获取当地时间并显示,并通过登陆模块(login)返回的用户名参数以及角色获取模块(get_role)返回的角色信息显示到程序主界面,读取输入的选择并返回给main函数的choice变量

  • 角色获取模块(get_role);登陆成功后会调用此模块,通过登录模块(login)中输入的用户名搜索数据库得到他的角色,并返回角色名给菜单模块(menu),通过菜单模块(menu)打印在程序主界面

  • 密码修改模块(change_pwd):只能修改当前用户的密码,先会要求输入原密码登陆才能进行修改,若错误超过三次,自动退出程序,若密码输入真确,则可修改密码,新密码要求输入两次已确认输入正确,最后将新密码存入数据库,当密码修改成功后则会要求重新登陆系统(登陆模块)

  • 图书查询模块(search_book):通过传入书的作者,名称,编号等参数,在数据库中查询相关书籍,并返回查询结果(元组),若元组长度为零,则无此书,反之则遍历元组内的元素并打印

  • 借书还书模块(broww_back_book);该模块属于总结性模块且要求用户选择是借书还是还书,然后分别调用借书模块(brrow_book)和还书模块(back_book)

  • 借书模块(brow_book):输入学生学号或者姓名通过调用学生搜索方法(search_all_student)确认是否有这个学生,若存在这个学生,则调用显示所有书籍的方法(show_all_book),然后让学生/管理员选择并输入图书的书名和编号后,通过数据库查询书名,书号,书的剩余本书,学号,通过内置的time方法获取借阅时间,然后将借阅记录存入数据库

  • 还书模块(reback_book):输入学生学号或者姓名通过调用学生搜索方法(search_all_student)确认是否有这个学生,若存在这个学生,则调用显示所有书籍的方法(reback_book),通过读取数据库中的log表获取这个学生所借阅的书籍并将编号存入book字典中,让用户选择归还那本书,用户归还后log表中的outline字段会显示已归还,books表中该书的had字段中书的数目加1

  • 书籍添加/删除模块(add_del_book):该模块属于总结性模块且要求用户选择是加书还是删书,然后分别调用添加书籍模块(add_book)和删除书籍模块(del_book),此模块只有在登录用户角色为管理员时才会在菜单方法(menu)中显示

  • 添加书籍模块(add_book):用户输入图书的相关信息(书名,编号,作者,价格,拥有数量)后,打印在屏幕上,当用户确认无误后输入y确认,图书信息将会存入数据库中的books表中

  • 添加书籍模块(add_book):通过调用书记搜索(search_book)方法获取用户输入的要删除图书的相关信息并显示,若搜索没有所输入的书籍则返回没有相关书籍的提示,并返回上一级菜单,若搜索到相关书籍,通过输入书记的具体名字以及编号删除该书籍在数据库books表中的记录

3.2 系统实现

3.2.1 界面设计

登陆界面

主界面

图书查询界面

密码修改界面

书籍添加和删除界面

图书借阅归还界面

3.2.2 程序流程图

3.2.3 代码及其注释

  1. #coding:utf-8
  2. import pymysql
  3. import string
  4. import getpass
  5. import os
  6. import time
  7. from datetime import date
  8. class book(object):
  9. name = None
  10. author = None
  11. id = None
  12. price = 0.0
  13. had = 0
  14. class student(object):
  15. name = None
  16. sno = None
  17. sex = None
  18. tel = None
  19. major = None
  20. classes = None
  21. def login():
  22. os.system('cls')
  23. db = pymysql.connect(host='localhost',
  24. port=3306,
  25. user='root',
  26. passwd='weiruyi123',
  27. db='libman',
  28. charset = 'utf8'
  29. )
  30. cu = db.cursor()
  31. uname = str(input("请输入用户名:"))
  32. pwd = str(getpass.getpass("请输入密码:"))
  33. r = cu.execute('select account from admin where account = %s',(uname))
  34. if r == 1:
  35. re = cu.execute('select pwd from admin where account = %s',(uname))
  36. upwd = cu.fetchmany()[0][0]
  37. if pwd == upwd:
  38. os.system('cls')
  39. print('登陆成功^_^')
  40. db.close()
  41. time.sleep(1)
  42. return uname
  43. else:
  44. os.system('cls')
  45. print('用户名或密码错误。。。。')
  46. time.sleep(1)
  47. return 0
  48. else:
  49. os.system('cls')
  50. print("用户名或密码错误。。。。")
  51. time.sleep(1)
  52. return 0
  53. def add_admin():
  54. account = input('输入新用户名:')
  55. pwd = input('输入新用户名的密码:')
  56. db = pymysql.connect(host='localhost',
  57. port=3306,
  58. user='root',
  59. passwd='weiruyi123',
  60. db='libman',
  61. charset = 'utf8'
  62. )
  63. cu = db.cursor()
  64. r = cu.execute('select account from admin where account = %s', (account))
  65. if r == 0:
  66. cu.execute("insert into admin(account,pwd) values(%s,%s)", (account,pwd))
  67. print('添加用户' + account + '成功')
  68. db.commit()
  69. cu.close()
  70. db.close()
  71. time.sleep(1)
  72. else:
  73. print("用户名已存在。。")
  74. db.close()
  75. time.sleep(1)
  76. def search_book(bname):
  77. db = pymysql.connect(host='localhost',
  78. port=3306,
  79. user='root',
  80. passwd='weiruyi123',
  81. db='libman',
  82. charset='utf8'
  83. )
  84. cu = db.cursor()
  85. cu.execute("select * from books where bname LIKE '%{}%' or author LIKE '%{}%' or bnum like '{}'".format(bname,bname,bname))
  86. return cu.fetchall()
  87. def search_student(sname):
  88. db = pymysql.connect(host='localhost',
  89. port=3306,
  90. user='root',
  91. passwd='weiruyi123',
  92. db='libman',
  93. charset = 'utf8'
  94. )
  95. cu = db.cursor()
  96. cu.execute("select * from students where sname = '{}' or sno = '{}'".format(sname,sname))
  97. return cu.fetchall()
  98. def add_del_book():
  99. print('\t\t\t\t\t 1.添加书籍')
  100. print('\t\t\t\t\t 2.删除书籍')
  101. print('\t\t\t\t\t 3.返回上一页')
  102. choice = str(input("选择操作:"))
  103. if choice == '1':
  104. add_book()
  105. elif choice == '2':
  106. del_book()
  107. elif choice == '3':
  108. return 0
  109. else:
  110. os.system('cls')
  111. print('输入的选项有误,请重新输入')
  112. time.sleep(1)
  113. os.system('cls')
  114. add_del_book()
  115. def add_book():
  116. os.system('cls')
  117. books = book()
  118. books.name = str(input('书籍名称:'))
  119. books.author = str(input('书籍作者:'))
  120. books.id = str(input('书籍编号:'))
  121. books.price = str(input('书籍价格:'))
  122. books.had = int(input('书籍本书:'))
  123. db = pymysql.connect(host='localhost',
  124. port=3306,
  125. user='root',
  126. passwd='weiruyi123',
  127. db='libman',
  128. charset = 'utf8'
  129. )
  130. cu = db.cursor()
  131. if len(search_book(books.name)) == 0:
  132. cu.execute('insert into books(bname,author,bnum,bprices,had) values(%s,%s,%s,%s,%s)',('《' + books.name + '》',books.author,books.id,books.price + '元',str(books.had) + '本'))
  133. print("书名:" + books.name + "\n作者:" + books.author + "\n编号:" + books.id + "\n价格:" + books.price + "\n剩余本书:" + str(books.had) + "\n")
  134. ans = input('\n确认无误(y/n):')
  135. if ans == 'y' or ans == 'Y':
  136. db.commit()
  137. cu.close()
  138. db.close()
  139. print('\n录入成功!!!')
  140. os.system('pause')
  141. else:
  142. os.system('cls')
  143. add_del_book()
  144. else:
  145. print("\n书籍已存在....")
  146. time.sleep(1)
  147. os.system('cls')
  148. add_del_book()
  149. def show_all_book():
  150. os.system('cls')
  151. db = pymysql.connect(host='localhost',
  152. port=3306,
  153. user='root',
  154. passwd='weiruyi123',
  155. db='libman',
  156. charset='utf8'
  157. )
  158. cu = db.cursor()
  159. cu.execute('select * from books')
  160. for i in cu.fetchall():
  161. print("书名:" + i[0] + "\n作者:" + i[1] + "\n编号:" + i[2] + "\n价格:" + str(i[3]) + "\n剩余本书:" + str(i[4]) + "\n")
  162. def del_book():
  163. db = pymysql.connect(host='localhost',
  164. port=3306,
  165. user='root',
  166. passwd='weiruyi123',
  167. db='libman',
  168. charset = 'utf8'
  169. )
  170. cu = db.cursor()
  171. show_all_book()
  172. books = str(input('输入你想删除的书的书名:'))
  173. re = search_book(books)
  174. if len(re) != 0:
  175. os.system('cls')
  176. for i in re:
  177. print("书名:" + i[0] + "\n作者:" + i[1] + "\n编号:" + i[2] + "\n价格:" + str(i[3]) + "\n剩余本书:" + str(i[4]) + "\n")
  178. ans = input('\n确认删除(y/n):')
  179. if ans == 'y' or ans == 'Y':
  180. cu.execute("delete from books where bname like '《{}》'".format(books))
  181. db.commit()
  182. cu.close()
  183. db.close()
  184. print('\n删除成功!!!')
  185. os.system('pause')
  186. else:
  187. print('\n没有找到所输入的书籍。。。\n')
  188. time.sleep(1)
  189. os.system('pause')
  190. def broww_back_book():
  191. print('\t\t\t\t\t 1.借阅书籍')
  192. print('\t\t\t\t\t 2.归还书籍')
  193. print('\t\t\t\t\t 3.返回上一页')
  194. choice = str(input("选择操作:"))
  195. if choice == '1':
  196. brow_book()
  197. elif choice == '2':
  198. reback_book()
  199. elif choice == '3':
  200. return 0
  201. else:
  202. os.system('cls')
  203. print('输入的选项有误,请重新输入')
  204. time.sleep(1)
  205. os.system('cls')
  206. broww_back_book()
  207. def brow_book():
  208. student = str(input("输入学生的学号或姓名:"))
  209. sre = search_student(student)
  210. if len(sre) != 0:
  211. show_all_book()
  212. books = input('输入你想借阅的书籍的书名或编号:')
  213. bre = search_book(books)
  214. db = pymysql.connect(host='localhost',
  215. port=3306,
  216. user='root',
  217. passwd='weiruyi123',
  218. db='libman',
  219. charset = 'utf8'
  220. )
  221. cu = db.cursor()
  222. if len(bre) != 0:
  223. os.system('cls')
  224. if int(bre[0][4][:-1]) != 0:
  225. for i in bre:
  226. print("书名:" + i[0] + "\n作者:" + i[1] + "\n编号:" + i[2] + "\n价格:" + str(i[3]) + "\n剩余本书:" + str(i[4]) + "\n")
  227. ans = input('\n确认借阅(y/n):')
  228. if ans == 'y' or ans == 'Y':
  229. while True:
  230. days = input("输入借阅天数(小于30天):")
  231. if days.isdigit() or (days <= 30 and days > 0):
  232. break
  233. else:
  234. print("输入天数不符合要求...")
  235. had = int(bre[0][4][:-1])
  236. bname = str(bre[0][0])
  237. bsno = str(sre[0][1])
  238. sname = str(sre[0][0])
  239. times = date.today()
  240. btime = times
  241. outline = 0
  242. cu.execute('insert into logs(bname,bsno,btime,howlong,outline) values (%s,%s,%s,%s,%s)',(bname,bsno,str(times),str(days) + '天',str(outline) + '天'))
  243. cu.execute("update books set had = '{}' where bname = '{}'".format(str(had - 1)+'本',bname))
  244. db.commit()
  245. cu.close()
  246. db.close()
  247. print('\n借阅成功!!!')
  248. os.system('pause')
  249. else:
  250. os.system('cls')
  251. print('\t\t\t\t\t图书借阅/归还')
  252. broww_back_book()
  253. else:
  254. print("所选书籍已没有存库。。。抱歉。")
  255. os.system('cls')
  256. print('\t\t\t\t\t图书借阅/归还')
  257. broww_back_book()
  258. else:
  259. print('\n没有找到所输入的书籍。。。\n')
  260. time.sleep(1)
  261. os.system('pause')
  262. os.system('cls')
  263. print('\t\t\t\t\t图书借阅/归还')
  264. broww_back_book()
  265. else:
  266. print('\n没有找到输入的学生。。。\n')
  267. time.sleep(1)
  268. os.system('pause')
  269. os.system('cls')
  270. print('\t\t\t\t\t图书借阅/归还')
  271. broww_back_book()
  272. def show_stu_logs(sno):
  273. db = pymysql.connect(host='localhost',
  274. port=3306,
  275. user='root',
  276. passwd='weiruyi123',
  277. db='libman',
  278. charset = 'utf8'
  279. )
  280. cu = db.cursor()
  281. cu.execute("select * from logs where bsno = '{}'".format(sno))
  282. return cu.fetchall()
  283. def reback_book():
  284. os.system('cls')
  285. student = str(input("输入学生的学号或姓名:"))
  286. sre = search_student(student)
  287. books = []
  288. if len(sre) != 0:
  289. bname = sre[0][0]
  290. bsno = sre[0][1]
  291. logs = show_stu_logs(bsno)
  292. db = pymysql.connect(host='localhost',
  293. port=3306,
  294. user='root',
  295. passwd='weiruyi123',
  296. db='libman',
  297. charset = 'utf8'
  298. )
  299. cu = db.cursor()
  300. os.system('cls')
  301. for log in logs:
  302. cu.execute("select bnum from books where bname = '{}'".format(log[0]))
  303. print(cu.fetchall())
  304. print("借阅者:{}\n学号:{}\n借阅书籍:{}\n借阅时间:{}\n借阅时长:{}\n借阅状态:{}\n".format(bname,bsno,log[0],log[2],log[3],log[4]))
  305. books.append(log[0])
  306. os.system('pause')
  307. book = input('输入要归还的书的书名或编号:')
  308. cu.execute("select bname from books where bname = '{}' or bnum = '{}' or bname like '{}'".format(book,book,book))
  309. print(cu.fetchall())
  310. os.system('pause')
  311. if book in books:
  312. cu.execute("update logs set outline = '已归还' where bname")
  313. else:
  314. pass
  315. else:
  316. os.system('cls')
  317. print('输入的学生信息有误。。。')
  318. os.system('pause')
  319. os.system('cls')
  320. broww_back_book()
  321. def change_pwd(a):
  322. i = 0
  323. db = pymysql.connect(host='localhost',
  324. port=3306,
  325. user='root',
  326. passwd='weiruyi123',
  327. db='libman'
  328. )
  329. cu = db.cursor()
  330. cu.execute("select pwd from admin where account = '{}'".format(a))
  331. oldpwd = cu.fetchall()
  332. while i<3:
  333. pwd = str(getpass.getpass("请输入用户{}的密码:".format(a)))
  334. if pwd == oldpwd[0][0]:
  335. os.system('cls')
  336. while True:
  337. pwd = str(getpass.getpass("请输入用户{}的新密码:".format(a)))
  338. pwd1 = str(getpass.getpass("请再次输入用户{}的新密码:".format(a)))
  339. if pwd == pwd1:
  340. cu.execute("update admin set pwd = '{}' where account = '{}'".format(pwd,a))
  341. db.commit()
  342. cu.close()
  343. db.close()
  344. os.system('cls')
  345. print('管理员{}密码修改成功。。请重新登陆。'.format(a))
  346. os.system('pause')
  347. os.system('cls')
  348. login()
  349. break
  350. else:
  351. os.system('cls')
  352. print("两次输入的密码不一致,请重新输入。。。")
  353. os.system('pause')
  354. os.system('cls')
  355. break
  356. else:
  357. os.system('cls')
  358. print("输入管理员{}的密码错误。。".format(a))
  359. os.system('pause')
  360. os.system('cls')
  361. i += 1
  362. if i == 3:
  363. os.system('cls')
  364. print("多次错误。。。退出。。")
  365. os.system('pause')
  366. os._exit(0)
  367. def menu(role):
  368. print("\t\t---------------------图书管理系统---------------------")
  369. print("\t\t\t\t by .adel & 2316")
  370. print('\t\t\t\t '+ str(date.today()))
  371. if role != 'student':
  372. print('\t\t\t\t 1.修改管理员密码') #增
  373. print('\t\t\t\t 2.图书查询') #查
  374. print('\t\t\t\t 3.添加/删除 书籍') #增,删
  375. print('\t\t\t\t 4.图书借阅/归还') #增,改
  376. print('\t\t\t\t 5.退出')
  377. choice = input('请选择:')
  378. return choice
  379. else:
  380. print('\t\t\t\t 1.修改密码')
  381. print('\t\t\t\t 2.图书查询')
  382. print('\t\t\t\t 3.图书借阅/归还')
  383. print('\t\t\t\t 4.退出')
  384. choice = input('请选择:')
  385. if choice == '4':
  386. choice = '5'
  387. if choice == '3':
  388. choice = '4'
  389. return choice
  390. def get_role(name):
  391. db = pymysql.connect(host='localhost',
  392. port=3306,
  393. user='root',
  394. passwd='weiruyi123',
  395. db='libman',
  396. charset='utf8'
  397. )
  398. cu = db.cursor()
  399. cu.execute("select role from admin where account = '{}'".format(name))
  400. return cu.fetchall()[0][0]
  401. i = 0
  402. while i < 3:
  403. a = login()
  404. if type(a) == str:
  405. role = get_role(a)
  406. break
  407. else:
  408. i += 1
  409. if i == 3:
  410. os.system('cls')
  411. print('不知道密码就别猜啦。。。-_-')
  412. os._exit(0)
  413. os.system('cls')
  414. while True:
  415. print('当前登录用户:{}'.format(a))
  416. print('身份:{}'.format(role))
  417. choice = menu(role)
  418. if choice=='1':
  419. os.system('cls')
  420. print('\t\t\t\t\t管理员密码修改')
  421. change_pwd(a)
  422. os.system('cls')
  423. elif choice =='2':
  424. os.system('cls')
  425. print('\t\t\t\t\t图书查询')
  426. bname = input('输入书籍名称或者作者:')
  427. result = search_book(bname)
  428. if len(result) != 0:
  429. os.system('cls')
  430. for i in result:
  431. print("书名:" + i[0] + "\n作者:" + i[1] + "\n编号:" + i[2] + "\n价格:" + str(i[3]) + "\n剩余本书:" + str(i[4]) + "\n")
  432. os.system('pause')
  433. else:
  434. os.system('cls')
  435. print('没有相关的书籍。。。')
  436. time.sleep(1)
  437. os.system('cls')
  438. elif choice =='3':
  439. if role == 'student':
  440. print('输入的选项无效,请重新输入。。。')
  441. time.sleep(1)
  442. os.system('cls')
  443. continue
  444. os.system('cls')
  445. print('\t\t\t\t\t添加/删除 书籍')
  446. add_del_book()
  447. os.system('cls')
  448. elif choice =='4':
  449. os.system('cls')
  450. print('\t\t\t\t\t图书借阅/归还')
  451. broww_back_book()
  452. os.system('cls')
  453. elif choice =='5':
  454. os.system('cls')
  455. print("正在退出。。。。")
  456. time.sleep(1)
  457. os.system('cls')
  458. break
  459. else:
  460. print('输入的选项无效,请重新输入。。。')
  461. time.sleep(1)
  462. os.system('cls')
  463. os.system('exit')

四、程序小结

通过此次的课程设计,对于数据库与程序之间的结合与操作有了更深层次的了解和应用,自己也在此过程中重新复习了Python语言,对于一些Python的模块运用也更加的熟悉,但美中不足的是由于后期代码已经完成了很多,当时没有想到加图形界面,导致后期的话很麻烦,所以放弃了做GUI的想法,这是最遗憾的,还有就是代码没有进行必要的精简,没有进行审计,而且在数据库读取写入以及文件的操作时也没有进行抛异常操作,若真的是做投入市场的产品,这写对于用户是十分的不友好的,在今后我会改进。

上传的附件 cloud_download 基于Python的图书馆后台管理系统.7z ( 429.95kb, 116次下载 )
error_outline 下载需要5点积分

发送私信

你错失了夏花绚烂,必将会走进秋叶静羌

6
文章数
6
评论数
eject