c 语言银行排队系统,C++实现银行排队系统

#include

#include

#include

int cnt=0; //当日客流量

int sum=0; //当日客户排队总时间

typedef struct pnode{

int number;

int cometime;

int leavetime;

struct pnode *next;

}*person;

typedef struct node{

person front;

person rear;

int length;

}linkqueue;

linkqueue q[5];

int number,time;

int flag=1;

void initqueue(linkqueue &q){

q.front=q.rear=(person)malloc(sizeof(pnode));

if(!q.front||!q.rear)

exit(0);

q.front->next=NULL;

q.length=0;

}

void enterqueue(linkqueue &q,int number,int time){

person p;

p=(person)malloc(sizeof(person));

if(!p) exit(0);

q.length++;

p->number=number;

p->cometime=time;

// sum+=p->finishtime; //统计每个人的排队时长

p->next=NULL;

q.rear->next=p;

q.rear=p;

}

void popqueue(linkqueue &q){

person p;

if(q.front==q.rear){

return ;

}

p=q.front->next;

q.front->next=p->next;

q.length--;

if(q.rear==p){

q.front=q.rear;

}

}

int getmin(linkqueue q[]){

int temp=q[1].length;

int j=1;

for(int i=2;i<=4;i++){

if(q[i].length

temp=q[i].length;

j=i;

}

}

return j;

}

int getmax(linkqueue q[]){

int temp=q[1].length;

int j=1;

for(int i=2;i<=4;i++){

if(q[i].length>temp){

temp=q[i].length;

j=i;

}

}

return j;

}

void Customer_Come(){

printf("客户选队并排队\n\n");

printf("输入客户编号:");

scanf("%d",&number);

printf("输入当前时间:");

scanf("%d",&time);

printf("\n");

/*

if(one.length<=two.length&&one.length<=three.length&&one.length<=four.length){

enterqueue(one,number,time);

}

else if(two.length<=one.length&&two.length<=three.length&&two.length<=four.length){

enterqueue(two,number,time);

}

else if(three.length<=one.length&&three.length<=two.length&&three.length<=four.length){

enterqueue(three,number,time);

}

else{

enterqueue(four,number,time);

}*/

printf("%d号顾客来到%d号窗口\n",number,getmin(q));

enterqueue(q[getmin(q)],number,time);

}

void Customer_Leave(){

printf("客户离队:\n\n");

printf("输入要离队的客户编号: ");

scanf("%d",&number);

printf("输入当前时间: ");

scanf("%d",&time);

//从四个队的队首分别去找,因为离队的只能是队首。

/* if(one.front->next->number==number){

printf("%d号客户办理完成业务从1号窗口离开\n",number);

popqueue(one);

break;

}

if(two.front->next->number==number){

printf("%d号客户办理完成业务从2号窗口离开\n",number);

popqueue(two);

break;

}

if(three.front->next->number==number){

printf("%d号客户办理完成业务从3号窗口离开\n",number);

popqueue(three);

break;

}

if (four.front->next->number==number){

printf("%d号客户办理完成业务从4号窗口离开\n",number);

popqueue(four);

break;

} */

for(int i=1;i<=4;i++){

if(q[i].front->next->number==number){

sum+=time-q[i].front->next->cometime;

printf("%d号客户办理完成业务从%d号窗口离开\n",number,i);

popqueue(q[i]);

flag=0;

}

}

if(flag)

printf("编号错误请重新输入\n");

}

void Adjust_Queue(linkqueue q[]){

int m=getmin(q);

int n=getmax(q);

person x,y;

x=(person)malloc(sizeof(pnode));

y=(person)malloc(sizeof(pnode));

x=q[n].rear;

enterqueue(q[m],x->number,x->cometime);

y=q[n].front;

while(y->next!=q[n].rear)

y->next=y->next->next;

q[n].rear=y;

free(y->next);

q[n].length--;

q[m].length++;

}

void Close_Door(){

printf("下班时间到,工作结束。\n");

printf("今天共接待了%d位客户\n", cnt);

printf("每位客户平均逗留时间为%.2f\n", (float)sum/cnt);

}

void welcome(){

printf(" ************************** *************************\n");

printf(" * 模拟银行排队系统 * * 请输入号码选择功能 *\n");

printf(" ************************** *************************\n");

printf(" 当前一号队列人数:%3d \n",q[1].length);

printf(" 1 客户选队并排队 \n");

printf(" 当前二号队列人数:%3d \n",q[2].length);

printf(" 2 客户离队 \n");

printf(" 当前三号队列人数:%3d \n",q[3].length);

printf(" 3 退出系统 \n");

printf(" 当前四号队列人数:%3d \n",q[4].length);

printf(" ************************** *************************\n");

}

int main(){

//initqueue(one);

//initqueue(two);

//initqueue(three);

//initqueue(four);

for(int i=1;i<=4;i++){

initqueue(q[i]);

}

while(1){

welcome();

int x;

scanf("%d",&x);

switch(x){

case 1:

cnt++;

Customer_Come();

break;

case 2:

Customer_Leave();

while(q[getmax(q)].length-q[getmin(q)].length>=2)

Adjust_Queue(q);

break;

case 3:

Close_Door();

exit(0);

break;

}

}

return 0;

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/474478.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode 1152. 用户网站访问行为分析

文章目录1. 题目2. 解题1. 题目 为了评估某网站的用户转化率&#xff0c;我们需要对用户的访问行为进行分析&#xff0c;并建立用户行为模型。 日志文件中已经记录了用户名、访问时间 以及 页面路径。 为了方便分析&#xff0c;日志文件中的 N 条记录已经被解析成三个长度相…

python缺省参数与多个函数返回值

缺省参数 调用函数时&#xff0c;缺省参数的值如果没有传入&#xff0c;则被认为是默认值。 下例会打印默认的age&#xff0c;如果age没有被传入. def printinfo( name,age 35 ): # 打印任何传入的字符串 print "Name: ", name print "Age ", age #调…

如何用c语言制作飞机订票系统,C语言编程飞机订票系统如何设计?

题目&#xff1a;编制一个航空客运订票系统&#xff0c;实现简单的机票操作班级&#xff1a;计0702 姓名&#xff1a;学号&#xff1a; 完成日期&#xff1a;2008年12月20日一、 实验内容&#xff1a;1、问题描述&#xff1a;航空客运订票的业务包括&#xff1a;查询航班、客票…

挖掘有价值的搜索关键词

挖掘有价值的搜索关键词 在对搜索引擎流量及关键词的标记后&#xff0c;还需要从中挖掘最有价值的那部分关键词。以下是关键词挖掘思路和详细的操作方法。 图1 挖掘有价值的搜索关键词 找到一个有价值的关键词&#xff0c;再加上好的搜索排名&#xff0c;就可以给网站带来大量…

LeetCode 1197. 进击的骑士(BFS)

文章目录1. 题目2. 解题1. 题目 一个坐标可以从 -infinity 延伸到 infinity 的 无限大的 棋盘上&#xff0c;你的 骑士 驻扎在坐标为 [0, 0] 的方格里。 骑士的走法和中国象棋中的马相似&#xff0c;走 “日” 字&#xff1a;即先向左&#xff08;或右&#xff09;走 1 格&am…

android在特定时间,如何在Android Oreo的特定时间在Android上发出通知?

我正在寻找一种在“设置”中创建首选项的方法,以便在Android应用中的特定时间(由用户在设置中设置)发送通知.我看过像this这样的不同线程,但是这在Android Oreo中不起作用.有人可以帮我这个或者指点我一个教程吗&#xff1f;解决方法:在查看了不同的帖子和对AlarmManager实现的…

6、使用infowindow

ESRI公司提供的infowindow既美观用实用&#xff0c;而且可定制性强&#xff0c;是时时获取信息的好窗口&#xff0c;用好它可以使工作量大大的减少。 他的使用方法介绍如下&#xff1a; 1、 主要属性 Property Type Description anchor String Placement of the InfoWindo…

python中随机输入数字再排序

代码赏析&#xff1a; a[] while True:umber int(input("请输入您要输入的数字:"))if umber 0:breakelse:a.append(umber) a.sort() print(b)

LeetCode 1167. 连接棒材的最低费用(优先队列+贪心)

文章目录1. 题目2. 解题1. 题目 为了装修新房&#xff0c;你需要加工一些长度为正整数的棒材 sticks。 如果要将长度分别为 X 和 Y 的两根棒材连接在一起&#xff0c;你需要支付 X Y 的费用。 由于施工需要&#xff0c;你必须将所有棒材连接成一根。 返回你把所有棒材 sti…

flyme8会更新Android版本吗,魅族17系列升级Flyme 8.1操作系统:终于到Android 10

原标题&#xff1a;魅族17系列升级Flyme 8.1操作系统&#xff1a;终于到Android 10玩懂手机网资讯&#xff0c;根据魅族官方的消息&#xff0c;魅族17系列终于升级至Android 10&#xff0c;将会搭载 Flyme 8.1 操作系统&#xff0c;魅族官方发布消息表示让欢喜的&#xff0c;更…

python中常见的几种错误

python中常见的几种错误&#xff1a; 1、end前面一定加逗号 2、命令输入错误 3、冒号中英文切换 4、命令缩进错误 5、等于号要双等于&#xff0c;否则一个等于号是赋值 6、命令之间正确搭配

公开发布版的Windows Azure 基础结构服务中的 SQL Server – 文档和最佳实践(已更新),还有即将发布的博客...

一周前&#xff0c;WindowsAzure 刚刚宣布公开发布版的基础结构服务正式推出, 这标志着WindowsAzure从此开始完全支持基础结构即服务&#xff0c;SQL Server是其中的一个主要组件。 预安装的SQL Server VM 可在Windows Azure 库中找到, 按使用的小时数收费。目前&#xff0c;运…

LeetCode 1181. 前后拼接(哈希map)

文章目录1. 题目2. 解题1. 题目 给你一个「短语」列表 phrases&#xff0c;请你帮忙按规则生成拼接后的「新短语」列表。 「短语」&#xff08;phrase&#xff09;是仅由小写英文字母和空格组成的字符串。「短语」的开头和结尾都不会出现空格&#xff0c;「短语」中的空格不会…

python中字符串注意事项

字符串输入和输出userName input(请输入用户名:)print("用户名为&#xff1a;%s"%userName)password input(请输入密码:)print("密码为&#xff1a;%s"%password)1.字符串在单引号和双引号之间2.字符串无法修改3.三引号适合创建多行字符串4.字符串可以进…

Android设置text按钮,安卓基础控件使用(TextView、Button、ImageView、EditText)

一、文本控件TextView1.布局文件android:text"string/content"android:layout_width"wrap_content"android:layout_height"wrap_content"android:textColor"color/green"android:textSize"dimen/title"android:lines"1…

前端开发规范文档

Web Front-end Development Document Specification(www.weyoo.cn) 1、文件管理规范 1) 资源文件目录 背景图片目录 图标目录 图片目录 临时图片目录 样式文件目录 脚本文件目录 flash文件目录 上传文件目录 静态文件目录 images/bg images/ico images/pic images/temp style j…

LeetCode 1135. 最低成本联通所有城市(最小生成树+排序+并查集)

文章目录1. 题目2. 解题1. Kruskal2. prim1. 题目 想象一下你是个城市基建规划者&#xff0c;地图上有 N 座城市&#xff0c;它们按以 1 到 N 的次序编号。 给你一些可连接的选项 conections&#xff0c;其中每个选项 conections[i] [city1, city2, cost] 表示将城市 city1 …

python中的下标索引

所谓“下标”&#xff0c;就是编号&#xff0c;就好比超市中的存储柜的编号&#xff0c;通过这个编号就能找到相应的存储空间。字符串实际上就是字符的数组,也支持下标索引.如果有字符串:name abcdef&#xff0c;在内存中的实际存储如下:如果想取出部分字符&#xff0c;那么可…

android 视频转字节,如何将视频文件(.mp4)格式转换为android中的二进制格式?...

我想在网络服务器上传视频。我得到了我想要以二进制格式传递文件的服务&#xff0c;我该怎么做&#xff1f;如何将视频文件(.mp4)格式转换为android中的二进制格式&#xff1f;我试图通过base64将视频文件转换为二进制格式..&#xff1f;public class binaryformat extends Act…