// ConsoleApplication1.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include
#include
#include
#include
using namespace std;
// 学生信息结构体
struct STUINFO
{
// 学号、名字、班级
char NUM[10], NAME[10], CLASS[10];
// 三门成绩
int CHINESE, MATH, ENGLISH,AVERAGE;
};
class Array
{
public:
char Num[10], Class[10], Name[10];
int Grade[10];
} number;
int num = 170000;
// 学生的姓
char LastName[] =
{
'赵', '钱', '孙', '李', '周', '吴', '郑', '王',
'冯', '陈', '褚', '卫', '蒋', '沈', '韩', '杨',
'朱', '秦', '尤', '许', '何', '吕', '施', '张',
};
// 学生的名
char FirstName[] =
{
'一', '年', '四', '季', '最', '喜', '欢', '春',
'天', '也', '许', '与', '生', '俱', '来', '就',
'是', '浪', '漫', '的', '人', '当', '想', '着',
'要', '与', '中', '天', '融', '为', '体', '所',
'以', '到', '异', '常', '兴', '奋', '让', '传',
'染', '给', '我', '点', '明', '丽', '勃', '彩',
'赶', '走', '心', '雅', '积', '了', '久', '最',
'春', '郑', '重', '其', '事', '的', '把', '自',
'己', '打', '扮', '美', '得', '姿', '态', '迎',
'接', '好', '到', '来', '五', '彩', '斑', '斓',
'纯', '静', '雅', '亮', '夺', '目', '绚', '透',
'露', '出', '勃', '机', '空', '蓝', '整', '世',
};
// 定义函数获取学生相关信息
class Array createStuIfo();
int main()
{
int average[120], m, n, t;
// 将“学生的名”中重合的字换成空格,以生成两个字的姓名
for (int i = 0; i <= 96; i++)
for (int j = 0; j <= 96; j++)
{
if (FirstName[i] == FirstName[j])
FirstName[j] = (char)'\0';
}
cout << "学生信息按一下顺序打印:\n"
<< "序号、学号、班级、姓名、语文成绩、数学成绩、英语成绩、平均成绩\n";
for (m = 0; m < 100; m++)
{
ofstream output;
output.open("stuinformation.txt");
if (output.fail()) {
cout << "Create file failed!" << endl;
exit(1);
}
createStuIfo();
output << number.Num << " " << number.Class << " " << number.Name << " "
<< number.Grade[0] << " " << number.Grade[1] << " " << number.Grade[2] << endl;
output.close();
STUINFO stut;
ifstream input;
input.open("stuinformation.txt");
if (input.fail())
{
cout << "Open file failed!" << endl;
exit(1);
}
input >> stut.NUM >> stut.CLASS >> stut.NAME
>> stut.CHINESE >> stut.MATH >> stut.ENGLISH; // 从文件输入语、数、外三门成绩
stut.AVERAGE = (stut.CHINESE + stut.MATH + stut.ENGLISH) / 3;
average[m] = stut.AVERAGE;
input.close();
t = m;
for (n = m + 1; n < 100; n++)
{
int change = 0;
if (average[m] < average[n])
{
change = average[m];
average[m] = average[n];
average[n] = change;
t = n;
}
}
cout << "number(" << m << ")" << ": " << stut.NUM << " "
<< stut.CLASS << " " << stut.NAME << " "
<< stut.CHINESE << " " << stut.MATH << " "
<< stut.ENGLISH << " " << average << endl;
}
return 0;
}
class Array createStuIfo()
{
// 生成学生学号和班级
num++;
sprintf(number.Num, "%d", num);
number.Class[0] = '0';
number.Class[1] = rand() % 5;// 假定只有四个班集
number.Num[3] = number.Class[1];
// 随机产生学生姓名
int x, y, z;
srand(time(NULL));
x = rand() % 25;
y = rand() % 97;
z = rand() % 97;
number.Name[0] = LastName[x];
number.Name[1] = FirstName[y];
number.Name[2] = FirstName[z];
// 随机产生三门成绩
srand(time(NULL));
number.Grade[0] = rand() % 101;
number.Grade[1] = rand() % 101;
number.Grade[2] = rand() % 101;
return number;
}