我是新手,各位见笑了,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”);
}
}
>> 本文固定链接: http://www.vcgood.com/archives/1638