[C] 结构体测试程序 -- 学生信息管理系统


1. 菜单功能

2. 添加学生信息功能

3. 学生姓名列表

4. 所有学生详细列表功能

5. 按姓名查找功能

6. 按年龄查找功能

7. 按姓别查找功能

8. 按身高查找功能

9. 删除学生信息功能

10. 退出功能


/*
 *1. 菜单功能
 *2. 添加学生信息功能
 *3. 学生姓名列表
 *4. 所有学生详细列表功能
 *5. 按姓名查找功能
 *6. 按年龄查找功能
 *7. 按姓别查找功能
 *8. 按身高查找功能
 *9. 删除学生信息功能
 *10. 退出功能
 *
 * */

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


/*定义一个学生信息结构体*/
struct student
{
    char name[20];
    int age;
    int sex;
    int height;
};

/*定义全局变量*/
int i;
struct student stu[100];


/*添加用户*/
struct student addstu(void)
{
    struct student stu;
    char name[20];
    
    printf("\n");
    printf("Add a student:\n");
    
    printf("------------------------------\n");

    printf("input name:\n");
    scanf("%s", name);
    strcpy(stu.name, name);
    
    printf("input age:\n");
    scanf("%d", &stu.age);

    printf("input sex(0:male;1:female)\n");
    scanf("%d", &stu.sex);

    printf("input height:\n");
    scanf("%d", &stu.height);

    printf("------------------------------\n\n");
    
    return stu;
}

/*显示用户信息*/
void showstu(struct student stu)
{
    printf("------------------------------\n");

    printf("Name: %s\n", stu.name);
    printf("Age: %d\n", stu.age);
    printf("Sex(0:male;1:female): %d\n:", stu.sex);
    printf("Height: %d\n", stu.height);
    
    printf("------------------------------\n\n");

}


/*删除用户
 *
 *说明:
 *依用户名来查找需要删除的用户,
 *找到相对应的用户信息后,
 *将它后面一位学生的信息赋值给它,
 *依次将后面的的学生信息都向前移一位,
 *这样就算是删掉了一位用户
 * */
void delstu()
{
    char name[20];
    int j,k,t;
    t=0;
   

    printf("please input a name:\n");
    scanf("%s", name);

    for(j=0;j<i;j++)
    {
        if(!strcmp(stu[j].name, name))
        {
            if(j==i) //如果删除的是最后一次,直接将i减一就行
            {
                i--;
                t++;
            }
            else
            {
                for(k=j;k<i-1;k++)
                {
                    stu[k] = stu[k+1]; /*如果删除的不是最后一次,依次将后面用户赋值给前一次用户*/  
                }
            t++;
            i--;
            }
        }
    }
    if(t==0)
    {
        printf("------------------------------\n");
        printf("There is not such student!\n\n");
        printf("------------------------------\n]n");
    }
    else
    {
        printf("------------------------------\n");
        printf("删除成功!\n");
        printf("------------------------------\n\n");
    }
}


/*依姓名查找学生信息*/
void selbyname()
{
    char name[20];
    int j,t;
    t=0;

    printf("please input a name:\n");
    scanf("%s", name);

    for(j=0;j<i;j++)
    {
        if(!strcmp(stu[j].name, name))/*strcmp()比较后,如果相同返回0,而我们需要的是1,所以取反*/
        {
            showstu(stu[j]);
            t++;
        }
    }

    if(t==0)
    {
        printf("------------------------------\n");
        printf("There is no such student!\n");
        printf("------------------------------\n\n");
    }
}

/*依年龄查找学生信息*/
void selbyage()
{
    int j,k,t,n;
    n=0;

    printf("input a top age:\n");
    scanf("%d", &j);

    printf("input a bottom age:\n");
    scanf("%d", &k);

    for(t=0;t<i;t++)
    {
        if(stu[t].age > k && stu[t].age < j)
        {
            showstu(stu[t]);
            n++;
        }
    }

    if(n==0)
    {
        printf("------------------------------\n");
        printf("There is no such student!\n\n");
        printf("------------------------------\n\n");
    }
}


/*依姓别查找学生信息*/
void selbysex()
{
    int j,k,n;
    n=0;
    printf("input sex:\n");
    scanf("%d", &j);

    for(k=0;k<i;k++)
    {
        if(stu[k].sex == j)
        {
            showstu(stu[k]);
            n++;
        }
    }

    if(n==0)
    {
        printf("------------------------------\n");
        printf("There is no such student!\n\n");
        printf("------------------------------\n\n");
    }
}


/*依身高查找学生信息*/
void selbyheight()
{
    int j,k,m,n;
    n=0;
    
    printf("input a top height:\n");
    scanf("%d", &j);

    printf("input a bottom height:\n");
    scanf("%d", &k);

    for(m=0;m<i;m++)
    {
        if(stu[m].height < j && stu[m].height > k)
        {
            showstu(stu[m]);
            n++;
        }
    }

    if(n==0)
    {
        printf("------------------------------\n");
        printf("There is no such a student!\n\n");
        printf("------------------------------\n\n");

    }
}

/*菜单功能,供用户选择*/
int menu()
{
    int m;

    printf("Please select a menu:\n");
    printf("    1. Add a student.\n");
    printf("    2. List all studnet name.\n");
    printf("    3. List all informations of students.\n");
    printf("    4. Select a student by name.\n");
    printf("    5. Select students by age.\n");
    printf("    6. Select students by sex.\n");
    printf("    7. Select sutdnets by height.\n");
    printf("    8. Delete a student.\n");
    printf("    9. Exit.\n");
    
    scanf("%d", &m);

    if(m==9)
    {
        printf("------------------------------\n");
        printf("Beybey!\n");
        printf("------------------------------\n\n");

        exit(1);
    }
    if(m<1 || m>9)
    {
        printf("------------------------------\n");
        printf("error, input again!\n");
        printf("------------------------------\n\n");
        return;
    }
    else
    {
        return m;
    }    
}


/*主程序*/
main()
{
    int j,k;
    i=0;
    
    while(1)
    {
        j = menu();

        if(j==1)
        {
           stu[i] = addstu();
           i++;
        }

        if(j==2)
        {
            printf("\n");
            for(k=0;k<i;k++)
            {
                printf("%d. %s\n", k, stu[k].name);
            }
        }

        if(j==3)
        {
            printf("\n");
            
            for(k=0;k<i;k++)
            {
                showstu(stu[k]);
            }
        }

        if(j==4)
        {
            selbyname();
        }
        
        if(j==5)
        {
            selbyage();
        }

        if(j==6)
        {
            selbysex();
        }

        if(j==7)
        {
            selbyheight();
        }

        if(j==8)
        {
            delstu();
        }

    }
}





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值