数据结构课程设计《电话客服管理》

来源:互联网 发布:淘宝产品信息表 编辑:程序博客网 时间:2024/04/27 17:47

广东海洋大学学生课程设计报告

一、 题目:客服电话管理

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

三、 主要内容及实现的功能

 1、本程序具体功能如下:

(1)用户登录界面设计。

(2)信息维护:包括子模块有:增加电话号码信息、删除电话号码信息、修改电话号码信息。其中电话号码信息包括姓名、电话号码。

(3)信息查询:查询时实现按姓名查询,提供电话号码信息。

2、程序设计资料调研

本课程的要求是电话号码信息管理,要求完成其基本功能。其信息经过搜索,查得电话号码表。在进行某种电话号码管理操作时,通过是先显示所有的电话号码的信息,再找到符合自己要找的电话号码的操作,本系统遵循了这一习惯。

3、关键算法

在本程序中使用了struct 数据类型,所用最多的是WHILE循环结构和IF语句,然而这也正为了它的特色。循环体的嵌套思路清晰,目的明确,格式规范,易于阅读和理解。

If语句的逐层运用,正形象化的描述了计算机工作流程,而且与人的一般习惯相吻合,简单明了,易于观察理解它的来龙去脉,思路清晰直观。该程序是在汉化系统下编写完成的,所以它支持在汉化系统下运行,还支持在普通系统下

运行,它允许完全用中文操作,包括对信息的添加浏览和查询等功能,它使用的指针是动态分配内存的,允许用户大量的信息录入,对它的长短不加限制,这样就方便了很多。而且中文环境更加方便使用,一目了然。

四、设计的思路

1.建立ifstream/ofstream/fstream、输入、输出、输入输出流对象,建立ifndef,define预编命令,STRUCT 数据。

2.建立TelephoneBook类,构建PRIVATE私有成员和PUBLIC公有成员

3.建TelephoneBook函数,建立输入输出文件,如何打开文件

4.建立AddData函数,请输入序号、名字、电话号码构建电话号码本

5.建立UpdateData函数,可以更改序号、名字、电话号码本功能项

6.建立SearchData函数,制作输入查询电话号码的序号功能项

7.建立DeleteData函数,制作输入可以删除的电话号码的序号

8.建立Pack函数,写入电话号码二进制文件,写入电话号码本

9.建立Run函数,用do. while界面制作界面

10.建立一个主函数main(),#include"telephone_book .h"

void main(void)

{

TelephoneBook obj;

obj.run();

}

五、设计要求:

该系统在磁盘上存储客户打进来咨询的电话。电话簿包含每个客户的信息如下:姓名、电话、邮箱、所属类别等。电话簿在磁盘上以文本文件形式存储,文件名为telbook.txt,初始时文件为空。

系统功能要求如下:

(1)增加某新客户的通讯信息

(2)删除某客户的通讯信息

(3)修改某客户的通讯信息

(4)输出符合某种特征的客户信息列表。

A.全体客户信息列表;

B.根据提供的客户姓名输出该客户的信息;

六、问题的解决方案

根据系统功能要求,可以将问题解决分为以下步骤:

(1)分析系统中的各个实体之间的关系及其属性和行为;

(2)根据问题描述,设计系统的类层次;

(3)完成类层次中各个类的描述(包括属性和方法);

(4)完成类中各个成员函数的定义;

(5)完成系统的模块组装、调试;


七、主要源代码如下:

#include<iostream>#include<string>#include<stdio.h>#include<windows.h>#include<iomanip>using namespace std;class InfNode         //构建结点{friend class people;   //将people类定义为友元类 string name;string job;string telnum;string Email;int num;InfNode *next;};class people             //定义的类{public:people()                //构造函数,初始化一个空链表 {first=new InfNode;first->next=NULL;}void see();                  //成员函数,实现查找功能void input();                //成员函数,实现添加功能void printf();               //成员函数,实现输出功能void change();               //成员函数,实现修改功能void Delete();void print();private:InfNode *ptr,*first;         //头指针};void people::input(){                           //input函数的实现,实现添加功能 ptr=first;int i=1;char k='y';InfNode *p=new InfNode;cout<<"第"<<i<<"个结点;"<<endl;cout<<setw(18)<<"请输入姓名:";cin>>p->name;cout<<setw(18)<<"请输入所属类别:";cin>>p->job;cout<<setw(18)<<"请输入电话号码:";cin>>p->telnum;cout<<setw(18)<<"请输入邮箱:";cin>>p->Email;cout<<endl<<endl;p->num=1;cout<<"是否继续录入信息?【y/n】";cin>>k;cout<<endl;p->next=first->next;first->next=p;while(k=='y'&&i<15)            //要求录入数据少于15个 {int j=0;InfNode *q=first->next;p=new InfNode;cout<<"第"<<i+1<<"个结点;"<<endl;cout<<setw(18)<<"请输入姓名:"; cin>>p->name; while(q!=NULL) {if((q->name)==(p->name)) j=1;q=q->next;  }if(j==1) {cout<<setw(18)<<"请输入所属类别:"; cin>>p->job;cout<<setw(18)<<"请输入电话号码:"; cin>>p->telnum;cout<<setw(18)<<"请输入邮箱:"; cin>>p->Email; cout<<endl<<endl; i++; p->num=i; } elsecout<<"录入失败!(禁止重复录入!)"<<endl; cout<<"是否继续录入信息?【y/n】"; cin>>k;p->next=first->next; first->next=p; }if(i>=15)cout<<"已达到信息录入的上线"<<endl; }void people::see()               // see函数的实现, 实现查找功能 {InfNode *p; p=ptr; string s;cout<<endl<<endl<<"开始按类别查询! 请输入查询类别:"<<endl<<endl; cout<<"officer(办公类)"<<" "<<"personal(个人类)"<<" "<<"business(商务类)"<<endl; cin>>s;cout<<"查找结果如下:"<<endl; while(p!=NULL) {if((p->job)==s) {cout<<setw(12)<<"姓名:"<<p->name<<setw(12)<<"电话号码:"<<":"<<p->telnum<<endl; }p=p->next; } }void people::change()             //change的实现,实现信息修改功能 {cout<<endl<<endl<<"请输入想修改的人的姓名"<<endl; string s1; cin>>s1;InfNode *p=ptr; while(p!=NULL) {if(p->name==s1) {cout<<"请输入新的所属类别:"<<endl; cin>>p->job;cout<<"请输入新的电话号码:"<<endl; cin>>p->telnum;cout<<"请输入新的邮箱:"<<endl; cin>>p->Email;cout<<"修改后的结果:"<<endl;cout<<setw(12)<<"姓名:"<<p->name<<setw(12)<<"类别:"<<p->job<<setw(12)<<"电话号码:"<<":"<<p->telnum<<"邮箱:"<<":"<<p->Email<<endl; } p=p->next; } }void people::Delete(){                            //Delete函数的实现 ,实现删除功能cout<<endl<<"请输入想删除人的姓名"<<endl; string s1; cin>>s1;InfNode *p=ptr; while(p!=NULL) {if(p->name==s1){InfNode *q; q=p;p=q->next; delete q;cout<<"结点删除成功!"<<endl; return; } elsep=p->next; } }void people::print() {InfNode *p=ptr; string ns;cout<<"请输入要拨号的姓名:"<<endl; cin>>ns;while(p!=NULL) {if(ns==p->name) {string s1=p->telnum; int n=s1.size(),i=0; char ch[100];strcpy(ch,s1.c_str()); while(i<n) {Beep(1000,200); cout<<ch[i]; Sleep(500); i++; }cout<<"成功拨号!"<<endl; }p=p->next; } }int main(){                 //测试函数people a1;         //调用各个成员函数 a1.input(); a1.see(); a1.print();a1.change(); a1.Delete(); system("pause"); return 0; }

界面:




八、总 结

为期一个星期的数据结构课程设计已经基本结束,但是给了我很大的影响。通过这次实训,使我明白数据结构这门课程光仅仅是听课是远远不够的,上机训练也不容忽视。通过上机训练,才能够明白自己知识的不足,才能够有的放矢,更加深刻的理解数据结构中的知识点。 通过实训,我找到了许多知识漏点,学到了很多以前不懂的知识,以前认为自己已经懂了的知识点也理解更加深刻了。尤其是遇到了自己当时不知道如何编写的数据结构题目如何编写,通过自己的学习和同同学的交流后,试编和改错,最后能够顺利的编写出来,带来的也有成就感。


0 0