При написании данной программы были использованы разработки фирмы «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:
{
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.