数据结构课程设计 第四题

来源:互联网 发布:淘宝客申请推广理由 编辑:程序博客网 时间:2024/04/19 09:46


广东海洋大学

 

 

 

 

                                    数据结构程序设计

                                                              





                
                                                                       班级:物联1131

                                                                       学号:201311672129
   
                                                                       姓名:赵晓兰
                                                                        
                                                                       老师:易学明        









一、实验目的

     通过课程设计,学会运用数据结构知识,针对具体应用,自己设计合理数据结构,确定存储结构,并能设计具体操作算法,选择使用具体语言进行实现。掌握C++较复杂程序的组织和设计过程,调试技巧。学习解决实际问题的能力。

 



二、设计题目

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

 




三、要求

   1. 选择自己熟悉的语言,来设计一个程序

    2.写好份完整的程序,并实例测试求图

 



四、分析

1.使用方法:题目要求使用数据结构的知识来设计一个程序管理客户打进公司的电话,那么管理就应该包括客户信息的输入、查找、删除、清空输入记录等功能。而单链表可以实现上述的功能,因此可以使用从单链表中学到的知识、结合结构体与类来设计一个程序,完成对客户打进公司的电话的管理。

2.编程软件:Microsoft Visual C++ 6.0

 


五、实现代码

1.新建工程与头文件:在编程软件VC++ 6.0中新建一个空的工程,将其命名为“sjjg”,然后再在该工程里新建一个头文件“link_number.h”,该头文件包含以下代码:

 


#ifndef Number_H

#define Number_H

#include <iostream> 

#include <iomanip> 

using namespace std; 

 

template <typename T> 

struct Node 

    charname[20];

    Tdata; 

   Node<T> *next; 

}; 

 

template <typename T> 

class Number 

private: 

    intm_length; 

   Node<T> *head; 

public: 

   Number(); 

    voidm_Init();                                    //输入n个学生数据 

    voidm_Insert();                                 //在表中s的位置插入x 

    voidm_Find_Loc();                              //在表中查找序号为i的元素 

    voidm_Find_Val();                           //在表中查找值与x相等的元素 

    voidm_Del();                              //在表中删除序号为s的元素 

    voidm_Destroy();                                  //删除成绩表 

    voidm_Show();                              //把表中所有元素打印出来 

    voidChoice_menu();

  

}; 

 

#endif 

 

 

template <typename T> 

Number<T>::Number() 

    head= new Node<T>; 

   head->next = NULL; 

   m_length = 0; 

 

template <typename T> 

void Number<T>::m_Init() 

    cout<< "\n欢迎来到输入记录界面\n" << endl; 

    intn = 0; 

   Node<T> *p, *q; 

    q =head; 

    if(head->next != NULL) 

       head->next = NULL; 

    cout<< "请设置你要输入客户记录的数目:"; 

    cin>> n; 

    for(int i = 0; i < n; i++) 

   { 

       

       p = new Node<T>; 

       cout << "\n请输入第" << i + 1 << "位客户的名字和号码(用空格号隔开):"; 

       cin >> p->name>>p->data; 

       q->next = p; 

       q = p; 

       q->next = NULL; 

       m_length++; 

   } 

    cout<< "\n客户信息输入完毕." << endl; 

    cout<< "\n"; 

   this->m_Show(); 

   system("pause");                        //暂停 

   system("cls");                       //清屏 

 

template <typename T> 

void Number<T>::m_Insert() 

    cout<< "\n欢迎来到插入记录界面\n" << endl; 

   this->m_Show(); 

    ints; 

   Node<T> *p, *t; 

    p =head; 

    cout<< "请输入你想要插入客户记录的位置:"; 

    cin>>s; 

   while (s <= 0 || s > m_length + 1) 

   { 

       cout << "\n插入的位置不正确,请重新输入一个正确的位置:"; 

       cin >> s; 

   } 

    for (int i = 0; i < s - 1; i++) 

       p = p->next; 

    t =new Node<T>; 

    cout<< "\n请输入你想插入的客户名和号码(用空格号隔开):"; 

   cin>>t->name>> t->data; 

   t->next = p->next; 

   p->next = t; 

   m_length++; 

    cout<< "\n客户记录插入完毕." << endl; 

    cout << "\n"; 

   this->m_Show(); 

   system("pause"); 

   system("cls"); 

 

template <typename T> 

void Number<T>::m_Find_Loc() 

    cout<< "\n欢迎来到按系统默认编号查找界面\n" << endl; 

   this->m_Show(); 

    ints; 

   Node<T> *p; 

    p = head; 

    cout<< "请输入你想要查找的客户记录的位置:"; 

    cin>> s; 

   while (s <= 0 || s > m_length) 

   { 

       cout << "\n你输入的编号有误,请重新输入一个正确的编号:"; 

       cin >> s; 

   } 

    for(int i = 0; i < s; i++) 

       p = p->next; 

    cout<< "\n你想要查找的客户和号码为:"; 

    cout<<p->name<<setw(6)<< p->data << endl; 

    cout<< "查找完毕."<< endl; 

   system("pause"); 

   system("cls"); 

 

 

template <typename T> 

void Number<T>::m_Find_Val() 

    cout<< "\n欢迎来到按客户号码查找界面\n" << endl; 

   // this->m_Show();        //加了这句话,将在按号查找中显示出客户的名字与号码.

    boolt = false; 

    inti = 1; 

   Node<T> *p; 

    p =head->next; 

    Tx; 

    cout<< "请输入想要查找的号码:"; 

    cin>> x; 

   while (p != NULL) 

   { 

       if (x == p->data) 

       { 

           cout << "\n你查找的号码的客户名为:" << p->name << endl; 

           t = true; 

       } 

       p = p->next; 

       i++; 

   } 

    if(t == false) 

       cout << "\n没有符合条件的客户记录." << endl; 

   system("pause"); 

   system("cls"); 

  

template <typename T> 

void Number<T>::m_Del() 

    cout<< "\n欢迎来到删除记录界面\n" << endl; 

   this->m_Show(); 

    ints; 

   Node<T> *p, *q; 

    p =head; 

    cout<< "请输入你想要删除的客户的位置为:"; 

    cin>> s; 

   while (s <= 0 || s > m_length) 

   { 

       cout << "\n你输入的客户位置有误,请重新输入一个正确的客户位置:"; 

       cin >> s; 

   } 

    for(int i = 0; i < s - 1; i++) 

       p = p->next; 

    q =p->next; 

   p->next = q->next; 

    cout<< "\n你删除的客户和号码为:"; 

    cout<< q->name<<setw(6)<<q->data << endl; 

   delete q; 

   m_length--; 

    cout<< "\n删除完毕."<< endl; 

    cout<< "\n"; 

   this->m_Show(); 

   system("pause"); 

   system("cls"); 

 

template <typename T> 

void Number<T>::m_Destroy() 

   Node<T> *p, *q; 

    p = head; 

    q =p; 

    for(int i = 0; i < m_length; i++) 

   { 

       q = q->next; 

       delete p; 

       p = q; 

   } 

   m_length = 0; 

cout << "\n记录表清空完毕.\n" <<endl; 

 

 

 

template <typename T> 

void Number<T>::m_Show() 

    if(head->next == NULL) 

   { 

       cout << "\n记录表里数据为空,显示操作失败!!"; 

       return; 

   } 

     

   

    Node<T>*p;

 

    p =head->next; 

    cout<< "\n记录表中所有客户和号码为:" << endl; 

   while (p != NULL) 

   { 

        cout<<"客户姓名:"<<p->name<<setw(20)<<"客户号码:"<< p->data <<endl;

       p = p->next; 

   } 

    cout<< endl; 

    cout<< "\n\n"; 

 

 

template <typename T> 

void Number<T>::Choice_menu(){ 

    intch; 

    cout<< "┏--------------------------------------------------------------------- --------┓"; 

    cout<< "┃ ┏---------------------------客户通话管理-------------------------┓  ┃"; 

    cout<< "┃ ┃                                                                                              ┃ ┃"; 

    cout<< "┃ ┃                                                                                              ┃ ┃"; 

    cout<< "┃ ┃                         1. 输 入 记 录                                              ┃ ┃"; 

    cout<< "┃ ┃                         2. 插 入 记 录                                              ┃ ┃"; 

    cout<< "┃ ┃                         3. 按系统默认编号查找                             ┃ ┃"; 

    cout<< "┃ ┃                         4. 按客户号码查找                                     ┃ ┃"; 

    cout<< "┃ ┃                         5. 删 除 记 录                                              ┃ ┃"; 

    cout<< "┃ ┃                         6. 清 空 记 录                                              ┃ ┃";   

    cout<< "┃ ┃                         0. 退       出                                                  ┃ ┃"; 

    cout<< "┃ ┃                                                                                              ┃ ┃"; 

    cout<< "┃ ┗----------------------------------------------------------------------┛  ┃"; 

    cout<< "┗------------------------------------------------------------------------------┛"; 

    cout<< "                                                                               "; 

    cout<< "                                                                               "; 

    cout<< "请选择你要执行的选项:"; 

    cin>> ch; 

   while (ch != 1 && ch != 2 && ch != 3 && ch != 4&&ch != 5 &&ch != 6 &&ch != 0){ 

       cout << "\n没有该选项,请重新选择." << endl; 

       cout << "\n请选择你要执行的选项:"; 

       cin >> ch; 

   } 

   switch (ch){ 

    case1: 

       system("cls"); 

       this->m_Init(); 

       break; 

    case2: 

       system("cls"); 

       this->m_Insert(); 

       break; 

    case3: 

       system("cls"); 

       this->m_Find_Loc(); 

       break;

    case4: 

       system("cls"); 

       this->m_Find_Val(); 

       break; 

    case5: 

       system("cls"); 

       this->m_Del(); 

       break; 

    case6: 

       system("cls"); 

       this->m_Destroy(); 

       break; 

    case0: 

       cout << "\n 感谢您的使用!\n" << endl;

       exit(EXIT_FAILURE);                          //用于退出操作

   } 




2.创建源文件:在工程“sjjg”中新建一个源文件“link_main.cpp”,该源文件包含以下代码:

#include "link_number.h" 

#include <iostream> 

using namespace std; 

 

int main() 

  Number<int> ss;

   while(1)

       ss.Choice_menu(); 

   return 0; 

 

 

3.程序运行结果








(1)客户通话管理界面.






(2)客户记录的输入.






(3)客户记录的插入.




(4)按编号查找界面.






(5)按客户号码查找.






(6)客户记录的删除.






(7)记录表的清空.






(8)退出客户通话管理






.

六、心得

       之前忙着考试的事,静下心来的时间也只是一两天,实际上这也是别人做好的,我的感觉就是就像复制别人的一样,但是,不同的事这一次有很认真的思考

,但是还是有很多不懂,实操还好,毕竟大一学过c++,但是感觉这比c++好懂,但是一提到用c++来实现,整个人都不好咯,想到就后怕,幸好同学们的帮忙,不过还是有心无力啊,希望这次这个老师能满意。虽然都是别人的,但我也努力了,说实在的,真的不是所有学c++和数据结构的都能做出 。






0 0