📄 【1.2】.cpp
字号:
#include<iostream.h>
#include<fstream.h> //包含输入输出流的头文件
#include<stdlib.h> //包含清屏函数和exit()的头文件
#include<conio.h> //包含getch()的头文件
#include<string.h> //包含的字符串操作函数的头文件
#include<iomanip.h>
typedef struct{
char num[6];
int english;
int math;
int pe;
int politics;
}stu; //学生结构的定义,包含学号,英语成绩,数学建模成绩,体育成绩,政治成绩
typedef struct{
stu a[14];
}list;
ifstream Input("mydata.txt");
ofstream Output("AnalysisMydata.txt");
void login()
{
cout<<"功能选择:"<<endl
<<"1.查询各科的平均成绩和方差:"<<endl
<<"2.各科的最高分和最低分:"<<endl
<<"3.计算每个学生的加权平均分:"<<endl
<<"4.显示成绩分析并输入:"<<endl
<<"5.退出"<<endl
<<"请输入您想要的操作:"<<endl;
}
void input(list *A)
{
char a1[5],a2[5],a3[5],a4[5];
char b1[3],b2[3],b3[3],b4[3];
char a[7];
for(int i=0;i<14;i++)
{
Input>>a>>a1>>a2>>a3>>a4;
b1[0]=a1[0];b1[1]=a1[1];b1[2]='\0';
b2[0]=a2[0];b2[1]=a2[1];b2[2]='\0';
b3[0]=a3[0];b3[1]=a3[1];b3[2]='\0';
b4[0]=a4[0];b4[1]=a4[1];b4[2]='\0';
strcpy(A->a[i].num,a);
A->a[i].english=atoi(b1);
A->a[i].math=atoi(b2);
A->a[i].pe=atoi(b3);
A->a[i].politics=atoi(b4);
}
}
void function1(list *A)
{
float e,m,pe,po,m1=0,m2=0,m3=0,m4=0;//m是临时变量
for(int i=0;i<14;i++)
{
m1+=A->a[i].english;
m2+=A->a[i].math;
m3+=A->a[i].pe;
m4+=A->a[i].politics;
}
e=m1/14;
m=m2/14;
pe=m3/14;
po=m4/14;
cout<<"各科平均成绩为:"<<endl
<<"英语:"<<setprecision(4)<<e<<endl
<<"数学:"<<setprecision(4)<<m<<endl
<<"体育:"<<setprecision(4)<<pe<<endl
<<"政治:"<<setprecision(4)<<po<<endl;
Output<<"各科平均成绩为:"<<endl
<<"英语:"<<setprecision(4)<<e<<endl
<<"数学:"<<setprecision(4)<<m<<endl
<<"体育:"<<setprecision(4)<<pe<<endl
<<"政治:"<<setprecision(4)<<po<<endl;
for(i=0;i<14;i++)
{
m1+=(A->a[i].english-e)*(A->a[i].english-e);
m2+=(A->a[i].math-m)*(A->a[i].math-m);
m3+=(A->a[i].pe-pe)*(A->a[i].pe-pe);
m4+=(A->a[i].politics-po)*(A->a[i].politics-po);
}
e=m1/14;
m=m2/14;
pe=m3/14;
po=m4/14;
cout<<"各科成绩方差为:"<<endl
<<"英语:"<<setprecision(4)<<e<<endl
<<"数学:"<<setprecision(4)<<m<<endl
<<"体育:"<<setprecision(4)<<pe<<endl
<<"政治:"<<setprecision(4)<<po<<endl;
Output<<"各科成绩方差为:"<<endl
<<"英语:"<<setprecision(4)<<e<<endl
<<"数学:"<<setprecision(4)<<m<<endl
<<"体育:"<<setprecision(4)<<pe<<endl
<<"政治:"<<setprecision(4)<<po<<endl;
getch();
}
void function2(list *A)
{
int t1max=0,t1min=100,t2max=0,t2min=100,t3max=0,t3min=100,t4max=0,t4min=100;
for(int i=0;i<14;i++)
{
if(t1max<=A->a[i].english)
{
t1max=A->a[i].english;
}
if(t2max<=A->a[i].math)
{
t2max=A->a[i].math;
}
if(t3max<=A->a[i].pe)
{
t3max=A->a[i].pe;
}
if(t4max<=A->a[i].politics)
{
t4max=A->a[i].politics;
}
if(t1min>=A->a[i].english)
{
t1min=A->a[i].english;
}
if(t2min>=A->a[i].math)
{
t2min=A->a[i].math;
}
if(t3min>=A->a[i].pe)
{
t3min=A->a[i].pe;
}
if(t4min>=A->a[i].politics)
{
t4min=A->a[i].politics;
}
}
cout<<"英语的最高分为:"<<t1max<<" "<<"最低分为:"<<t1min<<endl
<<"数学建模的最高分为:"<<t2max<<" "<<"最低分为:"<<t2min<<endl
<<"体育的最高分为:"<<t3max<<" "<<"最低分为:"<<t3min<<endl
<<"政治的最高分为:"<<t4max<<" "<<"最低分为:"<<t4min<<endl;
Output<<"英语的最高分为:"<<t1max<<" "<<"最低分为:"<<t1min<<endl
<<"数学建模的最高分为:"<<t2max<<" "<<"最低分为:"<<t2min<<endl
<<"体育的最高分为:"<<t3max<<" "<<"最低分为:"<<t3min<<endl
<<"政治的最高分为:"<<t4max<<" "<<"最低分为:"<<t4min<<endl;
getch();
}
void function3(list *A)
{
for(int i=0;i<14;i++)
{
cout<<"学生"<<A->a[i].num<<"的加权平均成绩为:"<<((A->a[i].english*5)+(A->a[i].math*3)+(A->a[i].pe*2)+(A->a[i].politics*4))/14<<endl;
Output<<"学生"<<A->a[i].num<<"的加权平均成绩为:"<<((A->a[i].english*5)+(A->a[i].math*3)+(A->a[i].pe*2)+(A->a[i].politics*4))/14<<endl;
}
getch();
}
void function4()
{
}
void main()
{
list stu_list;
list* STU_LIST;
STU_LIST=&stu_list;
input(STU_LIST);
char x;
while(1)
{
system("cls");
login();
cin>>x;
switch(x)
{
case '1':function1(STU_LIST);break;
case '2':function2(STU_LIST);break;
case '3':function3(STU_LIST);break;
case '4':function1(STU_LIST);function2(STU_LIST);function3(STU_LIST);break;
case '5': exit(0);
default:{
cout<<"你的输入有错,请重新输入!"<<endl;
getch();
}
}//switch
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -