最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語言實現(xiàn)學生宿舍信息管理系統(tǒng)課程設(shè)計

 更新時間:2022年03月16日 15:51:07   作者:tan-1210  
這篇文章主要為大家詳細介紹了C語言實現(xiàn)學生宿舍信息管理系統(tǒng)課程設(shè)計,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

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

一、問題陳述

宿舍對于大學生在校生活來說相當于家的存在,而宿舍管理又是學校后勤管理的重要環(huán)節(jié),如何直觀的了解宿舍的入住情況和每位同學的住宿位置是提高工作效率的重要課題,根據(jù)我們所學的C語言和數(shù)據(jù)結(jié)構(gòu)課程中有關(guān)鏈表的內(nèi)容,為宿舍管理人員編寫宿舍管理查詢軟件,就可以輕松滿足實現(xiàn)上述需求。

任務:

1、為宿舍管理人員編寫一個宿舍管理查詢軟件, 程序設(shè)計要求:
1)、采用交互工作方式
2)、可按關(guān)鍵字(姓名、學號、房號)進行排序

2、查詢菜單: (用二分查找實現(xiàn)以下操作)
1)、按姓名查詢
2)、按學號查詢
3)、按房號查詢

3、打印任一查詢結(jié)果(可以連續(xù)操作)

二、概要設(shè)計

2.1 概要簡述

根據(jù)系統(tǒng)要求,即本系統(tǒng)具有信息的錄入,顯示,排序顯示、查找,插入、刪除、結(jié)束程序等功能,先設(shè)計出詳細的系統(tǒng)流程圖,然后將源代碼輸入程序,進行編譯調(diào)試即可。
程序總體分10個項目:輸入記錄、顯示記錄、按姓名排序并顯示、按房間號排序并顯示 、按學號排序并顯示 、按姓名查找并顯示 、按房間號查找并顯示 、按學號查找并顯示、插入一條記錄按學號排序并顯示以及結(jié)束程序。

2.2 線性表存儲結(jié)構(gòu)表示

typedef struct {
?? ?char name[20];
?? ?int num; ? ? ? ? ? ?//學號和房號都為整型
?? ?int room;
} stu;

typedef struct {
?? ?int length; //當前長度
?? ?stu *elem; ?//存儲空間基址
?? ?int listsize; ?//當前分配的存儲容量
} linklist;

2.3 詳細設(shè)計

2.3.1 系統(tǒng)流程圖

2.3.2 三種排序方法及二分查找法

2.3.2.1 冒泡排序(按姓名排序)

//按姓名排序(采用冒泡排序)
void sort1(linklist &L) {?
?? ?int i, j;
?? ?stu temp;
?? ?for (i = 0; i<L.length - 1; i++)
?? ??? ?for (j = 0; j<L.length-1-i; j++)
?? ??? ??? ?if (strcmp(L.elem[j].name, L.elem[j+1].name)>0) {
?? ??? ??? ??? ?temp = L.elem[j];
?? ??? ??? ??? ?L.elem[j] = L.elem[j+1];
?? ??? ??? ??? ?L.elem[j+1] = temp;
?? ??? ??? ?}
}

2.3.2.2 折半插入排序(按學號排序)

//按學號排序(采用折半插入排序)
void sort2(linklist &L) {?
?? ?int i, j, mid, low, high;
?? ?stu temp;
?? ?for (i = 1; i < L.length; i++) {
?? ??? ?if(L.elem[i].num<L.elem[i-1].num) {
?? ??? ??? ?temp = L.elem[i];
?? ??? ??? ?low = 0;
?? ??? ??? ?high = i-1;
?? ??? ??? ?while (low <= high) {
?? ??? ??? ??? ?mid = (low + high) / 2;
?? ??? ??? ??? ?if (temp.num < L.elem[mid].num)
?? ??? ??? ??? ??? ?high = mid - 1;
?? ??? ??? ??? ?else
?? ??? ??? ??? ??? ?low = mid + 1;
?? ??? ??? ?}
?? ??? ??? ?for (j = i - 1; j >= high+1; j--)
?? ??? ??? ??? ?L.elem[j+1]=L.elem[j];
?? ??? ??? ?L.elem[high+1]=temp;
?? ??? ?}
?? ?}
}

2.3.2.3 簡單選擇排序(按房號排序)

//按房號排序(采用簡單選擇排序)
void sort3(linklist &L) {?
?? ?int i,j,k;
?? ?stu temp;
?? ?for(i=0; i<L.length-1; i++) {
?? ??? ?k=i;
?? ??? ?for(j=i+1; j<L.length; j++)
?? ??? ??? ?if(L.elem[j].room<L.elem[k].room)
?? ??? ??? ??? ?k=j;
?? ??? ?if(k!=i){
?? ??? ??? ?temp = L.elem[i];
?? ??? ??? ?L.elem[i] = L.elem[k];
?? ??? ??? ?L.elem[k] = temp;
?? ??? ?}
?? ?}
}

2.3.2.4 二分查找法(以按姓名查找為例)

//按姓名從小到大查找(采用二分查找)
void search1(linklist &L) {?
?? ?if (L.length == 0) {
?? ??? ?printf("已無學生記錄!\n");
?? ??? ?Ret();
?? ??? ?Menu();
?? ?} else {
?? ??? ?int low = 0, high = L.length, mid, flag = 0;
?? ??? ?printf("\n");
?? ??? ?printf("按姓名查找-->請輸入要查找的姓名:");
?? ??? ?char a[15], ch;
?? ??? ?scanf("%s", a);
?? ??? ?while (low <= high) {
?? ??? ??? ?mid = (low + high) / 2;
?? ??? ??? ?if (strcmp(a, L.elem[mid].name) == 0) {
?? ??? ??? ??? ?flag = 1;
?? ??? ??? ??? ?break;
?? ??? ??? ?} else if (strcmp(a, L.elem[mid].name)>0)
?? ??? ??? ??? ?low = mid + 1;
?? ??? ??? ?else
?? ??? ??? ??? ?high = mid - 1;
?? ??? ?}
?? ??? ?if (flag == 1) {
?? ??? ??? ?printf("查找成功-->該學生信息為:\n");
?? ??? ??? ?printf("姓名 ? ? ? 學號 ? ?房號\n");
?? ??? ??? ?printf("%-10s %-2d %-5d\n", L.elem[mid].name, L.elem[mid].num, L.elem[mid].room);
?? ??? ??? ?if (Select())
?? ??? ??? ??? ?search1(L);
?? ??? ??? ?else {
?? ??? ??? ??? ?system("cls");
?? ??? ??? ??? ?Menu();
?? ??? ??? ?}
?? ??? ?} else {
?? ??? ??? ?printf("該學生不存在!");
?? ??? ??? ?if (Select()) ? ?search1(L);
?? ??? ??? ?else {
?? ??? ??? ??? ?system("cls");
?? ??? ??? ??? ?Menu();
?? ??? ??? ?}
?? ??? ?}
?? ?}
}

三、測試與運行

3.1 系統(tǒng)界面

3.2 新建宿舍名單

3.3 排序(以姓名排序為例)

3.4 查詢(以學號查詢?yōu)槔?/p>

3.5 插入學生信息

3.6 刪除學生信息

四、代碼實現(xiàn)

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<windows.h>
#define N 40 //線性表存儲空間的初始分配量
#define increase 10 //線性表存儲空間的分配量增量
int choice; ?//定義全局變量
typedef struct {
?? ?char name[20];
?? ?int num; ? ? ? ? ? ?//學號和房號都為整型
?? ?int room;
} stu;
stu stud;
typedef struct {
?? ?int length; //當前長度
?? ?stu *elem; ?//存儲空間基址
?? ?int listsize; ?//當前分配的存儲容量
} linklist;

//線性表初始化
void Init(linklist &L) {?
?? ?L.length = 0;
?? ?L.elem = (stu *)malloc(N * sizeof(stu));
?? ?L.listsize = N;
}

//操作菜單
void Menu() {?
?? ?printf( "**************************************\n" );
?? ?printf( "*** ? ? ? 歡迎進入宿舍管理系統(tǒng) ? ? ***\n" );
?? ?printf( "**************************************\n" );
?? ?printf( "* ? ? ? ?1. ?新建宿舍名單 ? ? ? ? ? ?*\n" );
?? ?printf( "* ? ? ? ?2. ?排序宿舍信息 ? ? ? ? ? ?*\n" );
?? ?printf( "* ? ? ? ?3. ?查詢宿舍信息 ? ? ? ? ? ?*\n" );
?? ?printf( "* ? ? ? ?4. ?插入宿舍信息 ? ? ? ? ? ?*\n" );
?? ?printf( "* ? ? ? ?5. ?刪除宿舍信息 ? ? ? ? ? ?*\n" );
?? ?printf( "* ? ? ? ?0. ?退出系統(tǒng) ? ? ? ? ? ? ? ?*\n" );
?? ?printf( "**************************************\n" );
?? ?printf("請輸入菜單(0-5):");
?? ?scanf("%d", &choice);
?? ?if (choice<0 || choice>5) {
?? ??? ?system("cls");
?? ??? ?printf("輸入數(shù)字不對,請重新!\n");
?? ??? ?printf("\n");
?? ??? ?Menu();
?? ?}

}

//打印學生信息
void Display(linklist &L) {?
?? ?int i;
?? ?printf("姓名 ? ? ? 學號 ? ?房號\n");
?? ?for (i = 0; i<L.length; i++)
?? ??? ?printf("%-10s %-2d %5d\n", L.elem[i].name, L.elem[i].num, L.elem[i].room);
}

//返回主界面
void Ret() { ? ?
?? ?char c;
?? ?fflush(stdin);
?? ?printf("\n");
?? ?printf("請按任意鍵進入主界面:");
?? ?scanf("%c", &c);
?? ?system("cls");
}

//創(chuàng)建學生信息表
void Create(linklist &L) {?
?? ?if (L.length >= L.listsize) { //判斷學生的人數(shù)是否超過初值,如果超過,則重新分配
?? ??? ?stu *newbase;
?? ??? ?newbase = (stu*)realloc(L.elem, (N + increase) * sizeof(stu));
?? ??? ?L.elem = newbase;
?? ??? ?L.listsize += increase;
?? ?}
?? ?int i = 2;
?? ?char ch;
?? ?printf("********開始創(chuàng)建學生信息**********\n");
?? ?printf("\n");
?? ?printf("請輸入第1個學生的信息\n");
?? ?printf("請輸入姓名:");
?? ?fflush(stdin); ? ? ?// 清空輸入緩沖區(qū),得到正確的輸入數(shù)據(jù)
?? ?gets(stud.name); ? ?//輸入一行字符串(姓名)
?? ?printf("請輸入學號:");
?? ?scanf("%d", &stud.num);
?? ?printf("請輸入房號:");
?? ?scanf("%d", &stud.room);
?? ?ch = getchar();
?? ?strcpy(L.elem[L.length].name, stud.name);
?? ?L.elem[L.length].num = stud.num;
?? ?L.elem[L.length].room = stud.room;
?? ?L.length++;
?? ?printf("\n");
?? ?printf("是否繼續(xù)輸入?<y/n>:");
?? ?scanf("%c", &ch);
?? ?printf("\n");
?? ?while (ch == 'y') {
?? ??? ?printf("請輸入第%d個學生的信息\n", i);
?? ??? ?printf("請輸入姓名:");
?? ??? ?fflush(stdin); ? ? ?// 清空輸入緩沖區(qū),得到正確的輸入數(shù)據(jù)
?? ??? ?gets(stud.name); ? ?//輸入一行字符串(姓名)
?? ??? ?printf("請輸入學號:");
?? ??? ?scanf("%d", &stud.num);
?? ??? ?printf("請輸入房號:");
?? ??? ?scanf("%d", &stud.room);
?? ??? ?strcpy(L.elem[L.length].name, stud.name);
?? ??? ?L.elem[L.length].num = stud.num;
?? ??? ?L.elem[L.length].room = stud.room;
?? ??? ?i++;
?? ??? ?L.length=i-1;
?? ??? ?ch = getchar();
?? ??? ?printf("\n");
?? ??? ?printf("是否繼續(xù)輸入?<y/n>:");
?? ??? ?scanf("%c", &ch);
?? ??? ?printf("\n");
?? ?}
?? ?if (ch == 'n')
?? ??? ?system("cls");
}

//按姓名排序(采用冒泡排序)
void sort1(linklist &L) {?
?? ?int i, j;
?? ?stu temp;
?? ?for (i = 0; i<L.length - 1; i++)
?? ??? ?for (j = 0; j<L.length-1-i; j++)
?? ??? ??? ?if (strcmp(L.elem[j].name, L.elem[j+1].name)>0) {
?? ??? ??? ??? ?temp = L.elem[j];
?? ??? ??? ??? ?L.elem[j] = L.elem[j+1];
?? ??? ??? ??? ?L.elem[j+1] = temp;
?? ??? ??? ?}
}

//按學號排序(采用折半插入排序)
void sort2(linklist &L) {?
?? ?int i, j, mid, low, high;
?? ?stu temp;
?? ?for (i = 1; i < L.length; i++) {
?? ??? ?if(L.elem[i].num<L.elem[i-1].num) {
?? ??? ??? ?temp = L.elem[i];
?? ??? ??? ?low = 0;
?? ??? ??? ?high = i-1;
?? ??? ??? ?while (low <= high) {
?? ??? ??? ??? ?mid = (low + high) / 2;
?? ??? ??? ??? ?if (temp.num < L.elem[mid].num)
?? ??? ??? ??? ??? ?high = mid - 1;
?? ??? ??? ??? ?else
?? ??? ??? ??? ??? ?low = mid + 1;
?? ??? ??? ?}
?? ??? ??? ?for (j = i - 1; j >= high+1; j--)
?? ??? ??? ??? ?L.elem[j+1]=L.elem[j];
?? ??? ??? ?L.elem[high+1]=temp;
?? ??? ?}
?? ?}
}

//按房號排序(采用簡單選擇排序)
void sort3(linklist &L) {?
?? ?int i,j,k;
?? ?stu temp;
?? ?for(i=0; i<L.length-1; i++) {
?? ??? ?k=i;
?? ??? ?for(j=i+1; j<L.length; j++)
?? ??? ??? ?if(L.elem[j].room<L.elem[k].room)
?? ??? ??? ??? ?k=j;
?? ??? ?if(k!=i){
?? ??? ??? ?temp = L.elem[i];
?? ??? ??? ?L.elem[i] = L.elem[k];
?? ??? ??? ?L.elem[k] = temp;
?? ??? ?}
?? ?}
}
//排序函數(shù)
void Sort(linklist &L) {?
?? ?int c;
?? ?printf("請輸入排序的方式(1:按名字排序,2:按學號排序,3:按房號排序):");
?? ?scanf("%d", &c);
?? ?switch (c) {
?? ??? ?case 1:
?? ??? ??? ?sort1(L);
?? ??? ??? ?if (L.length == 0) {
?? ??? ??? ??? ?printf("已無學生記錄!\n");
?? ??? ??? ??? ?Ret();
?? ??? ??? ??? ?Menu();
?? ??? ??? ?} else {
?? ??? ??? ??? ?printf("按姓名排序:\n");
?? ??? ??? ??? ?Display(L);
?? ??? ??? ??? ?Ret(); ?//調(diào)用返回主界面
?? ??? ??? ??? ?Menu();
?? ??? ??? ?}
?? ??? ??? ?break;
?? ??? ?case 2:
?? ??? ??? ?sort2(L);
?? ??? ??? ?if (L.length == 0) {
?? ??? ??? ??? ?printf("已無學生記錄!\n");
?? ??? ??? ??? ?Ret();
?? ??? ??? ??? ?Menu();
?? ??? ??? ?} else {
?? ??? ??? ??? ?printf("按學號排序:\n");
?? ??? ??? ??? ?Display(L);
?? ??? ??? ??? ?Ret(); ?//調(diào)用返回主界面
?? ??? ??? ??? ?Menu();
?? ??? ??? ?}
?? ??? ??? ?break;
?? ??? ?case 3:
?? ??? ??? ?sort3(L);
?? ??? ??? ?if (L.length == 0) {
?? ??? ??? ??? ?printf("已無學生記錄!\n");
?? ??? ??? ??? ?Ret();
?? ??? ??? ??? ?Menu();
?? ??? ??? ?} else {
?? ??? ??? ??? ?printf("按房號排序:\n");
?? ??? ??? ??? ?Display(L);
?? ??? ??? ??? ?Ret(); ?//調(diào)用返回主界面
?? ??? ??? ??? ?Menu();
?? ??? ??? ?}
?? ??? ??? ?break;
?? ??? ?default:
?? ??? ??? ?break;
?? ?}
}

//選擇是否繼續(xù)查找
int Select() {?
?? ?char ch;
?? ?scanf("%c", &ch);
?? ?printf("是否繼續(xù)查找?<y/n>:");
?? ?fflush(stdin);
?? ?scanf("%c", &ch);
?? ?if (ch == 'y') {
?? ??? ?system("cls");
?? ??? ?return 1;
?? ?} else
?? ??? ?return 0;
}

//按姓名從小到大查找(采用二分查找)
void search1(linklist &L) {?
?? ?if (L.length == 0) {
?? ??? ?printf("已無學生記錄!\n");
?? ??? ?Ret();
?? ??? ?Menu();
?? ?} else {
?? ??? ?int low = 0, high = L.length, mid, flag = 0;
?? ??? ?printf("\n");
?? ??? ?printf("按姓名查找-->請輸入要查找的姓名:");
?? ??? ?char a[15], ch;
?? ??? ?scanf("%s", a);
?? ??? ?while (low <= high) {
?? ??? ??? ?mid = (low + high) / 2;
?? ??? ??? ?if (strcmp(a, L.elem[mid].name) == 0) {
?? ??? ??? ??? ?flag = 1;
?? ??? ??? ??? ?break;
?? ??? ??? ?} else if (strcmp(a, L.elem[mid].name)>0)
?? ??? ??? ??? ?low = mid + 1;
?? ??? ??? ?else
?? ??? ??? ??? ?high = mid - 1;
?? ??? ?}
?? ??? ?if (flag == 1) {
?? ??? ??? ?printf("查找成功-->該學生信息為:\n");
?? ??? ??? ?printf("姓名 ? ? ? 學號 ? ?房號\n");
?? ??? ??? ?printf("%-10s %-2d %-5d\n", L.elem[mid].name, L.elem[mid].num, L.elem[mid].room);
?? ??? ??? ?if (Select())
?? ??? ??? ??? ?search1(L);
?? ??? ??? ?else {
?? ??? ??? ??? ?system("cls");
?? ??? ??? ??? ?Menu();
?? ??? ??? ?}
?? ??? ?} else {
?? ??? ??? ?printf("該學生不存在!");
?? ??? ??? ?if (Select()) ? ?search1(L);
?? ??? ??? ?else {
?? ??? ??? ??? ?system("cls");
?? ??? ??? ??? ?Menu();
?? ??? ??? ?}
?? ??? ?}
?? ?}
}

//按學號從小到大查找(采用二分查找)
void search2(linklist &L) {?
?? ?if (L.length == 0) {
?? ??? ?printf("\n");
?? ??? ?printf("已無學生記錄!\n");
?? ??? ?Ret();
?? ??? ?Menu();
?? ?} else {
?? ??? ?int low = 0, high = L.length, mid, flag = 0;
?? ??? ?int n;
?? ??? ?char ch;
?? ??? ?printf("\n");
?? ??? ?printf("按學號查找-->請輸入要查找的學號:");
?? ??? ?scanf("%d", &n);
?? ??? ?while (low <= high) {
?? ??? ??? ?mid = (low + high) / 2;
?? ??? ??? ?if (n == L.elem[mid].num) {
?? ??? ??? ??? ?flag = 1;
?? ??? ??? ??? ?break;
?? ??? ??? ?} else if (n>L.elem[mid].num)
?? ??? ??? ??? ?low = mid + 1;
?? ??? ??? ?else
?? ??? ??? ??? ?high = mid - 1;
?? ??? ?}
?? ??? ?if (flag == 1) {
?? ??? ??? ?printf("查找成功----->該學生信息為:\n");
?? ??? ??? ?printf("姓名 ? ? ? 學號 ? ?房號\n");
?? ??? ??? ?printf("%-1s0 %-2d %-5d\n", L.elem[mid].name, L.elem[mid].num, L.elem[mid].room);
?? ??? ??? ?if (Select())
?? ??? ??? ??? ?search2(L);
?? ??? ??? ?else {
?? ??? ??? ??? ?system("cls");
?? ??? ??? ??? ?Menu();
?? ??? ??? ?}
?? ??? ?} else {
?? ??? ??? ?printf("該學生不存在!");
?? ??? ??? ?if (Select())
?? ??? ??? ??? ?search2(L);
?? ??? ??? ?else {
?? ??? ??? ??? ?system("cls");
?? ??? ??? ??? ?Menu();
?? ??? ??? ?}
?? ??? ?}
?? ?}
}

//按房號從小到大查找(采用二分查找)
void search3(linklist &L) {?
?? ?if (L.length == 0) { //此函數(shù)功能為:返回主界面
?? ??? ?printf("\n");
?? ??? ?printf("已無學生記錄!\n");
?? ??? ?Ret();
?? ??? ?Menu();
?? ?} else {
?? ??? ?int low = 0, high = L.length, mid, flag = 0;//flag作為標志符,為1則表示查找成功,否則沒有所要查找的學生
?? ??? ?int m;
?? ??? ?char ch;
?? ??? ?printf("\n");
?? ??? ?printf("按房號查找-->請輸入要查找的房號:");
?? ??? ?scanf("%d", &m);
?? ??? ?while (low <= high) {
?? ??? ??? ?mid = (low + high) / 2;
?? ??? ??? ?if (m == L.elem[mid].room) {
?? ??? ??? ??? ?flag = 1;
?? ??? ??? ??? ?break;
?? ??? ??? ?} else if (m>L.elem[mid].room)
?? ??? ??? ??? ?low = mid + 1;
?? ??? ??? ?else
?? ??? ??? ??? ?high = mid - 1;
?? ??? ?}
?? ??? ?if (flag == 1) {
?? ??? ??? ?printf("查找成功-->該學生信息為:\n");
?? ??? ??? ?printf("姓名 ? ? ? 學號 ? ?房號\n");
?? ??? ??? ?printf("%-10s %-2d %-5d\n", L.elem[mid].name, L.elem[mid].num, L.elem[mid].room);
?? ??? ??? ?if (Select()) ? ?//調(diào)用判斷函數(shù)1
?? ??? ??? ??? ?search3(L);
?? ??? ??? ?else {
?? ??? ??? ??? ?system("cls");
?? ??? ??? ??? ?Menu();
?? ??? ??? ?}
?? ??? ?} else {
?? ??? ??? ?printf("該學生不存在!");
?? ??? ??? ?if (Select()) ?//調(diào)用判斷函數(shù)2
?? ??? ??? ??? ?search3(L);
?? ??? ??? ?else {
?? ??? ??? ??? ?system("cls");
?? ??? ??? ??? ?Menu();
?? ??? ??? ?}
?? ??? ?}
?? ?}
}

//查找函數(shù)
void Search(linklist &L) {?
?? ?int c;
?? ?printf("請輸入查找的方式(1:按名字查找,2:按學號查找,3:按房號查找):");
?? ?scanf("%d", &c);
?? ?switch (c) {
?? ??? ?case 1:
?? ??? ??? ?sort1(L);
?? ??? ??? ?search1(L);
?? ??? ??? ?break;//先進行二分查找排序
?? ??? ?case 2:
?? ??? ??? ?sort2(L);
?? ??? ??? ?search2(L);
?? ??? ??? ?break;
?? ??? ?case 3:
?? ??? ??? ?sort3(L);
?? ??? ??? ?search3(L);
?? ??? ??? ?break;
?? ??? ?default:
?? ??? ??? ?break;
?? ?}
}

//按學號從小到大插入該學生
void Insert(linklist &L) {?
?? ?int i, j, k;
?? ?char ch;
?? ?printf("\n");
?? ?printf("插入的學生信息為:\n");
?? ?printf("姓名:");
?? ?fflush(stdin);// 清空輸入緩沖區(qū),得到正確的輸入數(shù)據(jù)
?? ?gets(stud.name);
?? ?printf("學號:");
?? ?scanf("%d", &stud.num);
?? ?printf("房號:");
?? ?scanf("%d", &stud.room);
?? ?if (L.length == 0) {
?? ??? ?strcpy(L.elem[L.length].name, stud.name);
?? ??? ?L.elem[L.length].num = stud.num;
?? ??? ?L.elem[L.length].room = stud.room;
?? ?}
?? ?for (i = 0; i<L.length; i++) {
?? ??? ?if (stud.num<L.elem[i].num) {
?? ??? ??? ?k = i;
?? ??? ??? ?for (j = L.length; j>k; j--)
?? ??? ??? ??? ?L.elem[j] = L.elem[j - 1];
?? ??? ??? ?strcpy(L.elem[k].name, stud.name);
?? ??? ??? ?L.elem[k].num = stud.num;
?? ??? ??? ?L.elem[k].room = stud.room;
?? ??? ??? ?break;
?? ??? ?} else {
?? ??? ??? ?strcpy(L.elem[L.length].name, stud.name);
?? ??? ??? ?L.elem[L.length].num = stud.num;
?? ??? ??? ?L.elem[L.length].room = stud.room;
?? ??? ?}
?? ?}
?? ?L.length++;
?? ?fflush(stdin);
?? ?printf("\n");
?? ?printf("是否繼續(xù)插入?<y/n>:");
?? ?scanf("%c", &ch);
?? ?if (ch == 'y') Insert(L);
?? ?else system("cls");
}

//按學號刪除該學生
void Delete(linklist &L) {?
?? ?int i, j, k = -1;
?? ?char ch;
?? ?printf("\n");
?? ?printf("\n");
?? ?printf("請輸入要刪除學生的學號:");
?? ?scanf("%d", &stud.num);
?? ?for (i = 0; i<L.length; i++) {
?? ??? ?if (stud.num == L.elem[i].num) {
?? ??? ??? ?printf("該學生的信息為:\n");
?? ??? ??? ?printf("姓名:%s \n學號:%d \n房號:%d\n", L.elem[i].name, L.elem[i].num, L.elem[i].room);
?? ??? ??? ?k = i;
?? ??? ??? ?for (j = k; j<L.length - 1; j++)
?? ??? ??? ??? ?L.elem[j] = L.elem[j + 1];
?? ??? ??? ?printf("已成功刪除\n");

?? ??? ??? ?break;
?? ??? ?}
?? ?}
?? ?if (i >= L.length) printf("該學生不存在\n");
?? ?if (k >= 0)L.length--;
?? ?fflush(stdin);
?? ?printf("\n");
?? ?printf("是否繼續(xù)刪除操作?<y/n>:");
?? ?scanf("%c", &ch);
?? ?system("cls");
?? ?if (ch == 'y') Delete(L);
?? ?else system("cls");
}

//主函數(shù)
int main() { ?
?? ?linklist L; ? ?//定義線性表 L
?? ?Init(L);
?? ?Menu(); ? ? ? ?//調(diào)用主菜單函數(shù)
?? ?while (choice != 0) {
?? ??? ?system("cls");
?? ??? ?switch (choice) {
?? ??? ??? ?case 1:
?? ??? ??? ??? ?Create(L); ? ?//調(diào)用線性表創(chuàng)建函數(shù)
?? ??? ??? ??? ?Menu();
?? ??? ??? ??? ?break;
?? ??? ??? ?case 2:
?? ??? ??? ??? ?Sort(L);
?? ??? ??? ??? ?break;//調(diào)用排序函數(shù)
?? ??? ??? ?case 3:
?? ??? ??? ??? ?Search(L);
?? ??? ??? ??? ?break;//調(diào)用查找函數(shù)進行(二分)查找
?? ??? ??? ?case 4:
?? ??? ??? ??? ?sort2(L); ? ? ?//調(diào)用學號排序函數(shù)
?? ??? ??? ??? ?Insert(L); ? ? ? ?//按學號序列插入
?? ??? ??? ??? ?system("cls");
?? ??? ??? ??? ?printf("插入后的學生信息:\n");
?? ??? ??? ??? ?Display(L);
?? ??? ??? ??? ?Ret();
?? ??? ??? ??? ?Menu();
?? ??? ??? ??? ?break;
?? ??? ??? ?case 5:
?? ??? ??? ??? ?Delete(L); ? ?//調(diào)用刪除函數(shù)
?? ??? ??? ??? ?if (L.length == 0) {
?? ??? ??? ??? ??? ?printf("\n");
?? ??? ??? ??? ??? ?printf("學生記錄已被刪除完!\n");
?? ??? ??? ??? ??? ?Ret();
?? ??? ??? ??? ??? ?Menu();
?? ??? ??? ??? ?} else {
?? ??? ??? ??? ??? ?printf("顯示刪除后的學生信息:\n");
?? ??? ??? ??? ??? ?Display(L);
?? ??? ??? ??? ??? ?Ret();
?? ??? ??? ??? ??? ?Menu();
?? ??? ??? ??? ?}
?? ??? ??? ??? ?break;
?? ??? ?}
?? ?}
}

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

相關(guān)文章

  • 基于C語言實現(xiàn)猜數(shù)字游戲

    基于C語言實現(xiàn)猜數(shù)字游戲

    這篇文章主要為大家詳細介紹了基于C語言實現(xiàn)猜數(shù)字游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-05-05
  • C++ 詳細講解對象的構(gòu)造順序

    C++ 詳細講解對象的構(gòu)造順序

    對象的構(gòu)造往往和構(gòu)造函數(shù)會牽扯在一起,構(gòu)造函數(shù)的函數(shù)可能會由非常復雜的邏輯所組成,不同類的構(gòu)造函數(shù)的程序邏輯很可能是相互依賴的,當這種相互依賴一旦成立,那么對象的構(gòu)造順序很可能導致難以調(diào)試的Bug出現(xiàn)
    2022-04-04
  • C語言實現(xiàn)電子郵件地址驗證程序

    C語言實現(xiàn)電子郵件地址驗證程序

    這篇文章主要介紹了C語言實現(xiàn)電子郵件地址驗證程序,利用的是POSIX正則表達式,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2015-11-11
  • C++實現(xiàn)教務管理系統(tǒng)

    C++實現(xiàn)教務管理系統(tǒng)

    這篇文章主要為大家詳細介紹了C++實現(xiàn)教務管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • 使用C語言編寫鋼琴小程序

    使用C語言編寫鋼琴小程序

    這篇文章主要為大家詳細介紹了使用C語言編寫鋼琴小程序,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • C++ 實現(xiàn)優(yōu)先隊列的簡單實例

    C++ 實現(xiàn)優(yōu)先隊列的簡單實例

    這篇文章主要介紹了C++ 實現(xiàn)優(yōu)先隊列的簡單實例的相關(guān)資料,希望通過本文能幫助大家實現(xiàn)優(yōu)先隊列,需要的朋友可以參考下
    2017-08-08
  • C++使用WideCharToMultiByte函數(shù)生成UTF-8編碼文件的方法

    C++使用WideCharToMultiByte函數(shù)生成UTF-8編碼文件的方法

    用來映射Unicode字符串的WideCharToMultiByte函數(shù)經(jīng)常被用來進行UTF-8編碼的轉(zhuǎn)換,以下我們將看到C++使用WideCharToMultiByte函數(shù)生成UTF-8編碼文件的方法,首先先來對WideCharToMultiByte作一個詳細的了解:
    2016-06-06
  • C語言多維數(shù)組數(shù)據(jù)結(jié)構(gòu)的實現(xiàn)詳解

    C語言多維數(shù)組數(shù)據(jù)結(jié)構(gòu)的實現(xiàn)詳解

    對于數(shù)組想必大家都不陌生首先得要知道的是對于數(shù)組元素在內(nèi)存存儲是連續(xù)性的,下面這篇文章主要給大家介紹了關(guān)于C語言多維數(shù)組數(shù)據(jù)結(jié)構(gòu)的相關(guān)資料,需要的朋友可以參考下
    2021-12-12
  • libevent庫的使用方法實例

    libevent庫的使用方法實例

    這篇文章主要介紹了libevent庫的使用方法實例,有需要的朋友可以參考一下
    2013-12-12
  • C++基于socket UDP網(wǎng)絡(luò)編程實現(xiàn)簡單聊天室功能

    C++基于socket UDP網(wǎng)絡(luò)編程實現(xiàn)簡單聊天室功能

    這篇文章主要為大家詳細介紹了C++基于socket UDP網(wǎng)絡(luò)編程實現(xiàn)簡單聊天室功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-07-07

最新評論

鄱阳县| 石楼县| 铁岭市| 海南省| 巫溪县| 玛纳斯县| 襄城县| 宿迁市| 元氏县| 嘉义市| 册亨县| 石首市| 阿勒泰市| 修文县| 定兴县| 肥西县| 岑巩县| 明光市| 从江县| 丰宁| 大荔县| 南漳县| 东光县| 庆阳市| 邵武市| 灵武市| 宣城市| 沙雅县| 汉寿县| 庐江县| 吴忠市| 青神县| 新乡县| 岳阳县| 武冈市| 福鼎市| 江山市| 景德镇市| 沁源县| 乌拉特前旗| 新和县|