|
http://www.hackerschool.org/HS_Boards/zboard.php?AllArticle=true&no=6534 [복사]
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct newstudent{ //학번(int), 이름(char(8)), 학년( int), 연락처(char(char(12)), 휴학회수(int)
int number;//학번
char name[8];
int grade;
char phonenumber[12];
int rest;//휴학
};
// 신입생을 위한 struct
typedef struct oldstudent{ //학번(int), 이름(char(8)), 학년( int), 연락처(char(char(12)), 휴학회수(int), 휴학시기(char(3)) 휴학생
int number[20];
char name[8];
int grade;
char phonenumber[12];
int rest;
char resttime[3];
struct oldstudent *rink;
struct oldstudent *link;
}old;
old *first;
old *tail;
void initial_list(void){ //초기값을 NULL로 설정
first =NULL;
tail =NULL;
}
void Del(void)// 노드 삭제
{
}
old *makenode(){
old *data;
data =new old;
if( ! || data)
return NULL;
data->link=NULL;
data->rink =NULL;
data->number=0;//오류
data->name=0;//오류
data->phonenumber=0;//오류
data->grade= 0;
data->rest=0;
}// 초기화
struct newstudent news[100];
void Find(int x) //순차리스트 찾아서 삭제
{
int i;
FILE *in;
in=fopen("student1.dat","w+");
for(i=0; i<100; i++)
{
if(news[i].number==x){
news[i].number=NULL;
news[i].grade=NULL;
*news[i].name=NULL;
*news[i].phonenumber=NULL;
news[i].rest=NULL;
fprintf(in,"%d \t %s \t %d \t %s \t %d \n",news[i].number,news[i].name,news[i].grade,news[i].phonenumber,news[i].rest);
fclose(in);
system("cls");
}
}
};
void Finding(char k[8]){
int i;
FILE *in;
in=fopen("student1.dat","w+");
for(i=0; i<100; i++)
{
if(news[i].name==k){
news[i].number=NULL;
news[i].grade=NULL;
*news[i].name=NULL;
*news[i].phonenumber=NULL;
news[i].rest=NULL;
fprintf(in,"%d \t %s \t %d \t %s \t %d \n",news[i].number,news[i].name,news[i].grade,news[i].phonenumber,news[i].rest);
fclose(in);
system("cls");
}
}
};
int main(void)
{
int stack=0,i,code,x=1;
char choice,name[8];
FILE *in;
in=fopen("student1.dat","a");
system("cls");
while(1)
{
printf("신입생 등록(‘1’)\n");
printf("복학생 등록(‘2’)\n");
printf("휴학생 등록(‘3’)\n");
printf("자퇴생 등록(‘4’)\n");
printf("등록학생 전체 조회(’5’)\n");
printf("재학생(학번) 조회(‘6’)\n");
printf("휴학생(이름) 조회(‘7’)\n");
printf("시스템 종료(‘q’)\n");
printf("하고싶은 기능을 입력하거라 : ");
scanf("%c",&choice);
system("cls");
switch(choice)
{
case '1' : //학번(int), 이름(char(8)), 학년( int), 연락처(char(char(12)), 휴학회수(int)
printf("\n");
printf("학번을 입력하세요 : ");
scanf("%d",&news[stack].number);
printf("\n");
printf("성함을 입력하세요 : ");
scanf("%s",&news[stack].name);
printf("\n");
printf("학년을 입력 하세요 : ");
scanf("%d",&news[stack].grade);
printf("\n");
printf("연락처를 입력하세요 : ");
scanf("%s",&news[stack].phonenumber);
printf("\n");
printf("휴학 회수를 입력하세요(한번도 안하셧으면 0이라고 입력하시면 됩니다.) :");
scanf("%d",&news[stack].rest);
printf("\n");
fprintf(in,"%d \t %s \t %d \t %s \t %d \n",news[stack].number,news[stack].name,news[stack].grade,news[stack].phonenumber,news[stack].rest);
fclose(in);
stack=stack+1;
system("cls");
continue;
case '2' :
case '3' :
case '4' : //자퇴생 등록(‘4’) : 재학생 및 휴학생 순서리스트에서 확인 후, 삭제함
printf("자퇴하고 싶은 재학생의 학번을 입력 하세요 : ");
scanf("%d",&code);
Find(code);
getchar();
case'5' :
printf("재학생리스트 \n");
for(i=0; i<stack; i++)
printf("%d \t %s \t %d \t %s \t %d \n",news[i].number,news[i].name,news[i].grade,news[i].phonenumber,news[i].rest);
printf("휴학생 리스트 \n");
printf("완료 되었습니다. \n 계속하시려면 Enter을 눌러주세요 \n");
getchar();
system("cls");
continue;
case'6' :
printf("성함을 입력해 주세요 : ");
scanf("%s",name[8]);
Finding(name);
getchar();
case'7' :
printf("휴학생 성함을 입력해 주세요 : ");
case'q' :
break;//질문 : break;가 안먹히는 이유
}
}
return 0;
}
안녕하세요 처음 가입햇습니다.. 코딩실력이 많이 부족합니다. 한번 훑터봐주시고 조언좀 해주세요. 그리고 제가 연결리스트와 이중연결리스트 부분을 잘 이해를 못해서, 설명좀 자세하게 해주시면 정말 감사하겟습니다.
잘부탁드립니다. ^^~! |
Hit : 6311 Date : 2015/05/14 09:50
|