![C++项目开发全程实录(第2版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/546/24172546/b_24172546.jpg)
上QQ阅读APP看书,第一时间看更新
1.7 浏览全部模块设计
![](https://epubservercos.yuewen.com/620C61/13043251103823906/epubprivate/OEBPS/Images/Figure-P24_9702.jpg?sign=1739238226-fN0lfDIGPqgl7izFKcCvmyGuD35KaiUQ-0-2657e9db03e43cb3bc422767ab4140a3)
视频讲解
1.7.1 浏览全部模块概述
在图书管理系统主窗体中输入数字2,则进入到浏览全部模块。该模块中可按页数显示图书记录,每页可以显示20条记录。主要实现的功能是显示所有图书的编号、图书名、ISBN编码、价格以及作者信息,记录了当前记录中书的总数量、共有多少页及当前页数,还实现了翻页及返回主菜单的功能。其运行效果如图1.8所示。
![](https://epubservercos.yuewen.com/620C61/13043251103823906/epubprivate/OEBPS/Images/Figure-P24_9690.jpg?sign=1739238226-qAXFEMfQj4RIcNSycE7NREhBpWvE4asT-0-7250c89138144b586d7625ba8c868959)
图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条记录,并将信息显示在屏幕上。其代码如下:
![](https://epubservercos.yuewen.com/620C61/13043251103823906/epubprivate/OEBPS/Images/Figure-P25_32752.jpg?sign=1739238226-8PXcp4U8g2TUJo7NypZHAEPOyZokspzz-0-ba930689939e98180d5d446583cec7c7)
GetFileLength函数的代码如下:
![](https://epubservercos.yuewen.com/620C61/13043251103823906/epubprivate/OEBPS/Images/Figure-P26_32755.jpg?sign=1739238226-9h68TY9NvrB9weyzsAlprOZ6t18VBD0d-0-3f60ec433ee1e754878e3330ade43bf6)