当前位置:
文档之家› 机房机位预约模拟管理系统设计(2020年10月整理).pdf
机房机位预约模拟管理系统设计(2020年10月整理).pdf
5
#define Z 20 #define D(s) (s-8)/2 /*将输入的时间划分时间段;分别为 0,1,2,3,4,5 时间段 */ #define NULL 0 struct xinxi{ int jihao; char xuehao[20]; struct xinxi *next; }; /*结构函数包含学生信息:机位,学号,还有下名学生信息*/ struct cell{ int RS; /*RS 表示总人数*/ struct xinxi *first; /*第一个预订者记录*/ struct xinxi *middle; /*等待队列列表*/ struct xinxi *last; /*最后预订者记录*/ } DUILEI[SJD]; /*学生时间(SJD)段顺序:人数,第一名学生,排队的学生, 最后一名学生*/
预定模块
开始
输入预定时间
判 断 时 间 属 于 8~20 o'clock 与空机位
选择排队 N
输入学号预定成功,排 队成功
结束 iongyudin
/***************************预定模块******************************/ void yuding() { int n;
1
参考文献**********************************18 附录(源程序)****************************18
一.机房机位预约模拟管理系统设计
1、数据结构 顾客信息结构体:
Struct CusInfo { Char name[20];//顾客姓名
Int sex; //性别 Char tel[11]; //电话 }CInfo; 机位信息结构体: Struct
6
char m[20]; /*学号*/ struct xinxi *R; struct xinxi *p; printf("输入想要预定的时间\n"); scanf("%d",&n); if(n>=8&&n<20){ n=D(n); /*将输入的时间划分时间段*/ if(DUILEI[n].RS<Z) /*还有机位可供预订*/ { printf("请输入你的学号\n"); scanf("%s",m); if(DUILEI[n].first==NULL) /*还没有人预订*/ { R=(struct xinxi *)malloc(sizeof(struct xinxi));/*给 R 划分适当的内存*/ R->jihao=1; strcpy(R->xuehao,m); /*将输入的学号复制到 R->xuehao */ R->next=NULL; DUILEI[n].first=R; DUILEI[n].last=R; DUILEI[n].RS++; printf("成功预定\n"); } else { R=(struct xinxi *)malloc(sizeof(struct xinxi)); strcpy(R->xuehao,m); /*将输入的学号复制到 R->xuehao */ R->next=NULL; p= DUILEI[n].last; /*将最后预订记录赋值给 p*/ R->jihao= DUILEI[n].RS+1; printf("%d",R->jihao); /*表示该时间段第几位预订*/ DUILEI[n].last=R; /*将当前的记录做为最后记录以便形成链表形式指向下一 个*/ p->next=R; DUILEI[n].RS++; /*记录人数*/ printf("预定成功\n"); } } else printf("没有空余机位!\n"); } else printf("错误.请输入 8~19,再次输入.\n"); }
2
{ Int State[6]; //机位状态,每 2 个小时 为一个时间段,08:00-20:00 共 6 个时间段。 0 表示有空机位,1 表示没有空机位
CInfo waitlist[6]; //各个时间段的运行 客户
Int year; Int month; Int day; //日期
}PCInfo;
《高级语言程序设计》课程设计 说明书
设计题目:机房机位预约模拟管理系统 设计
目录
课程设计题目*******************************3 需求分析***********************************5 详细设计***********************************5 用户使用说明******************************12 测试结果**********************************13 设计小结**********************************17
PCInfo info[100]; //存放 100 天的机位信息
2、具体实现
(1)查询 输入时间,则遍历 info 数组,查看日 期(year/month/day),如果日期匹配,则把机位信 息输出。
(2)机位预订 输入日期(或时间段)查询机位信 息文件,如果日期符合,再查看状态字段,若相应字 段为 0,则预约(即把该用户信息加入写入机位 waitlist 相应时间段中) ;若相应字段为 1,则查 看本天其他时间段,寻找最近空时间段。如果用户要 求在非空时间上机,则查找 info 数组中该时间段为 空的元素,把该时间段的状态字段设为 1,把用户信 息加入机位当天 waitlist 相应时间段中。
(3)退出预订 根据预订日期和客户信息找到预订 信息,把客户信息删除,并把该时间段的状态置为 0。
(4)查询 输入日期和时间段,查看该时间段的状态
3
如为 1,则把相应时间段的运行客户信息打 印输出。 如为 0,则显示“该时间段空闲!。”
二. 需求分析
根据题目要求,程序需要四个结构体来完成,分别对 应四个功能。另外,这个程序还要根据时间更新各个 列表的信息。
机房机位预约模拟系 统
预定模块
查询模块
排队模块
查询空位模块
查询预订机模块
取消模块
4
三.详细设计
主函数比较简洁,只提供输入、功能处理和输出 部分的函数调用。开始显示一系列功Fra bibliotek选择N
输入 n,判断 m 是否是 0 到 6?
根据 n 值调用各 功能模块函数
结束
#include<stdio.h> #include<stdlib.h> #include<string.h> #define SJD 6 /*宏定义定义 SJD Z NULL D(r)*/