m0_59900231 2021-12-25 14:30 采纳率: 50%
浏览 6
已结题

为什么在删除学生信息那里输入一个错误的信息不会显示输入的信息有误而是直接跳出程序



#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define LEN sizeof(struct student)
struct student
{
        long int student_number;        //定义学生的学号 
        char student_name[20];              //定义学生的姓名 
        int student_age;                //定义学生的年龄 
        char student_sex[20];               //定义学生的性别 
        long int student_phone_number;       //定义学生的手机号码 
        int student_grade;              //定义学生的成绩 
        struct student* next;
};
struct student*the_first();
struct student*p;
struct student*creat(struct student*s);                 //声明一个创建学生信息的函数     
void printf_student_message(struct student*h);     //声明一个浏览学生信息的函数  
void menu();                            //声明一个输出界面的函数 
void search_student_message(struct student*s);
void student_message_change(struct student*s);
void student_message_delete(struct student*s);
int n;                                    //定义一个全局变量n 
struct student* head; 
int main()                              //定义一个主函数 
{   
    int i; 
    struct student*p=NULL;
    while(1)
    {
        menu();
        scanf("%d",&i);           
    switch(i)
    {
        case 1:    
                printf("     1.查询学生信息              \n");
                search_student_message(head);
                system("pause");
                break;
        case 2:
                printf("      2.修改学生信息              \n");
                student_message_change(head);
                system("pause");   
                break;
        case 3:
                printf("      3.录入学生信息              \n");
                p=creat(p);
                system("pause");
                break;
        case 4:
                printf("      4.删除学生信息              \n");
                printf("请输入要删除的学生的姓名:\n");
                student_message_delete(head);
                system("pause");
                break;
        case 5:
                printf("      5.浏览学生信息              \n");
                printf_student_message(head);           //调用一个查找学生信息的函数 
                system("pause");
                break;
        case 6:printf("正在退出程序\n");break;
        default:
            {
            printf("输入错误请重新输入:\n");
            system("pause");
            }
}
        if(i==6)break;
        system("pause");
        system("cls");
}
}
void menu()    //输出界面的一个函数 
{
    printf("                               学生信息管理系统              ");
    printf("\n"); 
    printf("     1.查询学生信息                                  2.修改学生信息                     ");
    printf("\n");
    printf("     3.录入学生信息                                  4.删除学生信息");
    printf("\n");
    printf("     5.浏览学生信息                                  6.退出程序                ");
    printf("\n");
    printf("请输入选项\n");
}
struct student*creat(struct student*s)                         //定义一个创建学生信息的函数      
{
    int i;
    printf("继续请按1\n");
    printf("退出请按2\n");
    scanf("%d",&i);
    switch(i)
    {
    case 1:
    struct student*node;
    node=(struct student*)malloc(LEN);
    printf("请输入学生的学号\n");
    scanf("%ld",&node->student_number);
    printf("请输入学生的姓名\n");
    scanf("%s",node->student_name);
    printf("请输入学生的年龄\n");
    scanf("%d",&node->student_age);
    printf("请输入学生的性别\n");
    scanf("%s",node->student_sex);
    printf("请输入学生的手机号码\n");
    scanf("%ld",&node->student_phone_number);
    printf("请输入学生的成绩\n");
    scanf("%d",&node->student_grade);
    if(n==0)
    {
    head=node;
    node->next=NULL;
    n=n+1;
    return node;
    }
    else
    {
    s->next=node;
    node->next=NULL;
    n=n+1;
    return node;
    }
    break;
    case 2:break;
}
}
void printf_student_message(struct student*h)
{
    if(h!=NULL)
    {
    for(;h!=NULL;)
    {
        printf("学号:\t%ld\t姓名:\t%s\t年龄:\t%d\t性别:\t%s\t手机号码:\t%ld\t成绩:\t%d\n",h->student_number,h->student_name,h->student_age,h->student_sex,h->student_phone_number,h->student_grade);
        h=h->next;
    }
    }
    else
    printf("用户未录入信息\n");
}
void search_student_message(struct student*s)
{
    int i;
    char a[20];
    long int l=0;
    printf("请输入以下选项\n");
    printf("1.按学号查找学生\n");
    printf("2.按姓名查找学生\n");
    printf("3.退回主菜单\n");
    printf("请输入选项\n");
    while(1)
    {
    scanf("%d",&i);
    switch(i)
    {
    case 1:
    printf("请输入学生的学号\n");
    scanf("%ld",&l);
    for(;;s=s->next)
    {
        if(n==0)
        {
        printf("用户未录入信息\n");
        break;
        }
        if(s->student_number==l)
        {
        printf("要查找的学生的信息是:\n");
        printf("学号:\t%ld\t姓名:\t%s\t年龄:\t%d\t性别:\t%s\t手机号码:\t%ld\t成绩:\t%d\n",s->student_number,s->student_name,s->student_age,s->student_sex,s->student_phone_number,s->student_grade);    
        break;
        }
        if(s->next==NULL)
        {
            printf("输入信息有误\n");
            break;
        }
    }
    break;
    case 2:
    printf("请输入学生的姓名\n");
    scanf("%s",a);
    for(;;s=s->next)
    {
        if(n==0)
        {
            printf("用户未录入信息\n");
            break;
        }
        if(strcmp(a,s->student_name)==0)
        {
        printf("要查找的学生的信息为:\n");
        printf("学号:\t%ld\t姓名:\t%s\t年龄:\t%d\t性别:\t%s\t手机号码:\t%ld\t成绩:\t%d\n",s->student_number,s->student_name,s->student_age,s->student_sex,s->student_phone_number,s->student_grade);    
        break;
        }
        if(s->next==NULL)
        {
            printf("输入信息有误\n");
            break;
         } 
    }
    break;
    case 3:
    printf("正在退回主菜单");break;
    default :printf("输入的信息有误\n");
}
    if(i!=3)
    {
    printf("1.按学号查找学生\n");
    printf("2.按姓名查找学生\n");
    printf("3.退回主菜单\n");
    }
    if(i==3)break;
}
}
void student_message_delete(struct student*s)
{
    int i;
    char a[20];
    long int l;
    struct student*p; 
    printf("请输入以下选项\n");
    printf("1.按学生的学号来删除学生信息\n");
    printf("2.按学生的姓名来删除学生的信息\n");
    printf("3.退回主菜单\n");
    printf("请输入选项\n");
    while(1)
    {
    scanf("%d",&i);
    switch(i)
    {
    case 1:
    printf("请输入学生的学号\n");
    scanf("%ld",&l);
    for(;;s=s->next)
    {
        if(n==0)
        {
        printf("用户未录入信息\n");
        break;
        }
        if(head->student_number==l)
        {
            p=head;
            head=p->next;
            printf("学号:\t%ld\t姓名:\t%s\t年龄:\t%d\t性别:\t%s\t手机号码:\t%ld\t成绩:\t%d\n",p->student_number,p->student_name,p->student_age,p->student_sex,p->student_phone_number,p->student_grade);    
            free(p);
            n=n-1;
            printf("删除信息成功\n"); 
        }
        p=s->next;
        if(p->student_number==l)
        {
        s->next=p->next;
        printf("学号:\t%ld\t姓名:\t%s\t年龄:\t%d\t性别:\t%s\t手机号码:\t%ld\t成绩:\t%d\n",p->student_number,p->student_name,p->student_age,p->student_sex,p->student_phone_number,p->student_grade);    
        free(p);
        printf("删除信息成功:\n");
        break; 
       }
       if(s->next==NULL)
       {
           printf("输入信息有误\n");
        break; 
       }
}
    break;
    case 2:
    printf("请输入学生的姓名\n");
    scanf("%s",a);
    for(;;s=s->next)
    {
        if(n==0)
        {
        printf("用户未录入信息\n");
        break;
        }
        if(strcmp(head->student_name,a)==0)
        {
            p=head;
            head=p->next;
            printf("学号:\t%ld\t姓名:\t%s\t年龄:\t%d\t性别:\t%s\t手机号码:\t%ld\t成绩:\t%d\n",p->student_number,p->student_name,p->student_age,p->student_sex,p->student_phone_number,p->student_grade);    
            free(p);
            printf("删除信息成功\n"); 
            break;
        }
        p=s->next;
        if(strcmp(a,p->student_name)==0)
        {
        s->next=p->next;
        printf("学号:\t%ld\t姓名:\t%s\t年龄:\t%d\t性别:\t%s\t手机号码:\t%ld\t成绩:\t%d\n",p->student_number,p->student_name,p->student_age,p->student_sex,p->student_phone_number,p->student_grade);    
        free(p);
        printf("删除信息成功\n");
        break;
        }
        if(s->next==NULL)
        {
            printf("用户输入信息有误\n");
            break;
        }    
}
    break;
    case 3:
    printf("正在退回主菜单");
    break;
}
    if(i!=3)
    {
    printf("1.按学生的学号来删除学生信息\n");
    printf("2.按学生的姓名来删除学生的信息\n");
    printf("3.退回主菜单\n");
    }
    if(i==3)break;
}
}
void student_message_change(struct student*s)
{
    int i;
    char a[20];
    long int l;
    printf("请输入以下选项\n");
    printf("1.按学号查找学生\n");
    printf("2.按姓名查找学生\n");
    printf("3.退回主菜单\n");
    printf("请输入选项\n");
    while(1)
    {
    scanf("%d",&i);
    switch(i)
    {
    case 1:
    printf("请输入学生的学号\n");
    scanf("%ld",&l);
    for(;;s=s->next)
    {
        if(n==0)
        {
            printf("用户未录入信息\n");
            break;
        }
        if(s->student_number==l)
        {
        printf("学号:\t%ld\t姓名:\t%s\t年龄:\t%d\t性别:\t%s\t手机号码:\t%ld\t成绩:\t%d\n",s->student_number,s->student_name,s->student_age,s->student_sex,s->student_phone_number,s->student_grade);
        printf("请输入要更改的学生的信息\n");
        printf("请输入修改后学生的学号\n");
        scanf("%ld",&s->student_number);
        printf("请输入修改后学生的姓名\n");
        scanf("%s",s->student_name);
        printf("请输入修改后学生的年龄\n");
        scanf("%d",&s->student_age);
        printf("请输入修改后学生的性别\n");
        scanf("%s",s->student_sex);
        printf("请输入修改后学生的手机号码\n");
        scanf("%ld",&s->student_phone_number);
        printf("请输入修改后学生的成绩\n");
        scanf("%d",&s->student_grade);
        printf("修改成功\n");
        break;
        }
        if(s->next==NULL)
        {
            printf("输入信息有误\n");
            break;
         } 
    }
    break;
    case 2:
    printf("请输入学生的姓名\n");
    scanf("%s",a);
    for(;;s=s->next)
    {
        if(n==0)
        {
        printf("用户未录入信息\n");
        break;
        }
        if(strcmp(a,s->student_name)==0)
        {
        printf("学号:\t%ld\t姓名:\t%s\t年龄:\t%d\t性别:\t%s\t手机号码:\t%ld\t成绩:\t%d\n",s->student_number,s->student_name,s->student_age,s->student_sex,s->student_phone_number,s->student_grade);
        printf("请输入要更改的学生的信息\n");
        printf("请输入修改后学生的学号\n");
        scanf("%ld",&s->student_number);
        printf("请输入修改后学生的姓名\n");
        scanf("%s",s->student_name);
        printf("请输入修改后学生的年龄\n");
        scanf("%d",&s->student_age);
        printf("请输入修改后学生的性别\n");
        scanf("%s",s->student_sex);
        printf("请输入修改后学生的手机号码\n");
        scanf("%ld",&s->student_phone_number);
        printf("请输入修改后学生的成绩\n");
        scanf("%d",&s->student_grade);
        printf("修改成功\n");
        break;
        }
        if(s->next==NULL)
        {
            printf("输入信息有误");
            break; 
         } 
    }
    case 3:
    printf("正在退回主菜单");
    break;
}
    if(i!=3)
    {
    printf("1.按学号查找学生\n");
    printf("2.按姓名查找学生\n");
    printf("3.退回主菜单\n");
    }
    if(i==3)break;
}
}
  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 1月2日
    • 创建了问题 12月25日

    悬赏问题

    • ¥15 Opencv(C++)异常
    • ¥15 VScode上配置C语言环境
    • ¥15 汇编语言没有主程序吗?
    • ¥15 这个函数为什么会爆内存
    • ¥15 无法装系统,grub成了顽固拦路虎
    • ¥15 springboot aop 应用启动异常
    • ¥15 matlab有关债券凸性久期的代码
    • ¥15 lvgl v8.2定时器提前到来
    • ¥15 qtcp 发送数据时偶尔会遇到发送数据失败?用的MSVC编译器(标签-qt|关键词-tcp)
    • ¥15 cam_lidar_calibration报错