Java_bank排队系统问题描述模拟银行叫号系统:当客户到达银行时,首先取号,显示当前客户号,以及等待的客户数。当有窗口空闲时,如果有等待的客户,会提示:XXXX号客户请到窗口办理。(需求:使用顺序队列或者链式队列实现系统)接下来先看代码,再说共享代码实现importjava.util.Scanner;classLinkedQueue{privateintfront,rear;//declarequeueheadandqueueTailprivateintcount;//声明携带记录总数的变量publicstaticfinalintMAX=100;//定义最大值privateint[]sz=newint[MAX];//确定数组的最大值privateintnum;//用于携带随时变化的团队人数的数据变量publicLinkedQueue(){//定义无参构造方法front=0;后方=0;计数=0;数=0;}publicvoidgetnumber(LinkedQueuea){//用来表示数的方法rear=rear%MAX;//取数时相当于入队,移动rear指针sz[rear]=count;//将对应人数依次放入队列Sortingnumbersrear++;计数++;数++;if(a.dm()){//如果队列已满,则不会输出相关信息System.out.println("调用系统忙,请稍后重试");}else{System.out.println("你的id是"+a.getCount()+"前面还有"+(a.getNum()-1)+"人在排队");}}publicvoidcallnumber(LinkedQueuea){//用来表示调用号的方法if(isEmpty())//如果队列中没有元素,即队列为空System.out.println(“现在Nocustomersarequeuing");else{//如果队列不为空,则先让头指针向后移动,然后每次调用front++时输出头指针的内容;System.out.println("请"+a.getFront()+"客户到窗口办理业务");num--;}}//下面是各个变量的getter和setterpublicintgetFront(){returnfront;}publicvoidsetFront(intfront){this.front=front;}publicintgetRear(){returnrear;}publicvoidsetRear(intrear){this.rear=rear;}publicintgetNum(){returnnum;){this.num=num;}publicintgetCount(){returncount;}publicvoidsetCount(intcount){this.count=count;}//下面是判断方法publicbooleandm(){//用到的满判断的表示方法returnrear%MAX==front;}publicbooleanisEmpty(){//空判断的表示方法returnrear==front;}}publicclassbank{//使用的银行对于实用的exe执行类publicstaticvoidmain(String[]args){LinkedQueuequeue=newLinkedQueue();//声明一个LinkedQueue对象System.out.println("1.新用户到达,取号");//输出一个简单的UI界面System.out.println("2.有空窗,拨打电话");System.out.println("3.退出系统");Scannerscan=newScanner(System.in);//用来声明一个可以代表键盘输入法的对象while(true){ints=scan.nextInt();//从键盘输入值到sswitch(s){//检查哪个case与输入s的值对应的内容匹配case1:{//当s的值与1相同时,执行取号操作queue.getnumber(队列);休息;}case2:{//当s的值等于2时,执行call-number操作queue.callnumber(queue);休息;案例3:系统。out.println("Goodbye");//当s的值与3相同时执行退出操作scan.close();返回;}}}}设计思想将方法和执行类分离,方法中不需要写具体的入队和出队,用纸笔做图来表现取号和叫号的全过程,清楚了解整个过程,每调用一次取号操作,内部变量内容就会加一,每调用一次取号操作,内部变量内容就会减一。在执行类中,while语句包含switchcase语句来选择号码,调用或退出服务实现系统运行结果。与链式队列相比,使用顺序队列共享此实验更容易理解和实现。只需要使用顺序队列的思想,不需要写集体入队出队操作,提前写无参构造函数。对于所有变量变量赋值,在定义对象时使用无参构造函数,直到稍后执行时才进行另一次赋值操作。在实现取号方法时,记得将指针向后移动。取号和调用方法可以写在执行类中,也可以写在方法类中,执行类中写的时候记得加static,否则不判断是否入队就无法运行取号是空的,但是调用号码需要判断现在队列是否为空,否则会有负数数据的出现,当队列不为空时,才能正常进行调用操作。注意调用该方法时,要将LinkedQueue类型的对象传入该方法,否则无法实现加入队列、判断队列为空等操作。从键盘输入数据的方法对象应该写在while循环外,ints=scan.nextInt()写在while循环内。记住switchcase语句的最后一个case要写成return,而不是break在方法中引入对象参数时,不需要在类型后面加(),也就是不需要写LinkedQueue()对象名,直接写类型和对象名即可。以上就是本文的全部内容。如果对你有帮助,请给我一个赞,这对我来说真的很重要
