数据结构课程设计——模拟客服电话管理

一、题目

题目:模拟客服电话管理

题目具体内容:

赵斌是一个信管专业的学生,大学四年顺利毕业了。在毕业季,他也像其他学子一样,投身于求职大军,投出一份又一份求职简历,在苦苦地等待之后,他接到了中国移动通信公司广东分司的面试通知书,通知他于本月1号10点到公司面试。当天,晴空万里,艳阳高照,他身着西装,高兴地早早来到公司楼下等待。10点钟整,他和其他新人一起,坐到公司的面试现场。他领取的一份程序设计题: 假如你是我公司一名客服技术人员,现请你选择自己熟悉的语言,来设计一个程序,管理客户向公司打进来的咨询电话。请先分析使用方法和工具,说明自己的思路方法,写一份完整的程序,并实例测试。

二、功能

         1、添加电话数量;

      2、存储电话数量;

         3、删除电话数量;

4、设定每一通电话的通话时间

         5、根据电话数量计算出总的服务时间

6、判断电话队伍是否为空或电话数量是否过多

三、要求

         分析题目和构思算法,独立完成,设计算法并编写代码,调试通过,对设计语言和设计工具不限。

四、分析

         本题目主要意思是管理客户向公司打进来的咨询电话,通过对题目的分析,我采用了队列这一算法结构去完成这一次的实验,程序设计的功能主要是开始先输入每一次电话的咨询服务时间,然后通过产生0~9的随机数去作为电话数量,计算每一个电话的等待时间,利用for()循环语句往队列里添加电话序号和等待时间,将提取队头元素看作是为第一个电话服务,将出队操作看作是结束操作,随后提醒下一个电话序号,当服务的队伍为空的时候就退出程序。

//LinkHead.h头文件
template<class DataType>  

struct Node  
{  
    DataType data;
	DataType time;
    Node<DataType> *next;  
};  

//const int m=100;

template<class DataType>  
class LinkQueue  
{  
public:  
    LinkQueue();  
    ~LinkQueue();  
    void Insert(DataType x,DataType f);
    DataType OutLink();  
    DataType GetLink();  
    int Empty();
	int createNum();
	int waiting(int k,int o);


private:  
    Node<DataType> *front,*rear;  
	
};  

//LinkDefine.cpp源文件
#include<string>
#include <time.h>
#include <stdio.h>
#include"LinkHead.h"
template<class DataType>  
LinkQueue<DataType>::LinkQueue()  
{  
    Node<DataType> * s=NULL;  
    s=new Node<DataType>;  
    s->next=NULL;  
    rear=s;  
    front=s;  
}  
  
template<class DataType>  
LinkQueue<DataType>::~LinkQueue()  
{  
    Node<DataType>*p=NULL;  
    while(front!=NULL)  
    {  
        p=front->next;  
        delete front;  
        front=p;  
    }  
}  
  
template<class DataType>  
void LinkQueue<DataType>::Insert(DataType x,DataType f)  
{  
    Node<DataType>*k=NULL;  
    k=new Node<DataType>;  
    k->data=x;
	k->time=f;
    k->next=NULL;  
    rear->next=k;  
    rear=k;  
}  
  
template<class DataType>  
DataType LinkQueue<DataType>::OutLink()  
{  
    Node<DataType>*m=NULL;  
    m=new Node<DataType>;  
    if(rear==front)throw"下溢";  
    m=front->next;  
    int g,h;  
    g=m->data;
	h=m->time;
    front->next=m->next;  
    if(m->next==NULL)rear=front;  
    delete m;  
    return g;  
}  
  
template<class DataType>  
DataType LinkQueue<DataType>::GetLink()  
{  
    if(front!=rear)  
		return front->next->data;
}  
  
template<class DataType>  
int LinkQueue<DataType>::Empty()  
{  
    if(front==rear)  
        return 1;  
    else  
        return 0;  
}

template<class DataType>
int LinkQueue<DataType>::createNum()
{
int result=0;
srand(unsigned(time(0)));//用时间作种子,使每次随即的数字不一样
result = (rand()%10);
return result;
}


template<class DataType>
int LinkQueue<DataType>::waiting(int k,int o)
{
	int c;
	c=k*o;
	return c; //计算等待时间
}


//LinkMain.cpp源文件
/***主函数***/  
#include<iostream> 
#include<iomanip>
#include <stdio.h>
#include"LinkDefine.cpp"
using namespace std;
void main()  
{  
	
	
	cout<<"┏━━━━━━━━━━━━━━━━━━━━━━┓"<<endl;
	cout<<"┃              模拟客服电话管理              ┃"<<endl;
	cout<<"┗━━━━━━━━━━━━━━━━━━━━━━┛"<<endl;
	int a,e,b,t;
	int x=1,y=1;
    LinkQueue<int> L;
	while(x==1)
	{
	e=L.createNum();
    if(L.Empty())  
	{
        <span style="white-space:pre">	</span>cout<<"┏━━━━━━━━┓"<<endl;
		cout<<"┃  当前队伍为空!┃"<<endl;
		cout<<"┗━━━━━━━━┛"<<endl;
	}
    else
	{
        <span style="white-space:pre">	</span>cout<<"┏━━━━━━━━┓"<<endl;
		cout<<"┃  当前队伍非空!┃"<<endl;
		cout<<"┗━━━━━━━━┛"<<endl;
	}
	cout<<"输入每次通话时间(分钟):";
	cin>>b;
	cout<<"当前打进电话人数为:"<<e<<endl;
	if(e>6)
	{
		cout<<"┏━━━━━━━━━━━━━━━━━━━━━━┓"<<endl;
		cout<<"┃    业务繁忙!感谢使用请按任意键退出程序!  ┃"<<endl;
		cout<<"┗━━━━━━━━━━━━━━━━━━━━━━┛"<<endl;
		exit(0);
	}
	else
	{
	if(e==0)
	{
		cout<<"┏━━━━━━━━━━━━━━━━━━━━┓"<<endl;
		cout<<"┃   当前队伍为空!请按任意键退出程序!   ┃"<<endl;
		cout<<"┗━━━━━━━━━━━━━━━━━━━━┛"<<endl;
		exit(0);
	}
	else 
	{
		for(a=1;a<=e;a++)
		{
			try
			{	
				t=L.waiting(b,a);
				L.Insert(a,t); 
			}  
			catch(char *q)  
			{  
				cout<<q<<endl;  
			}
		}
	}
	while(y==1)
	{
	cout<<"----------------------------------------------------"<<endl;
	cout<<"当前电话编号为:"<<L.GetLink()<<endl;
	cout<<"需要等候约"<<L.waiting(b,e--)<<"分钟"<<endl;
	_sleep(2*1000);
	cout<<"结束电话编号为"<<L.GetLink()<<"的通话"<<endl; 
    try
		{  
    L.OutLink();  
		}  
    catch(char *q)  
    {  
        cout<<q<<endl;
	}  
    if(L.Empty())  
	{
		cout<<"┏━━━━━━━━┓"<<endl;
		cout<<"┃  当前队伍为空!┃"<<endl;
		cout<<"┗━━━━━━━━┛"<<endl; 
		break;
	}
    else  
	{cout<<"即将开始电话编号为"<<L.GetLink()<<"的业务"<<endl;}
	cout<<"是否继续查看(1继续,0退出):";
	cin>>y;
	}
}	
	cout<<"-----------------------------------"<<endl;
	cout<<"是否退出程序(1继续,0退出):";
	cin>>x;
	}
		cout<<"┏━━━━━━━━━━━━━━━┓"<<endl;
		cout<<"┃ 感谢使用,请按任意键退出程序 ┃"<<endl;
		cout<<"┗━━━━━━━━━━━━━━━┛"<<endl; 
		exit(0);
}

代码运行结果

数据结构课程设计——模拟客服电话管理_第1张图片数据结构课程设计——模拟客服电话管理_第2张图片数据结构课程设计——模拟客服电话管理_第3张图片数据结构课程设计——模拟客服电话管理_第4张图片数据结构课程设计——模拟客服电话管理_第5张图片

六、收获与总结

课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,将结论用于实践,从而提高自己的实际动手能力和独立思考的能力。

同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,不会将理论性的东西用完整的代码实现,学习只停留在了理论知识层次,实践不足,在以后的学习中,要更注重实践这一环节。

数据结构是一门很重要的课程,学好这一门课将会大大地提高我自身的编程水平还有解决编程过程中的问题,数据结构学起来不容易,对个别知识点的理解不够深入,这学期的数据结构课程已经结束了,但我学习数据结构的路还很长,而且这条路也很难走,对计算机对软件感兴趣是我继续学习编程,学习数据结构的最大动力,最后,衷心感谢老师这一个学期以来的指导和辛勤的教学。


你可能感兴趣的:(数据结构课程设计——模拟客服电话管理)