实验项目4 (文件、结构体、数组综合应用):
菜单第1项完成
创建包含上述学生信息的文件:“student.data”,并输出学生信息;
菜单第2项完成
将学生信息文件“student.data”数据读到一个数组s中,统计学生个数,将数组s按学号从小到大排序后输出到屏幕和文件 “s_no.data”中。
菜单第3项完成
将学生信息从数组s中拷贝到数组s_name中,将s_name按姓名排序后输出到屏幕和文件 “s_name.data”中。
菜单第4项完成
在第2项完成的基础上,输入一个学生信息:908114045,李成, 67,73,68,208。将这个学生的信息插入在s的合适的位置上,保持按学号从小到大有序,并输出所有学生信息。
菜单第5项完成
在第4项完成的基础上,输入一个学生的学号908114023,将这个学生从数组中删除,并输出所删学生信息和删除后所有学生信息。
备注:由于需要对数组中的元素进行插入和删除运算,规定学生的个数不超过100个,定义的数组大小为100即可,有可能浪费;由于输出学生信息要多次使用,可以编一输出函数,多次调用完成输出
代码
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define N 30
typedef struct student
{
long id;
char name[20];
int score[4];
}STUDENT;
void write(STUDENT stu[],int num,int x);
void read(STUDENT s[],int num);
void print(STUDENT s[],int num);
void px(STUDENT s[],int num);
void px_as_name(STUDENT s[],int num);
int add(STUDENT s[],int num);
int del(STUDENT s[],int num);
int main()
{
STUDENT s[N];
int n,num=5;
printf("1:创建学生信息文件并输出;\n2:按学号排序并输出;\n3:按姓名排序并输出;\n4:增加学生信息;\n5:删除某学生的数据;\n6:退出程序\n");
do{
scanf("%d",&n);
switch(n)
{
case 1:
read(s,num);
print(s,num);
break;
case 2:
px(s,num);
print(s,num);