// stu.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include<iomanip>
#include<fstream>
using namespace std;
#define M 4
#define N 26
struct Subject
{
string sub_name;
int score;
}Sub[M];
struct Student
{
char name[20],number[13];
Subject subjiect[M];
double average;
int total;
}Stu[N];
void readFile() //读文件并赋值;
{
ifstream myFile("E:\\study\\student\\stu\\stu\\stu_in.txt",ios_base::in);
char line[1000];
int idx=0;
while(myFile.getline(line,1000))
{
char number[13],name[20];
int s1,s2,s3,s4;
sscanf(line,"%s\t%s",&number,&name);
strcpy(Stu[idx].number,number);
strcpy(Stu[idx].name,name);
printf("%s\t%s\t",Stu[idx].number,Stu[idx].name);
idx++;
}
myFile.close();
}
int *Random(int X,int Y,const int cct) //产生一个X~Y的随机数 ;
{
srand((unsigned)time(NULL)); /*随机种子srand((unsigned)time(0)); */
int *n = (int *)malloc(cct*sizeof(int));
for(int i=0;i<cct;i++)
{
*(n+i)=rand()%(Y-X+1)+X; /*n为X~Y之间的随机数;*/
}
return n;
}
void getScore()
{
for(int i=0;i<M;i++) //随机生成分数(45-100);
{
int *score=Random(45,100,N);
for(int j=0;j<N;j++)
{
Stu[j].subjiect[i].score=score[j];
}
free(score);
}
for(int k=0;k<N;k++)
{
int *total=0;
for(int m=0;m<M;m++)
{
total[k]+=Stu[k].subjiect[m].score;
}
Stu[k].average=total[k]/(M*1.0);
Stu[k].total=total[k];
}
}
void taxis() //按平均分排序并文件输出;
{
for(int i=0;i<=N;i++)
{
for(int j=i+1;j<=N-1;j++)
{
Student Sa=Stu[i];
Student Sb=Stu[j];
double a=Stu[i].average;
double b=Stu[j].average;
if(a<b)
{
Stu[i]=Sb;
Stu[j]=Sa;
}
}
}
ofstream myFile("E:\\study\\student\\stu\\stu\\stu_out.txt",ios_base::out);
for(int i=0;i<N;i++)
{
myFile<<Stu[i].number<<"\t"<<Stu[i].name<<Stu[i].number<<"\t"Stu[i].subjiect[0].score<<"\t"Stu[i].subjiect[1].score<<"\t";
myFile<<Stu[i].subjiect[2].score<<"\t"<<Stu[i].subjiect[3].score<<Stu[i].average<<Stu[i].total<<endl;
}
myFile.close();
}
void query1(char str[20])
{
for(int i=0;i<N;i++)
{
if(str==Stu[i].name)//乱写的 ;
{
cout<<Stu[i]<<endl;
}
}
}
int _tmain(int argc, _TCHAR* argv[])
{
readFile();
getScore();
taxis();
int char* str;
cout<<"请输入需要查询表达式类型(姓名,学号,分数):"; // fdrg;
cin>>str;
return 0;
}