// 이름과 국어, 영어를 입력받아 총점과 평균을 구하는 로직
#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 |
댓글