데이터 구조 과목 에 설 치 된 학생 관리 시스템 (C 언어)

56502 단어 C 언어
코드 를 직접 보 세 요. 저 는 몇 가지 간단 한 추가 삭제 작업 만 실 현 했 습 니 다. 파일 을 이용 하여 저장 합 니 다. 더 이상 다른 곳 에서 조작 하기 편리 하도록 저 는 bat 일괄 처 리 를 썼 습 니 다. D 디스크 에 t. txt 를 만 들 었 습 니 다. 프로그램의 파일 은 모두 D: \ t. txt 에서 읽 어야 합 니 다.구체 적 인 코드 는 다음 과 같다.
#include
#include
#define LL sizeof(stu)
#define N  3
int  COUNT = 10;
int num;
typedef struct student
{
    int no;         //  
    char name[20];  //  
    char sex[10];   //  
    int score[N]; //  
    struct student *next;
}stu;

stu *creatlist(void)
{
    stu *p1,*p2,*head=NULL;
    num=0;
    p1=p2=(stu *)malloc(LL);
    printf("       :  ,  ,  ,    ,    ,    
"
); scanf("%d%s%s",&p1->no,p1->name,p1->sex); for(int i=0;i<N;i++) scanf("%d",&p1->score[i]); while(p1->no!=0) { num++; if(num==1) head=p1; else p2->next=p1; p2=p1; p1=(stu*)malloc(LL); scanf("%d%s%s",&p1->no,p1->name,p1->sex); for(int i=0;i<N;i++) scanf("%d",&p1->score[i]); } p2->next=NULL; return head; } // stu * import(){ stu * p ,*head,*q; FILE * fp; head = p = q = (stu*)malloc(LL); if((fp = fopen("D://t.txt","r"))==NULL){ printf("file not open
"
); exit(1); } for(int i =1 ;i<=COUNT;i++){ fscanf(fp,"%d %s %s %d %d %d
"
,&p->no,p->name,p->sex,&p->score[0],&p->score[1],&p->score[2]); if(i==COUNT){ p->next = NULL; break; } q = (stu*)malloc(LL); p->next = q; p = q; } fclose(fp); return head; } // void lookup( stu *head ,int no) { stu *p1=head; if(head==NULL) printf("
"
); while(p1->no!=no&&p1->next!=NULL) p1=p1->next; if(p1->no==no) { printf(" \t\t \t \t \t \t
"
); printf("%d\t\t%s\t%s\t%d\t\t%d\t\t%d
"
,p1->no,p1->name,p1->sex,p1->score[0],p1->score[1],p1->score[2]); } else printf("
"
); } // stu* alter( stu *head ,int no) { stu *p1=head; if(head==NULL) printf("
"
); while(p1->no!=no&&p1->next!=NULL) p1=p1->next; if(p1->no==no) { printf(" \t\t \t \t \t \t
"
); printf("%d\t\t%s\t%s\t%d\t\t%d\t\t%d
"
,p1->no,p1->name,p1->sex,p1->score[0],p1->score[1],p1->score[2]); printf("
"
); scanf("%d%s%s%d%d%d",&p1->no,p1->name,p1->sex,&p1->score[0],&p1->score[1],&p1->score[2]); } else printf("
"
); return head; } // void showlist(stu *p1) { printf(" \t\t \t\t \t \t \t
"
); if(p1==NULL) printf(" !
"
); else while(p1!=NULL) { printf("%d\t\t%s\t\t%s\t%d\t\t%d\t\t%d
"
,p1->no,p1->name,p1->sex,p1->score[0],p1->score[1],p1->score[2]); p1=p1->next; } } // void datalist(stu * head){ printf("
"
); printf(" 1, 0
"
); int n ; scanf("%d",&n); if(n==1){ clearlist(); COUNT = 0; } FILE * fp ; if((fp = fopen("D://t.txt","a+"))==NULL){ printf("file not open
"
); exit(1); } while(head!=NULL){ COUNT++; fprintf(fp,"%d %s %s %d %d %d
"
,head->no,head->name,head->sex,head->score[0],head->score[1],head->score[2]); head = head -> next; } fclose(fp); } // void clearlist(){ remove("D://t.txt"); return ; } // stu *del(stu* head,int no) { stu *p1,*p2=NULL; if(head==NULL) { printf(" !
"
); goto end; } p1=head; while(p1->no!=no&&p1->next!=NULL) { p2=p1; p1=p1->next; } if(p1->no==no) { num--; if(p1==head) head=p1->next; else p2->next=p1->next; } end: return (head); } // stu *clear(stu* head) { stu *p1,*p2=NULL; if(head==NULL) { printf(" !
"
); goto end; } p1=head; while(p1->no!=0&&p1->next!=NULL) { p2=p1; p1=p1->next; } if(p1->no==0) { num--; p2->next=NULL; } else printf(" !
"
); end: return (head); } // stu *insert( stu *head,stu *worker ) { stu *p1,*p2=NULL,*p0=worker; p1=head; if(head==NULL) { head=p0; p0->next=NULL; } else { while(p1->no<p0->no&&p1->next!=NULL) { p2=p1; p1=p1->next; } if(p1->no==p0->no){ printf(" ,
"
); return head; } if(p1->no>p0->no) { if(p1==head) head=p0; else p2->next=p0; p0->next=p1; } else { p1->next=p0; p0->next=NULL; } } num++; return head; } // void print(void){ printf("*********************************************************
"
); printf("* *
"
); printf("*********************************************************
"
); printf("1 \t\t2 ( )

"
"3 \t\t\t4

"
"5 \t\t\t6

"
"7 \t\t\t8

"
"9 \t\t\t10 !

"
); printf("********************************************************
"
); printf("
"
); } void Seemnue(void){ printf("*********************************************************
"
); printf("1 \t\t2 ( )

"
"3 \t\t\t4

"
"5 \t\t\t6

"
"7 \t\t\t8

"
"9 \t\t\t10 !

"
); printf("********************************************************
"
); } int main() { print(); int h,t,n; stu *k; stu *hh; while(scanf("%d",&h)!=EOF) switch(h) { case 1: printf(" 0 0 0 0 0 0

"
); k=creatlist(); printf("
"
); break; case 2:k = import(); k = clear(k); printf("
"
); break; case 3: printf("
"
); scanf("%d",&t); k=del(k,t); printf("
"
); break; case 4: printf("
"
); printf(" \t \t \t \t \t
"
); hh=(stu*)malloc(LL); scanf("%d%s%s",&hh->no,hh->name,hh->sex); for(int i=0;i<N;i++) scanf("%d",&hh->score[i]); k=insert(k,hh); printf("
"
); break; case 5: printf("
"
); scanf("%d",&n); lookup(k,n); printf("
"
); break; case 6: showlist(k); printf("
"
); break; case 7: printf("
"
); scanf("%d",&n); k = alter(k,n); printf("
"
); break; case 8: datalist(k); printf("
"
); break; case 9: Seemnue(); printf("
"
); break; case 10: printf(" , !
"
);break; } return 0; }

좋은 웹페이지 즐겨찾기