赞
踩
实现的功能一共有七个:1.添加学生信息,2.删除学生信息,3.修改学生信息,4.查看单个学生信息,5.学生信息排序,6.遍历学生信息,7.插入学生信息。
首先定义结构体,里面包含三个信息,学生姓名,学号,成绩。
struct Stu{
char name[20];
int id;
float score;
};
通过枚举依次赋值,quit = 0,后边依次加一,在下边switch语句中使用。
enum Tag{quit,add,del,change,find,rank,print,charu};
定义结构体数组,这里设置的添加的学生50人。
struct Stu student[50];
定义全局变量count,用来统计添加了多少学生。
int count;
具体实现代码如下所示:
- #include <stdio.h>
- #include <string.h>
- struct Stu{
- char name[20];
- int id;
- float score;
- };
- enum Tag{quit,add,del,change,find,rank,print,charu}; //枚举
- struct Stu student[50]; //定义结构体数组,分配50
- int count; //全局变量,计数用
- void menu(); //菜单
- void Add(); //1.添加学生信息
- void Del(); //2.删除学生信息
- void Change(); //3.修改学生信息
- void Find(); //4.查看单个学生信息
- void Rank(); //5.学生信息排序
- void Print(); //6.遍历学生信息
- void Charu(); //7.插入学生信息
- int main()
- {
-
- while(1)
- {
- int num;
- menu();
- printf("请输入要执行的操作!\n");
- scanf("%d",&num);
- switch(num)
- {
- case add: //1.添加学生信息
- Add();
- break;
- case del: //2.删除学生信息
- Del();
- break;
- case change://3.修改学生信息
- Change();
- break;
- case find: //4.查看单个学生信息
- Find();
- break;
- case rank: //5.学生信息排序
- Rank();
- break;
- case print: //6.遍历学生信息
- Print();
- break;
- case charu: //7.插入学生信息
- Charu();
- break;
- case quit:
- return 0;
- default:printf("输入有误,请重新输入!\n");
- }
- }
- return 0;
- }
-
- //学生管理系统菜单
- void menu()
- {
- printf("*********欢迎来到学生管理系统*********\n");
- printf("*********1.添加学生信息*********\n");
- printf("*********2.删除学生信息*********\n");
- printf("*********3.修改学生信息*********\n");
- printf("*********4.查看单个学生信息*********\n");
- printf("*********5.学生信息排序*********\n");
- printf("*********6.遍历学生信息*********\n");
- printf("*********7.插入学生信息*********\n");
- printf("*********0.退出学生管理系统*********\n");
-
- }
- //1.添加学生信息
- void Add()
- {
- int n,i,m;
- loop:
- printf("请输入要添加的学号!\n");
- scanf("%d",&n);
- for(i=0;i<count;i++)
- {
- if(n == student[i].id)
- {
- printf("该学号已存在!\n");
- return;//无返回值
- }
- }
- student[count].id = n;
- printf("请输入要添加的学生姓名!\n");
- scanf("%s",student[count].name);
- printf("请输入要添加的学生成绩!\n");
- scanf("%f",&student[count].score);
- count++;
- printf("该学生信息添加成功!\n");
- printf("是否要继续添加? 是......1,否......2\n");
- scanf("%d",&m);
- if(m == 1)
- {
- goto loop;
- }
- else if(m == 2)
- {
- return;
- }
- }
-
- //2.删除学生信息
- void Del()
- {
- int n,p;
- int i,j;
- printf("请输入要删除学生的学号!\n");
- scanf("%d",&n);
- printf("请认真考虑是否要删除? 是......1,否......2\n");
- scanf("%d",&p);
- if(p == 1)
- {
- for(i=0;i<count;i++)
- {
- if(n == student[i].id)
- {
- for(j=i;j<count-1;j++)
- {
- student[j]=student[j+1];
- }
- }
- }
- count--;
- printf("删除成功!\n");
- }
- else if(p == 2)
- {
- return;
- }
-
- }
- //3.修改学生信息
- void Change()
- {
- int n,i;
- printf("请输入要修改学生的学号!\n");
- scanf("%d",&n);
- for(i=0;i<count;i++)
- {
- if(n == student[i].id)
- {
- printf("请输入要修改学生的姓名!\n");
- scanf("%s",student[i].name);
- printf("请输入要修改学生的成绩!\n");
- scanf("%f",&student[i].score);
- }
- }
- }
- //4.查看单个学生信息
- void Find()
- {
- int n,i,num;
- char str[20]= {0};
- int flag = 0;
- printf("**********请选择查询方式!***********\n");
- printf("**********1.通过学号***********\n");
- printf("**********2.通过姓名***********\n");
- printf("*******************************\n");
- scanf("%d",&num);
- if(num == 1)
- {
- printf("请输入要查看学生的学号!\n");
- scanf("%d",&n);
- for(i=0;i<count;i++)
- {
- if(n == student[i].id)
- {
- flag = 1;
- printf("该学生信息为:\n");
- printf("学号\t姓名\t成绩\n");
- printf("%d\t%s\t%f\n",student[i].id,student[i].name,student[i].score);
- }
- }
- }
- else if(num == 2)
- {
- printf("请输入要查看学生的姓名!\n");
- scanf("%s",str);
- for(i=0;i<count;i++)
- {
- if(0 == strcmp(str,student[i].name))
- {
- flag = 1;
- printf("该学生信息为:\n");
- printf("学号\t姓名\t成绩\n");
- printf("%d\t%s\t%f\n",student[i].id,student[i].name,student[i].score);
- }
- }
- }
-
- if(flag == 0)
- {
- printf("查无此人,返回主菜单!\n");
- }
-
- }
- //5.学生信息排序
- void Rank()
- {
- struct Stu temp;
- printf("按成绩由高到低排序为:\n");
- for(int i=0;i<count;i++)
- {
- for(int j=0;j<count-i;j++)
- {
- if(student[j].score<student[j+1].score)
- {
- temp=student[j];
- student[j]=student[j+1];
- student[j+1]=temp;
- }
- }
- }
- printf("学号\t姓名\t成绩\n");
- for(int i=0;i<count;i++)
- { printf("%d\t%s\t%3.f\n",student[i].id,student[i].name,student[i].score);
- }
- }
- //6.遍历学生信息
- void Print()
- {
- printf("共有%d个学生信息\n",count);
- printf("学号\t姓名\t成绩\n");
- for(int i=0;i<count;i++)
- {
- printf("%d\t%s\t%f\n",student[i].id,student[i].name,student[i].score);
- }
- }
- //7.插入学生信息
- void Charu()
- {
- int n,i,j;
- printf("请输入想要插入的学号后边!\n");
- scanf("%d",&n);
- for(i=0;i<count;i++)
- {
- if(n == student[i].id)
- {
- for(j=count;j>i;j--)
- {
- student[j]=student[j-1];
- }
- }
- printf("请输入要插入的学生学号!\n");
- scanf("%d",&student[i+1].id);
- printf("请输入要插入的学生姓名!\n");
- scanf("%s",student[i+1].name);
- printf("请输入要插入的学生成绩!\n");
- scanf("%f",&student[i+1].score);
- count++;
- printf("该学生信息插入成功!\n");
- return;
- }
- }

运行结果如图所示:
不足之处多多谅解!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。