通讯信息管理系统

可以实现通讯信息的增加,浏览,删除,修改,查询,保存和读取功能。该系统还限制了通讯信息的条数(limit变量来限制)

文件放置结构:

具体实现代码如下:

#include<iostream>
#include<fstream>
#include<stdlib.h>
#include<cstring>
using namespace std;
void caidan();//菜单函数,实现菜单的显示
static int n=0; //记录输入的数据的个数
#define limit 10 //通讯信息条数只能是最多为limit条。
class Information
{
public:
struct xinxi
{
int id; //编号顺序
char name[20];
char num[11];
char type;
char mail[20];
}xx;
void zengInformation(); //增加信息; int cc(char na[]); //看输入的名字是不是重复;
};
void Information::zengInformation()
{
cin>>xx.name>>xx.num>>xx.type>>xx.mail;
}
int Information::cc(char na[])
{
if(strcmp(na,xx.name)==0)
return 1;
else return 0;
}
Information B[10];
class PP:public Information //对信息进行排序,并且写进文件,打开文件;
{
public:
void searchInformation1(char nu[]);//根据电话号码查找联系人;
void searchInformation2(char na[]);//根据姓名查找联系人;
void xiuInformation(char na[]);//修改功能;
void baocun(); //实现保存功能;
void inputfile(); //增加的信息写入文件
void outfile(); //打开文件,显示信息
void display(); //浏览功能,显示信息;
void shanInformation(); //删除功能;
};
void PP::searchInformation1(char nu[])
{
int i;
if(n==0)
{
cout<<"查无此人"<<endl;
}else
{
for(i=0;i<n;i++)
{
if(strcmp(nu,B[i].xx.num)==0)
{ cout<<B[i].xx.id<<" "<<B[i].xx.name<<" "<<B[i].xx.num<<" "<<B[i].xx.type<<" "<<B[i].xx.mail<<endl;
break;
}
else if(strcmp(nu,B[i].xx.num)!=0 && i==n-1)
{
cout<<"查无此人"<<endl;
break;
} } } }
void PP::searchInformation2(char na[])
{
int i;
if(n==0)
{
cout<<"查无此人"<<endl;
}else
{
for(i=0;i<n;i++)
{
if(strcmp(na,B[i].xx.name)==0)
{ cout<<B[i].xx.id<<" "<<B[i].xx.name<<" "<<B[i].xx.num<<" "<<B[i].xx.type<<" "<<B[i].xx.mail<<endl;
break;
}
else if(strcmp(na,B[i].xx.name)!=0 && i==n-1)
{
cout<<"查无此人"<<endl;
break;
} } } }
void PP::xiuInformation(char na[])
{
if(n==0)
{
cout<<"查无此人"<<endl;
}
else
{
for(int i=0;i<n;i++)
{
if(strcmp(na,B[i].xx.name)==0)
{
int a;
cout<<"输入你要修改哪一项(1.姓名 2.电话号码 3.类型 4.电子邮件)"<<endl;
cin>>a;
switch(a)
{
case 1:cout<<"你要将其修改为:"<<endl;
cin>>B[i].xx.name;break;
case 2:cout<<"你要将其修改为:"<<endl;
cin>>B[i].xx.num;break;
case 3:cout<<"你要将其修改为:"<<endl;
cin>>B[i].xx.type;break;
case 4:cout<<"你要将其修改为:"<<endl;
cin>>B[i].xx.mail;break;
}
break;
}
if((i==n-1 && strcmp(na,B[i].xx.name)!=0))
cout<<"查无此人"<<endl;
}
fstream f1("Information.dat");
ofstream f2("tmp.dat"); for(int i2=0;i2<n;i2++)
{
f2<<B[i2].xx.id<<" "<<B[i2].xx.name<<" "<<B[i2].xx.num<<" "<<B[i2].xx.type<<" "<<B[i2].xx.mail<<endl;
}
f1.close();
f2.close();
remove("Information.dat");
rename("tmp.dat","Information.dat");
} } void PP::baocun()
{ ofstream f2("save_Information.dat");
f2.close();
remove("save_Information.dat");
ofstream f3("save_Information.dat"); for(int i=0;i<n;i++)
{
f3<<B[i].xx.id<<" "<<B[i].xx.name<<" "<<B[i].xx.num<<" "<<B[i].xx.type<<" "<<B[i].xx.mail<<endl;
}
f3.close();
}
void PP::inputfile()
{
ofstream outfile("Information.dat"); if(!outfile){
cout << "Unable to open otfile";
exit(1); // terminate with error } cout<<"输入联系人信息:姓名、电话号码、类型(A.同事 B.朋友 C.家庭)、电子邮件"<<endl;
for(int i=n;;i++)
{
if(i==limit)
{
cout<<"存储空间已满,可选择删除数据再进行输入"<<endl;
break;
}
B[i].zengInformation();
for(int j=0;j<n;j++)
{
if(B[i].cc(B[j].xx.name))
{
cout<<"数据录入重复"<<endl;
i=i-1;
break;
}
} n++; B[i].xx.id=n;
outfile<<B[i].xx.id<<" "<<B[i].xx.name<<" "<<B[i].xx.num<<" "<<B[i].xx.type<<" "<<B[i].xx.mail<<endl;
char q;
cout<<"选择是否继续输入(y/n)"<<endl;
cin>>q;
if(q=='n')
break;
if(q=='y')
continue; }
outfile.close();
}
void PP::outfile()
{
fstream Myfile("Information.dat");
if(!Myfile) //判断是否成功打开文件
{
cerr<<"open error!"<<endl;
abort();
}
string temp;
while(getline(Myfile,temp))
{
cout<<temp<<endl;
}
Myfile.close(); }
void PP::display()
{
cout<<"联系人信息如下:"<<endl;
for(int i=0;i<n;i++)
{
cout<<B[i].xx.id<<" "<<B[i].xx.name<<" "<<B[i].xx.num<<" "<<B[i].xx.type<<" "<<B[i].xx.mail<<endl;
}
}
void PP::shanInformation()
{
char na[20];
cout<<"输入你要删除的人的名字"<<endl;
cin>>na;
int j;
for(int i=0;i<n;i++)
{
if(strcmp(na,B[i].xx.name)==0)
{
j=i;
break;
}
} for(int i1=j;i1<n-1;i1++)
{
B[i1]=B[i1+1];
B[i1].xx.id=i1;
}
n--;
fstream Myfile("Information.dat");
ofstream f2("tmp2.dat"); for(int i3=0;i3<n;i3++)
{
f2<<B[i3].xx.id<<" "<<B[i3].xx.name<<" "<<B[i3].xx.num<<" "<<B[i3].xx.type<<" "<<B[i3].xx.mail<<endl;
}
Myfile.close();
f2.close();
remove("Information.dat");
rename("tmp2.dat","Information.dat");
}
void caidan(PP p)
{
cout<<"****菜单****"<<endl;
cout<<"1.增加功能"<<endl;
cout<<"2.浏览功能"<<endl;
cout<<"3.查询功能"<<endl;
cout<<"4.修改功能"<<endl;
cout<<"5.删除功能"<<endl;
cout<<"6.保存功能"<<endl;
cout<<"7.读取功能"<<endl;
int q;
cout<<"输入你要选择的功能:"<<endl;
cin>>q;
switch(q)
{
case 1:
p.inputfile();
break;
case 2:p.display();break;
case 3:{cout<<"输入你要按号码(h)查找还是按姓名(m)查找:"<<endl;
char z;
cin>>z;
if(z=='h')
{
char h[11];
cout<<"输入你要查找的号码:"<<endl;
cin>>h;
p.searchInformation1(h);
}
if(z=='m')
{
char m[20];
cout<<"输入你要查找的姓名:"<<endl;
cin>>m;
p.searchInformation2(m);
}
break;}
case 4:{
char m[20];
cout<<"输入你要修改的联系人的姓名:"<<endl;
cin>>m;
p.xiuInformation(m);break;
}
case 5:p.shanInformation();break;
case 6:p.baocun();break;
case 7:p.outfile();break;
}
}
int main()
{
PP P;
char Q;
cout<<"********欢迎使用本系统********"<<endl;
fstream f1("Information.dat");
f1.clear();
f1.close();
for(int i=0;;i++)
{
caidan(P);
cout<<"请问是否(y/n)要继续使用菜单选择功能?"<<endl;
cin>>Q;
if(Q=='y')
continue;
if(Q=='n')
break;
} return 0;
}

C++实现通讯信息管理系统的更多相关文章

  1. Anynote 基于ExtJS多用户个人信息管理系统

    Anynote——个人信息管理系统 —–主要用于学习交流—– 源码下载:https://git.oschina.net/xiyt/Anynote.git 一.系统说明 Anynote是一个基于extj ...

  2. 基于数据库MySQL的简易学生信息管理系统

    通过这几天学习Mysql数据库,对其也有了基本的了解,为了加深印象,于是就写了一个最简易的学生信息管理系统. 一:基本要求 1.通过已知用户名和密码进行登录: 2.可以显示菜单: 3.可以随时插入学生 ...

  3. C++ 简单的学生信息管理系统

    // // main.cpp // 2013-7-17作业1 // // Created by 丁小未 on 13-7-17. // Copyright (c) 2013年 dingxiaowei. ...

  4. PHP基础示例:商品信息管理系统v1.1[转]

      实现目标:使用php和mysql写一个商品信息管理系统,并带有购物车功能 一.创建数据库和表 1.创建数据库和表:demodb 2.创建表格:goods 字段:商品编号,商品名称,商品类型,商品图 ...

  5. .NET破解之轻量万能自定义信息管理系统

    一般敢说万能的莫非真有两把刷子.今天来破解试试,看效果好用不. 下载:http://down.chinaz.com/soft/36780.htm 补丁: http://www.t00y.com/fil ...

  6. Redis 笔记与总结7 PHP + Redis 信息管理系统(用户信息的增删改查)

    1. PHP 连接 Redis 访问 redis 官方网站的 client 栏目:http://www.redis.io/clients#php,可以获取 redis 的 php 扩展. 其中 php ...

  7. 学生信息管理系统v1.0

    昨天一个教师朋友找到我,告诉我现在学期末他工作比较忙.需要统计处理很多学生信息,想让我帮他做一个管理系统.实现的功能就是把WPS表格转化成Word文档,将每一个学生的信息都能够分开,并且要根据名字找到 ...

  8. Java 实现学生信息管理系统

    编写一个简单的学生管理信息系统. 在oracle中设计一张学生表,以学号作为关键字. 其他学生信息有:姓名.手机号. 在进入系统时,显示如下菜单: ************************** ...

  9. 学生信息管理系统应用ios源码iPad版

    学生信息管理系统应用iPad版,该应用源码比较完整的,而且也很详细,这也是一款学校用的学生和老师管理系统,里面涉及到了很多ipad常用的控件,操作和数据存储. <ignore_js_op> ...

随机推荐

  1. request.getcontextPath() 详解(转)

    本文转自:http://blog.csdn.net/pengxuan/article/details/6604578 <%=request.getContextPath()%>是为了解决相 ...

  2. Java IDE选择,常用Java IDE排行榜

    Java IDE众多,java开发主要用.最多用.国内较流行.本人常用的java IDE如下: 开发java大项目的IDE一般都用eclipse或netbeans(几乎我所在的公司都是在用eclips ...

  3. evernote如何笔记共享

    首先将你的笔记共享     访问你的共享笔记地址,就可看到共享笔记的内容了 https://www.evernote.com/pub/用户名/笔记名 https://www.evernote.com/ ...

  4. configure: error: newly created file is older than distributed files!

    在linux下安装软件包的时候,有时候提示 configure: error: newly created file is older than distributed files!Check you ...

  5. 自动化测试尝试 动态Linq表达式生成 ftp上传

    自动化测试尝试   1. Selenium IDE Selenium IDE is a Chrome and Firefox plugin which records and plays back u ...

  6. CTabCtrl控件标签的相关设置

    原文链接: http://blog.csdn.net/happyhell/article/details/6012177 1. 获得CTabCtrl标签高度:CRect rc; CTabCtrl *p ...

  7. Python min() 函数

    描述 min() 方法返回给定参数的最小值,参数可以为序列. 语法 以下是 min() 方法的语法: min( x, y, z, .... ) 参数 x -- 数值表达式. y -- 数值表达式. z ...

  8. Latex 环境下“中文字体”的使用

    Latex 环境下“中文字体”的使用 使用CTex自带编辑器WinEdt,在该环境下如何使用中文字体呢?作为一个菜鸟,折腾了好几天,最终基本解决了这个问题.现在整理下,分享给后来者. 对于使用中文字体 ...

  9. Spring自动装配Bean详解

    1.      Auto-Wiring ‘no’ 2.      Auto-Wiring ‘byName’ 3.      Auto-Wiring ‘byType 4.      Auto-Wirin ...

  10. C++中虚基类在派生类中的内存布局

    今天重温C++的知识,当看到虚基类这点的时候,那时候也没有太过追究,就是知道虚基类是消除了类继承之间的二义性问题而已,可是很是好奇,它是怎么消除的,内存布局是怎么分配的呢?于是就深入研究了一下,具体的 ...