<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
本文範例為大家分享了C++實現高校教室管理系統的具體程式碼,供大家參考,具體內容如下
設計目的在於,利用學習的資料結構和c語言知識,研究大學空閒教室管理系統的開發途徑和應用方法。與其他學習階段相比,大學課程相對較少,合理利用空閒教室顯得尤為重要。為了讓廣大在校師生,在空閒時間有個教室去自習,去做自己想做的事情,因此開發一套空閒教室管理系統是勢在必行的。通過高校教室管理系統,廣大師生可以隨時隨地檢視空閒教室,作為老師可以新增後臺資料即預設空教室。同時,高校空閒教室管理系統設計是具有具體化,合理化性,也是為了提高空閒教室的可利用性。
建立教室結構體,包括教室編號、教室位置、教室容量,再通過建立單連結串列向連結串列中新增教室資訊。通過單連結串列的刪除操作實現刪除某一教室資訊,通過輸入某一教室編號實現對某一教室資訊的修改,通過輸入教室位置、容量、時間段,可以分別找到滿足使用者需求的空閒教室。
#include<stdio.h> //輸入輸出 #include<string.h> //字串處理 #include<stdlib.h> // 程式工具 #include<iostream> //輸入輸出流 typedef struct Node { //定義表結點 char classRoomNum[10]; //教室編號 char freeTime1[10]; //空閒時間段 1 char freeTime2[10]; //空閒時間段 2 char freeTime3[10]; //空閒時間段 3 char freeTime4[10]; //空閒時間段 4 把一天分為四個時間段 char set[10]; //教室地點 int volume; //容量 struct Node *next; } SLNode; typedef struct { //定義教室資訊 char classRoomNum[10]; //教室編號 char freeTime1[10]; //空閒時間段 1 char freeTime2[10]; //空閒時間段 2 char freeTime3[10]; //空閒時間段 3 char freeTime4[10]; //空閒時間段 4 char set[10]; //教室地點 int volume; //容量 SLNode *head; } classRoom; void ListInitiate(SLNode **head) { //連結串列初始化 if ((*head = (SLNode *)malloc(sizeof(SLNode))) == NULL) exit(1); //初始化失敗,則返回錯誤資訊 (*head)->next = NULL; //初始化成功則構造一個空表,頭節點指標域置空 } void allQuery(SLNode *head); //函數宣告 void linkView(SLNode *head); void Exit(); void classRoomInfor(); void mainMenu(); void classRoomAdd(SLNode *head, classRoom x); void classRoomQuery(SLNode *head); SLNode *classRoomInsert(SLNode *head, classRoom x); void printclassRoom(SLNode *p); void queryMenu(); void classRoomQuery(SLNode *head); void timeSlotQuery(SLNode *head); void siteQuery(SLNode *head); void volumeQuery(SLNode *head); void classRoomRevise(SLNode *head); void classRoomDel(SLNode *head); int main() { //**主函數 ** int i; int flog = 0;//等於一退出系統 classRoom x = { 0 }; SLNode *head; //頭節點 ListInitiate(&head);//連結串列初始化 while (1) { system("color f0");//背景色 printf( "ntt 當前日期: "); (100); system("DATE [/T]"); (100); printf( "ntt 當前時間: "); (100); system("TIME [/T]"); printf ("nnnttt 歡 "); printf("迎 "); printf("進 "); printf("入 nnnttt"); system("pause");//暫停,等待使用者訊號 system("cls"); //清除螢幕 while(1) { mainMenu(); printf("n請輸入0-5選擇子選單:"); scanf("%d", &i); switch (i) { case 0: Exit(); printf("n您已退出系統,謝謝使用!n"); flog = 1; break; case 1: classRoomAdd(head,x);//新增教室資訊 break; case 2: allQuery(head);//遍歷輸出 break; case 3:classRoomRevise(head);//修改教室資訊 break; case 4: classRoomDel(head);//刪除教室資訊 break; case 5: classRoomQuery(head);//教室查詢,,分三種方式 break; default: printf("n您的輸入有誤,請輸入0-5之間的數位!n"); break; } if (flog == 1) break; //退出系統 } return 0; } system("pause"); system("cls"); //清除螢幕 } void mainMenu() { printf("n--------------------------------------------------------------------------------"); printf("n"); printf("nttt 空閒教室管理系統n"); printf("ntttt主選單n"); printf("ntt1.錄入教室資訊tt2.顯示全部教室資訊n"); printf("ntt3.修改教室資訊tt4.刪除教室資訊n"); printf("ntt5.查詢空閒教室n"); printf("ntt0.退出系統n"); printf("nn--------------------------------------------------------------------------------"); } SLNode *classroomInsert(SLNode *head, classRoom x) {//按教室號升序錄入教室資訊函數 SLNode *p, *q, *s; p = head->next;// q = (SLNode *)malloc(sizeof(SLNode));//分配空間 if (q == NULL) exit(1); //儲存空間分配失敗 q->volume = x.volume; strcpy(q->classRoomNum, x.classRoomNum);//字串複製 strcpy(q->freeTime1, x.freeTime1); strcpy(q->freeTime2, x.freeTime2); strcpy(q->freeTime3, x.freeTime3); strcpy(q->freeTime4, x.freeTime4); strcpy(q->set, x.set); if (head->next == NULL) {//為空 head->next = q; head->next->next = NULL; } else { //非空 for (; p; p->next) {//p指標從第一個資料往後移動,直到p為空 if (p->next != NULL) { //錄入的教室編號在已錄入的兩個工號之間 if (strlen(p->classRoomNum) < strlen(x.classRoomNum) && strlen(p->next->classRoomNum) >strlen(x.classRoomNum)) { s = p->next; p->next = q; q->next = s; break; } else if (strcmp(p->classRoomNum ,x.classRoomNum)==0) { printf("教室號為%s的教室已存在!n", p->classRoomNum); break; } } else if (strlen(p->classRoomNum) <strlen(x.classRoomNum) && p->next == NULL) {//如果在排序中為最後一個 p->next = q; q->next = NULL; //尾插法 break; } if (strlen(p->classRoomNum) >= strlen(x.classRoomNum)) { //頭插法 s = head->next; head->next = q; q->next = s; break; } } } printf("該錄入完畢!"); return head; } void classRoomInfor() { //教室包含的 屬性 printf("n教室編號ttt空閒時間段ttt教室地點ttt教室容量n"); } void classRoomRevise(SLNode *head) { //修改操作 classRoom x; char n[10]; SLNode *p; p = head->next; system("cls"); printf("n請輸入要修改資訊的教室號:"); scanf("%s", &n); for (; p; p = p->next) { if (strcmp(p->classRoomNum, n)==0) { printf("n請輸入該教室的新資訊!"); printf("請輸入教是號:"); scanf("%s", x.classRoomNum); printf("請輸入空閒時間段:"); scanf("%s", x.freeTime1); printf("請輸入空閒時間段:"); scanf("%s", x.freeTime2); printf("請輸入空閒時間段:"); scanf("%s", x.freeTime3); printf("請輸入空閒時間段:"); scanf("%s", x.freeTime4); printf("請輸入教室地點:"); scanf("%s", x.set); printf("請輸入教室容量:"); scanf("%d", &x.volume); p->volume = x.volume; strcpy(p->classRoomNum, x.classRoomNum); strcpy(p->freeTime1, x.freeTime1); strcpy(p->freeTime2, x.freeTime2); strcpy(p->freeTime3, x.freeTime3); strcpy(p->freeTime4, x.freeTime4); strcpy(p->set, x.set); printf("n教室資訊修改成功!"); break; } } if (p == NULL) printf("n該教室不存在!n"); } void classRoomDel(SLNode *head) { //刪除操作 SLNode *p, *s; char x[10]; s = head;//初始化s p = head->next; if (head->next == NULL) { printf("n系統中無教室資訊!n"); } else { system("cls"); printf("n請輸入要刪除的教室的編號:"); scanf("%s", &x); for (; p; p = p->next) { if (strcmp(p->classRoomNum, x)==0) { s->next = p->next; free(p); printf("n刪除成功!請繼續!n"); break; } s = p; } if (p == NULL) printf("n系統中無此教室資訊!n"); } } void classRoomAdd(SLNode *head, classRoom x) { //錄入操作 int nu; system("cls"); printf("n請輸入您要錄入的教室數:"); scanf("%d", &nu); for (int n = 0; n < nu; n++) { printf("nn"); printf("請輸入教室編號:"); scanf("%s", x.classRoomNum ); printf("請輸入教室地點:"); scanf("%s", x.set); printf("請輸入教室容量:"); scanf("%d", &x.volume); printf("請輸入空閒時間段一:"); scanf("%s", x.freeTime1); printf("請輸入空閒時間段二:"); scanf("%s", x.freeTime2); printf("請輸入空閒時間段三:"); scanf("%s", x.freeTime3); printf("請輸入空閒時間段四:"); scanf("%s", x.freeTime4); head = classroomInsert(head, x); } printf("n錄入完畢!n"); } void allQuery(SLNode *head) { //查詢所有教室資訊 linkView(head); } void printclassRoom(SLNode *p) { printf("****************************n"); printf("教 室 編 號 :%stn", p->classRoomNum); printf("教 室 地 點 :%stn", p->set); printf("教 室 容 量 :%dtn", p->volume); printf("空閒時間段一:%stn", p->freeTime1); printf("空閒時間段二:%stn", p->freeTime2); printf("空閒時間段三:%stn", p->freeTime3); printf("空閒時間段四:%stn", p->freeTime4); } void linkView(SLNode *head) { //顯示所有教室資訊 SLNode *p = head; while (p->next) { p = p->next; printclassRoom(p); } } void Exit() { //退出程式 int k; char s = 'Y'; if (k) { //判斷資料是否修改,如已經修改按指定路徑儲存至txt檔案(D槽) printf("n確定退出?(y/n):n"); scanf("%d",&s); if (s == 'y' || s == 'Y') { printf("n已安全退出!n"); } exit(0); } } void queryMenu() {//查詢教室選單 printf("nn--------------------------------------------------------------------------------"); printf("nnn"); printf("ntttt查詢選單n"); printf("ntt1.以指定時間查詢tt2.以指定地點查詢n"); printf("ntt3.以指定教室容量查詢ttn"); printf("ntt0.回到主選單"); printf("nn--------------------------------------------------------------------------------"); } void classRoomQuery(SLNode *head) { //定義教室查詢函數,三種查詢方式 system("cls"); if (head->next == NULL)//如果連結串列為空 printf("n系統中無教室資訊!n"); else { int j; while (1) { int flog = 0; queryMenu(); printf("n請輸入0-3選擇查詢方式:"); scanf("%d", &j); switch (j) { case 0: printf("n您已退出查詢選單!n"); flog = 1; break; case 1: timeSlotQuery(head);//時間段 break; case 2: siteQuery(head);//地點 break; case 3: volumeQuery(head);//容量 break; default: printf("n您的輸入有誤,請輸入1-3之間的數位!n"); break; } if (flog) break; } } } void timeSlotQuery(SLNode *head) { FILE *fp; //按時間段查詢 fp = fopen("D:\timeData.txt", "w"); SLNode *p; char x[30]; int m = 0; p = head->next; system("cls"); printf("n請輸入要查詢的時間段:"); scanf("%s", x); for (; p; p = p->next) { if ((strcmp(p->freeTime1, x)==0)||//strcmp函數,相等返回0 ,只要有一個時間段滿足則查詢成功 (strcmp(p->freeTime2, x)==0)|| (strcmp(p->freeTime3, x)==0)|| (strcmp(p->freeTime4, x)==0)) { printclassRoom(p); fprintf(fp,"%st%st%st%st%st%st%dtn", p->classRoomNum,p->freeTime1,p->freeTime2,p->freeTime3,p->freeTime4, p->set, p->volume);//寫入文字 m = 1; } } if (m == 0) printf("對不起,此時間段無空閒教室!"); fclose(fp); } void siteQuery(SLNode *head) { //按地點查詢 SLNode *p; FILE *fp; fp = fopen("D:\siteData.txt", "w"); char x[30]; int m = 0; p = head->next; system("cls"); printf("n請輸入要查詢的地點:"); scanf("%s", x); for (; p; p = p->next) { if (strcmp(p->set, x)==0) { printclassRoom(p); fprintf(fp,"%st%st%st%st%st%st%dtn", p->classRoomNum,p->freeTime1,p->freeTime2,p->freeTime3,p->freeTime4, p->set, p->volume);//寫入文字 m = 1; } } if (m == 0) printf("對不起,此地點無空閒教室!"); fclose(fp); } void volumeQuery(SLNode *head) { //按容量查詢 SLNode *p; FILE *fp; fp = fopen("D:\volumeData.txt", "w"); int n; int m=0; p = head->next; system("cls"); printf("n請輸入要查詢的空閒教室容量:n"); scanf("%d", &n ); for (; p ; p= p->next) { if (p->volume == n) { printclassRoom(p); fprintf(fp,"%st%st%st%st%st%st%dtn", p->classRoomNum,p->freeTime1,p->freeTime2,p->freeTime3,p->freeTime4, p->set, p->volume);//寫入文字 m = 1; } } if (m == 0) printf("對不起,無空閒教室!", n); fclose(fp); }
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援it145.com。
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45