一、题目分析

随着现在时代得发展,信息得保护与安全都极为重要,很多企业,公司,学校都采用了信息化的管理,这样能够使得管理工作方便快捷、高效。特别是图书馆的管理工作繁多,使用图书管理系统不仅可以实现信息的高效管理和共享,更能使图书管理工作更加规范化、标准化、科学化和现代化,构建该系统主要是为了方便用户使用,要求界面良好、针对性强、对系统信息的"查插删改“;能够提供良好的信息安全保护机制。

二、系统功能

包括图书的查看,添加,删除,借阅等功能,还有用户注册,用户登录,限制了每个用户只有三次输入密码的机会,三次错误后会自动离开系统

三、详细设计

系统功能包括增删改查,为了让代码更简洁将每一部分功能都用函数封装了起来,这样不仅方便修改,还能明确直到错误出现的地方。还能将代码隐藏起来在以后用户交付时暴露更少的代码。为了方便用户的使用,将常用的函数包装成主函数更方便。

四、测试

1,注册功能测试

2,登录功能测试


3,密码错误三次自动退出测试

4,查询图书功能测试

查询图书主要代码:

def checkBook(self, name):  # name是返回值for book in self.books:if book.name == name:  # 如果借阅书的名称在已有的图书中,返回书的名称,否则为空return bookelse:return None

5,删除图书功能测试
删除图书主要代码:

def deleteBook(self):a = input("请输入要删除图书的名字")b = self.checkBook(a)if b != None:self.books.remove(b)print("删除成功")else:print("查无此书,请输入正确的书籍名称")


6,添加图书功能测试

添加图书主要代码:

def addBook(self):name = input('图书名称:')self.books.append(Book(name, input('作者:'), 1, input('存储位置:')))print('图书《%s》添加成功' % name)


7,借阅图书测试

借阅图书主要代码:

def borrowBook(self):name = input('借阅图书名称: ')ret = self.checkBook(name)print(ret)if ret != None:if ret.status == 0:  # 如果书籍的状态为0,说明此书已借出print('书籍《%s》已经借出' % name)else:ret.status = 0  ##借出后显示书籍的状态为0print('书籍《%s》借阅成功' % name)else:print('书籍《%s》不存在' % name)


8,归还图书测试

归还图书主要代码:

def returnBook(self):name = input('归还图书名称:')ret = self.checkBook(name)if ret != None:if ret.status == 0:ret.status = 1print('书籍《%s》归还成功' % name)print(ret)else:print('书籍《%s》未借出' % name)else:print('书籍《%s》不存在' % name)

9,退出系统

五、遇到的问题及解决办法

其中遇到最多的问题就是语法问题,很多地方都是语法用错导致的错误,就例如删除列表中的元素,虽然有几种方法但是最适合的还是remove方法,看了别人使用的方法后,才明白把函数封装成主函数就不用一直使用循环占用资源了,不仅有更快的速度,而且代码看起来更简洁,使用起来也更方便。有很多不会的语法,以及进程运行中爆出的错误,都是直接在网络上寻找答案,很多我的问题都早就有人遇见过了,通过借鉴别人的经验,就能够解决这样的问题。

最后附上全部代码:

class User:def __init__(self):self.usr_info = {"me": "123456", "my": "123456"}def register(self):       # 定义注册方法print("<注册模式>".center(50, "*"))usr = input("请输入用户名:")pwd = input("请输入密码:")if usr in self.usr_info.keys():print("该用户已被注册,请重新输入新用户名!")self.register()else:self.usr_info[usr] = pwdprint("注册成功,您的登录用户名是:%s 密码是:%s," % (usr, pwd))x = input("是否使用新用户名密码登录?登录请输入1,退出请输入2:")if x == "1":self.login()else:print("退出系统,欢迎下次使用。")returndef login(self):       # 定义登录方法print("登录系统 ".center(50, "*"))for i in range(3):usr = input("请输入用户名:")pwd = input("请输入密码:")if usr in self.usr_info.keys():if pwd == self.usr_info[usr]:class Book(object):def __init__(self, name, author, status, bookindex):self.name = nameself.author = authorself.status = statusself.bookindex = bookindexdef __str__(self):if self.status == 1:stats = '未借出'elif self.status == 0:stats = '已借出'else:stats = '状态异常'return '书名: 《%s》 作者: %s 状态: <%s> 位置: %s' \% (self.name, self.author, stats, self.bookindex)class BookManage(object):books = []def start(self):self.books.append(Book('python', 'guido', 1, 'ISO9001'))self.books.append(Book('c', '张三', 1, 'NFS8102'))self.books.append(Book('java', 'westos', 1, 'PKA7844'))# 0:借出 1:存在# python 1# c 1# java 1def Menu(self):self.start()while True:print("""图书管理系统1.查询图书2.增加图书3.借阅图书4.归还图书5.退出系统6.删除书籍""")choice = input('请选择:')if choice == '1':self.showAllBook()elif choice == '2':self.addBook()elif choice == '3':self.borrowBook()elif choice == '4':self.returnBook()elif choice == '5':print('欢迎下次使用...')exit()elif choice == '6':self.deleteBook()else:print('请输入正确选择')continuedef showAllBook(self):for book in self.books:print(book)def addBook(self):name = input('图书名称:')self.books.append(Book(name, input('作者:'), 1, input('存储位置:')))print('图书《%s》添加成功' % name)def checkBook(self, name):  # name是返回值for book in self.books:if book.name == name:  # 如果借阅书的名称在已有的图书中,返回书的名称,否则为空return bookelse:return Nonedef borrowBook(self):name = input('借阅图书名称: ')ret = self.checkBook(name)print(ret)if ret != None:if ret.status == 0:  # 如果书籍的状态为0,说明此书已借出print('书籍《%s》已经借出' % name)else:ret.status = 0  ##借出后显示书籍的状态为0print('书籍《%s》借阅成功' % name)else:print('书籍《%s》不存在' % name)def returnBook(self):name = input('归还图书名称:')ret = self.checkBook(name)if ret != None:if ret.status == 0:ret.status = 1print('书籍《%s》归还成功' % name)print(ret)else:print('书籍《%s》未借出' % name)else:print('书籍《%s》不存在' % name)def deleteBook(self):a = input("请输入要删除图书的名字")b = self.checkBook(a)if b != None:self.books.remove(b)print("删除成功")else:print("查无此书,请输入正确的书籍名称")manager = BookManage()manager.Menu()print("登录成功!")breakelse:print("密码输入错误,请重新输入!")else:print("用户名错误,请重新输入!")print("这是第%s次输入错误,还剩%s次机会。" % (i + 1, 2 - i))else:print("超过最大验证次数,登录失败!")def main():             # 定义主函数user = User()     # 创建user对象print("欢迎使用图书管理系统".center(100, "-"))print("注册请输入0,登录请输入1,退出请输入2".center(95, "-"))select = input("请选择你要进行的操作:")if select == "0":user.register()     # 调用注册成员方法elif select == "1":user.login()elif select == "2":print("退出系统!欢迎再次使用。")returnelse:print("输入有误,请重新输入!")main()

以上这些就是为了应付老师写的python结课报告,质量不太行,主要是为了以后能给自己留一个回忆的地方,如果有能用的上的但取无妨。

python结课报告相关推荐

  1. python结课报告_20193111 2019-2020《Python程序设计》实验4报告

    课程:<Python程序设计> 班级:1931 姓名:程心雨 学号:20193111 实验教师:王志强 实验日期:2020年4月12日 必修/选修: 公选课 1.实验内容 Python综合 ...

  2. python结课报告_Python数据分析课程到底是学什么内容的?

    2020年12月4日,博为峰旗下学掌门召开了<Python 商业(大)数据分析师>新课程发布会.据悉,此次发布会上发布的<Python 商业(大)数据分析师>课程是在原< ...

  3. JavaScript结课报告

    JavaScript结课报告 1 系统分析与设计 1.1需求分析 因为随着社会发展,网速的提升,互联网已经于大家的生活密切相关了.作为一代与时俱进的青年,我们阅读书籍的方式已经不局限于厚重的纸质版书籍 ...

  4. 基于 Python 的开源Web开发框架django/哈工大学生成绩管理系统html实现/python结课大作业

    python结课大作业 (一)django安装 (1)django是什么 (2)基于django的网站 (3)django的设计理念 (4)django安装 (二)数据库安装 (1)数据库(DataB ...

  5. 南开大学工程训练结课报告

    工程训练结课报告 一.焊电路 1.什么是虚焊?虚焊有什么危害? 答:虚焊是指焊锡过少或未很好焊接. 虚焊会导致电路未连接甚至焊锡脱落. 2.通过工程训练课的练习,你认为焊好电路有那些要领? 答:1)要 ...

  6. 计算机辅助设计结课,计算机辅助设计结课报告

    计算机辅助设计结课报告 计算机辅助设计结课报告 专业班级:通信1102班 姓 名:王星 学 号:311109020222 2014.6.26 计算机辅助设计结课报告 计算机辅助设计是利用计算机及其图形 ...

  7. 复变函数结课报告——狄利克雷积分的几种证明

    狄利克雷积分 ∫ 0 + ∞ sin ⁡ x x d x = π 2 \int_{0}^{+\infty}\frac{\sin x}{x}\mathrm{d}x=\frac{\pi}{2} ∫0+∞​ ...

  8. 计算机信息技术导论课程总结,信息技术导论结课报告.docx

    信息技术导论结课报告 信息技术导论结课报告--谈对计算机的认识信息技术导论这门课,改变了我以往对计算机的认识,让我明白了到底什么是计算机.计算机的发展历程.计算机在生活中的应用.对人们生活产生的重要影 ...

  9. 新生研讨课结课报告--图像处理

    新生研讨课结课报告 #新生研讨课结课报告# 学号:2017200504032 姓名:张清延 ##一,选择讨论及探索方向: 我认为图像处理作为一个计算机领域的重要分支, 首先具有很大研究价值,图像是人类 ...

最新文章

  1. 技术图文:如何解决 DAO 抛出的 80040154 错误?
  2. vsftp和nfs服务
  3. [hdu1847]博弈,推理
  4. 算法之矩阵计算斐波那契数列
  5. 【字符编码】彻底理解字符编码
  6. realtek网卡mac硬改工具_浅谈设备异常、手机硬改参数
  7. pandas 处理 csv
  8. jquery 学习笔记(二)
  9. 模组厂商对话 MTK:智能音箱市场谈红海还早,下一个爆品将诞生丨WARE 2018
  10. 拓端tecdat|R语言文本挖掘使用tf-idf分析NASA元数据的关键字
  11. 改版更新后的领英职场不能搜索开发客户怎么办?两种方法加一个工具解决
  12. 计算机视觉与计算机图形学
  13. vs2015安装vax助手
  14. 【软件测试管理与实践-软件质量】
  15. Memory barrier(内存屏障)
  16. 初窥Deno 1.0面纱
  17. 故障:笔记本开机时自动打开 NumLock 键
  18. 论文阅读 | Combating Adversarial Misspellings with Robust Word Recognition
  19. Pr 入门教程:如何使用项目面板?
  20. 阿里linux内核月报201412

热门文章

  1. Python协程中生成器send方法的使用
  2. 多模分频器——递减计数器设计(cadence)
  3. 【数据结构与算法】03 链表(基础知识+面试高频leetcode题目)
  4. 华为云弹性云服务器安全性能,华为云弹性云服务器成长秘籍:大话安全组
  5. RabbitMQ队列阻塞该如何处理
  6. Vue中的双击事件 @dblclick= v-on:dblclick=
  7. jq bind click dblclick
  8. 什么是可重入函数, 不可重入函数? 哪些原因导致函数不可重入?
  9. 没有没适用于工地的WiFi盒子?
  10. php二维数组 转一维,php二维数组转一维数组方法