| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 554 人关注过本帖
标题:通讯者信息查找功能 总是查无此人 为什么 我真想不明白哪里错了
只看楼主 加入收藏
寻疑
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2014-8-6
结帖率:100%
收藏
已结贴  问题点数:5 回复次数:6 
通讯者信息查找功能 总是查无此人 为什么 我真想不明白哪里错了
#include"first.h"
#include"second.h"

int main()
{
    node *head,*p;
    for(;;){
    switch(menu_select()){
    case 1:
    printf("通讯录链表的建立\n");
    head=CreatList();
    break;
    case 2:
    printf("通讯者信息的插入\n");
    p=(node *)malloc(sizeof(node));
    printf("输入编号,姓名,性别,电话,地址\n");
    scanf("%s,%s,%s,%s,%s",p->data.num,p->data.name,p->data.sex,p->data.phone,p->data.addr);
    InsertNode(head,p);
    break;
    case 3:
    printf("通讯者信息的查询\n");
    p=ListFind(head);
    if(p!=NULL){
    printf("编号 姓名 性别电话 地址分别是:");
    printf("%s,%s,%s,%s,%s\n",p->data.num,p->data.name,p->data.sex,p->data.phone,p->data.addr);
    }else{
    printf("没查到要查询的通讯者!\n");
    }
    break;
    case 4:
    printf("通讯者信息的修改\n");
    ChangeNode(head);
    break;
    case 5:
    printf("通讯者信息的删除\n");
    DelNode(head);
    break;
    case 6:
    printf("通讯录链表的输出\n");
    printfList(head);
    break;
    case 0:
    printf("再见\n");
    return 0;//不可少

    }
      //break;
    }
return 0;
}





#ifndef FIRST_H_INCLUDED
#define FIRST_H_INCLUDED
#include <stdio.h>
#include <stdlib.h>
#include<string.h>
typedef struct datatype1 datatype;
typedef struct node1 node;
struct datatype1{
char num[5];
char name[9];
char sex[3];
char phone[13];
char addr[31];
};
struct node1{
datatype data;
node *next;
};
int menu_select();
node *CreatList();
void InsertNode(node *l,node *p);
node *ListFind(node *l);
void ChangeNode(node *l);
void printfList(node *l);

#endif // FIRST_H_INCLUDED




#ifndef SECOND_H_INCLUDED
#define SECOND_H_INCLUDED

int menu_select(){
int sn;
printf("   通讯录管理系统\n");
printf("=======================\n");
printf("1.通讯录链表的建立\n");
printf("2.通讯者信息的插入\n");
printf("3.通讯者信息的查询\n");
printf("4.通讯者信息的修改\n");
printf("5.通讯者信息的删除\n");
printf("6.通讯者信息的输出\n");
printf("0.退出管理系统\n");
printf("=======================\n");
printf("   请选择0-6\n");

for(;;){
scanf("%d",&sn);
if(sn<0||sn>6)
printf("\n\t输入错误,重选0—6:");
else
break;
}
return sn;
}


node *CreatList(){
node *head,*rear,*s;
char flag='y';
head=(node *)malloc(sizeof(node));
head->next=NULL;
rear=head;

while(flag=='y'||flag=='Y'){
s=(node *)malloc(sizeof(node));
printf("请顺序输入编号,姓名,性别,电话和地址:\n");
scanf("%s,%s,%s,%s,%s\n",s->data.num,s->data.name,s->data.sex,s->data.phone,s->data.addr);
s->next=rear->next;rear->next=s;rear=s;

printf("若想继续输入请按y,否则请按n:");
getchar();
scanf("%c",&flag);

}
return head;
}

void InsertNode(node *l,node *p){
node *s=l->next,*t=s->next;
while(t!=NULL&&(t->data.num<p->data.num)){
s=t;
t=t->next;
}
p->next=s->next;
s->next=p;
}


node *ListFind(node *l){
node *p;
char num[5];
char name[9];
int select;

printf("      查询方式的选择\n");
printf("======================\n");
printf("    选择1进行编号查询\n");
printf("    选择2进行姓名查询\n");
printf("======================\n");

printf("请进行查询方式的选择:");
scanf("%d\n",&select);

switch(select){

case 1:
    p=l->next;
    printf("请输入要查询的编号:");
    scanf("%s",num);

    while(p!=NULL&&strcmp(p->data.num,num)<0)
        p=p->next;
    if(p==NULL||strcmp(p->data.num,num)>0)
    p=NULL;
    break;
case 2:
    p=l->next;
    printf("请输入要查询的姓名:");
    scanf("%s",name);

    while(p!=NULL&&strcmp(p->data.name,name)!=0)
    p=p->next;
    break;
//default: if(select!=1&&select!=2){
//printf("请输入正确的选择\n");
//return ListFind(l);
}
return p;
}

void ChangeNode(node *l){
node *p=ListFind(l);
if(p!=NULL){
  printf("未修改前:");
  printf("%s,%s,%s,%s,%s\n",p->data.num,p->data.name,p->data.sex,p->data.phone,p->data.addr);
  printf("=================================================================================================");
  printf("请输入编号,姓名,性别,电话,地址:");
  scanf("%s,%s,%s,%s,%s\n",p->data.num,p->data.name,p->data.sex,p->data.phone,p->data.addr);
}
else{
printf("未找到此人!\n");
}
}

void DelNode(node *l){
node *p,*q;
p=ListFind(l);
if(p==NULL){
printf("无此人,无法删除\n");
}
q=l;
while(q!=NULL&&q->next!=p){
q=q->next;
}
q->next=p->next;
free(p);
}

void printfList(node *l){
node *p=l->next;
while(p!=NULL){
printf("%s,%s,%s,%s,%s\n",p->data.num,p->data.name,p->data.sex,p->data.phone,p->data.addr);
p=p->next;
}
}
#endif // SECOND_H_INCLUDED
搜索更多相关主题的帖子: include 通讯录 信息 电话 姓名 
2015-03-18 15:29
寻疑
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2014-8-6
收藏
得分:0 
跪求大神 只要是能解决这问题的 绝对是大神
2015-03-18 16:42
寻疑
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2014-8-6
收藏
得分:0 
本人已找到 两个小错误 一个致命性错误 我倒是想看哪个大神能找到
2015-03-18 17:17
执笔画江山
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:3
帖 子:265
专家分:1010
注 册:2015-1-13
收藏
得分:0 
你这是来虚心求教的态度么  首先 学会提问 再来提问吧   不然看着你的这态度 也是转身走人

谁不惜看你的这程序。逻辑不严谨  语法不得体  代码不简约  看了也没什么收获

授人以鱼,不如授人以渔
2015-03-18 17:43
寻疑
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2014-8-6
收藏
得分:0 
回复 4楼 执笔画江山
没关系 而且从你话中就知道你是业余者 我那里并没有你说的那些错误哟  看不懂别瞎说  但是我对我的无礼抱歉  大概我很崇拜大神  所以真的很抱歉
2015-03-18 18:36
longwu9t
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:6
帖 子:732
专家分:2468
注 册:2014-10-9
收藏
得分:5 
通讯录管理系统
=======================
1.通讯录链表的建立
2.通讯者信息的插入
3.通讯者信息的查询
4.通讯者信息的修改
5.通讯者信息的删除
6.通讯者信息的输出
0.退出管理系统
=======================
   请选择0-6
1
通讯录链表的建立
请顺序输入编号 姓名 性别 电话 地址:
1 a F 123 aaaa
若想继续输入请按y,否则请按n:
y
请顺序输入编号 姓名 性别 电话 地址:
2 b M 135 hhhhh
若想继续输入请按y,否则请按n:
y
请顺序输入编号 姓名 性别 电话 地址:
3 c F 157 ggdfdg
若想继续输入请按y,否则请按n:
n
   通讯录管理系统
=======================
1.通讯录链表的建立
2.通讯者信息的插入
3.通讯者信息的查询
4.通讯者信息的修改
5.通讯者信息的删除
6.通讯者信息的输出
0.退出管理系统
=======================
   请选择0-6
3
通讯者信息的查询
      查询方式的选择
======================
    选择1进行编号查询
    选择2进行姓名查询
======================
请进行查询方式的选择:
1
请输入要查询的编号:
1
编号    姓名    性别    电话    地址分别是:
1       a       F       123     aaaa
   通讯录管理系统
=======================
1.通讯录链表的建立
2.通讯者信息的插入
3.通讯者信息的查询
4.通讯者信息的修改
5.通讯者信息的删除
6.通讯者信息的输出
0.退出管理系统
=======================
   请选择0-6
3
通讯者信息的查询
      查询方式的选择
======================
    选择1进行编号查询
    选择2进行姓名查询
======================
请进行查询方式的选择:
2
请输入要查询的姓名:
b
编号    姓名    性别    电话    地址分别是:
2       b       M       135     hhhhh
   通讯录管理系统
=======================
1.通讯录链表的建立
2.通讯者信息的插入
3.通讯者信息的查询
4.通讯者信息的修改
5.通讯者信息的删除
6.通讯者信息的输出
0.退出管理系统
=======================
   请选择0-6
3
通讯者信息的查询
      查询方式的选择
======================
    选择1进行编号查询
    选择2进行姓名查询
======================
请进行查询方式的选择:
1
请输入要查询的编号:
3
编号    姓名    性别    电话    地址分别是:
3       c       F       157     ggdfdg
   通讯录管理系统
=======================
1.通讯录链表的建立
2.通讯者信息的插入
3.通讯者信息的查询
4.通讯者信息的修改
5.通讯者信息的删除
6.通讯者信息的输出
0.退出管理系统
=======================
   请选择0-6
0
再见

Press any key to continue.

Only the Code Tells the Truth             K.I.S.S
2015-03-20 16:43
寻疑
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2014-8-6
收藏
得分:0 
回复 6楼 longwu9t
厉害 虽然是小问题 但是看得出来你功底或者逻辑不错 哎 你早点出来告诉我我就不用浪费这么多时间了
2015-03-21 15:32
快速回复:通讯者信息查找功能 总是查无此人 为什么 我真想不明白哪里错了
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018046 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved