鱼C论坛

 找回密码
 立即注册
查看: 1568|回复: 2

为什么最后退出不了

[复制链接]
发表于 2022-6-15 15:09:03 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include <stdio.h>
#include <stdlib.h>
#include <string.h>


struct Date
{
        int year;
        int month;
        int day;
};

typedef struct Infor
{
        char name[20];
        char gender[10];
        int age;
        char address[30];
        char buytype[50];
        char color[20];
        long price;
        struct Date date;
        struct Infor *next;
}INFOR,*Pointer;

Pointer infor = NULL;

int login(void);
void Menushow(void);
void Add(Pointer *infor);
void Modify(Pointer *infor);
void Show(Pointer *infor);
void Search_name(Pointer *infor);
void Printuser(Pointer infor);
void Del(Pointer infor);



void Menushow(void)
{
        int i;
                do
        {
        printf("\n");
        printf("  |----1.增加购买电瓶车用户信息-----|\n");
        printf("  |----2.修改购买电瓶车用户信息-----|\n");
        printf("  |----3.显示购买电瓶车用户信息-----|\n");
        printf("  |----4.查询用户信息---------------|\n");
        printf("  |----5.删除用户信息---------------|\n");
        printf("  |----6.退出系统------------------|\n");
        printf("\n");
        printf("请输入你选择的编号:");

        scanf("%d",&i);

                switch(i)
                {
                        case 1:system("cls");
                            Add(&infor);break;
                        case 2:system("cls");
                            Modify(&infor);break;
                        case 3:system("cls");
                            Show(&infor);break;
                        case 4:system("cls");
                            Search_name(&infor);break;
                        case 5:system("cls");
                            Del(infor);break;
                      case 6:Quit();break;

                }

        }while(i >=1 && i <=10);
}
void Add(Pointer *infor)
{
        Pointer p;
        static Pointer tail;
        char ch;
        do{

                p = (Pointer)malloc(sizeof(INFOR));

                if(p == NULL)
                {
                        printf("内存分配失败\n");
                        exit(1);
                }
                printf("请输入姓名:");
                scanf("%s",p->name );
                printf("请输入性别(男/女):");
                scanf("%s",p->gender );
                printf("请输入年龄:");
                scanf("%d",&p->age);
                printf("请输入地址:");
                scanf("%s",p->address );
                printf("请输入购品牌和型号:");
                scanf("%s",p->buytype );
                printf("请输入购买的颜色:");
                scanf("%s",p->color );
                printf("请输入价格:");
                scanf("%ld",&p->price );
                printf("请输入购买时间:(yyyy-mm-dd):");
                scanf("%d-%d-%d",&p->date.year,&p->date.month ,&p->date.day);

                getchar();

                printf("请问是否需要继续插入用户信息(Y/N):");
                ch = getchar();
                if((*infor )!= NULL)
                {
                        tail->next = p;
                        p->next = NULL;
                }
                else
                {
                        (*infor )= p;
                        p->next = NULL;
                }
                tail = p;
        }while(ch == 'Y'||ch=='y');


}
void Modify(Pointer *infor)
{
        Pointer p = *infor;
        int flag = 0;
        char sename[20];
        getchar();
        printf("请输入你要修改的用户名字:");
        gets(sename);
        if(p == NULL)
        {
                printf("并未存在任何数据,不能进行修改!!");
                return ;
        }
        while(p != NULL)
        {
                if(!strcmp(p->name,sename))
                {
                        flag = 0;
                        break;
                }
                else
                {
                        flag = 1;
                        p = p->next;
                }

        }
        if(flag)
        {
                printf("并未查询到该用户的信息T_T\n");
        }
        else
        {
                printf("请输入修改后的信息:\n");
                printf("请输入姓名:");
                scanf("%s",p->name );
                printf("请输入性别(男/女):");
                   scanf("%s",p->gender );
                printf("请输入年龄:");
                scanf("%d",&p->age);
                printf("请输入地址:");
                scanf("%s",p->address );
                printf("请输入购品牌和型号:");
                scanf("%s",p->buytype );
                printf("请输入购买的颜色:");
                scanf("%s",p->color );
                printf("请输入价格:");
                scanf("%ld",&p->price );
                printf("请输入购买时间:(yyyy-mm-dd):");
                scanf("%d-%d-%d",&p->date.year,&p->date.month,&p->date.day);
        }
}
void Show(Pointer *infor)
{
        Pointer p = *infor;
        if(p == NULL)
        {
                printf("\n暂时还未存入数据!!\n");
                printf("显示失败!!\n\n");
        }
        else
        {
                while(p != NULL)
                {
                        printf("\n姓名:%s\n",p->name);
                        printf("性别:%s\n",p->gender );
                        printf("年龄:%d\n",p->age );
                        printf("地址:%s\n",p->address );
                        printf("购买品牌型号:%s\n",p->buytype );
                        printf("颜色:%s\n",p->color );
                        printf("价格:%ld\n",p->price );
                        printf("购买时间:%d-%d-%d\n\n",p->date.year ,p->date.month ,p->date.day);
                        p = p->next ;
                }
}
}
void Search_name(Pointer *infor)
{
        Pointer p = *infor;
        char sename[20];
        getchar();
        printf("请输入你要查询的用户信息:");
        gets(sename);

        while(p != NULL)
        {
                if(!strcmp(sename,p->name))
                {
                        Printuser(p);
                                                break;
                }
                else{
                        p = p->next;
                }
        }
}


void Printuser(Pointer infor)
{
                Pointer p = infor;
                printf("姓名:%s\n",p->name );
                printf("性别:%s\n",p->gender );
                printf("年龄:%d\n",p->age );
                printf("地址:%s\n",p->address );
                printf("购买品牌型号:%s\n",p->buytype );
                printf("颜色:%s\n",p->color );
                printf("价格:%.2f\n",(float)p->price );
                printf("购买时间:%d-%d-%d\n",p->date.year ,p->date.month ,p->date.day);
}

void Del(Pointer infor)
{
        Pointer previous,current;
        getchar();
        current = infor;
        previous = NULL;

        char delname[20];
        printf("请输入你要删除的用户姓名:");
        gets(delname);

        while(strcmp(delname,current->name) && current != NULL)
        {
                previous = current;
                current = current->next ;
        }
        if(current == NULL)
        {
                printf("并未找到该用户的信息");
                return ;
        }
        else
        {
                if(previous == NULL)
                {
                        infor = current->next ;
                }
                else
                {
                        previous->next = current->next ;
                }
                printf("删除成功");
                free(current);
        }
}




int main(void)
{

                                Menushow();


        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-6-15 17:47:49 | 显示全部楼层
请问有Quit()这个函数?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-6-18 12:35:41 | 显示全部楼层
a327904410 发表于 2022-6-15 17:47
请问有Quit()这个函数?

没有
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-30 03:50

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表