int main()
在华蓥等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供成都做网站、网站制作 网站设计制作按需定制开发,公司网站建设,企业网站建设,品牌网站设计,网络营销推广,外贸网站制作,华蓥网站建设费用合理。
{
LinkQueue Q;
initAddressBook(Q);
int flag=0;
while(flag!=8)
{
printf("※※※※※主※※※※※菜※※※※※单※※※※※\n");
printf("※1、增加联系人 2、删除联系人 ※\n");
printf("※3、修改联系人 4、清空通讯录 ※\n");
printf("※5、查找联系人 6、按组显示 ※\n");
printf("※7、显示全部联系人 8、退出 ※\n");
printf("※※※※※※※※※※※※※※※※※※※※※※※\n");
printf("请输入编号(1-8):\n");
scanf("%d",flag);
if(flag1||flag8)
{
printf("输入错误请重新输入!\n");
continue;
}
else
{
switch(flag){
case 1:
if(enAddressBook(Q))
printf("增加联系人成功!\n");
else
printf("增加联系人失败!\n");
break;
case 2:
if(delPerson(Q))
printf("删除联系人成功!\n");
else
printf("联系人删除失败!\n");
break;
case 3:
if(update(Q))
printf("修改联系人成功!\n");
else
printf("修改联系人失败!\n");
break;
case 4:
if(clearAddressBook(Q))
printf("通讯录已清空!\n");
else
printf("通讯录清空失败!\n");
break;
case 5:
findByName(Q);
break;
case 6:
findByGroup(Q);
break;
case 7:
disAll(Q);
break;
case 8:
system("cls");
break;
}
}
}
printf("※※※※※感谢您使用本系统!※※※※※※\n");
return 0;
}
//初始化通讯录
void initAddressBook(LinkQueue Q)
{
Q.front=Q.rear=(QNode *)malloc(sizeof(QNode));
if(!Q.front)
exit(1);
else
Q.front-next=NULL;
}
//清空通讯录
bool clearAddressBook(LinkQueue Q)
{
system("cls");
while(addressBookLength(Q)!=0)
{
QNode *p;
p=Q.front-next;
Q.front-next=p-next;
if(p==Q.rear)
Q.rear=Q.front;
free(p);
}
return true;
}
//通讯录当前人数
int addressBookLength(LinkQueue Q)
{
int i=0;
QNode *p;
p=Q.front;
if(Q.front==Q.rear)
i=0;
else
{
while(p!=Q.rear)
{
p=p-next;
i++;
}
}
return i;
}
//删除联系人
bool delPerson(LinkQueue Q)
{
char _name[20];
system("cls");
printf("请输入要删除的联系人的姓名:\n");
scanf("%s",_name);
QNode *p,*q;
if(Q.front==Q.rear)
{
printf("通讯录为空!\n");
return false;
}
else
{
p=Q.front;
q=Q.front-next;
while(q!=Q.rear){
if(strcmp(q-name,_name)==0)
{
p-next=q-next;
free(q);//删除节点
return true;
}
else
{
p=p-next;
q=q-next;
}
}
if((strcmp(q-name,_name)==0))
{
free(q);
Q.front=Q.rear;
return true;
}
else
{
printf("无此联系人!\n");
return false;
}
}
}
//查找联系人
bool findByName(LinkQueue Q)
{
system("cls");
if(Q.front==Q.rear)
{
printf("手机中无联系人!\n");
return false;
}
else
{
char _name[20];
printf("请输入要查询的联系人姓名:\n");
scanf("%s",_name);
QNode *p;
p=Q.front-next;
while(p-next!=NULL)
{
if(strcmp(p-name,_name)==0)
{
printf("姓名:%s 号码:%s 分组:%s\n",p-name,p-tel,p-group);
return true;
}
p=p-next;
}
if(strcmp(p-name,_name)==0){
printf("姓名:%s 号码:%s 分组:%s\n",p-name,p-tel,p-group);
return true;
}
else
{
printf("查无此人!\n");
return false;
}
}
}
//按组显示联系人
bool findByGroup(LinkQueue Q)
{
system("cls");
if(Q.front==Q.rear)
{
printf("手机中无联系人!\n");
return false;
}
else
{
char _group[20];
printf("请输入要查询的分组:\n");
scanf("%s",_group);
QNode *p;
p=Q.front-next;
while(p-next!=NULL)
{
if(strcmp(p-group,_group)==0)
{
printf("姓名:%s 号码:%s \n",p-name,p-tel);
}
p=p-next;
}
if(strcmp(p-group,_group)==0){
printf("姓名:%s 号码:%s \n",p-name,p-tel);
return true;
}
else
{
printf("无此分组!\n");
return false;
}
}
}
//增加联系人
bool enAddressBook(LinkQueue Q)
{
system("cls");
QNode *p;
p=(QNode *)malloc(sizeof(QNode));
if(!p)
return false;
else
{
printf("请输入联系人姓名:\n");
scanf("%s",p-name);
printf("请输入联系人号码:\n");
scanf("%s",p-tel);
printf("请输入联系人分组:\n");
scanf("%s",p-group);
if(Q.front-next==NULL)
{
Q.front-next=p;
Q.rear=p;
Q.rear-next=NULL;
}
else
{
p-next=NULL;
Q.rear-next=p;
Q.rear=p;
}
return true;
}
}
//修改联系人
bool update(LinkQueue Q)
{
system("cls");
if(Q.front==Q.rear)
{
printf("手机中无联系人!\n");
return false;
}
else
{
char _name[20];
printf("请输入要修改的联系人姓名:\n");
scanf("%s",_name);
QNode *p;
p=Q.front-next;
while(p-next!=NULL)
{
if(strcmp(p-name,_name)==0)
{
printf("请输入新联系人姓名:\n");
scanf("%s",p-name);
printf("请输入新联系人号码:\n");
scanf("%s",p-tel);
printf("请输入新联系人分组:\n");
scanf("%s",p-group);
return true;
}
p=p-next;
}
if(strcmp(p-name,_name)==0){
printf("请输入新联系人姓名:\n");
scanf("%s",p-name);
printf("请输入新联系人号码:\n");
scanf("%s",p-tel);
printf("请输入新联系人分组:\n");
scanf("%s",p-group);
return true;
}
else
{
printf("查无此人!\n");
return false;
}
}
}
//显示所有联系人
void disAll(LinkQueue Q)
{
system("cls");
int i=0;
QNode *p;
p=Q.front-next;
if(Q.front==Q.rear)
printf("无联系人!\n");
else
{
printf(" 姓名 号码 分组\n");
while(p!=NULL){
printf("%15s %15s %15s\n",p-name,p-tel,p-group);
p=p-next;
}
}
}
以完成,成功。图如下,包括添加、查找、修改、删除、退出等 ,可以通过生成的txt文件查看结果
#includestdio.h
#includestring.h
#include stdlib.h
struct person
{
char name[8];
char tel[15];
char addr[50];
};
char filename[20]="txl.txt";
FILE *fp;
void output();
void search();
void append();
void modify();
void del();
void main( )
{
int m;
fp=fopen(filename,"w");
fprintf(fp,"%-10s%-20s%-50s\n","姓名","电话号码","住址");
fclose(fp);
while(1)
{
printf("\n\t\t*********欢迎使用通讯录信息管理系统*********\n\n");
printf("\n\t\t添加,请按1");
printf("\n\t\t查找,请按2");
printf("\n\t\t修改,请按3");
printf("\n\t\t删除,请按4");
printf("\n\t\t输出,请按5");
printf("\n\t\t退出,请按0\n");
printf("\n\t\t********************************************\n\n");
printf("Please select(0--5):");
scanf("%d",m);
if(m=0m=5)
{
switch(m)
{
case 1: append();
break;
case 2: search();
break;
case 3: modify();
break;
case 4: del();
break;
case 5: output();
break;
case 0: exit(0);
}
printf("\n\n操作完毕,请再次选择!");
}
else
printf("\n\n选择错误,请再次选择!");
}
}
/*输出模块output( ):输出通讯录中联系人通讯信息的子函数*/
void output()
{
struct person one;
if((fp=fopen(filename,"r"))==NULL)
{
printf("\n不能打开通讯录!");
exit(0);
}
printf("\n\n%20s\n","通 讯 录");
while(!feof(fp))
{
fscanf(fp,"%s%s%s\n",one.name,one.tel,one.addr);
printf("%-10s%-20s%-50s",one.name,one.tel,one.addr);
}
fclose(fp);
}
/*添加模块append( ):向通讯录中添加某人通讯信息的子函数*/
void append()
{
struct person one;
if((fp=fopen(filename,"a"))==NULL)
{
printf("\n不能打开通讯录!");
exit(0);
}
printf("\n请输入添加的姓名、电话号码及住址\n");
scanf("%s%s%s",one.name,one.tel,one.addr);
fprintf(fp,"%-10s%-20s%-50s\n",one.name,one.tel,one.addr);
fclose(fp);
}
/*查找模块search( ):在通讯录中查找某人通讯信息的子函数*/
void search()
{
int k=0;
char namekey[8];
struct person one;
printf("\n请输入姓名:");
scanf("%s",namekey);
if((fp=fopen(filename,"rb"))==NULL)
{
printf("\n不能打开通讯录!");
exit(0);
}
while(!feof(fp))
{
fscanf(fp,"%s%s%s\n",one.name,one.tel,one.addr);
if(!strcmp(namekey,one.name))
{
printf("\n\n已查到,记录为:");
printf("\n%-10s%-18s%-50s",one.name,one.tel,one.addr);
k=1;
}
}
if(!k)
printf("\n\n对不起,通讯簿中没有此人的记录。");
fclose(fp);
}
/*修改模块modify( ):在通讯录中修改某人通讯信息的子函数*/
void modify()
{
int k=0;
long offset;
char namekey[8];
struct person one;
printf("\n请输入姓名:");
scanf("%s",namekey);
if((fp=fopen(filename,"r+"))==NULL)
{
printf("\n不能打开通讯录!");
exit(0);
}
while(!feof(fp))
{
offset=ftell(fp);
fscanf(fp,"%s%s%s\n",one.name,one.tel,one.addr);
if(!strcmp(namekey,one.name))
{
k=1;
break;
}
}
if(k)
{
printf("\n已查到,记录为:");
printf("\n%-10s%-18s%-50s",one.name,one.tel,one.addr);
printf("\n请输入新姓名、电话号码及住址:");
scanf("%s%s%s",one.name,one.tel,one.addr);
fseek(fp,offset,SEEK_SET);
/*printf("%ld",ftell(fp));*/
fprintf(fp,"%-10s%-20s%-50s\n",one.name,one.tel,one.addr);
}
else
printf("\n对不起,通讯录中没有此人的记录。");
fclose(fp);
}
/*删除模块delete( ):在通讯录中删除某人通讯信息的子函数*/
void del()
{
int m,k=0;
long offset1;
char namekey[8];
struct person one;
printf("\n请输入姓名:");
scanf("%s",namekey);
if((fp=fopen(filename,"r+"))==NULL)
{
printf("\n不能打开通讯录!");
exit(0);
}
while(!feof(fp))
{
offset1=ftell(fp);
fscanf(fp,"%s%s%s\n",one.name,one.tel,one.addr);
if(!strcmp(namekey,one.name))
{
k=1;
if(k)
{
printf("\n已查到,记录为");
printf("\n%-10s%-18s%-50s",one.name,one.tel,one.addr);
printf("\n确实要删除,按1;不删除,按0:");
scanf("%d",m);
if(m)
{
fseek(fp,offset1,SEEK_SET);//fseek函数用来改变文件指针位置,SEEK_SET为0,表示文件开头;为1,表示当前位置;为2表示文件结尾;
fprintf(fp,"%-10s%-20s%-50s\n","","","");
}
else
printf("\n您已取消对该通讯人信息的修改。\n");
fclose(fp);
}
return;
}
}
if(!k)printf("对不起,通讯录中没有此人\n");
}
#include#include#include#defineM500structMan//定义结构体{charName[8];//名字charDepart[20];//工作单位charQQ[10];//QQ号码charEmail[30];//邮箱};voidtext();//相当于主函数voidtext1();//菜单输出chartext2();//开始的版权信息输出intDelete(ManMan[],intSize);//删除信息voidDisplay(Manman[]);//显示所有记录voidgetch();intInsert(ManMan[],intSize);//插入模块voidModify(ManMan[],intSize);//修改模块intS_asname(ManMan[],intSize,intn);//查找信息voidS_asqq(ManMan[],intSize);//按QQ查找模块intSave(ManMan[],intSize);//把数据写入文件intScan(ManMan[]);//从文本中读取数据voidmain()//主函数{text();//(这边纯属蛋疼,最多加长系统运行时间)}voidtext()//相当于主函数{Manman[M];//500人的结构体数组charcontrol=0;//菜单选择控制变量intsize=0;//保存当前已有的记录if(text2())//这边可不要if,直接调用text2,显示版权信息。{size=Scan(man);//判断文件是否存在while(1)//菜单生成{text1();//菜单显示scanf(