简易学员管理系统(数组)

本文介绍了一种简易的学员管理系统,通过数组结构来存储和管理学员信息,包括增删查改等基本操作,适合初学者了解基本的数据组织和管理。
#include<stdio.h>
#include<string.h>

int menu();
int inputstu(int line);
void Print_stu();
int GetStuline(char No[]);
int Search_stu();
int modifystu();
int deletestu();
int Choose();

char students[50][200];
int stu_num=0;
int choose;
int result=1;

void main()
{
    while(result)
    {
        Choose();
    }
}
//选择
int Choose()
{
    choose= menu();
    //  if(result==0)break;;
        switch(choose)
        {
        case 1:
            //printf("\n\t执行输入操作。");
            result=inputstu(stu_num);
            stu_num+=1;
            break;
        case 2:
            //printf("\n\t执行查找操作。");
            Search_stu();
            break;
        case 3:
            //printf("\n\t执行修改操作。\n");
            modifystu();
            break;
        case 4:
            //printf("\n\t执行删除操作。");
            deletestu();
            break;
        case 5:
            //printf("\n\t执行输出操作。");
            Print_stu();
            break;
        case 0:
            printf("\n\t谢谢使用!");
            result=0;
            break;
}
}
//菜单
int menu()
{
    int option;     
    printf("\n\t------------------------------\n");
    printf("\n\t\t学员信息管理系统\n");
    printf("\n\t------------------------------\n");
    printf("\n\t1输入信息");printf("\t4删除信息\n");
    printf("\n\t2查找信息");printf("\t5输出信息\n");
    printf("\n\t3修改信息");printf("\t0退出信息\n");

    printf("\n\t选择命令:");
    scanf("%d",&option);
    return option;  
}
//输入
int inputstu(int line)
{
    int number;
    int flag=0;
    char stu_temp[1][200];
    char temp[20];
    char name[20];

    while(flag==0)
    {
    printf("\n\t输入学号:");
    scanf("%d",&number);
    if(number<1000||number>9999)
    {
        printf("\n\t输入四位学号!");
        continue;
    }
    else
    {
        sprintf(temp,"%d",number);
        strcpy(stu_temp[0],temp);
        strcat(stu_temp[0],"-");
        flag=1;
    }
    }
    while(flag==1)
    {
        printf("\t输入姓名:");
        scanf("%s",name);
        if(strlen(name)>20)
        {
            printf("n\t输入过长。");
            continue;
        }
        else
        {
            sprintf(temp,"%s",name);
            strcat(stu_temp[0],temp);
            strcat(stu_temp[0],"-");
            flag=2;
        }
    }
        while(flag==2)
    {
        printf("\t输入性别(1男2女):");
        scanf("%d",&number);
        if(number!=1&&number!=2)
        {
            printf("\n\t输入有误。");
            continue;
        }
        else
        {
            if(number==1)strcat(stu_temp[0],"男");
            if(number==2)strcat(stu_temp[0],"女");
            strcat(stu_temp[0],"-");
            flag=3;
        }
    }
        while(flag==3)
    {
        printf("\t输入成绩:");
        scanf("%d",&number);
        if(number<0||number>100)
        {
            printf("\n\t成绩必须在1-100之间。");
            continue;
        }
        else
        {
            sprintf(temp,"%d",number);
            strcat(stu_temp[0],temp);
            strcat(stu_temp[0],"-");
            flag=4;
        }
    }
        //确认信息      
        printf("\n\t输入的信息如下:");
        printf("%s",stu_temp);
        printf("\n\t是否确认信息(y|n)?");
        scanf("%s",temp);
        if(strcmp(temp,"y")==0)
        {
            strcpy(students[line],stu_temp[0]);
        }
        else
        {
            inputstu(line);
        }
        flag=1;
}
//输出
void Print_stu()
{
    int i,j;
    printf("\t********现存学员信息********\n\t");
    printf("学号\t");
    printf("姓名\t");
    printf("性别\t");
    printf("得分\n\t");
    for(i=0;i<stu_num;i++)
    {
        for(j=0;j<200;j++)
        {           
            if(students[i][j]!='-')
            {   if(students[i][j]==0)break;
                printf("%c",students[i][j]);
            }
            else
            {   
                printf("\t");
            }
        }
        printf("\n\t");
    }   
}
//查找行位置
int GetStuline(char No[])
{
    char temp[5]="";
    int i,j,pos=-1;
    for(i=0;i<stu_num;i++)
    {
        for(j=0;j<4;j++)
        {
         temp[j]=students[i][j];
        }
        if(strcmp(temp,No)==0)
        {
            pos=i;break;
        }
    }
    return pos;
}
//查找
int Search_stu()
{
    char no[5];
    int line,j;
    printf("\n\t输入要查找的学号:");
    scanf("%s",no);
    line=GetStuline(no);
    if(line==-1)
    {
        printf("\n\t无该学员!");
    }
    else
    {   
        printf("\t*******该学员信息如下*******\n\t");
        printf("学号\t");
        printf("姓名\t");
        printf("性别\t");
        printf("得分\n\t");
        //printf("\t%s",students[line]);
        for(j=0;j<200;j++)
        {           
            if(students[line][j]!='-')
            {   if(students[line][j]==0)break;
                printf("%c",students[line][j]);
            }
            else
            {   
                printf("\t");
            }
        }
        printf("\n");
}
}
//修改
int modifystu()
{
    char No[5]="";
    int row;
    printf("\n\t输入要修改的学号:");
    scanf("%s",No);
    row=GetStuline(No);
    if(row==-1)
    {
        printf("\n\t*****无该学员!*****");
        //continue;
    }
    else
    {
        inputstu(row);
    }

}
//删除
int deletestu()
{
    char No[5];
    int row,i,j;
    printf("\n\t输入要删除的学号:");
    scanf("%s",No);
    row=GetStuline(No);
    if(row==-1)
    {
        printf("\n\t*****无该学员!*****");
    }
    else
    {
        for(i=row;i<stu_num;i++)
        {
            strcpy(students[i],students[i+1]);
        }
    }
    printf("\n\t删除成功!");
}

演示:
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值