Разработка информационно-поисковой системы, страница 5

При написании данной программы были использованы разработки фирмы «Microsoft» в области создания среды программирования– MS Visual Studio 2003.

Написанная программа соответствует индивидуальному заданию.


Литература

 


1.  Ульман Дж., Уидом Дж., Гарсия-Молина Г. “Системы баз данных – полный курс”,Вильямс 2004

2.  Рихтер Дж. “Создание эффективных Win32-приложений с учетом специфики 64-разрядной версии Windows”, Питер 2004


Приложение А – Листинги программ

Файл core\main.c :

#include "main.h"

HINSTANCE hInstance;

#if defined STATIC

int APIENTRY WinMain(HINSTANCE hInstance,

                     HINSTANCE hPrevInstance,

                     LPTSTR    lpCmdLine,

                     int       nCmdShow)

#else

void main()

#endif

{

      MSG msg;

      msg.wParam = 0;

      if (InitInstance() == 1)

      {

            if (db_init() == 1 && InitGUI() == 1)

            {    

                  while (GetMessage (&msg, NULL, 0, 0))

                  if (!TranslateMDISysAccel (hMDIClientWnd, &msg) &&

                        !TranslateAccelerator (hMainWnd, hAccel, &msg))

                  {

                        TranslateMessage (&msg);

                        DispatchMessage (&msg);

                  }

                  db_close();

            }

      }

      ExitProcess ((UINT)msg.wParam);

}

Файл core\main.h :

#include "..\GUI\rsrc\resource.h"

#include <windows.h>

#include <commctrl.h>

#include <stdio.h>

#include <stdlib.h>

/* -= CORE =- */

#include "global.h"

/* -= GUI =- */

#include "..\GUI\gui_global.h"

#include "..\GUI\table.h"

/* -= DB =- */

#include "..\..\SQLite3\sqlite3.h"

#include "..\DB\db_global.h"

Файл core\init.c :

#include "main.h"

HANDLE hHeap;

TCHAR path[MAX_PATH];

/* инициализация приложения */

int InitInstance()

{

      hInstance = GetModuleHandle(0);

      hHeap = GetProcessHeap();

      GetModuleFileName (0, path, sizeof(path));

      int i = lstrlen(path);

      while (i > 0 && path[i] != '\\') i--;

      path[i+1] = '\0';

      return 1;

}

Файл core\global.h :

extern HINSTANCE hInstance;

extern HANDLE hHeap;

/* переменная для хранения имени директории */

extern TCHAR path[MAX_PATH];

/* forward declaration */

int InitInstance();

Файл db\db_main.c :

#include "..\CORE\main.h"

static sqlite3 * sql_db;

/* функция, вызываемая для каждого ряда в результате SQL-команды */

static int callback_proc (callback_param_t *param, int nArg, char **azArg, char **azCol)

{

      if (param)

      switch (param->mode)

      {

      case MODE_NULL:

            break;

      case MODE_LISTVIEW:           /* add items to ListView */

            add_listview_row (param->hWnd, nArg, azArg);

            break;

      case MODE_COMBOBOX:           /* add items to ComboBox */

            add_combo_item (param->hWnd, (LPSTR)azArg[1], atoi((LPSTR)azArg[0]));

            break;

      case MODE_INT:

            *(int*)param->buf = atoi(azArg[0]);

            break;

      case MODE_STRING:

            save_str((char*&)*(int*)param->buf, azArg[0]);

            break;

      case MODE_TABLES:

      {

            window[tables] = (LVWnd_t*)malloc(sizeof(LVWnd_t));

            memset(window[tables], 0, sizeof(LVWnd_t));

            save_str(window[tables]->name, azArg[1]);

            char cmd[128];

            wsprintf(cmd, "SELECT * FROM table_%02d", atoi(azArg[0]));

            window[tables]->cols = get_count(cmd+14);

            if (window[tables]->cols > 0)

            {

                  int size = window[tables]->cols*sizeof(column_t);

                  table[tables] = (column_t*) malloc (size);

                  memset(table[tables], 0, size);

                  int pos = 0;

                  callback_param_t cp = {MODE_TABLE_CONF, &pos};

                  exec_sql_cmd (cmd, &cp);

            }

            window[tables]->tid = tables++;

            break;

      }

      case MODE_TABLE_CONF:

      {