ÇÁ·Î±×·¡¹Ö

 3206, 7/161 ȸ¿ø°¡ÀÔ  ·Î±×ÀΠ 
   SKTCTO
   ÆíÀÇÁ¡ ¹°Ç° Ãß°¡/»èÁ¦/¼öÁ¤/ÆǸŵî·Ï ¸¸µå´ÂÁßÀε¥.... ÆǸſ¡¼­ ¸·È÷³×¿ä ..

http://www.hackerschool.org/HS_Boards/zboard.php?id=QNA_programming&no=3395 [º¹»ç]


ÆíÀÇÁ¡ ¹°Ç° Ãß°¡ / »èÁ¦ / ¼öÁ¤/ ÆǸŵî·Ï ÇÏ°í ÆǸŠÁ¾·á½Ã °á»êÇÏ´Â ÆÄÀÏÀ» ¸¸µå´Â

ÇÁ·Î±×·¥À» ¸¸µé°íÀִµ¥¿ä;;

´Ù¸¥°Ç º¸½ÇÇÊ¿ä¾ø°í,, ½ÇÇàÇغ¸½Ã¸é 6¹ø ÆǸŽÃÀÛÇÏ¸é ¿¡·¯°¡ ¶ß³×¿ä...

¿Ö ±×·±Áö Ȥ½Ã ÀÌÀ¯¾Æ½Ã´ÂºÐ ÀÖÀ¸½Å°¡¿ä....?

¼Ò½º°¡ Á» ¸¹¾Æ¼­ º¸±â ÈûµéÁÙ ¾ËÁö¸¸... Á¦ ¸Ó¸®·Ð ¾ÈµÇ¼­

µµ¿òûÇÕ´Ï´Ù. ºÎŹµå¸³´Ï´Ù. °í¼ö´Ôµé !!!



#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>

void ADD(void);
void EDIT(void);
void DELETE(void);
void SEARCH(void);
void SALE(void);
void PRINT(void);
void file_loads(void);
void file_save(void);
void sale_end(void);

void cls(void)
{
        system("cls");
}

struct Store
{
        char name[20];
        int price;
        int amount;
};

typedef struct _Stock
{
        char name[20];
        int price;
        int amount;
}Stock;

typedef struct Link
{
        struct Store Data;
        struct Link* Next;
}Link;

void updateStockSales(Stock *pStock);
void saveSalesList(Stock *pStock, int *psalesQuantity);
Stock* makeStockArray(void);
int searchIndexByName(Stock *pStock, char *salesName);

Link* pos=NULL;

static int cnt;

int main()
{
        file_loads();

        int n;
        while(1)
        {
                cls();
                puts(" \t\t ****** MENU ******");
                puts(" \t\t 1¹ø : ¹°Ç° Ãß°¡");
                puts(" \t\t 2¹ø : ¹°Ç° ¼öÁ¤");
                puts(" \t\t 3¹ø : ¹°Ç° »èÁ¦");
                puts(" \t\t 4¹ø : ¹°Ç° °Ë»ö");
                puts(" \t\t 5¹ø : ¹°Ç° Ãâ·Â ");
                puts(" \t\t 6¹ø : ÆǸŠ½ÃÀÛ");
                puts(" \t\t 7¹ø : ÆǸŠÁ¾·á");
                puts(" \t\t ******************");

                printf(" \t\t Choice(¼±ÅÃ)[   ]\b\b\b");
                scanf("%d", &n);
                switch(n)
                {
                case 1: ADD();
                        file_save();break;
                case 2: EDIT();
                        file_save();break;
                case 3: DELETE();
                        file_save();break;
                case 4: SEARCH();break;
                case 5: PRINT();break;
                case 6: SALE();break;
                case 7: sale_end();
                        printf("\n\n\tµ¥ÀÌÅ͸¦ ÀúÀåÇÕ´Ï´Ù.\n");
                        return 0;
                }
        }
        return 0;
}

void ADD()
{
        Link* add;

        add=(Link*) malloc(sizeof(Link));
cls();
fflush(stdin);
printf("\n\t Ãß°¡ÇÒ ¹°Ç°À» ÀÔ·ÂÇϼ¼¿ä : ");
gets(add->Data.name);
printf("\n\t ¹°Ç°ÀÇ °¡°ÝÀ» ÀÔ·ÂÇϼ¼¿ä : ");
scanf("%d", &add->Data.price);
fflush(stdin);
printf("\n\t ¹°Ç°ÀÇ ¼ö·®À» ÀÔ·ÂÇϼ¼¿ä : ");
scanf("%d", &add->Data.amount);
fflush(stdin);
printf("\n\t ¹°Ç°,°¡°Ý,¼ö·®ÀÌ ÀԷµǾú½À´Ï´Ù. ");

add->Next=pos;
pos=add;
}


void EDIT()
{
        PRINT();
        Link* edit;
        Link edit_after;
        char arr[20];
        int i, count=0;

        cls();

        if(pos!=NULL)
        {
                edit=pos;
                fflush(stdin);
                printf("\n\t ¼öÁ¤Àü ¹°Ç°À» ÀÔ·ÂÇϼ¼¿ä : ");
                scanf("%s", arr);
                while(edit)
                {
                        i=strcmp(edit->Data.name,arr);
                        if(i==0)
                        {
                                printf("\n\tÇ°¸ñ : %s / °¡°Ý : %d / ¼ö·® : %d", edit->Data.name, edit->Data.price, edit->Data.amount);
                                printf("\n");
                                fflush(stdin);
                                printf("\n\t¼öÁ¤ÇÒ ¹°Ç°À» ÀÔ·ÂÇØÁÖ¼¼¿ä : ");
                                gets(edit_after.Data.name);
                                printf("\n\t¼öÁ¤ÇÒ ¹°Ç°ÀÇ °¡°ÝÀ» ÀÔ·ÂÇØÁÖ¼¼¿ä : ");
                                scanf("%d",&edit_after.Data.price);
                                fflush(stdin);
                                printf("\n\t¼öÁ¤ÇÒ ¹°Ç°ÀÇ ¼ö·®À» ÀÔ·ÂÇØÁÖ¼¼¿ä : ");
                                scanf("%d",&edit_after.Data.amount);
                                fflush(stdin);
                                edit->Data = edit_after.Data;
                                count++;
                        }
                        edit=edit->Next;
                }
                if(count==0)
                {
                        printf("\n\tã´Â ¹°Ç°ÀÌ ¾ø½À´Ï´Ù!!!");
                }
        }
}


void DELETE()
{
        Link *next, *before;
        char del[20];
        int count=0;
        cls();
        if(pos!=NULL){
                next=before=pos;

                //PRINT();
                //file_load2();


                printf("\n\t »èÁ¦ÇÒ À̸§À» ÀÔ·ÂÇØÁÖ¼¼¿ä : ");
                fflush(stdin);
                gets(del);
                while(next)
                        {
                                if(strcmp(next->Data.name,del)==0)
                                        break;
                                before=next;
                                next=next->Next;
                                count++;
                        }
                        if(count==0)
                        {
                                pos=pos->Next;
                                printf("\n\t ¼±ÅÃÇÑ ¹°Ç°ÀÌ »èÁ¦ µÇ¾ú½À´Ï´Ù. ");
                                free(next);
                        }
                        else if(next==NULL)
                        {
                                printf("\n\tÀÔ·ÂÇÑ ¹°Ç°ÀÌ ¾ø½À´Ï´Ù. ");
                        }
                        else
                        {
                        before->Next = next->Next;
                        printf("\n\t ¼±ÅÃÇÑ ¹°Ç°ÀÌ »èÁ¦ µÇ¾ú½À´Ï´Ù. ");
                        free(next);
                        }
        }
        else
        {
                printf("\n\t»èÁ¦ÇÒ ³»¿ëÀÌ ¾ø½À´Ï´Ù. ");
        }
        getch();
}

void SEARCH()
{
        Link* search;
        char arr[20];
        int i, count=0;

        cls();

        if(pos!=NULL)
        {
                search=pos;
                fflush(stdin);
                printf("\n\t ãÀ» ¹°Ç°À» ÀÔ·ÂÇϼ¼¿ä : ");
                scanf("%s", arr);
                while(search)
                {
                        i=strcmp(search->Data.name,arr);
                        if(i==0)
                        {
                                printf("\n\tÇ°¸ñ : %s / °¡°Ý : %d / ¼ö·® : %d", search->Data.name, search->Data.price, search->Data.amount);
                                printf("\n");
                                printf("\n\n\t[ENTER]Å°¸¦ ´©¸£¸é °è¼Ó ÁøÇàµË´Ï´Ù.");
                                count++;
                        }
                        search=search->Next;
                }
                if(count==0)
                {
                        printf("\n\tã´Â ¹°Ç°ÀÌ ¾ø½À´Ï´Ù!!!");
                }
        }
        else
        {
                printf("\n\tÀúÀåµÈ ³»¿ëÀÌ ¾ø½À´Ï´Ù!!!");
                printf("\n\n\t[ENTER]Å°¸¦ ´©¸£¸é °è¼Ó ÁøÇàµË´Ï´Ù.");
        }
        getch();


}

void PRINT()
{
        Link* see;
        cls();
        printf(" \n\t¹°Ç° ¸ñ·ÏÀ» ¸ðµÎ Ãâ·ÂÇÕ´Ï´Ù. \n\n");
        if(pos!=NULL)
        {
                see=pos;
                while(see)
                {
                        printf("Ç°¸ñ : %s / °¡°Ý : %d / ¼ö·® : %d\n", see->Data.name, see->Data.price, see->Data.amount);
                        see=see->Next;
                }
        }
        else
        {
                printf("\n\tÀúÀåµÈ ³»¿ëÀÌ ¾ø½À´Ï´Ù.");
        }
        printf("\n\n\t[ENTER]Å°¸¦ ´©¸£¸é °è¼Ó ÁøÇàµË´Ï´Ù.");
        getch();

}


void file_loads()
{
        FILE* file;
        Link* load;
        int state;

        file=fopen("/ITEM_LIST.txt","rb");
        if(file==NULL)
        {
                printf("ÆÄÀÏÀ» ¼º°øÀûÀ¸·Î ÀÐÁö¸øÇß½À´Ï´Ù. \a\a\a\a");
                return;
        }
        load=(Link*)malloc(sizeof(Link));

        while(fread(&load->Data,sizeof(struct Store),1,file)!=0);
        {
                
                load->Next=pos;
                pos=load;
                load=(Link*)malloc(sizeof(Link));
        }
        
        state=fclose(file);
        if(state!=0)
        {
                printf("ÆÄÀÏÀ» ¼º°øÀûÀ¸·Î ´ÝÁö ¸øÇß½À´Ï´Ù. \a\a\a\a");
        }
        return;

}

/*
void file_load2()
{
        cls();
        FILE *load;
        int state;
        printf(" \n\t¹°Ç° ¸ñ·ÏÀ» ¸ðµÎ Ãâ·ÂÇÕ´Ï´Ù. \n\n");
        Link Link_load;
        
        load = fopen("ITEM_LIST","rb");
        if(load = NULL){
                printf("\n\t**Àç°íÆÄÀÏÀ» ÀоîµéÀ̴µ¥ ½ÇÆÐÇß½À´Ï´Ù. **");
        exit(-1);
        }
        while (fread(&Link_load.Data, sizeof(Link),1,load))
        {
                printf("Ç°¸ñ : %s / °¡°Ý : %d / ¼ö·® : %d\n", Link_load.Data.name, Link_load.Data.price, Link_load.Data.amount);
        }
        fclose(load);
}
*/

void file_save()
{
        FILE* save;
        Link* save1;
        Stock stock;
        int state;

        save=fopen("/ITEM_LIST.txt","wb");
        save1=pos;
        while(save1!=NULL)
        {
                memset(&stock, '\0', sizeof(Stock));
                fwrite(&stock,sizeof(Stock),1,save);
                save1=save1->Next;
        }
        state=fclose(save);
        if(state!=0)
        {
                printf("File Close Error\n");
                //return;
        }
}

void sale_end()
{
        FILE* save;
        Link* save1;
        int state;

        save=fopen("ITEM_LIST.txt","wb");
        save1=pos;
        while(save1!=NULL)
        {
                fwrite(&save1->Data,sizeof(struct Store),1,save);
                save1=save1->Next;
        }
        state=fclose(save);
        if(state!=0)
        {
                printf("File Close Error\n");
                return;
        }
}

Stock *makeStockArray(void){
        Stock *pStock;
        long count;

        FILE *fin;
        fin = fopen("ppstock.txt","rb");
        if(fin = NULL){
                printf("ÆǸŸ¦ À§ÇÑ Àç°íÆÄÀÏ ¿ÀÇ ¿¡·¯!!\n");
                exit(-1);
        }
        fseek(fin,0,SEEK_END);
        count = ftell(fin) / sizeof(Stock);
        cnt = (int)count;

        pStock = (Stock *)calloc(count, sizeof(Stock));
        fseek(fin, 0, SEEK_SET);
        for(int i=0; i<count; i++){
                fread(&pStock[i], sizeof(Stock), 1, fin);
        }
        fclose(fin);
        return pStock;
}

void SALE()
{
        Stock *pStock;
        int *pSalseQuantity;
        pStock = makeStockArray();       // <<<< ÀÌ°Ô Àß ¾ÈµÇ´Â°Å °°À½...
        pSalseQuantity = (int *)calloc(cnt,sizeof(int));
        printf("\n\t **** ÆǸÅÁغñµÈ ÇöÀç »óÅ **** \n");
        for(int i=0;i<cnt;i++){
                printf("%-20s %6d %3d %3d\n", pStock[i].name, pStock[i].price,pStock[i].amount,pSalseQuantity[i]);
        }

        char salesName[20];
        int salesQuantity;
        int index;
        fflush(stdin);
        printf("\n\t ****** ¿µ¾÷À» ½ÃÀÛÇÏ¿´½À´Ï´Ù ******");
        printf("\n\t *** Á¾·á : [END] ¸¦ ÀÔ·ÂÇØÁÖ¼¼¿ä *** ");
        printf("\n\n\t ÆǸÅÁ¦Ç°À» ÀÔ·ÂÇØÁÖ¼¼¿ä : [          ]\b\b\b\b\b\b\b\b\b");
        gets(salesName);
        fflush(stdin);
        printf("\n\t ¼ö·®À» ÀÔ·ÂÇØÁÖ¼¼¿ä : [     ]\b\b\b");
        while((strcmp(salesName, "end") || (strcmp(salesName, "END")))!= 0){
                index = searchIndexByName(pStock, salesName);
                if(index == -1){
                        printf("\n\t Àç°í¹°Ç°¿¡ Á¦Ç°ÀÌ ¾ø½À´Ï´Ù!");
                }else{
                        if(pStock[index].amount >= salesQuantity){
                                printf("ÆǸŰ¡°Ý : %d ¿ø / ÆǸżö·® : %d °³ / ÆÇ¸Å±Ý¾× : %d\n ¿ø", pStock[index].price, salesQuantity, pStock[index].price * salesQuantity);
                                pStock[index].amount -= salesQuantity;
                                pSalseQuantity[index] += salesQuantity;
                        }else{
                                printf("\n\t *** Àç°í ¹°·®ÀÌ ºÎÁ·ÇÕ´Ï´Ù *** ");
                                printf("\n\t Àç°í ¹°·® : %d°³ / ±¸¸Å ¹°·® : %d\n°³", pStock[index].amount, salesQuantity);
                        }
                }
        fflush(stdin);
        printf("\n\t *** Á¾·á : [END] ¸¦ ÀÔ·ÂÇØÁÖ¼¼¿ä *** ");
        printf("\n\n\t ÆǸÅÁ¦Ç°À» ÀÔ·ÂÇØÁÖ¼¼¿ä : [          ]\b\b\b\b\b\b\b\b\b");
        gets(salesName);
        fflush(stdin);
        printf("\n\t ¼ö·®À» ÀÔ·ÂÇØÁÖ¼¼¿ä : [     ]\b\b\b");
        scanf("%d",&salesQuantity);        
        }
        // Àç°í³»¿ªÀ» ÆÄÀÏ¿¡ Àç Ãâ·ÂÇÑ´Ù.(overwrite)
        updateStockSales(pStock);

        // ¿À´Ã³¯Â¥ ÆǸÅÇöȲ ÆÄÀÏÀ» ¸¸µç´Ù.
        saveSalesList(pStock, pSalseQuantity);
}

void updateStockSales(Stock *pStock)
{
        FILE *fout = fopen("/stock.out","wb");
        if(fout == NULL){
                printf("\n\tÀç°íÆÄÀÏ ÆǸŰá°ú Write Open Error!\n");
                exit(-1);
        }
        fwrite(pStock, sizeof(Stock), cnt, fout);
        fclose(fout);
}

void saveSalesList(Stock *pStock, int *psalesQuantity)
{
        FILE *fout = fopen("/sale20120413.txt","wb");
        if(fout == NULL){
                printf("ÆǸÅÇöȲ Write Open Error!\n");
                exit(-1);
        }
        int *pSalesAmount = (int *)calloc(cnt, sizeof(int));
        int totalAmount = 0;
        fprintf(fout, "%s"," ******** 2012³â 4¿ù 13ÀÏ ÆǸŠÇöȲ ******** \n");
        fprintf(fout, "%20s %s\n", "Á¦Ç°¸í", "´Ü°¡ ¼ö·® ÆǸűݾ×");
        for(int i=0; i<cnt; i++){
                pSalesAmount[i] = pStock[i].price * psalesQuantity[i];
                totalAmount += pSalesAmount[i];
                fprintf(fout, "%-20s %6d %3d %8d\n", pStock[i].name,pStock[i].price,psalesQuantity[i],pSalesAmount[i]);
        }
        fprintf(fout, "-------------------------------------------------\n");
        fprintf(fout, "                               ÃÑÆÇ¸Å±Ý¾× : %10d\n", totalAmount);
        fclose(fout);
}

int searchIndexByName(Stock *pStock, char *salesName){
        int sw = 0;
        int i = 0;
        while (sw != 1 && i<cnt){
                if(strcmp(pStock[i].name, salesName) == 0){
                        sw = 1;
                }else{
                        i++;
                }
}
        if(sw==1){
                return i;
        }else{
                return -1;
        }
}



        











  Hit : 6284     Date : 2012/04/14 10:37



    
rainroad87 Stock *makeStockArray(void) ÀÌ ÇÔ¼ö¿¡¼­

fin = fopen("ppstock.txt","rb"); ÆÄÀÏ ¿­°í

üũÇÏ´Â ·çƾÀÌ À߸øµÇ¾ú³×¿ä

if(fin = NULL) -> if(fin == NULL)

ÆÄÀÏ ¿©´Âµ¥ ½ÇÆÐ ÇÏ¿´´Âµ¥,

fseek(fin,0,SEEK_END); offset º¯°æÇÏ·Á´Ï±î

Á״¹®Á¦ ÀΰŠ°°½À´Ï´Ù
2012/04/19  
3086   2Â÷¿ø ¹è¿­À» malloc()À¸·Î ó¸®ÇÏ´Â ¹æ¹ý[2]     powermilk
05/16 6359
3085   [C¾ð¾î] ¿­Ç÷°­ÀÇ C ¸¶Áö¸· ¹®Á¦ Áú¹®ÀÌ¿ä.[4]     ¿µ¿øÇÑ°øºÎ
06/13 6350
3084   0xffffffff°¡ ¹«½¼ ¶æÀΰ¡¿ä??[1]     socks
03/02 6345
3083   C¾ð¾î¸¦ °øºÎÇϴµ¥ °è¼Ó ¿¡·¯°¡¶ß³×¿ä;;[2]     tjdgh4688
02/18 6327
3082     Dev c++ ÄÄÆÄÀÏ·¯ ´Ù¿î ¹Þ±â     TIM_Scutum
01/24 6318
3081   c¾ð¾î óÀ½À¸·Î Çغ¸´Âµ¥.. ¿À·ù°¡ 1°³ ¶ß³×¿ä.. ¹¹°¡ Ʋ¸°°ÅÁÒ?!?? ¤Ð[2]     dpyeong
04/05 6287
  ÆíÀÇÁ¡ ¹°Ç° Ãß°¡/»èÁ¦/¼öÁ¤/ÆǸŵî·Ï ¸¸µå´ÂÁßÀε¥.... ÆǸſ¡¼­ ¸·È÷³×¿ä ..[1]     SKTCTO
04/14 6283
3079   [ÀڷᱸÁ¶]±×·¡ÇÁ ÀÓ°è°æ·Î¿¡ °ü·ÃµÈ °³³äÀû Áú¹®     ksbgenius
06/08 6229
3078   [C¾ð¾î] scanfÇÔ¼ö¿Í getsÇÔ¼ö¿¡¼­ \n¹®ÀÚ Áú¹®ÀÌ¿ä.[2]     ¿µ¿øÇÑ°øºÎ
05/25 6217
3077   cmd Áú¹®...[9]     jsw0441
09/07 6216
3076   ÇÔ¼ö ¼±¾ð¹× Á¤ÀÇ °ü·Ã Áú¹®ÀÌ¿ä     ¼þ¾Æ
01/14 6205
3075   C ¾ð¾î¸¦ ¹è¿ì´Âµ¥¿ä..¤Ì¤Ì[3]     nanaya
09/07 6189
3074   VB.NET ÅؽºÆ®¹Ú½º -> ±¸±Û °Ë»ö ÇÑ±Û ±úÁü Çö»ó     yuriyuri92
03/28 6177
3073   ¼ÒÄÏÇÁ·Î±×·¡¹Ö - recvfrom À̳ª sendto ÇÔ¼öÀÇ Æ¯Â¡[2]     chamchi
09/18 6164
3072   ½Ã°£ Ãâ·Â¾îÄÉ Çϳª¿ä?[C¾ð¾î][4]     maby258
06/27 6163
3071   ºÒ¹ýÀÎÁö ¾Ë·ÁÁÖ¼¼¿ä     sdaemin
09/05 6152
3070   scanf? scanf_s?[3]     jjh92kor
06/15 6146
3069     [re] lseek¿¡ °üÇÑ Áú¹®ÀÔ´Ï´Ù~     indra
10/13 6145
3068   [¾î¼À]eax, ebx ·¹Áö½ºÅÍÀÇ ±Ùº»Àû Â÷ÀÌÁ¡ÀÌ ¹º°¡¿ä??[3]     qudtkadnjs
01/22 6139
3067   [PHP] <¼¼¼Ç À¯Áö> ¿¡ ´ëÇÑ Áú¹®ÀÔ´Ï´Ù..[5]     U_SoRang
05/07 6129
[1][2][3][4][5][6] 7 [8][9][10]..[161]

Copyright 1999-2024 Zeroboard / skin by Hackerschool.org / Secure Patch by Hackerschool.org