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);
}

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

(0)

相关推荐

  • C++实现高校人员信息管理系统

    高校人员信息管理系统设计,供大家参考,具体内容如下 一.问题描述及功能要求 1.问题描述 某高校有四类员工:教师.实验员.行政人员,教师兼行政人员:共有的信息包括:编号.姓名.性别.年龄等.其中,教师还包含的信息有:所在系部.专业.职称:实验员还包含的信息由:所在实验室.职务:行政人员还包含的信息有:政治面貌.职称等. 2.功能要求 (1)添加功能:程序能够任意添加上述四类人员的记录,可提供选择界面供用户选择所要添加的人员类别,要求员工的编号要唯一,如果添加了重复编号的记录时,则提示数据添加重复

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

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

  • 基于Springboot实现高校社团管理系统的设计与实现

    目录 一.项目简介 二.环境介绍 三.系统展示 四.核心代码展示 一.项目简介 本项目基于Springboot+Mybatis开发实现了一个高校社团管理系统,系统包含三个角色:管理员.团长.会员.管理员主要是做一些基础数据的管理,比较用户管理,新闻管理,活动审批,社团创建审批等等,会员可以申请加入相关的社团,也可自己申请社团,管理员审批通过后成为团长,可以申请开展相关的活动.团长登陆后可以审批申请加入本社团的申请信息,并管理和查看相关的社团用户信息.各角色进入均可以查看发布的新闻信息. 二.环境

  • 兼容多浏览器的iframe自适应高度(ie8 、谷歌浏览器4.0和 firefox3.5.3)

    小项目龙里中学多媒体教室管理系统中后台管理用到了iframe.由于要动态载入内容,所以需要iframe自适应内容页的高度.用谷歌搜索到很多答案,其中成功的是这段代码 复制代码 代码如下: <script type="text/javascript"> function SetCwinHeight() { var iframeid = document.getElementById("maincontent1"); //iframe id if (docu

  • CSS+Js遮罩效果的TAB及焦点图片切换(推荐)

    Js遮罩效果的TAB及图片切换 div, ul, ol, li, dl, dt, dd { margin:0; padding:0; } .imgFlash,.tab{margin:auto} /*------焦点图片的css-------*/ .imgFlash { height:230px;width:270px; position:relative; } .imgFlash dl { height:100%; overflow:hidden; position:absolute; widt

  • Java毕业设计实战之教室预订管理系统的实现

    一.项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持). 项目技术: Spring + SpringBoot+ mybatis + Maven + Vue 等等组成,B/S模式 + Maven管理等等. 用户管理控制器: /** * 用户管理控制器 */ @RequestMapping("/user/") @Contr

  • java实现学生信息管理系统

    JAVA简单写学生信息管理系统,实现学生信息的输入.查询.修改.删除操作 package Week; import jdk.internal.util.xml.impl.Input; import java.util.HashSet; import java.util.Scanner; public class StudentMs { Scanner sc = new Scanner(System.in); public int getID() { return ID; } public Str

  • C语言学籍管理系统源代码

    C语言学籍管理系统,整理一份,供大家参考,具体内容如下 #include <stdio.h> #include <conio.h> #include <stdlib.h> #define N 100 void mycreat(); void mynewcreat(); void mydisplay(); void myretake(); void myselect(); void mynumsort(); void mysort(); void myprint1();

  • 利用Python实现学生信息管理系统的完整实例

    项目要求: 读完题目,首先我们要确定程序思路 我们要全部通过类去实现 也就是 我们要实现管理员.学生.讲师.课程.教师五个类 管理员类 class Administration(object): def __init__(self): self.data = self.__load() self.login_data = {} def __load(self) -> list: try: Adm = open('Administration.csv', 'r') readers = csv.Di

  • 基于java Springboot实现教务管理系统详解

    目录 视频演示 研究背景 我国教务现状与反思 主要技术和环境: 功能截图: 总结: 视频演示 研究背景 在当今信息社会发展中中,计算机科学的飞速发展,大多数学校开始注意办公效率的发展是很关键,对学校的管理起到举足轻重的作用.基于 Internet 网络的信息服务,快速成长为现代学校中一项不可或缺的内容措施.很多校园都已经不满意商务办公管理的缓慢成长方式.学院的需求是一个功能强大的,能提供完善管理,管理信息系统的速度.社会持续向前发展,尤其是大多地方普及计算机,计算机应用已经开始向大容量的数据存储

随机推荐