首页 > 代码库 > 数据结构——课程设计

数据结构——课程设计

 

技术分享 

《数据结构课程设计》

 

 

 

 

 

 

课程题目

模拟电话客服管理系统

课程编号

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=http://www.mamicode.com/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的专栏

数据结构——课程设计