#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<windows.h>
#include<conio.h>
struct stu
{
char num[11];
char name[8];
int maths;
int physics;
int english;
int circuit;
int computer;
float avg;
char is_ok[2];
struct stu *next;
};
int n;
//全局变量n
//以下是函数声明
struct stu *input();
//输入函数
void output(struct stu * head); //输出函数
void find(struct stu * head);
//查找和排名函数
void level(struct stu * head);
//分数段人数函数
void average(struct stu * head); //各科平均分函数
void menushow();
//主菜单函数
void submenu1();
//查找子菜单函数
void submenu2();
//增加子菜单函数
void submenu3();
//删除子菜单函数
void welcome();
//欢迎界面函数
void savefile(struct stu * head);//保存入函数
struct stu *readfile();
//读取成绩信息函数
void print();
//输出函数
void cutout(struct stu * head);
//删除函数
void add(struct stu * head);
//增加函数
main()
//主函数
{
struct stu *head,*p;
int j,k,i,l,m=1,n;
//m为控制变量,j,k,i,l为子菜单控制变量
welcome();
//调用欢迎函数
while(1){
//建立菜单循环
menushow();
//调用menushow函数
scanf("%d",&j);
//读取变量j
switch(j){
case 1:system("cls");
//输入学生信息,并返回主菜单
print();
head=input();
p=head;
printf("输入成功!");
Sleep(1000);
break;
case 2:system("cls");
//输出学生信息,返回主菜单
output(p);
printf("任意键返回上一级");
getchar();
getchar();
break;
case 3:m=1;
while(m)
//以m的值确定是否循环,m为1循环,m为0退出该级循环
{
system("cls");
add(p);
//调用增加函数
printf("增加成功!");
getchar();
getchar();
system("cls");
n=1;
// 以n的值确定是否循环,n为1循环,n为0退出该级循环
while(n){
submenu2();
scanf("%d",&i);
switch(i){
case 1:n=0;break; //退出该级循环,回到上一级增加函数
case 0:m=0;n=0;break;//退出上两级循环,回到主菜单
default:printf("\t 选择错误,请重新输入!\n");
n=1;
//子菜单选择错误,重新选择
Sleep(3000);
system("cls");
break;
}
}
}
break;
case 4:system("cls"); //调用保存文件函数,返回主菜单
savefile(p);
printf("保存成功!");
Sleep(1000);
break;
case 5:system("cls");
//输出各科平均分,返回主菜单
average(p);
printf("任意键返回上一级");
getchar();
getchar();
break;
case 6:m=1;
//m控制循环
while(m)
{
system("cls");
//调用find函数,用于查询学生信息