亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

本文實(shí)例為大家分享了C語言實(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)初步掌握軟件開發(fā)過程的問題分析、系統(tǒng)設(shè)計(jì)、程序編碼、測試等基本方法和技能;
(3)提高綜合運(yùn)用所學(xué)的理論知識和方法獨(dú)立分析和解決問題的能力;
(4)訓(xùn)練用系統(tǒng)的觀點(diǎn)和軟件開發(fā)一般規(guī)范進(jìn)行軟件開發(fā),培養(yǎng)軟件工作者所應(yīng)具備的科學(xué)的工作方法和作風(fēng)。

任務(wù)概述

設(shè)計(jì)內(nèi)容:

(1)輸入記錄(記錄數(shù)不少于12條)并建立數(shù)據(jù)文件,數(shù)據(jù)文件按關(guān)鍵字(姓名、 學(xué)號、房號)進(jìn)行排序(冒泡、選擇、插入排序等任選兩種),每間房最多6人。
(2)顯示記錄;
(3)查找記錄,用二分法實(shí)現(xiàn)按姓名、學(xué)號、房號查詢;
(4)打印任一查詢結(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) 按格式要求寫出課程設(shè)計(jì)說明書。

項(xià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 ? ? ? ? ? ? ? ? ? ? ? ? //線性表存儲空間的初始分配量
#define LISTINCREMENT 10 ? ? ? ? ? ? ? ? ?? ??? ? //線性表存儲空間的分配量增量

typedef int Status;

typedef struct{
?? ?char name[15];?? ??? ??? ??? ??? ?//名字
?? ?int No; ?? ??? ??? ??? ??? ??? ?//學(xué)號?
?? ?int Room;?? ??? ??? ??? ??? ??? ?//宿舍號?
}Student;

Student student;

typedef struct{
?? ?int length; ? ? ? ?? ??? ??? ??? ??? ??? ?//長度
?? ?int listsize; ? ? ?? ??? ??? ??? ??? ??? ?//占用內(nèi)存空間
?? ?Student *elem; ? ? ? ? ?? ??? ??? ??? ??? ?//引用對象Student的數(shù)據(jù)成員elem
}Linklist;

int flag=0;

Status init(Linklist &L);?? ??? ??? ??? ??? ?//初始化線性表?
Status create(Linklist &L);?? ??? ??? ??? ??? ?//創(chuàng)建線性表?
//冒泡排序?
Status MSortRoom(Linklist &L);?? ??? ??? ??? ?//按宿舍號排序?
Status MSortNo(Linklist &L);?? ??? ??? ??? ?//按學(xué)號排序?
Status MSortName(Linklist & L);?? ??? ??? ??? ?//按姓名排序?
//選擇排序?
Status XSortRoom(Linklist &L);?? ??? ??? ??? ?//按宿舍號排序?
Status XSortNo(Linklist &L);?? ??? ??? ??? ?//按學(xué)號排序?
Status XSortName(Linklist & L);?? ??? ??? ??? ?//按姓名排序?
//直接插入排序?
Status CSortRoom(Linklist &L);?? ??? ??? ??? ?//按宿舍號排序?
Status CSortNo(Linklist &L);?? ??? ??? ??? ?//按學(xué)號排序?
Status CSortName(Linklist &L);?? ??? ??? ??? ?//按姓名排序?

Status SearchRoom(Linklist &L);?? ??? ??? ? ? ? //按宿舍號查找?
Status SearchNo(Linklist &L);?? ??? ??? ??? ?//按學(xué)號查找?
Status SearchName(Linklist &L)?? ?;?? ??? ??? ?//按名字查找?

Status Judge1(char ch);?? ??? ??? ??? ??? ??? ?//判斷學(xué)生存在時是否繼續(xù)?
Status Judge2(char ch);?? ??? ??? ??? ??? ??? ?//判斷學(xué)生不存在是是否繼續(xù)?
Status Judge3();?? ??? ??? ??? ??? ??? ??? ?//判斷是否有學(xué)生記錄?
Status JudgeNO(int NO,Linklist L); ? ? ? ? ?//判斷學(xué)號是否重復(fù)?

void input(Linklist L);?? ??? ??? ??? ??? ??? ?//輸入學(xué)生信息?
void PrintSort(Linklist &L);?? ??? ??? ??? ?//輸出排序后的信息?
void PrintSearch(Linklist &L,int mid);?? ??? ?//輸出查找的信息 (按學(xué)號和姓名)?
void PrintSearch1(Linklist &L,int mid);?? ??? ?//輸出查找的信息(按房號)?

Status DeleteNO(Linklist &L);?? ??? ??? ??? ?//按學(xué)號刪除某同學(xué)的信息 ?? ?
Status DeleteName(Linklist &L);?? ??? ??? ??? ?//按姓名刪除某同學(xué)的信息?
Status DeleteRoom(Linklist &L);?? ??? ??? ??? ?//按宿舍號刪除某同學(xué)的信息?

Status insert(Linklist &L);?? ??? ??? ??? ??? ?//插入某同學(xué)的信息?

void JudgeSave(Linklist &L,int i);?? ??? ??? ?//文件存儲?
void Save(Linklist &L);
void Load(Linklist &L);?? ??? ??? ??? ??? ??? ?//文件加載?

Status ReturnMenu();?? ??? ??? ??? ??? ??? ?//返回菜單頁面?

//----------------------------------------------------------------菜單操作-------------------------------------------------------
void menu()
{
?? ?printf("\t\t ? ? ? ? ? ? ======================== ? ? ? ?\n");
?? ?printf("\t\t ? ? ? ? ? ?| ? ? ? ? ? ? ? ? ? ? ? | ? ? ? ?\n");
?? ?printf("\t\t ? |--------| ? ? 宿舍管理查詢 ? ? ?|-------|\n");
?? ?printf("\t\t ? | ? ? ? ?| ? ? ? ? ? ? ? ? ? ? ? | ? ? ? |\n");
?? ?printf("\t\t ? | ? ? ? ? ======================== ? ? ? |\n");
?? ?printf("\t\t ? | ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?|\n");
?? ?printf("\t\t ? | ? ? ? ? ? ?請選擇你的操作 : ? ? ? ? ? |\n");
?? ?printf("\t\t ? | ? ? ? ? ? ?[1]創(chuàng)建學(xué)生信息 ? ? ? ? ? ? |\n");
?? ?printf("\t\t ? | ? ? ? ? ? ?[2]按姓名排序(插入排序) ? ? |\n");
?? ?printf("\t\t ? | ? ? ? ? ? ?[3]按學(xué)號排序(插入排序) ? ? |\n");
?? ?printf("\t\t ? | ? ? ? ? ? ?[4]按房號排序(插入排序) ? ? |\n");
?? ?printf("\t\t ? | ? ? ? ? ? ?[5]按姓名排序(選擇排序) ? ? |\n");
?? ?printf("\t\t ? | ? ? ? ? ? ?[6]按學(xué)號排序(選擇排序) ? ? |\n");
?? ?printf("\t\t ? | ? ? ? ? ? ?[7]按房號排序(選擇排序) ? ? |\n");
?? ?printf("\t\t ? | ? ? ? ? ? ?[8]按姓名排序(冒泡排序) ? ? |\n");
?? ?printf("\t\t ? | ? ? ? ? ? ?[9]按學(xué)號排序(冒泡排序) ? ? |\n");
?? ?printf("\t\t ? | ? ? ? ? ? ?[10]按房號排序(冒泡排序) ? ?|\n");
?? ?printf("\t\t ? | ? ? ? ? ? ?[11]按姓名查找 ? ? ? ? ? ? ?|\n");
?? ?printf("\t\t ? | ? ? ? ? ? ?[12]按學(xué)號查找 ? ? ? ? ? ? ?|\n");
?? ?printf("\t\t ? | ? ? ? ? ? ?[13]按房號查找 ? ? ? ? ? ? ?|\n");
?? ?printf("\t\t ? | ? ? ? ? ? ?[14]插入學(xué)生信息 ? ? ? ? ? ?|\n");
?? ?printf("\t\t ? | ? ? ? ? ? ?[15]按學(xué)號刪除學(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 ? | ? ? ? ? ? ? ? ? 歡迎查詢 ? ? ? ? ? ? ? |\n");
?? ?printf("\t\t ? |-======================================-|\n");
?? ?printf("請選擇你要進(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)入宿舍管理查詢界面\n\n\n");
?? ?printf("請按任意鍵進(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已無學(xué)生記錄\n"); ? ? ? ? ? ? ? ??
?? ??? ??? ??? ?} ? ? ? ?
?? ??? ??? ??? ?else{
?? ??? ??? ??? ??? ?printf("按姓名排序:\n"); ? ?
?? ??? ??? ??? ??? ?PrintSort(L);
?? ??? ??? ??? ?}?
?? ??? ??? ??? ?ReturnMenu(); ??
?? ??? ??? ??? ?break;
?? ??? ??? ?case 3:
?? ??? ??? ??? ?CSortNo(L); ? ? ??
?? ??? ??? ??? ?if(L.length==0) ? ? ?
?? ??? ??? ??? ?{ ? ? ??
?? ??? ??? ??? ??? ?printf("\n已無學(xué)生記錄\n"); ? ? ? ? ? ? ? ??
?? ??? ??? ??? ?} ? ? ? ?
?? ??? ??? ??? ?else{
?? ??? ??? ??? ??? ?printf("按學(xué)號排序:\n"); ? ?
?? ??? ??? ??? ??? ?PrintSort(L);
?? ??? ??? ??? ?}?
?? ??? ??? ??? ?ReturnMenu(); ??
?? ??? ??? ??? ?break;
?? ??? ??? ?case 4:
?? ??? ??? ??? ?CSortRoom(L); ? ? ??
?? ??? ??? ??? ?if(L.length==0) ? ? ?
?? ??? ??? ??? ?{ ? ? ??
?? ??? ??? ??? ??? ?printf("\n已無學(xué)生記錄\n"); ? ? ? ? ? ? ? ??
?? ??? ??? ??? ?} ? ? ? ?
?? ??? ??? ??? ?else{
?? ??? ??? ??? ??? ?printf("按房號排序:\n"); ? ?
?? ??? ??? ??? ??? ?PrintSort(L);
?? ??? ??? ??? ?}?
?? ??? ??? ??? ?ReturnMenu(); ??
?? ??? ??? ??? ?break; ? ??
?? ??? ??? ?case 5:
?? ??? ??? ??? ?XSortName(L); ? ? ? ? ? ? ? ? ? ??
?? ??? ??? ??? ?printf("\n"); ? ? ??
?? ??? ??? ??? ?if(L.length==0){
?? ??? ??? ??? ??? ?printf("已無學(xué)生記錄\n"); ? ??
?? ??? ??? ??? ??? ?printf("\n"); ? ? ? ?
?? ??? ??? ??? ??? ?ReturnMenu(); ? ? ? ?
?? ??? ??? ??? ?} ? ? ? ?
?? ??? ??? ??? ?else{ ? ?
?? ??? ??? ??? ??? ?printf("按姓名排序:\n"); ? ?
?? ??? ??? ??? ??? ?PrintSort(L); ? ?
?? ??? ??? ??? ??? ?ReturnMenu(); ? ? ? ??
?? ??? ??? ??? ?}
?? ??? ??? ??? ?break;?
?? ??? ??? ?case 6:
?? ??? ??? ??? ?XSortNo(L); ? ? ? ? ? ? ? ? ? ??
?? ??? ??? ??? ?printf("\n"); ? ? ??
?? ??? ??? ??? ?if(L.length==0){
?? ??? ??? ??? ??? ?printf("已無學(xué)生記錄\n"); ? ??
?? ??? ??? ??? ??? ?printf("\n"); ? ? ? ?
?? ??? ??? ??? ??? ?ReturnMenu(); ? ? ? ?
?? ??? ??? ??? ?} ? ? ? ?
?? ??? ??? ??? ?else{ ? ?
?? ??? ??? ??? ??? ?printf("按學(xué)號排序:\n"); ? ?
?? ??? ??? ??? ??? ?PrintSort(L); ? ?
?? ??? ??? ??? ??? ?ReturnMenu(); ? ? ? ??
?? ??? ??? ??? ?}
?? ??? ??? ??? ?break;
?? ??? ??? ?case 7:
?? ??? ??? ??? ?XSortRoom(L); ? ? ? ? ? ? ? ? ? ??
?? ??? ??? ??? ?printf("\n"); ? ? ??
?? ??? ??? ??? ?if(L.length==0){
?? ??? ??? ??? ??? ?printf("已無學(xué)生記錄\n"); ? ??
?? ??? ??? ??? ??? ?printf("\n"); ? ? ? ?
?? ??? ??? ??? ??? ?ReturnMenu(); ? ? ? ?
?? ??? ??? ??? ?} ? ? ? ?
?? ??? ??? ??? ?else{ ? ?
?? ??? ??? ??? ??? ?printf("按房號排序:\n"); ? ?
?? ??? ??? ??? ??? ?PrintSort(L); ? ?
?? ??? ??? ??? ??? ?ReturnMenu(); ? ? ? ??
?? ??? ??? ??? ?}
?? ??? ??? ??? ?break;
?? ??? ??? ?case 8:
?? ??? ??? ??? ?MSortName(L); ? ? ? ? ? ? ? ? ? ?
?? ??? ??? ??? ?printf("\n"); ? ??
?? ??? ??? ??? ?if(L.length==0){ ? ? ?
?? ??? ??? ??? ??? ?printf("已無學(xué)生記錄\n"); ? ? ? ? ? ?
?? ??? ??? ??? ??? ?ReturnMenu(); ? ? ?
?? ??? ??? ??? ?}
?? ??? ??? ??? ?else{
?? ??? ??? ??? ??? ?printf("按姓名排序:\n"); ?
?? ??? ??? ??? ??? ?PrintSort(L); ?
?? ??? ??? ??? ??? ?ReturnMenu(); ? ?
?? ??? ??? ??? ?}
?? ??? ??? ??? ?break;
?? ??? ??? ?case 9:
?? ??? ??? ??? ?MSortNo(L); ? ? ? ? ? ? ? ? ? ?
?? ??? ??? ??? ?printf("\n"); ? ??
?? ??? ??? ??? ?if(L.length==0){ ? ? ?
?? ??? ??? ??? ??? ?printf("已無學(xué)生記錄\n"); ? ? ? ? ? ?
?? ??? ??? ??? ??? ?ReturnMenu(); ? ? ?
?? ??? ??? ??? ?}
?? ??? ??? ??? ?else{
?? ??? ??? ??? ??? ?printf("按學(xué)號排序:\n"); ?
?? ??? ??? ??? ??? ?PrintSort(L); ?
?? ??? ??? ??? ??? ?ReturnMenu(); ? ?
?? ??? ??? ??? ?}
?? ??? ??? ??? ?break;
?? ??? ??? ? ? ? ? ?
?? ??? ??? ?case 10:
?? ??? ??? ??? ?MSortRoom(L); ? ? ? ? ? ? ? ? ? ?
?? ??? ??? ??? ?printf("\n"); ? ??
?? ??? ??? ??? ?if(L.length==0){ ? ? ?
?? ??? ??? ??? ??? ?printf("已無學(xué)生記錄\n"); ? ? ? ? ? ?
?? ??? ??? ??? ??? ?ReturnMenu(); ? ? ?
?? ??? ??? ??? ?}
?? ??? ??? ??? ?else{
?? ??? ??? ??? ??? ?printf("按房號排序:\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該房間沒有學(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("無此操作\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é)生類信息表--------------------------------------------------

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("請輸入第%d個學(xué)生信息\n",i+1);
?? ??? ?input(L);
?? ??? ?if(room[student.Room]+1>6){
?? ??? ??? ?printf("該宿舍已滿員!請重新輸入:\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;
}

//--------------------------------------------------------------按照宿舍號排序(冒泡排序)--------------------------------------------------------
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;
}
//-------------------------------------------------------------------按照宿舍號排序(選擇排序)-------------------------------------------------------------

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é)號排序(冒泡排序)--------------------------------------------------------
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é)號排序(選擇排序)-------------------------------------------------------------

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é)號排序(插入排序)--------------------------------------------------------------
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;
}

//-------------------------------------------------------------------------按房號查找(折半查找)----------------------------------------------------------

Status SearchRoom(Linklist &L)
{
?? ?if(L.length==0)
?? ??? ?Judge3();
?? ?else
?? ?{
?? ??? ?int low=0,high=L.length,m,temp;
?? ??? ?int r;
?? ??? ?printf("\n按房號查找 ? 輸入房號:");
?? ??? ?scanf("%d",&r);
?? ??? ?printf("\n查找成功 ? 學(xué)生信息為\n");
?? ??? ?printf("\t\t姓名 ? ? ? ? ? ? ? ? ? ? ? ?學(xué)號 ? ? ? 房號\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é)號查找(折半查找)--------------------------------------------------------
Status SearchNo(Linklist &L)
{
?? ?if(L.length==0)
?? ?{
?? ??? ?Judge3();
?? ?}
?? ?else
?? ?{
?? ??? ?int low=0,high=L.length,m,temp=0;?? ??? ??? ??? ??? ?
?? ??? ?int n;
?? ??? ?printf("\n按學(xué)號查找 ? 輸入學(xué)號:");
?? ??? ?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("沒有此學(xué)生,是否繼續(xù):是的話按Y,否則按任意鍵返回");
?? ?fflush(stdin);
?? ?scanf("%c",&ch);
?? ?if(ch=='Y')
?? ?{
?? ??? ?system("cls");
?? ??? ?return OK;
?? ?}
?? ?else
?? ??? ?return ERROR;
}

//--------------------------------------------------------------------無學(xué)生記錄返回主界面------------------------------------------------------------------

Status Judge3()?? ??? ?
{
?? ?printf("已經(jīng)沒有學(xué)生記錄\n");
?? ?ReturnMenu();
?? ?menu();
?? ?return OK;
}

//------------------------------------------------------------------------判斷學(xué)生學(xué)號是否一樣--------------------------------------------------------------?
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é)號已經(jīng)存在,請重新輸入!\n");
?? ??? ?input(L);
?? ?}
?? ?return OK;
}?? ?

//------------------------------------------------------------------------輸入學(xué)生信息----------------------------------------------------------------?
void input(Linklist L)
{
?? ?printf("輸入學(xué)生姓名:\n");
?? ?fflush(stdin);
?? ?gets(student.name);
?? ?printf("輸入學(xué)生宿舍號:\n");
?? ?scanf("%d",&student.Room);
?? ?
?? ?printf("輸入學(xué)生學(xué)號:\n");
?? ?fflush(stdin);
?? ?scanf("%d",&student.No);
?? ?
?? ?JudgeNO(student.No,L);
}

//-----------------------------------------------------------------------輸出學(xué)生排序的信息-------------------------------------------------------------

void PrintSort(Linklist & L)?? ??? ?
{
?? ?int i;
?? ?printf("\n");
?? ?printf("\t\t姓名 ? ? ? ? ? ? ? ? ? ? ? ?學(xué)號 ? ? ? ? 房號\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é)號或姓名)----------------------------------------------------

void PrintSearch(Linklist & L,int mid)?? ?
{
?? ?printf("查找成功 ? 學(xué)生信息為\n");
?? ?printf("\t\t姓名 ? ? ? ? ? ? ? ? ? ? ? ?學(xué)號 ? ? ? ? 房號\n");
?? ?printf("\t\t%-20s %10d ? %10d\n",L.elem[mid].name,L.elem[mid].No,L.elem[mid].Room);
}

//------------------------------------------------------------------------輸出查找學(xué)生的信息(按房號)-------------------------------------------------------------

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("該宿舍已滿員,請重新輸入:\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é)號刪除-------------------------------------------------------

Status DeleteNO(Linklist &L)?? ?
{ ??
?? ?int i,j,k=-1; ??
?? ?char ch; ? ?
?? ?printf("\n\n請輸入要刪除學(xué)生的學(xué)號:"); ??
?? ?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é)號 ? ? ? ? 房號\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請輸入要刪除學(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é)號 ? ? ? ? 房號\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;
}


//-------------------------------------------------------------------------按宿舍號刪除-------------------------------------------------------

Status DeleteRoom(Linklist &L)?? ?
{ ??
?? ?int i,j,k=-1,n=L.length; ??
?? ?char ch; ? ?
?? ?printf("\n\n請輸入要刪除學(xué)生的宿舍號:"); ??
?? ?scanf("%d",&student.Room);?
?? ?
?? ?printf("刪除該宿舍學(xué)生的信息為:\n");?
?? ?printf("\t\t姓名 ? ? ? ? ? ? ? ? ? ? ? ?學(xué)號 ? ? ? ? 房號\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("此房間沒有學(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("打開文件失敗!\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("請輸入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("打開文件失敗!\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ù)存儲成功!\n\n");
?? ??? ?flag=0;
?? ?}
? ? fclose(fp);
}

項(xiàng)目效果截圖

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

相關(guān)文章

  • C++中的數(shù)字轉(zhuǎn)字符串to_string

    C++中的數(shù)字轉(zhuǎn)字符串to_string

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

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

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

    C語言內(nèi)存操作函數(shù)詳解

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

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

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

    C語言如何讀取bmp圖像

    這篇文章主要介紹了C語言如何讀取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語言實(shí)現(xiàn)二叉樹的搜索及相關(guān)算法示例

    C語言實(shí)現(xiàn)二叉樹的搜索及相關(guān)算法示例

    這篇文章主要介紹了C語言實(shí)現(xiàn)二叉樹的搜索及相關(guān)算法,結(jié)合具體實(shí)例形式分析了基于C語言創(chuàng)建、遍歷、搜索等相關(guān)算法與實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2017-06-06
  • C++實(shí)現(xiàn)簡單貪吃蛇游戲

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

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

    C語言中的getchar和putchar的使用方法

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

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

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

最新評論