c語言電話簿管理系統的
❶ 用c語言或C++做個通訊錄管理系統
//簡單的學生通訊錄管理系統
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>
structrecord
{
charname[20];//姓名
charphone[12];//電話
charadress[50];//地址
charpostcode[8];//郵政編碼
chare_mail[20];//電子郵件。
}student[100];//假設最大數為100.
//定義全局變數num,表示已經輸入的人數。
intnum;//這里使用數組解決通訊錄的問題,實際上使用鏈表更好。
intmenu_select()
{
chars[80];
inta;/*定義整形變數*/
system("cls");
printf(" ***********歡迎進入通訊管理界面******** ");
printf(" 0.輸入記錄 ");
printf(" 1.顯示記錄 ");
printf(" 2.按姓名查找 ");
printf(" 3.按電話號碼查找 ");
printf(" 4.插入記錄 ");
printf(" 5.按姓名排序 ");
printf(" 6.刪除記錄 ");
printf(" 7.Quit ");
printf(" *********************************************** ");
do{
printf("Enteryouchoice(0~7):");
scanf("%s",s);
a=atoi(s);
}
while(a<0||a>7);
returna;
}
intadser()
{
printf(" ****************請輸入用戶信息**************** ");
printf(" 輸入姓名: ");
scanf("%s",student[num].name);
printf(" 輸入電話號碼: ");
scanf("%s",student[num].phone);
printf(" 輸入地址: ");
scanf("%s",student[num].adress);
printf(" 輸入郵編: ");
scanf("%s",student[num].postcode);
printf(" 輸入e-mail: ");
scanf("%s",student[num].e_mail);
num++;
printf(" 是否繼續添加?(Y/N): ");
if(getch()=='y'||getch()=='Y')
adser();
return(0);
}
voidlist()
{
inti;
system("cls");
if(num!=0)
{
printf(" ***************以下為通訊錄所有信息************ ");
for(i=0;i<num;i++)
{
printf(" 姓名:%s ",student[i].name);
printf(" 電話:%s ",student[i].phone);
printf(" 地址:%s ",student[i].adress);
printf(" 郵編:%s ",student[i].postcode);
printf(" e-mail:%s ",student[i].e_mail);
if(i+1<num)
{
system("pause");
}
}
printf(" ************************************************ ");
}
else
printf(" 通訊錄中無任何紀錄 ");
printf(" 按任意鍵返回主菜單: ");
getch();//這里是無回顯的輸入字元,你輸入的字元不會顯示在屏幕上。
return;
}
intsearchbyname()
{
intmark=0;
inti;
printf(" *****************按姓名查找******************* ");
charname[20];
printf(" 請輸入姓名: ");
scanf("%s",name);
for(i=0;i<num;i++)
{
if(strcmp(student[i].name,name)==0)
{
printf(" *************以下是您查找的用戶信息*********** ");
printf(" 姓名:%s",student[i].name);
printf(" 電話:%s",student[i].phone);
printf(" 地址:%s",student[i].adress);
printf(" e-mail:%s",student[i].e_mail);
printf(" ************************************************ ");
mark++;
if((i+1)<num)
{
printf(" 是否繼續查找相同名字的用戶信息:(y/n) ");
if(getch()=='y'||getch()=='Y')
{
continue;
}
else
return(0);
}
else
{
printf(" 按任意鍵返回主菜單");
getch();
return(0);
}
}
}
if(mark==0)
{
printf(" 沒有相同姓名的用戶紀錄 ");
printf(" 按任意鍵返回主菜單 ");
getch();
return(0);
}
return0;
}
intsearchbyphone()
{
intmark=0;
inti;
printf(" ******************按電話查找****************** ");
charphone[10];
printf(" 請輸入電話號碼: ");
scanf("%s",phone);
for(i=0;i<num;i++)
{
if(strcmp(student[i].phone,phone)==0)
{
printf(" **************以下是您查找的用戶信息********** ");
printf(" 姓名:%s",student[i].name);
printf(" 電話:%s",student[i].phone);
printf(" 地址:%s",student[i].adress);
printf(" e-mail:%s",student[i].e_mail);
printf(" ************************************************ ");
printf(" 按任意鍵返回主菜單 ");
mark++;
getch();
return(0);
}
}
if(mark==0)
{
printf(" 沒有改用戶的信息 ");
printf(" 按任意鍵返回主菜單 ");
getch();
return(0);
}
return(0);
}
voiddeletebyphone()
{
inti,j;
intdeletemark=0;
charphone[20];
printf(" 請輸入要刪除用戶電話號碼: ");
scanf("%s",phone);
if(num==0)
{
printf(" 對不起,文件中無任何紀錄 ");
printf(" 按任意鍵返回主菜單 ");
getch();
return;
}
for(i=0;i<num;i++)
{
if(strcmp(student[i].phone,phone)==0)
{
printf(" 以下是您要刪除的用戶紀錄: ");
printf(" 姓名:%s",student[i].name);
printf(" 電話:%s",student[i].phone);
printf(" 地址:%s",student[i].adress);
printf(" e-mail:%s",student[i].e_mail);
printf(" 是否刪除?(y/n)");
if(getch()=='y'||getch()=='Y')
{
for(j=i;j<num-1;j++)
student[j]=student[j+1];
num--;
deletemark++;
printf(" 刪除成功");
printf(" 是否繼續刪除?(y/n)");
if(getch()=='y'||getch()=='Y')
deletebyphone();
return;
}
else
return;
}
continue;
}
if(deletemark==0)
{
printf(" 沒有該用戶的紀錄");
printf(" 是否繼續刪除?(y/n)");
if(getch()=='y'||getch()=='Y')
deletebyphone();
return;
}
return;
}
voiddeletebyname()
{
inta=0;
intfindmark=0;
intj;
intdeletemark=0;
inti;
charname[20];
printf(" 請輸入要刪除用戶姓名: ");
scanf("%s",name);
for(i=a;i<num;i++)
{
if(strcmp(student[i].name,name)==0)
{
printf(" 以下是您要刪除的用戶紀錄:");
findmark++;
printf(" ________________________________");
printf(" 姓名:%s",student[i].name);
printf(" 電話:%s",student[i].phone);
printf(" 地址:%s",student[i].adress);
printf(" e-mail:%s",student[i].e_mail);
printf(" ________________________________");
printf(" 是否刪除?(y/n)");
if(getch()=='y'||getch()=='Y')
{
for(j=i;j<num-1;j++)
student[j]=student[j+1];
num--;
deletemark++;
printf(" 刪除成功");
if((i+1)<num)
{
printf(" 是否繼續刪除相同姓名的用戶信息?(y/n)");
if(getch()=='y')
{
a=i;
continue;
}
}
printf(" 是否繼續刪除?(y/n)");
if(getch()=='y')
deletebyname();
return;
}
if((i+1)<num)
{
printf(" 是否繼續刪除相同姓名的用戶信息?(y/n)");
if(getch()=='y'||getch()=='Y')
{
a=i;
continue;
}
}
}
else
continue;
}
if((deletemark==0)&&(findmark==0))
{
printf(" 沒有該用戶的紀錄");
printf(" 是否繼續刪除?(y/n)");
if(getch()=='y'||getch()=='Y')
deletebyphone();
return;
}
elseif(findmark!=0)
{
printf(" 沒有重名信息");
printf(" 沒有該用戶的紀錄");
printf(" 是否繼續刪除?(y/n)");
if(getch()=='y'||getch()=='Y')
deletebyphone();
return;
}
}
intdele()
{
charchoic;
printf(" 1-按電話號碼刪除2-按姓名刪除");
printf(" 請選擇:");
choic=getch();
switch(choic)
{
case'1':deletebyphone();break;
case'2':deletebyname();break;
}
return(0);
}
intsortbyname()//按姓名進行排序
{
inti,j;
structrecordtmp;
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(" 排序成功,是否顯示?(y/n)");
if(getch()=='y')
list();
return(0);
}
intmain()
{
printf(" ************************************************ ");
printf(" ********welcometoTONGXUNLU******************* ");
printf(" ###########codebyXXXXX################### ");
printf(" ************************************************* ");
printf("按任意鍵進入主菜單 ");
getch();
intselectnum;
while(1)
{
selectnum=menu_select();
switch(selectnum)
{
case0:
{
adser();
break;
}
case1:
{
list();
break;
}
case2:
{
searchbyname();
break;
}
case3:
{
searchbyphone();
break;
}
case4:
{
adser();//這里插入,應該能指定位置,不過意義不大,所以和添加記錄一樣了。
break;
}
case5:
{
sortbyname();
break;
}
case6:
{
dele();
break;
}
case7:
{
printf("BYEBYE! ");
system("pause");
getchar();
exit(0);
}
}
}
getchar();
return0;
}
❷ 用c語言或c++做一個通訊錄管理系統
#include<iostream.h>
#include<iomanip.h>
#include<string.h>
class pbook
{
int cellphone,phone;
char name[20],first,sex[10],workplace[30];
char date[15];
public:
void addin();
char* gname(){return name;}
char getf(){ return first;}
void print()
{
cout<<setw(12)<<name<<setw(12)<<sex;
cout<<setw(12)<<workplace<<setw(12)<<cellphone<<setw(12)<<phone<<setw(12)<<date<<endl;}
static int dele(pbook *book,int n);
static void edit(pbook *book,int n,char *name);
static void findn(pbook *book,int n,char *name);
static void findf(pbook *book,int n,char f);
static void rang(pbook *book,int n);
};
void pbook::addin()
{
cout<<"姓名:";
cin>>name;
cout<<endl<<"性別(男|女): ";
cin>>sex;
cout<<endl<<"工作單位:";
cin>>workplace;
cout<<endl<<"手機號碼:";
cin>>cellphone;
cout<<endl<<"固定電話:";
cin>>phone;
cout<<endl<<"儲存日期:";
cin>>date;
cout<<endl<<"姓名首字母(大寫):";
cin>>first;
cout<<endl<<"電話簿添加成功!"<<endl;
}
int pbook::dele(pbook *book,int n){
int p=-2,c=n;
char name[20];cout<<"請輸入姓名"<<endl;
cin>>name;
for(int i=0;i<n;i++)
{
if(strcmp(book[i].gname(),name)==0)
{
p=i;break;
}
}
if(p!=-2)
{
for(i=p;i<n;i++)
book[i]=book[i+1];
return --c;
}
else
return c;
}
void pbook::edit(pbook *book,int n,char *name)
{ int p;
for(int i=0;i<n;i++)
{if(strcmp(book[i].gname(),name)==0)
p=i;break;
}
book[p].addin();
cout<<"修改成功"<<endl;
}
void pbook::findn(pbook *book,int n,char *sname)
{
int i;
for(i=0;i<n;i++)
if(strcmp(book[i].gname(),sname)==0)
{
book[i].print();break;
}
if(i==n)
{
cout<<"查無此人"<<endl;
}
}
void pbook::findf(pbook *book,int n,char f)
{
int p=-1;
cout<<setw(15)<<"姓名"<<setw(15)<<"性別"<<setw(15)<<"工作單位"<<setw(15)<<"手機號碼";
cout<<setw(15)<<"固定電話"<<setw(15)<<"存儲日期"<<endl;
for(int i=0;i<n;i++)
{
if(book[i].getf()==f)
{
p=i;
book[p].print();
}
}
if(p==-1)cout<<"查無此人"<<endl;
}
void pbook::rang(pbook *book,int n)
{
pbook m;int i,j;
for(i=1;i<n;i++)
{
for(j=0;j<n-i;j++)
if(book[i].getf()>book[i+1].getf())
{
m=book[j];
book[j]=book[j+1];
book[j+1]=m;
}
}
cout<<setw(12)<<"姓名"<<setw(12)<<"性別"<<setw(12)<<"工作單位"<<setw(12)<<"手機號碼";
cout<<setw(12)<<"固定電話"<<setw(12)<<"存儲日期"<<endl;
for(i=0;i<n;i++)
book[i].print();
}
void display()
{
cout <<endl;
cout<<"********************電話簿********************"<<endl;
cout<<" ------- 1.添加聯系人 ------- "<<endl;
cout<<" ------- 2.刪除聯系人 ------- "<<endl;
cout<<" ------- 3.顯示所有聯系人 ------- "<<endl;
cout<<" ------- 4.修改聯系人信息 ------- "<<endl;
cout<<" ------- 5.按姓名查詢 ------- "<<endl;
cout<<" ------- 6.按首字母查詢 ------- "<<endl;
cout<<" ------- 7.退出系統請按 ------- "<<endl;
cout<<"**********************************************"<<endl;
}
void main()
{
pbook book[10];int n=0;char name[20];
int i;char j=1;char g;char a;
while(j!=0)
{
display();
cout<<"請選擇菜單號(1---7):";
cin>>i;
while(!(i==1||i==2||i==3||i==4||i==5||i==6||i==7))
{
cout<<"\a\a選擇錯誤! 請重新選擇! 請選擇菜單號(0---7):";
cin>>i;
}
while(i==1||i==2||i==3||i==4||i==5||i==6||i==7)
{
if(i==1)
{ n++;book[n-1].addin();}
else if(i==7)
{
cout<<"謝謝使用本系統!"<<endl;
j=0;
}
else
{
if(i==2)
n=pbook::dele(book,n);
else if(i==3)
pbook::rang(book,n);
else if(i==4)
{ cout<<"請輸入姓名"<<endl;
cin>>name;
pbook::edit(book,n,name);
}
else if(i==5)
{
cout<<"請輸入姓名"<<endl;
cin>>name;
cout<<setw(12)<<"姓名"<<setw(12)<<"性別"<<setw(12)<<"工作單位"<<setw(12)<<"手機號碼";
cout<<setw(12)<<"固定電話"<<setw(12)<<"存儲日期"<<endl;
pbook::findn(book,n,name);
}
else
{
cout<<"請輸入字元:";
cin>>g;
pbook::findf(book,n,g);
}
}
cout<<"繼續請按y,否則請按n."<<endl;
cin>>a;
if(a=='y'){};
if(a=='n')break;
}
cout<<"繼續菜單請按y,否則請按n."<<endl;
cin>>j;
}
}
❸ C語言,編寫一個簡單的通訊錄管理系統
#include <string.h>
#include <stdio.h>
#include<stdlib.h>
int cntAddr=0,i,j;
char in[12];
const char * strFmt=" %d %s %s %s %s ";
typedef struct ADDRESSD {
int ID;
char name[12];
char workPlace[12];
char teleOff[12];
char teleHome[12];
}ADDRESS;
ADDRESS addrTmp[100],adTmp;
int load(ADDRESS adr[]){
FILE *fp;
if((fp=fopen("c:\txl.txt","r"))!=NULL){
cntAddr=0;
while(!feof(fp)){
fscanf(fp,"%d %s %s %s %s ",&(adr[cntAddr].ID),adr[cntAddr].name,adr[cntAddr].workPlace,adr[cntAddr].teleOff,adr[cntAddr].teleHome);
++cntAddr;
}
}
fclose(fp);
return cntAddr;
};
void list(ADDRESS addr[],int length){
for(i=0;i<length;++i)printf(strFmt,addr[i].ID,addr[i].name,addr[i].workPlace,addr[i].teleOff,addr[i].teleHome);
}
void display(ADDRESS addr[]){
for(i=0;i<cntAddr;++i)addrTmp[i]=addr[i];
for(i=0;i<cntAddr-1;++i)for(j=i+1;j<cntAddr;++j)if(addrTmp[i].ID>addrTmp[j].ID){adTmp=addrTmp[i];addrTmp[i]=addrTmp[j];addrTmp[j]=adTmp;}
for(i=0;i<cntAddr;++i)printf(strFmt,addrTmp[i].ID,addrTmp[i].name,addrTmp[i].workPlace,addrTmp[i].teleOff,addrTmp[i].teleHome);
}
void namesort(ADDRESS addr[],int length){
for(i=0;i<length;++i)addrTmp[i]=addr[i];
for(i=0;i<length-1;++i)for(j=i+1;j<length;++j)if(strcmp(addrTmp[i].name,addrTmp[j].name)>0){adTmp=addrTmp[i];addrTmp[i]=addrTmp[j];addrTmp[j]=adTmp;}
for(i=0;i<length;++i)printf(strFmt,addrTmp[i].ID,addrTmp[i].name,addrTmp[i].workPlace,addrTmp[i].teleOff,addrTmp[i].teleHome);
};
void save(ADDRESS adr[],int length){
FILE *fp;
fp=fopen("c:\txl.txt","w");
for(i=0;i<cntAddr;++i)fprintf(fp,"%d %s %s %s %s ",adr[i].ID,adr[i].name,adr[i].workPlace,adr[i].teleOff,adr[i].teleHome);
fclose(fp);
};
void unitssort(ADDRESS addr[],int length){
for(i=0;i<length;++i)addrTmp[i]=addr[i];
for(i=0;i<length-1;++i)for(j=i+1;j<length;++j)if(strcmp(addrTmp[i].workPlace,addrTmp[j].workPlace)>0){adTmp=addrTmp[i];addrTmp[i]=addrTmp[j];addrTmp[j]=adTmp;}
for(i=0;i<length;++i)printf(strFmt,addrTmp[i].ID,addrTmp[i].name,addrTmp[i].workPlace,addrTmp[i].teleOff,addrTmp[i].teleHome);
};
void namesearch(ADDRESS addr[],int length){
printf("請輸入姓名: ");
scanf("%s",&in);
for(i=0;i<length;++i)if(strcmp(addr[i].name,in)==0)printf(strFmt,addr[i].ID,addr[i].name,addr[i].workPlace,addr[i].teleOff,addr[i].teleHome);
};
void unitssearch(ADDRESS adr[],int length){
printf("請輸入工作單位: ");
scanf("%s",&in);
for(i=0;i<length;++i)if(strcmp(adr[i].workPlace,in)==0)printf(strFmt,adr[i].ID,adr[i].name,adr[i].workPlace,adr[i].teleOff,adr[i].teleHome);
};
void officenumbersearch(ADDRESS adr[],int length){
printf("請輸入辦公電話: ");
scanf("%s",&in);
for(i=0;i<length;++i)if(strcmp(adr[i].teleOff,in)==0)printf(strFmt,adr[i].ID,adr[i].name,adr[i].workPlace,adr[i].teleOff,adr[i].teleHome);
};
void homenumbersearch(ADDRESS adr[],int length){
printf("請輸入家庭電話: ");
scanf("%s",&in);
for(i=0;i<length;++i)if(strcmp(adr[i].teleHome,in)==0)printf(strFmt,adr[i].ID,adr[i].name,adr[i].workPlace,adr[i].teleOff,adr[i].teleHome);
};
int delet(ADDRESS adr[],int length){
printf("要修改第幾條記錄: ");
scanf("%d",&j);
for(i=j;i<length-1;++i)adr[i]=adr[i+1];
return --length;
};
void rewrite(ADDRESS adr[],int length){
printf("要修改第幾條記錄: ");
scanf("%d",&j);
printf("請輸入ID: ");
scanf("%d",&i);
adr[j].ID=i;
printf("請輸入姓名: ");
scanf("%s",in);
strcpy(adr[j].name,in);
printf("請輸入工作單位: ");
scanf("%s",in);
strcpy(adr[j].workPlace,in);
printf("請輸入辦公電話: ");
scanf("%s",in);
strcpy(adr[j].teleOff,in);
printf("請輸入家庭電話: ");
scanf("%s",in);
strcpy(adr[j].teleHome,in);
};
int add(ADDRESS adr[],int length){
printf("請輸入ID: ");
scanf("%d",&i);
adr[length].ID=i;
printf("請輸入姓名: ");
scanf("%s",in);
strcpy(adr[length].name,in);
printf("請輸入工作單位: ");
scanf("%s",in);
strcpy(adr[length].workPlace,in);
printf("請輸入辦公電話: ");
scanf("%s",in);
strcpy(adr[length].teleOff,in);
printf("請輸入家庭電話: ");
scanf("%s",in);
strcpy(adr[length].teleHome,in);
return ++cntAddr;
};
void (){
FILE *fp,*fc;
printf("請輸入新文件名(路徑中的反斜杠用\表示) ");
scanf("%s",&in);
if((fp=fopen("c:\txl.txt","r"))!=NULL){
fc=fopen(in,"w");
while(!feof(fp)){
fscanf(fp,"%d %s %s %s %s ",&(adTmp.ID),adTmp.name,adTmp.workPlace,adTmp.teleOff,adTmp.teleHome);
fprintf(fc,"%d %s %s %s %s ",adTmp.ID,adTmp.name,adTmp.workPlace,adTmp.teleOff,adTmp.teleHome);
}
fclose(fc);
}
fclose(fp);
};
int enter(ADDRESS adr[]){
cntAddr=0;
printf("請按次序輸入數據,結束按CTRL+z: ");
while(1){
printf("請輸入ID: ");
if(scanf("%d",&i)==EOF)break;
adr[cntAddr].ID=i;
printf("請輸入姓名: ");
if(scanf("%s",in)==EOF)break;
strcpy(adr[cntAddr].name,in);
printf("請輸入工作單位: ");
if(scanf("%s",in)==EOF)break;
strcpy(adr[cntAddr].workPlace,in);
printf("請輸入辦公電話: ");
if(scanf("%s",in)==EOF)break;
strcpy(adr[cntAddr].teleOff,in);
printf("請輸入家庭電話: ");
if(scanf("%s",in)==EOF)break;
strcpy(adr[cntAddr].teleHome,in);
++cntAddr;
}
return cntAddr;
};
void showpaixu(ADDRESS adr[],int length)
{
int choice;
menu1:
system("cls");
printf(" *************************通訊錄信息管理系統************************* ");
printf(" 1. 全部顯示通訊錄信息 ");
printf(" 2. 按序號顯示通訊錄信息 ");
printf(" 3. 按姓名排序 ");
printf(" 4. 按工作單位排序 ");
printf(" 0. 返回上一級菜單 ");
printf(" ******************************************************************** ");
printf(" 請選擇(0~4) ");
scanf("%d",&choice);
switch(choice)
{
case 1:
list(adr,length);
printf(" 請按任意鍵返回... ");
system("pause");
break; /*顯示全部記錄*/
case 2:
display(adr);
printf(" 請按任意鍵返回... ");
system("pause");break; /*按序號顯示記錄*/
case 3:
namesort(adr,length);
printf(" 請按任意鍵返回... ");
system("pause");
break; /*按姓名排序*/
case 4:
unitssort(adr,length);
printf(" 請按任意鍵返回... ");
system("pause");
break; /*按工作單位排序*/
case 0: return;
}
goto menu1;
}
/*通訊錄信息查找功能*/
void chazhao(ADDRESS adr[],int length)
{
int choice;
menu2:
system("cls");
printf(" *************************通訊錄信息管理系統************************* ");
printf(" 1. 通過姓名查找 ");
printf(" 2. 通過工作單位查找 ");
printf(" 3. 通過辦公電話查找 ");
printf(" 4. 通過家庭電話查找 ");
printf(" 0. 返回上一級菜單 ");
printf(" ******************************************************************** ");
printf(" 請選擇(0~4) ");
scanf("%d",&choice);
switch(choice)
{
case 1:
namesearch(adr,length);
printf(" 請按任意鍵返回... ");
system("pause");
break; /*按姓名查找記錄*/
case 2:
unitssearch(adr,length);
printf(" 請按任意鍵返回... ");
system("pause");
break; /*按工作單位查找記錄*/
case 3:
officenumbersearch(adr,length);
printf(" 請按任意鍵返回... ");
system("pause");
break; /*按辦公電話查找記錄*/
case 4:
homenumbersearch(adr,length);
printf(" 請按任意鍵返回... ");
system("pause");
break; /*按住宅電話查找記錄*/
case 0: return;
}
goto menu2;
}
/*通訊錄信息變更功能*/
void biangeng(ADDRESS adr[],int length)
{
int choice;
menu3:
system("cls");
printf(" *************************通訊錄信息管理系統************************* ");
printf(" 1. 刪除記錄 ");
printf(" 2. 修改記錄 ");
printf(" 3. 添加記錄 ");
printf(" 0. 返回上一級菜單 ");
printf(" ******************************************************************** ");
printf(" 請選擇(0~3) ");
scanf("%d",&choice);
switch(choice)
{
case 1:
length=delet(adr,length);
save(adr,length);
printf(" 請按任意鍵返回... ");
getchar();
break; /*刪除記錄*/
case 2:
rewrite(adr,length);
save(adr,length);
printf(" 請按任意鍵返回... ");
getchar();
break; /*修改記錄*/
case 3:
length=add(adr,length);
save(adr,length);
printf(" 請按任意鍵返回... ");
getchar();
break; /*插入記錄*/
case 0: return;
}
goto menu3;
}
int wenjian(ADDRESS adr[],int length)
{
int choice;
menu4:
system("cls");
printf(" *************************通訊錄信息管理系統************************* ");
printf(" 1. 導入文件到通訊錄 ");
printf(" 2. 把當前文件復制到新文件上 ");
printf(" 0. 返回上一級菜單 ");
printf(" ******************************************************************** ");
printf(" 請選擇(0~2) ");
scanf("%d",&choice);
switch(choice)
{
case 1: length=load(adr);
printf("您已經成功的導入文件到通訊錄! ");
printf(" 請按任意鍵返回... ");
system("pause");break;
case 2: ();
printf("復製成功! ");
printf(" 請按任意鍵返回... ");
system("pause");break;
case 0: return length;
}
goto menu4;
}
/*關於*/
void about()
{
system("color 87");
system("cls");
printf(" 《通訊錄信息管理系統》 ");
printf(" ***************************************** ");
printf(" 版權所有(C) 2009-2010 DIY軟體 ");
printf(" 製作人:西北民族大學計算機科學與信息09級計算機3班 王元波 ");
printf(" ***************************************** ");
printf(" 請按任意鍵返回主菜單...");
system("pause");
}
/******主函數開始*******/
void main()
{
int choice;
int length; /*保存記錄長度*/
ADDRESS adr[100] ; /*定義結構體數組*/
menu:
system("color f9");
system("cls");
printf(" *************************通訊錄信息管理系統************************* ");
printf(" 請選擇以下通訊錄管理功能: ");
printf(" 1. 通訊錄信息輸入 ");
printf(" 2. 通訊錄信息瀏覽及排序 ");
printf(" 3. 通訊錄信息查詢 ");
printf(" 4. 通訊錄信息更改 ");
printf(" 5. 通訊錄及文件操作 ");
printf(" 6. 關於通訊錄信息管理系統 ");
printf(" 0. 退出通訊錄管理系統 ");
printf(" ******************************************************************** ");
printf(" 請選擇(0~6) ");
scanf("%d",&choice);
switch(choice)
{
case 1: length=enter(adr);
save(adr,length);
printf(" 請按任意鍵返回... ");
system("pause");break;/*輸入記錄*/
case 2: showpaixu(adr,length);break;
case 3: chazhao(adr,length);break;
case 4: biangeng(adr,length);break;
case 5: length=wenjian(adr,length);break;
case 6: about();break;/*關於*/
case 0: return; /*如返回值為則程序結束*/
}
goto menu;
}
拓展資料
C語言是一門通用計算機編程語言,應用廣泛。C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、產生少量的機器碼以及不需要任何運行環境支持便能運行的編程語言。
盡管C語言提供了許多低級處理的功能,但仍然保持著良好跨平台的特性,以一個標准規格寫出的C語言程序可在許多電腦平台上進行編譯,甚至包含一些嵌入式處理器(單片機或稱MCU)以及超級電腦等作業平台。
❹ c語言 電話簿管理系統
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include <iostream>
//主函數
int main()
{
LinkQueue Q;
initAddressBook(Q);
int flag=0;
while(flag!=8)
{
printf("※※※※※主※※※※※菜※※※※※單※※※※※\n");
printf("※1、增加聯系人 2、刪除聯系人 ※\n");
printf("※3、修改聯系人 4、清空通訊錄 ※\n");
printf("※5、查找聯系人 6、按組顯示 ※\n");
printf("※7、顯示全部聯系人 8、退出 ※\n");
printf("※※※※※※※※※※※※※※※※※※※※※※※\n");
printf("請輸入編號(1-8):\n");
scanf("%d",&flag);
if(flag<1||flag>8)
{
printf("輸入錯誤請重新輸入!\n");
continue;
}
else
{
switch(flag){
case 1:
if(enAddressBook(Q))
printf("增加聯系人成功!\n");
else
printf("增加聯系人失敗!\n");
break;
case 2:
if(delPerson(Q))
printf("刪除聯系人成功!\n");
else
printf("聯系人刪除失敗!\n");
break;
case 3:
if(update(Q))
printf("修改聯系人成功!\n");
else
printf("修改聯系人失敗!\n");
break;
case 4:
if(clearAddressBook(Q))
printf("通訊錄已清空!\n");
else
printf("通訊錄清空失敗!\n");
break;
case 5:
findByName(Q);
break;
case 6:
findByGroup(Q);
break;
case 7:
disAll(Q);
break;
case 8:
system("cls");
break;
}
}
}
printf("※※※※※感謝您使用本系統!※※※※※※\n");
return 0;
}
//初始化通訊錄
void initAddressBook(LinkQueue &Q)
{
Q.front=Q.rear=(QNode *)malloc(sizeof(QNode));
if(!Q.front)
exit(1);
else
Q.front->next=NULL;
}
//清空通訊錄
bool clearAddressBook(LinkQueue &Q)
{
system("cls");
while(addressBookLength(Q)!=0)
{
QNode *p;
p=Q.front->next;
Q.front->next=p->next;
if(p==Q.rear)
Q.rear=Q.front;
free(p);
}
return true;
}
//通訊錄當前人數
int addressBookLength(LinkQueue &Q)
{
int i=0;
QNode *p;
p=Q.front;
if(Q.front==Q.rear)
i=0;
else
{
while(p!=Q.rear)
{
p=p->next;
i++;
}
}
return i;
}
//刪除聯系人
bool delPerson(LinkQueue &Q)
{
char _name[20];
system("cls");
printf("請輸入要刪除的聯系人的姓名:\n");
scanf("%s",_name);
QNode *p,*q;
if(Q.front==Q.rear)
{
printf("通訊錄為空!\n");
return false;
}
else
{
p=Q.front;
q=Q.front->next;
while(q!=Q.rear){
if(strcmp(q->name,_name)==0)
{
p->next=q->next;
free(q);//刪除節點
return true;
}
else
{
p=p->next;
q=q->next;
}
}
if((strcmp(q->name,_name)==0))
{
free(q);
Q.front=Q.rear;
return true;
}
else
{
printf("無此聯系人!\n");
return false;
}
}
}
//查找聯系人
bool findByName(LinkQueue &Q)
{
system("cls");
if(Q.front==Q.rear)
{
printf("手機中無聯系人!\n");
return false;
}
else
{
char _name[20];
printf("請輸入要查詢的聯系人姓名:\n");
scanf("%s",_name);
QNode *p;
p=Q.front->next;
while(p->next!=NULL)
{
if(strcmp(p->name,_name)==0)
{
printf("姓名:%s 號碼:%s 分組:%s\n",p->name,p->tel,p->group);
return true;
}
p=p->next;
}
if(strcmp(p->name,_name)==0){
printf("姓名:%s 號碼:%s 分組:%s\n",p->name,p->tel,p->group);
return true;
}
else
{
printf("查無此人!\n");
return false;
}
}
}
//按組顯示聯系人
bool findByGroup(LinkQueue &Q)
{
system("cls");
if(Q.front==Q.rear)
{
printf("手機中無聯系人!\n");
return false;
}
else
{
char _group[20];
printf("請輸入要查詢的分組:\n");
scanf("%s",_group);
QNode *p;
p=Q.front->next;
while(p->next!=NULL)
{
if(strcmp(p->group,_group)==0)
{
printf("姓名:%s 號碼:%s \n",p->name,p->tel);
}
p=p->next;
}
if(strcmp(p->group,_group)==0){
printf("姓名:%s 號碼:%s \n",p->name,p->tel);
return true;
}
else
{
printf("無此分組!\n");
return false;
}
}
}
//增加聯系人
bool enAddressBook(LinkQueue &Q)
{
system("cls");
QNode *p;
p=(QNode *)malloc(sizeof(QNode));
if(!p)
return false;
else
{
printf("請輸入聯系人姓名:\n");
scanf("%s",p->name);
printf("請輸入聯系人號碼:\n");
scanf("%s",&p->tel);
printf("請輸入聯系人分組:\n");
scanf("%s",p->group);
if(Q.front->next==NULL)
{
Q.front->next=p;
Q.rear=p;
Q.rear->next=NULL;
}
else
{
p->next=NULL;
Q.rear->next=p;
Q.rear=p;
}
return true;
}
}
//修改聯系人
bool update(LinkQueue &Q)
{
system("cls");
if(Q.front==Q.rear)
{
printf("手機中無聯系人!\n");
return false;
}
else
{
char _name[20];
printf("請輸入要修改的聯系人姓名:\n");
scanf("%s",_name);
QNode *p;
p=Q.front->next;
while(p->next!=NULL)
{
if(strcmp(p->name,_name)==0)
{
printf("請輸入新聯系人姓名:\n");
scanf("%s",p->name);
printf("請輸入新聯系人號碼:\n");
scanf("%s",&p->tel);
printf("請輸入新聯系人分組:\n");
scanf("%s",p->group);
return true;
}
p=p->next;
}
if(strcmp(p->name,_name)==0){
printf("請輸入新聯系人姓名:\n");
scanf("%s",p->name);
printf("請輸入新聯系人號碼:\n");
scanf("%s",&p->tel);
printf("請輸入新聯系人分組:\n");
scanf("%s",p->group);
return true;
}
else
{
printf("查無此人!\n");
return false;
}
}
}
//顯示所有聯系人
void disAll(LinkQueue &Q)
{
system("cls");
int i=0;
QNode *p;
p=Q.front->next;
if(Q.front==Q.rear)
printf("無聯系人!\n");
else
{
printf(" 姓名 號碼 分組\n");
while(p!=NULL){
printf("%15s %15s %15s\n",p->name,p->tel,p->group);
p=p->next;
}
}
}
❺ c語言通訊錄管理系統術語有哪些
c語言通訊錄管理系統術語有:添加聯系人、查找一個聯系人、修改聯系人、刪除一個聯系人、展示所有聯系。
❻ C語言程序設計,通訊錄管理系統
/*【用C語言編寫具有數據插入、修改、刪除、顯示和查詢功能的電話薄管理程序】
1、數據包括:人名、工作單位、電話號碼和E-mail地址。
2、可對記錄中的姓名和電話號碼進行修改。
3、可增加或刪除記錄。
4、可顯示所有保存的記錄。
5、可按人名或電話號碼進行查詢。
另:採用結構體數組和文件系統實現。結構體包括人名、工作單位、電話號碼和E-mail
絕對原創,2010年7月12日晚剛寫完測試通過的,純C語言! */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define szSTR 64
#define fileDB "c:\\contact.txt"
struct CONTACT {
char name[szSTR];/*姓名*/
char unit[szSTR];/*工作單位*/
char tele[szSTR];/*電話*/
char mail[szSTR];/*mail*/
};
typedef struct CONTACT CON;
#define BNAME 1
#define BUNIT 2
#define BTELE 4
#define BMAIL 8
#define BFULL 0xFF
int OPER[5] = {BFULL, BNAME, BUNIT, BTELE, BMAIL};
void input(CON * s, int mask)
{
if(mask & BNAME) { printf("請輸入學生姓名:"); scanf("%s", s->name); }
if(mask & BUNIT) { printf("請輸入工作單位:"); scanf("%s", s->unit); }
if(mask & BTELE) { printf("請輸入聯系電話:"); scanf("%s", s->tele); }
if(mask & BMAIL) { printf("請輸入電子郵件:"); scanf("%s", s->mail); }
}/*end input*/
void show (int id, CON * s)
{
if(!s) return ;
if(id)
printf("%d\t%s\t%s\t%s\t%s\n",
id, s->name , s->unit , s->tele , s->mail );
else
printf("【姓名】%s【工作單位】%s【電話】%s【電郵】%s\n",
s->name , s->unit , s->tele , s->mail );
/*end if*/
}/*end show*/
void regist(void)
{
CON s; FILE * f = 0;
input(&s, BFULL);
f = fopen(fileDB, "ab");
fwrite(&s,sizeof(s),1,f);
fclose(f);
printf("資料已保存!\n");
}/*end regist*/
int browse(char * key, fpos_t * p, CON * s)
{
FILE * f =0; int i = 0, r = 0; CON t;
char * a = 0, * b = 0; fpos_t q;
if(!s) return 0;
f = fopen(fileDB, "rb");
if(!f) {
printf("資料庫暫無記錄\n");
return 0;
}/*end if*/
printf("編號\t姓名\t單位\t電話\t電郵\n");
printf("------------------------------------------------\n");
while(!feof(f)) {
fgetpos(f, &q);
r = fread(&t, sizeof(t), 1, f);
if(r<1)break;
if(t.name[0]==0) continue;
if(key) {
a = strstr(t.name , key);
b = strstr(t.tele , key);
if(a == 0 && b == 0) continue;
}/*end if*/
if(p) *p = q;
if(s) memcpy(s, &t, sizeof(t));
i++;
show(i, &t);
}/*end while*/
fclose(f);
printf("------------------------------------------------\n");
return i;
}/*end browse*/
fpos_t query(CON * s)
{
char key[szSTR]=""; fpos_t p = 0; int r = 0;
printf("請輸入姓名或者電話號碼:");
scanf("%s", key);
r = browse(key, &p, s);
return r?p:-1;
}/*end query*/
void clear(void)
{
FILE * f = 0; CON s;
fpos_t p = query(&s);
if(p<0) return;
f = fopen(fileDB, "rb+");
fsetpos(f, &p);
memset(&s, 0, sizeof(s));
fwrite(&s, sizeof(s),1, f);
fclose(f);
printf("記錄已刪除!\n");
}/*end clear*/
void modify(void)
{
FILE * f = 0; CON s; int cmd = 0;
fpos_t p = query(&s);
if(p<0) return;
f = fopen(fileDB, "rb+");
fsetpos(f, &p);
for(;;) {
show(0, &s);
printf("請選擇:1-姓名;2-工作單位;3-電話;4-電郵;5-保存並退出;6-放棄修改並退出\n");
scanf("%d", &cmd);
switch(cmd) {
case 1:
case 2:
case 3:
case 4:
input(&s, OPER[cmd]);
break;
case 5:
fsetpos(f, &p);
fwrite(&s, sizeof(s), 1, f);
case 6:
fclose(f);
return;
default:
printf("錯誤的操作,請重新輸入。\n");
}/*end case*/
}/*mext*/
}/*end clear*/
int main(void)
{
int cmd = 0; CON s;
for(;;) {
printf("歡迎使用通信簿!請選擇:1-添加;2-查詢;3-刪除;4-修改;5-全部輸出;0-退出\n");
scanf("%d", &cmd);
switch(cmd) {
case 0: return 0;
case 1: regist(); break;
case 2: query(&s); break;
case 3: clear(); break;
case 4: modify(); break;
case 5: browse(0, 0, &s); break;
}//end case
}
return 0;
}
❼ C語言,編寫一個簡單的通訊錄管理系統
實現一個通訊錄管理系統;
通訊錄管理系統可以用來存儲1000個人的信息,每個人的信息包括:
姓名、性別、年齡、電話、住址
**提供方法:
1. 添加聯系人信息
2. 刪除指定聯系人信息
3. 查找指定聯系人信息
4. 修改指定聯系人信息
5. 顯示所有聯系人信息
6. 清空所有聯系人
7. 以名字排序所有聯系人**
1、linkman.h(頭文件)
3、程序運行結果部分示範: