算法训练1.0:写一个排队系统

简介: 要求的功能

要求的功能:


9d2b2889b1dfe361a8c40f4374f5c2e.png


需求分析:

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 <<"请输入您选择的功能序号:"<<"";
}

效果图:


249f59eca439286ef7ae92362ecec01.png


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;

}

目录
相关文章
|
2月前
|
机器学习/深度学习 算法 TensorFlow
动物识别系统Python+卷积神经网络算法+TensorFlow+人工智能+图像识别+计算机毕业设计项目
动物识别系统。本项目以Python作为主要编程语言,并基于TensorFlow搭建ResNet50卷积神经网络算法模型,通过收集4种常见的动物图像数据集(猫、狗、鸡、马)然后进行模型训练,得到一个识别精度较高的模型文件,然后保存为本地格式的H5格式文件。再基于Django开发Web网页端操作界面,实现用户上传一张动物图片,识别其名称。
83 1
动物识别系统Python+卷积神经网络算法+TensorFlow+人工智能+图像识别+计算机毕业设计项目
|
20天前
|
存储 机器学习/深度学习 算法
蓝桥杯练习题(三):Python组之算法训练提高综合五十题
蓝桥杯Python编程练习题的集合,涵盖了从基础到提高的多个算法题目及其解答。
36 3
蓝桥杯练习题(三):Python组之算法训练提高综合五十题
|
2月前
|
机器学习/深度学习 人工智能 算法
植物病害识别系统Python+卷积神经网络算法+图像识别+人工智能项目+深度学习项目+计算机课设项目+Django网页界面
植物病害识别系统。本系统使用Python作为主要编程语言,通过收集水稻常见的四种叶片病害图片('细菌性叶枯病', '稻瘟病', '褐斑病', '稻瘟条纹病毒病')作为后面模型训练用到的数据集。然后使用TensorFlow搭建卷积神经网络算法模型,并进行多轮迭代训练,最后得到一个识别精度较高的算法模型,然后将其保存为h5格式的本地模型文件。再使用Django搭建Web网页平台操作界面,实现用户上传一张测试图片识别其名称。
107 22
植物病害识别系统Python+卷积神经网络算法+图像识别+人工智能项目+深度学习项目+计算机课设项目+Django网页界面
|
13天前
|
监控 算法 数据安全/隐私保护
基于三帧差算法的运动目标检测系统FPGA实现,包含testbench和MATLAB辅助验证程序
本项目展示了基于FPGA与MATLAB实现的三帧差算法运动目标检测。使用Vivado 2019.2和MATLAB 2022a开发环境,通过对比连续三帧图像的像素值变化,有效识别运动区域。项目包括完整无水印的运行效果预览、详细中文注释的代码及操作步骤视频,适合学习和研究。
|
2月前
|
机器学习/深度学习 人工智能 算法
鸟类识别系统Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+ResNet50算法模型+图像识别
鸟类识别系统。本系统采用Python作为主要开发语言,通过使用加利福利亚大学开源的200种鸟类图像作为数据集。使用TensorFlow搭建ResNet50卷积神经网络算法模型,然后进行模型的迭代训练,得到一个识别精度较高的模型,然后在保存为本地的H5格式文件。在使用Django开发Web网页端操作界面,实现用户上传一张鸟类图像,识别其名称。
92 12
鸟类识别系统Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+ResNet50算法模型+图像识别
|
25天前
|
机器学习/深度学习 算法 决策智能
【机器学习】揭秘深度学习优化算法:加速训练与提升性能
【机器学习】揭秘深度学习优化算法:加速训练与提升性能
|
2月前
|
机器学习/深度学习 算法 TensorFlow
交通标志识别系统Python+卷积神经网络算法+深度学习人工智能+TensorFlow模型训练+计算机课设项目+Django网页界面
交通标志识别系统。本系统使用Python作为主要编程语言,在交通标志图像识别功能实现中,基于TensorFlow搭建卷积神经网络算法模型,通过对收集到的58种常见的交通标志图像作为数据集,进行迭代训练最后得到一个识别精度较高的模型文件,然后保存为本地的h5格式文件。再使用Django开发Web网页端操作界面,实现用户上传一张交通标志图片,识别其名称。
86 6
交通标志识别系统Python+卷积神经网络算法+深度学习人工智能+TensorFlow模型训练+计算机课设项目+Django网页界面
|
2月前
|
机器学习/深度学习 人工智能 算法
【新闻文本分类识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台
文本分类识别系统。本系统使用Python作为主要开发语言,首先收集了10种中文文本数据集("体育类", "财经类", "房产类", "家居类", "教育类", "科技类", "时尚类", "时政类", "游戏类", "娱乐类"),然后基于TensorFlow搭建CNN卷积神经网络算法模型。通过对数据集进行多轮迭代训练,最后得到一个识别精度较高的模型,并保存为本地的h5格式。然后使用Django开发Web网页端操作界面,实现用户上传一段文本识别其所属的类别。
79 1
【新闻文本分类识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台
|
25天前
|
算法
基于最小二乘递推算法的系统参数辨识matlab仿真
该程序基于最小二乘递推(RLS)算法实现系统参数辨识,对参数a1、b1、a2、b2进行估计并计算误差及收敛曲线,对比不同信噪比下的估计误差。在MATLAB 2022a环境下运行,结果显示了四组误差曲线。RLS算法适用于实时、连续数据流中的动态参数辨识,通过递推方式快速调整参数估计,保持较低计算复杂度。
|
26天前
|
机器学习/深度学习 人工智能 开发框架
【AI系统】AI 学习方法与算法现状
在人工智能的历史长河中,我们见证了从规则驱动系统到现代机器学习模型的转变。AI的学习方法基于深度神经网络,通过前向传播、反向传播和梯度更新不断优化权重,实现从训练到推理的过程。当前,AI算法如CNN、RNN、GNN和GAN等在各自领域取得突破,推动技术进步的同时也带来了更大的挑战,要求算法工程师与系统设计师紧密合作,共同拓展AI技术的边界。
61 1