📄 txok.cpp
字号:
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#include "ctype.h"
#include "conio.h"
int count=0;
typedef struct
{
char name[30];
char num[30];
char adr[30];
}person;
person address[100];
int menu()//菜单;
{
int key;
system("cls");
printf("\t\t****************通讯录*****************\n\n");
printf("\t\t1.建立新的通讯录.\n");
printf("\t\t2.显示所有的联系人.\n");
printf("\t\t3.添加记录.\n");
printf("\t\t4.根据姓名查找.\n");
printf("\t\t5.根据地址查找.\n");
printf("\t\t6.删除记录.\n");
printf("\t\t7.按姓名排序.\n");
printf("\t\t8.从文件中读出数据.\n");
printf("\t\t9.将数据存入文件.\n");
printf("\t\t0.退出.\n");
printf("\t\t*****************************************\n\n");
printf("\t\t");
scanf("%d",&key);
return (key);
}
int creat(person address[],int count)//建立;
{
char n='y';
int i=0;
for(i=0;i<=100;i++)
{
if(n=='y')
{
printf("\t\t请输入姓名:");
scanf("%s",&address[i].name);
printf("\t\t请输入电话号码:");
scanf("%s",&address[i].num);
printf("\t\t请输入地址:");
scanf("%s",&address[i].adr);
count++;
}
else if(n!='y')
break;
printf("\t\t继续输入?(y/n)\n");
n=getch();
}
printf("建立成功!");
return (count);
}
void list(person address[],int count)//显示所有记录;
{
printf("\t------------------------------------------------------------\n"); /*格式头*/
printf("\tname telephone number address\n");
printf("\t------------------------------------------------------------\n");
int i=0;
for (i=0;i<count;i++)
printf("\t%-25s%-25s%-25s\n",address[i].name,address[i].num,address[i].adr);
system("pause");
}
int add(person address[],int count)//添加;
{
int a='y',i=0;
for(i=count;i<100;i++)
{
if(a=='y')
{
printf("\t\t请输入姓名:");
scanf("%s",&address[i].name);
printf("\t\t请输入电话号码:");
scanf("%s",&address[i].num);
printf("\t\t请输入地址:");
scanf("%s",&address[i].adr);
count++;
}
else break;
printf("\t\t继续添加?(y/n)\n");
a=getch();
}
printf("\t\t添加成功!\t");
system("pause");
return (count);
}
void seek_name(person address[],int count)//查找;
{
int i=0,number=0;
char ch[30];
printf("\t\t请输入您要查找的名字:");
scanf("%s",ch);
for(i=0;i<count;i++)
{
if (strcmp(ch,address[i].name)==0&&number==0)
{
printf("\t------------------------------------------------------------\n"); /*格式头*/
printf("\tname telephone number address\n");
printf("\t------------------------------------------------------------\n");
printf("\t%-25s%-25s%-25s\n",address[i].name,address[i].num,address[i].adr);
number++;
}
else if(strcmp(ch,address[i].name)==0&&number>0)
{
printf("\t%-25s%-25s%-25s\n",address[i].name,address[i].num,address[i].adr);
number++;
}
else continue;
}
if(number==0)
{
printf("\t\t\t");
printf("没有此人!\n");
}
printf("\t\t");
system("pause");
}
void seek_add(person address[],int count)//查找;
{
int i=0,number=0;
char ch[30];
printf("\t\t请输入您要查找的地址:");
scanf("%s",ch);
for(i=0;i<count;i++)
{
if (strcmp(ch,address[i].adr)==0&&number==0)
{
printf("\t------------------------------------------------------------\n"); /*格式头*/
printf("\tname telephone number address\n");
printf("\t------------------------------------------------------------\n");
printf("\t%-30s%-30s%-30s\n",address[i].name,address[i].num,address[i].adr);
number++;
}
else if(strcmp(ch,address[i].adr)==0&&number>0)
{
printf("\t%-30s%-30s%-30s\n",address[i].name,address[i].num,address[i].adr);
number++;
}
else continue;
}
if(number==0)
{
printf("\t\t\t");
printf("没有此地址!\n");
}
printf("\t\t");
system("pause");
}
int del(person address[],int count)//删除记录;
{
int i=0,j;
char namec[30];
printf("\t\t请输入您要删除的姓名:");
scanf("%s",namec);
while(strcmp(address[i].name,namec)!=0&&i<count)
i++;
for (j=i+1;j<count;j++)
{
strcpy(address[j-1].name,address[j].name);
strcpy(address[j-1].num,address[j].num);
strcpy(address[j-1].adr,address[j].adr);
}
printf("\t\t\t");
printf("删除成功!\n");
printf("\t\t\t");
count--;
system("pause");
return(count);
}
void sort_name(person address[],int count)//按姓名排序;
{
int i,j;
char t[30];
for(i=0;i<count;i++)
{
for(j=0;j<count;j++)
{
if(strcmp(address[i].name,address[j].name)<0)
{
strcpy(t,address[i].name);
strcpy(address[i].name,address[j].name);
strcpy(address[j].name,t);
strcpy(t,address[i].num);
strcpy(address[i].num,address[j].num);
strcpy(address[j].num,t);
strcpy(t,address[i].adr);
strcpy(address[i].adr,address[j].adr);
strcpy(address[j].adr,t);
}
else continue;
}
}
printf("\t\t\t");
printf("\t\t排续成功!\n");
system("pause");
}
int AddfromText(person address[],int count) //从文件中读入;
{
int i=0;
FILE *fp;
char filename[20];
printf("\t\t\t请输入文件名:");
scanf("\t\t\t%s",filename);
fp=fopen(filename,"rb");
if(fp==NULL)
{
printf("\t\t\tcann't open the file\n");
printf("\t\t\t");
system("pause");
}
fscanf(fp,"%d",&count);
while(i<count)
{
fscanf(fp,"%s%s%s",address[i].name,address[i].num,address[i].adr);
i++;
}
fclose(fp);
printf("\t\t\t读入成功!\n");
printf("\t\t\t");
system("pause");
return(count);
}
void WritetoText(person address[],int count) //将所有记录写入文件;
{
int i=0;
FILE *fp;
char filename[20];
printf("\t\t\t请输入文件名:");
scanf("\t\t\t%s",filename);
fp=fopen(filename,"w");
if(fp==NULL)
{
printf("\t\t\tcann't open the file\n");
system("pause");
return;
}
fprintf(fp,"%d\n",count);
while(i<count)
{
fprintf(fp,"%-30s%-30s%-30s\n",address[i].name,address[i].num,address[i].adr);
i++;
}
fclose(fp);
printf("\t\t\t写入成功!\n");
printf("\t\t\t");
system("pause");
}
void main()
{
int n;
for(;;)
{
n=menu();
switch(n)
{
case 1:count=creat(address,count);break;
case 2:list(address,count);break;
case 3:count=add(address,count);break;
case 4:seek_name(address,count);break;
case 5:seek_add(address,count);break;
case 6:count=del(address,count);break;
case 7:sort_name(address,count);break;
case 8:count=AddfromText(address,count);break;
case 9:WritetoText(address,count);break;
case 0:printf("\t\t\tHave a good luck! Bye bye!\n");
printf("\t\t\t");
exit(0);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -