main.c(主函数)
#include "student.h"
int main(int argc, const char *argv[])
{
class_t *my_class = NULL;
create_class(&my_class);
int choose = 0;
while(1)
{
print_menu();
scanf("%d", &choose);
switch(choose)
{
case 1:
insert_student(my_class);
print_student(my_class);
break;
case 2:
delete_student(my_class);
break;
case 3:
modif_student(my_class);
print_student(my_class);
break;
case 4:
search_student(my_class);
break;
case 5:
sort_student(my_class);
print_student(my_class);
break;
case 6:
break;
default:
printf("输入有误,请重新输入(1~6)\n");
break;
}
if(6==choose)
{
break;
}
}
return 0;
}
student.c(封装函数)
#include "student.h"
int create_class(class_t **p)
{
if(NULL == p)
{
printf("入参为NULL, 请检查\n");
return -1;
}
*p = (class_t *)malloc(sizeof(class_t));
if(NULL == *p)
{
printf("内存分配失败\n");
return -1;
}
memset(*p, 0, sizeof(class_t));
return 0;
}
void print_menu()
{
printf("----------------------------------------\n");
printf("| 1.添加学员 2.删除学员 3.修改学员信息 |\n");
printf("| 4.查询学员信息 5.学员成绩排序 6.退出 |\n");
printf("----------------------------------------\n");
printf("input your choose >> ");
}
int insert_student(class_t *my_class)
{
if(NULL == my_class)
{
printf("入参为NULL, 请检查\n");
return -1;
}
if (my_class->count==N)
{
printf("学员已满 添加失败\n");
return -1;
}
printf("请输入学员(学号 姓名 成绩):");
scanf("%d%s%d",&my_class->person[my_class->count].id,
my_class->person[my_class->count].name,
&my_class->person[my_class->count].score);
my_class->count++;
printf("新学员%s的信息添加成功\n",my_class->person[my_class->count-1].name);
return 0;
}
int print_student(class_t *my_class)
{
if(NULL == my_class)
{
printf("入参为NULL, 请检查\n");
return -1;
}
int i=0;
for(i=0;i<my_class->count;i++)
{
printf("%-5d%-10s%-3d\n",my_class->person[i].id,
my_class->person[i].name,
my_class->person[i].score);
}
return 0;
}
int search_student(class_t *my_class)
{
if(NULL == my_class)
{
printf("入参为NULL, 请检查\n");
return -1;
}
int input_id=0;
printf("请输入需要查询的学员的学号:");
scanf("%d",&input_id);
int i=0;
for(i=0;i<my_class->count;i++)
{
if(input_id<my_class->person[i].id)
{
printf("查找到该学员:%-5d%-10s%-3d\n",my_class->person[i].id,
my_class->person[i].name,
my_class->person[i].score);
break;
}
}
if(i==my_class->count)
{
printf("查无此人\n");
}
return 0;
}
int modif_student(class_t *my_class)
{
if(NULL == my_class)
{
printf("入参为NULL, 请检查\n");
return -1;
}
int input_id=0;
printf("请输入需要修改的学员id:");
scanf("%d",&input_id);
int i=0;
for(i=0;i<my_class->count;i++)
{
if(input_id==my_class->person[i].id)
{
printf("请输入学员的新成绩:");
scanf("%d",&my_class->person[i].score);
break;
}
}
if(i==my_class->count)
{
printf("查无此人\n");
}
return 0;
}
int delete_student(class_t *my_class)
{
if(NULL == my_class)
{
printf("入参为NULL, 请检查\n");
return -1;
}
int input_id=0;
printf("请输入需要删除的学员id:");
scanf("%d",&input_id);
int i=0,j=0;
for(i=0;i<my_class->count;i++)
{
if(input_id==my_class->person[i].id)
{
for(j=i+1;j<my_class->count;j++)
{
my_class->person[j]=my_class->person[j+1];
}
break;
}
}
if(i==my_class->count)
{
printf("查无此人\n");
}
else
{
my_class->count-=1;
printf("删除学员成功\n");
}
return 0;
}
int sort_student(class_t *my_class)
{
if(NULL == my_class)
{
printf("入参为NULL, 请检查\n");
return -1;
}
int i=0,j=0;
stu_t s1;
for(i=0;i<my_class->count;i++)
{
for(j=0;j<my_class->count-1-i;j++)
{
if(my_class->person[j].score<my_class->person[j+1].score)
{
s1=my_class->person[j];
my_class->person[j]=my_class->person[j+1];
my_class->person[j+1]=s1;
}
}
}
return 0;
}
student.h(头文件)
#ifndef __STUDENT_H__
#define __STUDENT_H__
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define N 40
typedef struct _Student
{
int id;
char name[32];
int score;
}stu_t;
typedef struct _Class
{
stu_t person[N];
int count;
}class_t;
int create_class(class_t **p);
int insert_student(class_t *my_class);
int print_student(class_t *my_class);
void print_menu();
int modif_student(class_t *my_class);
int search_student(class_t *my_class);
int delete_student(class_t *my_class);
int sort_student(class_t *my_class);
#endif
实现效果: