<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
本文範例為大家分享了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("********** 您當前正在進行的操作是,輸入學生資訊 **********nn"); 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名學生的資訊:nn",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%sn",10," ","輸入完成,按任意鍵進入主選單!!!!"); getchar(); } /*輸出模組:顯示連結串列*/ void output_message() { char v; struct stud *p=h; system("cls"); printf("********** 您當前正在進行的操作是,顯示學生資訊 **********nn"); if(p==NULL) { printf("%*s%sn",10," ","當前沒有找到任何學生資訊,請您先輸入資訊,再執行本操作!n"); getchar();//吸收掉上一行錄入時鍵入的回車符號,否則卡不住 printf("%*s%sn",10," ","按任意鍵返回主選單!!!!"); getchar(); return; } printf(" 學號 姓名 性別 年齡 專業 年級 班級 樓號 樓層 宿舍號nn"); while(p!=NULL) { printf("%6d%10s%6s%6d%10s%6d%6d%6d%6d%8dn",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%sn",10," ","輸出完成,按任意鍵返回主選單!!!!"); getchar(); } /*插入新學生資訊:插入連結串列*/ void insert_message() { struct stud *p0,*p1; p1=(struct stud *)malloc(N); system("cls"); printf("********** 您當前正在進行的操作是,插入學生資訊 **********nn"); printf("n請輸入要插入學生的資訊:nn"); 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%sn",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%sn",10," ","插入成功! 按任意鍵返回主選單!!!!"); getchar(); } else if((p0->next->num)==(p1->num)) { free(p1); //如果已經存在這個學號,那就不能再插入了,釋放 getchar();//吸收掉上一行錄入時鍵入的回車符號,否則卡不住 printf("n%*s%sn",10," ","插入失敗,本學號資訊已經存在! 按任意鍵返回主選單!!!!"); getchar(); } else { //插入 p1->next=p0->next; p0->next=p1; getchar();//吸收掉上一行錄入時鍵入的回車符號,否則卡不住 printf("n%*s%sn",10," ","插入成功! 按任意鍵返回主選單!!!!"); getchar(); } } /*刪除學生資訊*/ void del_message() { int num; bool delOk=false; struct stud *p0,*p1; system("cls"); printf("********** 您當前正在進行的操作是,刪除學生資訊 **********nn"); if(h==NULL) { printf("%*s%sn",10," ","當前沒有找到任何學生資訊,請您先輸入資訊,再執行本操作!n"); getchar();//吸收掉上一行錄入時鍵入的回車符號,否則卡不住 printf("%*s%sn",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%sn",10," ","刪除成功! 按任意鍵返回主選單!!!!"); else printf("%*s%sn",10," ","沒有找到匹配學號,刪除失敗! 按任意鍵返回主選單!!!!"); getchar(); } //主函數 int main(void){ int choice; do{ system("cls"); printf("nnn"); printf("%*s%s",10," ","********** 學 生 宿 舍 管 理 系 統 **********nn"); printf("%*s%s",25," ","1.輸入學生資訊nn"); printf("%*s%s",25," ","2.輸出學生資訊nn"); printf("%*s%s",25," ","3.插入學生資訊nn"); printf("%*s%s",25," ","4.刪除學生資訊nn"); printf("%*s%s",25," ","0.退出系統nn"); printf("%*s%s",10," ","*********************************************nn"); 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++ 進行編譯偵錯
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援it145.com。
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45