要求的功能:

需求分析:
1.首先看图片分析一下有哪些功能,如下所示:
a.第一个功能,添加学生,输入添加人数;
b.第二个功能,安排就餐;
c.第三个功能,在指定位置之前插入新的客人;
d.第四个功能,删除指定位置的客人信息;
e.第五个功能,查找给定姓名,返回在队伍中的位置;
f.第六个功能,用学号进行排序;
g.第七个功能打印所有客户信息;
h.就是退出功能;
2.除此之外,还要再写两个功能:
i.展示开头和末尾的学生;
j.展示初始页面;
通过输入相应的序号,来达到相应的效果;
3.功能实现:
a.在已存在的线性表,输入学生的姓名和学号;每输入一个学生,长度要加一;

void ListAdd(SqList &L,int n)
{
for(int i=1;i<=n;i++)
{People Q;cout <<"请输入该学生的姓名:"<<endl;cin >>Q.sn;cout <<"请输入该学生的卡号:"<<endl;cin >>Q.si;L.stu[L.length]=Q;++L.length;
}
}

b.这个功能简单来说就是删除第一个元素,后面的元素向前移动,或者直接通过遍历覆盖第一个元素;
要注意的是长度要减一;

void ListTop(SqList &L)
{
for(int i=0;i<L.length-1;i++)
{L.stu[i]=L.stu[i+1];
}
L.length--;
}

c.这个不难,和书上的一样,要注意插入的位置范围与数组的最大长度,如果超过或者不符合范围要注意插入失败;

string ListInsert(SqList &L,int i,People e)
{
if((i<1)||(i>L.length+1)) return "插入失败!输入的范围错误!";
if(L.length==MAXSIZE)  return "插入失败!";
for(int j=L.length-1;j>=i-1;j--)
{L.stu[j+1]=L.stu[j];
}
L.stu[i-1]=e;
++L.length;
return "插入成功";
}

d.这个功能也不难实现,书上也有,同样要注意删除的位置范围;

string ListDelete(SqList &L,int i)
{
if((i<1)||(i>L.length))  return "删除失败!要删除的学生不在范围内!";
for(int j=i;j<=L.length-1;j++)
{L.stu[j-1]=L.stu[j];
}
--L.length;
return "删除成功!";
}

e.这个也不是很难,通过遍历,来查找这个学生是否在数组内;

int LocateList(SqList L,string e)
{
for(int i=0;i<L.length;i++)
{if(L.stu[i].sn==e){return i+1;}
}
return 0;
}

f.这个功能就是遍历,通过学号的大小,进行排序;

void SortList(SqList &L)
{
int i,j;
for(i=0;i<L.length;i++)
{for(j=i+1;j<L.length;j++){if(L.stu[i].si>L.stu[j].si){People temp=L.stu[i];L.stu[i]=L.stu[j];L.stu[j]=temp;}}
}
}

g.这个就很简单了,单纯的打印输出所有的客户,遍历;

int DaYinList(SqList L)
{
for(int i=0;i<L.length;i++)
{cout <<L.stu[i].sn <<L.stu[i].si <<endl;
}
}

h.这个功能不需要专门写一个函数,只要在主函数内判断一下就行了
i.这个功能就是输出第一个元素与最后一个元素;

 void KaimoList(SqList L)
{
if(L.length>0)
{cout <<L.stu[0].sn<<L.stu[0].si<<endl;cout <<L.stu[L.length-1].sn<<L.stu[L.length-1].si<<endl;
}else{cout <<"现在无人员就餐!"<<endl;
}
}

j.这个功能非常重要,但是不难写;

void ZhanshiList(SqList L)
{
cout <<"队内的人数:"<<L.length <<endl;
KaimoList(L);
cout <<"------------------------"<<endl;
cout <<"1.新增排队人员信息"      <<endl;
cout <<"2.安排客人就餐"          <<endl;
cout <<"3.指定位置插入客人"      <<endl;
cout <<"4.删除指定的位置"        <<endl;
cout <<"5.查找客人信息"          <<endl;
cout <<"6.按照卡号对信息进行排号"<<endl;
cout <<"7.打印所有信息"          <<endl;
cout <<"8.退出"                  <<endl;
cout <<"请输入您选择的功能序号:"<<"";
}

效果图:

4.逻辑实现(主函数),单个的功能写着简单,逻辑实现要好好想一下,并且自己要好好测试一下,看看有啥BUG没有,这一步非常重要;
int main(void)
{

int n;
SqList L;
InitList(L);    //初始化线性表
ZhanshiList(L); //展示初始页面
cin >>n;       //输入第一次要的功能
while(n>-1&&n<9) //判断n的范围,对应相应的功能
{if(n==1){ListAdd(L,1);}else if(n==2){ListTop(L);}else if(n==3){int i;People e; cout<<"请输入你要插的位置:"<<endl;cin >>i;cout <<"请输入该学生的姓名:"<<endl; cin >>e.sn;cout <<"请输入学生的卡号:" <<endl;cin >>e.si; cout<<ListInsert(L,i,e)<<endl;}else if(n==4){int i;cout<<"请输入你要删除的位置:"<<endl;cin >>i;cout<<ListDelete(L,i)<<endl;}else if(n==5){string e;cout <<"请输入你要查找的人:"<<endl;cin >>e;int a=LocateList(L,e);cout <<"这个人排第"<<a<<"位"<<endl;}else if(n==6){SortList(L);DaYinList(L);}else if(n==7){DaYinList(L);}else if(n==8)  //这个就是第八个功能,直接退出循环就行了,就能实现;{break;}ZhanshiList(L); //每一次都要展示初始页面;cin >>n;  //再次输入n的值;
}
return 0;

}

数据结构实现排队系统相关推荐

  1. 数据结构大作业——银行排队系统

    数据结构大作业--银行排队系统 离散事件模拟--银行业务处理 题目分析 声明部分 辅助函数 初始化窗口节点 创建顾客节点 比较四个窗口的排队人数 输出离开顾客的信息 主要函数 完整的头文件代码 离散事 ...

  2. C语言大作业 数据结构 医院候诊排队系统 代码【可运行代码+截图】

    设计内容: 设计一个医院候诊排队系统.问题描述:医院各科室的医生有限,因此病人到医院看病时必须排队候诊,而病人的病情有轻重之分,不能简单的根据先来先服务的原则进行诊断治疗,所以医院根据病人的病情规定了 ...

  3. 数据结构实验二(C语言):银行排队系统

    银行排队系统 [问题描述]假设银行只有2个窗口对外营业,顾客到银行办理业务,首先要取一个顺序号,然后排队等待叫号.被叫到号的顾客到柜台接受服务,服务完毕后离开.到了下班时间不再接收新来的顾客.顾客分为 ...

  4. Java数据结构与算法-----如何设计一个排队系统

    1.问题 设计一个排队系统,能够让每个进入队的用户都能看到自己在队列中所处的位置和变化.队列可能随时有人加入和退出,当有人退出时影响到用户的位置需要及时的反馈到用户. 2.问题分析: 不仅要实现队列常 ...

  5. 银行排队系统的设计与实现(源代码)

    (该系统在DEV编译器中不出现问题,在VC6.0中,要注意这样子设置就可以了,在"工程"->"设置"->"C/C++"-> ...

  6. QT4.7下的UI图形界面设计用例——银行排队系统

    这里写自定义目录标题 QT4.7的UI界面设计功能 效果展示 文件机制 UI功能详述 信号与槽机制(非常重要) 添加新文件 顶部菜单栏设定 菜单界面与点击下拉栏选项后界面切换 弹窗显示 主界面与弹窗界 ...

  7. 用c语言银行队列系统,C语言学习之用队列实现银行排队系统

    队列操作的接口:http://blog..net/qlx846852708/article/details/43666927 数据结构C语言实现:http://blog..net/qlx8468527 ...

  8. 计算机网络的运用在什么时候,离散时间排队系统及其在计算机网络中的应用

    摘要: 该文共分四章讨论了三个模型,着重于有相关到达的离散时间排队系统.第一章为引言,回顾了排队论的历史,阐述了计算机网路的一些基本技术及术语,分析了离散时间排队系统的特殊性.在第二章中.我们考虑一个 ...

  9. 十二张图带你了解 Redis 的数据结构和对象系统

    来自公众号:程序员历小冰 Redis是一个开源的 key-value 存储系统,它使用六种底层数据结构构建了包含字符串对象.列表对象.哈希对象.集合对象和有序集合对象的对象系统.今天我们就通过12张图 ...

  10. 十二张图详解Redis的数据结构和对象系统

    回顾:大数据平台技术栈 (ps:可点击查看),今天就来说说其中的Redis! 本文来自:张狗蛋的技术之路 Redis是一个开源的 key-value 存储系统,它使用六种底层数据结构构建了包含字符串对 ...

最新文章

  1. ELMo解读(论文 + PyTorch源码)
  2. python七段数码管设计图案-Python绘制七段数码管实例代码
  3. go waitgroup.done()异常处理_Go 异常处理
  4. 循环首次适应算法_面向6G的极化编码链路自适应技术
  5. mysql c语言教程,C语言调用mysql快速教程(精华篇).pdf
  6. Android M(6.0) 权限相关
  7. activity状态的保存和恢复
  8. 已在页面完全加载前强制排版_公众号写作排版指南v2.0(适配Dark Mode)
  9. Android学习系列(7)--App轮询服务器消息
  10. python4.2_python4.2参数传入
  11. excel 通用进销存(由excel+VBA+MSSQL制作)
  12. 编程题(买帽子求第三便宜价格)
  13. python爬虫之通用爬虫和聚焦爬虫
  14. 职工科研项目管理系统的设计与实现附代码
  15. java实现小球的碰撞
  16. 3D模型在线云转换和在线展示
  17. PHP简单的伪静态URL机制实现
  18. 斯隆奖获得者李博:从博弈论出发,和「偶像」并肩的感觉很好 | 青源专栏
  19. GIS的polygon和multipolygon
  20. 爬虫---国家食品药品监督管理总局

热门文章

  1. 现在分词和动名词的用法区别
  2. foxmail信纸设置html,教你如何设置Foxmail信纸花样?
  3. c语言other用法,other的用法总结
  4. 芯片烧录器编程AT24C02
  5. 悄咪咪后台定时截图工具
  6. 稳压二极管和雪崩二极管的工作原理及选型学习总结
  7. Linux系统Centos7安装RabbitMQ使用压缩包配置环境变量RabbitMQ 3.8.16.tar.xz Erlang 24
  8. matlab临界比例度发确定pi,PID控制器参数整定的MATLAB/Simulink仿真
  9. VMware copy之后,如何查看网卡地址 HWADDR
  10. iOS iPhone各机型尺寸及导航栏高度