單鏈表-【學生資訊管理系統】
阿新 • • 發佈:2019-02-18
<span style="font-size:18px;">#include<stdio.h> #include<string.h> #include<stdlib.h> #include<malloc.h> #define PF printf("\n") typedef struct { char no[9]; char name[20]; double price; }Student; typedef struct LNode { Student data; struct LNode *next; }LNode,*LinkList; LinkList L; void InitList() { L=new LNode; L->next=NULL; } void in_put() { PF;PF; system("cls"); printf("輸入學生數量:"); int num,i; scanf("%d",&num); PF; LNode *r; r=L; for(i=0;i<num;++i) { LNode *p; p=(LNode *)malloc(sizeof(LNode)); printf("學號:"); scanf("%s",p->data.no); while(strlen(p->data.no)!=8) { PF; printf("請輸入學號8位:"); scanf("%s",p->data.no); } PF; printf("姓名:"); scanf("%s",p->data.name); PF; printf("成績:"); scanf("%lf",&p->data.price); r->next=p; r=p; PF; } r->next=NULL; } void out_put() { system("cls"); PF;PF; LinkList p; p=L->next; int num=1; while(p) { printf("*******第%d個學生*******\n",num++); printf("學號:"); printf("%s\n",p->data.no); printf("姓名:%s\n",p->data.name); printf("成績:%.2lf\n",p->data.price); PF; p=p->next; } } void find_name() { system("cls"); printf("請輸入查詢姓名:"); char name[20]; scanf("%s",name); LNode *p; PF; p=L->next; int flag=1,num=1; while(p) { if(strcmp(p->data.name,name)==0) { printf("*******%d*******\n",num++); printf("學號:"); printf("%s\n",p->data.no); printf("姓名:%s\n",p->data.name); printf("成績:%.2lf\n",p->data.price); PF; flag=0; } p=p->next; } if(flag) { printf("不存在該學生!!-_-|||\n"); PF; } } void find_point() { system("cls"); printf("請輸入查詢學生的位置:"); int point,i=1; scanf("%d",&point); LNode *p; p=L->next; while(p&&i<point) { p=p->next; ++i; } if(!p||i>point) { printf("不存在該學生!!⊙﹏⊙‖∣\n"); PF; return ; } printf("學號:"); printf("%s\n",p->data.no); printf("姓名:%s\n",p->data.name); printf("成績:%.2lf\n",p->data.price); PF; } void new_insert() { system("cls"); printf("請輸入插入的位置:"); int point,j=0; scanf("%d",&point); PF; LinkList p; p=L; while(p&&j<point-1) { p=p->next; ++j; } if(!p||j>point-1) { printf("輸入有誤!!-_-|||\n"); return ; } LinkList s; s=new LNode; printf("請輸入學號:"); scanf("%s",s->data.no); while(strlen(s->data.no)!=8) { PF; printf("請輸入學號8位:"); scanf("%s",s->data.no); } PF; printf("請輸入姓名:"); scanf("%s",s->data.name); PF; printf("請輸入成績:"); scanf("%lf",&s->data.price); PF;PF; s->next=p->next; p->next=s; printf("插入成功!!╰( ̄▽ ̄)╮\n"); PF; } void stu_del() { system("cls"); PF;PF; printf("輸入刪除學生的位置:"); int point,i=0; scanf("%d",&point); PF; LNode *p; p=L; while(p->next&&i<point-1) { p=p->next; ++i; } if(!p||i>point-1) { printf("輸入有誤!!-_-|||\n"); return ; } LNode *s; s=p->next; p->next=s->next; free(s); PF;PF; printf("刪除成功!!╰( ̄▽ ̄)╮\n"); } void count() { LNode *p; int len=0; p=L->next; while(p) { ++len; p=p->next; } printf("一共有 %d 學生\n",len); PF;PF; } int main() { InitList(); PF;PF; while(1) { int n; printf("\t\t1、學生資訊輸入\n"); printf("\t\t2、學生資訊瀏覽\n"); printf("\t\t3、姓名查詢學生資訊\n"); printf("\t\t4、指定位置查詢學生資訊\n"); printf("\t\t5、新增學生\n"); printf("\t\t6、刪除指定位置學生資訊\n"); printf("\t\t7、統計學生人數\n"); printf("\t\t8、退出\n"); PF;PF; printf("\t\t請選擇:"); scanf("%d",&n); switch(n) { case 1:in_put();break; case 2:out_put();break; case 3:find_name();break; case 4:find_point();break; case 5:new_insert();break; case 6:stu_del();break; case 7:count();break; case 8:exit(0); } } return 0; } </span>