http://www.hackerschool.org/HS_Boards/zboard.php?desc=asc&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 : 6344 Date : 2012/04/14 10:37
|