C高级初步学完,综合学习内容并借此熟悉接下来的数据结构的顺序表内容
这次完成的学生管理系统只是实现基本功能,其中还有很多可以改善的地方,例如对用户输入的数据合法性判断,用位域操作减小性别存储所需的空间,枚举限制性别参数的输入来保证合法性,添加文件读写操作等。
ps:还应添加学号重复性的检查
分为三个部分,student.h,student.c,main.c
student.h
#ifndef _STUDENT_H_
#define _STUDENT_H_
#include<stdio.h>
#include<stdlib.h>
#define MAX 30 //最大学生数
typedef struct
{
char name[20];
int id;
int gender;
int age;
double grade;
}STU;
typedef struct
{
STU *stu;
int num;
}CLASS;
void menu();
int Init_input();
int Init();//顺序表初始化
int input();//基础输入
int add();//插入
void output();//输出
void find();//id查找
int del();//删除
int change();//修改
void rank();//排序
void all_out();//将所有学生信息输出打印
#endif
student.c
#include "student.h"
//表初始化
int Init(CLASS *L)
{
L->stu = (STU *)malloc(MAX*sizeof(STU));
if(!L->stu)
return 1;
L->num = 0;//空表
return 0;
}
void output(CLASS L,int n)
{
printf("%d\t\t",L.stu[n].id);
printf("%s\t",L.stu[n].name);
printf("%s\t",L.stu[n].gender > 0 ? "男" : "女" );
printf("%d\t",L.stu[n].age);
printf("%.1lf\n",L.stu[n].grade);
return;
}
int add(CLASS *L)
{