本文實例為大家分享了C語言鏈表實現學生管理系統的具體代碼,供大家參考,具體內容如下
#include<stdio.h>#include<ctype.h>#include<fstream>#include<stdlib.h>#include<string.h>#include<iostream>using namespace std;typedef struct ndoe{ char id[10]; char name[10]; char sex[3]; char num[10]; struct node *next;}student;struct Student{ student data; struct Student *next;};/********創建學生信息**********/ Student * insert(Student * head){ Student * s,*r; head=(Student *)malloc(sizeof(Student)); printf("請輸入學生的個數:"); int n; scanf("%d",&n); r=head; printf("按照“學號 姓名 性別(M or G) 手機號”的形式輸入每個學生的信息/n"); for(int i=0;i<n;i++){ s=(Student *)malloc(sizeof(Student)); /*scanf("%s",s->data.id); scanf("%s",s->data.name); scanf("%s",s->data.sex); scanf("%s",s->data.num);*/ scanf("%s%s%s%s",s->data.id,s->data.name,s->data.sex,s->data.num); r->next=s; r=s; } r->next=NULL; printf("錄入成功/n"); return head;}/********增加學生************/void add(Student *head){ Student *s; s=head->next; while(s->next!=NULL) s=s->next; Student *ad=(Student *)malloc(sizeof(Student)); ad->next=NULL; s->next=ad; //printf("輸入新學生的信息:/n"); scanf("%s%s%s%s",ad->data.id,ad->data.name,ad->data.sex,ad->data.num); printf("添加成功/n"); return ;}/*************修改學生信息********************/ void change(Student * head){ printf("輸入1,按學號搜索學生,并修改改學生的信息/n"); printf("輸入2,按姓名搜索學生,并修改改學生的信息/n"); Student * s; int n; scanf("%d",&n); switch(n){ case 1:{ printf("請輸入學號:"); char number[10]; scanf("%s",number); s=head->next; while(s!=NULL){ if(strcmp(s->data.id,number)==0){ printf("請輸入要修改的信息:"); char phone[10]; scanf("%s",phone); strcpy(s->data.num,phone); printf("修改成功/n"); break; } s=s->next; } break; } case 2:{ printf("請輸入姓名:"); char nam[10]; scanf("%s",&nam); s=head->next; while(s!=NULL){ if(strcmp(s->data.name,nam)==0){ printf("請輸入要修改的信息:"); char phone[10]; scanf("%s",phone); strcpy(s->data.num,phone); printf("修改成功/n"); break; } s=s->next; } break; } } return ;}/**********刪除學生信息******************/void del(Student * head){ printf("輸入1,按學號搜索學生,并刪除該學生的信息/n"); printf("輸入2,按姓名搜索學生,并刪除該學生的信息/n"); Student * s,*r; int n; scanf("%d",&n); switch(n){ case 1:{ printf("請輸入學號:"); char number[10]; scanf("%s",number); s=head->next; r=head; while(s!=NULL){ if(strcmp(s->data.id,number)==0){ r->next=s->next; free(s); printf("刪除成功/n"); break; } r=s; s=s->next; } break; } case 2:{ printf("請輸入姓名:"); char nam[10]; scanf("%s",&nam); s=head->next; r=head; while(s!=NULL){ if(strcmp(s->data.name,nam)==0){ r->next=s->next; free(s); printf("刪除成功/n"); break; } r=s; s=s->next; } break; } } return ;}/**********查詢學生的信息**********************/void check(Student * head){ printf("輸入1,按學號搜索學生,并展示該學生的信息/n"); printf("輸入2,按姓名搜索學生,并展示該學生的信息/n"); Student * s,r; int n; scanf("%d",&n); switch(n){ case 1:{ printf("請輸入學號:"); char number[10]; scanf("%s",number); s=head->next; while(s!=NULL){ if(strcmp(s->data.id,number)==0){ printf("%s %s %s %s/n",s->data.id,s->data.name,s->data.sex,s->data.num); break; } s=s->next; } break; } case 2:{ printf("請輸入姓名:"); char nam[10]; scanf("%s",&nam); s=head->next; while(s!=NULL){ if(strcmp(s->data.name,nam)==0){ printf("%s %s %s %s/n",s->data.id,s->data.name,s->data.sex,s->data.num); break; } s=s->next; } break; } } if(s==NULL) printf("該學生不存在/n"); return ;} int main(){ Student *head=NULL; Student *a; printf("***歡迎進入學生管理系統***/n"); printf("***1:請錄入學生信息***/n"); printf("***2:請修改學生信息***/n"); printf("***3:請刪除學生信息***/n"); printf("***4:請查詢學生信息***/n"); printf("***5:請添加新學生信息**/n"); printf("***6: 退出管理系統 ***/n"); printf("*************************/n"); printf("請輸入命令:"); int n; while(scanf("%d",&n)&&n!=6){ switch(n){ case 1:{ printf("請錄入學生信息:/n"); head=insert(a); break; } case 2:{ printf("請改學生信息:/n"); change(head); break; } case 3:{ cout<<"請刪除學生信息:"<<endl; del(head); break; } case 4:{ cout<<"請查詢學生信息:"<<endl; check(head); break; } case 5:{ cout<<"請添加新學生信息:"<<endl; add(head); break; } default : break; } printf("請繼續輸入命令:"); } Student *s,*r; s=head->next; while(s!=NULL){ r=s->next; free(s); s=r; } free(head); return 0;}
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。
新聞熱點
疑難解答
圖片精選