c语言通讯录管理代码,[C语言]通讯录管理 - 代码贴 - BCCN

/*通讯录管理*/

#include

#include

#include

#define M 50//记录最大值

intMenu_select();

typedef struct ElemType{

char name[20];

char tel[15];

char email[20];

char ad[15];

}ElemType;

/*录入初始记录*/

int Init(ElemType t[]){

int i,n;

printf("\n请输入要输入的记录数:\n");

scanf("%d",&n);

printf("开始输入记录:\n");

for(i=0;i

printf("第%d条记录的姓名:",i+1);

scanf("%s",t[i].name);

printf("第%d条记录的电话:",i+1);

scanf("%s",t[i].tel);

printf("第%d条记录的E—mail:",i+1);

scanf("%s",t[i].email);

printf("第%d条记录的地址:",i+1);

scanf("%s",t[i].ad);

}

return n;

}

/*显示所有记录*/

void List(ElemType t[],int n){

int i;

system("cls");

printf("姓名 电话号码 E—mail 地址\n");

printf("************\n");

for(i=0;i

printf("%-10s %-15s",t[i].name,t[i].tel);

printf("%-20s %-15s\n",t[i].email,t[i].ad);

if((i+1)%20==0){//每屏显示20条记录

printf("press any key continue...");

fflush(stdin);

getchar();

}

}

printf("***********\n");

}

/*按姓名查找记录*/

void SearchOnName(ElemType t[],int n){

char s[20];

int i,flag=0;

printf("请输入要查找的姓名:\n");

scanf("%s",s);

for(i=0;i

if(strcmp(s,t[i].name)==0){

flag=1;

printf("此人的信息如下:\n");

printf("姓名 电话号码 E—mail 地址\n");

printf("***********\n");

printf("%-10s %-15s",t[i].name,t[i].tel);

printf("%-20s %-15s\n",t[i].email,t[i].ad);

}

}

if(flag==0)printf("查无此人!\n");

}

/*按电话号码查找记录*/

void SearchOnTel(ElemType t[],int n){

char s[15];int i,flag=0;

printf("请输入要查找的电话号码:\n");

scanf("%s",s);

for(i=0;i

if(strcmp(s,t[i].tel)==0){

flag=1;

printf("与该电话号码相关的信息如下:\n");

printf("姓名 电话号码 E—mail 地址\n");

printf("%-10s %-15s",t[i].name,t[i].tel);

printf("%-20s %-15s\n",t[i].email,t[i].ad);

}

}

if(flag==0)printf("没有此号码!\n");

}

/*删除记录*/

int DeleteRecord(ElemType t[],int n){

char s[10];

char ch='N';

int i,j,flag=0;

printf("请输入要删除的名字\n");

scanf("%s",s);

for(i=0;i

if(strcmp(s,t[i].name)==0){

flag=1;

printf("姓名 电话号码 E—mail 地址\n");

printf("***********\n");

printf("%-10s %-15s",t[i].name,t[i].tel);

printf("%-20s %-15s\n",t[i].email,t[i].ad);

printf("Are you sure delete it(Y/N)\n");

fflush(stdin);

ch=getchar();

if(ch=='Y'||ch=='y'){

for(j=i;j

n--;

i--;

}

}

}

if(flag==0)printf("查无此人!\n");

return n;

}

/*追加记录*/

int AddRecord(ElemType t[],int n){

int i,m;

printf("请输入要增加的记录数:\n");

scanf("%d",&m);

printf("开始追加记录\n");

for(i=n;i

printf("第%d条记录的姓名:",i+1);

scanf("%s",t[i].name);

printf("第%d条记录的电话:",i+1);

scanf("%s",t[i].tel);

printf("第%d条记录的E-mail:",i+1);

scanf("%s",t[i].email);

printf("第%d条记录的地址:",i+1);

scanf("%s",t[i].ad);

}

return n+m;

}

/*按姓名排序*/

/*采用起泡排序方法进行排序*/

void SortOnName(ElemType t[],int n){

int i,j,flag;

ElemType temp;

for(i=n-1,flag=1;i>1&&flag;i--){

flag=0;

for(j=0;j

if((strcmp(t[j].name,t[j+1].name))>0)/*比较大小*/

{

temp=t[j];

t[j]=t[j+1];

t[j+1]=temp;

flag=1;

}

}

}

/*保存与读取数据*/

void SaveRecord(ElemType t[],int n){//将数据保存到文件中

int i;

FILE *fp;

if((fp=fopen("tongxunlu.txt","w"))==NULL){

printf("can not open file\n");

exit(1);

}

fprintf(fp,"%d",n);

fprintf(fp,"\r\n");

for(i=0;i

fprintf(fp,"%-10s %-15s",t[i].name,t[i].tel);

fprintf(fp,"%-20s %-15s\n",t[i].email,t[i].ad);

fprintf(fp,"\r\n");

}

fclose(fp);

}

int LoadRecord(ElemType t[]){//从文件读取数据,函数返回值为记录数

int i,n;

FILE*fp;

if((fp=fopen("tongxunlu.txt","a+"))==NULL){

printf("can not open file\n");

exit(1);

}

fscanf(fp,"%d",&n);

for(i=0;i

fclose(fp);

return n;

}

/*菜单显示与主程序*/

int Memu_select(){//菜单函数,函数返回值为整数,代表所选的菜单项

int c;

system("cls");

printf("********菜单*******\n");

printf("1.输入初始记录 5.删除记录\n");

printf("2.显示所有记录6.追加记录\n");

printf("3.按姓名查找记录7.按姓名排序\n");

printf("4.按电话号码查找记录0.退出\n");

printf("**************************\n");

do{

printf("Enter your choice(0-7):");

scanf("%d",&c);

if(c>=0&&c<=7)break;

}while(c<0||c>7);

return c;

}

void main(){//主函数

ElemType adr[M];

int length;

system("cls");

while(1){

switch(Menu_select()){

case 1:length=Init(adr);

SaveRecord(adr,length);

break;

case 2:length=LoadRecord(adr);

List(adr,length);

break;

case 3:length=LoadRecord(adr);

SearchOnName(adr,length);

break;

case 4:length=LoadRecord(adr);

SearchOnName (adr,length);

break;

case 5:length=LoadRecord(adr);

length=DeleteRecord(adr,length);

SaveRecord(adr,length);

break;

case 6:length=LoadRecord(adr);

length=AddRecord(adr,length);

SaveRecord(adr,length);

break;

case 7:length=LoadRecord(adr);

SortOnName(adr,length);

SaveRecord(adr,length);

List(adr,length);

break;

case 0:exit(0);/*如返回值为0,则程序结束*/

default:break;

}

printf("按任意键返回!");

fflush(stdin);

getchar();

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值