为什么无法显示排队人数
时间: 2023-12-12 22:03:31 浏览: 20
在代码中,每当有新的客户入队时,程序会遍历整个链表并更新每个客户前面的等待人数,即将 `wait` 属性加 1。但是,在输出客户信息时,程序没有减去当前客户自身的等待人数,导致输出的等待人数比实际多了 1。因此,在输出客户信息时应该将 `wait - 1`。所以需要将这行代码:
```c
printf("IN:%d %s %s %d\n", new_node->id, new_node->card, new_node->type, new_node->wait - 1);
```
修改为:
```c
printf("IN:%d %s %s %d\n", new_node->id, new_node->card, new_node->type, new_node->wait - new_node->id);
```
这样输出的等待人数就是实际的等待人数了。
相关问题
如果你是一个程序设计师,现在老板要求你基于AT89C51单片机写一个程序,能实现排队叫号取号,且只使用一个单片机,最大取号数为20,并在lcd屏上显示当前排队人数以及取号的号码,叫号时lcd屏显示当前叫道的号数,同时蜂鸣器发声,请问你会这么写这段代码
为了实现排队叫号取号的功能,您需要使用AT89C51单片机,同时连接一个LCD屏幕和一个蜂鸣器。以下是大致的代码框架:
首先,您需要定义一些变量,如计数器和队列数组:
```
unsigned int count = 0; // 当前排队人数
unsigned int queue[20]; // 队列数组
unsigned int head = 0; // 队首
unsigned int tail = 0; // 队尾
```
接下来,您需要编写一个子程序来将数字转换为字符串,以便在LCD屏幕上显示。以下是一个示例子程序:
```
void itoa(unsigned int num, unsigned char *str) {
unsigned char i = 0;
do {
str[i++] = num % 10 + '0';
num /= 10;
} while (num > 0);
str[i] = '\0';
reverse(str);
}
```
在这个子程序中,itoa函数将传入的数字转换为字符串,然后将其存储在传入的字符数组中。
接下来,您需要编写一个子程序来更新LCD屏幕上的显示。以下是一个示例子程序:
```
void update_lcd() {
unsigned char str[4];
lcd_clear();
itoa(count, str);
lcd_puts("Current queue: ");
lcd_puts(str);
lcd_gotoxy(0, 1);
itoa(queue[head], str);
lcd_puts("Current number: ");
lcd_puts(str);
}
```
在这个子程序中,update_lcd函数将当前排队人数和队首号码显示在LCD屏幕上。
接下来,您需要编写一个主程序来处理排队和叫号的逻辑。以下是一个示例主程序:
```
void main() {
lcd_init(); // 初始化LCD屏幕
buzzer_init(); // 初始化蜂鸣器
while (1) {
if (count < 20) { // 如果队列未满,添加新的号码
queue[tail++] = count + 1;
count++;
update_lcd();
}
if (head < tail) { // 如果队列不为空,叫下一个号码
buzzer_on(); // 蜂鸣器响
delay_ms(1000); // 等待1秒钟
buzzer_off(); // 蜂鸣器停止响
head++;
count--;
update_lcd();
}
}
}
```
在这个主程序中,while循环不断地检查队列和LCD屏幕的状态。如果队列未满,则添加新的号码,然后更新LCD屏幕上的显示。如果队列不为空,则叫下一个号码,然后更新LCD屏幕上的显示和蜂鸣器的状态。
最后,您需要编写一些辅助子程序,如buzzer_init函数来初始化蜂鸣器,buzzer_on函数来启动蜂鸣器,buzzer_off函数来停止蜂鸣器,以及delay_ms函数来实现延迟功能。
请注意,这只是一个基本的代码框架,您需要根据具体的硬件和需求进行适当的修改和调整。
银行排队系统Python
银行排队系统是一种用于管理银行客户排队和叫号的系统。Python是一种流行的编程语言,可以用于开发各种类型的应用程序,包括银行排队系统。
在Python中,可以使用各种库和框架来实现银行排队系统。以下是一个简单的示例,展示了如何使用Python编写一个基本的银行排队系统:
1. 首先,你可以使用Python的内置数据结构,如列表或队列,来表示客户队列。每当有新的客户到达银行,你可以将其添加到队列中。
2. 接下来,你可以使用Python的时间模块来模拟客户等待的时间。你可以为每个客户生成一个随机的等待时间,并使用time.sleep()函数来模拟客户等待。
3. 然后,你可以使用Python的图形用户界面(GUI)库,如Tkinter或PyQt,来创建一个用户界面,显示当前叫号的客户和等待队列中的客户。
4. 当柜员完成为一个客户提供服务后,你可以从队列中移除该客户,并更新界面上的叫号信息。
5. 最后,你可以添加一些额外的功能,如计算平均等待时间、显示当前等待人数等。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)