欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C++實(shí)現(xiàn)學(xué)生宿舍管理系統(tǒng)

 更新時(shí)間:2022年03月16日 12:04:19   作者:麗時(shí)  
這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)學(xué)生宿舍管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了C++實(shí)現(xiàn)學(xué)生宿舍管理系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下

非常簡易,完成個(gè)作業(yè)夠用,僅供初學(xué)者參考,不喜勿噴。

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<malloc.h>

/*先用結(jié)構(gòu)體定義學(xué)生信息*/
struct stud?
{
? ? int ? num;?? ??? ??? ?//學(xué)號?
? ? char ?name[10];?? ??? ?//姓名?
? ? char ?sex[8];?? ??? ?//性別?
? ? int ? age;?? ??? ??? ?//年齡?
? ? char ?major[18]; ?? ?//專業(yè)?
? ? int ? grade;?? ??? ?//年級?
? ? int ? classes;?? ??? ?//班級?
? ? int ? building;?? ??? ?//樓號?
? ? int ? floor;?? ??? ?//樓層?
? ? int ? dormitary;?? ?//宿舍號?
? ? struct stud *next; /*next是指向本結(jié)構(gòu)體的類型的指針類型*/
};
struct stud *h; ? ? /*定義結(jié)構(gòu)體的指針變量*/

int N=sizeof(struct stud);//獲取結(jié)構(gòu)體總長度,用于分配內(nèi)存空間?

/*輸入模塊: 建立鏈表*/
void input_message()
{ ? struct stud *p1,*p2;
? ? int i,k;

?? ?system("cls");
? ? printf("********** 您當(dāng)前正在進(jìn)行的操作是,輸入學(xué)生信息 **********\n\n");
? ? printf("請輸入本次注冊的生總數(shù):");scanf("%d",&k);
? ? h=NULL;
?? ?printf("\n您共有%d個(gè)學(xué)生信息需要錄入\n",k);
?? ??
? ? if(k>0)
? ? {?
?? ? ?h=p2=p1=(struct stud*)malloc(N); ? ? /*為head,p2,p1申請存儲空間*/
? ? ? for(i=1;i<=k;i++)
? ? ? {?
?? ??? ?printf("\n請輸入第%d名學(xué)生的信息:\n\n",i);
?? ??? ?p1=(struct stud*)malloc(N);
? ? ? ? printf("學(xué)號:");
? ? ? ? scanf("%d",&p1->num);
? ? ? ? printf("姓名:");
? ? ? ? scanf("%s",p1->name);
? ? ? ? printf("性別(男或女):");
? ? ? ? scanf("%s",p1->sex);
? ? ? ? printf("年齡:");
? ? ? ? scanf("%d",&p1->age);
? ? ? ? printf("專業(yè):");
? ? ? ? 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; ? ? ? ? ? ? ? ? ? ? ? ? ? ?/*將新結(jié)點(diǎn)連到表尾*/
? ? ? ? p2=p1; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?/*p2指向新的表尾*/
? ? ? ?}
? ? ? ?p2->next=NULL;
? ? ? ?h=h->next;
? ? ? }
? ? ??
? ? ? getchar();//吸收掉上一行錄入時(shí)鍵入的回車符號,否則卡不住?
? ? ? printf("\n%*s%s\n",10," ","輸入完成,按任意鍵進(jìn)入主菜單!!!!");
? ? ? getchar();
}

/*輸出模塊:顯示鏈表*/
void output_message()
{
?? ?char v;
?? ?struct stud *p=h;
?? ?system("cls");
?? ?printf("********** 您當(dāng)前正在進(jìn)行的操作是,顯示學(xué)生信息 **********\n\n");
?? ?
?? ?if(p==NULL)
?? ?{
?? ??? ?printf("%*s%s\n",10," ","當(dāng)前沒有找到任何學(xué)生信息,請您先輸入信息,再執(zhí)行本操作!\n");
?? ??? ?getchar();//吸收掉上一行錄入時(shí)鍵入的回車符號,否則卡不住?
?? ??? ?printf("%*s%s\n",10," ","按任意鍵返回主菜單!!!!");
?? ??? ?getchar();
?? ??? ?return;?
?? ?}

?? ?printf(" ?學(xué)號 ? ? ?姓名 ?性別 ?年齡 ? ? ?專業(yè) ?年級 ?班級 ?樓號 ?樓層 ?宿舍號\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();//吸收掉上一行錄入時(shí)鍵入的回車符號,否則卡不住?
?? ?printf("\n%*s%s\n",10," ","輸出完成,按任意鍵返回主菜單!!!!");
?? ?getchar();
}

/*插入新學(xué)生信息:插入鏈表*/
void insert_message()
{ ?
?? ?struct stud *p0,*p1;
?? ?p1=(struct stud *)malloc(N);
?? ?system("cls");
?? ?printf("********** 您當(dāng)前正在進(jìn)行的操作是,插入學(xué)生信息 **********\n\n");
? ??? ?
? ??? ?printf("\n請輸入要插入學(xué)生的信息:\n\n");
?? ?p1=(struct stud*)malloc(N);
? ? printf("學(xué)號:");
? ? scanf("%d",&p1->num);
? ? printf("姓名:");
? ? scanf("%s",p1->name);
? ? printf("性別(男或女):");
? ? scanf("%s",p1->sex);
? ? printf("年齡:");
? ? scanf("%d",&p1->age);
? ? printf("專業(yè):");
? ? 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)//如果鏈表為空,插入的節(jié)點(diǎn)設(shè)為表頭
?? ?{ ?
? ??? ??? ?h=p1;
?? ??? ?getchar();//吸收掉上一行錄入時(shí)鍵入的回車符號,否則卡不住?
?? ??? ?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();//吸收掉上一行錄入時(shí)鍵入的回車符號,否則卡不住?
?? ??? ?printf("\n%*s%s\n",10," ","插入成功! 按任意鍵返回主菜單!!!!");
?? ??? ?getchar();?
?? ?}
? ? else if((p0->next->num)==(p1->num))
?? ?{
?? ??? ?free(p1);?? ?//如果已經(jīng)存在這個(gè)學(xué)號,那就不能再插入了,釋放
?? ??? ?
?? ??? ?getchar();//吸收掉上一行錄入時(shí)鍵入的回車符號,否則卡不住?
?? ??? ?printf("\n%*s%s\n",10," ","插入失敗,本學(xué)號信息已經(jīng)存在! 按任意鍵返回主菜單!!!!");
?? ??? ?getchar();
?? ?}
?? ?else
?? ?{
?? ??? ?//插入?
?? ??? ?p1->next=p0->next;
?? ??? ?p0->next=p1;?
?? ??? ?
?? ??? ?getchar();//吸收掉上一行錄入時(shí)鍵入的回車符號,否則卡不住?
?? ??? ?printf("\n%*s%s\n",10," ","插入成功! 按任意鍵返回主菜單!!!!");
?? ??? ?getchar(); ? ? ? ??? ?
?? ?}
}

/*刪除學(xué)生信息*/
void del_message()
{ ?
?? ?int num;
?? ?bool delOk=false;
?? ?
?? ?struct stud *p0,*p1;
?? ?
?? ?system("cls");
?? ?printf("********** 您當(dāng)前正在進(jìn)行的操作是,刪除學(xué)生信息 **********\n\n");
?? ??? ?
?? ?if(h==NULL)
?? ?{
?? ??? ?printf("%*s%s\n",10," ","當(dāng)前沒有找到任何學(xué)生信息,請您先輸入信息,再執(zhí)行本操作!\n");
?? ??? ?getchar();//吸收掉上一行錄入時(shí)鍵入的回車符號,否則卡不住?
?? ??? ?printf("%*s%s\n",10," ","按任意鍵返回主菜單!!!!");
?? ??? ?getchar();
?? ??? ?return;?
?? ?}
?? ?
?? ?printf("請輸入要?jiǎng)h除學(xué)生的學(xué)號:");
?? ?scanf("%d",&num);
?? ?p0=h;
?? ?if(p0->num==num)
?? ?{
?? ??? ?h=p0->next;
?? ??? ?free(p0); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?/*若首結(jié)點(diǎn)是所要?jiǎng)h除的數(shù)據(jù),則釋放首結(jié)點(diǎn)*/
?? ??? ?delOk=true;
?? ?}
?? ?else
?? ?{
?? ??? ?p1=p0->next;
?? ??? ?while(p1!=NULL)
?? ??? ?{
?? ??? ??? ?if(p1->num==num)
?? ??? ??? ?{
?? ??? ??? ??? ?p0->next=p1->next;
?? ??? ??? ??? ?free(p1);
?? ??? ??? ??? ?delOk=true;
?? ??? ??? ??? ?break; //跳出循環(huán)?
?? ??? ??? ?}
?? ??? ??? ?p0=p1;
?? ??? ??? ?p1=p1->next;
?? ? ? }?? ??? ?
?? ? }?
?? ??
?? ?getchar();//吸收掉上一行錄入時(shí)鍵入的回車符號,否則卡不住?
?? ? if(delOk)
?? ??? ?printf("%*s%s\n",10," ","刪除成功! 按任意鍵返回主菜單!!!!");
?? ? else
?? ??? ?printf("%*s%s\n",10," ","沒有找到匹配學(xué)號,刪除失敗! 按任意鍵返回主菜單!!!!");
?? ??? ?
?? ?getchar();

}

//主函數(shù)?
int main(void){
? ? int choice;
? ??
? ? ? do{
?? ??? ?system("cls");
?? ??? ?printf("\n\n\n");
?? ??? ?printf("%*s%s",10," ","********** 學(xué) 生 宿 舍 管 理 系 統(tǒng) **********\n\n");
?? ??? ?printf("%*s%s",25," ","1.輸入學(xué)生信息\n\n");
?? ??? ?printf("%*s%s",25," ","2.輸出學(xué)生信息\n\n");
?? ? ? ?? ?printf("%*s%s",25," ","3.插入學(xué)生信息\n\n");
?? ? ? ?? ?printf("%*s%s",25," ","4.刪除學(xué)生信息\n\n");
?? ? ? ?? ?printf("%*s%s",25," ","0.退出系統(tǒng)\n\n");
?? ? ? ?? ?printf("%*s%s",10," ","*********************************************\n\n");
?? ? ? ?? ?printf("%*s%s",10," ","請選擇0-4之間任意整數(shù):");
?? ??? ?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++ 進(jìn)行編譯調(diào)試

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • C++?socket通信遇到的問題及解決方法

    C++?socket通信遇到的問題及解決方法

    這篇文章主要介紹了C++?socket通信遇到的問題,通過代碼修改來解決這個(gè)問題,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2023-08-08
  • C語言位圖算法詳解

    C語言位圖算法詳解

    這篇文章主要介紹了C語言實(shí)現(xiàn)的位圖算法,主要包括了位圖算法的定義與應(yīng)用,對于C程序算法設(shè)計(jì)的學(xué)習(xí)有一定的借鑒價(jià)值,需要的朋友可以參考下
    2014-09-09
  • VS2019上配置CUDA的環(huán)境步驟

    VS2019上配置CUDA的環(huán)境步驟

    本文主要介紹了VS2019上配置CUDA的環(huán)境步驟,文中通過圖文示例介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • 關(guān)于C++靜態(tài)成員函數(shù)訪問非靜態(tài)成員變量的問題

    關(guān)于C++靜態(tài)成員函數(shù)訪問非靜態(tài)成員變量的問題

    靜態(tài)成員函數(shù)不能訪問非靜態(tài)成員,這是因?yàn)殪o態(tài)函數(shù)屬于類而不是屬于整個(gè)對象,靜態(tài)函數(shù)中的 member可能都沒有分配內(nèi)存。靜態(tài)成員函數(shù)沒有隱含的this自變量。所以,它就無法訪問自己類的非靜態(tài)成員
    2013-10-10
  • C++對象內(nèi)存分布詳解(包括字節(jié)對齊和虛函數(shù)表)

    C++對象內(nèi)存分布詳解(包括字節(jié)對齊和虛函數(shù)表)

    下面小編就為大家?guī)硪黄狢++對象內(nèi)存分布詳解(包括字節(jié)對齊和虛函數(shù)表)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-12-12
  • C++制作俄羅斯方塊

    C++制作俄羅斯方塊

    俄羅斯方塊寫過好幾次了,每次的感覺都不一樣,都有新的收獲。就像達(dá)芬奇畫雞蛋一樣,雖然都是畫同樣的雞蛋,但是每次都有不同的收獲。&nbsp;
    2016-05-05
  • Linux配置C++11編譯環(huán)境的方法

    Linux配置C++11編譯環(huán)境的方法

    這篇文章主要介紹了Linux配置C++11編譯環(huán)境,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-10-10
  • C++如何動態(tài)的生成對象詳解

    C++如何動態(tài)的生成對象詳解

    C++是不支持根據(jù)類名動態(tài)地生成對象的,比如從一個(gè)文本文件中讀取類名然后構(gòu)造一個(gè)對象.主要原因是沒有豐富的動態(tài)元信息,沒有單根類庫。那么下面這篇文章就來給大家介紹C++是如何動態(tài)的生成對象,有需要的朋友們可以參考借鑒。
    2017-02-02
  • C++解析Json的方法詳解【jsoncpp】

    C++解析Json的方法詳解【jsoncpp】

    這篇文章主要介紹了C++解析Json的方法,結(jié)合實(shí)例形式分析了C++操作json格式數(shù)據(jù)的相關(guān)實(shí)現(xiàn)技巧與注意事項(xiàng),需要的朋友可以參考下
    2017-06-06
  • C/C++?string.h庫中memcpy()和memmove()的使用

    C/C++?string.h庫中memcpy()和memmove()的使用

    memcpy與memmove的目的都是將N個(gè)字節(jié)的源內(nèi)存地址的內(nèi)容拷貝到目標(biāo)內(nèi)存地址中,本文主要介紹了C/C++?string.h庫中memcpy()和memmove()的使用,感興趣的可以了解一下
    2023-12-12

最新評論