学生信息管理系统

在这里插入/*===============================================
*   文件名称:学生信息管理系统
*   创 建 者:     
*   创建日期:2022年12月29日
*   描    述:
================================================*/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

#define SIZE 100

typedef struct STU
{
    char xuehao[20];
    char name[20];
    float score;
}stu_t;

typedef stu_t data_t;

typedef struct list
{
    data_t data[SIZE];
    int last;
}seqlist;

//初始化
seqlist *seqlistCreate()
{
    seqlist *seq = (seqlist *)malloc(sizeof(data_t)*SIZE);
    if(seq == NULL)
        perror("malloc");

    bzero(seq->data,sizeof(data_t)*SIZE);
    seq->last = -1;

    return seq;
}

//判空
int seqlist_is_empty(seqlist *seq)
{
    return (seq->last == -1)?1:0;
}

//判满
int seqlist_is_full(seqlist *seq)
{
    return (seq->last == SIZE-1)?1:0;
}

//求表长
int seqlistLength(seqlist *seq)
{
    return seq->last+1;
}

//插入
int seqlistInsert(seqlist *seq)
{
    if(seqlist_is_full(seq))
    {
        puts("表已满");
        return -1;
    }

    char x_h[20] = {0};
    char m_z[20] = {0};
    float f_s = 0;

    scanf("%s",x_h);
    getchar();
    scanf("%s",m_z);
    scanf("%f",&f_s);

    seq->last++;

    strcpy(seq->data[seq->last].xuehao,x_h);
    strcpy(seq->data[seq->last].name,m_z);
    seq->data[seq->last].score = f_s;


}

//打印
void seqlistDisplay(seqlist *seq)
{
    if(seqlist_is_empty(seq))
    {
        puts("信息列表为空");
        return;
    }

    for(int i = 0;i <= seq->last;i++)
    {
        printf("%s %s %f\n",seq->data[i].xuehao,seq->data[i].name,seq->data[i].score);
    }

}

//根据名字修改分数
int seqlistChangeByName(seqlist *seq)
{
    char m_z[20] = {0};
    float f_s = 0;

    scanf("%s%f",m_z,&f_s);

    for(int i = 0;i <= seq->last;i++)
    {
        if(strcmp(seq->data[i].name,m_z) == 0)
        {
            seq->data[i].score = f_s;
            return 0;
        }
    }

    puts("没有此人");
    return -1;
}

//按名字删除信息
void seqlistDeleteByName(seqlist *seq)
{
    char m_z[20] = {0};
    scanf("%s",m_z);


    if(seqlist_is_empty(seq))
        return;
    for(int i = 0;i <= seq->last;i++)
    {
        if(strcmp(seq->data[i].name,m_z) == 0)
        {
            for(int j = i;j <= seq->last;j++)
            {
                seq->data[j] = seq->data[j+1];
            }
        }
    }

    seq->last--;
}

//按名字查看信息
int seqlistShowByName(seqlist *seq)
{
    char m_z[20] = {0};

    scanf("%s",m_z);

    for(int i = 0;i <= seq->last;i++)
    {
        if(strcmp(seq->data[i].name,m_z) == 0)
        {
            printf("%s %s %f\n",seq->data[i].xuehao,seq->data[i].name,seq->data[i].score);
            return 0;
        }
    }
    
    puts("没有此人");
    return -1;
}

//清空列表
void seqlistClear(seqlist *seq)
{
    seq->last = -1;
}

//销毁列表
void seqlistDestroy(seqlist **seq)
{
    free(*seq);
    *seq = NULL;
}

//管理界面
void home_page()
{
    printf("/###########################################################/\n");
    puts("欢迎使用学生管路系统");
    puts("请根据提示完成相关操作");
    puts("1.添加学生信息	2.根据名字修改信息	3.根据名字删除信息	4根据名字显示信息
    puts("5.清空列表	 6.销毁列表			7.打印全部学生信息  0.退出系统");
    printf("请输入指令:");

}
int main(int argc, char *argv[])
{ 
    seqlist *seq = seqlistCreate();
    if(seq == NULL)
        perror("seqlistCreat");
    int m = 0;

    while(1)
    {
        home_page();
        scanf("%d",&a);

        switch(a)
        {
            case 1:seqlistInsert(seq);break;

            case 2:seqlistChangeByName(seq);break;
                
        	case 3:seqlistDeleteByName(seq);break;

            case 4:seqlistShowByName(seq);break;

            case 5:seqlistClear(seq);break;

            case 6:seqlistDestroy(&seq);break;
                
            case 7:seqlistDisplay(seq);break;
            
            case 0:return 0;
                   
            default:break;
        }
    }
    


    return 0;
} 代码片
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值