标签:
《数据结构课程设计》
课程题目 |
模拟电话客服管理系统 |
课程编号 |
j1620102 |
学生姓名 |
吴佳煜 |
所在专业 |
信息管理与信息系统 |
所在班级 |
信管1133 |
任课老师 |
易学明 |
实习时间 |
二〇一四年十二月二十五日 |
设计成绩 |
|
老师评语 |
|
一、课程设计题目
赵斌是一个信管专业的学生,大学四年顺利毕业了。在毕业季,他也像其他学子一样,投身于求职大军,投出一份又一份求职简历,在苦苦地等待之后,他接到了中国移动通信公司广东分司的面试通知书,通知他于本月1号10点到公司面试。当天,晴空万里,艳阳高照,他身着西装,高兴地早早来到公司楼下等待。10点钟整,他和其他新人一起,坐到公司的面试现场。他领取的一一份程序设计题: 假如你是我公司一名客服技术人员,现请你选择自己熟悉的语言,来设计一个程序,管理客户向公司打进来的咨询电话。请事行分析析使用方法和工具,说明自己的思路方法,写一份完整的程序,并实例测试。
二、课程设计目的
通过课程设计,学会运用数据结构知识,针对具体应用,自己设计合理数据结构,确定存储结构,并能设计具体操作算法,选择使用具体语言进行实现。掌握C++较复杂程序的组织和设计过程,调试技巧。学习解决实际问题的能力。
三、课程设计要求
使用数据结构相关知识来做。语言工具不受限。
1、独立完成,设计算法并编写代码,调试通过。
2、写设计说明书。
内容:题目、功能、要求、分析、代码,收获和体会及不足等。
3、以个人独立完成。每一个选择一个题目。选题方式是:自己学号整除5所得的余数是几就做几号题。如学号为12做2号题,学号为5的做0号题。
四、需求分析
1、程序描述
在当今飞速发展的社会,谁掌握的客户越多,谁的资金就越雄厚,公司更有实力,所以,如何留住客户已成为众多公司发展的一大难题,当有客户打电话到公司咨询时,该如何妥善处理,不让客户浪费宝贵的时间,让客户咨询达到高效率。
2、功能实现
有来电时估计通话时长→显示正在呼入的电话号码→提示还有多少个等待客户→计算出大概需等候时间→结束通话→即将接通下一个咨询电话
(1)添加电话数量
(2)存储电话数量
(3)删除电话数量
(4)设定每一痛电话的通话时间
(5)根据电话数量计算出总的服务时间
(6)判断电话队伍是否为空或电话数量是否过多
五、概要设计(流程图)
六、详细设计
(详细见以下源代码)
//CusHead.h文件
template<classDataType> //定义类模版
structNode
{
DataType data;
DataType num;
DataType tel_num;
Node<DataType> *next; //定义指向下一个的DataType类型的指针
};
constint m=100; //最多有100个元素
template<classDataType> //定义模版类Liandui
classLiandui
{
public:
Liandui(); //构造函数, 初始化一个空的链队列
~Liandui(); //析构函数,释放链队列中各结点的存储空间
void Insert(DataType x,int d,long f); //将元素x入队
DataType OutLian(); //将队头元素出队
DataType GetLian(); //取链队列的队头元素
int Empty(); //判断链队列是否为空
int waiting(int i,int d);
DataType tel();
private:
Node<DataType> *front,*rear; //队头和队尾指针
};
//CusDefine.cpp文件
#include<string>
#include"CusHead.h" //引入类Liandui的声明
//以下是定义类Liandui的成员函数
template<classDataType>
Liandui<DataType>::Liandui() //类外初始化构造函数
{
Node<DataType> * s=NULL; //定义一个指针S,此指针为空
s=new Node<DataType>;
s->next=NULL;
rear=s;
front=s;
}
template<classDataType>
Liandui<DataType>::~Liandui() //类外初始化析构函数
{
Node<DataType>*p=NULL; //定义一个空指针
while(front!=NULL) //当队头指针不为空时
{
p=front->next;
delete front;
front=p;
}
}
template<classDataType>
voidLiandui<DataType>::Insert(DataType x,int d,long f)
{
Node<DataType>*k=NULL; //定义一个空指针
k=new Node<DataType>;
k->data=x; //申请一个数据域为x的结点s,存放信号#
k->num=d; //存放排队的序号
k->tel_num=f; //存放电话号码
k->next=NULL;
rear->next=k; rear=k; //将结点s插入到队尾
}
template<classDataType>
DataTypeLiandui<DataType>::OutLian()
{
Node<DataType>*m=NULL; //定义一个空指针
m=new Node<DataType>;
if(rear==front)throw"下溢";
m=front->next;
int g,h,j;
g=m->data; //暂存电话信号#
h=m->num; //暂存排队序号
j=m->tel_num; //暂存电话号
front->next=m->next; //将队头元素所在结点摘链
if(m->next==NULL)rear=front; //判断队前队列长度是否为1
delete m;
return g,h,j; //删除
}
template<classDataType>
DataTypeLiandui<DataType>::GetLian()
{
if(front!=rear)
return front->next->num;
}
template<classDataType>
intLiandui<DataType>::Empty()
{
if(front==rear)
return 1;
else
return 0;
}
template<classDataType> //定义类模版
intLiandui<DataType>::waiting(int i,int d)
{
int c;
c=i*d;
return c; //计算等待时间
}
template<classDataType>
DataTypeLiandui<DataType>::tel()
{
if(front!=rear)
return front->next->tel_num; //取电话号码
}
//CusMain.cpp文件
/***主函数***/
#include<iostream>
#include<iomanip>
#include"CusDefine.cpp"
using namespace std;
void main()
{
int count=0,b;
char a;
long e;
Liandui<int> L; //对象
if(L.Empty())
{
cout<<"\t"<<endl;
cout<<"\t★★★★★★★★★★★★★★"<<endl;
cout<<"\t★欢迎致电数据结构有限公司★"<<endl;
cout<<"\t★★★★★★★★★★★★★★"<<endl;
cout<<"\t________________________"<<endl;
cout<<"\t[上班时间为8:00-17:00]"<<endl;
cout<<"\t ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄"<<endl;}
else
cout<<"\t队伍非空"<<endl;
cout<<"\t有客户来电,估计本次通话时间(分钟):";
cin>>b;
cout<<"\t正在呼入的号码(#):";
while(cin>>a){
try
{
cin>>e;
count++;
L.Insert(a,count,e); //对象调用,入队
}
catch(char *q)
{
cout<<q<<endl;
}
}
cout<<"\t___________________________"<<endl;
cout<<"\t◆目前客服正在通话的编号为:"<<L.GetLian()<<"◆"<<endl;
cout<<"\t___________________________"<<endl;
cout<<"\t正在服务的是:"<<L.tel()<<endl;
cout<<"\t___________________________"<<endl;
cout<<"\tsomeone who is working:"<<L.tel()<<endl;
cout<<"\t___________________________"<<endl;
if (count>5)
{cout<<"抱歉,前面等待人数过多,为了您宝贵的时间,请稍后再来电"<<endl;
cout<<"\t"<<endl;
cout<<"\t\t\t★★★★★★★★★★★"<<endl;
cout<<"\t\t\t★再次感谢您的来电哟★"<<endl;
cout<<"\t\t\t★祝您生活愉快~再见★"<<endl;
cout<<"\t\t\t★★★★★★★★★★★"<<endl;}
else
{
cout<<"\t你前面还有"<<count<<"位客人^_^"<<endl;
cout<<"\t___________________________"<<endl;
cout<<"\tThere are "<<count<<"peresons above. ^_^"<<endl;
cout<<"\t___________________________"<<endl;
cout<<"\t请等候约"<<L.waiting(b,count)<<"分钟"<<",喝杯咖啡吧o(∩_∩)o "<<endl;
cout<<"\t___________________________"<<endl;
cout<<"\tPlease wait for about"<<L.waiting(b,count)<<" minutes"<<",how abouthaving a drink o(∩_∩)o"<<endl;
_sleep(5*1000);
cout<<"\t___________________________"<<endl;
cout<<"\t结束第"<<L.GetLian()<<"位客人的服务"<<endl;
try
{
L.OutLian();
}
catch(char *q)
{
cout<<q<<endl;
}
if(L.Empty())
cout<<"\t队伍为空"<<endl;
else
cout<<"\t___________________________"<<endl;
cout<<"\t即将为第"<<L.GetLian()<<"位客人服务"<<endl;
cout<<"\t___________________________"<<endl;
cout<<"\tWe are working for the next"<<endl;
cout<<"\t___________________________"<<endl;
cout<<"\t此号码正在等待客服:"<<L.tel()<<endl;
cout<<"\t___________________________"<<endl;
}
}
七、调试结果
1、等待人数≤5
2、等待人数>5
八、收获和体会
课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,将结论用于实践,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中当然遇到了问题,可以说得是困难重重,毕竟这是不可避免的,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。当指导老师提到用动态数组和链接表来解决这一问题时,我却一头雾水,才发现自己的知识面太窄。
在过程中会出现很多的难题,会打机自己,但是坚持下去,始终相信方法总比问题多。总会想出一些方法来解决问题。既然做一件事情就要坚持下去,结果会是好的。
九、本程序小结
此程序还有好多可以完善的东西,比如在客户在等待客服的时候可以选择听歌曲等等,只是现在水平不过,没能做的那么高大上,只是完成本课程设计的题目要求。随着学习的深入可以更加完善此程序,使其更加完善。但重要的是一定要坚持不懈的学习新的知识。不断尝试新的领域。
学生CSDN博客:wjy_papapa的专栏
标签:
原文地址:http://blog.csdn.net/wjy_papapa/article/details/43154951