学生管理系统(C语言)简单版

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define XMXH 10//姓名的范围
#define N 1000//定义为1000名的学生
void BXXHXM();//按照学号进行排序
void menu();//菜单
void del();//删除某人信息;
void insert();//插入函数
void seek();//查找函数
void help();
void shuru();
//使用说明
//先定义一个结构体来存储学生的信息
struct student
{
    char StudentXh[XMXH + 1];
    char StudentName[XMXH + 1];
};//定义一个结构体来存储
typedef struct student student;
student stu[N];
int k = 1, n = 0, m = 0;
//主函数
int main()
{
    while (k)
    {
        menu();
    }
    system("pause");
    return 0;
}
//查找学生的信息   查
void seek()
{
    int i, n, m;
    char c[20];
    printf("\t--------------------------------\n");
    printf("\t\t\t1 按照学号进行查找\n");
    printf("\t\t\t2 按照姓名进行查找\n");
    printf("\t\t\t3 退出查找模式\n");
    printf("\t--------------------------------\n");
    while (1)//用1进入循环
    {
        printf("请选择您要选择的功能:");
        char n;
        scanf("%s", &n);
        m = 0;
        while (n < 0 || n >4)
        {
            while (getchar() != '\n');
            printf("请输入1--3之间的数字:\n");
            scanf("%d", &n);
        }
        switch (n)
        {
        case 1:
            printf("请输入要查询学生的学号:\n");
            scanf("%s", &c);
            for (i = 0; i < n; i++)
                if (strcmp(c, stu[i].StudentXh) == 0)
                {
                    m = 1;
                    printf("学生学号\t\t学生姓名\t\t\n");
                    printf("-----------------------------------------------------\n");
                    printf("%s\t\t%s\t\t\n", stu[i].StudentXh, stu[i].StudentName);

                }
            if (0 == m)
                printf("该学号不存在,如果您要退出请按3退出键\n");
            break;
        case 2:
            printf("请输入要查找的学生姓名:\n");
            scanf("%s", c);
            for (i = 0; i < n; i++)
                if (strcmp(stu[i].StudentName, c) == 0)
                {
                    m = 1;
                    printf("\t---------------------------\n");
                    printf("学生学号\t\t学生姓名\t\t\\n");
                    printf("-----------------------------\n");
                    printf("%s\t\t%s\t\t", stu[i].StudentXh, stu[i].StudentName);

                }
            //这个地方不用在加break了 之前加入后会导致一直在循环中出不来,执行完后退出
            if (0 == m)
                printf("该姓名不存在!\n");
        case 3:return;
        defaault: printf("请在1--3之间选择\n");
        }
    }
}
//按照学号对学生进行删除   删
void del()
{
    int i, j, h = 0;
    char c[XMXH + 1];
    printf("请输入要删除的学号");
    scanf("%s", c);
    for (i = 0; i < n; i++)
    {
        if (strcmp(stu[i].StudentXh, c) == 0)
        {
            h = 1;
            for (j = i; j < n - 1; j++)//前面的删除后将后面的加一
            {
                stu[j] = stu[j + 1];

            }
        }
    }
    if (0 == h)//用h来判断情况
    {
        printf("学号不存在请重新输入\n");

    }
    if (1 == h)
    {
        printf("删除成功!");
        n--;
    }
    system("pause");

}//

//添加学生的  增
void insert()
{
    int i = n, j, h;
    int  m;
    printf("请输入要插入的学生的数量:\n");
    scanf("%d", &m);
    while (m < 0 || m >20)
    {
        while (getchar() != '\n');
        printf("输入错误或添加学生过多请重新输入:");
        scanf("%d", &m);
    }
    if (m > 0)
    {
        do
    {
            h = 1;
            while (h)//进入循环
            {
                h = 0;//再将h=0用来直接退出
                printf("请输入第%d位学生的学号:\n", i + 1);    
                scanf("%s", stu[i].StudentXh);
        while(1)
        {
        if(strspn(stu[i].StudentXh,"abcdefjhijklmnopqrstuvwsyz!@#$%^&{}+_=-*()<>:")==strlen(stu[i].StudentXh))
        {
            printf("输入违规字符,重新输入\n");
            scanf("%s", stu[i].StudentXh);
            
        }
        else
            {break;    }
    
        }        
        for (j = 0; j < i; j++)
                {
                    if (strcmp(stu[i].StudentXh, stu[j].StudentName) == 0)
                    {
                        printf("该学号已经存在了,请重新输入\n");
                        h = 1;
                        break;
                    }
                }
            printf("请输入第%d个学生的姓名:\n", i + 1);
            scanf("%s", stu[i].StudentName);
        if(0==h)
        {
            i++;
        }
            }    
   }
         while (i < n + m);
    
    n += m;
    printf("学生信息增加完毕!!!\n");
    system("pause");//暂停窗口
}
}

//查询一共多少人
void QBxinxi()//全部信息    输出当前存储的全部信息
{
    int i;
    printf("共有%d位学生的信息:\n", n);
    if (0 != n)
    {
        printf("---------学生学号--------学生姓名------\n");
        printf("---------------------------------------\n");
        for (i = 0; i < n; i++)
        {
            printf("\t %s  \t\t%s\n", stu[i].StudentXh, stu[i].StudentName);

        }

    }
    system("pause");
}
//BXXHXM
void BXXHXM()//排序姓名与 学号进行选择
{
    student tmp;
    char t[XMXH];
    int i, j, k;
    char m;
    printf("\t---------------------------------------------------------\n");
    printf("\t\t\t1 按照学号进行排序\n");
    printf("\t\t\t2 按照姓名进行排序\n");
    printf("\t\t\t3 退出排序模式\n");
    printf("\t----------------------------------------------------------\n");

    while (m < 0 || m >4)
    {
        while (getchar() != '\n');
        printf("输入错误,请在1-3进行选择");
        scanf("%d", &m);

    }
    while (1)
    {
        printf("请在1--3进行选择");
        int m;
        scanf("%d", &m);

        switch (m)
        {
            for (i = 0; i < n - 1; i++)
            {
                for (j = n - 1; j > i; j--)

                    if (strcmp(stu[j - 1].StudentXh, stu[j].StudentXh) > 0)
                    {
                        strcpy(t, stu[j - 1].StudentXh);
                        strcpy(stu[j - 1].StudentXh, stu[j].StudentXh);
                        strcpy(stu[j].StudentXh, stu[j].StudentName);
                        strcpy(t, stu[j - 1].StudentName);
                        strcpy(stu[j - 1].StudentName, stu[j].StudentName);
                        strcpy(stu[j].StudentName, t);

                    }

            }
        case 1:
            printf("\t------------------------------------------------------------------------------------\n");
            printf("\t\t        学生学号--\t\t        学生姓名--\n");
            for (i = 0; i < n ; i++)

                printf("\t\t\t % s\t\t\t % s\n", stu[i].StudentXh, stu[i].StudentName);
            m = 0;
            break;
        case 2:
            printf("\t-----------------------------------------------------------------------------------\n");
            printf("\t\t        学生姓名--\t\t        学生学号--\n");
            for (i = 0; i < n - 1; i++) {
                for (j = 0; j < n - 1 - i; j++) {
                    if (strcmp(stu[j].StudentName, stu[j + 1].StudentName) > 0) {
                        tmp = stu[j];
                        stu[j] = stu[j + 1];
                        stu[j + 1] = tmp;
                    }
                }
            }
            for (i = 0; i < n; i++)

                printf("\t\t\t%s \t\t\t %s\n", stu[i].StudentName, stu[i].StudentXh);
            m = 0;
        case 3:return;

        }
        break; 
    }
}
//说明
void help()//使用说明
{
    printf("\t---------------------------------------------\n");
    printf("       1.欢迎使用功能说明 \n");
    printf("       2.在使用之前请先使用功能1添加学生的信息  \n");
    printf("       3.然后在进行任意操作\n");
    printf("       4.祝您使用愉快\n");
    printf("\t----------------------------------------------\n");
}
//菜单
void menu()   // 界面
{
int  num;
    printf(" \n\n                    ");
    printf("                                    学生管理系统                \n");
    printf("\t*************************************************************************************************\n");
    printf("  请输入您要选择的内容:\n");
    printf("                                       1:增加学生信息     \n ");
    printf("                                      2:删除学生信息     \n ");
    printf("                                      3:查找学生信息     \n ");
    printf("                                      4:学生信息排序     \n ");
    printf("                                      5:输出所有信息     \n ");
    printf("                                      6:使用说明         \n ");
    printf("                                      7: 退出             \n");
    printf("\n");
    printf("\t**********************************************************************************************\n");
    printf("请选择菜单编号");
    scanf("%s",&num);
    while (num<0||num>9)
    {
        while (getchar() != '\n');
        printf("请输入1--7之间的数字:\n");
        scanf("%d", &num);
    }
    switch (num)
    {
    case 1:insert(); break;
    case 2:del(); break;
    case 3:seek(); break;
    case 4:BXXHXM(); break;
    case 5:QBxinxi(); break;
    case 6:help(); break;
    case 7:
        k = 0;
        printf("即将退出程序!\n");
        break;
    default:
        printf("请在0--8之间选择");
    }
}

优点

1 实现了对数据的处理,学号为英文时会报错。

实现的功能

1: 增加学生信息 

2:删除学生信息  

3:查找学生信息    

4:学生信息排序    

5:输出所有信息    

6:使用说明       

7: 退出           
 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值