基于C语言的学生管理系统

废话不多说,直接上代码:

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

#define Student_MAX 1000//学生信息最大存储人数
enum Features
{
    quit,    //退出 
    tianjia, //添加 
    find,    //查找
    Revise,    //修改 
    delete_d, //删除
    empty,    //清空
    save,    //保存
}; 
typedef struct Stu
{
    char name[10];
    char bj[10];//班级 
    char sex[3];//性别 
    int age;   //年龄 
    char id[10] ;//学号 
    char call[20]; //电话 
    char jiguan[30];
}Stu;
typedef struct TongXunLu
{
    Stu stu[Student_MAX];
    int count;
}TXL,* ptxl;

void initiate(ptxl ptxl);//启动
void add1(ptxl ptxl);//添加学生信息人数,最多添加1000个
void find1(ptxl ptxl);//在通讯录中查找需要查找的人,按姓名查找
void show1(ptxl ptxl);//显示当前系统中所有人
void Revise1(ptxl ptxl);//修改系统中某一人的信息
void del(ptxl ptxl);//删除系统中某一人的信息
void empty1(ptxl ptxl);//清空系统中所有人信息
void menu();//导航栏 
static int hanshu(ptxl ptxl, const char * name)
{
    int i = 0;

    for (i = 0; i < ptxl ->count; i++)
    {
        if (strcmp(name , ptxl->stu[i].name) == 0)
        {
            return i;
        }
    }

    return -1;
}
void initiate(ptxl ptxl)
{
    ptxl->count = 0;
}
void add1(ptxl ptxl)
{
    if (ptxl ->count == Student_MAX)
    {
        printf( "电话本已满,无法添加!" );
        return;
    }

    printf( "姓名:");
    scanf( "%s", ptxl ->stu[ptxl->count].name);
    printf( "班级:");
    scanf( "%s", ptxl ->stu[ptxl->count].bj);
    printf( "性别:");
    scanf( "%s", ptxl ->stu[ptxl->count].sex);

    printf( "年龄:");
    scanf( "%d", &ptxl ->stu[ptxl->count].age);
    
    printf( "学号:");
    scanf( "%s", ptxl ->stu[ptxl->count].id);

    printf( "电话:");
    scanf( "%s", ptxl ->stu[ptxl->count].call);

    printf( "籍贯:");
    scanf( "%s", ptxl ->stu[ptxl->count].add);

    ptxl->count++;
    printf( "添加成功!\n" );
}
void delete_d1(ptxl ptxl)
{
    int ret = 0;
    int j = 0;
    char name[10];

    printf( "请输入要删除的名字:" );

    scanf( "%s", name);
    ret = hanshu( ptxl, name);
    if (ret == -1)
    {
        printf( "删除的人不存在!\n" );
        return;
    }
    else
    {
        for (j = 0; j < ptxl ->count - 1; j++)
        {
            ptxl->stu[j] = ptxl ->stu[j + 1];
        }
    }

    ptxl->count--;
    printf( "删除成功!\n" );
}
void find1(ptxl ptxl)
{

    int ret = 0;
    char name[10];

    printf( "请输入要查找人的姓名:" );

    scanf( "%s", name);

    ret = hanshu( ptxl, name);
    if (ret == -1)
    {
        printf( "抱歉,找不到该学生!\n" );
        return;
    }
    else
    {
        printf( "姓名\t班级\t性别\t年龄\t学号\t电话\t\t籍贯\n" );
        printf( "%s\t%s\t%s\t%d\t%s\t%s\t%s\n" , ptxl->stu[ret].name, ptxl->stu[ret].bj, ptxl ->stu[ret].sex, ptxl->stu[ret].age, ptxl->stu[ret].id,ptxl->stu[ret].call,ptxl->stu[ret].jiguan);
    }
}
void Revise1(ptxl ptxl){
    int ret = 0;
    char name[10];

    printf( "请输入要修改学生的姓名:" );

    scanf( "%s", name);
    ret = hanshu( ptxl, name);
    if (ret == -1)
    {
        printf( "不存在要修改的学生!\n" );
        return;
    }
    else
    {
    printf( "姓名:");
    scanf( "%s", ptxl ->stu[ptxl->count].name);

    printf( "性别:");
    scanf( "%s", ptxl ->stu[ptxl->count].sex);

    printf( "年龄:");
    scanf( "%d", &ptxl ->stu[ptxl->count].age);
    
    printf( "学号:");
    scanf( "%s", ptxl ->stu[ptxl->count].id);

    printf( "电话:");
    scanf( "%s", ptxl ->stu[ptxl->count].call);

    printf( "籍贯:");
    scanf( "%s", ptxl ->stu[ptxl->count].jiguan);

    }
}

void del(ptxl ptxl)
{
    int ret = 0;
    int j = 0;
    char name[10];

    printf( "请输入要删除的学生名字:" );

    scanf( "%s", name);
    ret = hanshu( ptxl, name);
    if (ret == -1)
    {
        printf( "删除的人不存在!\n" );
        return;
    }
    else
    {
        for (j = 0; j < ptxl ->count - 1; j++)
        {
            ptxl->stu[j] = ptxl ->stu[j + 1];
        }
    }

    ptxl->count--;
    printf( "删除成功!\n" );
}
void empty1(ptxl ptxl)
{
    ptxl->count = 0;
    printf( "系统信息清空!\n" );
}
void save1(ptxl ptxl)
{
    FILE *fp = NULL;
    int i = 0;

    fp = fopen("list","w");
    if(!fp)
    {
        perror("can not open file");
        exit(1);
    }

    while(i < ptxl ->count)
    {
        fwrite(&ptxl->stu[i],sizeof(Stu),1,fp);
        i++;
    }

    fclose(fp);
    printf("学生信息保存成功\n");
    return ;
}
void menu()
{
    printf( "************************************************\n" );
    printf( "****            班级通讯录管理系统          ****\n" );
    printf( "************************************************\n" );
    printf( "         【1】添加学生信息\n" );
    printf( "         【2】查找学生信息\n" );
    printf( "         【3】修改学生信息\n" );
    printf( "         【4】删除学生信息\n" );
    printf( "         【5】清空学生信息\n" );
    printf( "         【6】保存学生信息\n" );
    printf( "------------------------------------------------\n" );
}
int main()
{
    TXL txl;
    int input = 1;

    initiate(&txl);

    while (input)
    {
        menu();
        printf( "请选择:" );
        scanf( "%d", &input);
        switch (input)
        {
        case tianjia:
            add1(&txl);
            break;
        case find:
            find1(&txl);
            break;
        case Revise:
            Revise1(&txl);
            break;
        case delete_d:
            del(&txl);
            break;
        case empty:
            empty1(&txl);
            break;
        case save:
            save1(&txl);
            break;
        }
    }
    return 0;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值