C语言学生成绩管理程序,程序一直运行不出来,希望有人能帮忙解决下
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define LEN 20
#define N 50
int M = 0;
void insert(); //录入
void modify(); //修改
void search();
void menu();
void save();
void sort();
struct student{
long int Id; //学号
char Name[LEN+1]; //姓名
char Sex[LEN+1]; //性别
int Age; //年龄
int BanJi; //班级
float chinese,math,english;
}stu[N];
int main()
{
while (1)
{
menu();
}
system("pause");
return 0;
}
void menu()//菜单函数
{
int num;
printf("\n");
printf("\t\t\t\t——————————————————————————\n");
printf("\t\t\t\t*************欢迎使用学生信息管理系统***************\n");
printf("\t\t\t\t* *\n");
printf("\t\t\t\t********************系统功能菜单********************\n");
printf("\t\t\t\t* *\n");
printf("\t\t\t\t* 1.添加学生成绩 *\n");
printf("\t\t\t\t* 2.修改学生成绩 *\n");
printf("\t\t\t\t* 3.查找学生成绩 *\n");
printf("\t\t\t\t* 4.排序学生成绩 *\n");
printf("\t\t\t\t* 0.退出系统 *\n");
printf("\t\t\t\t——————————————————————————\n");
printf("\t\t\t\t请输入所选功能:");
scanf("%d", &num);
switch (num)
{
case 1:
printf("输入学生数:(M<=50):\n");
scanf("%d", &M);
insert();
break;
case 2:
modify();
break;
case 3:
search();
break;
case 4:
sort();
break;
case 0:
printf("退出程序成功!\n");
exit(0);
default:
printf("请在1-8之间选择\n");
system("pause");//提示完成之后显示按任意键继续
}
}
void insert()//添加学生信息
{ int i;
for(i=1;i<=M;i++)
{
printf("请输入第%d个学生的学号:",i);
scanf("%ld",&stu[i].Id);
printf("请输入第%d个学生的姓名:",i);
scanf("%c",&stu[i].Name);
printf("请输入第%d个学生的性别:",i);
scanf("%c",&stu[i].Sex);
printf("请输入第%d个学生的年龄:",i);
scanf("%d",&stu[i].Age);
printf("请输入第%d个学生的班级:",i);
scanf("%d",&stu[i].BanJi);
printf("请输入第%d个学生的语数英成绩:");
scanf("%f %f %f",&stu[i].chinese,&stu[i].math,&stu[i].english);
}
printf("学生信息添加完毕!请立即保存数据信息到文件!");
}
void modify()//修改学生信息
{
int i, item;
long int a;
printf("请输入要修改学生的学号:\n");
scanf("%ld",&a);
for (i=1; i<=M; i++)
{
if (stu[i].Id==a)
{
printf("\t\t\t\t1.修改名字:\n");
printf("\t\t\t\t2.修改性别:\n");
printf("\t\t\t\t3.修改年龄:\n");
printf("\t\t\t\t4.修改班级:\n");
printf("\t\t\t\t5.修改成绩:\n");
printf("\t\t\t\t0.结束程序!\n");
while (1)
{
printf("please choose:");
scanf("%d", &item);
switch (item)
{
case 1:
printf("Please input new name:\n");
scanf("%c", &stu[i].Name);
break;
case 2:
printf("Please input sex:\n ");
scanf("%c", &stu[i].Sex);
break;
case 3:
printf("Please input new age:\n");
scanf("%d", &stu[i].Age);
break;
case 4:
printf("Please input new banji:\n ");
scanf("%d", &stu[i].BanJi);
break;
case 5:
printf("please inpur new chengji:\n");
scanf("语文:%f 数学:%f 英语:%f",&stu[i].chinese,&stu[i].math,&stu[i].english);
break;
default: printf("Input error!\n");
}
if (item == 0)
break;
}
}
}
}
void search() //查找已知学号的学生信息
{
long int b,term=-1;
int i;
printf("请输入要查找学生的学号:");
scanf("%ld",&b);
for (i=1; i<=M; i++)
{
if (stu[i].Id==b)
{
printf("学号:%ld 姓名:%c 性别:%c 年龄:%d 班级:%d 语文:%f 数学:%f 英语:%f\n",stu[i].Id,stu[i].Name,stu[i].Sex,stu[i].Age,stu[i].BanJi,stu[i].chinese,stu[i].math,stu[i].english);
term=-2;
}
}
if(term!=-2)
{
printf("Not found!\n");
}
}
void sort()
{
int i,j;
struct student temp;
for(i=0;i<M-1;i++)
for(j=i+1;j<M;j++)
{
if(stu[i].chinese+stu[i].math+stu[i].english>stu[j].chinese+stu[j].math+stu[j].english)
{
temp=stu[i];
stu[i]=stu[j];
stu[j]=temp;
}
}
for(i=0;i<M;i++)
{
printf("%f %f %f\n",stu[i].chinese,stu[i].math,stu[i].english);
}
return 0;
}
void save()
{
int i;
FILE *fp;
fp=fopen("student.txt","w");
for(i=1;i<=M;i++)
{
fprintf(fp,"%ld %c %c %d %d %f\n",stu[i].Id,stu[i].Name,stu[i].Sex,stu[i].Age,stu[i].BanJi,stu[i]);
}
fclose(fp);
printf("学生信息保存成功!");
}