C语言课程设计:通讯录管理系统

通讯录管理系统主要管理用户通讯录的基本信息。在系统中,每个用户是一条记录,包括姓名、电话号码、通讯地址。系统要对一个有N个用户的通讯录统一进行管理。包括了用户信息的录入、... 通讯录管理系统主要管理用户通讯录的基本信息。在系统中,每个用户是一条记录,包括姓名、电话号码、通讯地址。系统要对一个有N个用户的通讯录统一进行管理。包括了用户信息的录入、显示、修改、查询等操作。 展开
 我来答
松甜恬0Je4ba
推荐于2018-02-27 · TA获得超过2.6万个赞
知道大有可为答主
回答量:7475
采纳率:100%
帮助的人:3302万
展开全部
/*
* main_tongxunlu.c
*
* Created on: 2011-6-21
* Author: zhanglujin
*/

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>
struct record
{
char name[20]; //姓名
char phone[12]; //电话
char adress[50]; //地址
char postcode[8]; //邮政编码
char e_mail[20]; //电子邮件。
}student[100]; //假设最大数为100.
//定义全局变量num,表示已经输入的人数 。
int num; //这里使用数组解决通讯录的问题,实际上使用链表更好。
int menu_select()
{
char s[80];
int a;/*定义整形变量*/
system("cls");
printf("\t\t***********欢迎进入通讯管理界面********\n\n");
printf("\t\t\t0. 输入记录\n");
printf("\t\t\t1. 显示记录\n");
printf("\t\t\t2. 按姓名查找\n");
printf("\t\t\t3. 按电话号码查找\n");
printf("\t\t\t4. 插入记录 \n");
printf("\t\t\t5. 按姓名排序\n");
printf("\t\t\t6. 删除记录\n");
printf("\t\t\t7. Quit\n");
printf("\t\t***********************************************\n\n");
do{
printf("Enter you choice(0~7):");
scanf("%s",s);
a=atoi(s);
}
while (a<0 || a>7);
return a;
}
int adduser()
{
printf("\t\t\t**************** 请输入用户信息 ****************\n");
printf("\t\t\t输入姓名:\n");
scanf("%s",student[num].name);
printf("\t\t\t输入电话号码:\n");
scanf("%s",student[num].phone);
printf("\t\t\t输入地址:\n");
scanf("%s",student[num].adress);
printf("\t\t\t输入邮编:\n");
scanf("%s",student[num].postcode);
printf("\t\t\t输入e-mail:\n");
scanf("%s",student[num].e_mail);
num++;
printf("\t\t\t是否继续添加?(Y/N):\n");
if(getch()=='y' || getch()=='Y')
adduser();
return(0);
}
void list()
{
int i;
system("cls");
if(num!=0)
{
printf("\t\t\t*************** 以下为通讯录所有信息************\n");
for (i=0;i<num;i++)
{
printf("\t\t\t姓名:%s\n",student[i].name);
printf("\t\t\t电话:%s\n",student[i].phone);
printf("\t\t\t地址:%s\n",student[i].adress);
printf("\t\t\t邮编:%s\n",student[i].postcode);
printf("\t\t\te-mail:%s\n",student[i].e_mail);
if(i+1<num)
{
system("pause");
}
}
printf("\t\t\t************************************************\n");
}
else
printf("\t\t\t通讯录中无任何纪录\n");
printf("\t\t\t按任意键返回主菜单:\n");
getch(); //这里是无回显的输入字符,你输入的字符不会显示在屏幕上。
return;
}
int searchbyname()
{
int mark=0;
int i;
printf("\t\t\t***************** 按姓名查找 *******************\n");
char name[20];
printf("\t\t\t请输入姓名:\n");
scanf("%s",name);
for(i=0;i<num;i++)
{
if (strcmp(student[i].name,name)==0)
{
printf("\t\t\t************* 以下是您查找的用户信息 ***********\n");
printf("\t\t\t姓名: %s",student[i].name);
printf("\t\t\t电话: %s",student[i].phone);
printf("\t\t\t地址: %s",student[i].adress);
printf("\t\t\te-mail:%s",student[i].e_mail);
printf("\t\t\t************************************************\n");
mark++;
if((i+1)<num)
{
printf("\t\t\t是否继续查找相同名字的用户信息:(y/n)\n");
if(getch()=='y' || getch()=='Y')
{
continue;
}
else
return(0);
}
else
{
printf("\t\t\t按任意键返回主菜单");
getch();
return(0);
}
}
}
if(mark == 0)
{
printf("\t\t\t没有相同姓名的用户纪录\n");
printf("\t\t\t按任意键返回主菜单\n");
getch();
return(0);
}
return 0;
}
int searchbyphone()
{
int mark=0;
int i;
printf("\t\t\t****************** 按电话查找 ******************\n");
char phone[10];
printf("\t\t\t请输入电话号码:\n");
scanf("%s",phone);
for(i=0;i<num;i++)
{
if (strcmp(student[i].phone,phone)==0)
{
printf("\t\t\t************** 以下是您查找的用户信息 **********\n");
printf("\t\t\t姓名: %s",student[i].name);
printf("\t\t\t电话: %s",student[i].phone);
printf("\t\t\t地址: %s",student[i].adress);
printf("\t\t\te-mail:%s",student[i].e_mail);
printf("\t\t\t************************************************\n");
printf("\t\t\t按任意键返回主菜单\n");
mark++;
getch();
return(0);
}
}
if (mark==0)
{
printf("\t\t\t没有改用户的信息\n");
printf("\t\t\t按任意键返回主菜单\n");
getch();
return(0);
}
return(0);
}
void deletebyphone()
{
int i,j;
int deletemark=0;
char phone[20];
printf("\t\t\t请输入要删除用户电话号码:\n");
scanf("%s",phone);
if(num==0)
{
printf("\t\t\t对不起,文件中无任何纪录\n");
printf("\t\t\t按任意键返回主菜单\n");
getch();
return;
}
for (i=0;i<num;i++)
{
if (strcmp(student[i].phone,phone)==0)
{
printf("\t\t\t以下是您要删除的用户纪录:\n");
printf("\t\t\t姓名: %s",student[i].name);
printf("\t\t\t电话: %s",student[i].phone);
printf("\t\t\t地址: %s",student[i].adress);
printf("\t\t\te-mail:%s",student[i].e_mail);
printf("\t\t\t是否删除?(y/n)");
if (getch()=='y' || getch()=='Y')
{
for (j=i;j<num-1;j++)
student[j]=student[j+1];
num--;
deletemark++;
printf("\t\t\t删除成功");
printf("\t\t\t是否继续删除?(y/n)");
if (getch()=='y' || getch()=='Y')
deletebyphone();
return;
}
else
return;
}
continue;
}
if (deletemark==0)
{
printf("\t\t\t没有该用户的纪录");
printf("\t\t\t是否继续删除?(y/n)");
if(getch()=='y' || getch()=='Y')
deletebyphone();
return;
}
return;
}
void deletebyname()
{
int a=0;
int findmark=0;
int j;
int deletemark=0;
int i;
char name[20];
printf("\t\t\t请输入要删除用户姓名:\n");
scanf("%s",name);
for (i=a;i<num;i++)
{
if(strcmp(student[i].name,name)==0)
{
printf("\t\t\t以下是您要删除的用户纪录:");
findmark++;
printf("\t\t\t________________________________");
printf("\t\t\t姓名: %s",student[i].name);
printf("\t\t\t电话: %s",student[i].phone);
printf("\t\t\t地址: %s",student[i].adress);
printf("\t\t\te-mail:%s",student[i].e_mail);
printf("\t\t\t________________________________");
printf("\t\t\t是否删除?(y/n)");
if (getch()=='y' || getch() == 'Y')
{
for(j=i;j<num-1;j++)
student[j]=student[j+1];
num--;
deletemark++;
printf("\t\t\t删除成功");
if((i+1)<num)
{
printf("\t\t\t是否继续删除相同姓名的用户信息?(y/n)");
if (getch()=='y')
{
a=i;
continue;
}
}
printf("\t\t\t是否继续删除?(y/n)");
if (getch()=='y')
deletebyname();
return;
}
if((i+1)<num)
{
printf("\t\t\t是否继续删除相同姓名的用户信息?(y/n)");
if (getch()=='y' || getch() == 'Y')
{
a=i;
continue;
}
}
}
else
continue;
}
if ((deletemark==0)&&(findmark==0))
{
printf("\t\t\t没有该用户的纪录");
printf("\t\t\t是否继续删除?(y/n)");
if(getch()=='y' || getch() == 'Y')
deletebyphone();
return;
}
else if (findmark!=0)
{
printf("\t\t\t没有重名信息");
printf("\t\t\t没有该用户的纪录");
printf("\t\t\t是否继续删除?(y/n)");
if(getch()=='y' || getch() == 'Y')
deletebyphone();
return;
}
}
int dele()
{
char choic;
printf("\t\t\t1-按电话号码删除 2-按姓名删除");
printf("\t\t\t请选择:");
choic=getch();
switch (choic)
{
case '1':deletebyphone();break;
case '2':deletebyname();break;
}
return(0);
}
int sortbyname() //按姓名进行排序
{
int i,j;
struct record tmp;
for (i=1;i<num;i++)
{
if(strcmp(student[i].name,student[i-1].name)<0)
{
tmp=student[i];
j=i-1;
do
{
student[j+1]=student[j];
j--;
}while ((strcmp(tmp.name,student[j].name)<0&&j>=0));
student[j+1]=tmp;
}
}
printf("\t\t\t排序成功,是否显示?(y/n)");
if (getch()=='y')
list();
return(0);
}
int main()
{
printf("\t\t************************************************\n");
printf("\t\t********welcome to TONGXUNLU *******************\n");
printf("\t\t###########code by XXXXX ###################\n");
printf("\t\t*************************************************\n");
printf("按任意键进入主菜单\n");
getch();
int selectnum;
while(1)
{
selectnum = menu_select();
switch(selectnum)
{
case 0:
{
adduser();
break;
}
case 1:
{
list();
break;
}
case 2:
{
searchbyname();
break;
}
case 3:
{
searchbyphone();
break;
}
case 4:
{
adduser(); //这里插入,应该能指定位置,不过意义不大,所以和添加记录一样了。
break;
}
case 5:
{
sortbyname();
break;
}
case 6:
{
dele();
break;
}
case 7:
{
printf("BYE BYE!\n");
system("pause");
getchar();
exit(0);
}
}
}
getchar();
return 0;
}
iuiself
2011-07-01
知道答主
回答量:7
采纳率:0%
帮助的人:0
展开全部
#include<stdio.h>
#include<string.h>
#include<stdlib.h>

int n=10; //通讯录中信息的条数。
char string[80];
//以下几个语句为函数的声明。
void menu1(); //主菜单。
void menu2(); //小菜单,供用户在使用完某个功能后选择回主菜单或结束。
void choose1(); //用于菜单中的选择,为了方便输入错误后重新输入。。
void choose3(int); //用于modify()函数中的选择。
void search(); //查询。
void show(); //显示通讯录中全部内容。
void showchoose(); //询问用户是否按照姓名排序后再进行输出。
void showinorder();//按照姓名进行排序并将其显示。
void add(); //添加数据。
void modify(); //修改数据。
void del(); //删除数据。
void dial(); //对通讯录中某个人进行拔号。
void thanks(); //作者的话。
void end(); //结束该程序。

struct //定义结构体数组用来存放文件中数据。
{ char name[7];
char add[30];
char pos[7];
char email[20];
char qq[10];
char phone[12];
}people[199];

void menu1() //主菜单函数。
{
puts("\n\n\n");
printf(" Welcom!欢迎使用个人通讯录管理系统!\n");
puts(" ====================================");
puts(" ↓↓↓ ↓↓↓\n");
printf(" ☆☆☆→ 个人通讯录管理系统 ←☆☆☆\n\n");
printf(" ※→1. 按姓名进行查询。\n");
printf(" ※→2. 显示当前通讯录中的全部内容。\n");
printf(" ※→3. 通过姓名添加新数据。\n");
printf(" ※→4. 通过姓名修改数据。\n");
printf(" ※→5. 通过姓名删除数据。\n");
printf(" ※→6. 选择您想找的数据并进行拔号。\n");
printf(" ※→7. 感谢。\n");
printf(" ※→8. 结束该程序。\n");
puts(" ************************************");
puts(" ====================================\n\n");
printf(" ^_^★请输入相应数字来选择您所需要的功能:");
choose1();
}

void menu2()
{
char a;
puts("\n\n");
printf("\t\t\t※→我要给这里边的他/她打电话(D) \n\t\t\t※→我要回主菜单(其他任意键)\n\t\t\t");
a=getchar();
if(a=='d' || a=='D')
dial();
menu1();

}

void choose1() //让用户选择所需功能;为了便于输入出错时重新输入,故将此函数独立出来。
{
int choice=0;
scanf("%d",&choice);
switch(choice)
{
case 1:search(); break;
case 2:showchoose(); break; //询问用户是否按照姓名排序后再进行输出。
case 3:add(); break;
case 4:modify(); break;
case 5:del(); break;
case 6:dial(); break;
case 7:thanks(); break;
case 8:end(); break;
default :printf(" ■O(∩_∩)O您的输入有误!请重新输入:");
choose1(); //让用户进行重新输入。
}

}

void choose3(int i)
{
int j;
scanf("%d",&j);
switch(j)
{
case 1: printf("\t\t\t请输入新的姓名:"); scanf("%s",people[i].name);break;
case 2: printf("\t\t\t请输入新的地址:"); scanf("%s",people[i].add);break;
case 3: printf("\t\t\t请输入新的邮编:"); scanf("%s",people[i].pos);break;
case 4: printf("\t\t\t请输入新的email地址:"); scanf("%s",people[i].email);break;
case 5: printf("\t\t\t请输入新的qq号码:"); scanf("%s",people[i].qq);break;
case 6: printf("\t\t\t请输入新的电话号码:"); scanf("%s",people[i].phone);break;
case 7:
printf("\t\t**************** 输入用户信息 ****************\n\n");
printf("\t\t请输入新的联系人姓名:\n");
scanf("%s",people[i].name);
printf("\t\t请输入新的地址:\n");
scanf("%s",people[i].add);
printf("\t\t输入新的邮编:\n");
scanf("%s",people[i].pos);
printf("\t\t输入新的电子信箱地址:\n");
scanf("%s",people[i].email);
printf("\t\t输入新的qq号码:\n");
scanf("%s",people[i].qq);
printf("\t\t输入新的手机号码:\n");
scanf("%s",people[i].phone);break;
}

}

void search()
{
char a,b;
int i;
int j=0;
char name[20];
puts("\n\n\n\n\n");
printf(" ★您选择的功能是1: →按姓名查找\n\n");
printf(" 请输入姓名:");
scanf("%s",name);
for(i=0;i<n;i++)
{
if (strcmp(people[i].name,name)==0)
{
printf("\n\n\n\n\n ★%-8s%-16s%-8s%-16s%-12s%-15s\n\n\n",people[i].name,people[i].add,people[i].pos,people[i].email,people[i].qq,people[i].phone);
printf("\t\t是否继续查找? 是(Y) 否(其他任意键回主菜单)\n");
b=getchar();
if(b=='Y' || b=='y')
search();
menu1();
}
}
puts("\n\n\n\n\n");
printf("\t■■(⊙o⊙)这儿没有您要找的人!\n\n");
printf("\t\t\t※→我要继续查找(G) \n\t\t\t※→我要将此联系人添加到通讯录(A) \n\t\t\t※→我要回主菜单(其他任意键)\n");
a=getchar();
if(a=='G' || a=='g')
search();
else if(a=='A' || a=='a')
add();
menu1();

}

void showchoose()
{
char a;
puts("\n");
printf("\t★(⊙o⊙)? ※→按姓名排序后再进行输出(任意键) \n\t\t ※→不排序输出(N)\n");
scanf("%c",&a);
if(a=='N' || a=='n')
show();
showinorder();
}

void show()
{ int i;
puts("\n\n\n\n\n");
printf("★您选择的功能是2: →显示当前通讯录中的全部内容:\n\n");
puts(string);
putchar('\n');
for(i=0;i<n;i++)
{
printf("%-8s%-16s%-8s%-16s%-12s%-15s\n",people[i].name,people[i].add,people[i].pos,people[i].email,people[i].qq,people[i].phone);
}
menu2();
}
void showinorder()
{
int i,j,k=100;
for(i=0;i<n;i++)
people[k++]=people[i];
for(i=100;i<100+n-1;i++)
for(j=i+1;j<100+n;j++)
{
if(strcmp(people[i].name,people[j].name)>0)

{
people[99]=people[i];
people[i]=people[j];
people[j]=people[99];
}
}
puts("\n\n\n\n\n");
printf("★您选择的功能是: →按姓名顺序显示当前通讯录中的全部内容:\n\n");
puts(string);
putchar('\n');
for(i=100;i<110;i++)
{
printf("%-8s%-16s%-8s%-16s%-12s%-15s\n",people[i].name,people[i].add,people[i].pos,people[i].email,people[i].qq,people[i].phone);
}
menu2();
}

void add()
{
char a;
int i;
char name[10];
puts("\n\n\n\n\n");
printf("★您选择的功能是3: →通过姓名添加新数据。");//记得n++;
puts("\n\n");
printf("\t■■敬请注意!本系统仅能存放99条联系人信息,目前还可以添加 %d 个!",99-n);
printf("\n\n\t★请输入您要添加人的姓名:");
scanf("%s",name);
for(i=0;i<n;i++)
{
if (strcmp(people[i].name,name)==0)
{
printf("\n\n\n■O(∩_∩)O您要添加的联系人已存在!: \n\n\n ★%-8s%-16s%-8s%-18s%-18s%-15s\n\n\n",people[i].name,people[i].add,people[i].pos,people[i].email,people[i].qq,people[i].phone);
printf("\t\t\t是否更改姓名继续添加?\n\t\t 是(Y) 否(其他任意键回主菜单)\n");
a=getchar();
if(a=='Y' || a=='y')
add();
menu1();
}
}
printf("\t\t\t**************** 输入用户信息 ****************\n\n");
strcpy(people[n].name,name);
printf("\t\t\t请输入对方地址:");
scanf("%s",people[n].add);
printf("\t\t\t输入对方邮编:");
scanf("%s",people[n].pos);
printf("\t\t\t输入对方电子信箱地址:");
scanf("%s",people[n].email);
printf("\t\t\t输入对方qq号码:");
scanf("%s",people[n].qq);
printf("\t\t\t输入对方手机号码:");
scanf("%s",people[n].phone);
printf("联系人已经添加成功!:\n★%-8s%-16s%-8s%-16s%-12s%-15s\n\n\n",people[n].name,people[n].add,people[n].pos,people[n].email,people[n].qq,people[n].phone);
n++;
printf("\t\t\t是否继续添加联系人?\n\t\t 是(Y) 否(其他任意键回主菜单)\n");
a=getchar();
if(a=='Y' || a=='y')
add();
menu1();

}

void modify()
{
char a;
char name[10];
int i,j=0;
puts("\n\n\n\n\n");
printf("★您选择的功能是4: →通过姓名修改数据。");
puts("\n\n");
printf("\t\t\t请输入您要修改的联系人的姓名:");
scanf("%s",name);
for(i=0;i<n;i++)
{
if (strcmp(people[i].name,name)==0)
{
j++;
printf("\n\n\n\t\t★您要修改的联系人的信息为:\n\n\n");
printf(" %-8s%-16s%-8s%-16s%-12s%-15s\n\n\n",people[i].name,people[i].add,people[i].pos,people[i].email,people[i].qq,people[i].phone);
printf("\t★您要修改的信息是:\n\n\t\t\t\t※→1. 姓名。\n \t\t\t\t※→2. 地址。\n \t\t\t\t※→3. 邮编。\n \t\t\t\t※→4. email地址。\n \t\t\t\t※→5. qq号码。\n \t\t\t\t※→6. 电话号码。\n \t\t\t\t※→7. 修改全部。\n\n");
choose3(i);
printf("该联系人个信息已经修改成功!:\n★%-8s%-16s%-8s%-16s%-12s%-15s\n\n\n",people[i].name,people[i].add,people[i].pos,people[i].email,people[i].qq,people[i].phone);
printf(" 是否继续更改其他联系人信息? \n\t\t\t 是(Y) 否(按回车键回主菜单)\n");
a=getchar();
if(a=='Y' || a=='y')
modify();
menu1();
}
if(j==0)
printf("\n\n ■O(∩_∩)O您要找的联系人不存在或您的输入有误! ");
printf("\t是否重新输入以更改其信息? \n\t\t\t 是(Y) 否(其他任意键回主菜单)\n");
a=getchar();
if(a=='Y' || a=='y')
modify();
menu1();

}

}

void del()
{
char a;
char name[10];
int i,j=0;
puts("\n\n\n\n\n");
printf("★您选择的功能是5: →通过姓名删除该数据。\n\n\n");
printf("\t\t请输入您要删除的联系人姓名:");
scanf("%s",name);
for(i=0;i<n;i++)
{
if (strcmp(people[i].name,name)==0)
{
printf("★您要删除的联系人的信息是:\n\n");
printf("\n\n ★%-8s%-16s%-8s%-16s%-12s%-15s\n\n\n",people[i].name,people[i].add,people[i].pos,people[i].email,people[i].qq,people[i].phone);
people[i]=people[99];
j=1;
printf("★O(∩_∩)O该联系人信息已删除!\n\t\t\t※→我要继续删除其他人的信息(Y) \n\t\t\t※→我要回主菜单(其他任意键)\n");
a=getchar();
if(a=='Y' || a=='y')
del();
menu1();
}
}
if(j==0)
{
puts("\n\n\n\n\n");
printf("\t■■(⊙o⊙)这儿没有您要找的人!\n\n");
printf("\t\t\t※→我要换个姓名继续查找(G) \n\t\t\t※→我要回主菜单(其他任意键)\n");
a=getchar();
if(a=='G' || a=='g')
del();
menu1();
}
}

void dial()
{
char a;
int i,j=0;
char name[10];
printf("\n\n\t\t★您要给谁打电话,把他/她的姓名告诉我吧:");
scanf("%s",name);
for(i=0;i<n;i++)
{if(strcmp(people[i].name,name)==0)
{
printf("\n\n\t★正在给 %s 拨号中 (⊙o⊙)…\n\n",people[i].name);

j=1;
}

}
if(j==0)
{
printf("\n\n ■O(∩_∩)O您要找的联系人不存在或您的输入有误!\n ");
printf("\t\t\t※→我要重新输入!(Y) \n \t\t\t※→我要回主菜单(其他任意键)\n");
a=getche();
if(a=='Y' || a=='y')
dial();
menu1();
}

}

void thanks()
{
puts("\n\n\n\n");
printf("★您选择的功能是7: →感谢。");
puts("\n\n");
printf("真诚地谢谢你们,谢谢!:\n\n 1. 感谢老师和同学们对我们的帮助与鼓励!(套话)\n 2. 感谢学校为我们付出的巨大努力与牺牲!(这才是真心话)\n 3. 感谢党!感谢国家!\n 4. 感谢6月26日在路旁捡到的五毛钱,让我重新燃起了对生活的向往与渴望。\n 5. 感谢自己,加油!\n 6. 作者:Blank。iuiself@yeah.net\n 7. 谢谢!");
puts("\n\n\n");
menu2();
}

void end()
{
}

main()
{
int i;
FILE *fp;
fp=fopen("D:\\TX0108.txt","a+");
if(fp==NULL)
{
printf("■O(∩_∩)O文件打开失败!\n\n\n");
exit(1);
}
fgets(string,80,fp);
for(i=0;i<n;i++)
{
fscanf(fp,"%s%s%s%s%s%s",people[i].name,people[i].add,people[i].pos,people[i].email,people[i].qq,people[i].phone);

}
fclose(fp);
menu1();

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
咸雨翻身4068
2011-07-06 · TA获得超过6.5万个赞
知道大有可为答主
回答量:4万
采纳率:0%
帮助的人:5029万
展开全部
#include <stdio.h>
#include <stdlib.h> /*与malloc.h差不多*/
#include <string.h>
#include <iostream.h>
#define maxlen 15
struct persons
{
int num; /*定义结构体数组用于缓存数据*/
char name[20];
char e_addr[20];
char tel_no[15];
char sim_no;
char arch;
}persons[maxlen];

typedef struct lnode
{ /*通讯录结构中结点的定义*/
int num;
char name[20];
char e_addr[20];
char tel_no[15];
char sim_no;
char arch;
struct lnode *next;
}listnode,*linklist;

linklist head=NULL,r=NULL; /*定义头指针和尾指针*/
listnode *s,*p0,*p1,*p2,*p3,*p4,*p5,*p6,*p7,*p8,*p9;
int i;
char name1[10],ch;char tel_no1[15];char arch1;char sim_no1;char e_addr1[20];
char s1[20];
FILE *fp; /*定义文件指针*/

void creat() /*将文件的信息读入结构体数组在转存入链表中*/
{
int j;
long k;
fp=fopen("数据文件.txt","r t"); /*打开文件*/
if(fp!=NULL)
{
for(i=0;i<=maxlen;i++ )
{
j=fgetc(fp);
if(j==EOF)
return;
k=i;
fseek(fp,k*sizeof(struct persons),0); /*读取一个人的信息*/
fread(&persons[i],sizeof(struct persons),1,fp);

s=(linklist)malloc(sizeof(listnode)); /*装存入链表中*/
s->num=persons[i].num;
strcpy(s->name,persons[i].name);
strcpy(s->e_addr,persons[i].e_addr);
strcpy(s->tel_no,persons[i].tel_no);
s->sim_no=persons[i].sim_no;
s->arch=persons[i].arch;
if(head==NULL) /*用尾插法将其插入链表中*/
{
head=s;r=head;head->next=NULL;}
else
{
r->next=s;
r=s;r->next=NULL;
}
}fclose(fp);}
else
{
fp=fopen("数据文件.txt","w"); /*不能打开另开辟一个文件*/
i=1;
}
}

void searchbyname()//按姓名查询
{
int mark=0;
int i;
int a=0;
printf("\n\t\t***************** 按姓名查找 *******************");
char name[20];
printf("\n\t\t请输入姓名:");
scanf("%s",name);
for(i=0;i<15;i++)
{
if (strcmp(persons[i].name,name)==0)
{
printf("\n\t\t************* 以下是您查找的人的信息 ***********");
cout<<endl;
cout<<p1->name<<endl;
cout<<p1->tel_no<<endl;
cout<<p1->e_addr<<endl;
cout<<p1->sim_no<<endl;
printf("\n\t\t************************************************");
mark++;
}
}
}
void ShowA()
{
p1=head;

while(p1!=NULL)
{
if(p1->arch=='A')
{
cout<<endl;
cout<<p1->name<<endl;
cout<<p1->tel_no<<endl;
cout<<p1->sim_no<<endl;}
p1=p1->next;continue;}
}
void ShowB()
{
p1=head;

while(p1!=NULL)
{
if(p1->arch=='B')
{
cout<<endl;
cout<<p1->name<<endl;
cout<<p1->tel_no<<endl;
cout<<p1->sim_no<<endl;}
p1=p1->next;continue;}
}
void ShowC()
{
p1=head;

while(p1!=NULL)
{
if(p1->arch=='C')
{
cout<<endl;
cout<<p1->name<<endl;
cout<<p1->tel_no<<endl;
cout<<p1->sim_no<<endl;}
p1=p1->next;continue;}
}
void Show() /*显示所有的信息*/
{
char ch1;
printf("Which arch do you want to show?\n");
cout<<"A:办公类"<<"B:个人类"<<"C:商务类"<<endl;
cout<<"请选择:"<<endl;
cin>>ch1;
switch(ch1)
{
case'A':ShowA();break;
case'B':ShowB();break;
case'C':ShowC();break;
default:cout<<"error"<<endl;
}
}
void searchmenu()//查询菜单
{
char choic;
system("cls");
printf("\n\t\t******************* 查询菜单 *******************");
printf("\n\t\t********** 1-按类查询 ************");
printf("\n\t\t********** 2-按姓名查询 ************");
printf("\n\t\t************************************************");
printf("\n\t\t请选择:");
cin>>choic;
switch (choic)
{
case '1':Show();break;
case '2':searchbyname();break;

}
}
void Delete() /*定义一个删除的函数*/
{
printf("\n\n\t请输入要删除用户的姓名:");

cin>>name1;
p4=head;
if(strcmp(p4->name,name1)==0)
{
p4=p4->next; /*根据各种情况判断可能性*/
head=p4;
}
else if(strcmp(p4->name,name1)!=0)
{
while(strcmp(p4->next->name,name1)!=0)
p4=p4->next;
p5=p4->next;
p4->next=p5->next;
free(p5);
}
}
void Input() /*向.通讯录中输入一个人的信息*/
{
s=(linklist)malloc(sizeof(listnode));

printf("\n\n\t请输入该用户的信息:");

cout<<"name:";
cin>>s->name;
cout<<"tel_no:";
cin>>s->tel_no;
cout<<"sim_no:";
cin>>s->sim_no;
cout<<"e_addr:";
cin>>s->e_addr;
cout<<"arch:";
cin>>s->arch;

if(head==NULL)printf("\n\n");
else
{
p8=head;
while(p8!=NULL&&strcmp(s->name,p8->name)!=0&&strcmp(s->tel_no,p8->tel_no)!=0)
p8=p8->next;
if(p8!=NULL)
{printf("您添加的用户已存在!");
free(s);
}
}

if(head==NULL)
{
head=s;head->next=NULL;
}
else
{
r->next=s;
r=s;r->next=NULL;}
}

void Alter() /*改变一个人的信息*/
{

printf("\n\n\t请输入姓名:");

cin>>name1;
p3=head;
while(p3!=NULL&&strcmp(name1,p3->name)!=0)
p3=p3->next;
if(p3==NULL)
printf("\n\n\t您选择的用户不存在!");
else
{
printf("\n\n\t请输入该用户的新信息!"); /*输入要改人的新信息*/

cout<<"name:";
cin>>name1;
cout<<"tel_no:";
cin>>tel_no1;
cout<<"e_addr:";
cin>>e_addr1;
cout<<"sim_no:";
cin>>sim_no1;
cout<<"arch:";
cin>>arch1;
while(p9!=NULL&&strcmp(name1,p9->name)!=0&&strcmp(tel_no1,p9->tel_no)!=0)
p9=p9->next;
if(p9==NULL)
{
strcpy(p3->name,name1);
strcpy(p3->tel_no,tel_no1);
strcpy(p3->e_addr,e_addr1);
p3->sim_no=sim_no1;
p3->arch=arch1;
}
else
printf("您添加的用户已存在!");

}
}
void Dial()
{
int a;char b;
cout<<"1.拨叫用户:"<<endl;
cout<<"2.使用单键拨号:"<<endl;
cin>>a;
p0=head;
if(a==1)
{
cout<<"请输入拨叫用户的姓名:";
cin>>name1;
while(strcmp(name1,p0->name)!=0&&p0!=NULL)
p0=p0->next;
if(p0==NULL)
cout<<"您选择的用户不存在!";
else
/*for(c=0;c<15;c++)
{cout<<endl;
cout<<(*p0).tel_no[c];}*/
{
cout<<endl;
cout<<p0->tel_no;
cout<<endl;}
}
else
{
cout<<"请输入单键号码:";
cin>>b;
while(p0!=NULL&&b!=p0->sim_no)

p0=p0->next;
if(p0==NULL)
cout<<"您输入的单键号码不存在!";
else
{
cout<<endl;
cout<<p0->name<<endl;
cout<<p0->tel_no;
cout<<endl;}
}
}

void Save() /*保存信息*/
{
int j;
fp=fopen("数据文件.txt","w");
for(p2=head,j=0;p2!=NULL;j++ ,p2=p2->next)/*将信息装出入结构体数组在出入链表中*/
{ /*避免地址的出入,造成乱码文件*/
strcpy(persons[j].name,p2->name);
strcpy(persons[j].tel_no,p2->tel_no);
persons[j].sim_no=p2->sim_no;
strcpy(persons[j].e_addr,p2->e_addr);
persons[j].arch=p2->arch;
fwrite(&persons[j],sizeof(struct persons),1,fp);
}
}

void main()
{
creat();
do
{
printf("\n\n\n\n\t欢迎使用您的通讯录!");/*显示提示的信息*/
printf("\n\n\t\t请选择操作:");
printf("\n\t\t1.显示通讯录");
printf("\n\t\t2.删除通讯录");

printf("\n\t\t3.添加通讯录");
printf("\n\t\t4.编辑通讯录");
printf("\n\t\t5.拨号功能");
printf("\n\t\t6.保存刚才的操作并退出");
printf("\n\n\n");
printf("\t请选择:");
cin>>ch;
switch(ch)
{
case '1': searchmenu(); /*用单条件多选择语句实现调用与循环*/
break;
case '2': Delete();
break;
case '3': Input();
break;
case '4': Alter();
break;
case '5': Dial();
break;
case '6': Save();
fclose(fp);
exit(0);
break;
default:
printf("\n\t The num should 1-6!!! \n");
printf("\n\t**********************************");
break;
}
}
while(1);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
钟升哥
2011-06-22 · TA获得超过500个赞
知道小有建树答主
回答量:378
采纳率:0%
帮助的人:165万
展开全部
给你个参考 自己多动手哦
#include<stdio.h>
#include<string.h>
#include <stdlib.h>
#define N 10
struct student
{
int num;
char name[12];
char sex[4];
char clas[20];
int a,b,c;
double pjf;
};

void main()
{
void shuru(struct student stu[N]);
void chuli(struct student stu[N]);
void xiugai(struct student stu[N]);
void shuchu(struct student stu[N]);
void paixu(struct student stu[N]);
void chaxun(struct student stu[N]);
void tongj(struct student stu[N]);
double pjf(struct student stu[N]);
void bjgkm(struct student stu[N]);
struct student stu[N];
int i=0,j=0,p=0,u=0;
char str[70][500];
FILE *fp1,*fp;
if((fp=fopen("号码信息.txt","r"))==NULL)
printf("注意:为免出错,第一次使用,请选1 手动添加数据. \n");
else
{
for(i=1;i<=N;i++)
{
if(i==1)
fp=fopen("号码信息.txt","r");
fscanf(fp,"%d%s%s%s%d%d%d",&stu[i].num,stu[i].name,stu[i].sex,stu[i].clas,&stu[i].a,&stu[i].b,&stu[i].c);
if(1==N)
fclose(fp);
}
}
int choice;
do{
for(i=0;i<14;i++)
printf("**");
printf("主菜单");
for(j=0;j<14;j++)
printf("**");
printf("\n");
printf("#请选择: 1 号码添加 2 数据添加或删除 3 数据查看 4 信息输出 5 退出#\n");
for(i=0;i<20;i++)
printf("***");
printf("**\n");
scanf("%d",&choice);
switch(choice)
{
case 1 :
shuru(stu) ; break;
case 2 :
xiugai(stu) ; break;
case 3 :
chuli(stu) ; break;
case 4 :
shuchu(stu) ; break;
case 5 : break;
default : puts("error"); return;
}

} while(choice!=5);
fp1=fopen("号码信息.txt","w");
for(i=1;i<=N;i++)
{

fprintf(fp1,"%d ",stu[i].num);
fprintf(fp1,"%s ",stu[i].name);
fprintf(fp1,"%s ",stu[i].sex);
fprintf(fp1,"%s ",stu[i].clas);
fprintf(fp1,"%d ",stu[i].a);
fprintf(fp1,"%d ",stu[i].b);
fprintf(fp1,"%d ",stu[i].c);
fprintf(fp1,"\n");
}
puts("信息已保存在“号码信息.txt”中 Thank you!!");
fclose(fp1);
}
void shuru(struct student stu[N])
{
int i=0,p=0;
for(i=1;i<=N;i++)
{
printf("现在添加第%d个联系人的信息!\n",i);
printf("条目编号:");
scanf("%d",&stu[i].num);
printf("姓名:");
scanf("%s",stu[i].name);
printf("性别(f or m):");
scanf("%s",stu[i].sex);
printf("联系人地址:");
scanf("%s",stu[i].clas);
printf("工资:\n");
printf("1.邮箱:");
scanf("%d",&stu[i].a);
printf("2.手机(电话)号码:");
scanf("%d",&stu[i].b);
printf("3.qq号码:");
scanf("%d",&stu[i].c);
stu[i].pjf=(stu[i].a+stu[i].b+stu[i].c)/(3.0);
}
return;
}
void xiugai(struct student stu[N])
{
int i,n,abc,def,ghi,jkl,j=0,k=0,oop,h=0,et=0;
do
{

if(et!=0)
{
printf("请选择:1.继续 2.返回 \n");
scanf("%d",&def);
}
if(def==2)
break;
printf("请添加要修改的联系人的条目编号:");
scanf("%d",&n);
for(i=1;i<=N;i++)
if(stu[i].num==n)
break;
printf("*****%d的信息如下:\n",stu[i].num);
printf("条目编号 姓名 性别 联系人地址 邮箱 手机(电话)号码 qq号码 三工资均值 \n");
printf("%-12d%-12s%-5s%-16s%-5d%-5d%-5d%-10.3f\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].clas,stu[i].a,stu[i].b,stu[i].c,stu[i].pjf);
printf("要改%d的几个信息?(1.2.3.4.5 中选一个数字添加)\n",stu[i].num);
scanf("%d",&ghi);
for(k=0;k<ghi;k++)
{
for(j=0;j<14;j++)
printf("^^");
printf("数据修改");
for(j=0;j<14;j++)
printf("^^");
printf("\n");
puts("选择要改的选项:1 条目编号 2 姓名 3 性别 4.联系人地址 5 联系方式修改 6 返回;");
for(j=0;j<32;j++)
printf("^^");
printf("\n");
scanf("%d",&abc);
if(abc==6)
return;
switch(abc)
{
case 1 : printf("原条目编号为%d,添加新条目编号:",stu[i].num);
scanf("%d",&stu[i].num); break;
case 2 : printf("原姓名为%s,添加新姓名:",stu[i].name);
scanf("%s",stu[i].name); break;
case 3 : printf("原性别为%s,添加新性别:",stu[i].sex);
scanf("%s",stu[i].sex); break;
case 4 : printf("原联系人地址为%s,添加新联系人地址:",stu[i].clas);
scanf("%s",stu[i].clas); break;
case 5 : printf("要改几种?(1,2,3)中选一个数字添加)\n");
scanf("%d",&oop);
for(h=0;h<oop;h++)
{
for(j=0;j<4;j++)
printf("^^");
printf("语数外工资修改");
for(j=0;j<4;j++)
printf("^^");
printf("\n");
printf("请选择:1.邮箱 2.手机(电话)号码 3.qq号码\n");
for(j=0;j<15;j++)
printf("^^");
printf("\n");
scanf("%d",&jkl);
if(jkl==1)
{
printf("原工资为%d,添加新邮箱工资:",stu[i].a);
scanf("%d",&stu[i].a);
}
else if(jkl==2)
{
printf("原工资为%d,添加新手机(电话)号码工资:",stu[i].b);
scanf("%d",&stu[i].b);
}
else
{
printf("原工资为%d,添加新qq号码:",stu[i].c);
scanf("%d",&stu[i].c);
}
}
break;
default : break;
}
et=1;
}
}while(abc!=5);
}
void chuli(struct student stu[N])
{
int xyz,i,j=0;
void paixu(struct student stu[N]);
void chaxun(struct student stu[N]);
void tongj(struct student stu[N]);
for(i=0;i<3;i++)
{
for(j=0;j<14;j++)
printf("^");
printf("数据处理");
for(j=0;j<14;j++)
printf("^");
printf("\n");
printf("请选择:1.排序 2.查询 3.统计 4.返回\n");
for(j=0;j<36;j++)
printf("^");
printf("\n");
scanf("%d",&xyz);
if(xyz==4)
break;
switch(xyz)
{
case 1: paixu(stu) ; break;
case 2: chaxun(stu) ; break;
case 3: tongj(stu) ; break;
}
}
}
void shuchu(struct student stu[N])
{
int i;
printf("条目编号 姓名 性别 联系人地址 邮箱 手机(电话)号码 qq号码 三工资均值 \n");
for(i=1;i<=N;i++)
{
stu[i].pjf=(stu[i].a+stu[i].b+stu[i].c)/(3.0);
printf("%-12d%-12s%-5s%-16s%-5d%-5d%-5d%-10.3f",stu[i].num,stu[i].name,stu[i].sex,stu[i].clas,stu[i].a,stu[i].b,stu[i].c,stu[i].pjf);
printf("\n");
}

}
void paixu(struct student stu[N])
{
int i,j;
struct student temp[N];
struct student *e[N];
for(i=1;i<=N;i++)
e[i]=&stu[i];
for(i=0;i<N-1;i++)
for(j=0;j<N-1-i;j++)
{
if(stu[j+2].num<stu[j+1].num)
{
temp[i+1]=*e[j+2];
*e[j+2]=*e[j+1];
*e[j+1]=temp[i+1];
}
}
printf("条目编号 姓名 性别 联系人地址 邮箱 手机(电话)号码 qq号码\n");
for(i=1;i<=N;i++)
{
printf("%-12d%-12s%-5s%-16s%-5d%-5d%-5d",stu[i].num,stu[i].name,stu[i].sex,stu[i].clas,stu[i].a,stu[i].b,stu[i].c);
printf("\n");
}
}
void chaxun(struct student stu[N])
{
int n,i,j,choice,yuw,shux,yingy,xuanz2,kz=1;
char xm[12],xbei[4],banj[20];
for(j=0;j<27;j++)
printf("^");
printf("查询");
for(j=0;j<27;j++)
printf("^");
printf("\n");
printf("请选择查询方式:1.按条目编号 2.按姓名 3.按联系人地址 4.按性别 5按工资\n");
for(j=0;j<59;j++)
printf("^");
printf("\n");
scanf("%d",&choice);
switch(choice)
{
case 1 : printf("请添加条目编号: ");
scanf("%d",&n);
for(i=1;i<=N;i++)
{
if(stu[i].num==n)
{
if(kz==1)
{
printf("条目编号 姓名 性别 联系人地址 邮箱 手机(电话)号码 qq号码 三工资均值 \n");
kz=0;
}
stu[i].pjf=(stu[i].a+stu[i].b+stu[i].c)/(3.0);
printf("%-12d%-12s%-5s%-16s%-5d%-5d%-5d%-10.3f",stu[i].num,stu[i].name,stu[i].sex,stu[i].clas,stu[i].a,stu[i].b,stu[i].c,stu[i].pjf);
printf("\n");
}
}
break;
case 2 : printf("请添加姓名:");
scanf("%s",xm);
for(i=1;i<=N;i++)
{
if(strcmp(stu[i].name,xm)==0)
{
if(kz==1)
{
printf("条目编号 姓名 性别 联系人地址 邮箱 手机(电话)号码 qq号码 三工资均值 \n");
kz=0;
}
stu[i].pjf=(stu[i].a+stu[i].b+stu[i].c)/(3.0);
printf("%-12d%-12s%-5s%-16s%-5d%-5d%-5d%-10.3f",stu[i].num,stu[i].name,stu[i].sex,stu[i].clas,stu[i].a,stu[i].b,stu[i].c,stu[i].pjf);
printf("\n");
}
}
break;
case 3 : printf("请添加联系人地址:");
scanf("%s",banj);
for(i=1;i<=N;i++)
{
stu[i].pjf=(stu[i].a+stu[i].b+stu[i].c)/(3.0);
printf("%-12d%-12s%-5s%-16s%-5d%-5d%-5d%-10.3f",stu[i].num,stu[i].name,stu[i].sex,stu[i].a,stu[i].b,stu[i].c,stu[i].pjf);
printf("\n");
}
}
break;
case 4 : printf("请添加性别:");
scanf("%s",xbei);
for(i=1;i<=N;i++)
{
if(strcmp(stu[i].sex,xbei)==0)
{
if(kz==1)
{
printf("条目编号 姓名 性别 联系人地址 邮箱 手机(电话)号码 qq号码 \n");
kz=0;
}
stu[i].pjf=(stu[i].a+stu[i].b+stu[i].c)/(3.0);
printf("%-12d%-12s%-5s%-16s%-5d%-5d%-5d%-10.3f",stu[i].num,stu[i].name,stu[i].sex,stu[i].a,stu[i].b,stu[i].c);
printf("\n");
}
}
break;
case 5 : for(j=0;j<18;j++)
printf("^");
printf("查询");
for(j=0;j<18;j++)
printf("^");
printf("\n");
printf("请选择一门联系方式来查询:1.邮箱 2.手机(电话)号码 3.qq号码 \n");
for(j=0;j<40;j++)
printf("^");
printf("\n");
scanf("%d",&xuanz2);
switch(xuanz2)
{
case 1 : printf("请添加邮箱:");
scanf("%d",&yuw);
for(i=1;i<=N;i++)
{
if(stu[i].a==yuw)
{
if(kz==1)
{
printf("条目编号 姓名 性别 联系人地址 邮箱 手机(电话)号码 qq号码 \n");
kz=0;
}
stu[i].pjf=(stu[i].a+stu[i].b+stu[i].c)/(3.0);
printf("%-12d%-12s%-5s%-16s%-5d%-5d%-5d%-10.3f",stu[i].num,stu[i].name,stu[i].sex,stu[i].a,stu[i].b,stu[i].c);
printf("\n");
}
}
break;
case 2 : printf("请添加手机(电话)号码:");
scanf("%d",&shux);
for(i=1;i<=N;i++)
{
if(stu[i].b==shux)
{
if(kz==1)
{
printf("条目编号 姓名 性别 联系人地址 邮箱 手机(电话)号码 qq号码 \n");
kz=0;
}
stu[i].pjf=(stu[i].a+stu[i].b+stu[i].c)/(3.0);
printf("%-12d%-12s%-5s%-16s%-5d%-5d%-5d%-10.3f",stu[i].num,stu[i].name,stu[i].sex,stu[i].a,stu[i].b,stu[i].c);
printf("\n");
}
}
break;
case 3 : printf("请添加qq号码:");
scanf("%d",&yingy);
for(i=1;i<=N;i++)
{
if(stu[i].c==yingy)
{
if(kz==1)
{
printf("条目编号 姓名 性别 联系人地址 邮箱 手机(电话)号码 qq号码 \n");
kz=0;
}
stu[i].pjf=(stu[i].a+stu[i].b+stu[i].c)/(3.0);
printf("%-12d%-12s%-5s%-16s%-5d%-5d%-5d%-10.3f",stu[i].num,stu[i].name,stu[i].sex,stu[i].a,stu[i].b,stu[i].c);
printf("\n");
}
}
break;
default : break;
}
break;
default :break;
}
}
void tongj(struct student stu[N])
{
int uuu,i,j=0;
void pjf(struct student stu[N]);
void bjgkm(struct student stu[N]);
for(i=0;i<2;i++)
{
for(j=0;j<10;j++)
printf("^^");
printf("统计");
for(j=0;j<10;j++)
printf("^^");
printf("\n");
printf("请选择:1.查看个人类或商务类联系方式 2.查看办公类联系方式 3.返回\n");
for(j=0;j<22;j++)
printf("^^");
printf("\n");
scanf("%d",&uuu);
if(uuu==3)
return;
if(uuu==1)
pjf(stu);
else
bjgkm(stu);
}
}
void pjf(struct student stu[N])
{
int yu=0,sh=0,yi=0;
int i;
for(i=1;i<=N;i++)
{
yu+=stu[i].a;
sh+=stu[i].b;
yi+=stu[i].c;
}
printf(" 商务类或个人类联系人有以下:\n");
printf("邮箱,手机(电话)号码,qq号码分别为:%.3f ,%.3f ,%.3f \n",yu*1.0/N,sh*1.0/N,yi*1.0/N);
printf("条目编号 姓名 联系人地址 \n");
for(i=1;i<=N;i++)
{
stu[i].pjf=(stu[i].a+stu[i].b+stu[i].c)/(3.0);
printf("%-11d%-12s%-10.3f\n",stu[i].num,stu[i].name);
}
}
void bjgkm(struct student stu[N])
{
int i;
printf(" 办公类联系人有以下:\n");
printf("邮箱,手机(电话)号码,qq号码分别为:\n");
printf("条目编号 姓名 联系人地址 \n");
for(i=1;i<=N;i++)
{
if(stu[i].a<800||stu[i].b<800||stu[i].c<800)
{
printf("%-11d%-12s%-16s",stu[i].num,stu[i].name,stu[i].clas);
if(stu[i].a<60)
printf(" 邮箱(%d)",stu[i].a);

if(stu[i].b<60)
printf(" 手机(电话)号码(%d)",stu[i].b);
if(stu[i].c<60)
printf(" qq号码(%d)",stu[i].c);
printf("\n");
}
}

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
就是西北独狼
2011-07-04 · TA获得超过131个赞
知道答主
回答量:329
采纳率:0%
帮助的人:150万
展开全部
我的天啊我业遇到了同样的问题啊,你说怎么整啊但是我真的是不会做啊
哎炯啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式