本文目录
- 如何用C语言实现通讯录系统
- 利用C++如何做个通讯录,包括添加通讯录,删除通讯录,显示,查找,存盘,退出
- 用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的通讯录性能优良,查询方便,能及时、灵活的进行查询、修改、添加、删除等操作,实现了通讯簿的自动化。通过提供完善的通讯簿服务和规范通讯录的管理,可以达到增进人们交流感情。本文介绍了通讯录管理系统的基本设计方法,阐述了整个应用系统的设计思路,并对各部分设计进行了详细的分析,最终达到一个完整的设计方案。最后根据设计的系统进行调试,以便保证系统的可靠性与稳定性。