大一c语言课程设计通讯录系统报告,大一c语言课程设计:通讯录(顺序表)

#include

#include

#define N 12//文件通讯录条数。

void menu()//菜单界面

{

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

printf("\t\t\t\t**************菜单界面**************\n");

printf("\t\t\t\t ---------------------------------- \n");

printf("\t\t\t\t| 1.添加联系人信息 |\n");

printf("\t\t\t\t| 2.显示所有联系人信息 |\n");

printf("\t\t\t\t| 3.删除部分联系人 |\n");

printf("\t\t\t\t| 4.清空所有联系人 |\n");

printf("\t\t\t\t| 5.修改联系人 |\n");

printf("\t\t\t\t| 6.精确查找联系人 |\n");

printf("\t\t\t\t| 7.模糊关键字查找 |\n");

printf("\t\t\t\t| 8.导出通讯录 |\n");

printf("\t\t\t\t| 9.导入通讯录 |\n");

printf("\t\t\t\t| 10.按条件排序 |\n");

printf("\t\t\t\t| 11.重复删除 |\n");

printf("\t\t\t\t| 12.误清空恢复 |\n");

printf("\t\t\t\t| 0.退出 |\n");

printf("\t\t\t\t ----------------------------------\n");

}

typedef struct link

{

char name[10];

char sex[10];

char age[10];

char addr[20];

char tel[20];

}linkman;

typedef struct PEOPLE

{

int num;

linkman count[1000];

}*people;

int add_linkman(people cou)//添加联系人。

{

if(cou->num==1000)

{

printf("通讯录已满,无法录入");

return(cou->num);

}

else

{

printf("please input name:\n");

scanf("%s",cou->count[cou->num].name);

printf("please input sex:\n");

scanf("%s",cou->count[cou->num].sex);

printf("please input age:\n");

scanf("%s",cou->count[cou->num].age);

printf("please input address:\n");

scanf("%s",cou->count[cou->num].addr);

printf("please input telphone\n");

scanf("%s",cou->count[cou->num].tel);

cou->num++;

printf("添加成功\n");

return(cou->num);

}

}

void display_linkman(people cou)//显示所有联系人

{

int i=0;

if(cou->num==0)

{

printf("当前通讯录为空\n");

return;

}

else

{

printf("姓名\t性别\t年龄\t地址\t电话号码\n");

for(i=0;inum;i++)

{

printf("%s\t%s\t%s\t%s\t%s",

cou->count[i].name,

cou->count[i].sex,

cou->count[i].age,

cou->count[i].addr,

cou->count[i].tel);

printf("\n");

}

return;

}

}

void delete_linkman(people cou)//删除联系人。

{

printf("\t\t\t\t*********注意:删除后无法恢复***********\n");

char name[10];

int i=0,flag=0;

if(cou->num==0)

{

printf("通讯录已空,无法删除\n");

return;

}

else

{

printf("请输入需要删除的人的名字>:");

scanf("%s",name);

printf("\n");

for(i=0;i<=cou->num;i++)

{

if(!strcmp(name,cou->count[i].name))

{

while(inum)

{

cou->count[i]=cou->count[i+1];

i++;

}

cou->num--;

flag=0;

printf("删除成功\n");

return;

}

}

printf("未找到此联系人,删除失败\n");

return;

}

}

void clear_linkman(people cou)//清空联系人

{

if(cou->num==0)

{

printf("联系人已空,无需再次清空\n");

return;

}

else

{

cou->num=0;

printf("清空完成\n");

return;

}

}

void modify_linkman(people cou)//修改联系人。

{

char name[10];

int i;

if(cou->num==0)

{

printf("联系人为空,请新建联系人\n");

return;

}

else

{

printf("请输入需要修改的联系人的名字>:");

scanf("%s",name);

for(i=0;i<=cou->num;i++)

{

if(!strcmp(name,cou->count[i].name))

{

printf("please input name:\n");

scanf("%s",cou->count[i].name);

printf("please input sex:\n");

scanf("%s",cou->count[i].sex);

printf("please input age:\n");

scanf("%s",cou->count[i].age);

printf("please input address:\n");

scanf("%s",cou->count[i].addr);

printf("please input telphone\n");

scanf("%s",cou->count[i].tel);

printf("修改成功\n");

break;

}

else if(i==cou->num)

{

printf("未找到相应联系人\n");

}

}

return;

}

}

void search_linkman(people cou)//查找联系人

{

char name[10];

int i;

if(cou->num==0)

{

printf("联系人为空,无法查找,请新建联系人\n");

return;

}

else

{

printf("请输入查找人的名字>:");

scanf("%s",name);

for(i=0;i<=cou->num;i++)

{

if(!strcmp(name,cou->count[i].name))

{

printf("%s\t%s\t%s\t%s\t%s\n",

cou->count[i].name,

cou->count[i].sex,

cou->count[i].age,

cou->count[i].addr,

cou->count[i].tel);

break;

}

else if(i==cou->num)

{

printf("未找到联系人\n");

}

}

return;

}

}

void derive_linkman(people cou)//导出通讯录。

{

FILE *fp;

int i;

if((fp=fopen("通讯录2.txt","wt+"))==NULL)

{

printf("open file error!\n");

return;

}

fprintf(fp,"姓名\t性别\t年龄\t地址\t电话号码\n");

for(i=0;i<=cou->num;i++)

{

fprintf(fp,"%s\t%s\t%s\t%s\t%s\n",

cou->count[i].name,

cou->count[i].sex,

cou->count[i].age,

cou->count[i].addr,

cou->count[i].tel);

}

printf("导出成功\n");

fclose(fp);

return;

}

int load_linkman(people cou)//载入通讯录。(载入测试数据)

{

FILE *fp;

int i;

if((fp=fopen("通讯录1.txt","rb"))==NULL)

{

printf("open file error!\n");

return(cou->num);

}

rewind(fp);

if(cou->num==0)

{

for(i=0;i

{

fscanf(fp,"%s%s%s%s%s\n",

cou->count[i].name,

cou->count[i].sex,

cou->count[i].age,

cou->count[i].addr,

cou->count[i].tel);

cou->num++;

}

printf("导入成功\n");

}

else

{

for(i=0;i

{

fscanf(fp,"%s%s%s%s%s\n",

cou->count[cou->num].name,

cou->count[cou->num].sex,

cou->count[cou->num].age,

cou->count[cou->num].addr,

cou->count[cou->num].tel);

cou->num++;

}

printf("导入成功\n");

}

fclose(fp);

return(cou->num);

}

void number_linkman(people cou)//通讯录容量记录。

{

printf("\t\t\t\t通讯录总条数1000条,已用条数%d,剩余可用条数%d\n",cou->num,1000-cou->num);

printf("\t\t\t\t注意:退出程序请按8号功能键导出联系人防止联系人丢失\n");

printf("\t\t\t\t注意:误清空后可以按12号功能键恢复\n");

printf("\t\t\t\t注意:清空后可恢复,删除不可恢复。\n");

printf("\t\t\t\t注意:请严格按照功能序号输入,否则程序可能出错。\n");

return;

}

void keyworld_search(people cou)//关键字查找。

{

char ch[20];

int i,j=0;

if(cou->num==0)

{

printf("通讯录为空,无法搜索\n");

return;

}

else

{

printf("请输入要查找的关键字>:");

scanf("%s",ch);

for(i=0;inum;i++)

{

if((strstr(cou->count[i].name,ch)!=NULL)||

(strstr(cou->count[i].sex,ch)!=NULL)||

(strstr(cou->count[i].tel,ch)!=NULL)||

strstr(cou->count[i].addr,ch)!=NULL)

{

printf("%s\t%s\t%s\t%s\t%s\n",

cou->count[i].name,

cou->count[i].sex,

cou->count[i].age,

cou->count[i].addr,

cou->count[i].tel);

j++;

}

}

if(j==0)

{

printf("未找到相关数据\n");

return;

}

else

{

printf("共找到%d条数据\n",j);

}

return;

}

}

void sort_linkman(people cou)//排序函数。

{

linkman temp;

int i,j,x;

if(cou->num==0)

{

printf("通讯录为空,无法排序\n");

return;

}

else

{

printf("\t\t\t\t*************功能选项***************\n");

printf("\t\t\t\t ---------------------------------- \n");

printf("\t\t\t\t| 1.按名字排序 |\n");

printf("\t\t\t\t| 2.按年龄排序 |\n");

printf("\t\t\t\t| 3.按性别分类 |\n");

printf("\t\t\t\t| 4.按地域分类 |\n");

printf("\t\t\t\t ---------------------------------- \n");

printf("请选择功能序号>:");

scanf("%d",&x);

switch(x)

{

case 1:

for(i=0;inum-1;i++)

{

for(j=0;jnum-1;j++)

{

if(strcmp(cou->count[j].name,cou->count[j+1].name)>0)

{

temp=cou->count[j];

cou->count[j]=cou->count[j+1];

cou->count[j+1]=temp;

}

}

}

printf("按名字排序完成\n");

break;

case 2:

for(i=0;inum-1;i++)

{

for(j=0;jnum-1;j++)

{

if(strcmp(cou->count[j].age,cou->count[j+1].age)>0)

{

temp=cou->count[j];

cou->count[j]=cou->count[j+1];

cou->count[j+1]=temp;

}

}

}

printf("按年龄排序完成\n");

break;

case

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值