
正文
医院排队叫号代码java 医院排队叫号系统设计
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
java数据结构课程设计病人排队就诊问题!!!
import java.util.ArrayDeque;
import java.util.ArrayList;
import java.util.Deque;
import java.util.List;
import java.util.Stack;
public class DoctorMain implements Runnable
{
private static DequeInteger binRenDeque;
private boolean onWork = false;
private boolean isDoctor = true;
public static Integer binRenNumber = 0;
public DoctorMain()
{
System.out.println("开始上班");
binRenDeque = new ArrayDequeInteger();
}
/**
* br/
* 方法概述 br/
* 方法详细概述 br/
* 版本 br/
* 作者 *
* @param args
*/
public static void main(String[] args)
{
// TODO Auto-generated method stub
DoctorMain doctor=new DoctorMain();
doctor.setDoctor(true);
//上班医院排队叫号代码java了
doctor.setOnWork(true);
Thread th1=new Thread(doctor);
DoctorMain binRen=new DoctorMain();
binRen.setDoctor(false);
binRen.setOnWork(true);
Thread th2=new Thread(binRen);
th1.start();
th2.start();
try
{
Thread.sleep(60000);
doctor.setOnWork(false);
binRen.setOnWork(false);
}
catch (InterruptedException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public void run()
{
while (onWork)
{
try
{
//是医生还是病人
if (isDoctor)
{
// 医生给病人看病时间
Thread.sleep(2000);
if (!binRenDeque.isEmpty())
{
Integer number = binRenDeque.pollLast();
System.out.println("医生正在给" + number + "号病人看病");
}
}
else
{
//病人来医院排队叫号代码java的间隔时间
Thread.sleep((int)(Math.random()*3000));
binRenNumber++;
System.out.println("来医院排队叫号代码java了一个病人医院排队叫号代码java,号码是:"+binRenNumber);
binRenDeque.push(binRenNumber);
}
//列出所有等待医院排队叫号代码java的病人
for(Integer bn:binRenDeque)
{
System.out.println(bn+"号的病人在排队");
}
}
catch (InterruptedException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
System.out.println("医生下班了");
}
public static DequeInteger getBinRenStack()
{
return binRenDeque;
}
public static void setBinRenStack(DequeInteger binRenStack)
{
DoctorMain.binRenDeque = binRenStack;
}
public boolean isOnWork()
{
return onWork;
}
public void setOnWork(boolean onWork)
{
this.onWork = onWork;
}
public boolean isDoctor()
{
return isDoctor;
}
public void setDoctor(boolean isDoctor)
{
this.isDoctor = isDoctor;
}
public static Integer getBinRenNumber()
{
return binRenNumber;
}
public static void setBinRenNumber(Integer binRenNumber)
{
DoctorMain.binRenNumber = binRenNumber;
}
}
相关问答
Q1: 求编程题(看病要排队)的代码,必须用C语言解答,越基础越容易看懂越好,不要从别处copy来
struct BR_ //病人结构体;
{
int id; //病人ID;
int lv;//病人等级;
};
int main()
{
int n,i,j,yisheng,binglv,brnum = 0;
BR_ b2y[3][100] = { };//存放每个医生对应的病人;
int bingnum[3] = {}; //存放每个医生对应的病人个数;
char order[5];
//这里可以把所有输入的字串,存起来,再一一解决; 但是你原来的代码,是输入一个处理一个;
//所以 我也输入一个 处理一个了;
//但是题意是 : 输入完成后,再依次输出;
//所以,只能把要输出的东西,存在一个数组里面(下面的数组);等输入完成后再统一依次输出
char print_[300][8] = {}; //用来存放 最后print的字符串; 每一个out 都要处理一下;
int str_num = 0; //字符串的条数;
scanf("%d",n);
for(j = 0 ; j n;++j)
{
scanf("%s",order);
if(strcmp(order,"IN") == 0 ) //字符串比较,如果输入的IN,
{
brnum += 1;
scanf("%d",yisheng);
scanf("%d",binglv);
BR_ temp;
temp.id = brnum;
temp.lv = binglv;
b2y[ yisheng ][ bingnum[yisheng] ] = temp;
bingnum[yisheng]++;
//排序; 把等级高的 放在前面; 注意使用 稳定排序 的方式;比如下面的选择排序;
int pos = 0;
while(pos != n - 1)
{
for(i = pos + 1; i n;++i)
{
if(b2y[yisheng][pos].lv b2y[yisheng][i].lv)
{
BR_ temp1 = b2y[yisheng][pos];
b2y[yisheng][pos] = b2y[yisheng][i];
b2y[yisheng][i] = temp1;
}
}
pos++;
}
}
else if( strcmp(order,"OUT") == 0) //
{
scanf("%d",yisheng);
if(bingnum[yisheng] = 0) //如果这个医生当前病人为0 输出empty;
strcpy(print_[str_num++],"EMPTY");
else //不为0;输出排在最前面(也就是等级最高的病人);
{
char temp;
itoa(b2y[yisheng][0].id,print_[str_num++],10);
//最前面的病人 已经处理了,所以把数组后面的元素依次往前移动;
for(i = 0;i bingnum[yisheng] - 1;++i)
{
b2y[yisheng][i] = b2y[yisheng][i + 1];
}
bingnum[yisheng]--;//病人数量递减;
}
}
}
for(i = 0 ; i str_num;++i)
printf("%s\n",print_[i]);
return 0;
}
Q2: 数据结构(java编程)的看病排队候诊问题
启动两个线程,A线程-叫号线程,B线程-取号线程
建立一个队列(ArrayQueue ),用来放号
A线程叫号,就从队列拿一个号,该线程可能有多个,对应多个医生,所以叫号时要同步
B线程取号,就一个线程,对应一台取号机
医院排队叫号代码java的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于医院排队叫号系统设计、医院排队叫号代码java的信息别忘了在本站进行查找喔。







