当前位置: 首页 > 工具软件 > revise > 使用案例 >

c++编译 [Error] ‘revise‘ was not declared in this scope

顾单弓
2023-12-01

源码

#include <stdio.h>
#include <string.h>
#include <malloc.h>
#include <windows.h>
#include <cstdlib>
 using namespace std;
int n=0;    //定义全局变量 存储电话联系人个数
 
struct phone_info    //定义结构体 存储联系人信息
{
    char name[20];    //姓名
    char phone[20];        //电话
    char type;    //分类
    char email[20];    //邮箱
    struct phone_info *next;    //指向下一个节点的指针
};
 
/*-----错误函数-----*/
//所需参数:无
//函数功能:显示错误信息
//返回参数:无
void error()
{
    printf("代码错误\n\n");
    system( "pause ");
}
 
/*-----输出函数-----*/
//所需参数:链表头指针
//函数功能:输出链表中的联系人信息
//返回参数:无
void output(struct phone_info *head)
{
    struct phone_info *p1=head,*p2;
    system("cls");    //清屏
    if(head==NULL)    //如果当前链表头指针为空
    {
        printf("当前没有任何联系人信息\n\n");
        system( "pause "); 
        return;    //返回
    }
    printf("电话联系薄(共%d条信息)\n\n",n);
    for(;;)
    {
        p2=p1->next;
        printf("姓名:%s\n",p1->name);
        printf("电话:%s\n",p1->phone);
        if(p1->type=='A'||p1->type=='a')
            printf("类别:办公类\n");
        else if(p1->type=='B'||p1->type=='b')
            printf("类别:个人类\n");
        else
            printf("类别:商务类\n");
        printf("邮箱:%s\n",p1->email);
        printf("\n");
        if(p1->next==NULL)    //如果当前指针所指向的结构体中next指向空则链表输出完毕
            break;    //返回
        p1=p2;
    }
}
 
/*-----新增函数-----*/
//所需参数:链表头指针
//函数功能:新增联系人信息 并自动添加到链表末尾
//返回参数:链表头指针
struct  phone_info *new_info(struct phone_info *head)//新增
{
    struct phone_info *p1,*p2,*p;
    char c;
    int flag;
    system("cls");    //清屏
    for(;;)
    {
        if(n==15)    //判断当前联系人数目是否超过系统限制
        {
            printf("存储空间已满,不能再录入新数据!\n\n");
            system( "pause");
            return head;
        }
        if(n==0)    //判断当前联系人数目是否为0
        {
            head=p1=p2=(struct phone_info *)malloc(sizeof(struct phone_info));    //新建结构体 并将结构体指针赋予链表头指针
            p1->next=NULL;
        }
        else
        {
            p1=head;
            p2=(struct phone_info *)malloc(sizeof(struct phone_info));    //新建结构体
        }
        printf("请输入要新增的联系人姓名:\n(如果输入“0”则停止新增,并返回主菜单)\n");
        scanf("%s",p2->name);
        if(strcmp(p2->name,"0")==0)    //判断输入的姓名是否为“0”
        {
            free(p2);    //为“0”则释放新开辟的空间
            return head;    //返回
        }
        printf("\n请输入联系人的电话号码:\n");
        scanf("%s",p2->phone);
        for(flag=1,p=head;n!=0&&p!=NULL;)    //判断是否输入了相同的联系人电话
        {
            if(strcmp(p2->phone,p->phone)==0)
            {
                printf("\n录入了相同的联系人电话\n\n");
                system( "pause ");
                flag=0;    //标志位赋“0”
                free(p2);
                system("cls");
                break;    //退出循环
            }
            p=p->next;
        }
        if(flag==0)    //判断标志位是否为“0”
            continue;    //如果为“0”则进入下一次循环
        printf("\n请输入联系人的类别:\n(\"A\"为办公类 \"B\"为个人类 \"C\"为商务类)\n");
        scanf("%c",&c);    //保存上一次输入的回车键
        scanf("%c",&p2->type);
        printf("\n请输入联系人的电子邮箱:\n");
        scanf("%s",p2->email);
        while(p1->next!=NULL)    
            p1=p1->next;    //找到链表的尾部
        p1->next=p2;    //将链表的尾部指向新添加的联系人
        p2->next=NULL;    //新的链表尾部赋结束标记
        system("cls");
        printf("新增成功\n\n");
        n++;        //保存的联系人数目加1
    }
    return head;
}
 
/*-----拨号函数-----*/
//所需参数:链表头指针
//函数功能:在链表中查找指定的联系人 并模拟拨号效果
//返回参数:无
void diag(struct phone_info *head)
{
    char name[20];
    struct phone_info *p1;    
    system("cls");
    for(;;)
    {    
        if(n==0)    //判断当前联系人数目是否为0
        {
            printf("当前没有任何联系人信息\n\n");
            system("pause");
            return;
        }
        system("cls");
        output(head);    //调用输出函数 显示当前所有联系人的信息
        printf("请输入要拨号的联系人姓名:\n(如果输入“0”则停止拨号,并返回主菜单)\n");
        scanf("%s",name);    
        if(strcmp(name,"0")==0)    //判断输入的姓名是否为0
            return;    //返回
        else
        {
            p1=head;
            for(;;)
            {
                if(strcmp(name,p1->name)==0)    //找到指定联系人所在节点
                {
                    printf("\n拨号成功\n\n");
                    system("pause");
                    break;
                }                            
                p1=p1->next;    //找到下一节点
                if(p1==NULL)    //指针为空
                {
                    printf("\n姓名为%s的联系人不存在!\n\n",name);
                    system("pause");
                    break;
                }
            }
        }
    }
}
 
/*-----释放函数-----*/
//所需参数:链表头指针
//函数功能:释放链表存储空间的内容
//返回参数:无
void freelist(struct phone_info *head)
{
    struct phone_info *p1=head,*p2;
    for(;;)
    {    
        if(p1->next==NULL)
        {
            free(p1);
            break;
        }
        else
        {
            p2=p1->next;
            free(p1);
            p1=p2;
        }
    }
}
 
/*-----查看函数-----*/
//所需参数:链表头指针
//函数功能:显示指定类别的联系人信息
//返回参数:无
void look(struct phone_info *head)
{
    struct phone_info *p;
    int c;
    int flag;
    char type;
    system("cls");
    if(n==0)    //判断当前联系人数目是否为0
    {
        printf("当前没有任何联系人信息\n\n");
        system("pause");
        return;    //返回
    }
    for(;;)
    {
        system("cls");
        printf("1.查看办公类联系人\n");
        printf("2.查看个人类联系人\n");
        printf("3.查看商务类联系人\n");
        printf("0.返回\n");
        printf("\n请输入操作步骤的代码:");
        scanf("%d",&c);
        switch(c)
        {
            case 1:type='a';break;
            case 2:type='b';break;
            case 3:type='c';break;
            case 0:return;
            default:error();
        }
        flag=0;    //标志位赋予0
        p=head;
        while(p!=NULL)
        {
            if(p->type==type||p->type==type-32)
            {
                if(flag==0)
                {
                    system("cls");
                    if(type=='a')
                        printf("--办公类联系人--\n\n");
                    else if(type=='b')
                        printf("--个人类联系人--\n\n");
                    else
                        printf("--商务类联系人--\n\n");
                }
                flag=1;
                printf("姓名:%s\n",p->name);
                printf("电话:%s\n",p->phone);
                printf("邮箱:%s\n",p->email);
                printf("\n");
            }    
            p=p->next;    //找到下一节点        
        }
        if(flag==0)
                if(type=='a')
                    printf("\n当前没有办公类联系人信息\n\n");
                else if(type=='b')
                    printf("\n当前没有个人类联系人信息\n\n");
                else
                    printf("\n当前没有商务类联系人信息\n\n");
        system("pause");
    }
}
 
/*-----主函数-----*/
int main()
{  struct phone_info *head=NULL;
    int n;
    for(;;)
    {
        system("cls");
        printf("---通信录管理系统---\n\n");
        printf("1.查看联系人\n");
        printf("2.新增联系人\n");
        printf("3.拨号联系人\n");
        printf("4.修改联系人\n");
        printf("5.删除联系人\n");
        printf("0.退出\n");
        printf("\n请输入操作步骤的代码:");
        scanf("%d",&n);
        printf("\n");
        switch(n)
        {
        case 1: look(head);break;
        case 2: head=new_info(head);break;
        case 3: diag(head);break;
        case 4: revise(head);break;
        case 5: head=del(head);break;
        case 0: if(head!=NULL)
                        freelist(head);
                    break;
        default :error();break;
        }
        if(n==0)
            break;
    }
    printf("程序结束\n\n");
}

 类似资料: