
上QQ阅读APP看书,第一时间看更新
1.7 浏览全部模块设计

视频讲解
1.7.1 浏览全部模块概述
在图书管理系统主窗体中输入数字2,则进入到浏览全部模块。该模块中可按页数显示图书记录,每页可以显示20条记录。主要实现的功能是显示所有图书的编号、图书名、ISBN编码、价格以及作者信息,记录了当前记录中书的总数量、共有多少页及当前页数,还实现了翻页及返回主菜单的功能。其运行效果如图1.8所示。

图1.8 浏览全部
1.7.2 浏览全部模块技术分析
图书管理系统中浏览全部模块主要通过定义函数ViewData来完成。在函数ViewData中直接使用文件流类打开存储图书信息的文件book.dat。
void ViewData(int iSelPage = 1)
再定义一个GetFileLength函数,用来获取文件的长度。函数需要指定一个文件流对象,然后根据文件流的tellg函数计算出文件流绑定的文件长度。计算过程是先通过tellg函数获取文件指针的位置,然后通过seekg函数将文件指针移到文件末尾,再通过tellg函数获取文件指针的位置,此时的文件指针的位置就是文件的长度,最后通过seekg函数将文件指针恢复到原来的位置。
long GetFileLength(ifstream & ifs)
1.7.3 浏览全部模块实现过程
在函数ViewData中直接使用文件流类打开存储图书信息的文件book.dat,然后根据页序号读取文件内容,因为每条图书记录的长度相同,这样就很容易计算出每条记录在文件中的位置,然后将文件指针移动到每页第一条图书记录处,顺序地从文件中读取20条记录,并将信息显示在屏幕上。其代码如下:

GetFileLength函数的代码如下:
