電話號碼查詢系統課程設計
A. C語言課程設計:通訊錄管理系統
#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。[email protected]\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();
}
B. c語言課程設計—學生通訊錄管理系統設計 設計一個學生通信錄,學生通
/*10.3.2源程序*//******頭文件(.h)***********/#include"stdio.h"/*I/O函數*/#include"stdlib.h"/*標准庫函數*/#include"string.h"/*字元串函數*/#include"ctype.h"/*字元操作函數*/#defineM50/*定義常數表示記錄數*/typedefstruct/*定義數據結構*/{charname[20];/*姓名*/charunits[30];/*單位*/chartele[10];/*電話*/}ADDRESS;/******以下是函數原型*******/intenter(ADDRESSt[]);/*輸入記錄*/voidlist(ADDRESSt[],intn);/*顯示記錄*/voidsearch(ADDRESSt[],intn);/*按姓名查找顯示記錄*/intdelete(ADDRESSt[],intn);/*刪除記錄*/intadd(ADDRESSt[],intn);/*插入記錄*/voidsave(ADDRESSt[],intn);/*記錄保存為文件*/intload(ADDRESSt[]);/*從文件中讀記錄*/voiddisplay(ADDRESSt[]);/*按序號查找顯示記錄*/voidsort(ADDRESSt[],intn);/*按姓名排序*/voidqseek(ADDRESSt[],intn);/*快速查找記錄*/void();/*文件復制*/voidprint(ADDRESStemp);/*顯示單條記錄*/intfind(ADDRESSt[],intn,char*s);/*查找函數*/intmenu_select();/*主菜單函數*//******主函數開始*******/main(){inti;ADDRESSadr[M];/*定義結構體數組*/intlength;/*保存記錄長度*/clrscr();/*清屏*/for(;;)/*無限循環*/{switch(menu_select())/*調用主菜單函數,返回值整數作開關語句的條件*/{case0:length=enter(adr);break;/*輸入記錄*/case1:list(adr,length);break;/*顯示全部記錄*/case2:search(adr,length);break;/*查找記錄*/case3:length=delete(adr,length);break;/*刪除記錄*/case4:length=add(adr,length);break;/*插入記錄*/case5:save(adr,length);break;/*保存文件*/case6:length=load(adr);break;/*讀文件*/case7:display(adr);break;/*按序號顯示記錄*/case8:sort(adr,length);break;/*按姓名排序*/case9:qseek(adr,length);break;/*快速查找記錄*/case10:();break;/*復制文件*/case11:exit(0);/*如返回值為11則程序結束*/}}}/*菜單函數,函數返回值為整數,代表所選的菜單項*/menu_select(){chars[80];intc;gotoxy(1,25);/*將游標定為在第25行,第1列*/printf("pressanykeyentermenu\n");/*提示壓任意鍵繼續*/getch();/*讀入任意字元*/clrscr();/*清屏*/gotoxy(1,1);printf("********************MENU*********************\n\n");printf("0.Enterrecord\n");printf("1.Listthefile\n");printf("2.Searchrecordonname\n");printf("3.Deletearecord\n");printf("4.addrecord\n");printf("5.Savethefile\n");printf("6.Loadthefile\n");printf("7.displayrecordonorder\n");printf("8.sorttomakenewfile\n");printf("9.Quickseekrecord\n");printf("10.thefiletonewfile\n");printf("11.Quit\n");printf("***********************************************\n");do{printf("\nEnteryouchoice(0~11):");/*提示輸入選項*/scanf("%s",s);/*輸入選擇項*/c=atoi(s);/*將輸入的字元串轉化為整型數*/}while(c11);/*選擇項不在0~11之間重輸*/returnc;/*返回選擇項,主程序根據該數調用相應的函數*/}/***輸入記錄,形參為結構體數組,函數值返回類型為整型表示記錄長度*/intenter(ADDRESSt[]){inti,n;char*s;clrscr();/*清屏*/printf("\npleaseinputnum\n");/*提示信息*/scanf("%d",&n);/*輸入記錄數*/printf("pleaseinputrecord\n");/*提示輸入記錄*/printf("nameunittelephone\n");printf("------------------------------------------------\n");for(i=0;in-1)/*如果整數i值大於n-1,說明沒找到*/printf("notfound\n");elseprint(t[i]);/*找到,調用顯示函數顯示記錄*/}/*顯示指定的一條記錄*/voidprint(ADDRESStemp){clrscr();printf("\n\n********************************************\n");printf("nameunittelephone\n");printf("------------------------------------------------\n");printf("%-20s%-30s%-10s\n",temp.name,temp.units,temp.tele);printf("**********************end***********************\n");}/*查找函數,參數為記錄數組和記錄條數以及姓名s*/intfind(ADDRESSt[],intn,char*s){inti;for(i=0;in-1)/*如果i>n-1超過了數組的長度*/printf("nofoundnotdeleted\n");/*顯示沒找到要刪除的記錄*/else{print(t[i]);/*調用輸出函數顯示該條記錄信息*/printf("Areyousuredeleteit(1/0)\n");/*確認是否要刪除*/scanf("%d",&ch);/*輸入一個整數0或1*/if(ch==1)/*如果確認刪除整數為1*/{for(j=i+1;j=i;j--)/*從最後一個結點開始向後移動一條*/{strcpy(t[j+1].name,t[j].name);/*當前記錄的姓名拷貝到後一條*/strcpy(t[j+1].units,t[j].units);/*當前記錄的單位拷貝到後一條*/strcpy(t[j+1].tele,t[j].tele);/*當前記錄的電話拷貝到後一條*/}strcpy(t[i].name,temp.name);/*將新插入記錄的姓名拷貝到第i個位置*/strcpy(t[i].units,temp.units);/*將新插入記錄的單位拷貝到第i個位置*/strcpy(t[i].tele,temp.tele);/*將新插入記錄的電話拷貝到第i個位置*/n++;/*記錄數加1*/returnn;/*返回記錄數*/}/*保存函數,參數為結構體數組和記錄數*/voidsave(ADDRESSt[],intn){inti;FILE*fp;/*指向文件的指針*/if((fp=fopen("record.txt","wb"))==NULL)/*打開文件,並判斷打開是否正常*/{printf("cannotopenfile\n");/*沒打開*/exit(1);/*退出*/}printf("\nSavingfile\n");/*輸出提示信息*/fprintf(fp,"%d",n);/*將記錄數寫入文件*/fprintf(fp,"\r\n");/*將換行符號寫入文件*/for(i=0;i=0&&id0)/*比較大小*/{flag=1;strcpy(temp.name,t[j].name);/*交換記錄*/strcpy(temp.units,t[j].units);strcpy(temp.tele,t[j].tele);strcpy(t[j].name,t[j+1].name);strcpy(t[j].units,t[j+1].units);strcpy(t[j].tele,t[j+1].tele);strcpy(t[j+1].name,temp.name);strcpy(t[j+1].units,temp.units);strcpy(t[j+1].tele,temp.tele);}if(flag==0)break;/*如果標志為0,說明沒有發生過交換循環結束*/}printf("sortsucess!!!\n");/*顯示排序成功*/}/*快速查找,參數為結構體數組和記錄數*/voidqseek(ADDRESSt[],intn){chars[20];intl,r,m;printf("\nPleasesortbeforeqseek!\n");/*提示確認在查找之前,記錄是否已排序*/printf("pleaseenternameforqseek\n");/*提示輸入*/scanf("%s",s);/*輸入待查找的姓名*/l=0;r=n-1;/*設置左邊界與右邊界的初值*/while(lr)/*如果左邊界大於右邊界時*/printf("notfound\n");/*顯示沒找到*/}/*復制文件*/void(){charoutfile[20];/*目標文件名*/inti,n;ADDRESStemp[M];/*定義臨時變數*/FILE*sfp,*tfp;/*定義指向文件的指針*/clrscr();/*清屏*/if((sfp=fopen("record.txt","rb"))==NULL)/*打開記錄文件*/{printf("cannotopenfile\n");/*顯示不能打開文件信息*/exit(1);/*退出*/}printf("Enteroutfilename,forexamplec:\\f1\\te.txt:\n");/*提示信息*/scanf("%s",outfile);/*輸入目標文件名*/if((tfp=fopen(outfile,"wb"))==NULL)/*打開目標文件*/{printf("cannotopenfile\n");/*顯示不能打開文件信息*/exit(1);/*退出*/}fscanf(sfp,"%d",&n);/*讀出文件記錄數*/fprintf(tfp,"%d",n);/*寫入目標文件數*/fprintf(tfp,"\r\n");/*寫入換行符*/for(i=0;i
C. 通訊錄管理系統的設計
程序是我自己的課程設計,已經試驗可用
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
typedef struct{
char num[6];
char name[10];
char unit[20];
char phone[13];
char addr[30];
}datatype;
typedef struct node{
datatype data;
struct node * next;
}listnode;
typedef listnode * linklist;
linklist head;
listnode *p;
int menu_select( );
linklist createlist(void);
void insertnode(linklist head,listnode *p);
listnode *listfind(linklist head);
void delnode(linklist head);
void printlist(linklist head);
void main()
{
for( ; ; ){
switch(menu_select() )
{
case 1:
printf(" ***********************************************\n");
printf(" ************** 通訊錄鏈表的建立 ***************\n");
printf(" ***********************************************\n");
head=createlist();
break;
case 2:
printf(" ***********************************************\n");
printf(" ************** 通訊錄信息添加 *****************\n");
printf(" ***********************************************\n");
printf(" ** 編號(4) 姓名(8) 單位(20) 電話(11) 地址(30)**\n");
printf(" ***********************************************\n");
p=(listnode *)malloc(sizeof(listnode));
scanf("%s%s%s%s%s",p->data.num,p->data.name,p->data.unit,p->data.phone,p->data.addr);
insertnode(head,p);
break;
case 3:
printf(" ******************************\n");
printf(" ******* 通訊錄信息查詢 *******\n");
printf(" ******************************\n");
p=listfind(head);
if(p!=NULL){
printf(" ** 編號 姓名 單位 電話 地址**\n");
printf(" ------------------------------\n");
printf("%s,%s,%s,%s,%s\n",p->data.num,p->data.name,p->data.unit,p->data.phone,p->data.addr);
printf(" ------------------------------\n");
}
else
printf("沒有你要找的人 ! \n");
break;
case 4:
printf(" ***********************************\n");
printf(" **********通訊信息的刪除***********\n");
printf(" ***********************************\n");
delnode(head);
break;
case 5:
printf(" ***********************************\n");
printf(" **********通訊錄鏈表的輸出*********\n");
printf(" ***********************************\n");
printlist(head);
break;
case 0:
printf("\t 謝謝您的使用! \n");
return;
}
}
}
int menu_select()
{
int sn;
printf(" \n");
printf(" \n");
printf(" \n");
printf(" 通訊錄管理系統 \n");
printf(" \n");
printf(" ======================\n");
printf(" 1.通訊錄鏈表的建立\n");
printf(" 2.通訊者結點的插入\n");
printf(" 3.通訊錄鏈表的查詢\n");
printf(" 4.通訊者結點的刪除\n");
printf(" 5.通訊錄鏈表的輸出\n");
printf(" 0.退出通訊錄管理系統\n");
printf(" ======================\n");
printf( " 請選擇操作0-5 \n\n");
for(; ;)
{
scanf("%d",&sn);
if(sn<0||sn>5)
printf("\t輸入錯誤\n");
else
break;
}
return sn;
}
linklist createlist(void)
{
linklist head=(listnode *)malloc(sizeof(listnode));
listnode *p,*rear;
int flag=1;
rear=head;
while(flag==1)
{
p=(listnode *)malloc(sizeof(listnode));
printf(" 編號(4) 姓名(8) 單位(20) 電話(11) 地址(31) \n");
printf(" --------------------------------------------\n");
scanf("%s%s%s%s%s",p->data.num,p->data.name,p->data.unit,p->data.phone,p->data.addr);
rear->next=p;
rear=p;
printf(" 繼續建表嗎? (1.是/0.不):");
scanf("%d",&flag);
}
if(flag==1)
printf("創建成功!\n");
rear->next=NULL;
return head;
}
void insertnode(linklist head,listnode *p)
{
listnode *p1,*p2;
p1=head;
p2=p1->next;
while(p2!=NULL && strcmp(p2->data.num,p->data.num)<0)
{
p1=p2;
p2=p2->next;
}
p1->next=p;
p->next=p2;
printf("插入成功!\n");
}
listnode * listfind(linklist head)
{
listnode * p;
char num[6];
char name[10];
int xz;
printf("--------------------\n");
printf(" 1.編號查詢\n");
printf(" 2.姓名查詢\n");
printf("--------------------\n");
printf("請選擇: \n");
p=head->next;
scanf("%d",&xz);
if (xz==1){
printf(" 請輸入要查找的編號: ");
scanf("%s",num);
while(p && strcmp(p->data.num,num)<0)
p=p->next;
if (p==NULL || strcmp(p->data.num,num)>0)
p=NULL;
}
else
if(xz=2){
printf("請輸入要查詢者的姓名: ");
scanf("%s",name);
while(p && strcmp(p->data.name,name)!=0)
p=p->next;
}
return p;
}
void delnode(linklist head)
{
int jx;
listnode *p,*q;
p=listfind(head);
if(p==NULL){
printf("沒有要刪除的通訊者!:\n");
return;
}
printf ("真的要刪除該結點嗎?(1.是/0.不):");
scanf("%d",&jx);
if (jx==1){
q=head;
while(q!=NULL && q->next!=p)
q=q->next;
q->next=p->next;
free(p);
printf("通訊者已被刪除!\n");
}
}
void printlist(linklist head)
{
listnode * p;
p=head->next;
printf(" 編號 姓名 單位 電話 地址\n");
printf(" -----------------------------\n");
while(p!=NULL)
{
printf(" %s, %s, %s, %s, %s\n",p->data.num,p->data.name,p->data.unit,p->data.phone,p->data.addr);
printf(" ------------------------------\n");
p=p->next;
}
}
D. 設計一個哈希表,實現個人電話號碼查詢系統 這個代碼的思路
對於人的名字進行hash,主要是考驗你關於hash函數的
E. 8.簡單個人電話號碼查詢系統 C++設計
#include<iostream>
#include<fstream>
#include<string>
using namespace std;
int x=0;
char a;
int j=1;
struct TeleNumber //數據類
{
char name[20]; //姓名
int phoneNumber; //固定電話號碼
int mobileNumber; //行動電話號碼
char email[30]; //電子郵箱
int s;
TeleNumber * Next;
void ReadFile(istream & in);
void input();
void display();
} ;
void TeleNumber::ReadFile(istream & in) //從文件把數據讀入到程序
{
in>>name>>phoneNumber>>mobileNumber>>email;
}
void TeleNumber::input() //信息輸入
{
cout<<"請輸入姓名"<<endl;
cin>>name;
cout<<"請輸入固定電話號碼"<<endl;
cin>>phoneNumber;
cout<<"請輸入行動電話號碼"<<endl;
cin>>mobileNumber;
cout<<"請輸入電子郵箱"<<endl;
cin>>email;
s=j++;
}
void TeleNumber::display() //信息輸出
{
cout<<"姓名:"<<name<<'\t'<<"固定號碼:"<<phoneNumber<<'\t'
<<"行動電話號碼:"<<mobileNumber<<'\t'<<"電子郵箱:"<<email<<endl;
}
class TeleMessage //功能類
{
public:
TeleMessage(); //構造數據結構
~TeleMessage(); //釋放單鏈表
void Save(); //數據保存到文件
TeleNumber * Search(char *); //信息查找
void Insert(); //插入
void Remove(); //刪除
void Change(); //更改
void Show(); //顯示
private:
TeleNumber * End,* Head;
ifstream in; //定義讀,寫文件對象
ofstream out;
};
TeleMessage::TeleMessage()
{
Head=new TeleNumber; //頭插法建立單鏈表
Head->Next=new TeleNumber;
End=Head->Next;
in.open("TeleNumber.text"); //打開外存文件,看是否有數據存在
if(!in)
cout<<"電話系統中沒有任何號碼,請輸入號碼"<<endl;
else
{
in.close();
cout<<"讀取電話號碼系統成功!"<<endl;
}
cout<<"輸入任意字母繼續"<<endl;
cin>>a;
}
TeleMessage::~TeleMessage() //釋放單鏈表0
{
TeleNumber * temp;
while(Head->Next!=End)
{
temp=Head->Next;
Head=Head->Next;
delete temp;
}
delete Head,End; //刪除頭尾指針
}
void TeleMessage::Save() //保存文件
{
out.open("TeleNumber.txt"); //建立外存文件TeleNumber.txt
for(TeleNumber *p=Head->Next;p!=End;p=p->Next)
out<<p->name<<"\t"<<p->phoneNumber<<"\t"<<p->mobileNumber<<"\t"<<p->email<<endl;//將數據存到外存文件里
out.close();
cout<<"保存成功!"<<endl;
}
void TeleMessage::Insert() //插入
{
End->input(); //從單鏈表尾部插入
End->Next=new TeleNumber;
End=End->Next;
cout<<endl<<"插入成功"<<endl;
}
void TeleMessage::Remove() //刪除
{
char name[20];
TeleNumber * p=new TeleNumber,*temp=NULL;
cout<<"請輸入要刪除人的姓名:"<<endl;
cin>>name;
p->Next=Search(name); //先進行查找,找到所要刪除的結點
if(Search(name))
{
temp=p->Next;
p->Next=p->Next->Next; //摘鏈
delete temp;
cout<<"刪除成功!"<<endl;
}
else
{
cout<<"沒有找到!"<<endl;
}
}
TeleNumber * TeleMessage::Search(char * name)
{
for(TeleNumber *p=Head->Next;p!=End;p=p->Next)
if(!strcmp(p->name,name))
{
if(x==4)
{
p->display();
return p;
}
else
return p;
}
if(x==4)
cout<<"查無此人"<<endl;
return 0;
}
void TeleMessage::Change() //修改信息
{
char name[20];
cout<<"請輸入要修改的人的姓名:";
cin>>name;
if(Search(name))
{
cout<<"已找到個人的信息,請輸入新的信息!"<<endl;
Search(name)->input();
cout<<"修改成功!"<<endl;
}
else
{
cout<<"沒有找到!"<<endl;
}
}
void TeleMessage::Show()
{
for(TeleNumber * p=Head->Next;p!=End;p=p->Next)
p->display();
}
int main()
{
bool flag=true;
TeleMessage tele;
char name[20];
while(flag)
{
system("cls");
cout<<"簡單個人電話號碼查詢系統"<<endl<<endl;
cout<<"1.增加信息"<<endl;
cout<<"2.顯示信息"<<endl;
cout<<"3.查找號碼"<<endl;
cout<<"4.刪除信息"<<endl;
cout<<"5.修改信息"<<endl;
cout<<"6.保存信息"<<endl;
cout<<"0.退出系統"<<endl<<endl;
cout<<"請選擇:";
cin>>x;
switch(x)
{
case 0:flag=false;break;
case 1:tele.Insert();break;
case 2:tele.Show();break;
case 3:
cout<<"請輸入姓名"<<endl;
cin>>name;
tele.Search(name);break;
case 4:tele.Remove();break;
case 5:tele.Change();break;
case 6:tele.Save();break;
}
cout<<"輸入任意字母返回"<<endl;
cin>>a;
}
return 0;
}
F. <數據結構綜合實驗>電話號碼查詢系統的設計與實現
數據結構綜合實驗的
要求是什麼
任務是嗎
G. 急求c語言課程設計通訊錄系統,謝謝了
/**main_tongxunlu.c**Createdon:2011-6-21*Author:zhanglujin*/#include#include#include#includestructrecord{charname[20];//姓名charphone[12];//電話charadress[50];//地址charpostcode[8];//郵政編碼chare_mail[20];//電子郵件。}student[100];//假設最大數為100.//定義全局變數num,表示已經輸入的人數。intnum;//這里使用數組解決通訊錄的問題,實際上使用鏈表更好。intmenu_select(){chars[80];inta;/*定義整形變數*/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("Enteryouchoice(0~7):");scanf("%s",s);a=atoi(s);}while(a7);returna;}intadser(){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')adser();return(0);}voidlist(){inti;system("cls");if(num!=0){printf("\t\t\t***************以下為通訊錄所有信息************\n");for(i=0;i=0));student[j+1]=tmp;}}printf("\t\t\t排序成功,是否顯示?(y/n)");if(getch()=='y')list();return(0);}intmain(){printf("\t\t************************************************\n");printf("\t\t********welcometoTONGXUNLU*******************\n");printf("\t\t###########codebyXXXXX###################\n");printf("\t\t*************************************************\n");printf("按任意鍵進入主菜單\n");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!\n");system("pause");getchar();exit(0);}}}getchar();return0;}
H. 電話號碼查詢系統 《數據結構》課程設計
用硬體描述語言簡單!