您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關如何使用C++實現學生宿舍管理系統的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
具體內容如下
非常簡易,完成個作業夠用,僅供初學者參考,不喜勿噴。
#include<stdio.h> #include<stdlib.h> #include<string.h> #include<malloc.h> /*先用結構體定義學生信息*/ struct stud { int num; //學號 char name[10]; //姓名 char sex[8]; //性別 int age; //年齡 char major[18]; //專業 int grade; //年級 int classes; //班級 int building; //樓號 int floor; //樓層 int dormitary; //宿舍號 struct stud *next; /*next是指向本結構體的類型的指針類型*/ }; struct stud *h; /*定義結構體的指針變量*/ int N=sizeof(struct stud);//獲取結構體總長度,用于分配內存空間 /*輸入模塊: 建立鏈表*/ void input_message() { struct stud *p1,*p2; int i,k; system("cls"); printf("********** 您當前正在進行的操作是,輸入學生信息 **********\n\n"); printf("請輸入本次注冊的生總數:");scanf("%d",&k); h=NULL; printf("\n您共有%d個學生信息需要錄入\n",k); if(k>0) { h=p2=p1=(struct stud*)malloc(N); /*為head,p2,p1申請存儲空間*/ for(i=1;i<=k;i++) { printf("\n請輸入第%d名學生的信息:\n\n",i); p1=(struct stud*)malloc(N); printf("學號:"); scanf("%d",&p1->num); printf("姓名:"); scanf("%s",p1->name); printf("性別(男或女):"); scanf("%s",p1->sex); printf("年齡:"); scanf("%d",&p1->age); printf("專業:"); scanf("%s",p1->major); printf("年級:"); scanf("%d",&p1->grade); printf("班級:"); scanf("%d",&p1->classes); printf("樓號:"); scanf("%d",&p1->building); printf("樓層:"); scanf("%d",&p1->floor); printf("宿舍號:"); scanf("%d",&p1->dormitary); p2->next=p1; /*將新結點連到表尾*/ p2=p1; /*p2指向新的表尾*/ } p2->next=NULL; h=h->next; } getchar();//吸收掉上一行錄入時鍵入的回車符號,否則卡不住 printf("\n%*s%s\n",10," ","輸入完成,按任意鍵進入主菜單!!!!"); getchar(); } /*輸出模塊:顯示鏈表*/ void output_message() { char v; struct stud *p=h; system("cls"); printf("********** 您當前正在進行的操作是,顯示學生信息 **********\n\n"); if(p==NULL) { printf("%*s%s\n",10," ","當前沒有找到任何學生信息,請您先輸入信息,再執行本操作!\n"); getchar();//吸收掉上一行錄入時鍵入的回車符號,否則卡不住 printf("%*s%s\n",10," ","按任意鍵返回主菜單!!!!"); getchar(); return; } printf(" 學號 姓名 性別 年齡 專業 年級 班級 樓號 樓層 宿舍號\n\n"); while(p!=NULL) { printf("%6d%10s%6s%6d%10s%6d%6d%6d%6d%8d\n",p->num,p->name,p->sex,p->age,p->major,p->grade,p->classes,p->building,p->floor,p->dormitary); p=p->next; } getchar();//吸收掉上一行錄入時鍵入的回車符號,否則卡不住 printf("\n%*s%s\n",10," ","輸出完成,按任意鍵返回主菜單!!!!"); getchar(); } /*插入新學生信息:插入鏈表*/ void insert_message() { struct stud *p0,*p1; p1=(struct stud *)malloc(N); system("cls"); printf("********** 您當前正在進行的操作是,插入學生信息 **********\n\n"); printf("\n請輸入要插入學生的信息:\n\n"); p1=(struct stud*)malloc(N); printf("學號:"); scanf("%d",&p1->num); printf("姓名:"); scanf("%s",p1->name); printf("性別(男或女):"); scanf("%s",p1->sex); printf("年齡:"); scanf("%d",&p1->age); printf("專業:"); scanf("%s",p1->major); printf("年級:"); scanf("%d",&p1->grade); printf("班級:"); scanf("%d",&p1->classes); printf("樓號:"); scanf("%d",&p1->building); printf("樓層:"); scanf("%d",&p1->floor); printf("宿舍號:"); scanf("%d",&p1->dormitary); p1->next=NULL; if(h==NULL)//如果鏈表為空,插入的節點設為表頭 { h=p1; getchar();//吸收掉上一行錄入時鍵入的回車符號,否則卡不住 printf("\n%*s%s\n",10," ","插入成功! 按任意鍵返回主菜單!!!!"); getchar(); return; } p0=h; while((p0->next)!=NULL&&(p0->next->num)<(p1->num)) { p0=p0->next; } if(p0->next==NULL) { p0->next=p1; //如果到尾部了加到尾部 getchar();//吸收掉上一行錄入時鍵入的回車符號,否則卡不住 printf("\n%*s%s\n",10," ","插入成功! 按任意鍵返回主菜單!!!!"); getchar(); } else if((p0->next->num)==(p1->num)) { free(p1); //如果已經存在這個學號,那就不能再插入了,釋放 getchar();//吸收掉上一行錄入時鍵入的回車符號,否則卡不住 printf("\n%*s%s\n",10," ","插入失敗,本學號信息已經存在! 按任意鍵返回主菜單!!!!"); getchar(); } else { //插入 p1->next=p0->next; p0->next=p1; getchar();//吸收掉上一行錄入時鍵入的回車符號,否則卡不住 printf("\n%*s%s\n",10," ","插入成功! 按任意鍵返回主菜單!!!!"); getchar(); } } /*刪除學生信息*/ void del_message() { int num; bool delOk=false; struct stud *p0,*p1; system("cls"); printf("********** 您當前正在進行的操作是,刪除學生信息 **********\n\n"); if(h==NULL) { printf("%*s%s\n",10," ","當前沒有找到任何學生信息,請您先輸入信息,再執行本操作!\n"); getchar();//吸收掉上一行錄入時鍵入的回車符號,否則卡不住 printf("%*s%s\n",10," ","按任意鍵返回主菜單!!!!"); getchar(); return; } printf("請輸入要刪除學生的學號:"); scanf("%d",&num); p0=h; if(p0->num==num) { h=p0->next; free(p0); /*若首結點是所要刪除的數據,則釋放首結點*/ delOk=true; } else { p1=p0->next; while(p1!=NULL) { if(p1->num==num) { p0->next=p1->next; free(p1); delOk=true; break; //跳出循環 } p0=p1; p1=p1->next; } } getchar();//吸收掉上一行錄入時鍵入的回車符號,否則卡不住 if(delOk) printf("%*s%s\n",10," ","刪除成功! 按任意鍵返回主菜單!!!!"); else printf("%*s%s\n",10," ","沒有找到匹配學號,刪除失敗! 按任意鍵返回主菜單!!!!"); getchar(); } //主函數 int main(void){ int choice; do{ system("cls"); printf("\n\n\n"); printf("%*s%s",10," ","********** 學 生 宿 舍 管 理 系 統 **********\n\n"); printf("%*s%s",25," ","1.輸入學生信息\n\n"); printf("%*s%s",25," ","2.輸出學生信息\n\n"); printf("%*s%s",25," ","3.插入學生信息\n\n"); printf("%*s%s",25," ","4.刪除學生信息\n\n"); printf("%*s%s",25," ","0.退出系統\n\n"); printf("%*s%s",10," ","*********************************************\n\n"); printf("%*s%s",10," ","請選擇0-4之間任意整數:"); scanf("%d",&choice); switch(choice) { case 1:input_message();break; case 2:output_message();break; case 3:insert_message();break; case 4:del_message();break; case 0:break; } }while(choice!=0); }
可以用 Dev-C++ 進行編譯調試
感謝各位的閱讀!關于“如何使用C++實現學生宿舍管理系統”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。