| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1188 人关注过本帖
标题:求解一道C语言数据结构题!
只看楼主 加入收藏
a765741668
Rank: 1
等 级:新手上路
帖 子:11
专家分:2
注 册:2010-9-30
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:23 
求解一道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
liangjinchao
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:376
专家分:697
注 册:2010-11-8
收藏
得分:0 
瞄了一下!

因为有了因为,所以有了所以,既然已成既然,何必再说何必
2011-06-06 20:47
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
收藏
得分:0 
#define NAME_LEN            81
#define PHONE_NUMBER_LEN    12
#define EMAIL_LEN           81

typedef struct contact {
    char name[NAME_LEN];
    int  sex;
    char phoneNumber[PHONE_NUMBER_LEN]
    char email[EMAIL_LEN];
} contact;

typedef struct list {
    contact cnt;
    struct list* next;
} list;

—>〉Sun〈<—
2011-06-06 20:51
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
收藏
得分:19 
程序代码:
/* 编写:2011-06-06  */
/* 更新:2011-06-07 字符串比较,溜掉了“== 0)”,已补上。 */

#define NAME_LEN            81
#define PHONE_NUMBER_LEN    12
#define EMAIL_LEN           81
#define ADDRESS_LEN         255

typedef struct contact {
    char name[NAME_LEN];
    int  sex;
    char phoneNumber[PHONE_NUMBER_LEN]
    char email[EMAIL_LEN];
    char address[ADDRESS_LEN];
    struct contact *next;
} contact;

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

int isSex(contact *p, int sex)
{
    return (p->sex == sex);
}

int isPhoneNumber(contact *p, char *phoneNumber)
{
    if (strcmp(p->phoneNumber), phoneNumber) ==0)
        return 1;
    return 0;
}

int isEmail(contact *p, char *email)
{
    if (strcmp(p->email), email) ==0)
        return 1;
    return 0;
}

int isAddress(contact *p, char *address)
{
    if (strcmp(p->address), address) ==0)
        return 1;
    return 0;
}

void showContact(contact *p)
{
    printf("");  // 自己补完
}

//------------------------------------------------------//
#defint SHOW                0
#define FIND_NAME           1
#define FIND_SEX            2
#define FIND_PHONENUMBER    3
#define FIND_EMAIL          4
#define FIND_ADDRESS        5
#define NOT_SHOW            6

char name[NAME_LEN];
int  sex;
char phoneNumber[PHONE_NUMBER_LEN]
char email[EMAIL_LEN];
char address[ADDRESS_LEN];

int op=NOT_SHOW;

printMainMenu();

printFindMenu();

scanf("%d", &op);

// 自己补完吧

switch (op) {
        case FIND_NAME          : gets(name);           break;
        case FIND_SEX           : scanf("%d", &sex);    break;
        case FIND_PHONENUMBER   : gets(phoneNumber);    break;
        case FIND_EMAIL         : gets(email);          break;
        case FIND_ADDRESS       : gets(address);        break;
        default                 :                       break;
}

// 遍历
int show=0;
int n=0;
for (p=head; p!=NULL; p=p->next)
{

    switch (op) {
        case SHOW             : show = 1;                               break;
        case FIND_NAME        : show = isName(p, name);                 break;
        case FIND_SEX         : show = isSex(p, sex);                   break;
        case FIND_PHONENUMBER : show = isPhoneNumber(p, phoneNumber);   break;
        case FIND_EMAIL       : show = isEmail(p, email);               break;
        case FIND_ADDRESS     : show = isAddress(p, address);           break;
        default               :                                         break;
    }
    if (show)
        showContact(p);
    ++n;
}


[ 本帖最后由 cosdos 于 2011-6-8 00:00 编辑 ]

—>〉Sun〈<—
2011-06-06 21:29
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
voidx
Rank: 12Rank: 12Rank: 12
来 自:邯郸
等 级:火箭侠
帖 子:1250
专家分:3538
注 册:2011-4-7
收藏
得分:1 
回复 5楼 a765741668
if (strcmp(p->name), name)    // 这行写错了
 if (strcmp(p->name, name))    // 应该这样写
楼主 google 一下 strcmp 就明白了
2011-06-07 18:30
a765741668
Rank: 1
等 级:新手上路
帖 子:11
专家分:2
注 册:2010-9-30
收藏
得分:0 
是串比较吧这东西!

 
2011-06-07 18:35
voidx
Rank: 12Rank: 12Rank: 12
来 自:邯郸
等 级:火箭侠
帖 子:1250
专家分:3538
注 册:2011-4-7
收藏
得分:0 
回复 7楼 a765741668
是的
2011-06-07 18:35
a765741668
Rank: 1
等 级:新手上路
帖 子:11
专家分:2
注 册:2010-9-30
收藏
得分:0 
能补完这东西看下不,跟我自个儿弄的那个什么不同,我试着用其他的方式换算看下,不知道用指针来做会不会复杂还是简单点儿!好像这题还有其它更快捷的表达方式!说实话,4楼的语法不是看很懂,必竟跟我现学的有点差距!不好意思刚入门数据结构,请多指教!
2011-06-07 18:41
voidx
Rank: 12Rank: 12Rank: 12
来 自:邯郸
等 级:火箭侠
帖 子:1250
专家分:3538
注 册:2011-4-7
收藏
得分:0 
不好意思,这个好麻烦而且没啥趣味性,等高手来帮你做
2011-06-07 18:43
快速回复:求解一道C语言数据结构题!
数据加载中...
 
   



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

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