《数据结构课程设计》
课程题目 |
模拟电话客服管理系统 |
课程编号 |
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
structNode
{
DataType data;
DataType num;
DataType tel_num;
Node
};
constint m=100; //最多有100个元素
template
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
};
//CusDefine.cpp文件
#include
#include"CusHead.h" //引入类Liandui的声明
//以下是定义类Liandui的成员函数
template
Liandui
{
Node
s=new Node
s->next=NULL;
rear=s;
front=s;
}
template
Liandui
{
Node
while(front!=NULL) //当队头指针不为空时
{
p=front->next;
delete front;
front=p;
}
}
template
voidLiandui
{
Node
k=new Node
k->data=x; //申请一个数据域为x的结点s,存放信号#
k->num=d; //存放排队的序号
k->tel_num=f; //存放电话号码
k->next=NULL;
rear->next=k; rear=k; //将结点s插入到队尾
}
template
DataTypeLiandui
{
Node
m=new Node
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
DataTypeLiandui
{
if(front!=rear)
return front->next->num;
}
template
intLiandui
{
if(front==rear)
return 1;
else
return 0;
}
template
intLiandui
{
int c;
c=i*d;
return c; //计算等待时间
}
template
DataTypeLiandui
{
if(front!=rear)
return front->next->tel_num; //取电话号码
}
//CusMain.cpp文件
/***主函数***/
#include
#include
#include"CusDefine.cpp"
using namespace std;
void main()
{
int count=0,b;
char a;
long e;
Liandui
if(L.Empty())
{
cout<<"\t"< cout<<"\t★★★★★★★★★★★★★★"< cout<<"\t★欢迎致电数据结构有限公司★"< cout<<"\t★★★★★★★★★★★★★★"< cout<<"\t________________________"< cout<<"\t[上班时间为8:00-17:00]"< cout<<"\t ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄"< else cout<<"\t队伍非空"< cout<<"\t有客户来电,估计本次通话时间(分钟):"; cin>>b; cout<<"\t正在呼入的号码(#):"; while(cin>>a){ try { cin>>e; count++; L.Insert(a,count,e); //对象调用,入队 } catch(char *q) { cout< } } cout<<"\t___________________________"< cout<<"\t◆目前客服正在通话的编号为:"< cout<<"\t___________________________"< cout<<"\t正在服务的是:"< cout<<"\t___________________________"< cout<<"\tsomeone who is working:"< cout<<"\t___________________________"< if (count>5) {cout<<"抱歉,前面等待人数过多,为了您宝贵的时间,请稍后再来电"< cout<<"\t"< cout<<"\t\t\t★★★★★★★★★★★"< cout<<"\t\t\t★再次感谢您的来电哟★"< cout<<"\t\t\t★祝您生活愉快~再见★"< cout<<"\t\t\t★★★★★★★★★★★"< else { cout<<"\t你前面还有"< cout<<"\t___________________________"< cout<<"\tThere are "< cout<<"\t___________________________"< cout<<"\t请等候约"< cout<<"\t___________________________"< cout<<"\tPlease wait for about"< _sleep(5*1000); cout<<"\t___________________________"< cout<<"\t结束第"< try { L.OutLian(); } catch(char *q) { cout< } if(L.Empty()) cout<<"\t队伍为空"< else cout<<"\t___________________________"< cout<<"\t即将为第"< cout<<"\t___________________________"< cout<<"\tWe are working for the next"< cout<<"\t___________________________"< cout<<"\t此号码正在等待客服:"< cout<<"\t___________________________"< } } 七、调试结果 1、等待人数≤5
2、等待人数>5 八、收获和体会 课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,将结论用于实践,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中当然遇到了问题,可以说得是困难重重,毕竟这是不可避免的,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。当指导老师提到用动态数组和链接表来解决这一问题时,我却一头雾水,才发现自己的知识面太窄。 在过程中会出现很多的难题,会打机自己,但是坚持下去,始终相信方法总比问题多。总会想出一些方法来解决问题。既然做一件事情就要坚持下去,结果会是好的。 九、本程序小结 此程序还有好多可以完善的东西,比如在客户在等待客服的时候可以选择听歌曲等等,只是现在水平不过,没能做的那么高大上,只是完成本课程设计的题目要求。随着学习的深入可以更加完善此程序,使其更加完善。但重要的是一定要坚持不懈的学习新的知识。不断尝试新的领域。 学生CSDN博客:wjy_papapa的专栏