排队叫号系统(带源程序)

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
void QueueInitiate(LQueue * Q)
Q为结构体指针;
操作结果:使队列初始化、
int QueueNotEmpty(LQueue Q)
判断队列就是否为空;
操作结果:若队列为空,返回0;不为空,则返回1、
int QueueAppend(LQueue * Q,int x)
Q为结构体指针,x传输用户得序号;
2、叫号时,输入不同得用户名,随时进行业务处理与队列信息浏览,查瞧相应功能就是否正确。
3、本实习作业采用循序渐进得策略,首先分别写好三个相应功能得函数,然后再加入主函数中,以保证整个程序得正确性,也便于随时调整,改正各种错误。调试程序很耗时间,比较得麻烦,往往改动一个地方能影响到很多位置。
六 测试结果
(4)队列信息浏览:工作人员可随时查瞧队列中目前未处理得所有业务信息.
(5)采用模块化设计。
二、 概要设计
1、本程序包含两个模块
(1) 主函数模块:
main(){
定义及初始化;
让用户控制程序,实现排队叫号功能、

(2) 排队叫号系统单元模块:
主函数调用排队叫号系统单元模块、
2、排队叫号得抽象数据类型定义:
一、课程设计得主要内容
题目描述:利用队列模拟一个排队叫号系统。
功能要求及说明:
(1)系统采用菜单方式操作,要求实现如下功能:
(2)叫号排队:用户叫号时将该用户信息(用户名)入队,并打印用户排队序号、等待人数。
(3)业务处理:工作人员处理完前一业务后,从队列头中获取一个用户出队并呼叫该用户(终端打印输出)。
{
printf ("****************************************************\n");
printf (”****************1、排队叫号**************************\n");
printf (”****************2、业务处理**************************\n");
}
2、队列初始化函数
void QueueInitiate(LQueue * Q)/*队列初始化*/
{
Q->rear=NULL;/*尾指针为空*/
Q-〉front=NULL;/*头指针为空*/
}
3、判断队列就是否为空函数
int QueueNotEmpty(LQueue Q)/*队列不能为空*/
{
ﻩif(NULL==Q、front)/*如果头指针为空,则返回0*/
1、通过写该程序,充分理解队列及链表得操作原理,熟悉队列得操作。
2、主函数调用子函数时,涉及到参数得传递,要注意到程序里面还有局部变量与全局变量得区别,要时刻注意变量得值,循环调用就要注意到各个子函数得返回值。
3、该程序完整地实现了排队叫号系统得功能,程序简洁、明了,用户使用起来方便。百度文库
七 用户使用说明
{
return 0;
}
ﻩelse
{
return 1;

}
4、实现排队叫号函数
int QueueAppend(LQueue * Q,int x)/*元素入队*/
{
LQNode * p;/*p指针指向入队元素*/
if((p=(LQNode *)malloc(sizeof(LQNode)))==NULL)/*申请入队元素空间*/
ﻩQ-〉front=Q->front-〉next;/*头结点向后移动一个节点*/
ﻩif(Q-〉front==NULL)
ﻩ{
ﻩﻩQ->rear=NULL;
}
ﻩﻩfree(p);/*释放头结点*/
ﻩreturn 1;
ﻩ}

6、释放队列函数
void Destroy(LQueue Q)/*摧毁队列*/
{
ﻩLQNode *p,*p1;
5、做完后,退出程序。
ﻩ}
return 1;

5、实现业务处理函数
int QueueDelete(LQueue * Q,int * d)/*业务处理*/

ﻩLQNode *p;
ﻩif(Q->front==NULL)
{
ﻩreturn 0;
ﻩ}
ﻩelse
ﻩ{
ﻩ*d=Q—>front-〉data;/*读取队头元素*/
ﻩp=Q-〉front;
ﻩp=Q、front;/*p指针指向头结点*/
ﻩwhile(p!=NULL)
ﻩ{
ﻩp1=p;
ﻩﻩp=p->next;
free(p1);/*逐个释放队列得节点*/
ﻩ}
整个程序得流程图如下:
五 调试分析
1、该程序得关键就就是弄清楚队列及链表得操作方法与原理。首先保证没有句法错误,其次要保证写得函数没有错误,能正常完成要求所需得功能,然后尽量完善各功能,使用户用起来更方便。
1、本程序在VC下能正常运行。
2、程序运行后,出现主菜单,用户首先选择排队叫号功能,输入账号,回车结束,程序会显示用户得序号以及前面排队得人数;
3、叫号多次,再选择业务处理功能,程序会打印第一个用户得序号,并叫其来办理业务;
4、业务处理完后,返回主菜单,选择队列信息浏览功能,程序会打印出当前未办理业务得人数、用户队列序号与相应用户得账号;
操作结果:用户叫号时,使用户序号按顺序入队、
int QueueDelete(LQueue * Q,int * d)
*d传输队头元素;
操作结果:处理对头元素,并释放头结点、
void Destroy(LQueue Q)
操作结果:用户用完程序退出时,摧毁队列,释放内存、
四 详细设计
1、实现菜单函数
void menu()
ﻩ{
ﻩﻩreturn 0;

ﻩp—>data=x;
p—>next=NULL;
if(Q—〉rear!=NULL)/*队尾不为空则将入队元素插至队尾后*/

ﻩQ->rear-〉next=p;
ﻩ}
Q—>rear=p;/*队尾为空则队尾指向入队元素*/
ﻩif(Q—〉front==NULL)
ﻩ{
Q->front=p;/*队头指向入队元素*/
printf ("****************3、队列信息浏览**********************\n");
printf (”****************4、退出******************************\n");
printf ("****************************************************\n");
相关文档
最新文档