ÃÑ ÆäÀÌÁö ¼ö : 3224

Àüü ÇÔ¼ö/¿ë¾î»çÀü
Facebook Joinc ±×·ì   Joinc QA »çÀÌÆ®
ÇöÀçÀ§Ä¡ : article>file_db



joinc´Â Firefox¿Í chrome¿¡¼­ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼­´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù.
  • Àá½Ã ¿ö¹Ö¾÷°â ¸¸µé¾îº» ÇÁ·Î±×·¥ÀÌ¸ç ³ª¸§´ë·Î Âü°íÇÏ¿© µµ¿òÀÌ µÇ½ÇºÐÀÌ ÀÖÀ»±î ÇÏ¿© ¿©±â ¿Ã·Áº»´Ù.

    °£´ÜÇÏ°Ô ÆÄÀÏ¿¡ µ¥ÀÌÅ͸¦ ÀúÀå, °Ë»öÇØ¾ßÇÒ¶§ ÀÌ¿ëµÉ ¼ö ÀÖÀ»°ÍÀÌ¸ç ¹ßÀü½ÃŰ¸é ÆÄÀϱâ¹ÝÀÇ DB·Î ÃæºÐÈ÷ »ç¿ëµÉ ¼ö ÀÖÀ»°ÍÀÌ´Ù.


  • dvr.h
#ifndef H_DVR 
#define H_DVR 
 
#include <sys/types.h> 
#include <stdio.h> 
 
#define START_DATE "20030601"    // »ùÇõ¥ÀÌÅÍ »ý¼ºÀ» À§ÇÑ ½ÃÀÛ³¯Â¥ 
#define END_DATE "20040630"        // »ùÇõ¥ÀÌÅÍ »ý¼ºÀ» À§ÇÑ Á¾·á³¯Â¥ 
#define NUM_ATM 5                // ATMÀÇ ´ñ¼ö 
#define NUM_RECORD 1000            // ATMº° ÇÏ·ç Æò±Õ ·¹ÄÚµå ±â·Ï·® 
#define EVENT_TIME 86400 / NUM_RECORD    // À̺¥Æ®°¡ ¹ß»ýÇÏ´Â Æò±Õ ½Ã°£ °£°Ý 
#define DATA_DIR "LOG_FILES"    // ÆÄÀϵéÀÌ ÀúÀåµÇ´Â µð·ºÅ丮¸í 
 
#define S_atmID 2 + 1 
#define S_date 8 + 1 
#define S_time 6 + 1 
#define S_name 22 + 1 
#define S_account 15 + 1 
#define S_outPrice 15 + 1 
#define S_fileName 18 + 1            // »ý¼ºÇÏ´Â ÆÄÀÏ¸í±æÀÌ, ATMnn_yyyymmdd.dat Æ÷¸ËÀÌ´Ù 
 
class Record {                        // ÆÄÀÏ¿¡ ±â·ÏÇÒ µ¥ÀÌÅÍ ´ÜÀ§Å¬·¡½º 
    public: 
        char time[S_time];            // ÀÎÃâÀÌ ÀϾ ½Ã°¢, hhmmss Æ÷¸Ë 
        char account[S_account];    // °èÁ¹øÈ£ 
        char outPrice[S_outPrice];    // ÀÎÃâ±Ý¾× 
        char name[S_name];            // ³ìÈ­µÈ ÆÄÀÏ À̸§ 
}; 
 
class AtmRecord {    // ATMÀ¸·ÎºÎÅÍ Àü¼ÛµÇ¾î ¿À´Â µ¥ÀÌÅÍ Å¬·¡½º 
    public: 
        char atmID[S_atmID];        // ATM ¹øÈ£ 
        char date[S_date];            // ÀÎÃâÀÌ ÀϾ ³¯Â¥, yyyymmdd Æ÷¸Ë 
        Record rec; 
}; 
 
class Query {                        // °Ë»ö¿¡ ÇÊ¿äÇÑ µ¥ÀÌÅÍ Å¬·¡½º 
    public: 
        char startATM[S_atmID]; 
        char endATM[S_atmID]; 
        char startDate[S_date]; 
        char endDate[S_date]; 
        char startTime[S_time]; 
        char endTime[S_time]; 
        char account[S_account]; 
        char outPrice[S_outPrice]; 
}; 
     
class ATM {                // ATM ´ÜÀ§·Î ÆÄÀÏÀ» ¿­¾î³õ°í »ç¿ëÇϱâ À§ÇÑ Å¬·¡½º 
    public: 
        ATM(void); 
        FILE* fp; 
        char fileDate[S_date]; 
}; 
 
class DVR {                // ATMÀ¸·Î ¿À´Â µ¥ÀÌÅ͸¦ ÀúÀåÇÏ°í °Ë»öÇϴ Ŭ·¡½º 
    private: 
        ATM atm[NUM_ATM]; 
 
    public: 
        int allClose(void); 
        int insert(AtmRecord& record); 
        int search(Query& query); 
}; 
 
#endif 
 

  • dvr.cpp
#include <iostream> 
#include <stdlib.h> 
#include <errno.h> 
#include <string.h> 
#include <sys/types.h> 
#include <sys/stat.h> 
#include <sys/time.h> 
#include <unistd.h> 
#include "dvr.h" 
 
#define S_Record sizeof(Record) 
 
using namespace std; 
 
ATM :: ATM(void) { 
    fp = NULL; 
    memset(fileDate, 0x00, S_date); 
} 
 
 
int DVR :: allClose(void) {        // ¿­¾î³õ°í ¾²°í ÀÖ´Â ¸ðµç ±â·ÏÆÄÀϵéÀ» ´Ý´Â´Ù 
    int i; 
    for (i = 0; i < NUM_ATM; i++) { 
        if (atm[i].fp) { 
            if (fclose(atm[i].fp)) { 
                return(-1); 
            } else { 
                atm[i].fp = NULL; 
            } 
        } 
    } 
    return(0); 
} 
 
// ATMÀ¸·ÎºÎÅÍ Àü¼ÛµÈ µ¥ÀÌÅ͸¦ ÇØ´ç ÆÄÀÏ¿¡ ±â·ÏÇÑ´Ù. ¿À¹öÇìµå °¨¼Ò¸¦ À§ÇÏ¿© 
// ÀÌ¹Ì ¿­¾î³õ°í ÀÖ´Â °°Àº ÆÄÀÏÀÌ¸é ¹Ù·Î Ãß°¡ÇÏ°í »õ ÆÄÀÏÀÌ¸é ¿¾ÆÄÀÏ ´Ý°í »õ·Î ¸¸µç´Ù. 
// ½ÇÁ¦ Àû¿ë½Ã¿£ °Ë»ö°ú ¾²±â¸¦ µ¿½Ã¿¡ ÇØ¾ßÇÔÀ» °¨¾ÈÇØ¾ß ÇÑ´Ù 
int DVR :: insert(AtmRecord& record) { 
    char fileName[S_fileName]; 
    int num = atoi(record.atmID); 
    if (memcmp(atm[num].fileDate, record.date, S_date)) {    // ÀÛ¾÷ÁßÀÎ ÆÄÀϰú ´Ù¸£¸é 
        if (atm[num].fp != NULL) fclose(atm[num].fp);        // ¿­¸° ¿¾ ÆÄÀÏÀº ´Ý´Â´Ù 
        sprintf(fileName, "%s/ATM%s_%s.dat", DATA_DIR, record.atmID, record.date); 
        if ((atm[num].fp = fopen(fileName, "a")) == NULL) return(-1); 
        memcpy(atm[num].fileDate, record.date, S_date); 
    } 
    if (fwrite(&record.rec, 1, S_Record, atm[num].fp) < 1) return(-1); 
    return(0); 
} 
 
int DVR :: search(Query& query) {        // °Ë»öÄõ¸®¸¦ ³¯¸®°í °á°ú¸¦ º¸¿©ÁØ´Ù 
    FILE* fp; 
    char* buff; 
    struct stat file; 
    struct timeval firstTime, secondTime; 
    Record* rec; 
    char fileName[S_fileName]; 
    unsigned long int numRecord = 0; 
    int num, year, month, day, tmp_month, tmp_day, time, index, method; 
    int startATM = atoi(query.startATM); 
    int endATM = atoi(query.endATM); 
    int s_year = atoi(strndupa(query.startDate, 4)); 
    int s_month = atoi(strndupa(query.startDate + 4, 2)); 
    int s_day = atoi(strndupa(query.startDate + 6, 2)); 
    int e_year = atoi(strndupa(query.endDate, 4)); 
    int e_month = atoi(strndupa(query.endDate + 4, 2)); 
    int e_day = atoi(strndupa(query.endDate + 6, 2)); 
    if ((query.account[0] == '\0') && (query.outPrice[0] == '\0')) {    // ½Ã°£°Ë»ö¸¸ ÇÒ °æ¿ì 
        method = 0; 
    } else if (query.account[0] && query.outPrice[0]) {                    // °èÁ¤ && ±Ý¾× °Ë»öÀÎ °æ¿ì 
        method = 1; 
    } else {                                                            // °èÁ¤ || ±Ý¾× °Ë»öÀÎ °æ¿ì 
        method = -1; 
    } 
    gettimeofday(&firstTime, NULL); 
    for (year = s_year; year <= e_year; year++ ) { 
        tmp_month = (e_year > year)? 12 : e_month; 
        for (month = s_month; month <= tmp_month; month++) { 
            tmp_day = ((e_year > year) || (e_month > month))? 30 : e_day; 
            for (day = s_day; day <= tmp_day; day++) { 
                for (num = startATM; num <= endATM; num++) { 
                    sprintf(fileName, "%s/ATM%02d_%04d%02d%02d.dat", DATA_DIR, num, year, month, day); 
                    stat(fileName, &file); 
                    buff = new char[file.st_size]; 
                    // ½ÇÁ¦ »óȲ¿¡¼± ATMÀÇ Äõ¸®¸¦ ó¸®ÇÏ´Â ¿ÍÁß¿¡µµ °Ë»ö½Ã ¹®Á¦°¡ ¾ø´ÂÁö »ìÆìº¼ ÇÊ¿äÀÖÀ½ 
                    // ¶§¹®¿¡ ¿©±â¼­µµ atm[i].fp ¸¦ »ç¿ëÇÏÁö ¾Ê°í µû·Î »ç¿ëÇÔ 
                    if ((fp = fopen(fileName, "r")) == NULL) return(-1); 
                    if (fread(buff, 1, file.st_size, fp) < 1) return(-1); 
                    index = 0; 
                    // °Ë»ö ½ÃÀÛ ½Ã°¢±îÁö Æ÷ÀÎÅÍ À̵¿ 
                    while ((index < file.st_size) && (memcmp(buff + index, query.startTime, S_time) < 0)) { 
                        index += S_Record; 
                        numRecord++; 
                    } 
                    // °Ë»ö Á¾·á ½Ã°¢±îÁö À̵¿Çϸç ã´Â´Ù 
                    do { 
                        numRecord++; 
                        rec = (Record*) ((char*) buff + index); 
                        switch (method) { 
                            case 1: 
                                if (!(memcmp(rec->account, query.account, S_account) || memcmp(rec->outPrice, query.outPrice, S_outPrice))) { 
                                    printf("ATM%02d, %04d%02d%02d%s, %s, %s, %s\n", num, year, month, day, rec->time, rec->account, rec->outPrice, rec->name); 
                                } 
                                break; 
                            case 0: 
                                printf("ATM%02d, %04d%02d%02d%s, %s, %s, %s\n", num, year, month, day, rec->time, rec->account, rec->outPrice, rec->name); 
                                break; 
                            case -1: 
                                if (!(memcmp(rec->account, query.account, S_account) && memcmp(rec->outPrice, query.outPrice, S_outPrice))) { 
                                    printf("ATM%02d, %04d%02d%02d%s, %s, %s, %s\n", num, year, month, day, rec->time, rec->account, rec->outPrice, rec->name); 
                                } 
                                break; 
                        } 
                        index += S_Record; 
                    } while ((index < file.st_size) && (memcmp(buff + index, query.endTime, S_time) <= 0)); 
                    fclose(fp); 
                    delete[] buff; 
                } 
            } 
            s_day = 1; 
        } 
        s_month = 1; 
    } 
    gettimeofday(&secondTime, NULL); 
    cout << endl << "°Ë»öÇÑ ·¹ÄÚµå ¼ö : " << numRecord << endl; 
    cout << "°Ë»öÇÑ ½Ã°£ : " << (secondTime.tv_sec - firstTime.tv_sec) + (float)(secondTime.tv_usec - firstTime.tv_usec) / 1000000 << "ÃÊ" << endl;  
} 
 

  • main.cpp
/* 
 
 * Ŭ·¡½º ´ÜÀ§·Î ÆÄÀÏ¿¡ µ¥ÀÌÅ͸¦ ±â·ÏÇÏ°í °¢ ¸â¹öº°·Î °Ë»öÀ» ÇÒ ¼ö ÀÖ´Â ÇÁ·Î±×·¥ * 
                            by SaNha 2004. 04. 
 
 1. ÆÄÀÏ, µð·ºÅ丮 Á¤Ã¥  
   1) ÆÄÀϵéÀ» ÀúÀåÇÏ´Â µð·ºÅ丮¸¦ Çϳª¸¸ µÎ°í ÆÄÀϸíÀ» 'ATM¸í+³¯Â¥' ½ÄÀ¸·Î ÇÏ´Â ¹æ¹ý 
       ex) ATM01_20040423.dat 
    2) ATM¸í º°·Î µû·Î µð·ºÅ丮¸¦ µÎ°í ÇÏÀ§¿¡ '³¯Â¥' ÀÇ ÆÄÀÏÀ» µÎ´Â ¹æ¹ý 
       ex) µå¶óÀ̹ö¸í\Data\ATM01\20040423.dat 
     3) ¿©±â¿¡¼­´Â ¿¹Á¦·Î 1¹ø ¹æ¹ýÀ» ÀÌ¿ëÇϸç ATMÀº 5´ë, ÇÏ·ç¿¡ °¢ ATMº°·Î õ°³ÀÇ ·¹Äڵ尡 ÀúÀåµÈ°ÍÀ¸·Î °¡Á¤ÇÑ´Ù  
 2. ÇÏ·ç¿¡ ÀúÀåµÇ´Â ÆÄÀÏÀÇ Å©±â´Â ¾ó¸¶ ¾È µÉ°ÍÀ¸·Î ¿¹»óµÊÀ¸·Î °¢ ³¯Â¥´ÜÀ§·Î ¸Þ¸ð¸®¿¡ ¿Ã¸° »óÅ¿¡¼­ °Ë»ö 
 3. °Ë»ö½ÃÀÇ ³¯Â¥¹üÀ§¸¦ ±â¹ÝÀ¸·Î ¼øÂ÷ÀûÀ¸·Î ³¯Â¥¿Í ÀÏÄ¡ÇÏ´Â À̸§ÀÇ ÆÄÀÏÀ» Çϳª¾¿ ·ÎµùÇÏ¸ç °Ë»ö 
 4. ATM¿¡¼­ÀÇ Àü¼Ûµ¥ÀÌÅÍÁß nameÀº ·¹ÄÚµùµÈ ÆÄÀÏÀ̸§Àΰ¡? DVRÀº À̺¥Æ®½Ã µû·Î ÆÄÀÏÀ» ·¹ÄÚµùÇϴ°ÍÀÌ ¾Æ´Ï¶ó 
    24½Ã°£ °è¼Ó ·¹ÄÚµùÁßÀΰÍÀÌ ¾Æ´Ñ°¡? ±×·¸´Ù¸é name°ªÀº ·¹ÄÚµùÆÄÀϸí+À妽º °³³äÀ» °¡Á®¾ß ÇÒ °ÍÀÌ´Ù. 
    ¿©±â¼­´Â "ATM¹øÈ£_³ìÈ­µÈ ³¯Â¥_ÃÊ.rec" Æ÷¸ËÀ» »ç¿ëÇÑ´Ù (ÃÊ´Â ÇÏ·ç 86400Ãʸ¦ ±âÁØ) 
 5. ½Ã°¢ Çʵå´Â Áõ°¡ÀϰÍÀ̹ǷΠÁ¤·ÄµÈ ۰ªÀ¸·Î »ç¿ëÀÌ °¡´ÉÇÏ´Ù 
 6. ·¹Äڵ尡 °íÁ¤Å©±â°¡ ¾Æ´Ï¶ó¸é °¢ ·¹ÄÚµåÀÇ ½ÃÀÛ À妽º¸¸ µû·Î ÀúÀåÇÏ´Â ÆÄÀÏÀ» µÎ¸é µÇ¸ç °Ë»ö½Ã¿£ 
    ¹®ÀÚ¿­(strcmp)°Ë»öÀ» ÀÌ¿ëÇÏ´øÁö °¢ ÇʵåÀÇ ½ÃÀÛ À妽ºµµ ÀúÀåÇØ µÎ°í memcmp¸¦ ÀÌ¿ëÇØµµ µÉ°ÍÀÌ´Ù 
 
*/ 
 
#include <iostream> 
#include <stdlib.h> 
#include <errno.h> 
#include <string.h> 
#include <sys/stat.h> 
#include <sys/types.h> 
#include <unistd.h> 
#include <time.h> 
#include "dvr.h" 
 
using namespace std; 
 
/* »ùÇà µ¥ÀÌÅ͸¦ »ý¼ºÇÏ´Â ¸Þ¼Òµå, ÆíÀÇ»ó ¸ðµç ´ÞÀº 30ÀÏ·Î °è»êÇÑ´Ù */ 
/* ½ÇÁ¦ ATM¿¡¼­ ¹ß»ýµÇ´Â µ¥ÀÌÅÍ ¹× Àü¼Û°úÁ¤°ú À¯»çÇÏ°Ô µ¥ÀÌÅ͸¦ »ý¼º, Ãß°¡ÇÑ´Ù */ 
 
int makeRecord(DVR& dvr) { 
    AtmRecord atmRec; 
    long int seed; 
    char startDate[] = START_DATE; 
    char endDate[] = END_DATE; 
    int s_year = atoi(strndupa(startDate, 4)); 
    int s_month = atoi(strndupa(startDate + 4, 2)); 
    int s_day = atoi(strndupa(startDate + 6, 2)); 
    int e_year = atoi(strndupa(endDate, 4)); 
    int e_month = atoi(strndupa(endDate + 4, 2)); 
    int e_day = atoi(strndupa(endDate + 6, 2)); 
    int num, year, month, day, tmp_month, tmp_day, second, i; 
    div_t hour, min; 
    cout << "Å×½ºÆ®¿ë µ¥ÀÌÅ͸¦ »ý¼ºÇϰí ÀÖ½À´Ï´Ù. Àá½Ã¸¸ ±â´Ù·ÁÁֽʽÿÀ..." << endl << endl; 
    if (access(DATA_DIR, F_OK)) mkdir(DATA_DIR, 0755); 
    srandom(time(NULL)); 
    for (year = s_year; year <= e_year; year++ ) { 
        tmp_month = (e_year > year)? 12 : e_month; 
        for (month = s_month; month <= tmp_month; month++) { 
            tmp_day = ((e_year > year) || (e_month > month))? 30 : e_day; 
            for (day = s_day; day <= tmp_day; day++) { 
                // À̺¥Æ® ½Ã°£°£°ÝÀ» ·¹ÄÚµå¼ö·Î ³ª´³À¸¹Ç·Î 235959 ¸¦ ³ÑÁö ¾Êµµ·Ï -1ºÎÅÍ ½ÃÀÛ 
                second = -1;     
                for (num = 0; num < NUM_ATM; num++) { 
                    for (i = 0; i < NUM_RECORD; i++) { 
                        memset(&atmRec, 0x00, sizeof(AtmRecord)); 
                        seed = random(); 
                        second += EVENT_TIME; 
                        hour = div(second, 3600); 
                        min = div(hour.rem, 60); 
                        sprintf(atmRec.atmID, "%02d", num); 
                        sprintf(atmRec.date, "%04d%02d%02d", year, month, day); 
                        sprintf(atmRec.rec.time, "%02d%02d%02d", hour.quot, min.quot, min.rem); 
                        sprintf(atmRec.rec.account, "%d-%02d-%010ld", min.rem % 2, min.rem, seed + min.quot); 
                        sprintf(atmRec.rec.outPrice, "%ld", seed); 
                        sprintf(atmRec.rec.name, "%02d_%s_%05d.rec", num, atmRec.date, second); 
                        if (dvr.insert(atmRec) < 0) return(-1); 
                    } 
                } 
            } 
            s_day = 1; 
        } 
        s_month = 1; 
    } 
} 
 
/* ÀÚ·á°Ë»öÀ» ÇÏ´Â Æû ¸Þ¼Òµå */ 
 
int insertQuery(DVR& dvr) { 
    Query query; 
    bool gettingData; 
    char key; 
    while (true) { 
        memset(&query, 0x00, sizeof(Query)); 
        gettingData = true; 
        while (gettingData) { 
            cout << endl << "<ÀÔ·ÂÇÒ Ç׸ñÀ» ¼±ÅÃÇÏ¿© ÁÖ¼¼¿ä. 1, 3¹ø Çʼö>" << endl << endl; 
            cout << "1. °Ë»ö ½ÃÀÛ ATM ID : " << query.startATM << endl; 
            cout << "2. °Ë»ö Á¾·á ATM ID : " << query.endATM << endl; 
            cout << "3. °Ë»ö ½ÃÀÛ ³¯Â¥ (YYYYMMDD) : " << query.startDate << endl; 
            cout << "4. °Ë»ö ½ÃÀÛ ½Ã°¢ (HHMMSS) : " << query.startTime << endl; 
            cout << "5. °Ë»ö Á¾·á ³¯Â¥ (YYYYMMDD) : " << query.endDate << endl; 
            cout << "6. °Ë»ö Á¾·á ½Ã°¢ (HHMMSS) : " << query.endTime << endl; 
            cout << "7. °èÁ¹øÈ£ : " << query.account << endl; 
            cout << "8. ÀÎÃâ±Ý¾× : " << query.outPrice << endl << endl; 
            cout << "9. °Ë»ö" << endl; 
            cout << "0. Á¾·á" << endl << endl; 
            cin >> key; 
            switch (key) { 
                case '1': 
                    cout << "°Ë»ö ½ÃÀÛ ATM ID¸¦ ÀÔ·ÂÇÏ¿© ÁÖ¼¼¿ä (0 - " << NUM_ATM - 1 << ") : "; 
                    cin >> query.startATM; 
                    strcpy(query.endATM, query.startATM); 
                    break; 
                case '2': 
                    if (query.startATM[0]) { 
                        cout << "°Ë»ö Á¾·á ATM ID¸¦ ÀÔ·ÂÇÏ¿© ÁÖ¼¼¿ä (" << query.startATM << " - " << NUM_ATM - 1<< ") : "; 
                        cin >> query.endATM; 
                    } else { 
                        cout << "°Ë»ö ½ÃÀÛ ATM ID¸¦ ¸ÕÀú ÀÔ·ÂÇÏ¿© ÁÖ¼¼¿ä"; 
                    } 
                    break; 
                case '3': 
                    cout << "°Ë»ö ½ÃÀÛ ³¯Â¥¸¦ ÀÔ·ÂÇÏ¿© ÁÖ¼¼¿ä (" << START_DATE << " - " << END_DATE << ") : "; 
                    cin >> query.startDate; 
                    strcpy(query.endDate, query.startDate); 
                    strcpy(query.startTime, "000000"); 
                    strcpy(query.endTime, "235959"); 
                    break; 
                case '4': 
                    cout << "°Ë»ö ½ÃÀÛ ½Ã°¢À» ÀÔ·ÂÇÏ¿© ÁÖ¼¼¿ä  : "; 
                    cin >> query.startTime; 
                    break; 
                case '5': 
                    if (query.startDate[0]) { 
                        cout << "°Ë»ö Á¾·á ³¯Â¥¸¦ ÀÔ·ÂÇÏ¿© ÁÖ¼¼¿ä (" << query.startDate << " - " << END_DATE ") : "; 
                        cin >> query.endDate; 
                    } else { 
                        cout << "°Ë»ö ½ÃÀÛ ³¯Â¥¸¦ ¸ÕÀú ÀÔ·ÂÇÏ¿© ÁÖ¼¼¿ä"; 
                    } 
                    break; 
                case '6': 
                    cout << "°Ë»ö Á¾·á ½Ã°¢À» ÀÔ·ÂÇÏ¿© ÁÖ¼¼¿ä : "; 
                    cin >> query.endTime; 
                    break; 
                case '7': 
                    cout << "°Ë»öÇϰíÀÚ ÇÏ´Â °èÁ¹øÈ£¸¦ ÀÔ·ÂÇÏ¿© ÁÖ¼¼¿ä : "; 
                    cin >> query.account; 
                    break; 
                case '8': 
                    cout << "°Ë»öÇϰíÀÚ ÇÏ´Â ÀÎÃâ±Ý¾×À» ÀÔ·ÂÇÏ¿© ÁÖ¼¼¿ä : "; 
                    // ½ÇÁ¦ ÇÁ·Î±×·¥¿¡¼± ¹üÀ§·Î °Ë»öÇÒ ¼ö ÀÖ°ÔÇϴ°ÍÀÌ ÁÁÀ»°Í °°À½ 
                    cin >> query.outPrice; 
                    break; 
                case '9': 
                    gettingData = false; 
                    break; 
                case '0': 
                    return(0); 
                    break; 
                default: 
                    cout << "À߸øÀÔ·ÂÇϼ̽À´Ï´Ù!" << endl; 
                    break; 
            } 
        } 
        cout << "°Ë»öÀ» Çϰí ÀÖ½À´Ï´Ù. Àá½Ã¸¸ ±â´Ù·ÁÁֽʽÿÀ." << endl << endl; 
        if (dvr.search(query) < 0) return(-1); 
    } 
} 
 
int main(int argc, char** argv) { 
    DVR dvr; 
    // Å×½ºÆ®¿ë ÆÄÀϵéÀ» »ý¼ºÇÑ´Ù. 
    // ÆÄÀÏÀÌ Á¸Àç½Ã¿£ Ãß°¡µÇ¹Ç·Î »õ µ¥ÀÌÅͰ¡ ÇÊ¿äÇÒ¶© »èÁ¦¸¦ ÇÏ´øÁö 
    // ±âÁ¸ µ¥ÀÌÅ͸¸ ÀÖÀ¸¸é µÉ¶© ÀÌ ºÎºÐÀ» ÁÖ¼®Ã³¸®ÇÑ´Ù 
    if (makeRecord(dvr) < 0) { 
        cout << "ÆÄÀÏ»ý¼º½Ã ¿À·ù°¡ ¹ß»ýÇÏ¿´½À´Ï´Ù : " << strerror(errno) << endl; 
        return(EXIT_FAILURE); 
    } else if (dvr.allClose() < 0) { 
        cout << "¸¶Áö¸· ³¯Â¥ÀÇ ÆÄÀϵéÀ» ´Ý´ÂÁß ¿À·ù°¡ ¹ß»ýÇÏ¿´½À´Ï´Ù : " << strerror(errno) << endl; 
        return(EXIT_FAILURE); 
    } else if (insertQuery(dvr) < 0) {        // ÀÚ·á °Ë»öÀ» ÇÑ´Ù 
        cout << "ÀÚ·á°Ë»ö½Ã ¿À·ù°¡ ¹ß»ýÇÏ¿´½À´Ï´Ù : " << strerror(errno) << endl; 
        return(EXIT_FAILURE); 
    } 
    return(EXIT_SUCCESS); 
}  
 
EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù.