본문 바로가기
Computer & Program/잡다한 이모저모

점수 관리 로직-1

by TDRemon 2008. 8. 4.
반응형

// 이름과 국어, 영어를 입력받아 총점과 평균을 구하는 로직

#include <stdio.h>
#include <conio.h>
#include <windows.h>

#define DataFile "c:\\data.txt"

struct AA{
char name[20];
int kor,eng,tot;
double avg;
};

void menu();
void input_sub();
void append_sub();
void view_sub();
void search_sub();
int main(){
char ch;

while(1){

 menu();
 ch=getche();
 if(ch=='5') break;
 switch(ch){
  case '1':input_sub();break;
  case '2':append_sub();break;
  case '3':search_sub();break;
  case '4':view_sub(); break;
 
 }//switch end

}//while end

return 0;
}
void search_sub(){
FILE *fp;
struct AA saram;
char temp[20],imsi[20];
int sw=0;

fp=fopen(DataFile,"r");
system("cls");
printf("==== Search Name ====\n");

printf("Search Name? ");gets(temp);

while(1){
 fgets(saram.name,20,fp);
 if(feof(fp))break;

 fscanf(fp,"%d %d",&saram.kor,&saram.eng);
 fscanf(fp,"%*c"); //enter clear
 saram.name[strlen(saram.name)-1]='\0';//'\n'를 '\0'로..
 
 //if(strcmp(temp,saram.name)==0)
 strcpy(imsi,saram.name);
 strupr(temp);
 strupr(imsi);

 if(strncmp(temp,imsi,strlen(temp))==0)
 {
  saram.tot=saram.kor+saram.eng;
  saram.avg=(double)saram.tot/2;
 
  printf("%-20s%-5d%-5d%-5d%-8.2lf\n",
   saram.name,saram.kor,saram.eng,saram.tot,saram.avg);
  sw=1;

 }//if end
}//while end

if(sw==0)printf("Nor found.....\n");

getch();

}

void view_sub(){
FILE *fp;
struct AA saram;
int cnt=0;

fp=fopen(DataFile,"r");

system("cls");
printf("==== Data View ====\n");


while(1){
 fgets(saram.name,20,fp);

 if(feof(fp))break;
 fscanf(fp,"%d %d",&saram.kor,&saram.eng);
 fscanf(fp,"%*c"); //enter clear

 saram.tot=saram.kor+saram.eng;
 saram.avg=(double)saram.tot/2;

 saram.name[strlen(saram.name)-1]='\0';
 // '\n'를 '\0'로 수정

 if(cnt==0){
  system("cls");
  printf("%-20s%-5s%-5s%-5s%-8s\n",
   "Name","Kor","Eng","Tot","Avg");
 }

 printf("%-20s%-5d%-5d%-5d%-8.2lf\n",
  saram.name,saram.kor,saram.eng,saram.tot,saram.avg);
 cnt++;
 if(cnt==3) {
  printf("                               .......more\n");
  getch();
  cnt=0;
 }

}
if(cnt!=0){
 printf("                        ........data end\n");
 getch();
}

fclose(fp);

}

void append_sub(){
struct AA saram;
FILE *fp;
fp=fopen(DataFile,"a");
system("cls");
printf("==== Append Data ====\n");

while(1){
 printf("Name? ");gets(saram.name);fflush(stdin);
 if(stricmp(saram.name,"end")==0)break;
 printf("Kor? ");scanf("%d",&saram.kor);fflush(stdin);
 printf("Eng? ");scanf("%d",&saram.eng);fflush(stdin);

 fprintf(fp,"%s\n",saram.name);
 fprintf(fp,"%5d%5d\n",saram.kor,saram.eng);
}
fclose(fp);

}

void input_sub(){
struct AA saram;
FILE *fp;
fp=fopen(DataFile,"w");
system("cls");
printf("==== Input Data ====\n");

while(1){
 printf("Name? ");gets(saram.name);fflush(stdin);
 if(stricmp(saram.name,"end")==0)break;
 printf("Kor? ");scanf("%d",&saram.kor);fflush(stdin);
 printf("Eng? ");scanf("%d",&saram.eng);fflush(stdin);

 fprintf(fp,"%s\n",saram.name);
 fprintf(fp,"%5d%5d\n",saram.kor,saram.eng);
}
fclose(fp);

}

void menu(){
system("cls");
printf("1.InputData\n");
printf("2.AppendData\n");
printf("3.SearchData\n");
printf("4.ViewData\n");
printf("5.Exit\n");
printf("Select? ");
}

이 프로그램은 data.txt에 저장된 데이터를 읽어들여 출력해주는 프로그램이다. 그 외의 기능으로는 자료 입력, 자료 추가, 차료 검색, 자료 출력이 있다. 수업시간에 임의로 만든 프로그램이라 완전히 다듬어지지는 않았지만 나중을 위하여 올려 놓는다.

반응형

'Computer & Program > 잡다한 이모저모' 카테고리의 다른 글

Sort - 정렬  (4) 2009.03.04
10진수를 2진수로 변환하는 코드  (2) 2009.03.04
과제 18 : 다아몬드 출력  (0) 2009.03.04
7/15 두번째 강의  (1) 2009.03.04
C에서의 기본적인 동적할당  (0) 2008.08.04

댓글