❶ 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幫做