首页 > 用户发贴区 > 编程问题提问区 > 一个电话本程序,帮忙看看啊
2007
06-21

一个电话本程序,帮忙看看啊

我是新手,各位见笑了,1。不知道怎样让输入错误三次退出2。不知道怎样可以修改登陆密码3。添加函数每次添加进去都会覆盖掉刚才的,只能输出来一条。请帮忙该改,找找问题啊!感谢!!!


/*编程思想:
 *通过链表来构建一个电话本程序,
 *再用创建文件的方法,来写入和
 *读取!*/
/********************************************************/
//预编译部分
#include<stdio.h>
#include<string.h>
#include<malloc.h>
#include<stdlib.h>
char name1[11]=”gaolei”;
char mima1[11]=”981500″;
//构建结构体
typedef struct Tel
{
 char name[10];
 char num[12];
 struct Tel *next;
}tel;
//全局变量 head头文件
tel *head=NULL;
//添加函数
tel *tianjia(tel *head)
{
 tel *p,*p1,*p2;
 p=head;
 p1=(tel *)malloc(sizeof(tel));
 printf(“请输入用户名:”);
 scanf(“%s”,p1->name);
 if(strcmp(p1->name,”#”)==0)
 {
  exit(0);
 }
 printf(“请输入号码:”);
 scanf(“%s”,p1->num);
 if(head==NULL)
 {
  head=p1;
  p1->next=NULL;
 }
 else
 {
  while(p!=NULL&&strcmp(p->name,p1->name)<0)
  {
   p2=p;
   p=p->next;
  }
  if(p==head)
  {
   p1->next=head;
   head=p1;
  }
  else
  {
   p2->next=p1;
   head=p1;
  }
 p1->next=NULL; 
 }


return head;
}
//查找函数
tel *chazhao(tel *head)
{
 tel *p1;
 char name[10];
 p1=head;
 printf(“请输入要查找的用户名:”);
 scanf(“%s”,name);
 if(strcmp(name,”#”)==0)
 {
  return head;
 }
 while(p1->next!=NULL)
 {
  p1->next=p1;
 }
 if(p1->name==NULL)
 {
  printf(“没有这个用户或者已被删除!\n”);
 }
 if(strcmp(p1->name,name)==0)
 {
  printf(“姓名\t电话\n”);
  printf(“%s\t%s\n”,p1->name,p1->num);
 }
 return head;
}
//删除函数
tel *shanchu(tel *head)
{
 tel *p1,*p2;
 char name[10];
 p1=head;
 printf(“请输入要删除的用户名:”);
 scanf(“%s”,name);
 if(strcmp(name,”#”)==0)
 {
  return head;
 }
 while(p1!=NULL&&strcmp(p1->name,name)!=0)
 {
  p2=p1;
 }
 if(p1==NULL)
 {
  printf(“没有这个用户或者已被删除!\n”);
 }
 else
 {
  if(p1=head)
  {
   head=p1->next;
  }
  else
  {
   p2->next=p1->next;
  }
  free(p1);
  printf(“删除成功!\n”);
 }
return head;
}
//输出函数
void shuchu(tel *head)
{
 tel *p1;
 p1=head;
 if(p1==NULL)
 {
  printf(“这个号码本是空的!\n”);
 }
 printf(“姓名\t号码\n”);
 while(p1!=NULL)
 {
 printf(“%s\t%s”,p1->name,p1->num);
 p1=p1->next;
 }
 printf(“\n”);
 printf(“输出完毕!\n”);
}
//修改密码
void xiugai()
{
 char mima1[11];
 char mima2[11];
  d:printf(“请输入新密码:”);
 scanf(“%s”,mima1);
 printf(“请再次输入:”);
 scanf(“%s”,mima2);
 if(strcmp(mima1,mima2)!=0)
 {
  printf(“两次密码不一致,请重新输入,并区分大小写!\n”);
  goto d;
 }
 else
 {
  strcpy(mima1,mima);
  printf(“密码修改成功!\n”);
 }
}


//主函数
void main()

 char name[11];
 char mima[11];
 int a,i=0;
  b:printf(“请输入用户名:”);
 scanf(“%s”,name);
 printf(“请输入密码:”);
 scanf(“%s”,mima);
 if(strcmp(name,name1)==0&&strcmp(mima,mima1)==0)
 {
  printf(“登陆成功!\n”);
  a:printf(“1.添加用户\t2.查找用户\t3.删除用户\n4.输出全部\t5.修改密码\t6.退出系统\n”);
 scanf(“%d”,&a);
  switch(a)
  {
  case 1:head=tianjia(head);goto a;
  case 2:chazhao(head);goto a;
  case 3:shanchu(head);goto a;
  case 4:shuchu(head);goto a;
  case 5:xiugai(head);goto a;
        case 6:printf(“感谢您的使用!再见!\n”);break;
  default :for(;i<=3;)
     {
      printf(“您输入错误!\n”);
      goto a;i++;
     }
    printf(“您累计输入错误三次!再见!按任意键退出!\n”);
    break;
  }
 }
 else
 {
  for(;i<=3;i++)
  {
   printf(“您输入错误!\n”);
   goto b;
  }
  printf(“您累计输入错误三次!再见!按任意键退出!\n”);
  }
}


留下一个回复