C語(yǔ)言實(shí)現(xiàn)宿舍管理系統(tǒng)設(shè)計(jì)
本文實(shí)例為大家分享了C語(yǔ)言實(shí)現(xiàn)宿舍管理系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下
設(shè)計(jì)目的
《數(shù)據(jù)結(jié)構(gòu)》課程主要介紹最常用的數(shù)據(jù)結(jié)構(gòu),進(jìn)行數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)要達(dá)到以下目的:
(1)了解并掌握數(shù)據(jù)結(jié)構(gòu)與算法的設(shè)計(jì)方法,具備初步的獨(dú)立分析和設(shè)計(jì)能力;
(2)初步掌握軟件開(kāi)發(fā)過(guò)程的問(wèn)題分析、系統(tǒng)設(shè)計(jì)、程序編碼、測(cè)試等基本方法和技能;
(3)提高綜合運(yùn)用所學(xué)的理論知識(shí)和方法獨(dú)立分析和解決問(wèn)題的能力;
(4)訓(xùn)練用系統(tǒng)的觀點(diǎn)和軟件開(kāi)發(fā)一般規(guī)范進(jìn)行軟件開(kāi)發(fā),培養(yǎng)軟件工作者所應(yīng)具備的科學(xué)的工作方法和作風(fēng)。
任務(wù)概述
設(shè)計(jì)內(nèi)容:
(1)輸入記錄(記錄數(shù)不少于12條)并建立數(shù)據(jù)文件,數(shù)據(jù)文件按關(guān)鍵字(姓名、 學(xué)號(hào)、房號(hào))進(jìn)行排序(冒泡、選擇、插入排序等任選兩種),每間房最多6人。
(2)顯示記錄;
(3)查找記錄,用二分法實(shí)現(xiàn)按姓名、學(xué)號(hào)、房號(hào)查詢(xún);
(4)打印任一查詢(xún)結(jié)果;
(5)刪除記錄;
(6)能夠?qū)崿F(xiàn)連續(xù)操作,直至選擇退出為止。
設(shè)計(jì)要求:
(1)符合課題要求,實(shí)現(xiàn)相應(yīng)功能;
(2)要求界面友好美觀,操作方便易行;
(3)注意程序的實(shí)用性、安全性;
工作任務(wù):
(1) 選擇合適的數(shù)據(jù)結(jié)構(gòu),并定義數(shù)據(jù)結(jié)構(gòu)的結(jié)構(gòu)體;
(2)根據(jù)程序所要完成的基本要求和程序?qū)崿F(xiàn)提示,設(shè)計(jì)出完整的算法;
(3) 按格式要求寫(xiě)出課程設(shè)計(jì)說(shuō)明書(shū)。
項(xiàng)目源碼
涉及到的文件操作
文件名稱(chēng)dorm.txt luzehua 13 153 zhuyucheng 25 153 heshu 37 153 lijinagyang 19 153 quanghehng 31 153 lujinagbo 43 153 zhangjiatoa 44 155 lirngjie 14 155 qianxin 26 155 fanzijinag 34 175 zhangchengye 35 275
c源碼
#include<stdio.h> #include<stdlib.h> #include<string.h> ? ? ? #define OK ?1 #define ERROR 0 #define OVERFLOW -2 ?? ??? ? ? ? ?? #define LIST_INIT_SIZE 100 ? ? ? ? ? ? ? ? ? ? ? ? //線性表存儲(chǔ)空間的初始分配量 #define LISTINCREMENT 10 ? ? ? ? ? ? ? ? ?? ??? ? //線性表存儲(chǔ)空間的分配量增量 typedef int Status; typedef struct{ ?? ?char name[15];?? ??? ??? ??? ??? ?//名字 ?? ?int No; ?? ??? ??? ??? ??? ??? ?//學(xué)號(hào)? ?? ?int Room;?? ??? ??? ??? ??? ??? ?//宿舍號(hào)? }Student; Student student; typedef struct{ ?? ?int length; ? ? ? ?? ??? ??? ??? ??? ??? ?//長(zhǎng)度 ?? ?int listsize; ? ? ?? ??? ??? ??? ??? ??? ?//占用內(nèi)存空間 ?? ?Student *elem; ? ? ? ? ?? ??? ??? ??? ??? ?//引用對(duì)象Student的數(shù)據(jù)成員elem }Linklist; int flag=0; Status init(Linklist &L);?? ??? ??? ??? ??? ?//初始化線性表? Status create(Linklist &L);?? ??? ??? ??? ??? ?//創(chuàng)建線性表? //冒泡排序? Status MSortRoom(Linklist &L);?? ??? ??? ??? ?//按宿舍號(hào)排序? Status MSortNo(Linklist &L);?? ??? ??? ??? ?//按學(xué)號(hào)排序? Status MSortName(Linklist & L);?? ??? ??? ??? ?//按姓名排序? //選擇排序? Status XSortRoom(Linklist &L);?? ??? ??? ??? ?//按宿舍號(hào)排序? Status XSortNo(Linklist &L);?? ??? ??? ??? ?//按學(xué)號(hào)排序? Status XSortName(Linklist & L);?? ??? ??? ??? ?//按姓名排序? //直接插入排序? Status CSortRoom(Linklist &L);?? ??? ??? ??? ?//按宿舍號(hào)排序? Status CSortNo(Linklist &L);?? ??? ??? ??? ?//按學(xué)號(hào)排序? Status CSortName(Linklist &L);?? ??? ??? ??? ?//按姓名排序? Status SearchRoom(Linklist &L);?? ??? ??? ? ? ? //按宿舍號(hào)查找? Status SearchNo(Linklist &L);?? ??? ??? ??? ?//按學(xué)號(hào)查找? Status SearchName(Linklist &L)?? ?;?? ??? ??? ?//按名字查找? Status Judge1(char ch);?? ??? ??? ??? ??? ??? ?//判斷學(xué)生存在時(shí)是否繼續(xù)? Status Judge2(char ch);?? ??? ??? ??? ??? ??? ?//判斷學(xué)生不存在是是否繼續(xù)? Status Judge3();?? ??? ??? ??? ??? ??? ??? ?//判斷是否有學(xué)生記錄? Status JudgeNO(int NO,Linklist L); ? ? ? ? ?//判斷學(xué)號(hào)是否重復(fù)? void input(Linklist L);?? ??? ??? ??? ??? ??? ?//輸入學(xué)生信息? void PrintSort(Linklist &L);?? ??? ??? ??? ?//輸出排序后的信息? void PrintSearch(Linklist &L,int mid);?? ??? ?//輸出查找的信息 (按學(xué)號(hào)和姓名)? void PrintSearch1(Linklist &L,int mid);?? ??? ?//輸出查找的信息(按房號(hào))? Status DeleteNO(Linklist &L);?? ??? ??? ??? ?//按學(xué)號(hào)刪除某同學(xué)的信息 ?? ? Status DeleteName(Linklist &L);?? ??? ??? ??? ?//按姓名刪除某同學(xué)的信息? Status DeleteRoom(Linklist &L);?? ??? ??? ??? ?//按宿舍號(hào)刪除某同學(xué)的信息? Status insert(Linklist &L);?? ??? ??? ??? ??? ?//插入某同學(xué)的信息? void JudgeSave(Linklist &L,int i);?? ??? ??? ?//文件存儲(chǔ)? void Save(Linklist &L); void Load(Linklist &L);?? ??? ??? ??? ??? ??? ?//文件加載? Status ReturnMenu();?? ??? ??? ??? ??? ??? ?//返回菜單頁(yè)面? //----------------------------------------------------------------菜單操作------------------------------------------------------- void menu() { ?? ?printf("\t\t ? ? ? ? ? ? ======================== ? ? ? ?\n"); ?? ?printf("\t\t ? ? ? ? ? ?| ? ? ? ? ? ? ? ? ? ? ? | ? ? ? ?\n"); ?? ?printf("\t\t ? |--------| ? ? 宿舍管理查詢(xún) ? ? ?|-------|\n"); ?? ?printf("\t\t ? | ? ? ? ?| ? ? ? ? ? ? ? ? ? ? ? | ? ? ? |\n"); ?? ?printf("\t\t ? | ? ? ? ? ======================== ? ? ? |\n"); ?? ?printf("\t\t ? | ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?|\n"); ?? ?printf("\t\t ? | ? ? ? ? ? ?請(qǐng)選擇你的操作 : ? ? ? ? ? |\n"); ?? ?printf("\t\t ? | ? ? ? ? ? ?[1]創(chuàng)建學(xué)生信息 ? ? ? ? ? ? |\n"); ?? ?printf("\t\t ? | ? ? ? ? ? ?[2]按姓名排序(插入排序) ? ? |\n"); ?? ?printf("\t\t ? | ? ? ? ? ? ?[3]按學(xué)號(hào)排序(插入排序) ? ? |\n"); ?? ?printf("\t\t ? | ? ? ? ? ? ?[4]按房號(hào)排序(插入排序) ? ? |\n"); ?? ?printf("\t\t ? | ? ? ? ? ? ?[5]按姓名排序(選擇排序) ? ? |\n"); ?? ?printf("\t\t ? | ? ? ? ? ? ?[6]按學(xué)號(hào)排序(選擇排序) ? ? |\n"); ?? ?printf("\t\t ? | ? ? ? ? ? ?[7]按房號(hào)排序(選擇排序) ? ? |\n"); ?? ?printf("\t\t ? | ? ? ? ? ? ?[8]按姓名排序(冒泡排序) ? ? |\n"); ?? ?printf("\t\t ? | ? ? ? ? ? ?[9]按學(xué)號(hào)排序(冒泡排序) ? ? |\n"); ?? ?printf("\t\t ? | ? ? ? ? ? ?[10]按房號(hào)排序(冒泡排序) ? ?|\n"); ?? ?printf("\t\t ? | ? ? ? ? ? ?[11]按姓名查找 ? ? ? ? ? ? ?|\n"); ?? ?printf("\t\t ? | ? ? ? ? ? ?[12]按學(xué)號(hào)查找 ? ? ? ? ? ? ?|\n"); ?? ?printf("\t\t ? | ? ? ? ? ? ?[13]按房號(hào)查找 ? ? ? ? ? ? ?|\n"); ?? ?printf("\t\t ? | ? ? ? ? ? ?[14]插入學(xué)生信息 ? ? ? ? ? ?|\n"); ?? ?printf("\t\t ? | ? ? ? ? ? ?[15]按學(xué)號(hào)刪除學(xué)生信息 ? ? ?|\n"); ?? ?printf("\t\t ? | ? ? ? ? ? ?[16]按姓名刪除學(xué)生信息 ? ? ?|\n"); ?? ?printf("\t\t ? | ? ? ? ? ? ?[17]按宿舍刪除學(xué)生信息 ? ? ?|\n"); ?? ?printf("\t\t ? | ? ? ? ? ? ?[18]顯示學(xué)生記錄 ? ? ? ? ? ?|\n"); ?? ?printf("\t\t ? | ? ? ? ? ? ?[19]文件加載 ? ? ? ? ? ? ? ?|\n"); ?? ?printf("\t\t ? | ? ? ? ? ? ?[20]文件保存 ? ? ? ? ? ? ? ?|\n"); ?? ?printf("\t\t ? | ? ? ? ? ? ?[21]退出操作 ? ? ? ? ? ? ? ?|\n"); ?? ?printf("\t\t ? |-======================================-|\n"); ?? ?printf("\t\t ? | ? ? ? ? ? ? ? ? 歡迎查詢(xún) ? ? ? ? ? ? ? |\n"); ?? ?printf("\t\t ? |-======================================-|\n"); ?? ?printf("請(qǐng)選擇你要進(jìn)行的操作(1/2/3/4/5/6/7/8/9/10/11/12/13/14/15/16/17/18/19/20/21):\n"); } int main(int argc,char **argv) { ?? ?int n;? ?? ?Linklist L; ? ? ? ? ? ?? ?? ?init(L); ?? ? ? ? ? ? ? ?? ?? ?char ch; ?? ?printf("\t\t歡迎進(jìn)入宿舍管理查詢(xún)界面\n\n\n"); ?? ?printf("請(qǐng)按任意鍵進(jìn)行操作"); ?? ?scanf("%c",&ch); ?? ?system("cls"); ?? ? ?? ?while(1) ?? ?{ ?? ?? ??? ?menu(); ?? ??? ?scanf("%d",&n); ?? ??? ?getchar(); ?? ??? ?system("cls"); ? ?? ??? ?switch(n) ? ?? ??? ?{ ?? ??? ??? ?case 1: ?? ??? ??? ??? ?if(create(L)){ ?? ??? ??? ??? ??? ?printf("創(chuàng)建成功!\n"); ?? ??? ??? ??? ?} ?? ??? ??? ??? ?ReturnMenu(); ?? ??? ??? ??? ?break; ?? ??? ??? ?case 2: ?? ??? ??? ??? ?CSortName(L); ? ? ?? ?? ??? ??? ??? ?if(L.length==0) ? ? ? ?? ??? ??? ??? ?{ ? ? ?? ?? ??? ??? ??? ??? ?printf("\n已無(wú)學(xué)生記錄\n"); ? ? ? ? ? ? ? ?? ?? ??? ??? ??? ?} ? ? ? ? ?? ??? ??? ??? ?else{ ?? ??? ??? ??? ??? ?printf("按姓名排序:\n"); ? ? ?? ??? ??? ??? ??? ?PrintSort(L); ?? ??? ??? ??? ?}? ?? ??? ??? ??? ?ReturnMenu(); ?? ?? ??? ??? ??? ?break; ?? ??? ??? ?case 3: ?? ??? ??? ??? ?CSortNo(L); ? ? ?? ?? ??? ??? ??? ?if(L.length==0) ? ? ? ?? ??? ??? ??? ?{ ? ? ?? ?? ??? ??? ??? ??? ?printf("\n已無(wú)學(xué)生記錄\n"); ? ? ? ? ? ? ? ?? ?? ??? ??? ??? ?} ? ? ? ? ?? ??? ??? ??? ?else{ ?? ??? ??? ??? ??? ?printf("按學(xué)號(hào)排序:\n"); ? ? ?? ??? ??? ??? ??? ?PrintSort(L); ?? ??? ??? ??? ?}? ?? ??? ??? ??? ?ReturnMenu(); ?? ?? ??? ??? ??? ?break; ?? ??? ??? ?case 4: ?? ??? ??? ??? ?CSortRoom(L); ? ? ?? ?? ??? ??? ??? ?if(L.length==0) ? ? ? ?? ??? ??? ??? ?{ ? ? ?? ?? ??? ??? ??? ??? ?printf("\n已無(wú)學(xué)生記錄\n"); ? ? ? ? ? ? ? ?? ?? ??? ??? ??? ?} ? ? ? ? ?? ??? ??? ??? ?else{ ?? ??? ??? ??? ??? ?printf("按房號(hào)排序:\n"); ? ? ?? ??? ??? ??? ??? ?PrintSort(L); ?? ??? ??? ??? ?}? ?? ??? ??? ??? ?ReturnMenu(); ?? ?? ??? ??? ??? ?break; ? ?? ?? ??? ??? ?case 5: ?? ??? ??? ??? ?XSortName(L); ? ? ? ? ? ? ? ? ? ?? ?? ??? ??? ??? ?printf("\n"); ? ? ?? ?? ??? ??? ??? ?if(L.length==0){ ?? ??? ??? ??? ??? ?printf("已無(wú)學(xué)生記錄\n"); ? ?? ?? ??? ??? ??? ??? ?printf("\n"); ? ? ? ? ?? ??? ??? ??? ??? ?ReturnMenu(); ? ? ? ? ?? ??? ??? ??? ?} ? ? ? ? ?? ??? ??? ??? ?else{ ? ? ?? ??? ??? ??? ??? ?printf("按姓名排序:\n"); ? ? ?? ??? ??? ??? ??? ?PrintSort(L); ? ? ?? ??? ??? ??? ??? ?ReturnMenu(); ? ? ? ?? ?? ??? ??? ??? ?} ?? ??? ??? ??? ?break;? ?? ??? ??? ?case 6: ?? ??? ??? ??? ?XSortNo(L); ? ? ? ? ? ? ? ? ? ?? ?? ??? ??? ??? ?printf("\n"); ? ? ?? ?? ??? ??? ??? ?if(L.length==0){ ?? ??? ??? ??? ??? ?printf("已無(wú)學(xué)生記錄\n"); ? ?? ?? ??? ??? ??? ??? ?printf("\n"); ? ? ? ? ?? ??? ??? ??? ??? ?ReturnMenu(); ? ? ? ? ?? ??? ??? ??? ?} ? ? ? ? ?? ??? ??? ??? ?else{ ? ? ?? ??? ??? ??? ??? ?printf("按學(xué)號(hào)排序:\n"); ? ? ?? ??? ??? ??? ??? ?PrintSort(L); ? ? ?? ??? ??? ??? ??? ?ReturnMenu(); ? ? ? ?? ?? ??? ??? ??? ?} ?? ??? ??? ??? ?break; ?? ??? ??? ?case 7: ?? ??? ??? ??? ?XSortRoom(L); ? ? ? ? ? ? ? ? ? ?? ?? ??? ??? ??? ?printf("\n"); ? ? ?? ?? ??? ??? ??? ?if(L.length==0){ ?? ??? ??? ??? ??? ?printf("已無(wú)學(xué)生記錄\n"); ? ?? ?? ??? ??? ??? ??? ?printf("\n"); ? ? ? ? ?? ??? ??? ??? ??? ?ReturnMenu(); ? ? ? ? ?? ??? ??? ??? ?} ? ? ? ? ?? ??? ??? ??? ?else{ ? ? ?? ??? ??? ??? ??? ?printf("按房號(hào)排序:\n"); ? ? ?? ??? ??? ??? ??? ?PrintSort(L); ? ? ?? ??? ??? ??? ??? ?ReturnMenu(); ? ? ? ?? ?? ??? ??? ??? ?} ?? ??? ??? ??? ?break; ?? ??? ??? ?case 8: ?? ??? ??? ??? ?MSortName(L); ? ? ? ? ? ? ? ? ? ? ?? ??? ??? ??? ?printf("\n"); ? ?? ?? ??? ??? ??? ?if(L.length==0){ ? ? ? ?? ??? ??? ??? ??? ?printf("已無(wú)學(xué)生記錄\n"); ? ? ? ? ? ? ?? ??? ??? ??? ??? ?ReturnMenu(); ? ? ? ?? ??? ??? ??? ?} ?? ??? ??? ??? ?else{ ?? ??? ??? ??? ??? ?printf("按姓名排序:\n"); ? ?? ??? ??? ??? ??? ?PrintSort(L); ? ?? ??? ??? ??? ??? ?ReturnMenu(); ? ? ?? ??? ??? ??? ?} ?? ??? ??? ??? ?break; ?? ??? ??? ?case 9: ?? ??? ??? ??? ?MSortNo(L); ? ? ? ? ? ? ? ? ? ? ?? ??? ??? ??? ?printf("\n"); ? ?? ?? ??? ??? ??? ?if(L.length==0){ ? ? ? ?? ??? ??? ??? ??? ?printf("已無(wú)學(xué)生記錄\n"); ? ? ? ? ? ? ?? ??? ??? ??? ??? ?ReturnMenu(); ? ? ? ?? ??? ??? ??? ?} ?? ??? ??? ??? ?else{ ?? ??? ??? ??? ??? ?printf("按學(xué)號(hào)排序:\n"); ? ?? ??? ??? ??? ??? ?PrintSort(L); ? ?? ??? ??? ??? ??? ?ReturnMenu(); ? ? ?? ??? ??? ??? ?} ?? ??? ??? ??? ?break; ?? ??? ??? ? ? ? ? ? ?? ??? ??? ?case 10: ?? ??? ??? ??? ?MSortRoom(L); ? ? ? ? ? ? ? ? ? ? ?? ??? ??? ??? ?printf("\n"); ? ?? ?? ??? ??? ??? ?if(L.length==0){ ? ? ? ?? ??? ??? ??? ??? ?printf("已無(wú)學(xué)生記錄\n"); ? ? ? ? ? ? ?? ??? ??? ??? ??? ?ReturnMenu(); ? ? ? ?? ??? ??? ??? ?} ?? ??? ??? ??? ?else{ ?? ??? ??? ??? ??? ?printf("按房號(hào)排序:\n"); ? ?? ??? ??? ??? ??? ?PrintSort(L); ? ?? ??? ??? ??? ??? ?ReturnMenu(); ? ? ?? ??? ??? ??? ?} ?? ??? ??? ??? ?break; ? ?? ??? ??? ?case 11: ?? ??? ??? ??? ?CSortName(L); ? ? ? ? ? ?? ?? ??? ??? ??? ?SearchName(L); ? ? ? ? ? ? ? ?? ??? ??? ??? ?break; ?? ??? ??? ?case 12: ?? ??? ??? ??? ?XSortNo(L); ? ? ? ? ? ? ?? ?? ??? ??? ??? ?SearchNo(L); ? ? ? ? ? ? ? ? ?? ??? ??? ??? ?break; ?? ??? ??? ?case 13: ?? ??? ??? ??? ?MSortRoom(L); ? ? ? ? ? ? ? ? ?? ??? ??? ??? ?SearchRoom(L); ? ? ? ?? ?? ??? ??? ??? ?break; ?? ??? ??? ?case 14: ?? ??? ??? ??? ?insert(L); ? ? ? ? ? ?? ??? ??? ??? ?system("cls"); ? ?? ??? ??? ??? ?printf("顯示插入后的學(xué)生信息:\n"); ?? ??? ??? ??? ?PrintSort(L); ? ?? ??? ??? ??? ?ReturnMenu(); ? ?? ?? ??? ??? ??? ?break; ?? ??? ??? ?case 15: ?? ??? ??? ??? ?DeleteNO(L); ?? ??? ??? ??? ?if(L.length==0){ ?? ?? ??? ??? ??? ??? ?printf("\n學(xué)生記錄已被刪除完\n\n"); ? ? ? ? ?? ??? ??? ??? ?} ? ?? ??? ??? ??? ?else{ ? ?? ??? ??? ??? ??? ?printf("刪除后的學(xué)生信息:\n"); ?? ??? ??? ??? ??? ?PrintSort(L); ? ? ? ?? ??? ??? ??? ?} ?? ??? ??? ??? ?ReturnMenu(); ? ?? ?? ??? ??? ??? ?break; ?? ??? ??? ?case 16: ?? ??? ??? ??? ?DeleteName(L); ?? ??? ??? ??? ?if(L.length==0){ ?? ?? ??? ??? ??? ??? ?printf("\n學(xué)生記錄已被刪除完\n\n"); ? ? ? ?? ?? ??? ??? ??? ?} ? ?? ??? ??? ??? ?else{ ? ?? ??? ??? ??? ??? ?printf("刪除后的學(xué)生信息:\n"); ?? ??? ??? ??? ??? ?PrintSort(L); ? ?? ?? ??? ??? ??? ?} ? ? ?? ??? ??? ??? ?ReturnMenu();? ?? ??? ??? ??? ?break; ?? ??? ??? ?case 17: ?? ??? ??? ??? ?DeleteRoom(L); ?? ??? ??? ??? ?if(L.length==0){ ?? ?? ??? ??? ??? ??? ?printf("\n該房間沒(méi)有學(xué)生\n\n"); ? ? ? ?? ?? ??? ??? ??? ?} ? ?? ??? ??? ??? ?else{ ? ?? ??? ??? ??? ??? ?printf("刪除后的學(xué)生信息:\n"); ?? ??? ??? ??? ??? ?PrintSort(L); ? ?? ?? ??? ??? ??? ?} ? ? ?? ??? ??? ??? ?ReturnMenu();? ?? ??? ??? ??? ?break; ?? ??? ??? ?case 18: ?? ??? ??? ??? ?printf("\n學(xué)生信息為:\n"); ?? ??? ??? ??? ?PrintSort(L);? ?? ??? ??? ??? ?ReturnMenu(); ? ? ? ? ?? ??? ??? ??? ?break; ?? ??? ??? ?case 19: ?? ??? ??? ? ? ?Load(L); ?? ??? ??? ? ? ?ReturnMenu(); ?? ??? ??? ??? ?break; ?? ??? ??? ?case 20: ?? ??? ??? ??? ?JudgeSave(L,flag); ?? ??? ??? ??? ?ReturnMenu(); ?? ??? ??? ??? ?break;? ?? ??? ??? ?case 21: ?? ??? ??? ??? ?exit(0); ?? ??? ??? ??? ?break; ?? ??? ??? ?default: ?? ??? ??? ??? ?printf("無(wú)此操作\n"); ?? ??? ??? ??? ?ReturnMenu(); ?? ??? ?} ?? ?} ?? ?return 0; } //-----------------------------------------------------------------------返回主界面---------------------------------------------------------------- Status ReturnMenu()?? ??? ??? ??? ??? ? { ?? ?char c; ?? ?fflush(stdin); ?? ?printf("\n按任意鍵進(jìn)入主界面:"); ?? ?scanf("%c",&c); ?? ?system("cls"); ?? ?return OK; } //---------------------------------------------------------------線性表初始化--------------------------------------------------- Status init(Linklist &L) { ?? ?L.elem=(Student*)malloc(LIST_INIT_SIZE*sizeof(Student)); ?? ?if(!L.elem) ?? ??? ?exit(OVERFLOW); ?? ?L.length=0; ?? ?L.listsize=LIST_INIT_SIZE; ?? ?return OK; } //-------------------------------------------------------------創(chuàng)建學(xué)生類(lèi)信息表-------------------------------------------------- Status create(Linklist &L) { ?? ?if(L.length>=L.listsize) ?? ?{ ?? ??? ?Student *newbase; ?? ??? ?newbase=(Student*)realloc(L.elem,(LIST_INIT_SIZE+LISTINCREMENT)*sizeof(Student)); ?? ??? ?L.elem=newbase; ?? ??? ?L.listsize+=LISTINCREMENT; ?? ?} ?? ?char ch='Y'; ?? ?int i=0; ?? ?int room[1000]={0}; ?? ?while(ch=='Y'){ ?? ??? ?printf("請(qǐng)輸入第%d個(gè)學(xué)生信息\n",i+1); ?? ??? ?input(L); ?? ??? ?if(room[student.Room]+1>6){ ?? ??? ??? ?printf("該宿舍已滿員!請(qǐng)重新輸入:\n"); ?? ??? ??? ?input(L);? ?? ??? ?} ?? ??? ?strcpy(L.elem[L.length].name,student.name); ?? ??? ?L.elem[L.length].No=student.No; ?? ??? ?L.elem[L.length].Room=student.Room; ?? ??? ?L.length++; ?? ??? ?i++; ?? ??? ?room[student.Room]++; ?? ??? ?ch=getchar(); ?? ??? ?printf("\n是否繼續(xù)添加學(xué)生:是的話按Y,否則按任意鍵返回:"); ?? ??? ?scanf("%c",&ch); ?? ??? ?flag=1; ?? ?} ?? ?if(ch!='Y') ?? ??? ?system("cls"); ?? ?return OK; } //--------------------------------------------------------------按照宿舍號(hào)排序(冒泡排序)-------------------------------------------------------- Status MSortRoom(Linklist & L)?? ??? ? { ?? ?int i,j; ?? ?Student temp; ?? ?for(i=0;i<L.length-1;i++) ?? ?for(j=i+1;j<L.length;j++) ?? ?if(L.elem[i].Room>L.elem[j].Room) ?? ?{ ?? ??? ?temp=L.elem[i]; ?? ??? ?L.elem[i]=L.elem[j]; ?? ??? ?L.elem[j]=temp; ?? ?} ?? ?return OK; } //-------------------------------------------------------------------按照宿舍號(hào)排序(選擇排序)------------------------------------------------------------- Status XSortRoom(Linklist & L)?? ??? ? { ?? ?int i,j,k; ?? ?Student temp; ?? ?for(i=0;i<L.length-1;i++){ ?? ??? ?k=i; ?? ??? ?for(j=i+1;j<L.length;++j) ?? ??? ??? ?if(L.elem[k].Room>L.elem[j].Room) ?? ??? ??? ??? ?k=j; ?? ??? ?if(i!=k){ ?? ??? ??? ?temp=L.elem[i]; ?? ??? ??? ?L.elem[i]=L.elem[k]; ?? ??? ??? ?L.elem[k]=temp; ?? ??? ?} ?? ?} ?? ? ?? ?return OK; } //--------------------------------------------------------------------------按照宿舍排序(插入排序)-------------------------------------------------------------- Status CSortRoom(Linklist &L)?? ? { ?? ?int i,j; ?? ?Student temp; ?? ?for(i=1;i<L.length;++i){ ?? ??? ?if(L.elem[i].Room<L.elem[i-1].Room){ ?? ??? ??? ?temp=L.elem[i]; ?? ??? ??? ?for(j=i-1;temp.Room<L.elem[j].Room;--j) ?? ??? ??? ??? ?L.elem[j+1]=L.elem[j]; ?? ??? ??? ?L.elem[j+1]=temp; ?? ??? ?} ?? ?} ?? ?return OK; } //--------------------------------------------------------------按照學(xué)號(hào)排序(冒泡排序)-------------------------------------------------------- Status MSortNo(Linklist & L)?? ??? ? { ?? ?int i,j; ?? ?Student temp; ?? ?for(i=0;i<L.length-1;i++) ?? ?for(j=i+1;j<L.length;j++) ?? ?if(L.elem[i].No>L.elem[j].No) ?? ?{ ?? ??? ?temp=L.elem[i]; ?? ??? ?L.elem[i]=L.elem[j]; ?? ??? ?L.elem[j]=temp; ?? ?} ?? ?return OK; } //-------------------------------------------------------------------按照學(xué)號(hào)排序(選擇排序)------------------------------------------------------------- Status XSortNo(Linklist & L)?? ??? ? { ?? ?int i,j,k; ?? ?Student temp; ?? ?for(i=0;i<L.length-1;i++){ ?? ??? ?k=i; ?? ??? ?for(j=i+1;j<L.length;++j) ?? ??? ??? ?if(L.elem[k].No>L.elem[j].No) ?? ??? ??? ??? ?k=j; ?? ??? ?if(i!=k){ ?? ??? ??? ?temp=L.elem[i]; ?? ??? ??? ?L.elem[i]=L.elem[k]; ?? ??? ??? ?L.elem[k]=temp; ?? ??? ?} ?? ?} ?? ? ?? ?return OK; } //--------------------------------------------------------------------------按照學(xué)號(hào)排序(插入排序)-------------------------------------------------------------- Status CSortNo(Linklist &L)?? ? { ?? ?int i,j; ?? ?Student temp; ?? ?for(i=1;i<L.length;++i){ ?? ??? ?if(L.elem[i].No<L.elem[i-1].No){ ?? ??? ??? ?temp=L.elem[i]; ?? ??? ??? ?for(j=i-1;temp.No<L.elem[j].No;--j) ?? ??? ??? ??? ?L.elem[j+1]=L.elem[j]; ?? ??? ??? ?L.elem[j+1]=temp; ?? ??? ?} ?? ?} ?? ?return OK; } //--------------------------------------------------------------按照姓名排序(冒泡排序)-------------------------------------------------------- Status MSortName(Linklist & L)?? ??? ? { ?? ?int i,j; ?? ?Student temp; ?? ?for(i=0;i<L.length-1;i++) ?? ?for(j=i+1;j<L.length;j++) ?? ?if(strcmp(L.elem[i].name,L.elem[j].name)>0) ?? ?{ ?? ??? ?temp=L.elem[i]; ?? ??? ?L.elem[i]=L.elem[j]; ?? ??? ?L.elem[j]=temp; ?? ?} ?? ?return OK; } //-------------------------------------------------------------------按照姓名排序(選擇排序)------------------------------------------------------------- Status XSortName(Linklist & L)?? ??? ? { ?? ?int i,j,k; ?? ?Student temp; ?? ?for(i=0;i<L.length-1;i++){ ?? ??? ?k=i; ?? ??? ?for(j=i+1;j<L.length;++j) ?? ??? ??? ?if(strcmp(L.elem[k].name,L.elem[j].name)>0) ?? ??? ??? ??? ?k=j; ?? ??? ?if(i!=k){ ?? ??? ??? ?temp=L.elem[i]; ?? ??? ??? ?L.elem[i]=L.elem[k]; ?? ??? ??? ?L.elem[k]=temp; ?? ??? ?} ?? ?} ?? ? ?? ?return OK; } //--------------------------------------------------------------------------按照姓名排序(插入排序)-------------------------------------------------------------- Status CSortName(Linklist &L)?? ? { ?? ?int i,j; ?? ?Student temp; ?? ?for(i=1;i<L.length;++i){ ?? ??? ?if(strcmp(L.elem[i].name,L.elem[i-1].name)<0){ ?? ??? ??? ?temp=L.elem[i]; ?? ??? ??? ?for(j=i-1;strcmp(temp.name,L.elem[j].name)<0;--j) ?? ??? ??? ??? ?L.elem[j+1]=L.elem[j]; ?? ??? ??? ?L.elem[j+1]=temp; ?? ??? ?} ?? ?} ?? ?return OK; } //-------------------------------------------------------------------------按房號(hào)查找(折半查找)---------------------------------------------------------- Status SearchRoom(Linklist &L) { ?? ?if(L.length==0) ?? ??? ?Judge3(); ?? ?else ?? ?{ ?? ??? ?int low=0,high=L.length,m,temp; ?? ??? ?int r; ?? ??? ?printf("\n按房號(hào)查找 ? 輸入房號(hào):"); ?? ??? ?scanf("%d",&r); ?? ??? ?printf("\n查找成功 ? 學(xué)生信息為\n"); ?? ??? ?printf("\t\t姓名 ? ? ? ? ? ? ? ? ? ? ? ?學(xué)號(hào) ? ? ? 房號(hào)\n"); ?? ??? ?while(low<=high) ?? ??? ?{ ?? ??? ??? ?m=(low+high)/2; ?? ??? ??? ?if(r==L.elem[m].Room) ?? ??? ??? ?{ ?? ??? ??? ??? ?temp=1; ?? ??? ??? ??? ?PrintSearch1(L,m); ?? ??? ??? ??? ?for(int k=m;k>low;k--){ ?? ??? ??? ??? ??? ?if(L.elem[k].Room==L.elem[k-1].Room) ?? ??? ??? ??? ??? ??? ?PrintSearch1(L,k-1); ?? ??? ??? ??? ?} ?? ??? ??? ??? ?for(int k=m;k<high;++k){ ?? ??? ??? ??? ??? ?if(L.elem[k].Room==L.elem[k+1].Room){ ?? ??? ??? ??? ??? ??? ?PrintSearch1(L,k+1); ?? ??? ??? ??? ??? ?} ?? ??? ??? ??? ?} ?? ??? ??? ??? ?break; ?? ??? ??? ?} ?? ??? ??? ?else if(r>L.elem[m].Room) ?? ??? ??? ??? ?low=m+1; ?? ??? ??? ?else ?? ??? ??? ??? ?high=m-1; ?? ??? ?} ?? ??? ?if(temp==1) ?? ??? ?{ ?? ??? ??? ? ?? ??? ??? ?if(Judge1(1))? ?? ??? ??? ??? ?SearchRoom(L); ?? ??? ??? ?else ?? ??? ??? ?{ ?? ??? ??? ??? ?system("cls"); ?? ??? ??? ?} ?? ??? ?} ?? ??? ?else ?? ??? ?{ ?? ??? ??? ?if(Judge2(1)) ?? ??? ??? ??? ?SearchRoom(L); ?? ??? ??? ?else ?? ??? ??? ?{ ?? ??? ??? ??? ?system("cls"); ?? ??? ??? ?} ?? ??? ?} ?? ?} ?? ?return OK; } //-------------------------------------------------------------------------按學(xué)號(hào)查找(折半查找)-------------------------------------------------------- Status SearchNo(Linklist &L) { ?? ?if(L.length==0) ?? ?{ ?? ??? ?Judge3(); ?? ?} ?? ?else ?? ?{ ?? ??? ?int low=0,high=L.length,m,temp=0;?? ??? ??? ??? ??? ? ?? ??? ?int n; ?? ??? ?printf("\n按學(xué)號(hào)查找 ? 輸入學(xué)號(hào):"); ?? ??? ?scanf("%d",&n); ?? ??? ?while(low<=high) ?? ??? ?{ ?? ??? ??? ?m=(low+high)/2; ?? ??? ??? ?if(n==L.elem[m].No) ?? ??? ??? ?{ ?? ??? ??? ??? ?temp=1; ?? ??? ??? ??? ?break; ?? ??? ??? ?} ?? ??? ??? ?else if(n>L.elem[m].No) ?? ??? ??? ??? ?low=m+1; ?? ??? ??? ?else ?? ??? ??? ??? ?high=m-1; ?? ??? ?} ?? ??? ?if(temp==1) ?? ??? ?{ ?? ??? ??? ?PrintSearch(L,m); ?? ??? ??? ?if(Judge1(1)) ?? ??? ??? ??? ?SearchNo(L); ?? ??? ??? ?else ?? ??? ??? ?{ ?? ??? ??? ??? ?system("cls"); ?? ??? ??? ?} ?? ??? ?} ?? ??? ?else ?? ??? ?{ ?? ??? ??? ?if(Judge2(1)) ?? ??? ??? ??? ?SearchNo(L); ?? ??? ??? ?else ?? ??? ??? ?{ ?? ??? ??? ??? ?system("cls"); ?? ??? ??? ?}?? ? ?? ??? ?}?? ? ?? ?} ?? ?return OK; } //-------------------------------------------------------------------------按姓名查找(折半查找)---------------------------------------------------------- Status SearchName(Linklist &L)?? ??? ? { ?? ?if(L.length==0) ?? ??? ?Judge3(); ?? ?else ?? ?{ ?? ??? ?int low=0,high=L.length,m,temp=0;? ?? ??? ?printf("\n按姓名查找 ? 輸入姓名:"); ?? ??? ?char a[15]; ?? ??? ?scanf("%s",a); ?? ??? ?while(low<=high) ?? ??? ?{ ?? ??? ??? ?m=(low+high)/2; ?? ??? ??? ?if(strcmp(a,L.elem[m].name)==0) ?? ??? ??? ?{ ?? ??? ??? ??? ?temp=1; ?? ??? ??? ??? ?break; ?? ??? ??? ?} ?? ??? ??? ?else if(strcmp(a,L.elem[m].name)>0) ?? ??? ??? ??? ?low=m+1; ?? ??? ??? ?else ?? ??? ??? ??? ?high=m-1; ?? ??? ?} ?? ??? ?if(temp==1) ?? ??? ?{ ?? ??? ??? ?PrintSearch(L,m); ?? ??? ??? ?if(Judge1(1)) ?? ??? ??? ??? ?SearchName(L); ?? ??? ??? ?else ?? ??? ??? ?{ ?? ??? ??? ??? ?system("cls"); ?? ??? ??? ?} ?? ??? ?} ?? ??? ?else ?? ??? ?{ ?? ??? ??? ?if(Judge2(1)) ?? ??? ??? ??? ?SearchName(L); ?? ??? ??? ?else ?? ??? ??? ?{ ?? ??? ??? ??? ?system("cls"); ?? ??? ??? ?} ?? ??? ?} ?? ?} ?? ?return OK; } //------------------------------------------------------------------------判斷是否繼續(xù)查找--------------------------------------------------------- Status Judge1(char ch)?? ??? ??? ? { ?? ?scanf("%c",&ch); ?? ?printf("是否繼續(xù):是的話按Y,否則按任意鍵返回:"); ?? ?scanf("%c",&ch); ?? ?if(ch=='Y') ?? ?{ ?? ??? ?system("cls"); ?? ??? ?return OK; ?? ?} ?? ?else ?? ??? ?return ERROR; } //-----------------------------------------------------------------------判斷不存在是否繼續(xù)查找-------------------------------------------------------- Status Judge2(char ch) { ?? ?scanf("%c",&ch); ?? ?printf("沒(méi)有此學(xué)生,是否繼續(xù):是的話按Y,否則按任意鍵返回"); ?? ?fflush(stdin); ?? ?scanf("%c",&ch); ?? ?if(ch=='Y') ?? ?{ ?? ??? ?system("cls"); ?? ??? ?return OK; ?? ?} ?? ?else ?? ??? ?return ERROR; } //--------------------------------------------------------------------無(wú)學(xué)生記錄返回主界面------------------------------------------------------------------ Status Judge3()?? ??? ? { ?? ?printf("已經(jīng)沒(méi)有學(xué)生記錄\n"); ?? ?ReturnMenu(); ?? ?menu(); ?? ?return OK; } //------------------------------------------------------------------------判斷學(xué)生學(xué)號(hào)是否一樣--------------------------------------------------------------? Status JudgeNO(int NO,Linklist L) { ?? ?int j=0; ?? ?for(int i=0;i<L.length;i++){ ?? ??? ?if(NO==L.elem[i].No) ?? ??? ??? ?j++; ?? ?} ?? ?if(j==1){ ?? ??? ?printf("該學(xué)號(hào)已經(jīng)存在,請(qǐng)重新輸入!\n"); ?? ??? ?input(L); ?? ?} ?? ?return OK; }?? ? //------------------------------------------------------------------------輸入學(xué)生信息----------------------------------------------------------------? void input(Linklist L) { ?? ?printf("輸入學(xué)生姓名:\n"); ?? ?fflush(stdin); ?? ?gets(student.name); ?? ?printf("輸入學(xué)生宿舍號(hào):\n"); ?? ?scanf("%d",&student.Room); ?? ? ?? ?printf("輸入學(xué)生學(xué)號(hào):\n"); ?? ?fflush(stdin); ?? ?scanf("%d",&student.No); ?? ? ?? ?JudgeNO(student.No,L); } //-----------------------------------------------------------------------輸出學(xué)生排序的信息------------------------------------------------------------- void PrintSort(Linklist & L)?? ??? ? { ?? ?int i; ?? ?printf("\n"); ?? ?printf("\t\t姓名 ? ? ? ? ? ? ? ? ? ? ? ?學(xué)號(hào) ? ? ? ? 房號(hào)\n"); ?? ?for(i=0;i<L.length ;i++) ?? ??? ?printf("\t\t%-20s %10d ? %10d\n",L.elem[i].name,L.elem[i].No,L.elem[i].Room); } //-----------------------------------------------------------------輸出查找學(xué)生的信息(按學(xué)號(hào)或姓名)---------------------------------------------------- void PrintSearch(Linklist & L,int mid)?? ? { ?? ?printf("查找成功 ? 學(xué)生信息為\n"); ?? ?printf("\t\t姓名 ? ? ? ? ? ? ? ? ? ? ? ?學(xué)號(hào) ? ? ? ? 房號(hào)\n"); ?? ?printf("\t\t%-20s %10d ? %10d\n",L.elem[mid].name,L.elem[mid].No,L.elem[mid].Room); } //------------------------------------------------------------------------輸出查找學(xué)生的信息(按房號(hào))------------------------------------------------------------- void PrintSearch1(Linklist & L,int mid)?? ? { ?? ?printf("\t\t%-20s %10d %10d\n",L.elem[mid].name,L.elem[mid].No,L.elem[mid].Room); } //-------------------------------------------------------------------------插入學(xué)生信息------------------------------------------------------------- Status insert(Linklist & L)?? ??? ? { ?? ?int i,j,k; ?? ?int room[1000]={0}; ?? ?char ch; ?? ?printf("\n插入學(xué)生信息為:\n"); ?? ?input(L);? ?? ?if(room[student.Room]+1>6){ ?? ??? ?printf("該宿舍已滿員,請(qǐng)重新輸入:\n"); ?? ??? ?input(L); ?? ?} ?? ?if(L.length==0) ?? ?{ ?? ??? ?strcpy(L.elem[L.length].name,student.name); ?? ??? ?L.elem[L.length].No=student.No; ?? ??? ?L.elem[L.length].Room=student.Room; ?? ??? ?flag=1; ?? ?} ?? ?for(i=0;i<L.length;i++) ?? ?{ ?? ??? ?strcpy(L.elem[L.length].name,student.name); ?? ??? ?L.elem[L.length].No=student.No; ?? ??? ?L.elem[L.length].Room=student.Room; ?? ??? ?room[student.Room]++; ?? ??? ?flag=1; ?? ?} ?? ?L.length++; ?? ?fflush(stdin); ?? ?printf("\n是否繼續(xù)插入:是的話按Y,否則按任意鍵返回"); ?? ?scanf("%c",&ch); ?? ?if(ch=='Y') ?? ??? ?insert(L); ?? ?else ?? ??? ?system("cls"); ?? ?return OK; } //-------------------------------------------------------------------------按學(xué)號(hào)刪除------------------------------------------------------- Status DeleteNO(Linklist &L)?? ? { ?? ?? ?int i,j,k=-1; ?? ?? ?char ch; ? ? ?? ?printf("\n\n請(qǐng)輸入要?jiǎng)h除學(xué)生的學(xué)號(hào):"); ?? ?? ?scanf("%d",&student.No); ?? ?? ?for(i=0;i<L.length;i++) ?? ?? ?{ ? ? ?? ??? ?if(student.No==L.elem[i].No) ? ? ?? ??? ?{ ? ?? ?? ??? ??? ?printf("該學(xué)生的信息為:\n"); ? ?? ??? ??? ?printf("\t\t姓名 ? ? ? ? ? ? ? ? ? ? ? ?學(xué)號(hào) ? ? ? ? 房號(hào)\n"); ?? ??? ??? ?printf("\t\t%-20s %10d ? %10d\n",L.elem[i].name,L.elem[i].No,L.elem[i].Room); ? ? ?? ??? ??? ?k=i; ? ?? ?? ??? ??? ?for(j=k;j<L.length-1;j++) ? ? ? ?? ??? ??? ??? ?L.elem[j]=L.elem[j+1]; ? ? ? ? ? ? ? ?? ??? ??? ?break; ? ? ?? ??? ?} ? ? ? ?? ?? ?} ?? ?? ?if(i>=L.length)? ?? ??? ?printf("該學(xué)生不存在\n"); ?? ?? ?if(k>=0) ?? ??? ?L.length--; ?? ?? ?fflush(stdin); ? ?? ?? ?printf("\n是否繼續(xù)刪除?是的話按Y,否則按任意鍵返回:"); ?? ?? ?scanf("%c",&ch); ?? ?? ?system("cls"); ?? ?? ?if(ch=='Y')? ?? ??? ?DeleteNO(L); ?? ?? ?else? ?? ??? ?system("cls"); ?? ?return OK; } //-------------------------------------------------------------------------按姓名刪除------------------------------------------------------- Status DeleteName(Linklist &L)?? ? { ?? ?? ?int i,j,k=-1; ?? ?? ?char ch; ? ? ?? ?printf("\n\n請(qǐng)輸入要?jiǎng)h除學(xué)生的姓名:"); ?? ?? ?gets(student.name); ?? ?? ?for(i=0;i<L.length;i++) ?? ?? ?{ ? ? ?? ??? ?if(strcmp(student.name,L.elem[i].name)==0) ? ? ?? ??? ?{ ? ?? ?? ??? ??? ?printf("該學(xué)生的信息為:\n"); ? ?? ??? ??? ?printf("\t\t姓名 ? ? ? ? ? ? ? ? ? ? ? ?學(xué)號(hào) ? ? ? ? 房號(hào)\n"); ?? ??? ??? ?printf("\t\t%-20s %10d ? %10d\n",L.elem[i].name,L.elem[i].No,L.elem[i].Room); ? ?? ?? ??? ??? ?k=i; ? ?? ?? ??? ??? ?for(j=k;j<L.length-1;j++) ? ? ? ?? ??? ??? ??? ?L.elem[j]=L.elem[j+1]; ? ? ? ? ? ? ? ?? ??? ??? ?break; ? ? ?? ??? ?} ? ? ? ?? ?? ?} ?? ?? ?if(i>=L.length)? ?? ??? ?printf("該學(xué)生不存在\n"); ?? ?? ?if(k>=0) ?? ??? ?L.length--; ?? ?? ?fflush(stdin); ? ?? ?? ?printf("\n是否繼續(xù)刪除?是的話按Y,否則按任意鍵返回:"); ?? ?? ?scanf("%c",&ch); ?? ?? ?system("cls"); ?? ?? ?if(ch=='Y')? ?? ??? ?DeleteName(L); ?? ?? ?else? ?? ??? ?system("cls"); ?? ?return OK; } //-------------------------------------------------------------------------按宿舍號(hào)刪除------------------------------------------------------- Status DeleteRoom(Linklist &L)?? ? { ?? ?? ?int i,j,k=-1,n=L.length; ?? ?? ?char ch; ? ? ?? ?printf("\n\n請(qǐng)輸入要?jiǎng)h除學(xué)生的宿舍號(hào):"); ?? ?? ?scanf("%d",&student.Room);? ?? ? ?? ?printf("刪除該宿舍學(xué)生的信息為:\n");? ?? ?printf("\t\t姓名 ? ? ? ? ? ? ? ? ? ? ? ?學(xué)號(hào) ? ? ? ? 房號(hào)\n");? ?? ?for(i=0;i<L.length;i++) ?? ?? ?{ ? ? ?? ??? ?if(student.Room==L.elem[i].Room) ? ? ?? ??? ?{ ?? ?? ??? ??? ?printf("\t\t%-20s %10d ? %10d\n",L.elem[i].name,L.elem[i].No,L.elem[i].Room); ? ?? ?? ??? ??? ?k=i; ? ?? ?? ??? ??? ?for(j=k;j<L.length-1;j++) ? ? ? ?? ??? ??? ??? ?L.elem[j]=L.elem[j+1]; ?? ??? ??? ?if(k>0)? ?? ??? ??? ??? ?n--;? ?? ??? ?} ?? ??? ?if(i==L.length-1){ ?? ??? ??? ?break;? ?? ??? ?} ? ? ? ?? ?? ?} ?? ?? ?if(i>=L.length)? ?? ??? ?printf("此房間沒(méi)有學(xué)生\n"); ?? ?? ?L.length=n; ?? ?fflush(stdin); ? ?? ?? ?printf("\n是否繼續(xù)刪除?是的話按Y,否則按任意鍵返回:"); ?? ?? ?scanf("%c",&ch); ?? ?? ?system("cls"); ?? ?? ?if(ch=='Y')? ?? ??? ?DeleteRoom(L); ?? ?? ?else? ?? ??? ?system("cls"); ?? ?return OK; } //--------------------------------------------------------------------------文件加載--------------------------------------------------------------? void Load(Linklist &L){ ?? ?FILE *fp; ?? ?if((fp=fopen("dorm.txt","r"))==NULL) ?? ?{ ?? ??? ?printf("打開(kāi)文件失敗!\n\n"); ?? ??? ?exit(0); ?? ?} ?? ?while(!feof(fp)) ?? ??? ?fread(&L.elem[L.length],sizeof(Student),1,fp); ?? ?fclose(fp); ? ? ?? ? ? printf("加載數(shù)據(jù)成功!\n\n"); }? //--------------------------------------------------------------------------保存文件 ---------------------------------------------------------------- void JudgeSave(Linklist &L,int i) { ?? ?char ch; ?? ?if(i){ ?? ??? ? ?? ??? ?printf("是否保存(Y/N)?:"); ?? ??? ?ch=getchar(); ?? ??? ?getchar(); ?? ??? ?while(ch!='N'&&ch!='Y') ?? ??? ?{ ?? ??? ??? ?printf("請(qǐng)輸入Y或者N:"); ?? ??? ??? ?ch=getchar(); ?? ??? ??? ?getchar(); ?? ??? ?} ?? ??? ?if(ch=='Y') ?? ??? ??? ?Save(L); ?? ?} } void Save(Linklist &L){ ?? ?int i; ?? ?int flag1=0; ?? ?FILE *fp; ? ? if((fp=fopen("dorm.txt","w"))==NULL) ? ? { ? ? ? ? printf("打開(kāi)文件失敗!\n\n"); ? ? ? ? flag1=1; ? ? ? ? exit(0); ?? ?} ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ?? ?for(i=0;i<L.length;i++){ ?? ??? ?fprintf(fp,"%s %d %d\n",L.elem[i].name,L.elem[i].No,L.elem[i].Room); ?? ?} ? ? ? ?? ? ? if(!flag1) ?? ?{ ? ? ? ? printf("數(shù)據(jù)存儲(chǔ)成功!\n\n"); ?? ??? ?flag=0; ?? ?} ? ? fclose(fp); }
項(xiàng)目效果截圖
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
C++中的數(shù)字轉(zhuǎn)字符串to_string
這篇文章主要介紹了C++中的數(shù)字轉(zhuǎn)字符串to_string,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-11-11C語(yǔ)言實(shí)現(xiàn)二叉樹(shù)的搜索及相關(guān)算法示例
這篇文章主要介紹了C語(yǔ)言實(shí)現(xiàn)二叉樹(shù)的搜索及相關(guān)算法,結(jié)合具體實(shí)例形式分析了基于C語(yǔ)言創(chuàng)建、遍歷、搜索等相關(guān)算法與實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-06-06