
1.5 主窗体模块设计

视频讲解
1.5.1 主窗体模块概述
系统主程序界面是应用程序提供给用户访问其他功能模块的平台,根据实际需要,图书管理系统的主界面采用了传统的“数字选择功能”风格。输入数字1进入到添加新书模块,输入数字2进入到浏览全部模块,输入数字3进入到删除图书模块。图书管理系统的主界面如图1.2所示。
1.5.2 主窗体模块技术分析
要实现图书管理系统的功能,需要对引用库函数添加头文件引用。头文件引用和宏定义的代码如下:
#include <iostream> #include <iomanip> #include <stdlib.h> #include <conio.h> #include <string.h> #include <fstream> #include "Book.h"
#define CMD_COLS 80 #define CMD_LINES 25 using namespace std;
除主函数外,系统自定义了许多函数,主要函数及功能如下。
void SetScreenGrid():设置屏幕显示的行数和列数。
void ClearScreen():清除屏幕信息。
void SetSysCaption(const char *pText):设置窗体标题栏。
void ShowWelcome():显示欢迎信息。
void ShowRootMenu():显示开始菜单。
void WaitView(int iCurPage):浏览数据时等待用户操作。
void WaitUser():等待用户操作。
void GuideInput():使用向导添加图书信息。
int GetSelect():获得用户菜单选择。
long GetFileLength(ifstream & ifs):获取文件长度。
void ViewData(int iSelPage):浏览所有图书记录。
void DeleteBookFromFile():在文件中产生图书信息。
void mainloop():主循环。
1.5.3 主窗体模块实现过程
图书管理系统的主窗体设计实现过程如下。
(1)在控制台中输入mode命令可以设置控制显示信息的行数、列数和背景颜色等信息。SetScreenGrid函数主要通过system函数来执行mode命令,CMD_COLS和CMD_LINES是宏定义中的值。

(2)SetSysCaption函数主要完成在控制台的标题栏上显示Sample信息。控制台的标题栏信息可以使用title命令来设置,函数中使用system函数来执行title命令。

(3)ClearScreen函数主要通过system函数来执行cls命令,完成控制台屏幕信息的清除。

(4)SetSysCaption函数共有两个版本,这是SetSysCaption函数的另一个版本,主要实现在控制台的标题栏上显示指定字符。

(5)ShowWelcome函数在屏幕上显示“图书管理系统”字样的欢迎信息,“图书管理系统”字样应尽量显示在屏幕的中央位置。

(6)ShowRootMenu函数主要显示系统的主菜单,系统中有3个菜单选项,分别是添加新书、浏览全部和删除图书。3个菜单选项是进入系统3个模块的入口。

(7)WaitUser函数主要负责当程序进入某一模块后,等待用户进行处理。用户可以选择返回主菜单,也可以直接退出系统。

(8)main函数是程序的入口,主要调用了SetScreenGrid、SetSysCaption和mainloop 3个函数,其中,mainloop函数是主函数,负责模块执行的调度,主要代码如下:

(9)GetSelect函数主要负责获取用户在菜单中的选择。

其他函数都应用在添加新书模块、浏览全部模块和删除图书模块中,相关内容将在具体模块中讲解。