学生管理系统(C结构体)

学生管理系统:使用结构体写成,操作之前需要先录入学生信息

菜单内容:

1、查询学生信息(按 学号 / 姓名 查找)

2、添加学生信息(选择添加多少名学生,再逐次输入学生信息)

3、删除学生信息(按 学号 / 姓名 删除)

4、修改学生信息(按 学号 修改)

5、显示所有学生信息(显示结果按学号顺序由小到大排序)

6、退出程序

说明:

​ 只显示学生学号、姓名、性别、专业信息,未添加学生成绩信息,当然嵌套结构体也可以,大致原理差不多,以后无聊时候写补上。

​ 当然程序也存在其他问题,比如插入学生没有重复检查啥的,如果这篇博客有幸被你查看的话,请指出一起进步,谢谢。

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define N 100

int menu();        //菜单界面
void func_flag(int flag);   //功能选择
void findStu();     //查询学生信息
void addStu();      //添加学生信息
void delStu();      //删除学生信息
void changeStu();   //修改学生信息
void allStu();      //显示所有学生信息

int n=0,flag=-1,sign=0;
typedef struct student {
    char id[5];
    char name[10];
    char sex[6];
    char major[10];
}stu;

stu s[N];

int menu()
{
    system("clear"); //Linux下清屏函数
    //system("cls"); //windows下清屏函数
	//printf("%s","\033[1H\033[2J"); //也是Linux下清屏函数但操作不是很舒服
    puts("************欢迎使用学生管理系统************");
    puts("**                                      **");
    puts("**          键入对应数字选择操作          **");
    puts("**                                      **");
    puts("**      1查询学生信息 |  2添加学生信息    **");
    puts("**      3删除学生信息 |  4修改学生信息    **");
    puts("**      5所有学生信息 |  6退出该程序      **");
    puts("**                                      **");
    puts("**         使用前请先录入学生信息         **");
    puts("**                                      **");
    puts("**                OIDCAT                **");
    puts("******************************************");
    puts("请键入选项:");
    int flag;
    scanf("%d",&flag);
    return flag;
}

void findStu()
{
    system("clear");
    //system("cls");
	//printf("%s","\033[1H\033[2J");
    puts("***************请选择查找方式**************");
    puts("**                                      **");
    puts("**              1按学号查找              **");
    puts("**              2按姓名查找              **");
    puts("**                                      **");
    puts("**                OIDCAT                **");
    puts("******************************************");
    puts("请键入选项:");int choose;
    scanf("%d",&choose);
    switch(choose)
    {
    case 1:
        {
            char num[10];
            puts("请输入查找学号:");
            scanf("%s",num);
            puts("查找结果如下");
            //printf("序号\t学号\t姓名\t性别\t专业\t\n");
            for(int i=0;i<n;i++)
            {
                if(strcmp(s[i].id,num)==0)
                {
					printf("序号\t学号\t姓名\t性别\t专业\t\n");
                    printf("%d\t%s\t%s\t%s\t%s\t\n",i+1,s[i].id,s[i].name,s[i].sex,s[i].major);
					sign = 1;
                }
            }
			if(sign==0){
				puts("无此学号!请核对!");
			}
			sign = 0;
            getchar();
            getchar();
            break;
        }
    case 2:
        {
            char name[20];
            puts("请输入查找姓名:");
            scanf("%s",name);
            puts("查找结果如下");
            //printf("序号\t学号\t姓名\t性别\t专业\t\n");
            for(int i=0;i<n;i++)
            {
                if(strcmp(s[i].name,name)==0)
                {
					printf("序号\t学号\t姓名\t性别\t专业\t\n");
                    printf("%d\t%s\t%s\t%s\t%s\t\n",i+1,s[i].id,s[i].name,s[i].sex,s[i].major);
				sign = 1;
				}
            }
			if(sign==0){
				puts("无此姓名!请核对!");
			}
			sign = 0;
            getchar();
            getchar();
            break;
        }
    default:puts("输入错误");break;
    }
}
void addStu()  //添加重名学生待解决
{
    system("clear");
    //system("cls");
	//printf("%s","\033[1H\033[2J");
    int person,i;
    printf("此次操作需要输入多少名学生:"); scanf("%d",&person);
    for(i=0;i<person;i++){
        printf("请输入第%d个学生信息\n",i+1);
        printf("请输入学生学号\n学号:"); scanf("%s",s[n+i].id);
        getchar();
        printf("请输入学生姓名\n姓名:"); scanf("%s",s[n+i].name);
        getchar();
        printf("请输入学生性别\n性别:"); scanf("%s",s[n+i].sex);
        getchar();
        printf("请输入学生专业\n专业:"); scanf("%s",s[n+i].major);
    }
    n += i;
    puts("over");
    getchar();
    getchar();
}
void delStu()
{
    system("clear");
    //system("cls");
	//printf("%s","\033[1H\033[2J");
    puts("***************请选择删除方式**************");
    puts("**                                      **");
    puts("**              1按学号删除              **");
    puts("**              2按姓名删除              **");
    puts("**                                      **");
    puts("**                OIDCAT                **");
    puts("******************************************");
    puts("请键入选项:");int choose;
    scanf("%d",&choose);
    switch(choose)
    {
    case 1:
        {
            char num[10];
            puts("请输入删除学号:");
            scanf("%s",num);
            for(int i=0;i<n;i++)
            {
                if(strcmp(s[i].id,num)==0)
                {
                    for(;i<n;i++)
                    {
                        strcpy(s[i].id,s[i+1].id);
                        strcpy(s[i].name,s[i+1].name);
                        strcpy(s[i].sex,s[i+1].sex);
                        strcpy(s[i].major,s[i+1].major);
                    }
					sign = 1;
                    n -= 1;
                    puts("删除成功!");
                }
            }
			if(sign==0){
				puts("无此学号!请核对!");
			}
			sign = 0;
            getchar();
            getchar();
            break;
        }
    case 2:
        {
            char name[20];
            puts("请输入删除姓名:");
            scanf("%s",name);
            for(int i=0;i<n;i++)
            {
                if(strcmp(s[i].name,name)==0)
                {
                    for(;i<n;i++)
                    {
                        strcpy(s[i].id,s[i+1].id);
                        strcpy(s[i].name,s[i+1].name);
                        strcpy(s[i].sex,s[i+1].sex);
                        strcpy(s[i].major,s[i+1].major);
                    }
					sign = 1;
                    n -= 1;
                    puts("删除成功!");
                }
            }
			if(sign==0){
				puts("无此姓名!请核对!");
			}
			sign = 0;
            getchar();
            getchar();
            break;
        }
    default:puts("输入错误");break;
    }
}
void changeStu()
{
    system("clear");
    //system("cls");
	//printf("%s","\033[1H\033[2J");
    char num[10];
    puts("请输入需要修改学号:");
    scanf("%s",num);
    for(int i=0;i<n;i++)
    {
        if(strcmp(s[i].id,num)==0)
        {
			sign = 1;
            puts("已定位到待修改参数,请修改:");
            printf("修改学号为:"); scanf("%s",s[i].id);
            getchar();
            printf("修改学生姓名为:"); scanf("%s",s[i].name);
            getchar();
            printf("修改学生性别为:"); scanf("%s",s[i].sex);
            getchar();
            printf("修改学生专业为:"); scanf("%s",s[i].major);
            puts("修改成功!");
        }
    }
	if(sign==0){
		puts("无此学号!请核对!");
	}
	sign = 0;
    getchar();
    getchar();
}

stu temp;

void allStu()
{
    system("clear");
    //system("cls");
	//printf("%s","\033[1H\033[2J");
    printf("序号\t学号\t姓名\t性别\t专业\t\n");
    //选择排序
    for(int i=0;i<n;i++)
	{
		int max=i;
		for(int j=i+1;j<n;j++)
		{
			if(atoi(s[j].id)<atoi(s[max].id))
			{
				max=j;
			}
		}
			if(max!=i)
			{
			    temp = s[i];
			    s[i] = s[max];
			    s[max] = temp;
			}
	}
    for(int i=0;i<n;i++)
    {
        printf("%d\t%s\t%s\t%s\t%s\t\n",i+1,s[i].id,s[i].name,s[i].sex,s[i].major);
    }
    getchar();
    getchar();
}

void func_flag(int flag)
{
    switch(flag)
    {
    case 1:findStu();break;
    case 2:addStu();break;
    case 3:delStu();break;
    case 4:changeStu();break;
    case 5:allStu();break;
    case 6:exit(0);break;
    default:printf("error");break;
    }
}


int main(int argc,const char *argv[])
{
    for(;;)
    {
      flag = menu();
      func_flag(flag);
      flag = -1;
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/OIDCAT/article/details/106503211
今日推荐