电话号码查询系统课程设计
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. 电话号码查询系统 《数据结构》课程设计
用硬件描述语言简单!