| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1268 人关注过本帖
标题:c语言通讯录中怎样实现按z键退出程序,求解答代码怎么改
只看楼主 加入收藏
dangyongxing
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2015-7-17
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:5 
c语言通讯录中怎样实现按z键退出程序,求解答代码怎么改
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

#define MAX 10

void init(void);/*结构初始化*/
int hello(void);/*系统界面*/
void enter(void);/*录入通讯信息*/
void scan(void); /*浏览通讯信息*/
void inquiry(void);/*查询通讯信息*/
void modify(void);/*修改通讯信息*/
void del(void);/*删除某个通讯信息*/
int find_free(void);/*检测通讯录里是否有空栏*/

struct addr{      /*通讯录结构体*/
    char name[30];/*姓名*/
    char phone[30];/*电话*/
    char email[30];/*电子邮箱地址*/
}address[MAX];

int main()
{
    int p;
    init();
    for(;;)
    {
        p=hello();
        switch(p){
            case 1:enter();break;
            case 2:scan();break;
            case 3:inquiry();break;
            case 4:modify();break;
            case 5:del();break;
            case 6:exit(0);
        }
    }
    return 0;
}

void init()
{
    register int t;
    for(t=0;t<MAX;t++)
        address[t].name[0]='\0';
}

int hello()
{
    char a[10];
    int b;
    printf("\n***************欢迎登陆通讯录系统**************\n");
    printf("1.信息录入;\n");
    printf("2.信息浏览;\n");
    printf("3.信息查询;\n");
    printf("4.信息修改;\n");
    printf("5.信息删除;\n");
    printf("6.退出系统;\n");
    printf("***********************************************\n");
    printf("请输入你需要的服务:");
    do
    {
        printf("你输入有误,请重新输入:");
        gets(a);
        b=atoi(a);
    }while(b<0||b>6);
    return b;
}

void enter()
{
    int p;
    p=find_free();
    if(p==MAX)
    {
        printf("\n信息储存已满,需要删除其他的,才能执行录入操作\n");
        return;
    }
    printf("请输入姓名:");
    gets(address[p].name);
    printf("电话号码:");
    gets(address[p].phone);
    printf("电子邮箱:");
    gets(address[p].email);
}

int find_free()
{
    register int i;
    for(i=0;address[i].name[0]&&i<MAX;i++)
    if(i==MAX)  return MAX;
    return i;
}

void scan()
{
    register int j;
    for(j=0;j<MAX;j++)
    {
        if(address[j].name[0])
        {
            printf("%s   %s   %s\n",address[j].name,address[j].phone,address[j].email);
        }
    }
    printf("\n\n");
}

void inquiry()
{
    char s[30];
    int p,i;
    printf("请输入需要查找的姓名:");
    gets(s);
    for(i=0;i<MAX;i++)
    {
        p=strcmp(s,address[i].name);
        if(!p)
        {
            printf("%s   %s   %s\n",address[i].name,address[i].phone,address[i].email);
        }
    }
    if(i==MAX)
    {
        printf("找不到你输入的姓名\n");
    }
}

void modify()
{
    int p,i;
    char s[30];
    printf("请输入你需要修改的人的姓名:");
    gets(s);
    for(i=0;i<MAX;i++)
    {   
        p=strcmp(s,address[i].name);
        if(!p)
        {
            int j;
            char m[10];
            printf("******************************\n");
            printf("1.姓名\n");
            printf("2.电话号码\n");
            printf("3.电子邮箱\n");
            printf("******************************\n");
            printf("请输入你要修改的选项:");
            do
            {
                gets(m);
                j=atoi(m);
            }while(j<1||j>3);
            switch(j)
            {
            case 1:    printf("请输入姓名:");
                    gets(address[i].name);
                    break;
            case 2: printf("电话号码:");
                    gets(address[i].phone);
                    break;
            case 3: printf("电子邮箱:");
                    gets(address[i].email);
                    break;
            }
        }
    }
    if(i==MAX)
    {
        printf("没有你修改人的信息.\n");
    }
}

void del()
{
    int p,i;
    char s[30];
    printf("请输入所删除人的姓名:");
    gets(s);
    for(i=0;i<MAX;i++)
    {
        p=strcmp(s,address[i].name);
        if(!p)
        {
            address[i].name[0]='\0';
        }
    }
    if(i==MAX)
    {
        printf("没有你删除人的信息.\n");
    }
}
搜索更多相关主题的帖子: include 通讯录 电子邮箱 modify 结构体 
2015-07-17 22:03
dangyongxing
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2015-7-17
收藏
得分:0 
就是这一部分,不会改,求解答
int main()
{
    int p;
    init();
    for(;;)
    {
        p=hello();
        switch(p){
            case 1:enter();break;
            case 2:scan();break;
            case 3:inquiry();break;
            case 4:modify();break;
            case 5:del();break;
            case 6:exit(0);
        }
    }
    return 0;
}

void init()
{
    register int t;
    for(t=0;t<MAX;t++)
        address[t].name[0]='\0';
}

int hello()
{
    char a[10];
    int b;
    printf("\n***************欢迎登陆通讯录系统**************\n");
    printf("1.信息录入;\n");
    printf("2.信息浏览;\n");
    printf("3.信息查询;\n");
    printf("4.信息修改;\n");
    printf("5.信息删除;\n");
    printf("6.退出系统;\n");
    printf("***********************************************\n");
    printf("请输入你需要的服务:");
    do
    {
        printf("你输入有误,请重新输入:");
        gets(a);
        b=atoi(a);
    }while(b<0||b>6);
    return b;
}
2015-07-17 22:04
dangyongxing
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2015-7-17
收藏
得分:0 
do...while的条件怎么控制才可以改成按Z键输出?怎样把z的值传回去
 do
    {
        printf("你输入有误,请重新输入:");
        gets(a);
        b=atoi(a);
    }while(b<0||b>6);
2015-07-17 22:09
dangyongxing
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2015-7-17
收藏
得分:0 
写错了,是按z键退出程序
2015-07-17 22:09
dangyongxing
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2015-7-17
收藏
得分:0 
伤心了,在线求解答,
2015-07-17 22:17
取名字
Rank: 8Rank: 8
等 级:贵宾
威 望:21
帖 子:236
专家分:924
注 册:2015-4-27
收藏
得分:20 
do
    {
        printf("你输入有误,请重新输入:");
        gets(a);
        b=atoi(a);
    }while(b<0||b>6);
将上面改为:
do
    {
        printf("你输入有误,请重新输入:");
        gets(a);
        if(a[0]=='z')
            b=6;
        else
            b=atoi(a);
    }while(b<0||b>6);
2015-07-17 23:39
快速回复:c语言通讯录中怎样实现按z键退出程序,求解答代码怎么改
数据加载中...
 
   



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

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