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

C語(yǔ)言實(shí)現(xiàn)宿舍管理系統(tǒng)設(shè)計(jì)

 更新時(shí)間:2022年03月16日 11:16:26   作者:lzh~  
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)宿舍管理系統(tǒng)設(shè)計(jì),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(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

    這篇文章主要介紹了C++中的數(shù)字轉(zhuǎn)字符串to_string,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • C++ vector操作實(shí)現(xiàn)

    C++ vector操作實(shí)現(xiàn)

    這篇文章主要介紹了C++ vector操作實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • C語(yǔ)言?xún)?nèi)存操作函數(shù)詳解

    C語(yǔ)言?xún)?nèi)存操作函數(shù)詳解

    這篇文章主要介紹了C語(yǔ)言全部?jī)?nèi)存操作函數(shù)的實(shí)現(xiàn)詳細(xì)講解,作者用圖文代碼實(shí)例講解的很清晰,有感興趣的同學(xué)可以研究下
    2021-10-10
  • C語(yǔ)言之預(yù)處理命令的深入講解

    C語(yǔ)言之預(yù)處理命令的深入講解

    這篇文章主要給大家介紹了關(guān)于C語(yǔ)言之預(yù)處理命令的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • C語(yǔ)言如何讀取bmp圖像

    C語(yǔ)言如何讀取bmp圖像

    這篇文章主要介紹了C語(yǔ)言如何讀取bmp圖像,BMP即bitmap,由文件頭信息塊、圖像描述信息塊、顏色表、圖像數(shù)據(jù)區(qū)四部分組成,下文更多相關(guān)資料需要的小伙伴可以參考一下
    2022-04-04
  • c++算法進(jìn)階刪除有序鏈表中的重復(fù)元素

    c++算法進(jìn)階刪除有序鏈表中的重復(fù)元素

    這篇文章主要為大家介紹了c++算法進(jìn)階刪除有序鏈表中的重復(fù)元素示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12
  • C語(yǔ)言實(shí)現(xiàn)二叉樹(shù)的搜索及相關(guān)算法示例

    C語(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
  • C++實(shí)現(xiàn)簡(jiǎn)單貪吃蛇游戲

    C++實(shí)現(xiàn)簡(jiǎn)單貪吃蛇游戲

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)簡(jiǎn)單貪吃蛇游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • C語(yǔ)言中的getchar和putchar的使用方法

    C語(yǔ)言中的getchar和putchar的使用方法

    這篇文章主要介紹了C語(yǔ)言中的getchar和putchar的使用方法的相關(guān)資料,希望通過(guò)本文能幫助到大家,需要的朋友可以參考下
    2017-10-10
  • C++之vector容器的的聲明初始化和增刪改查

    C++之vector容器的的聲明初始化和增刪改查

    這篇文章主要給大家介紹了關(guān)于C++vector容器的的聲明初始化和增刪改查的相關(guān)資料,向量(Vector)是一個(gè)封裝了動(dòng)態(tài)大小數(shù)組的順序容器(Sequence Container),跟任意其它類(lèi)型容器一樣,它能夠存放各種類(lèi)型的對(duì)象,需要的朋友可以參考下
    2021-07-07

最新評(píng)論