| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1188 人关注过本帖
标题:求解一道C语言数据结构题!
取消只看楼主 加入收藏
a765741668
Rank: 1
等 级:新手上路
帖 子:11
专家分:2
注 册:2010-9-30
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:8 
求解一道C语言数据结构题!
小弟对数据库结构的查找还是有点闹心,其它的的也就没什么!望虾哥多瞄一眼,求解ING!现给出下面要求,给些注释更好些!

                                                      内容:利用链表设计一个通讯录

(一)功能需求表
序号    功能需求             简述

1       界面显示           界面能够显示如下选项:新建通讯录;通讯者的插入;通讯者的删除;通讯者的查询;通讯录信息的输出;通讯录的保存等;用户输入相应的
                           序号后能够进入该选项。
1.1     新建通讯录         新建一个通讯链表
1.2     通讯者的插入       向当前通讯表中插入一个通讯者的信息,通讯者的信息包括:姓名,性别,联系电话,E-mail和通讯地址等。
1.3     通讯者的删除       删除指定姓名的通讯者的全部信息。
1.4     通讯者的查询       两个子选项,对应两种查询方式:1.根据输入的通讯者的姓名查询;2.根据输入的联系电话查询。查询后应返回并显示所有符合条件的记录。
1.5     通讯录信息的输出   输出整个通讯录中的所有信息。
1.6     通讯录的保存       实现将该通讯录中的信息保存到文件中


(二)项目要求:
1.通讯录管理,包括单通讯链表的建立、通讯者的插入、通讯者的删除、通讯者的查询以及通讯录表的输出等功能。要求用控制台应用程序实现该项目需求。
2.程序要给出用户能够做出选择的界面,比如数据录入、数据查询、该界面还要给出可以查询全部数据的功能。系统启动后,用户根据界面提示进入相应的操作模块;
3.数据必须按照链表的规定进行存储,具体的存储格式自行选定;
4.必做功能及模块:通讯链表的建立、通讯者的插入、通讯者的删除、通讯者的查询以及通讯录信息的输出。
5.选做功能及模块:通讯录的保存功能(将通讯录信息保存到指定的文件中)。
搜索更多相关主题的帖子: 通讯录 数据库 C语言 用户 
2011-06-06 20:40
a765741668
Rank: 1
等 级:新手上路
帖 子:11
专家分:2
注 册:2010-9-30
收藏
得分:0 
还是有点摸不着头脑!这东西真够折腾人啊!类似:

int isName(contact *p, char *name)
{
    if (strcmp(p->name), name)
        return 1;
    return 0;

这样儿式的表达是怎么解释的呢!因为老师只字未提,也没怎么看其它资料的表达方式!其它的还可以消化!
2011-06-07 18:27
a765741668
Rank: 1
等 级:新手上路
帖 子:11
专家分:2
注 册:2010-9-30
收藏
得分:0 
是串比较吧这东西!

 
2011-06-07 18:35
a765741668
Rank: 1
等 级:新手上路
帖 子:11
专家分:2
注 册:2010-9-30
收藏
得分:0 
能补完这东西看下不,跟我自个儿弄的那个什么不同,我试着用其他的方式换算看下,不知道用指针来做会不会复杂还是简单点儿!好像这题还有其它更快捷的表达方式!说实话,4楼的语法不是看很懂,必竟跟我现学的有点差距!不好意思刚入门数据结构,请多指教!
2011-06-07 18:41
a765741668
Rank: 1
等 级:新手上路
帖 子:11
专家分:2
注 册:2010-9-30
收藏
得分:0 
哦!谢过!
2011-06-07 18:47
a765741668
Rank: 1
等 级:新手上路
帖 子:11
专家分:2
注 册:2010-9-30
收藏
得分:0 
嗯!难怪,看得纠结!
2011-06-08 08:34
a765741668
Rank: 1
等 级:新手上路
帖 子:11
专家分:2
注 册:2010-9-30
收藏
得分:0 
定义结点时漏了个“;”号!if 语句里面全部少一个左括号了!对了,那个dedint为何意啊!解释一下可以么?
2011-06-08 08:47
a765741668
Rank: 1
等 级:新手上路
帖 子:11
专家分:2
注 册:2010-9-30
收藏
得分:0 
久经绞尽脑汁,终于小有成就!现发上来给评点评点!虽然代码不怎么同,但效果应该没什么区别!

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>
typedef struct NODE
{                          
    char name[10];
    char sxe;
    char tel[15];
    char email[20];
    char adrr[20];            
    struct NODE *next;   
}node,*nod;

nod creater(nod l)/*创建*/        
{
    nod p,p1;
    int x;
    char a;
    x=1;
    l=(nod)malloc(sizeof(node));   /*开辟头结点*/  
    p1=l;
    printf("\n请输入信息:\n");
 while(x)     
  {
      {
        p=(nod)malloc(sizeof(node)); /*开辟空间*/   
        printf("\n姓名:");    /*赋值*/
        scanf("%s",p->name);                                                
        printf("性别:");
        p->sxe=getche();
        printf("\n电话:");
        scanf("%s",p->tel);
        printf("E-mail:");
        scanf("%s",p->email);
        printf("地址:");
        scanf("%s",p->adrr);
        p1->next=p;     /*连接*/   
        p1=p;   /*p1移动*/
      }
        printf("\n是否继续录入?(Y/N)注意大写:");/*判断*/
            a=getche();
            if(a=='N') x=0;
                else x=1;
 }
 p1->next=NULL;      
 return l;
 }
void print(nod l)/*输出*/           
{
  
  nod p;
  p=l->next;            
  printf("\n\n                   通讯者信息                            \n");
  printf("\n************************************************************");
  printf("\n姓名:       性别:        电话:        E-mail:       地址:");
  while(p!=NULL)/*搜索*/
    {
     printf("\n%s        %c       %s      %s       %s",p->name,p->sxe,p->tel,p->email,p->adrr);
     p=p->next;
     }
 printf("\n************************************************************");
 }
void list_find(nod l)/*查找*/           
{
    nod p;
    char a,name1[20];
    int x,n;
    char tel1[15];
    x=1;
while(x)
{
   p=l->next;
   printf("\n姓名查找:1");
   printf("\n电话查找:2");
   printf("\n请选择:");
   scanf("%d",&n);
switch(n)
{
case 1:
    {      
       printf("\n请输入查找者姓名:");
       scanf("%s",name1);
       while(p!=NULL&&strcmp(name1,p->name)!=0) /*比较和判断*/  
        p=p->next;
       break;
     }
case 2:
    {
        printf("\n请输入查找者电话:");
        scanf("%s",tel1);
        while(p!=NULL&&strcmp(tel1,p->tel)!=0)  /*比较和判断*/
        p=p->next;
        break;
    }
}
  if(p==NULL)printf("\n查找错误!");            
  else printf("\n姓名:%s   性别:%c   电话:%s   E-mail:%s   地址:%s",p->name,p->sxe,p->tel,p->email,p->adrr);
   printf("\n是否继续查找?(Y/N)注意大写:");
            a=getche();
            if(a=='N') x=0;
             else x=1;
}
  
}


void set_insert(nod l)/*插入*/
{
      
    nod u,p=l;
    char a;
    int x;
    x=1;
    printf("\n请输入信息:");
    while(p->next!=NULL)  /*搜索至表尾*/
        p=p->next;
    while(x)
    {
        u=(nod)malloc(sizeof(node));   
        printf("\n姓名:");
        scanf("%s",u->name);                                      
        printf("性别:");
        u->sxe=getche();
        printf("\n电话:");
        scanf("%s",u->tel);
        printf("E-mail:");
        scanf("%s",u->email);
        printf("地址:");
        scanf("%s",u->adrr);   
        u->next=p->next; /*连接*/  
        p->next=u;
    printf("\n是否继续插入?(Y/N)注意大写:");
            a=getche();
            if(a=='N') x=0;
                else x=1;
               
   
    }
}
void list_delete(nod l) /*删除*/
{
    nod u,p=l;
    char a,name1[10];
    int x;
    x=1;
    while(x)
    {
    printf("请输入删除者姓名:");
    scanf("%s",name1);
    while(p->next!=NULL&&strcmp(name1,p->next->name)!=0)   /*比较和判断*/
        p=p->next;
    if(p->next==NULL)  
        printf("删除错误!");  
    else
    {
        u=p->next;  
        p->next=u->next;   
        free(u);   /**/
    }
     printf("\n是否继续删除?(Y/N)注意大写:");
            a=getche();
            if(a=='N') x=0;
                else x=1;
               
    }
}
void preserve(nod l)/*保存*/
{
    FILE *fp;
    nod p;
    p=l->next;
    if((fp=fopen("数据.txt","w"))==NULL)
    printf("\n错误!");
    else
    {
        while(p!=NULL)
    {
     fprintf(fp,"%s        %c       %s      %s       %s",p->name,p->sxe,p->tel,p->email,p->adrr);
     p=p->next;
    }
    fclose(fp);
    }
}
void main()
{
    nod L=NULL,q=NULL;
    int n;
    system( "cls ");
    printf("\n          ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆");
    printf("\n                             欢迎使用本程序                           ");
    printf("\n          ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n");
    printf("\n                               【1】: 新建通讯录\n");
    printf("\n                               【2】: 通讯者的插入\n");
    printf("\n                               【3】: 通讯者的删除\n");
    printf("\n                               【4】: 通讯者的查询\n");
    printf("\n                               【5】: 通讯录信息的输出\n");
    printf("\n                               【6】: 通讯录的保存\n");
    printf("\n                               【0】: 退出\n");
    while(1)
    {
        printf("\n\n输入相应数字选择功能:");
        scanf("%d",&n);
        if(n==0)break;
        switch(n)     /*选择*/
        {
        
        case 1:
            {
                q=creater(L);               
                break;
            }
        case 2:
            {
               if(q==NULL)q=creater(L);   /* 不当选择时*/
                 else set_insert(q);
                break;
            }
        case 3:
            {
                if(q==NULL)printf("删除错误!");
                  else list_delete(q);
                break;
               
            }
       case 4:
            {
                if(q==NULL)printf("无法查找!");         
                  else list_find(q);               
                break;                                
            }
       case 5:
           {
               if(q==NULL)printf("没有数据!");
                 else print(q);
              break;
           }
       case 6:
           {
               if(q==NULL)printf("无法保存!");
                else preserve(q);
               break;

           }
      
        default:printf("\n选择错误(重选):");/*不在选择范围时*/
    printf("\n                               【1】: 新建通讯录\n");
    printf("\n                               【2】: 通讯者的插入\n");
    printf("\n                               【3】: 通讯者的删除\n");
    printf("\n                               【4】: 通讯者的查询\n");
    printf("\n                               【5】: 通讯录信息的输出\n");
    printf("\n                               【6】: 通讯录的保存\n");
    printf("\n                               【0】: 退出\n");
            
        }


    }

}

 
2011-06-12 08:39
a765741668
Rank: 1
等 级:新手上路
帖 子:11
专家分:2
注 册:2010-9-30
收藏
得分:0 
可能是烦了点,因为不会什么太简单的方法!

 
2011-06-12 08:40
快速回复:求解一道C语言数据结构题!
数据加载中...
 
   



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

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