#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#define N 50
struct inf
{
char name[10]; //名字
char id[10]; //学号
double Basic_Courses1; //主干课程1
double Basic_Courses2; //主干课程2
double Basic_Courses3; //主干课程3
double Major_Courses1; //专业课程1
double Major_Courses2; //专业课程2
}person[N]; //存储所有学生的信息
void menu(); //菜单函数
void display1(); //打印‘*’符号
void display2(); //打印‘正菱形’符号
void reserve(); //保存到数组
void read(); //读取学生信息
void delay(); //提供开关的延迟效果
void choose(); //提供开关选择功能
void input(); //学生信息的输入
void printfinformation(); //学生信息的打印
void sum_average(); //学生的成绩汇总、平均分等
void statistics(); //学生信息的统计
void alter(); //学生信息的修改
void search(); //学生信息的查找
void del(); //学生信息的删除
void save(); //文件数据的输出
void back(); //返回主菜单
char ch; //储存主菜单的调用选项信息
double ave[N],sum[N],sum1[N],sum2[N];//定义全局变量,方便直接引用
int number=0,temp1,temp2=0;//记录每次输入的人数
main()
{
char ch;
system("color 0e"); //程序界面、字体颜色选择
menu();
do
{
scanf("%c",&ch);
system("cls"); //清屏功能
choose();
}while(ch!='8'); //循环条件的判断
}
//提供主菜单的选择功能
void choose()
{
switch(ch)
{
case '1':input();
break;
case '2':printfinformation();
back();
break;
case '3':alter();
back();
break;
case '4':search();
break;
case '5':del();
break;
case '6':statistics();
back();
break;
case '7':save();
break;
case '8':printf("感谢您的使用!\n");
break;
default:menu();
printf("\n\t\t请重新选择:");
}
}
//数据写入文件
void reserve()
{
FILE *fp=NULL;
int i;
if((fp=fopen("student.txt","w"))==NULL)
{
printf("不能打开文件");
exit(0);
}
for(i=temp2;i<number;i++)
{
fprintf(fp,"%4d%7s%6s%10.01f%10.01f%10.01f%10.01f%8.01f\n",number,
person[i].name,person[i].id,person[i].Basic_Courses1,person[i].Basic_Courses2,
person[i].Basic_Courses3,person[i].Major_Courses1,person[i].Major_Courses2);
} //写入文件
fclose(fp); //关闭文件
}
//数据文件的读取
void read()
{
FILE *fp=NULL;
int i=0;
if((fp=fopen("student.txt","r"))==NULL)//以文本只读方式重新打开文件
{
printf("不能打开文件");
exit(0);
}
fscanf(fp,"%4d\n",&number);
for(i=0;i<number;i++)
{
fscanf(fp,"%7s%6s%10.01f%10.01f%10.01f%10.01f%8.01f\n",&person[i].name,&person[i].id,
&person[i].Basic_Courses1,&person[i].Basic_Courses2,&person[i].Basic_Courses3,
&person[i].Major_Courses1,&person[i].Major_Courses2);//读文件
printf("%7s%6s%10.01f%10.01f%10.01f%10.01f%8.01f\n",person[i].name,person[i].id,
person[i].Basic_Courses1,person[i].Basic_Courses2,person[i].Basic_Courses3,
person[i].Major_Courses1,person[i].Major_Courses2);//输出文件数据
}
fclose(fp); //关闭文件
}
//主菜单的打印
void menu()
{
char *s[9]={"【1】输入学生信息","【2】查看学生信息","【3】修改学生信息","【4】查找学生信息","【5】删除学生信息","【6】统计学生成绩","【7】保存学生信息","【8】退出管理系统","请选择:"};
int i;
printf("\n");
printf("\t\t");
display1();
printf("学生成绩管理系统");
display1();
printf("\n\n");
printf("\t\t");
display2();
printf("\n\n");
printf("\t\t");
for(i=0;i<9;i++)
{
display1();
printf("%s",s[i]);
display1();
printf("\n");
printf("\t\t");
}
}
//打印'*'
void display1()
{
int i;
for(i=0;i<=16;i++)
{
printf("*");
delay();
}
}
//打印'-'
void display2()
{
int i;
for(i=0;i<=24;i++)
{
printf("-");
delay();
}
}
//提供开关的延迟效果
void delay()
{
long i,n=4000000;
for(i=0;i<n;i++)
{
if(ch!='\0')
i=n; //当主菜单运行过一次后,消除延迟效果
}
}
//学生信息的输入
void input()
{
int i;
printf("请输入学生的人数:");
scanf("%d",&temp1);
number+=temp1;
for(i=temp2;i<number;i++) //引用中间变量temp2,记录每次输入的人数
{
printf("请输入第%d个学生的名字:",i+1);
fflush(stdin);
scanf("%s",person[i].name);
printf("请输入第%d个学生的学号:",i+1);
fflush(stdin);
scanf("%s",person[i].id);
printf("请输入第%d个学生的主干课程1、主干课程2、主干课程3、专业课程1、专业课程2:\n",i+1);
fflush(stdin);
scanf("%lf%lf%lf%lf%lf",&person[i].Basic_Courses1,&person[i].Basic_Courses2,&person[i].Basic_Courses3,
&person[i].Major_Courses1,&person[i].Major_Courses2);
}
reserve();
temp2+=temp1;
//数据写入 文件
sum_average(); //学生平均成绩、总成绩的计算
back(); //返回主菜单
}
//学生信息的打印
void printfinformation()
{
int i;
if(number==0)
{
printf("\t没有学生信息");
}
else
{
printf("\n\t\t----------------------------学生信息----------------------------\n");
printf("-------------------------------------------------------------------------------------\n");
printf(" 姓名 学号 主干课程1 主干课程2 主干课程3 专业课程1 专业课程2 总成绩\n");
printf("-------------------------------------------------------------------------------------\n");
for (i=0;i<number;i++)
{
printf("%10s%6s%8.01f%10.01f%10.01f%10.01f%10.01f%12.01f\n",person[i].name,person[i].id,
person[i].Basic_Courses1,person[i].Basic_Courses2,person[i].Basic_Courses3,
person[i].Major_Courses1,person[i].Major_Courses2,sum[i]);
printf("-------------------------------------------------------------------------------------\n");
}
printf("各课平均分");
printf("%14.01f%10.01f%10.01f%10.01f%10.01f\n",ave[0],ave[1],ave[2],ave[3],ave[4]);
printf("-------------------------------------------------------------------------------------\n");
}
}
//学生平均成绩、总成绩的计算
void sum_average()
{
int i,k;
for(i=0;i<5;i++)
{
sum1[i]=0;
}
for(i=0;i<5;i++)
{
for(k=0;k<number;k++)
{
if(i==0)
{
sum1[i]+=person[k].Basic_Courses1;
//i=0,1,2,3,4分别计算每个人同项成绩的总和,分别存储在sum[i]中
}
if(i==1)
{
sum1[i]+=person[k].Basic_Courses2;
}
if(i==2)
{
sum1[i]+=person[k].Basic_Courses3;
}
if(i==3)
{
sum1[i]+=person[k].Major_Courses1;
}
if(i==4)
{
sum1[i]+=person[k].Major_Courses2;
}
}
}
for(i=0;i<5;i++)
{
ave[i]=sum1[i]/number;
//求前5项平均成绩,数据分别存储在ave[i]中
}
for(i=0;i<number;i++)
{
sum[i]=person[i].Basic_Courses1+person[i].Basic_Courses2+person[i].Basic_Courses3+
person[i].Major_Courses1+person[i].Major_Courses2;
//分别计算每个学生的总成绩,分别存储在sun[i]中
}
}
//学生信息的统计
void statistics()
{
int i,count1=0,count2=0,count3=0;
double percent1=0,percent2=0,percent3=0;
if(number==0)
{
printf("\t没有学生信息");
}
else
{
printfinformation();
for(i=0;i<number;i++)
{
sum2[i]=person[i].Basic_Courses1+person[i].Basic_Courses2+person[i].Basic_Courses3;
//
}
for(i=0;i<number;i++)
{
if(sum2[i]>=300)
count1++;
if((sum2[i]<300)&&(sum2[i]>=200))
count2++;
if((sum2[i]<200)&&(sum2[i]>=100))
count3++;
}
percent1=(double) count1/(double) number;
percent2=(double) count2/(double) number;
percent3=(double) count3/(double) number;
printf("\n\t\t---------------------信息统计表----------------------\n");
printf("-----------------------------------------------------------------\n");
printf("前三项成绩和\t 300分\t 299-200分\t 199-100分\n");
printf("-----------------------------------------------------------------\n");
printf("人数\t%10d\t%lld\t%10d\n",count1,count2,count3);
printf("-----------------------------------------------------------------\n");
printf(" 比例\t");
printf("%10.31f\t%11.31f\t%11.31f\n",percent1,percent2,percent3);
printf("-----------------------------------------------------------------\n");
}
}
//学生信息的修改
void alter()
{
int i,k,flag;
char temp[10],temp1;
if(number==0)
{
printf("\t没有学生信息");
}
else
{
printfinformation();
do
{
printf("请输入你要修改信息的学生的姓名或学号:");
scanf("%s",temp);
for(i=0;i<number;i++)
{
if(strcmp(temp,person[i].name)==0||strcmp(temp,person[i].id)==0)
{
k=i;
flag=1;
break;
}
if(i==(number-1)&&(strcmp(temp,person[i].name)!=0)&&(strcmp(temp,person[i].id)!=0))
{
printf("不存在该学生\n");
flag=0;
}
}
if(flag==1)
{
printf("该学生的原信息如下:\n");
printf("-----------------------------------------------------------------\n");
printf(" 姓名 学号 主干课程1 主干课程2 主干课程3 专业课程1 专业课程2 总成绩\n");
printf("-------------------------------------------------------------------------------------\n");
printf("%7s%6s%10.01f%10.01f%10.01f%10.01f%8.01f\n",person[k].name,person[k].id,
person[k].Basic_Courses1,person[k].Basic_Courses2,person[k].Basic_Courses3,
person[k].Major_Courses1,person[k].Major_Courses2);
printf("-------------------------------------------------------------------------------------\n");
getch();
system("cls");
printf("\n请重新输入该学生的所有信息\n");
printf("请重新输入姓名:");
fflush(stdin);
scanf("%s",&person[k].name);
printf("请重新输入学号:");
fflush(stdin);
scanf("%s",&person[k].id);
printf("请重新输入学生的主干课程1、主干课程2、主干课程3、专业课程1、专业课程2:\n");
fflush(stdin);
scanf("%lf%lf%lf%lf%lf",&person[k].Basic_Courses1,&person[k].Basic_Courses2,&person[k].Basic_Courses3,
&person[k].Major_Courses1,&person[k].Major_Courses2);
sum_average();
}
printf("继续修改?Y/N: ");
fflush(stdin);
scanf("%c",&temp1);
}while(temp1=='y'||temp1=='Y');
printf("是否显示修改后全部学生的信息?Y/N:");
scanf("%c",&temp1);
if(temp1=='y'||temp1=='Y');
{
system("cls");
printfinformation();
}
reserve();
}
}
//学生信息的查找
void search()
{
int i,k,flag;
char temp[10],temp1;
//
if(number==0)
{
printf("\t没有学生信息");
}
else
{
do
{
printf("请输入你要查找的学生姓名或学号:");
scanf("%s",temp);
for(i=0;i<number;i++)
{
if(strcmp(temp,person[i].name)==0||strcmp(temp,person[i].id)==0)
{
k=i;
flag=1;
break;
}
if(i==(number-1)&&(strcmp(temp,person[i].name)!=0)&&(strcmp(temp,person[i].id)!=0))
{
printf("不存在该学生\n");
flag=0;
}
}
if(flag==1)
{
printf("该学生的信息如下:\n");
printf("-----------------------------------------------------------------\n");
printf(" 姓名 学号 主干课程1 主干课程2 主干课程3 专业课程1 专业课程2 总成绩\n");
printf("-------------------------------------------------------------------------------------\n");
printf("%7s%6s%10.01f%10.01f%10.01f%10.01f%8.01f\n",person[k].name,person[k].id,
person[k].Basic_Courses1,person[k].Basic_Courses2,person[k].Basic_Courses3,
person[k].Major_Courses1,person[k].Major_Courses2);
printf("-------------------------------------------------------------------------------------\n");
}
printf("\n继续查找?Y/N:");
scanf("%c",&temp1);
}while (temp1=='y'||temp1=='Y');
}
back();
}
//学生信息的删除
void del()
{
int i,k,flag;
char temp[10],temp1;
if(number==0)
{
printf("\t没有学生信息");
}
else
{
printfinformation();
do
{
printf("请输入要删除的学生信息的姓名或学号:");
scanf("%s",temp);
for(i=0;i<number;i++)
{
if(strcmp(temp,person[i].name)==0||strcmp(temp,person[i].id)==0)
{
k=i;
flag=1;
break;
}
if(i==(number-1)&&(strcmp(temp,person[i].name)!=0)&&(strcmp(temp,person[i].id)!=0))
{
printf("不存在该学生\n");
flag=0;
}
}
if((flag==1)&&(number==1))
{
number--;
temp2--;
printf("该学生信息已经成功删除\n\n");
}
if((flag==1)&&(number<=1))
{
printf("已经没有学生信息,请重新输入!\n\n");
}
if((flag==1)&&(number>1))
{
for(i=k;i<(number-1);i++)
{
strcpy(person[i].name,person[i+1].name);
strcpy(person[i].id,person[i+1].id);
person[i].Basic_Courses1=person[i+1].Basic_Courses1;
person[i].Basic_Courses2=person[i+1].Basic_Courses2;
person[i].Basic_Courses3=person[i+1].Basic_Courses3;
person[i].Major_Courses1=person[i+1].Basic_Courses1;
person[i].Major_Courses2=person[i+1].Basic_Courses2;
}
number--;
temp2--;
printf("该学生信息已经成功删除\n\n");
}
sum_average();//平均成绩,总成绩的重新求值
printf("是否继续删除?Y/N:");
scanf("%c",&temp1);
}while (temp1=='y'||temp1=='Y');//循环进行的条件
printf("是否显示删除操作后全部学生的信息?Y/N:");
scanf("%c",&temp1);
if(temp1=='y'||temp1=='Y')
{
sum_average();//删除后学生成绩信息的重新计算
printfinformation();//学生信息的打印
}
reserve();
}
back();
}
void save()
{
char temp;
printf("1、读取上次的记录:\n2、保存现在的记录:\n请选择:");
scanf("%c",&temp);
if(temp=='1')
{
printf("\n\t\t----------学生信息-----------\n");
printf("-----------------------------------------------------------------\n");
printf(" 姓名 学号 主干课程1 主干课程2 主干课程3 专业课程1 专业课程2 总成绩\n");
read();
back();
}
else
{
printf("\t程序已经保存\n");
back();
}
}
//返回主菜单
void back()
{
printf("\n\t\t输入任意键返回主菜单:");
getch();//提供任意键返回效果
system("cls");//清屏功能
menu();//打印主菜单
}
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#define N 50
struct inf
{
char name[10]; //名字
char id[10]; //学号
double Basic_Courses1; //主干课程1
double Basic_Courses2; //主干课程2
double Basic_Courses3; //主干课程3
double Major_Courses1; //专业课程1
double Major_Courses2; //专业课程2
}person[N]; //存储所有学生的信息
void menu(); //菜单函数
void display1(); //打印‘*’符号
void display2(); //打印‘正菱形’符号
void reserve(); //保存到数组
void read(); //读取学生信息
void delay(); //提供开关的延迟效果
void choose(); //提供开关选择功能
void input(); //学生信息的输入
void printfinformation(); //学生信息的打印
void sum_average(); //学生的成绩汇总、平均分等
void statistics(); //学生信息的统计
void alter(); //学生信息的修改
void search(); //学生信息的查找
void del(); //学生信息的删除
void save(); //文件数据的输出
void back(); //返回主菜单
char ch; //储存主菜单的调用选项信息
double ave[N],sum[N],sum1[N],sum2[N];//定义全局变量,方便直接引用
int number=0,temp1,temp2=0;//记录每次输入的人数
main()
{
char ch;
system("color 0e"); //程序界面、字体颜色选择
menu();
do
{
scanf("%c",&ch);
system("cls"); //清屏功能
choose();
}while(ch!='8'); //循环条件的判断
}
//提供主菜单的选择功能
void choose()
{
switch(ch)
{
case '1':input();
break;
case '2':printfinformation();
back();
break;
case '3':alter();
back();
break;
case '4':search();
break;
case '5':del();
break;
case '6':statistics();
back();
break;
case '7':save();
break;
case '8':printf("感谢您的使用!\n");
break;
default:menu();
printf("\n\t\t请重新选择:");
}
}
//数据写入文件
void reserve()
{
FILE *fp=NULL;
int i;
if((fp=fopen("student.txt","w"))==NULL)
{
printf("不能打开文件");
exit(0);
}
for(i=temp2;i<number;i++)
{
fprintf(fp,"%4d%7s%6s%10.01f%10.01f%10.01f%10.01f%8.01f\n",number,
person[i].name,person[i].id,person[i].Basic_Courses1,person[i].Basic_Courses2,
person[i].Basic_Courses3,person[i].Major_Courses1,person[i].Major_Courses2);
} //写入文件
fclose(fp); //关闭文件
}
//数据文件的读取
void read()
{
FILE *fp=NULL;
int i=0;
if((fp=fopen("student.txt","r"))==NULL)//以文本只读方式重新打开文件
{
printf("不能打开文件");
exit(0);
}
fscanf(fp,"%4d\n",&number);
for(i=0;i<number;i++)
{
fscanf(fp,"%7s%6s%10.01f%10.01f%10.01f%10.01f%8.01f\n",&person[i].name,&person[i].id,
&person[i].Basic_Courses1,&person[i].Basic_Courses2,&person[i].Basic_Courses3,
&person[i].Major_Courses1,&person[i].Major_Courses2);//读文件
printf("%7s%6s%10.01f%10.01f%10.01f%10.01f%8.01f\n",person[i].name,person[i].id,
person[i].Basic_Courses1,person[i].Basic_Courses2,person[i].Basic_Courses3,
person[i].Major_Courses1,person[i].Major_Courses2);//输出文件数据
}
fclose(fp); //关闭文件
}
//主菜单的打印
void menu()
{
char *s[9]={"【1】输入学生信息","【2】查看学生信息","【3】修改学生信息","【4】查找学生信息","【5】删除学生信息","【6】统计学生成绩","【7】保存学生信息","【8】退出管理系统","请选择:"};
int i;
printf("\n");
printf("\t\t");
display1();
printf("学生成绩管理系统");
display1();
printf("\n\n");
printf("\t\t");
display2();
printf("\n\n");
printf("\t\t");
for(i=0;i<9;i++)
{
display1();
printf("%s",s[i]);
display1();
printf("\n");
printf("\t\t");
}
}
//打印'*'
void display1()
{
int i;
for(i=0;i<=16;i++)
{
printf("*");
delay();
}
}
//打印'-'
void display2()
{
int i;
for(i=0;i<=24;i++)
{
printf("-");
delay();
}
}
//提供开关的延迟效果
void delay()
{
long i,n=4000000;
for(i=0;i<n;i++)
{
if(ch!='\0')
i=n; //当主菜单运行过一次后,消除延迟效果
}
}
//学生信息的输入
void input()
{
int i;
printf("请输入学生的人数:");
scanf("%d",&temp1);
number+=temp1;
for(i=temp2;i<number;i++) //引用中间变量temp2,记录每次输入的人数
{
printf("请输入第%d个学生的名字:",i+1);
fflush(stdin);
scanf("%s",person[i].name);
printf("请输入第%d个学生的学号:",i+1);
fflush(stdin);
scanf("%s",person[i].id);
printf("请输入第%d个学生的主干课程1、主干课程2、主干课程3、专业课程1、专业课程2:\n",i+1);
fflush(stdin);
scanf("%lf%lf%lf%lf%lf",&person[i].Basic_Courses1,&person[i].Basic_Courses2,&person[i].Basic_Courses3,
&person[i].Major_Courses1,&person[i].Major_Courses2);
}
reserve();
temp2+=temp1;
//数据写入 文件
sum_average(); //学生平均成绩、总成绩的计算
back(); //返回主菜单
}
//学生信息的打印
void printfinformation()
{
int i;
if(number==0)
{
printf("\t没有学生信息");
}
else
{
printf("\n\t\t----------------------------学生信息----------------------------\n");
printf("-------------------------------------------------------------------------------------\n");
printf(" 姓名 学号 主干课程1 主干课程2 主干课程3 专业课程1 专业课程2 总成绩\n");
printf("-------------------------------------------------------------------------------------\n");
for (i=0;i<number;i++)
{
printf("%10s%6s%8.01f%10.01f%10.01f%10.01f%10.01f%12.01f\n",person[i].name,person[i].id,
person[i].Basic_Courses1,person[i].Basic_Courses2,person[i].Basic_Courses3,
person[i].Major_Courses1,person[i].Major_Courses2,sum[i]);
printf("-------------------------------------------------------------------------------------\n");
}
printf("各课平均分");
printf("%14.01f%10.01f%10.01f%10.01f%10.01f\n",ave[0],ave[1],ave[2],ave[3],ave[4]);
printf("-------------------------------------------------------------------------------------\n");
}
}
//学生平均成绩、总成绩的计算
void sum_average()
{
int i,k;
for(i=0;i<5;i++)
{
sum1[i]=0;
}
for(i=0;i<5;i++)
{
for(k=0;k<number;k++)
{
if(i==0)
{
sum1[i]+=person[k].Basic_Courses1;
//i=0,1,2,3,4分别计算每个人同项成绩的总和,分别存储在sum[i]中
}
if(i==1)
{
sum1[i]+=person[k].Basic_Courses2;
}
if(i==2)
{
sum1[i]+=person[k].Basic_Courses3;
}
if(i==3)
{
sum1[i]+=person[k].Major_Courses1;
}
if(i==4)
{
sum1[i]+=person[k].Major_Courses2;
}
}
}
for(i=0;i<5;i++)
{
ave[i]=sum1[i]/number;
//求前5项平均成绩,数据分别存储在ave[i]中
}
for(i=0;i<number;i++)
{
sum[i]=person[i].Basic_Courses1+person[i].Basic_Courses2+person[i].Basic_Courses3+
person[i].Major_Courses1+person[i].Major_Courses2;
//分别计算每个学生的总成绩,分别存储在sun[i]中
}
}
//学生信息的统计
void statistics()
{
int i,count1=0,count2=0,count3=0;
double percent1=0,percent2=0,percent3=0;
if(number==0)
{
printf("\t没有学生信息");
}
else
{
printfinformation();
for(i=0;i<number;i++)
{
sum2[i]=person[i].Basic_Courses1+person[i].Basic_Courses2+person[i].Basic_Courses3;
//
}
for(i=0;i<number;i++)
{
if(sum2[i]>=300)
count1++;
if((sum2[i]<300)&&(sum2[i]>=200))
count2++;
if((sum2[i]<200)&&(sum2[i]>=100))
count3++;
}
percent1=(double) count1/(double) number;
percent2=(double) count2/(double) number;
percent3=(double) count3/(double) number;
printf("\n\t\t---------------------信息统计表----------------------\n");
printf("-----------------------------------------------------------------\n");
printf("前三项成绩和\t 300分\t 299-200分\t 199-100分\n");
printf("-----------------------------------------------------------------\n");
printf("人数\t%10d\t%lld\t%10d\n",count1,count2,count3);
printf("-----------------------------------------------------------------\n");
printf(" 比例\t");
printf("%10.31f\t%11.31f\t%11.31f\n",percent1,percent2,percent3);
printf("-----------------------------------------------------------------\n");
}
}
//学生信息的修改
void alter()
{
int i,k,flag;
char temp[10],temp1;
if(number==0)
{
printf("\t没有学生信息");
}
else
{
printfinformation();
do
{
printf("请输入你要修改信息的学生的姓名或学号:");
scanf("%s",temp);
for(i=0;i<number;i++)
{
if(strcmp(temp,person[i].name)==0||strcmp(temp,person[i].id)==0)
{
k=i;
flag=1;
break;
}
if(i==(number-1)&&(strcmp(temp,person[i].name)!=0)&&(strcmp(temp,person[i].id)!=0))
{
printf("不存在该学生\n");
flag=0;
}
}
if(flag==1)
{
printf("该学生的原信息如下:\n");
printf("-----------------------------------------------------------------\n");
printf(" 姓名 学号 主干课程1 主干课程2 主干课程3 专业课程1 专业课程2 总成绩\n");
printf("-------------------------------------------------------------------------------------\n");
printf("%7s%6s%10.01f%10.01f%10.01f%10.01f%8.01f\n",person[k].name,person[k].id,
person[k].Basic_Courses1,person[k].Basic_Courses2,person[k].Basic_Courses3,
person[k].Major_Courses1,person[k].Major_Courses2);
printf("-------------------------------------------------------------------------------------\n");
getch();
system("cls");
printf("\n请重新输入该学生的所有信息\n");
printf("请重新输入姓名:");
fflush(stdin);
scanf("%s",&person[k].name);
printf("请重新输入学号:");
fflush(stdin);
scanf("%s",&person[k].id);
printf("请重新输入学生的主干课程1、主干课程2、主干课程3、专业课程1、专业课程2:\n");
fflush(stdin);
scanf("%lf%lf%lf%lf%lf",&person[k].Basic_Courses1,&person[k].Basic_Courses2,&person[k].Basic_Courses3,
&person[k].Major_Courses1,&person[k].Major_Courses2);
sum_average();
}
printf("继续修改?Y/N: ");
fflush(stdin);
scanf("%c",&temp1);
}while(temp1=='y'||temp1=='Y');
printf("是否显示修改后全部学生的信息?Y/N:");
scanf("%c",&temp1);
if(temp1=='y'||temp1=='Y');
{
system("cls");
printfinformation();
}
reserve();
}
}
//学生信息的查找
void search()
{
int i,k,flag;
char temp[10],temp1;
//
if(number==0)
{
printf("\t没有学生信息");
}
else
{
do
{
printf("请输入你要查找的学生姓名或学号:");
scanf("%s",temp);
for(i=0;i<number;i++)
{
if(strcmp(temp,person[i].name)==0||strcmp(temp,person[i].id)==0)
{
k=i;
flag=1;
break;
}
if(i==(number-1)&&(strcmp(temp,person[i].name)!=0)&&(strcmp(temp,person[i].id)!=0))
{
printf("不存在该学生\n");
flag=0;
}
}
if(flag==1)
{
printf("该学生的信息如下:\n");
printf("-----------------------------------------------------------------\n");
printf(" 姓名 学号 主干课程1 主干课程2 主干课程3 专业课程1 专业课程2 总成绩\n");
printf("-------------------------------------------------------------------------------------\n");
printf("%7s%6s%10.01f%10.01f%10.01f%10.01f%8.01f\n",person[k].name,person[k].id,
person[k].Basic_Courses1,person[k].Basic_Courses2,person[k].Basic_Courses3,
person[k].Major_Courses1,person[k].Major_Courses2);
printf("-------------------------------------------------------------------------------------\n");
}
printf("\n继续查找?Y/N:");
scanf("%c",&temp1);
}while (temp1=='y'||temp1=='Y');
}
back();
}
//学生信息的删除
void del()
{
int i,k,flag;
char temp[10],temp1;
if(number==0)
{
printf("\t没有学生信息");
}
else
{
printfinformation();
do
{
printf("请输入要删除的学生信息的姓名或学号:");
scanf("%s",temp);
for(i=0;i<number;i++)
{
if(strcmp(temp,person[i].name)==0||strcmp(temp,person[i].id)==0)
{
k=i;
flag=1;
break;
}
if(i==(number-1)&&(strcmp(temp,person[i].name)!=0)&&(strcmp(temp,person[i].id)!=0))
{
printf("不存在该学生\n");
flag=0;
}
}
if((flag==1)&&(number==1))
{
number--;
temp2--;
printf("该学生信息已经成功删除\n\n");
}
if((flag==1)&&(number<=1))
{
printf("已经没有学生信息,请重新输入!\n\n");
}
if((flag==1)&&(number>1))
{
for(i=k;i<(number-1);i++)
{
strcpy(person[i].name,person[i+1].name);
strcpy(person[i].id,person[i+1].id);
person[i].Basic_Courses1=person[i+1].Basic_Courses1;
person[i].Basic_Courses2=person[i+1].Basic_Courses2;
person[i].Basic_Courses3=person[i+1].Basic_Courses3;
person[i].Major_Courses1=person[i+1].Basic_Courses1;
person[i].Major_Courses2=person[i+1].Basic_Courses2;
}
number--;
temp2--;
printf("该学生信息已经成功删除\n\n");
}
sum_average();//平均成绩,总成绩的重新求值
printf("是否继续删除?Y/N:");
scanf("%c",&temp1);
}while (temp1=='y'||temp1=='Y');//循环进行的条件
printf("是否显示删除操作后全部学生的信息?Y/N:");
scanf("%c",&temp1);
if(temp1=='y'||temp1=='Y')
{
sum_average();//删除后学生成绩信息的重新计算
printfinformation();//学生信息的打印
}
reserve();
}
back();
}
void save()
{
char temp;
printf("1、读取上次的记录:\n2、保存现在的记录:\n请选择:");
scanf("%c",&temp);
if(temp=='1')
{
printf("\n\t\t----------学生信息-----------\n");
printf("-----------------------------------------------------------------\n");
printf(" 姓名 学号 主干课程1 主干课程2 主干课程3 专业课程1 专业课程2 总成绩\n");
read();
back();
}
else
{
printf("\t程序已经保存\n");
back();
}
}
//返回主菜单
void back()
{
printf("\n\t\t输入任意键返回主菜单:");
getch();//提供任意键返回效果
system("cls");//清屏功能
menu();//打印主菜单
}