64,637
社区成员
发帖
与我相关
我的任务
分享
//#include "stdafx.h"
#include<iostream>
#include<fstream>
#include <vector>
#include<stdlib.h>
#include<string.h>
#include<stdio.h>
#include<iomanip>
using namespace std;
class Stu //构建学生类
{
public:
friend void Lookup(Stu stud[]) ; //成绩查询
friend void Average(Stu stud[]);
friend void Score(Stu stud[]);
friend void Output(Stu stud[]) ; //学生成绩信息全部输出
friend void Sort(Stu stud[]) ; //按总分从高到低排序
friend int Read(Stu stud[]); //从文本读入成绩
private:
/* int num[20];
char name[20];
float english[20];
float math[20];
float elec[20]; //计算机导论
float c_program[20];
float sport[20];
float average[20];
float score[20];//总分
*/
int num;
char name[20];
float english;
float math;
float elec; //计算机导论
float c_program;
float sport;
float average;
float score;//总分
}stud[100];
int Read(Stu stud[]) //从文件中读20个本科生的5门科目成绩信息
{
int i;
char str[255];
FILE *fpr,*fpw,*fpq;
if((fpr=fopen("read.txt","r"))==NULL)
{
printf("\n 文件打开错误!\n");
exit(0);
}
fgets(str,255,fpr);
for(i=0;i<20;i++)
//fscanf(fpr,"%d %s %f %f %f %f %f",&num[i],&name[i],&english[i],&math[20],&elsc[20],&c_program[20],&sport[20]);
fscanf(fpr,"%d %s %f %f %f %f %f",&stud[i].num,&stud[i].name,&stud[i].english,&stud[i].math,&stud[i].elec,&stud[i].c_program,&stud[i].sport);
fclose(fpr);
return 20;
}
//void average(Stu stud[]){
void Average(Stu stud[]){
int i;
for(i=0;i<20;i++)
stud[i].average=(stud[i].elec+stud[i].c_program+stud[i].english+stud[i].math+stud[i].sport)/5;
for(i=0;i<20;i++)
cout<<stud[i].num<<" "<<stud[i].name<<" 平均分为:"<<stud[i].average<<endl;
}
//viod score(Stu stud[]){
void Score(Stu stud[]){
int i;
for(i=0;i<20;i++)
stud[i].score=(stud[i].elec+stud[i].c_program+stud[i].english+stud[i].math+stud[i].sport);
for(i=0;i<20;i++)
cout<<stud[i].num<<" "<<stud[i].name<<" 总分为:"<<stud[i].score<<endl;
}
void Lookup(Stu stud[]) //---------------按学号查找学生成绩
{
//system("cls");
int n=Read(stud);
int s;
int i=0;
cout<<endl<<"====>> 查找学生成绩 <<===="<<endl;
cout<<"请输入需要查找学生的学号:"<<endl;
cin>>s;
while((stud[i].num-s)!=0&&i<n) i++; /*查找判断*/
if(i==n)
{
cout<<"=====>提示:对不起,无法找到该学生的信息!"<<endl; /*输入失败信息*/
}
else
{
cout<<"---------------------------"<<endl;
/*输出该学生信息*/
cout<<"学号:"<<stud[i].num<<endl;
cout<<"姓名:"<<stud[i].name<<endl;
cout<<"计算机导论:"<<stud[i].elec<<endl;
cout<<"C++程序设计:"<<stud[i].c_program<<endl;
cout<<"大学英语:"<<stud[i].english<<endl;
cout<<"高等数学:"<<stud[i].math<<endl;
cout<<"大学体育:"<<stud[i].sport<<endl;
}
}
void Sort(Stu stud[]) //---------------按平均分对学生成绩记录项进行降序排序
{
//system("cls"); /*运行前清屏*/
int i,j;
int k=0;
float a=0;
char n[19];
FILE *fpw;
if((fpw=fopen("write.txt","w"))==NULL)
{
printf("\n 文件打开错误!\n");
exit(0);
}
for(i=0;i<19;i++)
{
for(j=i+1;j<20;j++)
{
if(stud[i].score<stud[j].score)
{
a = stud[j].score;
stud[j].score = stud[i].score;
stud[i].score = a;
k = stud[i].num;
stud[i].num = stud[j].num;
stud[j].num = k;
strcpy(n,stud[i].name);
strcpy(stud[i].name,stud[j].name);
strcpy(stud[j].name,n);
}
}
}
cout<<"成绩由高到低排序为:"<<endl;
for(i=0;i<20;i++)
cout<<stud[i].num<<" "<<stud[i].name<<" "<<stud[i].score<<endl;
for(i=0;i<20;i++)
fprintf(fpw,"%d %s %5.1f\n",stud[i].num,stud[i].name,stud[i].score);
fclose(fpw);
}
void Output(Stu stud[]) //---------------显示全部学生成绩
{
//system("cls");
int n=Read(stud);
cout<<endl<<"====>> 显示全部学生成绩 <<===="<<endl;
if(!stud)
cout<<"没有记录";
else
{
cout<<"----------------------------------------------------"<<endl; /*格式头*/
cout<<setw(6)<<"学号"<<setw(6)<<"姓名"<<setw(6)<<"计算机导论"<<setw(6)<<"C++"<<setw(6)<<"大学英语"<<setw(6)<<"高等数学"<<setw(6)<<"大学体育"<<" "<<setw(6)<<"平均分"<<endl;
cout<<"------------------------------------------------"<<endl;
for(int i=0;i<n;i++) /*循环输入*/
{
cout<<setw(6)<<stud[i].num<<setw(6)<<stud[i].name<<setw(6)<<stud[i].elec<<setw(6)<<stud[i].c_program<<setw(6)<<stud[i].english<<setw(6)<< stud[i].math<<setw(6)<<stud[i].sport<<" "<<setw(6)<<setprecision(4)<<stud[i].average<<endl;
}
cout<<"--------------------------------------------------------"<<endl;
}
}
int menu() /*菜单函数*/
{
char c;
do
{
//system("cls");
cout<<"*************************************************************\n"<<endl;
cout<<" -----------------<<欢迎您使用xuan.0学生成绩管理系统--------------\n"<<endl;
cout<<" *******************************************\n\n"<<endl;/*菜单选择*/
cout<<" * 【1】从文本读入学生成绩 * "<<endl;
cout<<" * 【2】计算显示学生平均分 * "<<endl;
cout<<" * 【3】计算显示学生总分 * "<<endl;
cout<<" * 【4】查询学生成绩 * "<<endl;
cout<<" * 【5】排序并写入文本 * "<<endl;
cout<<" * 【6】显示全部学生成绩 * "<<endl;
cout<<"***************************************************************"<<endl;
cout<<"请你选择操作(0-6):"<<endl;
c=getchar(); /*读入选择*/
}
while(c<'0'||c>'6');
return(c-'0'); /*返回选择*/
}
void main() /*主函数*/
{
for(;;)
{
switch(menu()) /*选择判断*/
{
case 1:
Read(stud);/*从文本读入学生成绩*/
break;
case 2:
Average(stud); /*计算显示学生平均分*/
break;
case 3:
Score(stud); /*计算显示学生总分*/
cout<<"\t\t\t";
break;
case 4:
Lookup(stud); /*查询学生成绩*/
cout<<"\t\t\t";
system("pause");
break;
case 5:
Sort(stud); /*排序并写入文本*/
cout<<"\t\t\t";
// system("pause");
break;
case 6:
Output(stud);/*显示全部学生成绩*/
cout<<"\t\t\t";
// system("pause");
break;
case 0:
cout<<endl<<" ================================<<感谢您xuan.0学生成绩管理系统>>===============================\n"<<endl; /*结束程序*/
cout<<"\t\t\t";
system("pause");
exit(0);
}
}
}