C 语言课程设计
课 题:机房机位预约模拟
姓 名: 孙 然
学 院:工 程 学 院
班 级: 052081
学 号: 20081002457
指导老师: 曹 弘
目 录
前 言.......................................................................................3
机房机位预约模拟.........................................................................4
题目要求 ...................................................................................4
需求分析 ...................................................................................4
总体设计 ...................................................................................4
上机操作 .................................................................................11
存在的问题与不足及对策...........................................................16
操作手册.......................................................................................16
学 习 心 得.................................................................................16
致谢...............................................................................................17
参考文献.......................................................................................18
前 言
计算机科学技术的发展,不仅极大地促进了整个科学技术的发展,
而且明显地加快了经济信息化和社会信息化的进程。因此,计算机教
育在全国备受重视,计算机知识与能力已成为 21 世纪人才素质的基
本要素之一。
如今,高等教育的计算机教育发展十分迅速。十多年前,只有部
分理工科专业开设计算机课程。今天,几乎所有高校的所有专业都开
设了程度不同的计算机课程。人们已经认识到,计算机知识已成为当
代知识分子知识结构中不可缺少的重要组成部分。而除了掌握计算机
的基础知识和操作的基本能力外,掌握一门高级编程语言,并可以熟
练运用它,已成为当代大学生综合能力必要组成。
计算机技术发展如此迅猛,计算机应用如此广泛,需要学习的东
西愈来愈多,而我们的总学时是有限的。一般来说,计算机课程学习
可以分为两部分:一部分是理论课程学习,一部分是上机应用实习。
根据我们专业的性质和要求,则应侧重于上机操作运用。为此,学校
特意在大二上学期最后一星期安排了 32 个学时的上机实习。
现将一星期的实习内容及结果分析分列如下:
机房机位预约模拟
题目要求
20 台机器,从早 8 点到晚 8 点,每两个小时一个时段。
需要实现如下功能:
(1) 查询。根据输入时间输出机位信息。
(2) 机位预订。根据输入的日期和时间段查询是否有空机位,若有则预约,若无则提供
最近空机时间段。另外,若用户要求在非空时间上机,则将用户信息插入该时间段
的等待列表。
(3) 退出预订。根据输入的时间撤销该时间的预定。
(4) 查询是否有等待信息。若有则按顺序显示联系方式,若无则显示提示信息。
需求分析
根据题目要求,程序需要四个结构体来完成,分别对应四个功能。另外,这个程序还要根据
时间更新各个列表的信息。
总体设计
根据上面的需求分析,这个系统的设计需要四个结构体和四个列表
机器信息结构体:包括 机器编号,是否被占用,机器其他信息
用户信息结构体:包括 用户姓名,用户其他信息
预定信息结构体:包括 机器编号,预订人姓名,预定时间段
等待信息结构体:包括 等待者姓名,等待信息添加时间
再建立四个列表 分别以上述四个结构体为节点
对应的问题
第一个,查询机器信息列表,查看机器是否被占用,再根据预定信息列表中的内容得到机器
是否被预定
第二个,遍历机器列表,查看每一个机器在输入的时间是否有预定信息,如果没有则将预定
信息插入第二个列表
第三个,根据用户和预定时间信息删除第三个列表中的信息
第四个,将等待信息列表的内容显示
程序内容如下:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define LENGTH 6
#define MAX 20
#define S(r) (r-8)/2
#define NULL 0
struct node{
int locat;
char data[10];
struct node *next;
};
struct node *head;
struct cell{
int CNum;
struct node *first;
struct node *middle;
struct node *last;
}TimeQueue[LENGTH];
void Inquir()
{
int n;
char Infor[10];
struct node *Rem;
printf("输入查询时间(从上午八点到晚上八点)\n");
scanf("%d",&n);
if(n>=8&&n<20){
n=S(n);
printf("请输入学号\n");
scanf("%s",Infor);
Rem=TimeQueue[n].first;
for(;Rem->next!=NULL;Rem=Rem->next)
if(strcmp(Rem->data,Infor)==0)break;
if(Rem->locat!=0)
printf("空闲机位为 %d\n",Rem->locat);
else printf("对不起.你依旧在等待列表中或者没有预定");
}