当前位置:   article > 正文

高校教室管理系统

现阶段的大学有没有合理的分配空闲教室的系统

               设计目的在于,利用学习的数据结构和c语言知识,研究大学空闲教室管理系统的开发途径和应用方法。与其他学习阶段相比,大学课程相对较少,合理利用空闲教室显得尤为重要。为了让广大在校师生,在空闲时间有个教室去自习,去做自己想做的事情,因此开发一套空闲教室管理系统是势在必行的。通过高校教室管理系统,广大师生可以随时随地查看空闲教室,作为老师可以添加后台数据即默认空教室。同时,高校空闲教室管理系统设计是具有具体化,合理化性,也是为了提高空闲教室的可利用性。

               创建教室结构体,包括教室编号、教室位置、教室容量,再通过创建单链表向链表中添加教室信息。通过单链表的删除操作实现删除某一教室信息,通过输入某一教室编号实现对某一教室信息的修改,通过输入教室位置、容量、时间段,可以分别找到满足用户需求的空闲教室。

  1. #include<stdio.h> //输入输出
  2. #include<string.h> //字符串处理
  3. #include<stdlib.h> // 程序工具
  4. #include<iostream> //输入输出流
  5. typedef struct Node { //定义表结点
  6. char classRoomNum[10]; //教室编号
  7. char freeTime1[10]; //空闲时间段 1
  8. char freeTime2[10]; //空闲时间段 2
  9. char freeTime3[10]; //空闲时间段 3
  10. char freeTime4[10]; //空闲时间段 4 把一天分为四个时间段
  11. char set[10]; //教室地点
  12. int volume; //容量
  13. struct Node *next;
  14. } SLNode;
  15. typedef struct { //定义教室信息
  16. char classRoomNum[10]; //教室编号
  17. char freeTime1[10]; //空闲时间段 1
  18. char freeTime2[10]; //空闲时间段 2
  19. char freeTime3[10]; //空闲时间段 3
  20. char freeTime4[10]; //空闲时间段 4
  21. char set[10]; //教室地点
  22. int volume; //容量
  23. SLNode *head;
  24. } classRoom;
  25. void ListInitiate(SLNode **head) { //链表初始化
  26. if ((*head = (SLNode *)malloc(sizeof(SLNode))) == NULL)
  27. exit(1); //初始化失败,则返回错误信息
  28. (*head)->next = NULL; //初始化成功则构造一个空表,头节点指针域置空
  29. }
  30. void allQuery(SLNode *head); //函数声明
  31. void linkView(SLNode *head);
  32. void Exit();
  33. void classRoomInfor();
  34. void mainMenu();
  35. void classRoomAdd(SLNode *head, classRoom x);
  36. void classRoomQuery(SLNode *head);
  37. SLNode *classRoomInsert(SLNode *head, classRoom x);
  38. void printclassRoom(SLNode *p);
  39. void queryMenu();
  40. void classRoomQuery(SLNode *head);
  41. void timeSlotQuery(SLNode *head);
  42. void siteQuery(SLNode *head);
  43. void volumeQuery(SLNode *head);
  44. void classRoomRevise(SLNode *head);
  45. void classRoomDel(SLNode *head);
  46. int main() { //**主函数 **
  47. int i;
  48. int flog = 0;//等于一退出系统
  49. classRoom x = { 0 };
  50. SLNode *head; //头节点
  51. ListInitiate(&head);//链表初始化
  52. while (1) {
  53. system("color f0");//背景色
  54. printf( "\n\t\t 当前日期: ");
  55. (100);
  56. system("DATE [/T]");
  57. (100);
  58. printf( "\n\t\t 当前时间: ");
  59. (100);
  60. system("TIME [/T]");
  61. printf ("\n\n\n\t\t\t 欢 ");
  62. printf("迎 ");
  63. printf("进 ");
  64. printf("入 \n\n\n\t\t\t");
  65. system("pause");//暂停,等待用户信号
  66. system("cls"); //清除屏幕
  67. while(1) {
  68. mainMenu();
  69. printf("\n请输入0-5选择子菜单:");
  70. scanf("%d", &i);
  71. switch (i) {
  72. case 0:
  73. Exit();
  74. printf("\n您已退出系统,谢谢使用!\n");
  75. flog = 1;
  76. break;
  77. case 1:
  78. classRoomAdd(head,x);//添加教室信息
  79. break;
  80. case 2:
  81. allQuery(head);//遍历输出
  82. break;
  83. case 3:classRoomRevise(head);//修改教室信息
  84. break;
  85. case 4:
  86. classRoomDel(head);//删除教室信息
  87. break;
  88. case 5:
  89. classRoomQuery(head);//教室查找,,分三种方式
  90. break;
  91. default:
  92. printf("\n您的输入有误,请输入0-5之间的数字!\n");
  93. break;
  94. }
  95. if (flog == 1)
  96. break; //退出系统
  97. }
  98. return 0;
  99. }
  100. system("pause");
  101. system("cls"); //清除屏幕
  102. }
  103. void mainMenu() {
  104. printf("\n--------------------------------------------------------------------------------");
  105. printf("\n");
  106. printf("\n\t\t\t 空闲教室管理系统\n");
  107. printf("\n\t\t\t\t主菜单\n");
  108. printf("\n\t\t1.录入教室信息\t\t2.显示全部教室信息\n");
  109. printf("\n\t\t3.修改教室信息\t\t4.删除教室信息\n");
  110. printf("\n\t\t5.查找空闲教室\n");
  111. printf("\n\t\t0.退出系统\n");
  112. printf("\n\n--------------------------------------------------------------------------------");
  113. }
  114. SLNode *classroomInsert(SLNode *head, classRoom x) {//按教室号升序录入教室信息函数
  115. SLNode *p, *q, *s;
  116. p = head->next;//
  117. q = (SLNode *)malloc(sizeof(SLNode));//分配空间
  118. if (q == NULL) exit(1); //存储空间分配失败
  119. q->volume = x.volume;
  120. strcpy(q->classRoomNum, x.classRoomNum);//字符串复制
  121. strcpy(q->freeTime1, x.freeTime1);
  122. strcpy(q->freeTime2, x.freeTime2);
  123. strcpy(q->freeTime3, x.freeTime3);
  124. strcpy(q->freeTime4, x.freeTime4);
  125. strcpy(q->set, x.set);
  126. if (head->next == NULL) {//为空
  127. head->next = q;
  128. head->next->next = NULL;
  129. } else { //非空
  130. for (; p; p->next) {//p指针从第一个数据往后移动,直到p为空
  131. if (p->next != NULL) { //录入的教室编号在已录入的两个工号之间
  132. if (strlen(p->classRoomNum) < strlen(x.classRoomNum) && strlen(p->next->classRoomNum) >strlen(x.classRoomNum)) {
  133. s = p->next;
  134. p->next = q;
  135. q->next = s;
  136. break;
  137. } else if (strcmp(p->classRoomNum ,x.classRoomNum)==0) {
  138. printf("教室号为%s的教室已存在!\n", p->classRoomNum);
  139. break;
  140. }
  141. } else if (strlen(p->classRoomNum) <strlen(x.classRoomNum) && p->next == NULL) {//如果在排序中为最后一个
  142. p->next = q;
  143. q->next = NULL; //尾插法
  144. break;
  145. }
  146. if (strlen(p->classRoomNum) >= strlen(x.classRoomNum)) { //头插法
  147. s = head->next;
  148. head->next = q;
  149. q->next = s;
  150. break;
  151. }
  152. }
  153. }
  154. printf("该录入完毕!");
  155. return head;
  156. }
  157. void classRoomInfor() { //教室包含的 属性
  158. printf("\n教室编号\t\t\t空闲时间段\t\t\t教室地点\t\t\t教室容量\n");
  159. }
  160. void classRoomRevise(SLNode *head) { //修改操作
  161. classRoom x;
  162. char n[10];
  163. SLNode *p;
  164. p = head->next;
  165. system("cls");
  166. printf("\n请输入要修改信息的教室号:");
  167. scanf("%s", &n);
  168. for (; p; p = p->next) {
  169. if (strcmp(p->classRoomNum, n)==0) {
  170. printf("\n请输入该教室的新信息!");
  171. printf("请输入教是号:");
  172. scanf("%s", x.classRoomNum);
  173. printf("请输入空闲时间段:");
  174. scanf("%s", x.freeTime1);
  175. printf("请输入空闲时间段:");
  176. scanf("%s", x.freeTime2);
  177. printf("请输入空闲时间段:");
  178. scanf("%s", x.freeTime3);
  179. printf("请输入空闲时间段:");
  180. scanf("%s", x.freeTime4);
  181. printf("请输入教室地点:");
  182. scanf("%s", x.set);
  183. printf("请输入教室容量:");
  184. scanf("%d", &x.volume);
  185. p->volume = x.volume;
  186. strcpy(p->classRoomNum, x.classRoomNum);
  187. strcpy(p->freeTime1, x.freeTime1);
  188. strcpy(p->freeTime2, x.freeTime2);
  189. strcpy(p->freeTime3, x.freeTime3);
  190. strcpy(p->freeTime4, x.freeTime4);
  191. strcpy(p->set, x.set);
  192. printf("\n教室信息修改成功!");
  193. break;
  194. }
  195. }
  196. if (p == NULL)
  197. printf("\n该教室不存在!\n");
  198. }
  199. void classRoomDel(SLNode *head) { //删除操作
  200. SLNode *p, *s;
  201. char x[10];
  202. s = head;//初始化s
  203. p = head->next;
  204. if (head->next == NULL) {
  205. printf("\n系统中无教室信息!\n");
  206. } else {
  207. system("cls");
  208. printf("\n请输入要删除的教室的编号:");
  209. scanf("%s", &x);
  210. for (; p; p = p->next) {
  211. if (strcmp(p->classRoomNum, x)==0) {
  212. s->next = p->next;
  213. free(p);
  214. printf("\n删除成功!请继续!\n");
  215. break;
  216. }
  217. s = p;
  218. }
  219. if (p == NULL)
  220. printf("\n系统中无此教室信息!\n");
  221. }
  222. }
  223. void classRoomAdd(SLNode *head, classRoom x) { //录入操作
  224. int nu;
  225. system("cls");
  226. printf("\n请输入您要录入的教室数:");
  227. scanf("%d", &nu);
  228. for (int n = 0; n < nu; n++) {
  229. printf("\n\n");
  230. printf("请输入教室编号:");
  231. scanf("%s", x.classRoomNum );
  232. printf("请输入教室地点:");
  233. scanf("%s", x.set);
  234. printf("请输入教室容量:");
  235. scanf("%d", &x.volume);
  236. printf("请输入空闲时间段一:");
  237. scanf("%s", x.freeTime1);
  238. printf("请输入空闲时间段二:");
  239. scanf("%s", x.freeTime2);
  240. printf("请输入空闲时间段三:");
  241. scanf("%s", x.freeTime3);
  242. printf("请输入空闲时间段四:");
  243. scanf("%s", x.freeTime4);
  244. head = classroomInsert(head, x);
  245. }
  246. printf("\n录入完毕!\n");
  247. }
  248. void allQuery(SLNode *head) { //查询所有教室信息
  249. linkView(head);
  250. }
  251. void printclassRoom(SLNode *p) {
  252. printf("****************************\n");
  253. printf("教 室 编 号 :%s\t\n", p->classRoomNum);
  254. printf("教 室 地 点 :%s\t\n", p->set);
  255. printf("教 室 容 量 :%d\t\n", p->volume);
  256. printf("空闲时间段一:%s\t\n", p->freeTime1);
  257. printf("空闲时间段二:%s\t\n", p->freeTime2);
  258. printf("空闲时间段三:%s\t\n", p->freeTime3);
  259. printf("空闲时间段四:%s\t\n", p->freeTime4);
  260. }
  261. void linkView(SLNode *head) { //显示所有教室信息
  262. SLNode *p = head;
  263. while (p->next) {
  264. p = p->next;
  265. printclassRoom(p);
  266. }
  267. }
  268. void Exit() { //退出程序
  269. int k;
  270. char s = 'Y';
  271. if (k) { //判断数据是否修改,如已经修改按指定路径保存至txt文档(D盘)
  272. printf("\n确定退出?(y/n):\n");
  273. scanf("%d",&s);
  274. if (s == 'y' || s == 'Y') {
  275. printf("\n已安全退出!\n");
  276. }
  277. exit(0);
  278. }
  279. }
  280. void queryMenu() {//查询教室菜单
  281. printf("\n\n--------------------------------------------------------------------------------");
  282. printf("\n\n\n");
  283. printf("\n\t\t\t\t查询菜单\n");
  284. printf("\n\t\t1.以指定时间查询\t\t2.以指定地点查询\n");
  285. printf("\n\t\t3.以指定教室容量查询\t\t\n");
  286. printf("\n\t\t0.回到主菜单");
  287. printf("\n\n--------------------------------------------------------------------------------");
  288. }
  289. void classRoomQuery(SLNode *head) { //定义教室查询函数,三种查询方式
  290. system("cls");
  291. if (head->next == NULL)//如果链表为空
  292. printf("\n系统中无教室信息!\n");
  293. else {
  294. int j;
  295. while (1) {
  296. int flog = 0;
  297. queryMenu();
  298. printf("\n请输入0-3选择查询方式:");
  299. scanf("%d", &j);
  300. switch (j) {
  301. case 0:
  302. printf("\n您已退出查询菜单!\n");
  303. flog = 1;
  304. break;
  305. case 1:
  306. timeSlotQuery(head);//时间段
  307. break;
  308. case 2:
  309. siteQuery(head);//地点
  310. break;
  311. case 3:
  312. volumeQuery(head);//容量
  313. break;
  314. default:
  315. printf("\n您的输入有误,请输入1-3之间的数字!\n");
  316. break;
  317. }
  318. if (flog)
  319. break;
  320. }
  321. }
  322. }
  323. void timeSlotQuery(SLNode *head) {
  324. FILE *fp; //按时间段查询
  325. fp = fopen("D:\\timeData.txt", "w");
  326. SLNode *p;
  327. char x[30];
  328. int m = 0;
  329. p = head->next;
  330. system("cls");
  331. printf("\n请输入要查询的时间段:");
  332. scanf("%s", x);
  333. for (; p; p = p->next) {
  334. if ((strcmp(p->freeTime1, x)==0)||//strcmp函数,相等返回0 ,只要有一个时间段满足则查询成功
  335. (strcmp(p->freeTime2, x)==0)||
  336. (strcmp(p->freeTime3, x)==0)||
  337. (strcmp(p->freeTime4, x)==0)) {
  338. printclassRoom(p);
  339. fprintf(fp,"%s\t%s\t%s\t%s\t%s\t%s\t%d\t\n", p->classRoomNum,p->freeTime1,p->freeTime2,p->freeTime3,p->freeTime4, p->set, p->volume);//写入文本
  340. m = 1;
  341. }
  342. }
  343. if (m == 0)
  344. printf("对不起,此时间段无空闲教室!");
  345. fclose(fp);
  346. }
  347. void siteQuery(SLNode *head) { //按地点查询
  348. SLNode *p;
  349. FILE *fp;
  350. fp = fopen("D:\\siteData.txt", "w");
  351. char x[30];
  352. int m = 0;
  353. p = head->next;
  354. system("cls");
  355. printf("\n请输入要查询的地点:");
  356. scanf("%s", x);
  357. for (; p; p = p->next) {
  358. if (strcmp(p->set, x)==0) {
  359. printclassRoom(p);
  360. fprintf(fp,"%s\t%s\t%s\t%s\t%s\t%s\t%d\t\n", p->classRoomNum,p->freeTime1,p->freeTime2,p->freeTime3,p->freeTime4, p->set, p->volume);//写入文本
  361. m = 1;
  362. }
  363. }
  364. if (m == 0)
  365. printf("对不起,此地点无空闲教室!");
  366. fclose(fp);
  367. }
  368. void volumeQuery(SLNode *head) { //按容量查询
  369. SLNode *p;
  370. FILE *fp;
  371. fp = fopen("D:\\volumeData.txt", "w");
  372. int n;
  373. int m=0;
  374. p = head->next;
  375. system("cls");
  376. printf("\n请输入要查询的空闲教室容量:\n");
  377. scanf("%d", &n );
  378. for (; p ; p= p->next) {
  379. if (p->volume == n) {
  380. printclassRoom(p);
  381. fprintf(fp,"%s\t%s\t%s\t%s\t%s\t%s\t%d\t\n", p->classRoomNum,p->freeTime1,p->freeTime2,p->freeTime3,p->freeTime4, p->set, p->volume);//写入文本
  382. m = 1;
  383. }
  384. }
  385. if (m == 0)
  386. printf("对不起,无空闲教室!", n);
  387. fclose(fp);
  388. }

  

转载于:https://www.cnblogs.com/zhai1997/p/11197327.html

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/540686
推荐阅读
相关标签
  

闽ICP备14008679号