求C语言/C++高手,救救我吧!!这题目好难!! 30

用C++语言解决机房机位预约模拟系统20台机器从早8点到晚8点每两个小时为一个时间段,需要实现功能:1查询:根据输入时间,输出机位信息2机位预定:根据输入的日期和时间段查... 用C++语言解决机房机位预约模拟系统
20台机器从早8点到晚8点 每两个小时为一个时间段,需要实现功能:
1 查询:
根据输入时间,输出机位信息
2 机位预定:
根据输入的日期和时间段查询是否有空机位,若有,则预约;若无,则提供最近空机时间段
另: 若用户要求在非空时间上机, 则将用户信息插入该时间段的等待列表
3 退出预定:
根据输入的时间, 撤销该时间的预订;查询是否有等待信息,若有,则按顺序显示联系方式。
展开
 我来答
该问答中所提及的号码未经验证,请注意甄别。
jhkwei
2008-07-14
知道答主
回答量:0
采纳率:0%
帮助的人:0
展开全部
//今天没有时间了,过几天吧
typedef struct computer{
info *next;
int do;//有人正在用为1,有人将要用为2,空机为0
}computer, c[20];

typedef struct info{
long date;//什么时间,格式如200807131850
int num;//几个时间段
info *next;//接一下
long tel;//电话
};

void init(computer c[],int n)
{//初始化
int i;
for(i=0;i<n;i++)c[i].next=NULL;
}
int search(long date, int num,long tel int n,computer c[])
{//看有没有空机
int i;
info *q,*qt;
for(i=0;i<n;i++)
{
if(c[i].do==0)
{q=(info*)malloc(sizeof(info));
*q.date=date;
*q.num=num;
*q.tel=tel;
q.next=c[i].next;
c[i].next=q.next;
c[i].do=2;
return i;
}
for(qt=c[i].next;*qt!=NULL;qt=qt.next)
{
if((*qt.date+(*qt.num)*2*100)<=date
&&((*qt.next.q.date+(*qt.next.qt.num)*2*100)>=(date+num*2*100))
||qt.next==NULL)
{

q=(info*)malloc(sizeof(info));
*q.date=date;
*q.num=num;
*q.tel=tel;
q.next=c[i].next;
c[i].next=q.next;
c[i].do=2;
return i;
}
return (-1);
}
}

}

int del(int i,long date, int num)
{
info *qt,*q;
for(qt=c[i].next;*qt!=NULL;qt=qt.next)
{
if(*qt.date==date&&qt.num==num)
{
qt.next=qt.next.next;
free(qt);
if(c[i].next==NULL)c[i].do=0;
return OK;
}
}
}
void currnt(computer c[])
{
for(i=0;i<n;i++)
{
long date;
info *q;
q=c[i].next;
date=date();//时间这可能想一点办法
if((q.date+q.num*2*100)<=date)
{
c[i].next=q.next;
free(q);
if(c[i].next==NULL)
c[i].do=0;
else c[i].do=2;
}
if(q.date<date&&q.date+q.num*2*100)>=date)
c[i].do=1;
}
}

void input(char inster){
info in;
if(inster=='I' || inster=='i'){
printf("输入你的要上的时间(格式如200807151630),时间段(如:2),电话如:02088888888\n");
scanf("%l%d%d".in.date,in.num,in.tel);
i=search(in.date, in.num,in.tel , n, c);
if(i<0){printf("对不起,现在没有符合你要求的机子\n");}
else printf("你的机子是%d\n",i);
}

#include <stdio.h>
#define TURE 1
#define OK 1

main()
{//还有一个什么等待的是什么,我不明白
int n;
info in;
long seelp;
seelp=0;
n=20;//20台机
init( c, n);
printf("1. 想预约吗?是(I or i);\n");
printf("2. 你想取消预约吗?是(D or d);\n");
while(TURE){

c=getchar();
switch(c){
case 'I':
case 'i':
input(c);
break;
case 'D':
case 'd':
printf("输入你的要上的时间(格式如200807151630),时间段(如:2),电话如:02088888888\n");
scanf("%l%d%d".in.date,in.num,in.tel);
del(in);
break;

}

if(seelp++==1000000000)
{//先睡睡
currnt( c);
seelp=0;
}
}
}
}
}
No3桃子同学
2008-07-13
知道答主
回答量:0
采纳率:0%
帮助的人:0
展开全部
楼主你真小气.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
素水云儿
2008-07-13
知道答主
回答量:0
采纳率:0%
帮助的人:0
展开全部
知道题目难还不给分。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友91a81d5de
2008-07-14
知道答主
回答量:0
采纳率:0%
帮助的人:0
展开全部
就只有25分了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式