通讯信息管理系统

可以实现通讯信息的增加,浏览,删除,修改,查询,保存和读取功能。该系统还限制了通讯信息的条数(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. Android 报错:Conversion to Dalvik format failed: Unable to execute dex: java.nio.BufferOverflowException. Check the Eclipse log for stack trace.

    在android高版本开发环境(sdk 4.4)导入低版本(sdk 3.0)的工程时编译报错,报错信息如:Conversion to Dalvik format failed: Unable to e ...

  2. Linux内核中锁机制之信号量、读写信号量

    在上一篇博文中笔者分析了关于内存屏障.读写自旋锁以及顺序锁的相关内容,本篇博文将着重讨论有关信号量.读写信号量的内容. 六.信号量 关于信号量的内容,实际上它是与自旋锁类似的概念,只有得到信号量的进程 ...

  3. POJ 3254 简单状压DP

    没什么可说的,入门级状压DP.直接撸掉 #include <iostream> #include <cstring> #include <cstdlib> #inc ...

  4. Google Guice之作用域

    默认情况下,Guice获取一个实例时.每次都会返回一个新的对象. 这个行为能够通过scopes进行配置.Scopes同意你复用实例: 应用整个生命周期(@Singleton),会话(@Session) ...

  5. 后缀crt证书转换

    转换地址:https://www.chinassl.net/ssltools/convert-ssl.html 转换成功后点下载即可

  6. 开发Yii2过滤器并通过behaviors()行为调用(转)

    在Yii2的几乎每个controller中,我们都会看到一个函数behaviors(),通常,我们用这个函数来配置控制器的权限,例如:public function behaviors()    {  ...

  7. cocos2dx 3.x 避免空sprite

    由于cocos2dx 3.x中autobatch的,如果场景中含有空sprite(并且还不处于visible==false状态)的话,则会打断流水线(因为空sprite的贴图与其它元素的贴图必定不在同 ...

  8. javascript 二维数组的例子

    javascript没有二维数组.所有自定义了一个数组类,下面是实例代码. 代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Trans ...

  9. 32个最热CPLD-FPGA论坛

    1. OPENCORES.ORG这里提供非常多,非常好的PLD了内核,8051内核就可以在里面找到.进入后,选择project或者由http//www.opencores.org/browse.cgi ...

  10. Java反射机制在Spring IOC中的应用

    反射的定义: 反射是java语言的一个特性,它允程序在运行时(注意不是编译的时候)来进行自我检查并且对内部的成员进行操作.例如它允许一个java的类获取它所有的成员变量和方法并且显示出来. 反射机制的 ...