C++ 课程设计之同学通讯录
#include
#include
#include
#include
#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〓〓〓请开始输入记录(当输入#时结束)!〓〓〓\n"); while(1)
{
printf("请输入姓名:\n");scanf("%s",str);getchar();
if(strcmp(str,"#")==0) break;
p1=(ID*)malloc(sizeof(ID));
strcpy(p1->name,str);
printf("请输入电话号码");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->name,str))
{
p2=p1;p1=p1->next;
}
if(p1==NULL)
printf("未找到符合记录!\n");
else if(strcmp(p1->name,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");
printf("1.修改姓名\n2.修改电话号码\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("姓名&电话号码\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* * * * C语言课程设计之同学电话薄管理系统* * * *\n\n\n\n\n");
printf("\t\t\t\t\t -------计科0805田凯\n");
while(1)
{
printf("☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆\n");
printf("\t ◇菜单:◇\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 ○●○●○6.修改○●○●○\n");
printf("\t\t ○●○●○0.退出○●○●○\n");
printf("\n");
printf("☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆\n");
printf("请选择(0-6):");
scanf("%d",&choise);
getchar();
switch(choise)
{
case 1: head=creat(); /*如果输入1,则指针指向creat函数*/
break;
case 2: print(head); /*如果输入2,则指针指向print函数*/
break;
case 3: head=search(head); /*如果输入3,则指针指向search函数*/
break;
case 4: head=insert(head); /*如果输入4,则指针指向insert函数*/
break;
case 5: head=delet(head);/*如果输入5,则指针指向delet函数*/
break;
case 6: head=modify(head);/*如果输入6,则指针指向delet函数*/
break;
case 0:
exit(0); /*如果输入0,则退出程序*/
break;
default :printf("输入错误,请重新输入!\n"); //若输入其他则显示输入错误}
}
}
#include
#include
#include
#include
#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〓〓〓请开始输入记录(当输入#时结束)!〓〓〓\n");
while(1)
{
printf("请输入姓名:\n");scanf("%s",str);getchar();
if(strcmp(str,"#")==0) break;
p1=(ID*)malloc(sizeof(ID));
strcpy(p1->name,str);
printf("请输入电话号码");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->name,str))
{
p2=p1;p1=p1->next;
}
if(p1==NULL)
printf("未找到符合记录!\n");
else if(strcmp(p1->name,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");
printf("1.修改姓名\n2.修改电话号码\n");
scanf("%d",&mode);getchar();
if(mode==1)
{
printf("请输入修改后的姓名\n");
scanf("%s",p1->name);getchar();
printf("修改后的记录为:\n姓名:%s\t电话号码:%s\n",p1->name,p1->tele);
}
else if(mode==2)
{
printf("请输入修改后的电话号码\n");
scanf("%s",p1->tele);getchar();
printf("修改后的记录为:\n姓名:%s\t电话号码:%s\n",p1->name,p1->tele);
}
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("姓名&电话号码\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* * * * C语言课程设计之同学电话薄管理系统* * * *\n\n\n\n\n");
printf("\t\t\t\t\t -------计科0805田凯\n");
while(1)
{
printf("☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆\n");
printf("\t ◇菜单:◇\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 ○●○●○6.修改○●○●○\n");
printf("\t\t ○●○●○0.退出○●○●○\n");
printf("\n");
printf("☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆\n");
printf("请选择(0-6):");
printf("☆★☆如果您第一次使用,请先建立通讯录请输入1 ☆★☆\n");
scanf("%d",&choise);
getchar();
switch(choise)
{
case 1: head=creat(); /*如果输入1,则指针指向creat函数*/
break;
case 2: print(head); /*如果输入2,则指针指向print函数*/
break;
case 3: head=search(head); /*如果输入3,则指针指向search函数*/
break;
case 4: head=insert(head); /*如果输入4,则指针指向insert函数*/
break;
case 5: head=delet(head);/*如果输入5,则指针指向delet函数*/
break;
case 6: head=modify(head);/*如果输入6,则指针指向delet函数*/
break;
case 0:
exit(0); /*如果输入0,则退出程序*/
break;
default :printf("输入错误,请重新输入!\n"); //若输入其他则显示输入错误
}
}
}