c基础版不涉及信息保存进文件与数据库。
(c语言小白练习可能存在bug,敬请大佬斧正)
部分运行结果:
![](https://i-blog.csdnimg.cn/blog_migrate/9a483de1b0764c9c2c7408a1899ae66a.png)
代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//班级总人数
#define PEOPLE 10
int i = -1;
typedef struct STU
{
long xuehao;//学号
char name[20]; //姓名
int score; //成绩
}stu_t;
stu_t * class[PEOPLE] = {NULL};
/***********************************************
功能:创建学生信息
************************************************/
stu_t * createstudent()
{
stu_t * student = (stu_t *)malloc(sizeof(stu_t));
//判断student是否是NULL
if(student ==NULL)
{
perror("malloc");
return NULL;
}
//判断班级学生是否满
else if(i == PEOPLE-1)
{
puts("班级学生已满");
return NULL;
}
long xuehao = 0;
char name[20] = {0};
int score = 0;
puts("请按格式输入 格式:学号 姓名 成绩");
scanf("%ld %s %d",&xuehao,name,&score);
//判断是否已经有此学号的学生
int a = i;
for(a;a>=0;a--)
{
if(xuehao == class[a]->xuehao)
{
printf("已有此学生\n");
return NULL;
}
}
student->xuehao = xuehao;
strcpy(student->name,name);
student->score = score;
i++;
class[i] = student;
}
/***********************************************
功能:输入学生学号并删除学生信息
************************************************/
int deletestudentbyxuehao()
{
long xuehao;
puts("请输入要删除学生的学号");
scanf("%ld",&xuehao);
if(i == -1)
return -1;
//判断要删除学号的学生是否存在
for(int a = 0;a<=i;a++)
{
if (xuehao == class[a]->xuehao)
{
free(class[a]);
class[a] = class[a+1];
i--;
return -1;
}
}
printf("没有此学生\n");
}
/***********************************************
功能:按学号从小到大打印所有学生信息
************************************************/
void all()
{ //按照学号升序排列学生信息
for(int m = 0;m<i;m++)
{
for(int n = 0; n < i-m;n++)
{
if(class[n]->xuehao >class[n+1]->xuehao)
{
stu_t *p = class[n];
class[n] = class[n+1];
class[n+1] = p;
}
}
}
puts("");
puts("***************所有学生信息***************");
//打印所有学生信息
for(int a = 0;a<=i;a++)
{
printf("学号:%-7ld姓名:%-7s成绩:%-3d\n",class[a]->xuehao,class[a]->name,class[a]->score);
}
puts("******************************************");
puts("");
}
/***********************************************
功能:输入学生成绩修改学生成绩
************************************************/
int changescore()
{ long xuehao;
int newscore;
puts("请输入要修改学生的学号");
scanf("%ld",&xuehao);
//判断是否已经有此学号的学生
for(int a = 0;a<=i;a++)
{
if (xuehao == class[a]->xuehao)
{
puts("请输入要修改的成绩");
scanf("%d",&newscore);
class[a]->score = newscore;
puts("修改成功");
return -1;
}
}
puts("没有此学生");
}
/***********************************************
功能:系统主界面
************************************************/
void view()
{
puts("---------------欢迎来到学生管理系统-----------------");
puts("1.查询所有学生信息");
puts("2.添加学生");
puts("3.删除学生");
puts("4.修改学生成绩");
puts("5.退出系统");
puts("请输入对应标号操作");
puts("----------------------------------------------------");
}
/***********************************************
功能:主函数
************************************************/
int main()
{ int a;
while(1)
{
view();
//选择要操作的标号
scanf("%d",&a);
switch(a)
{
case 1 : all();break;
case 2 : createstudent();break;
case 3 : deletestudentbyxuehao();break;
case 4 : changescore();break;
case 5 : return 0;
default : break;
}
}
return 0;
}