当前位置:首页 » 编程语言 » c语言打造简单电话
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言打造简单电话

发布时间: 2023-02-11 06:09:50

c语言编写一个通讯录系统 用简单一点的c😊

#defineN100
#defineSIZE30
#include<stdio.h>
#include<string.h>
#include<conio.h>

structstudent{
charnum[SIZE];
charname[SIZE];
chartel[SIZE];
};
/*函数声明*/
voidmyprint();/*显示菜单*/
intmycreat(structstudent*p,intn);/*输入通讯录*/voidmydisplay(structstudent*p,intn);/*显示通讯录*/voidmysearch(structstudent*p,intn);/*查找*/
voidmymodify(structstudent*p,intn);/*修改通讯录*/intmyadd(structstudent*p,intn);/*增加通讯录*/intmydelete(structstudent*p,intn);/*删除*/voidmysort(structstudent*p,intn);/*排序*/
voidsch_num(structstudent*p,intn);/*按学号查找*/voidsch_name(structstudent*p,intn);/*按姓名查找*/
intloadinfo(structstudent*p,intn);/*载入通讯录信息*/intsaveinfo(structstudent*p,intn);/*保存通讯录信息*/voidmain(){
/*文件定义*/charchoose,yes_no;
structstudentrecord[N];/*存放通讯录信息,共100条*/inttotal=0,flag;/*通讯录总数*/
total=loadinfo(record,N);/*从文件读取记录信息,不超过100条*/do{
myprint();/*显示菜单*/
printf("请选择:");do{
choose=getchar();}
while(choose<'0'||choose>'9');switch(choose){
case'1':
total=mycreat(record,total);break;case'2':
mydisplay(record,total);break;case'3':
mysearch(record,total);break;case'4':
mymodify(record,total);break;case'5':
total=myadd(record,total);break;case'6':
total=mydelete(record,total);break;case'7':
mysort(record,total);break;case'8':
flag=saveinfo(record,total);if(flag==1)
printf(" 保存成功! ");else
printf(" 保存失败! ");break;case'0':
break;default:
printf(" %c为非法选项! ",choose);}
if(choose=='0')break;printf(" 要继续选择吗(Y/N)?");do{
yes_no=getchar();}
while(yes_no!='Y'&&yes_no!='y'&&yes_no!='N'&&yes_no!='n');}
while(yes_no!='Y'||yes_no!='y');}
voidmyprint()/*显示菜单信息*/{
printf(" ");printf(" ");printf("请输入选项编号(0--7) ");printf("1---批量输入通讯录 ");printf("2---显示通讯录 ");printf("3---查询通讯录 ");printf("4---修改通讯录 ");printf("5---添加通讯录 ");printf("6---删除通讯录 ");printf("7---排序通讯录 ");printf("8---保存通讯录 ");printf("0---退出 ");printf(" ");
}
intmycreat(structstudent*p,intn)/*批量输入学生信息*/{
inti=0;intm;
printf("添加前的记录,共有<%d>个: ",n);printf(" 记录号学号姓名电话号码 ");
i=0;
while((i<n)&&(strcmp(p->num,"")!=0)){
printf("%d:%15s%15s%15s ",i+1,p->num,p->name,p->tel);i++;p++;}
printf(" 请输入要输入的学生人数(<%d):",N-n);
scanf("%d",&m);i=0;
while(i<m){
printf(" ");
printf("请输入第%d个记录: ",i+1);printf("学号:");do{
gets(p->num);}
while(strcmp(p->num,"")==0);printf("姓名:");gets(p->name);
printf("电话号码:");gets(p->tel);p++;i++;}
returnm+n;}
voidmydisplay(structstudent*p,intn)/*显示学生信息*/{
/*clrscr();*/inti=0;
printf(" 记录号学号姓名电话号码 ");while(i<n){
printf("%d:%15s%15s%15s ",i+1,p->num,p->name,p->tel);p++;i++;}}
voidmymodify(structstudent*p,intn)/*修改学生信息*/{
inti;
charnam[10];mydisplay(p,n);
printf(" 请输入要修改记录的姓名:");gets(nam);
for(i=0;i<n;i++,p++)
if(strcmp(nam,p->name)==0)break;if(i==n)
printf("无此人! ");else{
printf("请输入正确的学号:");do{
gets(p->num);}
while(strcmp(p->num,"")==0);printf("请输入正确的姓名:");gets(p->name);
printf("请输入正确的电话号码:");gets(p->tel);}
}
voidmysearch(structstudent*p,intn)/*查找指定学生*/{
charc;
mydisplay(p,n);
printf(" 按学号查询(h),还是按姓名查询(m)?");c=getchar();
if(c=='h'||c=='H')
sch_num(p,n);elseif(c=='m'||c=='M')
sch_name(p,n);else
printf(" 非法字符! ");}
voidsch_num(structstudent*p,intn)/*按学号查询*/{
inti,flag=0;charnm[10];
printf(" 请输入要查询记录的学号:");gets(nm);
for(i=0;i<n;i++)
if(strcmp(nm,p[i].num)==0)
{
printf(" 学号姓名电话号码 ");printf("%15s%15s%15s ",p[i].num,p[i].name,p[i].tel);flag=1;
}
if(flag==0)
printf("无此人! ");}
voidsch_name(structstudent*p,intn)/*按姓名查询*/{
inti,flag=0;charnam[10];
printf(" 请输入要查询记录的姓名:");gets(nam);
for(i=0;i<n;i++)
if(strcmp(nam,p[i].name)==0){
printf(" 学号姓名电话号码 ");printf("%15s%15s%15s ",p[i].num,p[i].name,p[i].tel);flag=1;}
if(flag==0)
printf("无此人! ");
}
intmyadd(structstudent*p,intn)/*增加学生信息*/{
inti=0;charc;
structstudentt,*q;
printf("添加前的记录: ");printf(" 学号姓名电话号码 ");i=0;q=p;
/*显示原有记录信息*/while(i<n){
printf("%15s%15s%15s ",q->num,q->name,q->tel);i++;q++;}do{
printf("请输入新记录的学号: ");do{
gets(t.num);
}
while(strcmp(t.num,"")==0);/*学号不能为空*/printf("请输入新记录的姓名:");gets(t.name);
printf("请输入新记录的电话号码:");gets(t.tel);
for(i=0;i<n;i++)
if(strcmp(t.num,(p+i)->num)==0||strcmp(t.tel,(p+i)->tel)==0){
printf("学号或电话号码重,要重新输入吗(Y/N)?");c=getchar();putchar(' ');break;}
/*找到最后,没有重复*/if(i==n){
*(p+i)=t;
printf("添加后的记录: ");printf(" 学号姓名电话号码 ");for(i=0;i<n+1;i++)
printf("%15s%15s%15s ",(p+i)->num,(p+i)->name,p[i].tel);break;}
}
while(c=='y'||c=='Y');returnn+1;}
intmydelete(structstudent*p,intn)/*删除学生信息*/{
inti,x;
charc,nm[10],nam[10];
printf("删除前的记录: ");printf(" 学号姓名电话号码 ");for(i=0;i<n;i++)
printf("%15s%15s%15s ",p[i].num,p[i].name,p[i].tel);printf("按学号删除(h),还是按姓名删除(m)?");c=getchar();
if(c=='h'||c=='H'){
printf(" 请输入要删除记录的学号:");gets(nm);
for(x=0;x<n;x++)
{
gets(t.num);
}
while(strcmp(t.num,"")==0);/*学号不能为空*/printf("请输入新记录的姓名:");gets(t.name);
printf("请输入新记录的电话号码:");gets(t.tel);
for(i=0;i<n;i++)
if(strcmp(t.num,(p+i)->num)==0||strcmp(t.tel,(p+i)->tel)==0){
printf("学号或电话号码重,要重新输入吗(Y/N)?");c=getchar();putchar(' ');break;}
/*找到最后,没有重复*/if(i==n){
*(p+i)=t;
printf("添加后的记录: ");printf(" 学号姓名电话号码 ");for(i=0;i<n+1;i++)
printf("%15s%15s%15s ",(p+i)->num,(p+i)->name,p[i].tel);break;}
}
while(c=='y'||c=='Y');returnn+1;}
intmydelete(structstudent*p,intn)/*删除学生信息*/{
inti,x;
charc,nm[10],nam[10];
printf("删除前的记录: ");printf(" 学号姓名电话号码 ");for(i=0;i<n;i++)
printf("%15s%15s%15s ",p[i].num,p[i].name,p[i].tel);printf("按学号删除(h),还是按姓名删除(m)?");c=getchar();
if(c=='h'||c=='H'){
printf(" 请输入要删除记录的学号:");gets(nm);
for(x=0;x<n;x++)
intj,i,k;charc1,c2;
structstudenttemp;
printf(" 排序前的记录: ");printf(" 学号姓名电话号码 ");for(i=0;i<n;i++)
printf("%15s%15s%15s ",p[i].num,p[i].name,p[i].tel);printf(" 按学号排序(h),还是按姓名排序(m)?");c1=getchar();
if(c1=='h'||c1=='H'){
printf(" 按升序排序(s),还是按降序排序(j)?");c2=getchar();/*升序*/
if(c2=='s'||c2=='S'){
for(i=0;i<n-1;i++){
k=i;
for(j=i;j<n;j++)
if(strcmp(p[k].num,p[j].num)<0)
k=j;
temp=p[k];p[k]=p[i];p[i]=temp;
}
printf(" 排序后的记录: ");printf(" 学号姓名电话号码 ");for(i=0;i<n;i++)
printf("%15s%15s%15s ",p[i].num,p[i].name,p[i].tel);}
elseif(c2=='j'||c2=='J')/*降序*/{
for(i=0;i<n-1;i++){
k=i;
for(j=0;j<n;j++)
if(strcmp(p[k].num,p[j].num)<0)
k=j;
temp=p[k];p[k]=p[i];p[i]=temp;
}
printf("排序后的记录: ");printf(" 学号姓名电话号码 ");for(i=0;i<n;i++)
printf("%15s%15s%15s ",p[i].num,p[i].name,p[i].tel);}
elseprintf(" 非法字符 ");}
elseif(c1=='m'||c1=='M')/*按姓名排序*/{
printf(" 按升序排序(s),还是按降序排序(j)?");c2=getchar();
if(c2=='s'||c2=='S'){
for(i=0;i<n-1;i++){
k=i;
for(j=0;j<n;j++)
if(strcmp(p[k].name,p[j].name)<0)
k=j;
temp=p[k];p[k]=p[i];p[i]=temp;}
printf("排序后的记录: ");printf(" 学号姓名电话号码 ");for(i=0;i<n;i++)
printf("%15s%15s%15s ",p[i].num,p[i].name,p[i].tel);
}
elseif(c2=='j'||c2=='J')/*降序*/{
for(i=0;i<n-1;i++){
k=i;
for(j=i;j<n;j++)
if(strcmp(p[k].name,p[j].name)<0)
k=j;
temp=p[k];p[k]=p[i];p[i]=temp;
}
printf("排序后的记录: ");printf(" 学号
姓名电话号码 ");
for(i=0;i<n;i++)
printf("%15s%15s%15s ",p[i].num,p[i].name,p[i].tel);}
elseprintf(" 非法字符! ");}
elseprintf(" 非法字符! ");}
intloadinfo(structstudent*p,intn)/*载入通讯录信息*/{
FILE*fp;inti,all=0;
charfilename[30]="tongxunlu.txt";fp=fopen(filename,"r");if(fp==NULL){
printf(" ***不能打开文件%s,或%s文件不存在,创建一个新文件!
",filename,filename);*/
fp=fopen(filename,"w");}
fscanf(fp,"%d ",&all);
if(all>N)/*读取记录总数*/{
printf("文件记录数太多,不能读取");return0;}
for(i=0;i<all;i++)/*读取记录信息*/{
fscanf(fp,"%s%s%s ",p[i].num,p[i].name,p[i].tel);}
fclose(fp);/*关闭文件*/returnall;}
intsaveinfo(structstudent*p,intn){
FILE*fp;inti,all=0;
charfilename[30]="txl.dat";/*文件可以用记事本打开*/fp=fopen(filename,"w");if(fp==NULL){
printf(" ***不能建立或打开文件%s!***",filename);return0;}
fprintf(fp,"%d ",n);for(i=0;i<n;i++)
fprintf(fp,"%s%s%s ",p[i].num,p[i].name,p[i].tel);fclose(fp);return1;}

抄来的

❷ C语言编写电话簿求救中。。。。。。紧急

void
add()
{

TEL
*p1,*p2;

p1=(TEL*)malloc(sizeof(TEL));

printf("请输入姓名
电话!\n");

scanf("%s
%s",p1->name,p1->phonenumber);

p1->next=NULL;

if(head==NULL)

{

head=(TEL
*)malloc(sizeof(TEL));

head->next=p1;

}

else

{

for(p2=head;p2
!=
NULL;
p2=p2->next)

{

if
(p2->next
==
NULL)

break;

}

p2->next=p1;

}

printf("添加成功!");
}
void
del()
{

TEL
*p5,*p6;

p5=p6=head;

char
dname[20];

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

scanf("%s",dname);

while(p5
!=
NULL)

{

p6
=
p5->next;

if
(NULL
==
p6)

{

return;

}

if(strcmp(p6->name,dname)==0)

{

p5->next=p6->next;

free(p6);

print();

return;

}

p5=p5->next;

}
}
void
main()
{

char
key;

menu();

while(1)

{

printf("请选择:");

scanf("%c",&key);

switch(key)

{case'a':add();
break;

case
'p':print();break;

case
'd':del();break;

case
's':search();break;

default:printf("输入错误!请重新输入!\n");break;

}

fflush(stdin);

}
}

❸ 一个用C语言编电话簿的题

#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <string.h>
#define ID struct id
struct id
{
char name[20];
char tele[20];
ID *next;
};

int pc=0;

ID *creat()
{
ID *p1,*p2,*head;
char str[20];
p1=p2=head=NULL;
printf("\t\t\t 开始输入记录(姓名 # 结束)!\n");
while(1)
{
printf("请输入姓名:\n");scanf("%s",str);getchar();
if(strcmp(str,"#")==0) break;
p1=(ID*)malloc(sizeof(ID));
strcpy(p1->name,str);
printf("请输入电话号码:\n");scanf("%s",p1->tele);getchar();

if(head==NULL)
{
head=p1;
p2=p1;
}
else
{
p2->next=p1;
p2=p1;
}
pc++;
}
p2->next=NULL;
return(head);
}

/*输入/添加记录*/
ID *insert(ID *head)
{
ID *temp,*p1,*p2;
printf("插入操作开始!!!\n");
temp=(ID *)malloc(sizeof(ID));
printf("请输入姓名:\n");scanf("%s",temp->name);getchar();
printf("请输入电话号码:\n");scanf("%s",temp->tele);getchar();

if (head==NULL)
{
head=temp;
temp->next=NULL;
}
else
{
p1=head;
while(p1!=NULL)
{
p2=p1;
p1=p1->next;
}
p2->next=temp;
temp->next=p1;
}

printf("插入成功");
pc++;
return (head);
}

/*删除记录*/
ID *delet(ID *head)
{
ID *p1,*p2;
char str[20];
printf("请输入要删除的电话号码:");scanf("%s",str);getchar();
p1=head;
if (head==NULL)
{
printf("没有记录\n");
goto end;
}
while(p1!=NULL && strcmp(p1->tele,str))
{
p2=p1;p1=p1->next;
}
if(p1==NULL)
printf("未找到符合记录!\n");
else if(strcmp(p1->tele,str)==0)
{
if (p1==head)
head=p1->next;
else
p2->next=p1->next;
printf("删除成功!!!\n");
pc--;
}
end:return head;
}

/*查找记录*/
ID *search(ID *head)
{
ID *p1,*p2;
int flag=0;
char c;
printf("请输入姓名的首字母:");scanf("%c",&c);getchar();
p1=head;
while( p1!=NULL)
{
if(p1->name[0]==c)
{
printf("姓名:%s\t电话号码:%s\n",p1->name,p1->tele);
flag=1;
}
p2=p1;p1=p1->next;
}
if(flag==0) printf("未找到符合记录!\n");
return head;
}

/*修改记录*/
ID *modify(ID *head)
{
ID *p1,*p2;
int mode;
char str[20];
printf("请输入要修改记录的姓名:");scanf("%s",str);getchar();
p1=head;
while( p1!=NULL)
{
if(strcmp(p1->name,str)==0)
{
printf("1.姓名:%s\t2.电话号码:%s\n",p1->name,p1->tele);
printf("请选择要修改选项:\n");
scanf("%d",&mode);getchar();
if(mode==1)
{
printf("请输入修改后的姓名\n");
scanf("%s",p1->name);getchar();
}
else if(mode==2)
{
printf("请输入修改后的电话号码\n");
scanf("%s",p1->tele);getchar();
}
else
printf("输入有误!\n");
break;
}
p2=p1;p1=p1->next;
}
if(p1==NULL) printf("未找到符合要求的记录!\n");
return head;
}

/*显示结果函数*/
void print(ID *head)
{
ID *p;
p=head;
printf("\t\t\t*****************\n");
printf("显示结果是:\n");
printf("姓名\t电话号码\n");
if(head!=NULL)
do
{
printf("%s\t%s\n",p->name,p->tele);
p=p->next;
} while(p!=NULL);
}

void main()
{
ID *head=NULL;
int choise;
printf("\t\t\t* * * * C语言课设* * * *\n");
while(1)
{
printf("\t\t 电话簿管理系统\n");
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
printf("\t\t 1.输入\n");
printf("\t\t 2.显示\n");
printf("\t\t 3.查找\n");
printf("\t\t 4.插入\n");
printf("\t\t 5.删除\n");
printf("\t\t 0.退出\n");
printf("\n");
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
printf("请选择(0-6):");
scanf("%d",&choise);getchar();
switch(choise)
{
case 1: head=creat();
break;
case 2: print(head);
break;
case 3: head=search(head);
break;
case 4: head=insert(head);
break;
case 5: head=delet(head);
break;
case 0:
exit(0);
break;
default :printf("输入错误,请重新输入!\n");
}
}
}

这也是我下到的...自己懒得编了..其实用单链表很简单,就是麻烦点...

❹ c语言电话薄设计:

以完成,成功。图如下,包括添加、查找、修改、删除、退出等,可以通过生成的txt文件查看结果

#include<stdio.h>

#include<string.h>

#include<stdlib.h>

structperson

{

charname[8];

chartel[15];

charaddr[50];

};

charfilename[20]="txl.txt";

FILE*fp;

voidoutput();

voidsearch();

voidappend();

voidmodify();

voiddel();

voidmain()

{

intm;

fp=fopen(filename,"w");

fprintf(fp,"%-10s%-20s%-50s ","姓名","电话号码","住址");

fclose(fp);

while(1)

{

printf(" *********欢迎使用通讯录信息管理系统********* ");

printf(" 添加,请按1");

printf(" 查找,请按2");

printf(" 修改,请按3");

printf(" 删除,请按4");

printf(" 输出,请按5");

printf(" 退出,请按0 ");

printf(" ******************************************** ");

printf("Pleaseselect(0--5):");

scanf("%d",&m);

if(m>=0&&m<=5)

{

switch(m)

{

case1:append();

break;

case2:search();

break;

case3:modify();

break;

case4:del();

break;

case5:output();

break;

case0:exit(0);

}

printf(" 操作完毕,请再次选择!");

}

else

printf(" 选择错误,请再次选择!");

}

}

/*输出模块output():输出通讯录中联系人通讯信息的子函数*/

voidoutput()

{

structpersonone;

if((fp=fopen(filename,"r"))==NULL)

{

printf(" 不能打开通讯录!");

exit(0);

}

printf(" %20s ","通讯录");

while(!feof(fp))

{

fscanf(fp,"%s%s%s ",one.name,one.tel,one.addr);

printf("%-10s%-20s%-50s",one.name,one.tel,one.addr);

}

fclose(fp);

}

/*添加模块append():向通讯录中添加某人通讯信息的子函数*/

voidappend()

{

structpersonone;

if((fp=fopen(filename,"a"))==NULL)

{

printf(" 不能打开通讯录!");

exit(0);

}

printf(" 请输入添加的姓名、电话号码及住址 ");

scanf("%s%s%s",one.name,one.tel,one.addr);

fprintf(fp,"%-10s%-20s%-50s ",one.name,one.tel,one.addr);

fclose(fp);

}

/*查找模块search():在通讯录中查找某人通讯信息的子函数*/

voidsearch()

{

intk=0;

charnamekey[8];

structpersonone;

printf(" 请输入姓名:");

scanf("%s",namekey);

if((fp=fopen(filename,"rb"))==NULL)

{

printf(" 不能打开通讯录!");

exit(0);

}

while(!feof(fp))

{

fscanf(fp,"%s%s%s ",one.name,one.tel,one.addr);

if(!strcmp(namekey,one.name))

{

printf(" 已查到,记录为:");

printf(" %-10s%-18s%-50s",one.name,one.tel,one.addr);

k=1;

}

}

if(!k)

printf(" 对不起,通讯簿中没有此人的记录。");

fclose(fp);

}

/*修改模块modify():在通讯录中修改某人通讯信息的子函数*/

voidmodify()

{

intk=0;

longoffset;

charnamekey[8];

structpersonone;

printf(" 请输入姓名:");

scanf("%s",namekey);

if((fp=fopen(filename,"r+"))==NULL)

{

printf(" 不能打开通讯录!");

exit(0);

}

while(!feof(fp))

{

offset=ftell(fp);

fscanf(fp,"%s%s%s ",one.name,one.tel,one.addr);

if(!strcmp(namekey,one.name))

{

k=1;

break;

}

}

if(k)

{

printf(" 已查到,记录为:");

printf(" %-10s%-18s%-50s",one.name,one.tel,one.addr);

printf(" 请输入新姓名、电话号码及住址:");

scanf("%s%s%s",one.name,one.tel,one.addr);

fseek(fp,offset,SEEK_SET);

/*printf("%ld",ftell(fp));*/

fprintf(fp,"%-10s%-20s%-50s ",one.name,one.tel,one.addr);

}

else

printf(" 对不起,通讯录中没有此人的记录。");

fclose(fp);

}

/*删除模块delete():在通讯录中删除某人通讯信息的子函数*/

voiddel()

{

intm,k=0;

longoffset1;

charnamekey[8];

structpersonone;

printf(" 请输入姓名:");

scanf("%s",namekey);

if((fp=fopen(filename,"r+"))==NULL)

{

printf(" 不能打开通讯录!");

exit(0);

}

while(!feof(fp))

{

offset1=ftell(fp);

fscanf(fp,"%s%s%s ",one.name,one.tel,one.addr);

if(!strcmp(namekey,one.name))

{

k=1;

if(k)

{

printf(" 已查到,记录为");

printf(" %-10s%-18s%-50s",one.name,one.tel,one.addr);

printf(" 确实要删除,按1;不删除,按0:");

scanf("%d",&m);

if(m)

{

fseek(fp,offset1,SEEK_SET);//fseek函数用来改变文件指针位置,SEEK_SET为0,表示文件开头;为1,表示当前位置;为2表示文件结尾;

fprintf(fp,"%-10s%-20s%-50s ","","","");

}

else

printf(" 您已取消对该通讯人信息的修改。 ");

fclose(fp);

}

return;

}

}

if(!k)printf("对不起,通讯录中没有此人 ");

}

❺ C语言编写一个简短的通讯录,输入联系人得知电话号码和性别等基本信息就可以,谢谢!

我重写一个哦

classtongxunlu{
stringa;
stringb;
stringc;
}
tongxunlumyfriend[2];
cin>>myfriend[0].a>>myfriend[0].b>>myfriend[0].c;//给我的朋友赋值,就是添加信息
cout<<myfriend[0].a<<myfriend[0].b<<myfriend[0].c;//输出

这就是给他注入信息然后在取出来个过程,注释写得很详细,根据你的需要自己修改吧,这个是我以前回答别人的时候写的

❻ C语言用结构体编写电话簿

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int len=0,j,q,u, x,n=0,i=0,s;
int b;
int c;
void sb()
{
printf("\t&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&\n");
printf("\t& &\n");
printf("\t& 通 讯 录 管 理 系 统 &\n");
printf("\t& &\n");
printf("\t& 主菜单 &\n");
printf("\t& &\n");
printf("\t& <1>添加联系人 &\n");
printf("\t& <2>浏览已有联系人 &\n");
printf("\t& <3>修改联系人信息 &\n"); //菜单界面
printf("\t& <4>删除联系人 &\n");
printf("\t& <5>查询联系人 &\n");
printf("\t& <6>退出 &\n");
printf("\t& &\n");
printf("\t& &\n");
printf("\t&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&\n");
}

struct person
{int num[100];
char name[30];
char jiguan[20];
char phone1[30];
char phone2[30];
char e_mail[40];
}a[100];

void shuru()
{
printf("请输入联系人信息,输入'#'返回\n");
while(1)
{system("cls");
sb();
printf("请输入联系人姓名:\n");
scanf("%s",&a[i].name);
printf("请输入籍贯:\n");
scanf("%s",&a[i].jiguan);
printf("请输入号码1:\n");
scanf("%s",&a[i].phone1);
printf("请输入号码2:\n");
scanf("%s",&a[i].phone2);
printf("请输入邮箱:\n");
scanf("%s",&a[i].e_mail);
a[i].num[i]=i+1;
len=len+1; //添加联系人
i=i+1;
system("cls");
sb();
printf("\n");
printf("添加成功!\n输入'1'继续添加,输入'0'返回主菜单\n");
scanf("%d",&b);
if(b==0){system("cls");
sb();break;}
}
printf("已添加%d个联系人\n",len);
printf("请选择菜单功能:");
}

void tt()
{
printf("\t******************************************************************\n");
printf("\t* *\n");
printf("\t* ~☆~ 此程序由小山B同学独自编写,此程序解释权归小山B所有。 *\n");
printf("\t* 请用户使用时遵守《版权法》及相关法律法规,不得以任何名义 *\n"); //开始界面
printf("\t* 复制、传播此程序代码。版权所有,侵权必究! *\n");
printf("\t* *\n");
printf("\t******************************************************************\n");

printf("\t选择1代表用户同意以上条约并继续使用,选择2退出界面。\n");

}

void ss()
{
jixu:
system("cls");
sb();
printf("\n");
printf("已有联系人:\n");
for(j=0;j<len;j++)
printf("%d\t%s\t%s\n",j+1,a[j].name,a[j].phone1); //浏览联系人
printf("\n");
printf("输入对应编号查看详细信息,输入'0'返回主菜单\n");
scanf("%d",&i);
if(i==0){system("cls");
sb();printf("请选择菜单功能:\n");return ;}
system("cls");
sb();
printf("\t姓名:\t%s\n\t籍贯:\t%s\n\tphone1:\t%s\n\tphone2:\t%s\n\te-mail:\t%s\n",a[i-1].name,a[i-1].jiguan,a[i-1].phone1,a[i-1].phone2,a[i-1].e_mail);
printf("\n输入'9'返回上一页,输入'0'返回主菜单,\n");
scanf("%d",&c);
if(c==9){goto jixu;}
else{
system("cls");
sb();
printf("请选择菜单功能:\n");}
}

void shanchu()
{ system("cls");
sb();
printf("已有联系人:\n");
for(j=0;j<len;j++)
printf("%d\t%s\t%s\n",j+1,a[j].name,a[j].phone1); //删除联系人
printf("\n");
printf("请选择需要删除的联系人编号:");
scanf("%d",&x);
for(s=x;s<=len;s++)
a[s-1]=a[s];
len=len-1;
system("cls");
sb();
printf("删除成功!\n");
printf("请选择菜单功能:\n");

}

void xiugai()
{
system("cls");
sb();
printf("已有联系人:\n");
for(j=0;j<len;j++)
printf("%d\t%s\t%s\n",j+1,a[j].name,a[j].phone1); //修改联系人
printf("\n");
printf("请选择需要修改的联系人编号:");
scanf("%d",&x);
system("cls");
sb();
printf("\n(1)\t%s\n(2)\t%s\n(3)\t%s\n(4)\t%s\n(5)\t%s\n",a[x-1].name,a[x-1].jiguan,a[x-1].phone1,a[x-1].phone2,a[x-1].e_mail);
printf("\n请输入需要修改的信息编号:\n");
scanf("%d",&c);
if(c==1){printf("请输入新姓名:\n");scanf("%s",a[x-1].name);}
if(c==2){printf("请输入新籍贯:\n");scanf("%s",a[x-1].jiguan);}
if(c==3){printf("请输入新号码:\n");scanf("%s",a[x-1].phone1);}
if(c==4){printf("请输入新号码:\n");scanf("%s",a[x-1].phone2);}
if(c==5){printf("请输入新邮箱:\n");scanf("%s",a[x-1].e_mail);}
system("cls");
sb();
printf("修改成功!\n");
printf("请选择菜单功能:\n");

}

void chaxun()
{int v,p;
char t[20];hehe:
system("cls");
sb();
printf("请选择查询方式:\n");
printf("\n");
printf("1.通过姓名查询\t2.通过号码查询\n\n9.返回主菜单\n");
scanf("%d",&v);
p=v; //查询联系人
if(p==1)
{system("cls");
sb();
printf("请输入查询的姓名:\n");
scanf("%s",t);

for(i=0;i<len;i++)
if(strcmp(t,a[i].name)==0)
{system("cls");sb();
printf("\t姓名:\t%s\n\t籍贯:\t%s\n\tphone1:\t%s\n\tphone2:\t%s\n\te-mail:\t%s\n",a[i].name,a[i].jiguan,a[i].phone1,a[i].phone2,a[i].e_mail);
printf("\n输入'9'返回上一页,输入'0'返回主菜单,\n");
scanf("%d",&c);
if(c==9){goto hehe;}
else{
system("cls");
sb();
printf("请选择菜单功能:\n"); return;}
}
}

if(p==2)
{system("cls");
sb();printf("请输入查询的号码:\n");
scanf("%s",t);

for(i=0;i<len;i++)
if(strcmp(t,a[i].phone1)==0)
{system("cls");sb();
printf("姓名:\t%s\n籍贯:\t%s\nphone1:\t%s\nphone2:\t%s\ne-mail:\t%s\n",a[i].name,a[i].jiguan,a[i].phone1,a[i].phone2,a[i].e_mail);
printf("\n输入'9'返回上一页,输入'0'返回主菜单,\n");
scanf("%d",&c);
if(c==9){goto hehe;}
else{system("cls");sb();printf("请选择菜单功能:\n");return;}}

for(i=0;i<len;i++)
if(strcmp(t,a[i].phone2)==0)
{system("cls");sb();
printf("姓名:\t%s\n籍贯:\t%s\nphone1:\t%s\nphone2:\t%s\ne-mail:\t%s\n",a[i].name,a[i].jiguan,a[i].phone1,a[i].phone2,a[i].e_mail);
printf("\n输入'9'返回上一页,输入'0'返回主菜单,\n");
scanf("%d",&c);
if(c==9){goto hehe;}
else{system("cls");sb();printf("请选择菜单功能:\n");return;}}
}

if(p==9){system("cls");sb();printf("请选择菜单功能:\n");return;}
else{printf("输入错误!\n请重新输入,或输入9返回主菜单\n");goto hehe;}

}

void main()
{int g;
tt();
scanf("%d",&g);
if(g==1){ system("cls");
printf("");
sb();
printf("请选择菜单功能:");

scanf("%d",&u);
q=u;
while(q!=6) //主函数
{
if(q==1) { system("cls"); sb(); shuru();}
if(q==2) { ss(); }
if(q==3) { xiugai(); }
if(q==4) { shanchu(); }
if(q==5) { chaxun(); }

scanf("%d",&q);
}

system("cls");
sb();
printf("感谢使用!\n");

}

else{ system("cls");
printf("感谢使用!\n");}

}

这是我很久之前写的了。。。你挑着改就行了,功能都没什么问题

❼ 简单个人电话号码管理系统用C语言编译

打酱油的!

❽ 用C语言编写一个简单的通讯录软件,实现简单的 姓名 电话 邮箱 地址 的 存入 与 查找。

#include <stdio.h>
#include <string.h>

const int MAX_NAME = 99;
const int MAX_PHONE = 27;
const int MAX_ADDR = 127;

typedef struct _PersonInfo
{
char name[MAX_NAME + 1];
char phone[MAX_PHONE + 1];
char addr[MAX_ADDR + 1];
}PersonInfo ;

const char *ID = "编号:";
const char *NAME = "姓名:";
const char *PHONE = "电话:";
const char *ADDR = "地址:";

const int MAX_NUM = 512;
PersonInfo g_piArry[MAX_NUM];

static int read_line ( FILE *fp, char *line, int max_length )
{
int i;
char ch;

/* initialize index to string character */
i = 0;

/* read to end of line, filling in characters in string up to its
maximum length, and ignoring the rest, if any */
for(;;)
{
/* read next character */
ch = fgetc(fp);

/* check for end of file error */
if ( ch == EOF )
return -1;

/* check for end of line */
if ( ch == '\n' )
{
/* terminate string and return */
line[i] = '\0';
return 0;
}

/* fill character in string if it is not already full*/
if ( i < max_length )
line[i++] = ch;
}

/* the program should never reach here */
return -1;
}

void menu_add();
void menu_print();
void menu_delete();
void menu_modify();
void menu_detail();

/* codes for menu */
#define PRINT_CODE 1
#define ADD_CODE 2
#define DEL_CODE 3
#define MOD_CODE 4
#define DETAIL_CODE 5
#define EXIT_CODE 6

int main(void)
{
memset(g_piArry, 0, sizeof(g_piArry));

for(;;)
{
int choice, result;
char line[301];

// FILE *fp1=fopen("input2","r");

/* print menu to standard error */
fprintf ( stderr, "\nOptions:\n" );
fprintf ( stderr, "%d: 显示所有已录入的通讯录\n", PRINT_CODE );
fprintf ( stderr, "%d: 录入新纪录\n", ADD_CODE );
fprintf ( stderr, "%d: 删除一条记录\n", DEL_CODE );
fprintf ( stderr, "%d: 修改一条纪录\n", MOD_CODE );
fprintf ( stderr, "%d: 根据姓名,电话或地址查询相关信息\n", DETAIL_CODE );
fprintf ( stderr, "%d: 退出系统\n", EXIT_CODE );
fprintf ( stderr, "\nEnter option: " );

if ( read_line ( stdin, line, 300 ) != 0 ) continue;
// read_line (fp1 , line, 300 ) ;

//printf("\n-----------%s-----------\n",line);

result = sscanf ( line, "%d", &choice );

if ( result != 1 )
{
fprintf ( stderr, "corrupted menu choice\n" );
continue;
}

switch ( choice )
{
case ADD_CODE: /* add book to database */
menu_add();
break;

case PRINT_CODE: /* get book details from database */
menu_print();
break;

case DEL_CODE: /* delete book from database */
menu_delete();
break;

case MOD_CODE: /* print database contents to screen
(standard output) */
menu_modify();
break;

case DETAIL_CODE: /* print tree to screen (standard output) */
menu_detail();
break;

/* exit */
case EXIT_CODE:
break;

default:
fprintf ( stderr, "illegal choice %d\n", choice );
break;
}

/* check for exit menu choice */
if ( choice == EXIT_CODE )
break;
}

return 0;
}

bool isdigit(char n)
{
if (n <= '9' && n >= '0')
{
return true;
}
else
{
return false;
}
}

int IsString(char *szBuff)
{
const int nLen = strlen(szBuff);

int nDigitCnt = 0;
int nPos = 0;
for (nPos = 0; nPos < nLen; nPos++)
{
if (isdigit(szBuff[nPos]))
{
nDigitCnt++;
}
}

if (nLen == nDigitCnt)
{
fprintf(stderr, "The words(%s) which you entered is digits, enter again!\n", szBuff);
return 0;
}

return 1;
}

/* trim the space of the words */
static int trim_space(char *p)
{
char *q = NULL;
if(*p != '\0')
{
q = p + strlen(p) - 1;
}
else
{
return -1;
}

for(; *q == ' '; q--);
*(q + 1) ='\0';

for(q = p; *q == ' '; q++);
strcpy(p,q);

return 0;
}

void print_node(PersonInfo *node, int n)
{
fprintf(stderr, "%s", ID);
printf("%d\n", n);

fprintf(stderr, "%s", NAME);
printf("%s\n", node->name);

fprintf(stderr, "%s", PHONE);
printf("%s\n", node->phone);

fprintf(stderr, "%s", ADDR);
printf("%s\n", node->addr);
}

void menu_add()
{
char name[MAX_NAME + 1] = {0};
char phone[MAX_PHONE + 1] = {0};
char addr[MAX_ADDR + 1] = {0};

int nId = 0;
do
{
fprintf(stderr, "%s", ID);
scanf("%d", &nId);
getchar();
}while(nId >= MAX_NUM && nId < 1);

int nLen = 0;
do
{
fprintf(stderr, "%s", NAME);
fgets(name, MAX_NAME, stdin);
nLen = strlen(name) - 1;
name[nLen] = '\0';
trim_space(name);
}while (!IsString(name));

fprintf(stderr, "%s", PHONE);
fgets(phone, MAX_PHONE, stdin);
nLen = strlen(phone) - 1;
phone[nLen] = '\0';

fprintf(stderr, "%s", ADDR);
fgets(addr, MAX_ADDR, stdin);
nLen = strlen(addr) - 1;
addr[nLen] = '\0';

nId = nId - 1;
PersonInfo *pi = &g_piArry[nId];
if (0 != strlen(pi->name))
{
int i = 0;
for (i = MAX_NUM; i > nId; i--)
{
memcpy(&g_piArry[i], &g_piArry[i - 1], sizeof(PersonInfo));
}
}

strcpy(pi->name, name);
strcpy(pi->phone, phone);
strcpy(pi->addr, addr);

return;
}

void menu_print()
{
int n = 0;
for (n = 0; n < MAX_NUM; n++)
{
if (0 != strlen(g_piArry[n].name))
{
print_node(&g_piArry[n], n + 1);
}
}
return;
}

void menu_delete()
{
int nId = 0;
do
{
fprintf(stderr, "%s", ID);
scanf("%d", &nId);
getchar();
}while(nId >= MAX_NUM && nId < 1);

PersonInfo *pi = &g_piArry[nId];

int i = 0;
for (i = nId - 1; i < MAX_NUM - 1; i++)
{
memcpy(&g_piArry[i], &g_piArry[i + 1], sizeof(PersonInfo));
}

fprintf(stderr, "删除成功(%s)", nId);
return ;
}

void menu_modify()
{
int nId = 0;
do
{
fprintf(stderr, "%s", ID);
scanf("%d", &nId);
getchar();
}while(nId >= MAX_NUM && nId < 1);

char name[MAX_NAME + 1] = {0};
char phone[MAX_PHONE + 1] = {0};
char addr[MAX_ADDR + 1] = {0};
int nLen = 0;

do
{
fprintf(stderr, "%s", NAME);
fgets(name, MAX_NAME, stdin);
nLen = strlen(name) - 1;
name[nLen] = '\0';
trim_space(name);
}while (!IsString(name));

fprintf(stderr, "%s", PHONE);
fgets(phone, MAX_PHONE, stdin);
nLen = strlen(phone) - 1;
phone[nLen] = '\0';

fprintf(stderr, "%s", ADDR);
fgets(addr, MAX_ADDR, stdin);
nLen = strlen(addr) - 1;
addr[nLen] = '\0';

nId = nId - 1;

PersonInfo *pi = &g_piArry[nId];
strcpy(pi->name, name);
strcpy(pi->phone, phone);
strcpy(pi->addr, addr);

return ;
}
void menu_detail()
{
int nId = 0;
do
{
fprintf(stderr, "%s", ID);
scanf("%d", &nId);
getchar();
}while(nId >= MAX_NUM && nId < 1);

print_node(&g_piArry[nId - 1], nId);

return;
}

❾ 求大神,用C语言编写一个简单的电话薄,具有查找联系人和新建联系人

15rmb帮做