《基于C++的面向对象程序设计》

题目:模拟手机通信录管理系统课程实验设计

学院:

系别:计算机工程系

专业:计算机科学与技术

班级:1320541

制作人:  学号:132054137

指导教师:完成时间:两天(12月13/14 ,周六周日)

目录

第一章:总体功能介绍

1.1 绪论及问题描述...............................................................第3页

1.2 功能介绍................................................................................第3页

1.2.1  增加功能.......................................................................第3页

1.2.2  查看功能.......................................................................第3页

1.2.3  拔号功能.......................................................................第3页

1.2.4  修改功能.......................................................................第3页

1.2.5  删除功能.......................................................................第3页

1.2.6  查找功能.......................................................................第3页

1.2.7  保存功能.......................................................................第4页

第二章:课程设计理念

2.1 总体设计勾画框架一览图.................................................第4页

2.2 设计过程..............................................................................第5页

2.3 欢迎菜单的实现..................................................................第5页

2.4 主菜单的实现......................................................................第5页

第三章:各功能模块的实现及调试

3.1  添加信息............................................................................第6页

3.1.1添加信息提示..............................................................第6页

3.1.2添加信息输入..............................................................第6页

3.1.3添加信息提示分组情况..............................................第7页

3.1.4添加信息错误提醒情况..............................................第7页

3.2  查看通讯录信息.................................................................第8页

3.3  拨号提示及拨打......./.........................................................第8页

3.4  修改通讯录信息.................................................................第9页

3.5  删除通讯录信息.................................................................第10页

3.6  模糊查找信息..................................................................第10/11/12页

3.7  帮助.....................................................................................第12页

3.8  关于.....................................................................................第12页

第四章:调试过程中的问题

4.1 程序中遇到过的问题..........................................................第13页

4.2 问题的解决与编写后的感受..............................................第13页

第五章:总结............................................................................第14页

第六章:参考文献....................................................................第15页

第七章:附源代码...................................................................第15~29页

第一章:总体功能介绍

1.1 绪论及问题描述

用C++设计出模拟手机通信录管理系统,实现对手机中的通信录进行管理。 人员信息:姓名、手机号码、家庭电话号码、办公电话、电子邮件、分组 。基于C++6.0 dos环境设计。

(其中:手机号码、家庭电话号码、办公电话不能同时为空;分组说明: 未知、同事、亲戚、朋友、家人、同学等还可以自己创建分组)

1.2功能介绍

1.2.1  增加功能:

能录入新人员记录(当录入了重复的姓名和电话号码时,则提示数据录入重复并取消录入;默认分组“未知”)

1.2.2   查看功能:

选择此功能时,当选中某类时,显示出此类所有数据中的姓名和电话号码);

1.2.3  拔号功能:

能显示出通信录中所有人的姓名,当选中某个姓名时,屏幕上模拟打字机的效果依次显示出此人的电话号码中的各个数字。

1.2.4  修改功能:

选中某个人的姓名时,可对此人的相应数据进行修改。

1.2.5  删除功能:

选中某个人的姓名时,可对此人的相应数据进行删除,并自动调整后续条目的编号。

1.2.6   查找功能

按姓名(模糊查找,如输入一个“李”,则列出所有姓李的信息)或按电话号码查找某人信息。

1.2.7  保存功能

将当前系统中各类记录存入文件中。

第二章:课程设计理念

2.1  总体设计勾画框架一览图

2.2 设计过程

欢迎菜单

主菜单:

1.添加

2.浏览

3.拨打

4.修改

5.删除

6.查找

7.帮助

8.关于

9.退出

注:首先向客户展示一个欢迎界面,并提醒客户输入任意键进入主菜单,在菜单中客户进行操作选择,而且客户操作完后还可以根据需求进行返回主菜单进行其他操作。

2.3 欢迎菜单的实现:

2.4 主菜单的实现:

第三章:各功能模块的实现及调试

3.1 添加信息

3.1.1 添加信息提示

3.1.2 添加信息输入

3.1.3 添加信息提示分组情况

3.1.4 添加信息出错(姓名/手机号/家庭电话/办公电话出现重复)提醒情况

3.2  查看通讯录信息

3.3 拨号提示及拨打

3.4  修改通讯录信息

修改后的可以对比 注意刘涛的手机号已经修改成功

3.5  删除通讯录信息

删除李四

注意观察通讯录中没有李四了

3.6  模糊查找信息(姓名中的首位/手机号的首位数)

姓名中的首位

显示:

手机号的首位数

显示如下:

3.7  帮助

3.8  关于

第四章:调试过程中的问题

4.1 程序中遇到过的问题

面对一个课程设计的诸多要求,在设计过程中一定会遇到诸多的问题。

有程序逻辑方面上的逻辑错误,语法上的错误。

主要由以下几个方面:

① 标点符号等出现错误,比较容易修改

② 类定义错误

③ 类的使用错误

④ 主函数的使用方法

⑤ 调用函数的使用方法

⑥ 非空函数的返回值

⑦ 主菜单的修改与美观

⑧ 欢迎菜单

⑨ 实现客户的来回输入

⑩ 实现客户数据输入错误提醒

11 实现工程文件的包含等

12 数据的更新

13 可视化的窗口

4.2 问题的解决与感受

问题的解决:

1)       解决问题中,仔细查找错误

2)       平时学习多问同学与老师

3)       平时学习多交流问题

4)       平时学习上网查找资料

5)       平时学习多看看书

6)       平时学习多实践实践

7)

感受:

1.在编写程序过程中需谨慎,一个好的程序员需要严谨的态度

2.C++主要靠自己的动手能力

3.多参加一些软件开发,对自己的c++有很大的好处

4.虽然实验过程中出现诸多问题,但是解决后的心情是相当不错的

5.多试验多操作

6.多交流,多问

7.有耐心有毅力,不怕失败

8.平时调试9999次不成功,你就要坚持调试10000次

第五章:总结

通过本次课程设计,以及联系到大一下学期有关《图书馆多媒体库管理系统课程设计》,能对本学期C++面向对象程序设计课程学习的知识进行了一次综合运用,巩固了所学的知识。而本次课程设计《模拟手机通讯录管理系统》与现实生活联系比较紧密,综合性也比较强,锻炼了独立思考并解决问题的能力。课程设计分为两个阶段,对于处理问题比较有层次性,即逐步深入;而课程要求也对本次试验有一定的引导作用。完成了本次试验,对于其他编程项目,不论简单、复杂,也比较容易理解、接受、尝试、解决。

虽然,本次课程设计试验的总体完成比较顺利,仅用两天时间,集中吸收了大一、大二的c++内容。对于一些数据的添加、修改、删除、查看、存档等主要功能,将是以后从事课程设计等所必需的知识。无一例外,当我们熟悉地掌握一种属于自己的方法,以不变应万变,便可以解决现实的很多问题。

当然,作为我们计算机科学与技术专业的学生,我们要善始善终,我们要时刻地明白:“纸上得来终觉浅,绝知此事要躬行。”要成为一个完美的程序员,我们需要清醒的头脑,清晰的客观逻辑,严谨的科学态度,持之以恒的耐心与毅力。“不积跬步无以至千里,不积小流无以成江海”,我们需要更多的练习,学好C++及其他语言的道路任重而道远。动手能力与逻辑思维能力至关重要。

同时衷心感谢王俊秀老师的指导,以及在学习之余中给我们带来的开心时刻!!!

第六章:参考文献

《C++程序设计》

《C++面向过程程序设计》

《C++面向对象程序设计》

《C++PrimerPlus 第五版》

第七章:附源代码

注:

① 本程序源代码已在基于windows系统VisualC++6.0DOS环境下严格通过调试。

② 通讯录中存在部分人员信息(姓名、手机号、家庭电话、办公电话等)是通过该程序录入的。

③ 该程序源代码在word的排版中均以左对齐方式予以显示,若给你带来阅读上的不便,敬请谅解。

模拟手机通讯录源代码

addresslist.Cpp

///主函数开始///

#include<iostream>

#include<fstream>                     //文件

#include"addresslist1.h"

#include<cstdlib>                     //清屏库文件

using namespace std;

int main()

{

system("color2f");               //控制台颜色,可控制

addresslistaddr;

addr.welcome_display();           //欢迎界面

charf;

while(1)                          //构造假死循环

{

addr.menu_display();          //主菜单界面

int ch;

cin>>ch;

switch(ch)

{

case 1:addr.add();break;      //调用添加新信息函数

case 2:addr.skim();break;     //调用浏览函数

case 3:addr.dial();break;     //调用打电话函数

case 4:addr.modify();break;   //调用修改信息函数

case 5:addr.deletepeople();break;//调用删除信息函数

case 6:addr.search();break;   //调用查找信息函数

case 7:addr.help();break;     //调用帮助函数

case 8:addr.about();break;    //调用关于函数

case 0:cout<<"已安全退出该系统!\n";break;

default:cout<<"没有此操作选项"<<endl;exit(0);break;

}

cout<<"请问您是否需要返回主菜单中继续操作?(y:是;n:否)";

cin>>f;

system("cls");                //调用清屏函数,以便再次输入

if(f=='n'||f=='N')break;      //判断是否结束

}

return0;

}

//主函数结束/

addresslist1.h

// addresslist1.h: interface forthe addresslist class.

//

#if!defined(AFX_ADDRESSLIST1_H__D7290679_525E_4096_BE72_8EDF12890437__INCLUDED_)

#defineAFX_ADDRESSLIST1_H__D7290679_525E_4096_BE72_8EDF12890437__INCLUDED_

#if _MSC_VER > 1000

#pragma once

#endif // _MSC_VER > 1000

class addresslist          //定义addresslist类

{

private:

char name[20];         //定义私有变量:姓名

char phone[20];        //定义私有变量:电话

char homephone[20];  //定义私有变量:家庭电话

char officephone[20];  //定义私有变量:办公电话

char email[20];        //定义私有变量:Email

char group[20];        //定义私有变量:分组

public:

addresslist();         //声明构造函数

virtual ~addresslist();//声明析构函数

void welcome_display();//声明欢迎界面函数

void menu_display();   //声明主菜单显示函数

void add();            //声明增加信息函数

void skim();           //声明浏览信息函数

void dial();           //声明拨打电话信息函数

void modify();         //声明修改信息函数

void deletepeople();   //声明删除信息函数

void search();         //声明查询信息函数

void help();           //声明帮助信息函数

void about();          //声明关于信息函数

};

#endif //!defined(AFX_ADDRESSLIST1_H__D7290679_525E_4096_BE72_8EDF12890437__INCLUDED_)

addresslist1.cpp

// addresslist1.cpp:implementation of the addresslist class.

///手机通讯录系统

#include<windows.h>                     //调用Sleep延长时间函数库文件

#include"addresslist1.h"

#include<ctime>                         //调用系统当前日期时间

#include<fstream>

#include<string>

#define max 1000                        //通讯录最大容量1000人

#include<iostream>

using namespace std;

/函数等的定义开始

addresslist people[max];

int count=0;                            //初始化当前通讯录的信息数

addresslist::addresslist()              //默认全为0

{

strcpy(people[0].name,"0");

strcpy(people[0].phone,"0");

strcpy(people[0].homephone,"0");

strcpy(people[0].officephone,"0");

strcpy(people[0].email,"0");

strcpy(people[0].group,"0");

}

addresslist::~addresslist()             //析构函数

{

}

voidaddresslist::welcome_display()     //欢迎界面函数的定义

{

cout<<"\n";

cout<<"          ********************欢迎界面********************        \n\n";

cout<<"*******************欢迎进入手机通讯录管理系统*********************\n\n";

cout<<"          *******   该简易系统制作者: 刘创   ***********        \n\n";

cout<<"          *******   制作日期:2014年12月12周五 ***********        \n\n";

cout<<"          *******   请按任意键进入主菜单……… ***********        \n\n";

cout<<"******************************************************************\n   ";

while(getchar()==0);

system("cls");

}

voidaddresslist::menu_display()          //主菜单界面函数的定义

{

time_t t;

time(&t);                             //当前登录系统时间显示

cout<<"                              当前登陆系统时间是: "<<ctime(&t)<<endl;

cout<<"          ************************************************\n";

cout<<"*******************手机通讯录管理系统主菜单***********************\n";

cout<<"          *******    >> 1.添加新通讯信息<<        ********        \n";

cout<<"          *******       2.查看通讯录信息          ********        \n";

cout<<"          *******       3.拨号                    ********        \n";

cout<<"          *******       4.修改通讯录信息          ********        \n";

cout<<"          *******       5.删除通讯录信息          ********        \n";

cout<<"          *******       6.查找通讯录信息          ********        \n";

cout<<"          *******       7.帮助                    ********        \n";

cout<<"          *******       8.关于                    ********        \n";

cout<<"          *******       0.退出                    ********        \n";

cout<<"          *******请输入数字:(0~8)进行选择操作   ********        \n";

cout<<"******************************************************************\n";

}

void addresslist::add()                  //添加信息函数的定义,其中添加函数最为复杂,需要全面考虑

{

system("cls");                       //清屏

ofstreamoutfile("addresslist.txt",ios::binary);//本程序均采用二进制存档,文件为addresslist.txt

if(!outfile)

{cerr<<"打开错误!"<<endl;

abort();

}

ifstreaminfile("addresslist.txt",ios::binary);

if(!infile)

{cerr<<"打开错误!"<<endl;

abort();

}

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

{infile.read((char*)&people[i],sizeof(people[i]));

infile.read((char*)&count,sizeof(count));

}

i=count;                              //从文件中读取count,并赋给i,以便存档

cout<<"\n************************新信息开始录入*********************\n请依次按下面顺序输入新通讯录的信息";

cout<<"(注:手机号,家庭电话,办公电话不能同时为空\n";

cout<<"且不填信息时以'0'结束进行下一个信息输入(以空格隔开信息,分组在之后操作)\n";

cout<<"姓名 \t手机号  \t家庭电话\t办公电话\t电子邮件\n";

cin>>people[i].name>>people[i].phone;

cin>>people[i].homephone>>people[i].officephone;

cin>>people[i].email;

if(i==0)                              //如果当前通讯录时空的话,则i=count==0,就直接存档;

{

cout<<"现在开始进行分组\n(注:在分组中有1.未知 2.同事3.亲戚 4.朋友5.家人 6.同学7.默认 8.自己创建分组)\n";

cout<<"请输入你的选项(1~8)进行分组\n";//实现客户对分组的选择输入

int c;

cin>>c;

switch(c) //分组选择在这里目的是:如果客户输入重复数据时,就不用对数据进行分组了

{

case1:strcpy(people[i].group,"未知");break;

case2:strcpy(people[i].group,"同事");break;

case3:strcpy(people[i].group,"亲戚");break;

case4:strcpy(people[i].group,"朋友");break;

case5:strcpy(people[i].group,"家人");break;

case6:strcpy(people[i].group,"同学");break;

case7:strcpy(people[i].group,"未知");break;

case 8:cout<<"请输入你要新建分组的名字:\n";cin>>people[i].group;break;

default:cout<<"你输入的操作选项错误!\n";

}

count++;                          //当存完档后count+1;

for(int j=0;j<count;j++)

{outfile.write((char*)&people[j],sizeof(people[j]));

outfile.write((char*)&count,sizeof(count));

}

outfile.close();

}

else

{

for(int g=0;g<i;g++)               //当当前通讯录人数不为零时,判断用户输入的姓名是否重复

{

if(!(strcmp(people[g].name,people[i].name)))//判断名字是否相等

{

cout<<"你存储的姓名已存在!此项信息录入取消\n";

for(int j=0;j<count;j++)

{outfile.write((char*)&people[j],sizeof(people[j]));

outfile.write((char*)&count,sizeof(count));

}

outfile.close();break;

}

}

for(int k=0;k<i;k++)              //判断用户输入的手机号是否重复

{

if(!(strcmp(people[k].phone,people[i].phone)))

{

cout<<"你存储的手机号已存在!此项信息录入取消\n";

for(int j=0;j<count;j++)

{outfile.write((char*)&people[j],sizeof(people[j]));

outfile.write((char*)&count,sizeof(count));

}

outfile.close();break;

}

}

for(int l=0;l<i;l++)              //判断用户输入的家庭电话是否重复

{

if(!(strcmp(people[l].homephone,people[i].homephone)))

{

cout<<"你存储的家庭电话已存在!此项信息录入取消\n";

for(int j=0;j<count;j++)

{outfile.write((char*)&people[j],sizeof(people[j]));

outfile.write((char*)&count,sizeof(count));

}

outfile.close();break;

}

}

for(int m=0;m<i;m++)               //判断用户输入的办公电话是否重复

{

if(!(strcmp(people[m].officephone,people[i].officephone)))

{

cout<<"你存储的办公电话已存在!此项信息录入取消\n";

for(int j=0;j<count;j++)

{outfile.write((char*)&people[j],sizeof(people[j]));

outfile.write((char*)&count,sizeof(count));

}

outfile.close();break;

}

}

if(g==i&&k==i&&l==i&&m==i)         //当客户输入的姓名,手机号,家庭电话,办公电话不重复时才可以

//把数据输入文件

{

cout<<"现在开始进行分组\n(注:在分组中有1.未知 2.同事3.亲戚 4.朋友5.家人 6.同学7.默认 8.自己创建分组)\n";

cout<<"请输入你的选项(1~8)进行分组\n";//实现客户对分组的选择输入

int c;

cin>>c;

switch(c)                      //分组选择在这里目的是:如果客户输入重复数据时,就不用对数据分组了,同上

{

case1:strcpy(people[i].group,"未知");break;

case2:strcpy(people[i].group,"同事");break;

case3:strcpy(people[i].group,"亲戚");break;

case4:strcpy(people[i].group,"朋友");break;

case5:strcpy(people[i].group,"家人");break;

case6:strcpy(people[i].group,"同学");break;

case7:strcpy(people[i].group,"未知");break;

case 8:cout<<"请输入你要新建分组的名字:\n";cin>>people[i].group;break;

default:cout<<"你输入的操作选项错误!\n";

}

count++;                        //当存完档后count+1;

for(int j=0;j<count;j++)

{outfile.write((char*)&people[j],sizeof(people[j]));

outfile.write((char*)&count,sizeof(count));

}

cout<<"数据保存成功!";

outfile.close();                //关闭文件

}

}

infile.close();                         //关闭文件

}                                           //添加函数结束

void addresslist::skim()                    //浏览函数的定义

{

ifstream infile("addresslist.txt",ios::binary);

if(!infile)

{cerr<<"打开错误!"<<endl;

abort();

}

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

{infile.read((char*)&people[i],sizeof(people[i]));

infile.read((char*)&count,sizeof(count));}

system("cls");

cout<<"***********************通讯录所有人的信息(姓名与电话)***********************\n";

cout<<"\t姓名 \t\t手机号\t\t\t家庭电话 \t\t办公电话\n";

for( i=0;i<count;i++)

{

cout<<"\t"<<people[i].name<<"\t\t"<<people[i].phone<<"\t\t"<<people[i].homephone<<"\t\t"<<people[i].officephone<<"\n";

}

cout<<"****************************************************************************\n";

infile.close();

}

void addresslist::dial()                   //模拟打电话函数的定义

{

char a[20];                            //定义临时变量

ifstreaminfile("addresslist.txt",ios::binary);

if(!infile)

{cerr<<"打开错误!"<<endl;

abort();

}

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

{infile.read((char*)&people[i],sizeof(people[i]));

infile.read((char*)&count,sizeof(count));}

system("cls");

cout<<"\n******************通讯录所有人的姓名信息(5人一行罗列)**********************\n";

for( i=0;i<count;i++)

{

cout<<"\t"<<people[i].name;

if((i+1)%5==0||i==count-1)          //5个人一行进行罗列

cout<<"\n";

}

cout<<"**************************************************************\n";

cout<<"请选择输入上面通讯录中的一个姓名来拨打电话:\n";

cin>>a;                                 //客户输入要拨打电话的姓名

for(i=0;i<=count;i++)

{

if(!(strcmp(a,people[i].name)))     //判断客户输入的姓名是否在通讯录中

{

cout<<"%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n";

cout<<"\t你正在向"<<people[i].name<<"拨打电话(默认为手机号)\n     \t\t";

for(intj=0;j<strlen(people[i].phone);j++)

{

Sleep(500);                //延长500毫秒即0.5秒的时间

cout<<people[i].phone[j];

}

cout<<"\n\t电话正在拨通中请稍候………\n";

cout<<"%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n";

}

}

infile.close();

}

void addresslist::modify()                    //修改函数的定义

{

char a[20];                               //定义临时变量,同上

ifstreaminfile("addresslist.txt",ios::binary);

if(!infile)

{cerr<<"打开错误!"<<endl;

abort();

}

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

{infile.read((char*)&people[i],sizeof(people[i]));

infile.read((char*)&count,sizeof(count));}

ofstream outfile("addresslist.txt",ios::binary);

if(!outfile)

{cerr<<"打开错误!"<<endl;

abort();

}

system("cls");

cout<<"        ****************通讯录修改信息*******************     \n";

cout<<"******************通讯录中所有人的姓名信息**********************\n";

for( i=0;i<count;i++)

{

cout<<"\t"<<people[i].name;

if((i+1)%5==0||i==count-1)                 //5人信息一行进行罗烈

cout<<"\n";

}

cout<<"**************************************************************\n";

cout<<"请选择输入上面通讯录中的一个姓名来修改信息:\n";

cin>>a;                                   //输入上面通讯录中的一个姓名来修改信息

system("cls");

for(i=0;i<count;i++)

{

if(!(strcmp(a,people[i].name)))        //判断输入的姓名是否在通讯录中

{

cout<<"   *************"<<people[i].name<<"的所有信息如下**************\n";

cout<<"%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n";

cout<<"\t手机号\t家庭电话\t办公电话\t电子邮件\t分组\n";

cout<<"\t"<<people[i].phone<<"\t"<<people[i].homephone<<"\t"<<people[i].officephone;

cout<<"\t"<<people[i].email<<"\t"<<people[i].group<<endl;

cout<<"%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n";

cout<<"1.姓名 2.手机号3.家庭电话 4.办公电话5.电子邮件 6.分组\n";

cout<<"请输入1~6进行数据选择性修改\n";

int b;

cin>>b;

char c[20];

switch(b)                           //switch函数进行客户选择修改的内容

{

case 1:cout<<"请输入新的姓名:";cin>>c;strcpy(people[i].name,c);break;

case 2:cout<<"请输入新的手机号:";cin>>c;strcpy(people[i].phone,c);break;

case 3:cout<<"请输入新的家庭电话:";cin>>c;strcpy(people[i].homephone,c);break;

case 4:cout<<"请输入新的办公电话:";cin>>c;strcpy(people[i].officephone,c);break;

case 5:cout<<"请输入新的电子邮件:";cin>>c;strcpy(people[i].email,c);break;

case 6:cout<<"请输入新的分组:";cin>>c;strcpy(people[i].group,c);break;

default:cout<<"你输入的操作选项错误!\n";

}

}

}

for(int j=0;j<count;j++)

{outfile.write((char*)&people[j],sizeof(people[j]));

outfile.write((char*)&count,sizeof(count));

}

cout<<"数据修改保存成功!";

outfile.close();

infile.close();

}

void addresslist::deletepeople()               //删除信息函数的定义

{

char a[20];                                //临时变量定义,同上

ifstreaminfile("addresslist.txt",ios::binary);

if(!infile)

{cerr<<"打开错误!"<<endl;

abort();

}

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

{infile.read((char*)&people[i],sizeof(people[i]));

infile.read((char*)&count,sizeof(count));}

ofstreamoutfile("addresslist.txt",ios::binary);

if(!outfile)

{cerr<<"打开错误!"<<endl;

abort();

}

system("cls");

cout<<"            ****************通讯录删除信息*******************     \n";

cout<<"******************通讯录中所有人的姓名信息(五人一行罗列)****************\n";

for( i=0;i<count;i++)

{

cout<<"\t"<<people[i].name;

if((i+1)%5==0||i==count-1)           //五人一行进行罗列

cout<<"\n";

}

cout<<"**************************************************************\n";

cout<<"请选择输入上面通讯录中的一个姓名进行删除信息:\n";

cin>>a;

system("cls");

int j;

for(i=0;i<count;i++)

{

if(!(strcmp(a,people[i].name)))        //判断哪个符合进行删除

{

for(j=i+1;j<count;j++)

{

strcpy(people[j-1].name,people[j].name);

strcpy(people[j-1].phone,people[j].phone);

strcpy(people[j-1].homephone,people[j].homephone);

strcpy(people[j-1].officephone,people[j].officephone);

strcpy(people[j-1].email,people[j].email);

strcpy(people[j-1].group,people[j].group);

}

count--;                          //删除信息时,要把个数-1;进行存档

break;

}

}

for(int k=0;k<count;k++)

{outfile.write((char*)&people[k],sizeof(people[k]));

outfile.write((char*)&count,sizeof(count));

}

cout<<"\t\t数据删除成功!\n";

outfile.close();

infile.close();

}

void addresslist::search()                     //查找信息函数的定义

{

char a[3];

ifstream infile("addresslist.txt",ios::binary);

if(!infile)

{cerr<<"打开错误!"<<endl;

abort();

}

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

{infile.read((char*)&people[i],sizeof(people[i]));

infile.read((char*)&count,sizeof(count));}

system("cls");

cout<<"********************查找通讯录信息*******************\n";

cout<<"\t 1.模糊查找    2.手机号码\n\t 请输入数字(1或2)进行查找信息:\n";

int b;

cin>>b;

if(b==1)                                      //实现客户模糊查找(1.姓2.手机号第一位)

{

cout<<"请输入你要查找信息的姓(1个汉字):\n";

cin>>a;

cout<<"*****************所有符合此(姓)的信息*******************\n";

cout<<"\t姓名\t手机号码\t家庭电话\t办公电话\t电子邮件\t分组\n";

for(i=0;i<count;i++)                      //模糊查找相同的全部列出来

{  char c[3];                           //定义一个临时字符数组,且初始化如下

c[0]=people[i].name[0];

c[1]=people[i].name[1];

c[2]='\0';                            //这样就可以模糊查找

if(!(strcmp(&a[0],c)))                 //模糊查找中

{

cout<<"\t"<<people[i].name<<"\t"<<people[i].phone;

cout<<"\t"<<people[i].homephone<<"\t"<<people[i].officephone;

cout<<"\t"<<people[i].email<<"\t"<<people[i].group<<endl;

}

}

cout<<"%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n";

cout<<"所有符合的信息查找完毕!";

}

else                                         //数字模糊查找,类似于上面

{

cout<<"请输入你要模糊查找信息手机号码(1个数字):\n";

cin>>a;

cout<<"*****************所有符合手机号的信息*******************\n";

cout<<"\t姓名\t手机号码\t家庭电话\t办公电话\t电子邮件\t分组\n";

for(i=0;i<count;i++)

{

char d[2];

d[0]=people[i].phone[0];

d[1]='\0';

if(!(strcmp(&a[0],d)))

{

cout<<"\t"<<people[i].name<<"\t"<<people[i].phone;

cout<<"\t"<<people[i].homephone<<"\t"<<people[i].officephone;

cout<<"\t"<<people[i].email<<"\t"<<people[i].group<<endl;

}

}

cout<<"%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n";

cout<<"所有符合的信息查找完毕!";

}

infile.close();

}

void addresslist::help()                        //帮助界面函数的定义

{

system("cls");

cout<<"\n";

cout<<"          ********************帮助********************        \n";

cout<<"%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n";

cout<<"%%                                                                        %%\n";

cout<<"%%                    基于C++面向对象大二上学期课程设计                    %%\n";

cout<<"%%            课设主题:  模拟手机通信录管理系统                          %%\n";

cout<<"%%           help:                                                        %%\n";

cout<<"%%                在该简易系统中,客户可以实现对手机电话簿的管理操作      %%\n";

cout<<"%%               1.新信息的输入,及添加功能                               %%\n";

cout<<"%%               2.浏览查看功能(可以显示所有人的姓名,电话)             %%\n";

cout<<"%%               3.拨号功能(在这里采用了500毫秒的暂停以实现拨号界面)     %%\n";

cout<<"%%               4.在模糊查找信息时,客户需要注意只能输入一个汉字或一个数字%%\n";

cout<<"%%               5.在修改信息时,应注意可以返回再进行修改其他的信息       %%\n";

cout<<"%%               6.本程序均采用二进制存档,存档文件为addresslist.txt        %%\n";

cout<<"%%                  客服联系电话:15835131937                              %%\n";

cout<<"%%                                                                         %%\n";

cout<<"%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n";

}

void addresslist::about()                      //关于界面函数的定义

{

system("cls");

cout<<"\n";

cout<<"          ********************关于********************        \n";

cout<<"%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n";

cout<<"%%                                                                        %%\n";

cout<<"%%                    基于C++面向对象大二上学期课程设计                    %%\n";

cout<<"%%             课设主题:  模拟手机通信录管理系统                         %%\n";

cout<<"%%                  该简易系统制作者: 刘创                                %%\n";

cout<<"%%                  指导老师       :王俊秀                               %%\n";

cout<<"%%                  制作日期:2014年12月12周五                             %%\n";

cout<<"%%                  制作地点:太原工业学院                                 %%\n";

cout<<"%%                  @版权所有                                              %%\n";

cout<<"%%                  客服联系电话:15835131937                              %%\n";

cout<<"%%                                                                        %%\n";

cout<<"%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n";

}

//函数定义至此结束//

// 模拟手机管理系统课程设计至此结束//

模拟手机通讯录管理系统相关推荐

  1. 模拟手机通讯录联系人功能

    实训:模拟手机通讯录联系人功能 package com.qf.day43_02; import android.app.Activity; import android.app.AlertDialog ...

  2. C++手机通讯录管理系统

    C++手机通讯录管理系统 通讯录管理系统 手机通讯录中的联系人的信息既可以存储在手机 中,也可以存储在手机卡中,也可以同时存储在两个 位置上(假设每个位置.上的存储容量为1000,即手机 卡中或手机上 ...

  3. 基于mysql的手机通讯录系统设计_手机通讯录管理系统的设计与实现(MyEclipse,MySQL)...

    手机通讯录管理系统的设计与实现(MyEclipse,MySQL)(任务书,开题报告,中期检查表,文献综述,外文翻译,毕业论文12000字,程序代码,MySQL数据库) 手机通讯录得使用大大减少了查找过 ...

  4. JAVA趣味课程:手机通讯录管理系统

    本篇博客的内容在之前python基础系列案例中有详细讲解,此次我将使用JAVA语言对手机通讯录管理系统进行重新编写.此案例适用于熟练掌握面向对象基础和List集合的基本操作. 需求分析: 能够循环接收 ...

  5. 手机通讯录管理系统——c语言

    @手机通讯录管理系统--c语言 急需!!!!!!!!能有大佬帮看看吗,想搞个清屏,但是老是弄不对,头昏眼花了,有的加了清屏,下面的内容就无法出现,只是闪现一会,有知道的吗,可以直接帮我改改代码吗,在此 ...

  6. JAVA趣味课程:手机通讯录管理系统(连接数据库管理信息)

    今天课堂上正好讲到JAVA连接jdbc管理sqlite数据库的操作,讲完他的基本用法之后,就又把之前的手机通讯录管理系统掏出来,改装完成数据库版本的增删改查等存取工作.那么下面开始需求分析以及逻辑编码 ...

  7. 模拟手机通讯录管理 2021.2.11

    模拟手机通讯录管理 现在手机都有通讯录程序,下面这个代码模拟手机通讯录设置添加,查询,删除联系人等功能. 今天是除夕,祝各位程序员朋友们新春快乐,阖家欢乐! import os import sysp ...

  8. c++对象数组模拟手机通讯录Demo

    文章目录 一.需求说明 二.效果 三.整体思路 四.详细思路 五.代码实现 一.需求说明 使用c++开发一个个人版通讯录,要求简单实现下面功能: 1.向通讯录添加联系人 2.从通讯录删除联系人 3.查 ...

  9. 【QT项目】基于c++ qt的手机通讯录管理系统

    前言 emmmm,笔者的课程设计. 需求分析 (1)在页面上可以显示的手机通讯录的联系人,并且可以显示联系人的所有信息. (2)联系人分为在手机上的联系人和在手机卡上的联系人. (3)可以实现联系人信 ...

  10. python手机通讯录管理系统代码_[内附完整源码和文档] 基于Java的个人通讯录管理系统...

    摘 要 随着社会的发展,人际关系变得越来越重要,为了保持良好的人际关系,必须常与亲戚朋友,同学同事保持联系,但有时候存在许多限制条件,因此我们需要为了快速查找联系人的信息,节省查找时间,开发通讯录管理 ...

最新文章

  1. junit测试NoSuchBeanDefinitionException: No bean named ‘dataSource‘ is define
  2. Python 学习记录1
  3. Adhesive框架系列文章--Mongodb数据服务使用实践
  4. struts2值栈,OGNL表达式,interceptor
  5. 微信成为开发者C#代码
  6. 电商主题BANNER传统促销喜庆红色节日海报,C4D打造时尚场景
  7. 我国计算机网络发展水平,计算机网络发展
  8. ubuntu 16.0 CUDA 10.1卸载 CUDA 10.2 安装
  9. .net 本地文件管理 代码_Gitee 在线解决代码冲突上线,解决冲突不再需要 Git 命令...
  10. php获取手机品牌,9 大国产手机品牌相机水印大比拼,哪款才是你的最爱?
  11. c语言链表的数据结构,c语言实现通用数据结构(一):通用链表
  12. 数学建模——商人过河(Matlab)
  13. php还原时间戳,如何将php时间戳转换回日期
  14. 族谱软件系统的使用介绍
  15. php 冷门与常用函数
  16. python抓取淘宝评论_python3抓取淘宝评论内容
  17. 三国志战略版360区S4服务器合并信息,三国志战略版S3赛季哪些大区合并
  18. 执著如泪,是滴入心中的破碎
  19. PaddlePaddle深度学习实战——英法文翻译机
  20. Matlab/Simulink之STM32开发

热门文章

  1. 安装matlab 2016a win10 64bit系统
  2. 洛谷oj---P3205 [HNOI2010]合唱队
  3. “舱驾融合”技术发展趋势分析
  4. 安装使用反编译工具ILSPY
  5. redhat7 配置静态ip
  6. 黑马程序员_毕向东_Java基础视频教程第01天
  7. mac使用之必备神器
  8. AI智能中的OCR 少数民族文字识别-维吾尔文字识别
  9. mysql成绩是什么数据类型_mysql数据类型
  10. 微积分的未来:DNA、非线性、混沌、复杂系统与人工智能