我的编程空间,编程开发者的网络收藏夹
学习永远不晚

C++实现高校教室管理系统

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

C++实现高校教室管理系统

本文实例为大家分享了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( "\n\t\t 当前日期: ");
        (100);
        system("DATE    [/T]");
        (100);
        printf( "\n\t\t 当前时间: ");
        (100);
        system("TIME    [/T]");
        printf ("\n\n\n\t\t\t 欢  ");
        printf("迎   ");
        printf("进  ");
        printf("入 \n\n\n\t\t\t");
        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("\n\t\t\t   空闲教室管理系统\n");
            printf("\n\t\t\t\t主菜单\n");
            printf("\n\t\t1.录入教室信息\t\t2.显示全部教室信息\n");
            printf("\n\t\t3.修改教室信息\t\t4.删除教室信息\n");
            printf("\n\t\t5.查找空闲教室\n");
            printf("\n\t\t0.退出系统\n");
            printf("\n\n--------------------------------------------------------------------------------");
}
 
 
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教室编号\t\t\t空闲时间段\t\t\t教室地点\t\t\t教室容量\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("\n\n");
        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("教 室 编 号 :%s\t\n", p->classRoomNum);
        printf("教 室 地 点 :%s\t\n", p->set);
        printf("教 室 容 量 :%d\t\n", p->volume);
        printf("空闲时间段一:%s\t\n", p->freeTime1);
        printf("空闲时间段二:%s\t\n", p->freeTime2);
        printf("空闲时间段三:%s\t\n", p->freeTime3);
        printf("空闲时间段四:%s\t\n", 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("\n\n--------------------------------------------------------------------------------");
    printf("\n\n\n");
    printf("\n\t\t\t\t查询菜单\n");
    printf("\n\t\t1.以指定时间查询\t\t2.以指定地点查询\n");
    printf("\n\t\t3.以指定教室容量查询\t\t\n");
    printf("\n\t\t0.回到主菜单");
    printf("\n\n--------------------------------------------------------------------------------");
}
 
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,"%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);//写入文本 
            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,"%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);//写入文本 
            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,"%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);//写入文本 
        
        m = 1;
    
        }
    }
    if (m == 0)
        printf("对不起,无空闲教室!", n);
        fclose(fp);
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

C++实现高校教室管理系统

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Java怎么实现教室预订管理系统

本文小编为大家详细介绍“Java怎么实现教室预订管理系统”,内容详细,步骤清晰,细节处理妥当,希望这篇“Java怎么实现教室预订管理系统”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、项目运行环境配置:Jdk1
2023-06-29

C++怎么实现寝室卫生管理系统

这篇文章主要介绍“C++怎么实现寝室卫生管理系统”,在日常操作中,相信很多人在C++怎么实现寝室卫生管理系统问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C++怎么实现寝室卫生管理系统”的疑惑有所帮助!接下来
2023-06-29

C++如何实现教职工管理系统

这篇文章主要介绍“C++如何实现教职工管理系统”,在日常操作中,相信很多人在C++如何实现教职工管理系统问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C++如何实现教职工管理系统”的疑惑有所帮助!接下来,请跟
2023-06-29

怎么用C++代码实现学校人员管理系统

这篇文章主要介绍了怎么用C++代码实现学校人员管理系统的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么用C++代码实现学校人员管理系统文章都会有所收获,下面我们一起来看看吧。题目要求学校人员管理系统1、建立一
2023-06-29

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录