student

上一篇 / 下一篇  2014-08-07 18:18:34 / 个人分类:mark

// 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;
}

TAG:

 

评分:0

我来说两句

我的栏目

日历

« 2024-05-01  
   1234
567891011
12131415161718
19202122232425
262728293031 

数据统计

  • 访问量: 3270
  • 日志数: 3
  • 文件数: 4
  • 建立时间: 2012-05-01
  • 更新时间: 2014-09-01

RSS订阅

Open Toolbar