排队叫号系统带源程序Word文件下载.docx

上传人:b****6 文档编号:18823361 上传时间:2023-01-01 格式:DOCX 页数:14 大小:195.38KB
下载 相关 举报
排队叫号系统带源程序Word文件下载.docx_第1页
第1页 / 共14页
排队叫号系统带源程序Word文件下载.docx_第2页
第2页 / 共14页
排队叫号系统带源程序Word文件下载.docx_第3页
第3页 / 共14页
排队叫号系统带源程序Word文件下载.docx_第4页
第4页 / 共14页
排队叫号系统带源程序Word文件下载.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

排队叫号系统带源程序Word文件下载.docx

《排队叫号系统带源程序Word文件下载.docx》由会员分享,可在线阅读,更多相关《排队叫号系统带源程序Word文件下载.docx(14页珍藏版)》请在冰豆网上搜索。

排队叫号系统带源程序Word文件下载.docx

2、排队叫号的抽象数据类型定义:

voidQueueInitiate(LQueue*Q)

Q为结构体指针;

操作结果:

使队列初始化.

intQueueNotEmpty(LQueueQ)

判断队列是否为空;

若队列为空,返回0;

不为空,则返回1.

intQueueAppend(LQueue*Q,intx)

Q为结构体指针,x传输用户的序号;

用户叫号时,使用户序号按顺序入队.

intQueueDelete(LQueue*Q,int*d)

*d传输队头元素;

处理对头元素,并释放头结点.

voidDestroy(LQueueQ)

用户用完程序退出时,摧毁队列,释放内存.

四详细设计

1、实现菜单函数

voidmenu()

{

printf("

****************************************************\n"

);

****************1.排队叫号**************************\n"

****************2.业务处理**************************\n"

****************3.队列信息浏览**********************\n"

****************4.退出******************************\n"

2、队列初始化函数

voidQueueInitiate(LQueue*Q)/*队列初始化*/

Q->

rear=NULL;

/*尾指针为空*/

front=NULL;

/*头指针为空*/

3、判断队列是否为空函数

intQueueNotEmpty(LQueueQ)/*队列不能为空*/

if(NULL==/*如果头指针为空,则返回0*/

{

return0;

}

else

{

return1;

}

4、实现排队叫号函数

intQueueAppend(LQueue*Q,intx)/*元素入队*/

LQNode*p;

/*p指针指向入队元素*/

if((p=(LQNode*)malloc(sizeof(LQNode)))==NULL)/*申请入队元素空间*/

p->

data=x;

next=NULL;

if(Q->

rear!

=NULL)/*队尾不为空则将入队元素插至队尾后*/

Q->

rear->

next=p;

rear=p;

/*队尾为空则队尾指向入队元素*/

front==NULL)

front=p;

/*队头指向入队元素*/

5、实现业务处理函数

intQueueDelete(LQueue*Q,int*d)/*业务处理*/

LQNode*p;

else

*d=Q->

front->

data;

/*读取队头元素*/

p=Q->

front;

front=Q->

next;

/*头结点向后移动一个节点*/

if(Q->

Q->

free(p);

/*释放头结点*/

return1;

6、释放队列函数

voidDestroy(LQueueQ)/*摧毁队列*/

LQNode*p,*p1;

p=;

/*p指针指向头结点*/

while(p!

=NULL)

p1=p;

p=p->

free(p1);

/*逐个释放队列的节点*/

整个程序的流程图如下:

五调试分析

1、该程序的关键就是弄清楚队列及链表的操作方法和原理。

首先保证没有句法错误,其次要保证写的函数没有错误,能正常完成要求所需的功能,然后尽量完善各功能,使用户用起来更方便。

2、叫号时,输入不同的用户名,随时进行业务处理和队列信息浏览,查看相应功能是否正确。

3、本实习作业采用循序渐进的策略,首先分别写好三个相应功能的函数,然后再加入主函数中,以保证整个程序的正确性,也便于随时调整,改正各种错误。

调试程序很耗时间,比较的麻烦,往往改动一个地方能影响到很多位置。

六测试结果

1、通过写该程序,充分理解队列及链表的操作原理,熟悉队列的操作。

2、主函数调用子函数时,涉及到参数的传递,要注意到程序里面还有局部变量与全局变量的区别,要时刻注意变量的值,循环调用就要注意到各个子函数的返回值。

3、该程序完整地实现了排队叫号系统的功能,程序简洁、明了,用户使用起来方便。

七用户使用说明

1、本程序在VC下能正常运行。

2、程序运行后,出现主菜单,用户首先选择排队叫号功能,输入账号,回车结束,程序会显示用户的序号以及前面排队的人数;

 

3、叫号多次,再选择业务处理功能,程序会打印第一个用户的序号,并叫其来办理业务;

4、业务处理完后,返回主菜单,选择队列信息浏览功能,程序会打印出当前未办理业务的人数、用户队列序号和相应用户的账号;

5、做完后,退出程序。

源程序:

#include<

>

typedefcharDataType;

#include"

"

intmain(void)

inti=0,countx=0,j=0;

inta;

charusername[20][20];

LQueuelqueue;

DataTyperturn;

QueueInitiate(&

lqueue);

QueueNotEmpty(lqueue);

while

(1)

system("

cls"

menu();

printf("

请选择相应功能:

scanf("

%d"

&

a);

fflush(stdin);

switch(a)

case1:

/*排队叫号*/

请输入您的账号:

%s"

username[i]);

i++;

countx++;

if(0==QueueAppend(&

lqueue,i))

printf("

内存不足,警告!

\n"

return;

您的序号是%03d您前面有%d个人\n"

i,countx-1);

\n操作完成,是否继续(N退出,任意键继续)\n"

%c"

rturn);

if(rturn=='

N'

return;

break;

case2:

/*业务处理*/

inttemp=0;

if(0==countx)

{

printf("

无人排队,警告!

return;

}

QueueDelete(&

lqueue,&

temp);

请%03d号用户来前台办理业务\n"

temp);

countx--;

case3:

/*队列信息浏览*/

LQNode*p;

inttemp;

还有%d个人的业务未处理:

countx);

temp=p->

%03d:

p=p->

%s\n"

username[j]);

j++;

case4:

/*退出*/

Destroy(lqueue);

default:

封装的头文件:

typedefstructqnode

{

intdata;

structqnode*next;

}LQNode;

typedefstruct

LQNode*front;

LQNode*rear;

}LQueue;

if(NULL==

if((p=(LQNode*)malloc(sizeof(LQNode)))==NULL)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1