各位小伙伴大家好:
第二季的时候我们写过一个图书馆系统,当时的版本基本上实现了我们的目标。只是有一个缺憾,就是只要我们的程序一关闭,那么所有我们之前所输入的信息就都会消失。
有什么方法能让我们的数据在程序重启之后还能继续使用呢?
还记得上期我们分享的内容吗?
文件的操作(写入、读取)
那么我们就可以考虑,让我们的程序把所输入的图书信息写入文件中保存,然后在下次程序启动的时候再读取出来,以此来实现了一个类似数据库的功能。
要实现这个功能我们只需要再添加两个函数,一个是保存数据到文件中,一个是读取文件中的数据。
示例代码:
第70—74行是保存图书信息的功能,需要注意的是第73行,我们在将图书信息写入文件的时候,需要先将列表数据转换成字符串。
接下来第76—84行是加载或者叫提取数据的功能,需要注意的是第81行,因为我们上面保存信息时将All列表转换成了字符串,所以当我们再次操作的时候需要将字符串还原为列表,来进行图书数据的维护。
这里我们使用了eval函数,有关这个函数的使用我们这里不展开,只需要知道这个函数可以将字符串还原为列表、字典、元组就可以了。
另外这里还用到了异常的处理,原因是当我们第一次运行系统的时候,同名文件夹中并没有图书信息文件。
但如果我们使用open以读取方式打开一个不存的文件会报错,提示文件不存在,从而导致系统崩溃。这和以写入方式打开文件稍微有点区别,因为如果是以写入方式打开一个不存在文件,系统会自动创建一个文件,而不是报错崩溃。
解决的方法当然不止一种,比如我们可以在系统开始运行的时候提前新建一个文件,但是这里我们用到的是异常处理。
有关异常的处理,以后再和大家分享。
下面我们来看一下系统运行的效果:
这是第一次打开系统,所以我们输入5显示图书列表会为空。
下面我们来新增一本图书:
当我们输入完图书信息,按6键保存之后,我们程序的同级目录下就会产生一个新文件。这个文件保存的内容就是我们输入的图书信息,文件名可以自定义如:.db、.txt或.lw都可以。
下面我们来验证一下:
这次我们直接按5,正常显示了上次保存的图书信息。
基本上实现了一个较为完整的图书信息管理系统,有兴趣的小伙伴可以在这个基础上进行修改,升级,发布之后交给学校图书管理员使用。
下面是整个系统的代码截图,有兴趣的小伙伴可以自己去敲敲看,如果有什么问题也欢迎和我交流。
图中缺少的行数是空格,没有代码,请放心使用。
本期图书管理系统就为大家介绍到这里,我们下期再会。
欢迎扫描下方二维码入群和我交流
转自公众号:
高维数学