×

通讯录管理系统

通讯录管理系统(如何用C语言实现通讯录系统)

admin admin 发表于2024-06-09 04:59:58 浏览25 评论0

抢沙发发表评论

大家好,通讯录管理系统相信很多的网友都不是很明白,包括如何用C语言实现通讯录系统也是一样,不过没有关系,接下来就来为大家分享关于通讯录管理系统和如何用C语言实现通讯录系统的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开始吧!

本文目录

如何用C语言实现通讯录系统

通讯录至少应该有以下数据项:姓名,地址,手机,邮编,E-mail。

对通讯录应该包含有以下操作:向通讯录中添加信息,在通讯录中按姓名查找个人信息,删除通讯录中的个人信息,按不同数据项排序后列表输出通讯录中所有人的信息。通讯录中记录的数量可以是有限制的。

程序的主界面如下:

通讯录

1. 添加

2. 查询

3. 删除

4. 排序

5. 全部输出

0. 退出

#include 《iostream》

#include 《string》

#include "address.h"

#include "addressList.h"

#include "addressBook.h"

using namespace std;

int main()

{

new AddressBook; //开启通信录

return 0;

}

ostream& operator《《(ostream& os, const RecordList& c_rl)

{

RecordList::const_iterator it;

RecordList::const_iterator it_end =c_rl.end();

for (it=c_rl.begin();it!=it_end; it++)

{

os 《《 (*it)-》name 《《 ’\n’ 《《 (*it)-》tel 《《 ’\n’;

}

return os;

}

istream& operator》》 (istream& is, RecordList& rl)

{

Record* rec;

string name;

while (true)

{

//注意这里使用的是全局的getline()函数,而不是istream的成员函

//数.全局的getling()函数将从istream中取出最后一个分隔符,

//而istream的成员函数getline则不会

getline(is,name);

if (name =="")

break;

rec = new Record;

rec-》name=name;

getline(is,rec-》tel );

rl.push_back(rec);

}

return is;

}

#include《stdlib.h》

#include《fstream》

#include "addressBook.h"

using namespace std;

AddressBook::AddressBook()

{

isModified = false;

start();

}

AddressBook::~AddressBook()

{

}

//功能:显示欢迎画面,并开始进行用户交互处理

void AddressBook::start()

{

cout《《"\n"

《《"\t******************************\n"

《《"\t* 这是一个 *\n"

《《"\t* 简单的通信录程序 *\n"

《《"\t* 可以对通信录进行简单管理 *\n"

《《"\t* 欢迎使用通信录 *\n"

《《"\t******************************\n"

《《"\n";

handleMenu();

}

//功能:显示通信录菜单,返回用户选择的选项

//返回:用户选择的选项,是1-9之间的一个字符

char AddressBook::menuSelect()

{

cout《《"\n"

《《"1.显示记录\n"

《《"2.查询记录\n"

《《"3.增加记录\n"

《《"4.删除记录\n"

《《"5.保存记录\n"

《《"6.读取记录\n"

《《"7.新建记录\n"

《《"8.结束运行\n"

《《"\n左边数字对应功能选择,请选1-8:";

char choice;

while(true)

{

cin.getline(choice,2);

if(choice》’8’)

cout《《"\n输入错误,重选1-8:";

else

break;

}

return choice;

}

//功能:根据用户选择的项目调用相应的处理函数

void AddressBook::handleMenu()

{

while(true)

{

switch(menuSelect())

{

case ’1’:

displayRecords();

break;

case ’2’:

queryRecord();

break;

.......

//功能:打印用于显示记录信息时的表头

void AddressBook::dispTable()

{

}

//功能:显示通信录中的所有记录

void AddressBook::displayRecords()

{

}

//功能:首先检查通信录是否已保存,然后清空当前通信录中所有记录

//注意:该函数覆盖了基类中的函数

void AddressBook::clear()

{

}

//功能:查询指定记录

void AddressBook::queryRecord()

{

//功能:向当前通信录追加新的记录

//注意:该函数重载了基类中的函数

void AddressBook::addRecord()

{

}

/*

//说明:如果使用string 类,效果更好。下面是实现本功能的程序代码:

while(true)

{

//输入新记录

string name;

cout《《"姓名:";

getline(cin,name);

//如果输入的姓名为“0”,则结束添加记录的操作

if(name=="0")

break;

Record* rec=new Record;

rec-》name=name;

cout《《"电话:";

getline(cin,rec-》tel);

//将新记录加入链表

AddressList::addRecord(rec);

}

//同理,下面的成员函数removeRecord()中的判断,可以使用如下替代方法:

string str;

getline(cin,str);

while(true)

{

if(str!=’2’)

{

cout《《"输入错误,重选1-2:";

getline(cin,str);

}

else

break;

}

*/

//功能:从当前通信录移除指定的记录

//注意:该函数重载了基类中的函数

void AddressBook::removeRecord()

{

if(empty())

{

cout《《"通信录已空,退出删除操作!"《《endl;

return;

}

//选择获取需要删除的记录的方式

cout《《"可以通过姓名或电话删除记录\n"

《《"1.通过姓名\n"

《《"2.通过电话\n";

char choice;

cin.getline(choice,2);

while(true)

{

if(choice!=’2’)

{

cout《《"输入错误,重选1-2:";

cin.getline(choice,2);

}

else

break;

}

int type=static_cast《int》(choice)-48;

//输入需要匹配的字符串

if(type==1)

cout《《"请输入姓名:"《《flush;

else

cout《《"请输入电话:"《《flush;

char pattern;

cin.getline(pattern,20);

int deletedCount=0;

/到匹配的记录

Iterator it=findRecord(pattern,type,first());

Iterator it_end=pastEnd();

while(it!=it_end)

{

cout《《"找到一条匹配的记录:\n";

dispTable();

cout《《(*it)-》name《《"\t\t"《《(*it)-》tel《《"\n";

cout《《"确定要删除这条记录吗?";

cin.getline(choice,2);

//删除这条记录

if(choice!=’N’)

{

it=AddressList::removeRecord(it);

deletedCount++;

}

//取下一条匹配的记录

if(it!=it_end)

it=findRecord(pattern,type,++it);

}

cout《《"一共删除了"《《deletedCount《《"条记录\n"

《《"现在还有"《《size()《《"条记录"《《endl;

if(deletedCount!=0)

isModified=false;

}

//功能:将通信录保存至指定文件

//注意:该函数重载了基类中的函数

void AddressBook::saveRecords()

{

if(empty())

{

cout《《"没有记录可存!"《《endl;

return;

}

//因为下面的程序中使用string类的成员函数,所以需要进行一次转换

string fname;

char name;

cout《《"请输入要存在的文件名(直接回车选择文件sname):";

cin.getline(name,16);

fname=name;

if(fname.empty())

fname="sname";

ofstream of(fname.c_str(),ios_base::out);

if(!of)

{

cout《《"不能存入文件!"《《endl;

return;

}

AddressList::saveRecords(of);

of.close();

cout《《size()《《"条记录已经存入文件,请继续操作。"《《endl;

isModified=false;

}

//功能:从指定文件读取记录追加到当前通信录末尾

//注意:该函数重载了基类中的函数

void AddressBook::loadRecords()

{

}

void AddressBook::quit()

{

}

#ifndef H_ADDRESSBOOK_H_NNN

#define H_ADDRESSBOOK_H_NNN

#include "addressList.h"

//处理通信录操作的面向用户使用的类,包含所有功能的用户界面及用户交互的实现

class AddressBook :public AddressList

{

protected:

bool isModified; //通信录是否已被修改还未保存

public:

AddressBook();

virtual ~AddressBook();

//开始通信录的用户界面操作

virtual void start();

//菜单处理函数

virtual void handleMenu();

//显示记录

virtual void displayRecords();

//查询记录

virtual void queryRecord();

//增加记录

virtual void addRecord();

//删除记录

virtual void removeRecord();

//保存记录

virtual void saveRecords();

//读取记录

virtual void loadRecords();

//结束程序

virtual void quit();

//清空当前通信录

virtual void clear();

protected:

//菜单选择函数

char menuSelect();

//显示表头

void dispTable();

};

#endif //H_ADDRESSBOOK_HZ-NNN

#include "addressList.h"

AddressList::~AddressList()

{

recList.clear();

}

//功能:向通信录中添加新的记录

//参数:rec,指向新记录的指针

void AddressList::addRecord (Record* rec)

{

if (rec !=NULL)

{

recList.push_back(rec);

}

}

//功能:从通讯录中删除一个记录

//参数:it,指向欲删除记录的迭代器

//注意:it,应是可提领的迭代器,可以通过findRecord()获得

AddressList::Iterator AddressList::removeRecord(AddressList::Iterator it)

{

return recList.erase(it);

}

//功能:从通信录中寻找一个记录

//参数:pattern,欲寻找的记录的指定域与pattern相等

// type,为1表示欲寻找记录的名称(name)与pattern相等;

// 为2表示欲寻找记录的电弧(tel)与(pattern)相等。

// from,从from开始寻找匹配的记录。

//返回:若找到了则返回的迭代器指向第一个匹配记录的迭代器,

// 若找不到则返回的迭代器等于pastEnd()的返回值。

//注意:from应是可提领的迭代器。

// 第一次调用可以用first(),之后使用上一次findRecord()的返回值增1,

// 直到返回pastEnd(),便可以获得所有匹配的记录。

AddressList::Iterator AddressList::findRecord(string pattern,int type,AddressList::Iterator from)

{

Iterator it;

Iterator it_end=recList.end();

for (it=from; it!=it_end; it++)

{

if ((type==1 && (*it)-》name==pattern)||(type==2 && (*it)-》tel==pattern))

break;

}

return it;

}

//功能:将通信录保存到输出流中

//参数:os.指定的输出流

void AddressList::saveRecords(ostream &os)

{

os 《《 recList;

}

//功能:从输入流中读入数据并追加到当前通信录的末尾

//参数:is,指定的输入流

//返回:读入的记录数

int AddressList::loadRecords(istream &is)

{

int ori =size();

is 》》 recList;

return size()-ori;

}

#ifndef H_ADDRESSLIST_H_AAA

#define H_ADDRESSLIST_H_AAA

#include 《iostream》

#include 《string》

#include "address.h"

using namespace std;

//处理通信录操作的底层类,包括增加记录、删

//除记录、查询记录以及保存和读取记录的函数,

//该类不涉及任何关于用户界面的操作

class AddressList

{

protected:

RecordList recList;// 使用对象成员作为数据成员

public:

typedef RecordList::iterator Iterator;

//向通信录中添加新的记录

virtual void addRecord(Record* rec);

//从通信录中删除一个记录

virtual Iterator removeRecord(Iterator it);

//从通讯录中寻找一个记录

virtual Iterator findRecord(string pattern,int type,Iterator from);

//将通信录保存到输出流中

virtual void saveRecords(ostream& os);

//从输入流中读入数据并追加到当前通信录的末尾

virtual int loadRecords(istream& is);

virtual ~AddressList();

//获得通信录中存储的记录数

const int size() const {return (int)recList.size();}

//通信录是否为空

const bool empty() const {return recList.empty();}

//清除通信录

virtual void clear() {recList.clear();}

//获得通信录的第一条记录

Iterator first(){return recList.begin();}

//获得通信录超过最后一个记录之后的迭代器

Iterator pastEnd() {return recList.end();}

};

#endif //H_ADDRESSLIST_H_AAA

利用C++如何做个通讯录,包括添加通讯录,删除通讯录,显示,查找,存盘,退出

C++实现通讯录管理系统

本文实例为大家分享了C++通讯录管理系统的具体代码,供大家参考,具体内容如下

#include《iostream》

#include《string》

using namespace std;

#define MAX 1000

struct Person

{

string m_Name;

int m_Sex;

int m_Age;

string m_Phone;

string m_Addr;

};

struct Addressbooks

{

struct Person personArray;

int m_Size;

};

void addPerson(Addressbooks * abs)

{

if (abs-》m_Size == MAX)

{

cout 《《 "通讯录已满,无法添加!" 《《 endl;

return;

}

else

{

string name;

cout 《《 "请输入姓名:" 《《 endl;

cin 》》 name;

abs-》personArray.m_Name = name;

cout 《《 "请输入性别:" 《《 endl;

cout 《《 "1 --- 男" 《《 endl;

cout 《《 "2 --- 女" 《《 endl;

int sex = 0;

while (true)

{

cin 》》 sex;

if (sex == 1 || sex == 2)

{

abs-》personArray.m_Sex = sex;

break;

}

cout 《《 "输入有误,请重新输入!" 《《 endl;

}

cout 《《 "请输入年龄:" 《《 endl;

int age = 0;

cin 》》 age;

abs-》personArray.m_Age = age;

cout 《《 "请输入联系电话:" 《《 endl;

string phone;

cin 》》 phone;

abs-》personArray.m_Phone = phone;

cout 《《 "请输入家庭住址:" 《《 endl;

string address;

cin 》》 address;

abs-》personArray.m_Addr = address;

abs-》m_Size++;

cout 《《 "添加成功" 《《 endl;

system("pause");

system("cls");

}

}

void showPerson(Addressbooks * abs)

{

if (abs-》m_Size == 0)

{

cout 《《 "当前记录为空" 《《 endl;

}

else

{

for (int i = 0; i 《 abs-》m_Size; i++)

{

cout 《《 "姓名:" 《《 abs-》personArray.m_Name 《《 "\t";

cout 《《 "性别:" 《《 (abs-》personArray.m_Sex == 1 ? "男":"女" ) 《《 "\t";

cout 《《 "年龄:" 《《 abs-》personArray.m_Age 《《 "\t";

cout 《《 "电话:" 《《 abs-》personArray.m_Phone 《《 "\t";

cout 《《 "住址:" 《《 abs-》personArray.m_Addr 《《 endl;

}

}

system("pause");

system("cls");

}

int isExist(Addressbooks * abs, string name)

{

for (int i = 0; i 《 abs-》m_Size; i++)

{

if (abs-》personArray.m_Name == name)

{

return i;

}

}

return -1; //没找到

}

//删除联系人

void deletePerson(Addressbooks * abs)

{

cout 《《 "请输入要删除的联系人:" 《《 endl;

string name;

cin 》》 name;

int ret = isExist(abs, name);

if (ret != -1)

{

for (int i = ret; i 《 abs-》m_Size; i++)

{

abs-》personArray;

}

abs-》m_Size--;

cout 《《 "删除成功!" 《《 endl;

}

system("pause");

system("cls");

}

//查找联系人

void findPerson(Addressbooks * abs)

{

cout 《《 "请输入要查找的联系人:" 《《 endl;

string name;

cin 》》 name;

int ret = isExist(abs, name);

if (ret != -1)

{

cout 《《 "姓名:" 《《 abs-》personArray.m_Name 《《 "\t";

cout 《《 "性别:" 《《 (abs-》personArray.m_Sex == 1 ? "男" : "女") 《《 "\t";

cout 《《 "年龄:" 《《 abs-》personArray.m_Age 《《 "\t";

cout 《《 "电话:" 《《 abs-》personArray.m_Phone 《《 "\t";

cout 《《 "住址:" 《《 abs-》personArray.m_Addr 《《 endl;

}

else

{

cout 《《 "查无此人" 《《 endl;

}

system("pause");

system("cls");

}

//修改联系人

void modifyPerson(Addressbooks * abs)

{

cout 《《 "请输入要修改的联系人:" 《《 endl;

string name;

cin 》》 name;

int ret = isExist(abs, name);

if (ret != -1)

{

string name;

cout 《《 "请输入姓名:" 《《 endl;

cin 》》 name;

abs-》personArray.m_Name = name;

cout 《《 "请输入性别:" 《《 endl;

cout 《《 "1 --- 男" 《《 endl;

cout 《《 "2 --- 女" 《《 endl;

int sex = 0;

while (true)

{

cin 》》 sex;

if (sex == 1 || sex == 2)

{

abs-》personArray.m_Sex = sex;

break;

}

cout 《《 "输入有误,请重新输入!" 《《 endl;

}

cout 《《 "请输入年龄:" 《《 endl;

int age = 0;

cin 》》 age;

abs-》personArray.m_Age = age;

cout 《《 "请输入联系电话:" 《《 endl;

string phone;

cin 》》 phone;

abs-》personArray.m_Phone = phone;

cout 《《 "请输入家庭住址:" 《《 endl;

string address;

cin 》》 address;

abs-》personArray.m_Addr = address;

cout 《《 "修改成功" 《《 endl;

}

else

{

cout 《《 "查无此人" 《《 endl;

}

system("pause");

system("cls");

}

//清空联系人

void cleanPerson(Addressbooks * abs)

{

abs-》m_Size = 0;

cout 《《 "通讯录已清空" 《《 endl;

system("pause");

system("cls");

}

//显示菜单

void showMenu()

{

cout 《《 "*************************" 《《 endl;

cout 《《 "***** 1、添加联系人 *****" 《《 endl;

cout 《《 "***** 2、显示联系人 *****" 《《 endl;

cout 《《 "***** 3、删除联系人 *****" 《《 endl;

cout 《《 "***** 4、查找联系人 *****" 《《 endl;

cout 《《 "***** 5、修改联系人 *****" 《《 endl;

cout 《《 "***** 6、清空联系人 *****" 《《 endl;

cout 《《 "***** 0、退出通讯录 *****" 《《 endl;

cout 《《 "*************************" 《《 endl;

}

int main()

{

Addressbooks abs;

abs.m_Size = 0;

int select = 0;

while (true)

{

showMenu();

cin 》》 select;

switch (select)

{

case 1: //添加联系人

addPerson(&abs);

break;

case 2: //显示联系人

showPerson(&abs);

break;

case 3: //删除联系人

/*{

cout 《《 "请输入删除联系人姓名:" 《《 endl;

string name;

cin 》》 name;

if (isExist(&abs, name) == -1)

{

cout 《《 "查无此人" 《《 endl;

}

else

{

cout 《《 "找到此人" 《《 endl;

}

}*/

deletePerson(&abs);

break;

case 4: //查找联系人

findPerson(&abs);

break;

case 5: //修改联系人

modifyPerson(&abs);

break;

case 6: //清空联系人

cleanPerson(&abs);

break;

case 0:

cout 《《 "欢迎下次使用" 《《 endl;

system("pause");

return 0;

break;

default:

break;

}

}

system("pause");

return 0;

}

用C语言编写一个通讯录管理系统

C语言编写一个通讯录管理系统的源代码如下:

#include《stdio.h》

#include《string.h》

#include《stdlib.h》

/*定义保存通迅录的信息*/

structfriends

{

charname;/*名字*/

charprovince;/*省份*/

charcity;/*所在城市*/

charnation;/*民族*/

charsex;/*性别M/F*/

intage;/*年龄*/

}

扩展资料

1、在C++中应该使用inline内连函数替代宏调用,这样既可达到宏调用的目的,又避免了宏调用的弊端。

2、在C语言两个函数的名称不能相同,否则会导致编译错误。在C++中,函数名相同而参数不同的两个函数被解释为重载。

3、在大型程序中,使函数名易于管理和使用,不必绞尽脑汁地去处理函数名。

通讯录管理系统

我这里有一个,你看看吧,满意的给分哦(在visual c++6.0上运行)#include《stdlib.h》 #include《string.h》 /*使用字符串函数*/#include《conio.h》 /*使用通过控制台进行数据输入和数据输出的函数*/#include《stdio.h》#include《dos.h》 /*使用DOS函数*/int i; /*定义一个全局变量i*/struct addr /*定义通讯地址结构体*/{ char post_num; /*邮编*/ char addr; /*家庭地址*/};struct birth /*定义出生年月结构体*/{ int year; /*年份*/ int month; /*月份*/ int day; /*日期*/};struct record1 /*定义电子通讯录结构体*/{ int number; /*序号*/ char name; /*姓名*/ char sex; /*性别*/ struct birth birth; /*出生年月*/ struct addr addr; /*通信地址*/ char telephone; /*联系电话*/}records;FILE *fp; /*定义指向file类型结构体的指针变量*/void Data_Load() /*定义载入数据函数*/{ int j; long k; fp=fopen("record.txt","r+t"); /*打开文件record.txt,进行读写*/ if(fp!=NULL) /*如果文件不为空*/ { for(i=1;i《50;i++) { j=fgetc(fp); /*从"records.txt"文件读入整型数字*/ if(j==EOF) /*判断是否到了文件尾*/ return; /*如果到了结尾,返回*/ k=i-1; fseek(fp,k*sizeof(struct record1),SEEK_SET); /*将位置指针移到record1结构体所含字节的第k倍个字节处*/ fread(&records,sizeof(struct record1),1,fp); /*读取一条记录*/ } } else { fp=fopen("record.txt","w"); /*打开文件record.txt,只写*/ i=1; }}void Data_Show(int j) /*定义显示数据函数*/{printf("\n\n\tNo:%3d\n",records.number); /*序号*/printf("\n\tname:%2s\n",records.name); /*姓名*/ printf("\n\tbirthday (y/m/d):%4d%2d%2d", records.birth.month, records.birth.day); /*打印第j个成员的出生年月日*/ printf("\n\tpost code:%-10s",records.addr.post_num); /*邮编*/ printf("\n\taddress:%-40s",records.addr.addr); /*家庭地址*/ printf("\n\tphone%-13s",records.telephone); /*联系电话*/}void Data_Input(int j) /*定义添加数据函数*/{ fflush(stdin); /*清空输入缓冲区*/ records.number=j; printf("\n\n\n\tinputNo %d ",j); printf("\n\tname:"); /*输入姓名*/ scanf("%s",records.name); fflush(stdin); /*清空输入缓冲区*/ printf("\tsex(m/f):"); /*输入性别*/ scanf("%c",&records.sex); printf("\t---birthday---"); /*输入出生年月*/ printf("\n\tyear:"); scanf("%d",&records.birth.year); printf("\tmonth:"); scanf("%d",&records.birth.month); printf("\tday:"); scanf("%d",&records.birth.day); printf("\tpost code:"); /*输入邮编*/ scanf("%s",records.addr.post_num); printf("\taddress:"); /*输入家庭地址*/ scanf("%s",records.addr.addr); printf("\tphone:"); /*输入联系电话*/ scanf("%s",records.telephone);}void Data_Save() /*定义保存函数*/{ int j; fp=fopen("record.txt","w"); /*打开文件record.txt,只写*/ for(j=1;j《=i;j++) { fwrite(&records,sizeof(struct record1),1,fp); /*将结构体变量records的确定个数字节输入到record.txt文件中,个数为结构体friend1所含字节数*/ }}void main() /*主函数*/{ int j,k; char ch; char search_name; /*定义字符串变量*/ Data_Load(); /*声明载入数据函数*/ i--; do { printf("********************************* MENU ***************************************\n"); printf("------------------------! WELLCOME TO THE SYSTEM !------------------------------"); printf("\n*\tSelect Function: *"); printf("*\t1.Add New *"); printf("*\t2.View the data *"); printf("*\t3.Delete *"); printf("*\t4.Search *"); printf("*\t5.Insert *"); printf("*\t6.Save and quit *"); printf("*\t7.Quit *"); printf("\n******************************** MENU ****************************************\n"); printf("\tPlease choose the option you need:"); ch=getche(); /*输入字符*/ switch(ch) { case ’1’: { int p; printf("\n\tPlease input the number of people you want to add:"); scanf("%d",&p);/*增加记录*/ printf("\tPlease press ENTER again"); while(getch()!=0x1b&&i《p) { i++; Data_Input(i); printf("Please press Enter again to continue\n"); } if(i==p)printf("\n\tThe data is full\n"); } /*记录完后显示通讯录已满*/ break; case ’2’: j=1; /*打印所有记录*/ while(getch()!=0x1b&&j《=i) Data_Show(j++); /*声明打印数据函数*/ if(j》i) printf("\n\tThe system is end\n"); /*显示记录末尾*/ break; case ’3’: /*删除通讯录中的记录*/ if(i《1) { printf("\n\tno record\n"); /*显示无记录*/ break; } printf("\n\tplease input the number you want to delect:"); scanf("%d",&k); printf("\tsucceed!\n"); for(j=k;j《i;j++) /*将删除位置后的元素顺序前移,即后一数据复制到前一位置,循环操作*/ { strcpy(records.name); records.sex; records.birth.year; records.birth.month; records.birth.day; strcpy(records.addr.post_num); strcpy(records.addr.addr); strcpy(records.telephone); } i--; /*元素总数减1*/ break; case ’4’: /*通讯录搜索功能*/ printf("\n\tPlease input the name:"); /*输入名字*/ scanf("%s", search_name); /*获得名字到指针型字符串变量*/ for(j=1;j《=i;j++) { if(strcmp(search_name,records.name)==0) /*比较字符串,即查看是否与记录中名字相同*/ { Data_Show(j); printf("\n"); /*搜索成功,打印记录结束循环*/ break; } } if(j》i) /*搜索失败*/ printf("\n\tNo Record "); /*显示无此记录*/ break; case ’5’: printf("\n\tInsert No:"); /*录入插入位置*/ scanf("%d",&k); for(j=k+1;j《i;j++) /*将插入位置后的元素顺序后移,即将其复制到后一位置,循环操作*/ { strcpy(records.name); records.sex; records.birth.year; records.birth.month; records.birth.day; strcpy(records.addr.post_num); strcpy(records.addr.addr); strcpy(records.telephone); } Data_Input(k); /*声明增加数据函数*/ i++;/*将记录数目加一*/ break; case ’6’: Data_Save(); printf("\n"); /*声明保存函数*/ exit(0); break; /*保存后退出*/ case ’7’: printf("\n\tsave or not?:(y/n)"); ch=getch(); /*获得输入字符*/ if(ch==’y’) Data_Save(); fclose(fp); /*关闭record.txt文件*/ exit(0); /*退出程序*/ default: printf("Please choose1-4\n"); /*输入的如果不是数字1-4,让其重新输入*/ }}while(1); /*每次都从第一个功能开始,循环操作*/}希望对你能有所帮助。

c语言编程通讯录管理系统

#include《stdio.h》#include《string.h》#include《stdlib.h》#include《conio.h》#define header1 "|---------------------电话簿-----------------------|\n"#define header2 "| num | name | phonenum | address |\n"#define header3 "|-------|----------|---------------|---------------|\n"#define end "|----------------------结束------------------------|"#define N 100 typedef struct tele{int num;char name;char phonenum;char address;}telebook;void menu(){system("cls");system("color 1F");printf("\n\n\n");/*输出主菜单*/printf("\t\t|* **** 欢迎进入电话薄管理系统! **** *|\n");printf("\t\t|********************menu********************|\n");printf("\t\t| |\n");printf("\t\t| 1 增加 2 读取 |\n");printf("\t\t| |\n");printf("\t\t| 3 查找 4 修改 |\n");printf("\t\t| |\n");printf("\t\t| 5 删除 6 排序 |\n");printf("\t\t| |\n");printf("\t\t| 0 退出 |\n");printf("\t\t|********************************************|\n");}void printheader() /*输出菜单头*/{printf(header1);printf(header2);printf(header3);}int add(telebook temp){ int i;int m=0; FILE *fp; system("cls"); if((fp=fopen("D:\\rex.txt","ab+"))==NULL) { printf("打开文件有误!"); exit(0); } printf("每次输入一百个人的信息!\n"); printf("如果输入0推出输入!\n"); for(i=m;i《(100+m);i++) { printf("num:"); scanf("%d",&temp.num); if(temp.num==0) break; printf("name:"); scanf("%s",&temp.name); printf("phonenum:"); scanf("%s",&temp.phonenum); printf("address:"); scanf("%s",&temp.address); fwrite(&temp,sizeof(struct tele),1,fp); } m+=100; fclose(fp); system("cls"); return 0;}int read(telebook temp){int count,i;FILE *fp;system("cls");if((fp=fopen("D:\\rex.txt","ab+"))==NULL){printf("打开文件有误!");exit(0);}printheader();for(count=0;fread(&temp,sizeof(struct tele),1,fp)==1;count++);/*读取文件内信息的个数。*/if(count==0)printf("\n\n\n\t\t文件内没有信息!\n\n\n");for(i=0;i《count;i++)/*读取文件内的信息*/printf("|%-7d|%-10s|%-15s|%-15s|\n",temp.address);printf(end);fclose(fp);return 0;}int find1(telebook temp)/*电话号码查询*/{int i,count,t=0 ;char n;FILE *fp;system("cls");read(temp);printf("\n");if((fp=fopen("D:\\rex.txt","ab+"))==NULL){printf("打开文件有误!");exit(0);}printf("输入要查找的号码:");scanf("%s",n);printf("\n\n");printheader();getchar();for(count=0;fread(&temp,sizeof(struct tele),1,fp)==1;count++);/*读取文件内信息的个数。*/for(i=0;i《count;i++){if(strcmp(temp.phonenum,n)==0){t=1;printf("|%-7d|%-10s|%-15s|%-15s|\n",temp.address);/*输出查询到的信息*/}}if(t==0){printf("\a\n\n\t\t没有要查找的信息..........!\n\n\n");printf(end);return 0;}printf(end);fclose(fp);return 0;}int find2(telebook temp)/*姓名查询*/{int i,count ,t=0;char a;FILE *fp;system("cls");read(temp);printf("\n");if((fp=fopen("D:\\rex.txt","ab+"))==NULL){printf("打开文件有误!");exit(0);}printf("输入要查找的名字:");scanf("%s",a);getchar();printf("\n\n");printheader();for(count=0;fread(&temp,sizeof(struct tele),1,fp)==1;count++);/*读取文件内信息的个数。*/for(i=0;i《count;i++){if(strcmp(temp.name,a)==0){t=1;printf("|%-7d|%-10s|%-15s|%-15s|\n",temp.address);/*输出查询到的信息*/}}if(t==0){printf("\a\n\n\t\t没有要查找的信息..............!\n\n\n");printf(end);return 0;}printf(end);fclose(fp);return 0;}void find(){int n;telebook message1;system("cls");system("color 4F");printf("\n");while(1) { /*输出查找函数主菜单*/printf("\n\n\n\n"); printf("|-------查找功能------|\n");printf("| |\n");printf("| 1 按电话号码查找 |\n");printf("| |\n");printf("| 2 按姓名查找 |\n");printf("| |\n");printf("| 0 退出 |\n");printf("| |\n");printf("|---------结束--------|\n");printf("输入您的查找方式:");scanf("%d",&n);switch(n){case 1:find1(message1);break;case 2:find2(message1);break;case 0:return;break;}getchar();system("cls");}}int change(telebook temp){int i,count,t=0;FILE *fp;struct tele ne;system("cls");read(temp);printf("\n");printf("按序号修改\n");if((fp=fopen("D:\\rex.txt","ab+"))==NULL){printf("打开文件有误!");exit(0);}printf("输入新内容:\n");printf("num:"); scanf("%d",≠.num); printf("name:"); scanf("%s",≠.name); printf("phonenum:"); scanf("%s",≠.phonenum); printf("address:"); scanf("%s",≠.address); for(count=0;fread(&temp,sizeof(struct tele),1,fp)==1;count++);/*读取文件内信息的个数。*/ fclose(fp); for(i=0;i《count;i++) /*查找与新信息相同的信息*/ { if(temp.num) /*用新信息替换*/ { t=1; temp.num; strcpy(temp.name); strcpy(temp.phonenum); strcpy(temp.address); getchar(); printf("\n\n\t\t\t修改成功..........!"); } } if(t==0) { getchar(); printf("\n\n\t\t\t没有要修改的信息.........!"); return 0; } fp=fopen("D:\\rex.txt","wb+"); for(i=0;i《count;i++)fwrite(&temp,sizeof(struct tele),1,fp); fclose(fp); return 0;}int del(telebook temp){int i,j,count,t=0;char name1;FILE *fp;system("cls");read(temp);printf("\n");if((fp=fopen("D:\\rex.txt","ab+"))==NULL){printf("打开文件有误!");exit(0);}printf("输入要删除的人名:");scanf("%s",name1);for(count=0;fread(&temp,sizeof(struct tele),1,fp)==1;count++);/*读取文件内信息的个数。*/fclose(fp);for(i=0;i《count;i++) /*查找要删除的信息*/{if(strcmp(temp.name,name1)==0) {for(j=i;j《count;j++){/*删除找到的信息*/t=1;temp.num;strcpy(temp.name);strcpy(temp.phonenum);strcpy(temp.address);}count--;printf("\n\n\n\t\t\t删除成功..................!");}}if(t==0){getchar();printf("\a\n\n\n\t\t\t没有要删除的信息..................!");return 0;}getchar();fp=fopen("D:\\rex.txt","wb+");for(i=0;i《count;i++)fwrite(&temp,sizeof(struct tele),1,fp);fclose(fp);return 0;} int paixu(telebook temp){int i,j,count;telebook tmp;FILE *fp;system("cls");read(temp);printf("\n");fp=fopen("D:\\rex.txt","ab+");for(count=0;fread(&temp,sizeof(struct tele),1,fp)==1;count++);/*读取文件内信息的个数。*/fclose(fp);for(i=0;i《count-1;i++) /*对文件内的信息的序号进行排序*/{for(j=count-2;j》=i;j--)if(temp.num){tmp=temp;temp;temp=tmp;}}fp=fopen("D:\\rex.txt","wb+");for(i=0;i《count;i++)fwrite(&temp,sizeof(struct tele),1,fp);fclose(fp);read(temp);return 0;} void main(){telebook message;int n;while(1){ menu();printf("输入您的选择:");scanf("%d",&n);getchar();switch(n){case 1:add(message);break;case 2:read(message);break;case 3:find();break;case 4:change(message);break;case 5:del(message);break;case 6:paixu(message);break;case 0:exit(0);break;}getchar();}printf("press enter continue...............");}

通讯录管理系统是做什么的呢【回答要全面】

目前各种在线服务系统已经深刻的影响了人们的联系方式,使人们可以在远隔千里之外随时通讯。过去种种陈旧的联系方式,已经不能满足现代生活的需要。为此,本设计就为用户提供了一个管理联系方式的方法,本系统设计通过用ASP建立一个WEB平台管理联系方式信息,基于ASP的通讯录性能优良,查询方便,能及时、灵活的进行查询、修改、添加、删除等操作,实现了通讯簿的自动化。通过提供完善的通讯簿服务和规范通讯录的管理,可以达到增进人们交流感情。本文介绍了通讯录管理系统的基本设计方法,阐述了整个应用系统的设计思路,并对各部分设计进行了详细的分析,最终达到一个完整的设计方案。最后根据设计的系统进行调试,以便保证系统的可靠性与稳定性。

关于通讯录管理系统,如何用C语言实现通讯录系统的介绍到此结束,希望对大家有所帮助。