學生資訊管理系統----線性表
阿新 • • 發佈:2018-12-23
資料結構線性表實驗,學生管理系統,c語言的時候不是自己寫的,現在又有機會自己寫一份,定義了全域性的連結串列,老師說函式沒引數,最好用ADT,就到這吧,不想改了,看來以後寫程式要考慮函式的通用性,應該系統的學學C++了,用物件的思想來寫程式了;
SqList:
LinkList:#include<stdio.h> #include<string.h> #include<conio.h> #include<stdlib.h> const int MAXN=100+10; typedef struct{ char name[10]; char no[10]; int sco; }Student; int len=0; void Input(Student *stu) { printf("輸入學生個數: "); int N,i; scanf("%d",&N); if(N>=MAXN) printf("輸入人數已達最大限度(最多學生人數為109人),請諒解!\n"); else{ len=N; for(i=1;i<=N;++i) { printf("\n請輸入第%d個學生的名字: ",i); scanf("%s",stu[i].name); printf("\n請輸入第%d個學生的學號: ",i); scanf("%s",stu[i].no); printf("\n請輸入第%d個學生的分數: ",i); scanf("%d",&stu[i].sco); } } printf("\n\n輸入回車鍵返回主選單"); getch(); return ; } void Output(Student *stu) { int i=0; if(len<=0) printf("\n尚未錄入學生資訊,請錄入!!!"); else { printf("姓名\t\t學號\t\t成績\n"); for(i=1;i<=len;++i) { printf("%-16s%-16s%d\n",stu[i].name,stu[i].no,stu[i].sco); } } printf("\n輸入回車鍵返回主選單"); getch(); return ; } void Get_Len(Student *stu) { if(len<=0) printf("學生人數為0,請先錄入學生資訊!!!\n"); else{ printf("\n學生總數為: %d\n",len); } printf("\n\n輸入回車鍵返回主選單"); getch(); return ; } void Search_Name(Student *stu) { printf("\n請輸入學生姓名:"); char str[23]; scanf("%s",str); int i=0; for(i=1;i<=len;++i) { if(!strcmp(str,stu[i].name)) break; } if(i<=len) printf("\n該學生的學號為: %s 成績為: %d\n",stu[i].no,stu[i].sco); else printf("找不到該學生資訊\n"); printf("\n\n輸入回車鍵返回主選單"); getch(); } void Search_Pos(Student *stu) { printf("請輸入學生序號: "); int num; scanf("%d",&num); puts(""); if(num>len||num<1) { printf("輸入錯誤,請核對後重試!!!\n"); return ; } else { printf("學生姓名:%s\n",stu[num].name); printf("學生學號:%s\n",stu[num].no); printf("學生分數:%d\n",stu[num].sco); } printf("\n\n輸入回車鍵返回主選單"); getch(); } void Insert(Student *stu) { printf("請輸入插入位置: "); int pos; scanf("%d",&pos); puts(""); if(pos<1||pos>len+1) printf("輸入資訊錯誤,請核對後再試!!!\n"); else{ int i=0; for(i=len;i>=pos;--i) { strcpy(stu[i+1].name,stu[i].name); strcpy(stu[i+1].no,stu[i].no); stu[i+1].sco=stu[i].sco; } printf("請輸入要插入的學生的資訊\n"); printf("姓名: "); scanf("%s",stu[pos].name); printf("學號: "); scanf("%s",stu[pos].no); printf("分數:"); scanf("%d",&stu[pos].sco); printf("\n插入成功!"); len++; } printf("\n\n輸入回車鍵返回主選單"); getch(); } void Delete(Student *stu) { if(len<=0) printf("\n學生人數為0,請先錄入學生資訊!!!"); else { printf("\n請輸入刪除學生的編號: "); int num=0; scanf("%d",&num); puts(""); if(num<1||num>len) { printf("\n輸入有誤,請核對後重試!!!\n"); } else{ int i=0; for(i=num;i<len;++i) { strcpy(stu[i].name,stu[i+1].name); strcpy(stu[i].no,stu[i+1].no); stu[i].sco=stu[i+1].sco; } len--; printf("\n成功刪除!!!\n"); } } printf("\n\n輸入回車鍵返回主選單"); getch(); } void meau(Student *stu) { int choose; printf("--------------------------歡迎使用學生資訊管理系統----------------------------\n\n\n\n"); printf("1.輸入學生資訊\n"); printf("2.檢視學生資訊\n"); printf("3.輸入姓名,查詢學生資訊\n"); printf("4.輸入學生編號,檢視學生資訊\n"); printf("5.輸入學生資訊,插入到指定位置\n"); printf("6.刪除指定位置學生資訊\n"); printf("7.統計學生個數\n"); printf("8.退出系統\n"); printf("\n\n請輸入操做所對編號: "); scanf("%d",&choose); puts(""); switch(choose) { case 1: Input(stu); break; case 2: Output(stu); break; case 3: Search_Name(stu); break; case 4: Search_Pos(stu); break; case 5: Insert(stu); break; case 6: Delete(stu); break; case 7: Get_Len(stu); break; case 8: exit(0); default: printf("\n輸入有誤! 請核對後重新輸如入!!!\n"); printf("\n\n輸入回車鍵返回主選單"); getch(); break; } return ; } int main() { system("color 4e"); Student stu[MAXN]; while(1) { system("CLS"); meau(stu); } return 0; }
#include<stdio.h> #include<string.h> #include<stdlib.h> #include<conio.h> #include<malloc.h> typedef struct Student{ char name[22],no[22]; int sco; }Student; typedef struct LNode{ Student date; struct LNode *next; }LNode,*LinkList; void Ini(LinkList &L) { L=(LinkList)malloc(sizeof(LNode)); L->next=NULL; L->date.sco=0; } void CreateList_R(LinkList &L) { printf("請輸入錄入學生個數: "); int N; scanf("%d",&N); L->date.sco=N; LNode *p=L; int i=0; for(i=1;i<=N;++i) { LNode *b=(LinkList)malloc(sizeof(LNode)); b->next=NULL; printf("\n請輸入第%d個學生的姓名: ",i); scanf("%s",b->date.name); printf("\n請輸入第%d個學生的學號: ",i); scanf("%s",b->date.no); printf("\n請輸入第%d個學生的成績: ",i); scanf("%d",&b->date.sco); p->next=b; p=b; } printf("\n資訊錄入成功!"); printf("\n\n輸入回車鍵返回主選單"); getch(); } void TraveList(LinkList &L) { if(L->next==NULL) printf("\n尚未錄入學生資訊,請錄入!!!"); else{ LNode* p=L->next; printf("姓名\t\t學號\t\t成績\n"); while(p!=NULL) { printf("%-16s%-16s%d\n",p->date.name,p->date.no,p->date.sco); p=p->next; } } printf("\n\n輸入回車鍵返回主選單"); getch(); } void Search_Name(LinkList &L) { printf("\n請輸入學生姓名:"); char str[23]; scanf("%s",str); LNode *p=L; while(p->next&&strcmp(str,p->next->date.name)) p=p->next; if(p->next) printf("\n該學生的學號為: %s 成績為: %d\n",p->next->date.no,p->next->date.sco); else printf("\n找不到該學生資訊!!!\n"); printf("\n\n輸入回車鍵返回主選單"); getch(); } void Search_Pos(LinkList &L) { printf("請輸入學生序號: "); int num; scanf("%d",&num); puts(""); if(num>L->date.sco||num<1) printf("輸入錯誤,請核對後重試!!!\n"); else { LNode *p=L; int i=0; while(i<num) { p=p->next; ++i; } printf("學生姓名:%s\n",p->date.name); printf("學生學號:%s\n",p->date.no); printf("學生分數:%d\n",p->date.sco); } printf("\n\n輸入回車鍵返回主選單"); getch(); } void Insert(LinkList &L) { printf("請輸入插入位置: "); int pos; scanf("%d",&pos); puts(""); if(pos<1||pos>L->date.sco+1) printf("輸入資訊錯誤,請核對後再試!!!\n"); else{ LNode *s=(LNode*)malloc(sizeof(LNode)); printf("請輸入要插入的學生的資訊\n"); printf("姓名: "); scanf("%s",s->date.name); printf("學號: "); scanf("%s",s->date.no); printf("分數:"); scanf("%d",&s->date.sco); int i=0; LNode *p=L; while(i<pos-1) { p=p->next; ++i; } s->next=p->next; p->next=s; printf("\n插入成功!"); L->date.sco++; } printf("\n\n輸入回車鍵返回主選單"); getch(); } void Delete(LinkList &L) { if(L->date.sco<=0) printf("學生人數為0,請先錄入學生資訊!!!"); else { printf("請輸入刪除學生的編號: "); int num=0; scanf("%d",&num); puts(""); if(num<1||num>(L->date.sco+1)) { printf("輸入有誤,請核對後重試!!!\n"); } else{ int i=1; LNode *pre=L,*s=L->next; while(i<num) { pre=pre->next; s=s->next; ++i; } pre->next=s->next; free(s); L->date.sco--; printf("\n刪除成功!"); } } printf("\n\n輸入回車鍵返回主選單"); getch(); } void Get_Len(LinkList &L) { int len=L->date.sco; if(len<=0) printf("學生人數為0,請先錄入學生資訊!!!\n"); else{ printf("\n學生總數為: %d\n",len); } printf("\n\n輸入回車鍵返回主選單"); getch(); return ; } void Meau(LinkList &L) { int choose; printf("--------------------------歡迎使用學生資訊管理系統----------------------------\n\n\n\n"); printf("1.輸入學生資訊\n"); printf("2.檢視學生資訊\n"); printf("3.輸入姓名,查詢學生資訊\n"); printf("4.輸入學生編號,檢視學生資訊\n"); printf("5.輸入學生資訊,插入到指定位置\n"); printf("6.刪除指定位置學生資訊\n"); printf("7.統計學生個數\n"); printf("8.退出系統\n"); printf("\n\n請輸入操做所對編號: "); scanf("%d",&choose); puts(""); switch(choose) { case 1: CreateList_R(L); break; case 2: TraveList(L); break; case 3: Search_Name(L); break; case 4: Search_Pos(L); break; case 5: Insert(L); break; case 6: Delete(L); break; case 7: Get_Len(L); break; case 8: exit(0); default: printf("\n輸入有誤! 請核對後重新輸如入!!!\n"); printf("\n\n輸入回車鍵返回主選單"); getch(); break; } return ; } int main() { system("color 4e"); LinkList L; Ini(L); while(1) { system("cls"); Meau(L); } return 0; }