编写一个学生成绩管理的程序,从文件导入学生数据,然后进行以下的功能实现。程序要求主函数是一个功能选择菜单,其它各功能都用各自的函数实现;数据信息用文件保存。
要求至少有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
注意:输入的数据要以文件的形式长期保存。
编写一个学生成绩管理的程序,从文件导入学生数据,然后进行以下的功
答案:1 悬赏:0
解决时间 2021-02-18 03:42
- 提问者网友:冥界祭月
- 2021-02-17 09:37
最佳答案
- 二级知识专家网友:陪衬角色
- 2021-02-17 09:54
这个要求比较多,我先给你个我以前写的,只有一部分的功能,你参考下吧
运行界面如下:
//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();
}
运行界面如下:
//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();
}
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯