C++ 课程设计之同学通讯录

C++  课程设计之同学通讯录
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"); //若输入其他则显示输入错误

}

}

}

相关主题
相关文档
最新文档