中易网

编写一个学生成绩管理的程序,从文件导入学生数据,然后进行以下的功

答案:1  悬赏:0  
解决时间 2021-02-18 03:42
编写一个学生成绩管理的程序,从文件导入学生数据,然后进行以下的功能实现。程序要求主函数是一个功能选择菜单,其它各功能都用各自的函数实现;数据信息用文件保存。
要求至少有20个学生的原始数据。原始数据如下:
学号 姓名 C程序设计 高等数学 英语 线性代数
1 王.. 80 80 80 80
2 张.. 90 90 90 90

功能要求如下:
1、数据的输入
2、计算每位同学的平均分
3、计算每门课程的平均分
4、计算各分数段(90-100、80-89、60-79、60以下)的人数
5、对这10位同学的成绩按平均分排序,给出名次。
6、对数据可以进行增、删、改的编辑操作。
7、对数据可进行查询操作。
8、最后输出结果如下:
学号 姓名 C程序设计 高等数学 英语 线性代数 平均分 名次
1 王.. 80 80 80 80 80 2
2 张.. 90 90 90 90 90 1

各科平均分 85 85 85 85 85
90-100 1 1 1 1 1
80-89 1 1 1 1 1
60-69 0 0 0 0 0
60以下 0 0 0 0 0
注意:输入的数据要以文件的形式长期保存。
最佳答案
这个要求比较多,我先给你个我以前写的,只有一部分的功能,你参考下吧
运行界面如下:

//2.C++学生成绩管理系统
#include <iostream>
#include <string>
#include <fstream>
using namespace std;

#define F "e:\\a.txt"
#define N 5



void caidan(); //菜单函数
void sum(); //(1)各门课程的总分﹑平均分
void find_name(); //(2)按姓名寻找记录并显示
void find_num(); //(3)按学号寻找记录并显示
void total_data(); //(4)查询全部学生成绩
void rank_display();//(5)按总分由高到低显示学生信息

typedef struct student
{
char name[10];
int num;
int chinese;
int math;
int english;
}S;

S s[10];

int main(void)
{
caidan();
return 0;
}

void caidan()
{
cout<<"\t\t\t"<<"《学生成绩管理系统》"<<endl;
cout<<"(1)各门课程的总分﹑平均分"<<endl;
cout<<"(2)按姓名寻找记录并显示"<<endl;
cout<<"(3)按学号寻找记录并显示"<<endl;
cout<<"(4)查询全部学生成绩"<<endl;
cout<<"(5)按总分由高到低显示学生信息"<<endl;
cout<<"(6)退出"<<endl;

while(1)
{
int i;
cout<<"请选择功能"<<endl;
cin>>i;
switch(i)
{
case 1: sum(); break;
case 2: find_name(); break;
case 3: find_num(); break;
case 4: total_data(); break;
case 5: rank_display(); break;
case 6: break;
default:cout<<"error"<<endl;break;
}
if(i==6)
{cout<<"退出"<<endl;break;}
}
}

//(1)各门课程的总分﹑平均分
void sum()
{
cout<<endl;
cout<<"各门课程的总分﹑平均分:"<<endl<<endl;

int i;
int sum_c=0,ave_c;
int sum_m=0,ave_m;
int sum_e=0,ave_e;
ifstream infile("e:\\a.txt");
cout<<"姓名"<<"\t"<<"学号"<<"\t"<<"语文成绩"<<"\t"<<"数学成绩"<<"\t"<<"英语成绩"<<endl;
for(i=0;i<N;i++)
{
infile>>s[i].name>>s[i].num>>s[i].chinese>>s[i].math>>s[i].english;
cout<<s[i].name<<"\t"<<s[i].num<<"\t"<<s[i].chinese<<"\t\t"<<s[i].math<<"\t\t"<<s[i].english<<endl;
sum_c += s[i].chinese; ave_c=sum_c/3;
sum_m += s[i].math; ave_m=sum_m/3;
sum_e += s[i].english; ave_e=sum_e/3;
}

cout<<"总分"<<"\t\t"<<"语文总分"<<"\t"<<"数学总分"<<"\t"<<"英语总分"<<endl;
cout<<"\t\t"<<sum_c<<"\t\t"<<sum_m<<"\t\t"<<sum_e<<endl;

cout<<"平均分"<<"\t\t"<<"语文平均分"<<"\t"<<"数学平均分"<<"\t"<<"英语平均分"<<endl;
cout<<"\t\t"<<ave_c<<"\t\t"<<ave_m<<"\t\t"<<ave_e<<endl;
infile.close();
}
//(2)按姓名寻找记录并显示
void find_name()
{
cout<<endl;
cout<<"按姓名寻找记录并显示:"<<endl<<endl;

int i;
char a[20];
cout<<"请输入学生姓名"<<endl;
cin>>a;

ifstream infile(F);

for(i=0;i<N;i++)
{

infile>>s[i].name>>s[i].num>>s[i].chinese>>s[i].math>>s[i].english;

if(strcmp(a,s[i].name)==0)
{
cout<<"该学生信息如下:"<<endl;
cout<<"姓名"<<"\t"<<"学号"<<"\t"<<"语文成绩"<<"\t"<<"数学成绩"<<"\t"<<"英语成绩"<<endl;
cout<<s[i].name<<"\t"<<s[i].num<<"\t"<<s[i].chinese<<"\t\t"<<s[i].math<<"\t\t"<<s[i].english<<endl;
break;
}

}

infile.close();
}

//(3)按学号寻找记录并显示
void find_num()
{
cout<<endl;
cout<<"按学号寻找记录并显示:"<<endl<<endl;

int i;
int a;
cout<<"请输入学生学号"<<endl;
cin>>a;

int b;

ifstream infile(F);

for(i=0;i<N;i++)
{

infile>>s[i].name>>s[i].num>>s[i].chinese>>s[i].math>>s[i].english;
b=s[i].num;

if(a==b)
{
cout<<"该学生信息如下:"<<endl;
cout<<"姓名"<<"\t"<<"学号"<<"\t"<<"语文成绩"<<"\t"<<"数学成绩"<<"\t"<<"英语成绩"<<endl;
cout<<s[i].name<<"\t"<<s[i].num<<"\t"<<s[i].chinese<<"\t\t"<<s[i].math<<"\t\t"<<s[i].english<<endl;
break;
}

}

infile.close();
}

//(4)查询全部学生成绩
void total_data()
{
cout<<endl;
cout<<"查询全部学生成绩:"<<endl<<endl;

int i;
ifstream infile(F);
cout<<"全部学生成绩如下:"<<endl;
cout<<"姓名"<<"\t"<<"学号"<<"\t"<<"语文成绩"<<"\t"<<"数学成绩"<<"\t"<<"英语成绩"<<endl;
for(i=0;i<N;i++)
{
infile>>s[i].name>>s[i].num>>s[i].chinese>>s[i].math>>s[i].english;
cout<<s[i].name<<"\t"<<s[i].num<<"\t"<<s[i].chinese<<"\t\t"<<s[i].math<<"\t\t"<<s[i].english<<endl;
}
infile.close();
}

//(5)按总分由高到低显示学生信息
void rank_display()
{
cout<<endl;
cout<<"按总分由高到低显示学生信息:"<<endl<<endl;

int i,j,k;
int temp;

char tem[20];

int sum[20];
ifstream infile(F);
//cout<<"姓名"<<"\t"<<"学号"<<"\t"<<"语文成绩"<<"\t"<<"数学成绩"<<"\t"<<"英语成绩"<<"\t"<<"总分"<<endl;
for(i=0;i<N;i++)
{
infile>>s[i].name>>s[i].num>>s[i].chinese>>s[i].math>>s[i].english;
sum[i]=s[i].chinese + s[i].math + s[i].english;
//cout<<s[i].name<<"\t"<<s[i].num<<"\t"<<s[i].chinese<<"\t\t"<<s[i].math<<"\t\t"<<s[i].english<<"\t\t"<<sum[i]<<endl;

for(k=0;k<N-1;k++)
for(j=k+1;j<N;j++)
{
if(sum[k]<sum[j])
{

temp=sum[k];
sum[k]=sum[j];
sum[j]=temp;

temp=s[k].num;
s[k].num=s[j].num;
s[j].num=temp;

temp=s[k].chinese;
s[k].chinese=s[j].chinese;
s[j].chinese=temp;

temp=s[k].math;
s[k].math=s[j].math;
s[j].math=temp;

temp=s[k].english;
s[k].english=s[j].english;
s[j].english=temp;

strcpy(tem,s[k].name);
strcpy(s[k].name,s[j].name);
strcpy(s[j].name,tem);
}
}

}

cout<<"排序"<<endl;

cout<<"姓名"<<"\t"<<"学号"<<"\t"<<"语文成绩"<<"\t"<<"数学成绩"<<"\t"<<"英语成绩"<<"\t"<<"总分"<<endl;
for(i=0;i<N;i++)
{
cout<<s[i].name<<"\t"<<s[i].num<<"\t"<<s[i].chinese<<"\t\t"<<s[i].math<<"\t\t"<<s[i].english<<"\t\t"<<sum[i]<<endl;
}

infile.close();
}
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
等一个人咖啡这个地址在什么地方,我要处理点
足球历史上有哪些非常适合巴萨传控体系却没有
我的UG为什么反应很迟钝,显示简单的东西都 很
中国移动马场镇便民指定专营店怎么去啊,有知
{ char c; int n=100; float f=10; double x;
蝴蝶是蚕蛹变的,还是毛毛虫变的?
好味齐沿海美食星湖店我想知道这个在什么地方
Glycogen 核酸助沉剂 什么公司的产品最好?
选择题。会计利润是( ) 1反映企业的盈亏状
请问瓶上写 GRANDS VINS DU MEDOC MIS EN BOU
三星s4有没有屏蔽按键功能
宝贝乐购在什么地方啊,我要过去处理事情
李师振兴粮油蔬菜干鲜店这个地址在什么地方,
作文勇敢的另一面
这是什么果树苗
推荐资讯
技嘉b85-hd3-a 主板 多少钱
笛子十大名曲有哪些?
陈涛创业园在哪里啊,我有事要去这个地方
北师版四年级语文下公开课上哪一课
怎样能让二胡的声音在好一点 有小窍门吗?
1984年的5元钱国库券值价多少钱
学兰副食地址有知道的么?有点事想过去
春和茶庄在什么地方啊,我要过去处理事情
鑫恒旺灯饰水暖地址有知道的么?有点事想过去
小羊和大牛与狼的故事作文
炝炒南瓜尖的家常做法大全怎么做好
请问从深圳东晚上19:42做K1092次火车到湖北
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?