|
|
|
@ -0,0 +1,533 @@
|
|
|
|
|
//学生信息管理系统大项目
|
|
|
|
|
//组长杨振宇 组员刘宸雨
|
|
|
|
|
//任务分配 杨振宇:18-28行函数 刘宸雨:31-36行函数
|
|
|
|
|
#include<iostream>
|
|
|
|
|
#include<cmath>
|
|
|
|
|
#include<string.h>
|
|
|
|
|
#include<fstream>
|
|
|
|
|
using namespace std;
|
|
|
|
|
struct STUDENT {
|
|
|
|
|
int cla;
|
|
|
|
|
int num;
|
|
|
|
|
char sex[5];
|
|
|
|
|
char name[20];
|
|
|
|
|
int score;
|
|
|
|
|
}s[100];
|
|
|
|
|
int N{ 0 };//已存学生数量
|
|
|
|
|
//以下函数由杨振宇所写
|
|
|
|
|
void list();//显示学生信息函数
|
|
|
|
|
void list1();//菜单4函数,包含list函数,额外有返回菜单功能与退出功能;
|
|
|
|
|
void add();//添加学生信息函数
|
|
|
|
|
void menu();//菜单汉书
|
|
|
|
|
void quit();//退出程序函数
|
|
|
|
|
void dele();//删除学生信息函数
|
|
|
|
|
void rev();//修改学生信息函数
|
|
|
|
|
void inq();//查询学生信息函数
|
|
|
|
|
void ana();//学生数据分析函数
|
|
|
|
|
void readFile();//读取文件函数
|
|
|
|
|
void writeFile();//保存文件函数
|
|
|
|
|
//以下是学生数据分析函数
|
|
|
|
|
//以下函数由刘宸雨所写
|
|
|
|
|
int score_min();//成绩最小值
|
|
|
|
|
int score_max();//成绩最大值
|
|
|
|
|
double aver();//成绩平均数
|
|
|
|
|
void search(int a, int b);//成绩范围检索
|
|
|
|
|
double variance();//成绩方差
|
|
|
|
|
void seqence();//成绩排名
|
|
|
|
|
|
|
|
|
|
//本程序中seq为每一时刻使用者输入的数字指令,无固定含义
|
|
|
|
|
int main() {
|
|
|
|
|
menu();
|
|
|
|
|
return 0;
|
|
|
|
|
}//主函数
|
|
|
|
|
void ana() {
|
|
|
|
|
int seq;
|
|
|
|
|
cout << "\n\n请选择你的分析对象(1.年级 2.班级):";
|
|
|
|
|
cout << "请输入你的选择前的序号(1|2):";
|
|
|
|
|
cin >> seq;
|
|
|
|
|
while (seq != 1 && seq != 2) {
|
|
|
|
|
cout << "输入错误,请重新输入:";
|
|
|
|
|
cin >> seq;
|
|
|
|
|
}
|
|
|
|
|
if (seq == 1) {
|
|
|
|
|
cout << "\t\t|-------------------------------------------------------|\n";
|
|
|
|
|
cout << "\t\t| 1. 最低分查询 |\n";
|
|
|
|
|
cout << "\t\t|-------------------------------------------------------|\n";
|
|
|
|
|
cout << "\t\t| 2. 最高分查询 |\n";
|
|
|
|
|
cout << "\t\t|-------------------------------------------------------|\n";
|
|
|
|
|
cout << "\t\t| 3. 平均分计算 |\n";
|
|
|
|
|
cout << "\t\t|-------------------------------------------------------|\n";
|
|
|
|
|
cout << "\t\t| 4. 成绩范围学生检索 |\n";
|
|
|
|
|
cout << "\t\t|-------------------------------------------------------|\n";
|
|
|
|
|
cout << "\t\t| 5. 方差计算及成绩分析 |\n";
|
|
|
|
|
cout << "\t\t|-------------------------------------------------------|\n";
|
|
|
|
|
cout << "\t\t| 6. 学生成绩排序 |\n";
|
|
|
|
|
cout << "\t\t|-------------------------------------------------------|\n";
|
|
|
|
|
|
|
|
|
|
cout << "\n\n请选择你的需求(输入操作前的序号1-6):";
|
|
|
|
|
|
|
|
|
|
cin >> seq;
|
|
|
|
|
while (seq != 1 && seq != 2 && seq != 3 && seq != 4 && seq != 5 && seq != 6) {
|
|
|
|
|
cout << "输入错误,请重新输入:";
|
|
|
|
|
cin >> seq;
|
|
|
|
|
}
|
|
|
|
|
switch (seq) {
|
|
|
|
|
case 1:
|
|
|
|
|
cout << '\n\t' << "该年级最低分学生信息为:" << '\n';
|
|
|
|
|
cout << "\t\t序号\t班级\t学号\t姓名\t 性别\t成绩\n";
|
|
|
|
|
cout << "\t\t----------------------------------------------------------\n";
|
|
|
|
|
cout << "\t\t" << score_min() << ".\t" << s[score_min()].cla << "\t" << s[score_min()].num << "\t" << s[score_min()].name << "\t " << s[score_min()].sex << "\t" << s[score_min()].score << "\n";
|
|
|
|
|
cout << "\t\t----------------------------------------------------------\n";
|
|
|
|
|
cout << "\n\n";
|
|
|
|
|
break;
|
|
|
|
|
case 2:
|
|
|
|
|
cout << '\n\t' << "该年级最高分学生信息为:" << '\n';
|
|
|
|
|
cout << "\t\t序号\t班级\t学号\t姓名\t 性别\t成绩\n";
|
|
|
|
|
cout << "\t\t----------------------------------------------------------\n";
|
|
|
|
|
cout << "\t\t" << score_max() << ".\t" << s[score_max()].cla << "\t" << s[score_max()].num << "\t" << s[score_max()].name << "\t " << s[score_max()].sex << "\t" << s[score_max()].score << "\n";
|
|
|
|
|
cout << "\t\t----------------------------------------------------------\n";
|
|
|
|
|
cout << "\n\n";
|
|
|
|
|
break;
|
|
|
|
|
case 3:
|
|
|
|
|
cout << '\n\t' << "该年级平均分是:" << aver() << '\n';
|
|
|
|
|
break;
|
|
|
|
|
case 4:
|
|
|
|
|
cout << "请选择您的检索范围:\n" << "从:";
|
|
|
|
|
int a, b;
|
|
|
|
|
cin >> a;
|
|
|
|
|
cout << "到:";
|
|
|
|
|
cin >> b;
|
|
|
|
|
search(a, b);
|
|
|
|
|
break;
|
|
|
|
|
case 5:
|
|
|
|
|
cout << "\n该年级成绩方差为:" << variance() << '\n';
|
|
|
|
|
break;
|
|
|
|
|
case 6:
|
|
|
|
|
seqence();
|
|
|
|
|
cout << "\n已将该年级学生的成绩进行排序,排序后的学生名册如下:\n";
|
|
|
|
|
list();
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
cout << "\t\t|-------------------------------------------------------|\n";
|
|
|
|
|
cout << "\t\t| 1. 最低分查询 |\n";
|
|
|
|
|
cout << "\t\t|-------------------------------------------------------|\n";
|
|
|
|
|
cout << "\t\t| 2. 最高分查询 |\n";
|
|
|
|
|
cout << "\t\t|-------------------------------------------------------|\n";
|
|
|
|
|
cout << "\t\t| 3. 平均分计算 |\n";
|
|
|
|
|
cout << "\t\t|-------------------------------------------------------|\n";
|
|
|
|
|
cout << "\t\t| 4. 成绩范围学生检索 |\n";
|
|
|
|
|
cout << "\t\t|-------------------------------------------------------|\n";
|
|
|
|
|
cout << "\t\t| 5. 方差计算及成绩分析 |\n";
|
|
|
|
|
cout << "\t\t|-------------------------------------------------------|\n";
|
|
|
|
|
cout << "\t\t| 6. 学生成绩排序 |\n";
|
|
|
|
|
cout << "\t\t|-------------------------------------------------------|\n";
|
|
|
|
|
|
|
|
|
|
cout << "\n\n请选择你的需求(输入操作前的序号1-6):";
|
|
|
|
|
|
|
|
|
|
cin >> seq;
|
|
|
|
|
while (seq != 1 && seq != 2 && seq != 3 && seq != 4 && seq != 5 && seq != 6) {
|
|
|
|
|
cout << "输入错误,请重新输入:";
|
|
|
|
|
cin >> seq;
|
|
|
|
|
}
|
|
|
|
|
switch (seq) {
|
|
|
|
|
case 1:
|
|
|
|
|
cout << '\n\t' << "该年级最高分学生信息为:" << '\n';
|
|
|
|
|
cout << "\t\t序号\t班级\t学号\t姓名\t 性别\t成绩\n";
|
|
|
|
|
cout << "\t\t----------------------------------------------------------\n";
|
|
|
|
|
cout << "\t\t" << score_max() << ".\t" << s[score_max()].cla << "\t" << s[score_max()].num << "\t" << s[score_max()].name << "\t " << s[score_max()].sex << "\t" << s[score_max()].score << "\n";
|
|
|
|
|
cout << "\t\t----------------------------------------------------------\n";
|
|
|
|
|
cout << "\n\n";
|
|
|
|
|
break;
|
|
|
|
|
case 2:
|
|
|
|
|
cout << '\n\t' << "该年级最高分学生信息为:" << '\n';
|
|
|
|
|
cout << "\t\t序号\t班级\t学号\t姓名\t 性别\t成绩\n";
|
|
|
|
|
cout << "\t\t----------------------------------------------------------\n";
|
|
|
|
|
cout << "\t\t" << score_max() << ".\t" << s[score_max()].cla << "\t" << s[score_max()].num << "\t" << s[score_max()].name << "\t " << s[score_max()].sex << "\t" << s[score_max()].score << "\n";
|
|
|
|
|
cout << "\t\t----------------------------------------------------------\n";
|
|
|
|
|
cout << "\n\n";
|
|
|
|
|
break;
|
|
|
|
|
case 3:
|
|
|
|
|
cout << '\n\t' << "该班级平均分是:" << aver() << '\n';
|
|
|
|
|
break;
|
|
|
|
|
case 4:
|
|
|
|
|
cout << "请选择您的检索范围:\n" << "从:";
|
|
|
|
|
int a, b;
|
|
|
|
|
cin >> a;
|
|
|
|
|
cout << "到:";
|
|
|
|
|
cin >> b;
|
|
|
|
|
search(a, b);
|
|
|
|
|
break;
|
|
|
|
|
case 5:
|
|
|
|
|
cout << "\n该班级成绩方差为:" << variance() << '\n';
|
|
|
|
|
break;
|
|
|
|
|
case 6:
|
|
|
|
|
seqence();
|
|
|
|
|
cout << "\n已将该班级学生的成绩进行排序,排序后的学生信息如下:\n";
|
|
|
|
|
list();
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
cout << "是否继续进行数据分析?(1.是|0.不是)" << endl;
|
|
|
|
|
cout << "请输入选择前的序号(1或0):";
|
|
|
|
|
cin >> seq;
|
|
|
|
|
while (seq != 1 && seq != 0) {
|
|
|
|
|
cout << "输入错误,请重新输入:";
|
|
|
|
|
cin >> seq;
|
|
|
|
|
}
|
|
|
|
|
if (seq == 1)
|
|
|
|
|
ana();
|
|
|
|
|
else
|
|
|
|
|
menu();
|
|
|
|
|
}
|
|
|
|
|
void quit() {
|
|
|
|
|
int seq;
|
|
|
|
|
cout << "是否进行存档?(1.是|0.否)" << endl;
|
|
|
|
|
cout << "请输入选择前的序号(1或0):";
|
|
|
|
|
cin >> seq;
|
|
|
|
|
while (seq != 1 && seq != 0) {
|
|
|
|
|
cout << "输入错误,请重新输入:";
|
|
|
|
|
cin >> seq;
|
|
|
|
|
}
|
|
|
|
|
if (seq == 1)
|
|
|
|
|
writeFile();
|
|
|
|
|
}
|
|
|
|
|
void list() {
|
|
|
|
|
cout << "\t\t\t\t\t学生信息\n";
|
|
|
|
|
cout << "\t\t**********************************************************\n\n";
|
|
|
|
|
cout << "\t\t序号\t班级\t学号\t姓名 \t性别\t成绩\n";
|
|
|
|
|
cout << "\t\t----------------------------------------------------------\n";
|
|
|
|
|
for (int i = 1; i <= N; i++) {
|
|
|
|
|
cout << "\t\t" << i << ".\t" << s[i].cla << "\t" << s[i].num << "\t" << s[i].name << "\t " << s[i].sex << "\t" << s[i].score << "\n";
|
|
|
|
|
}
|
|
|
|
|
cout << "\t\t----------------------------------------------------------\n";
|
|
|
|
|
cout << "\n\n";
|
|
|
|
|
}
|
|
|
|
|
void list1() {
|
|
|
|
|
int seq;
|
|
|
|
|
list();
|
|
|
|
|
cout << "\n\n输入1返回菜单,输入0退出系统:";
|
|
|
|
|
cin >> seq;
|
|
|
|
|
while (seq != 0 && seq != 1) {
|
|
|
|
|
cout << "输入错误,请重新输入:";
|
|
|
|
|
cin >> seq;
|
|
|
|
|
}
|
|
|
|
|
if (seq == 1)
|
|
|
|
|
menu();
|
|
|
|
|
else
|
|
|
|
|
quit();
|
|
|
|
|
}
|
|
|
|
|
void rev() {
|
|
|
|
|
list();
|
|
|
|
|
int seq;
|
|
|
|
|
cout << "请输入你要修改的学生编号:";
|
|
|
|
|
cin >> seq;
|
|
|
|
|
while (seq < 1 || seq > N) {
|
|
|
|
|
cout << "输入错误,请重新输入:";
|
|
|
|
|
cin >> seq;
|
|
|
|
|
}
|
|
|
|
|
cout << "\t以下为待修改学生信息";
|
|
|
|
|
cout << "\n\t-----------------------------------------------------------\n";
|
|
|
|
|
cout << "\t1. " << s[seq].cla << "\t2. " << s[seq].num << "\t3. " << s[seq].name << "\t4. " << s[seq].sex << "\t5. " << s[seq].score << endl;
|
|
|
|
|
cout << "\t-----------------------------------------------------------\n";
|
|
|
|
|
cout << "请输入你要修改内容的编号:";
|
|
|
|
|
int seq1;
|
|
|
|
|
cin >> seq1;
|
|
|
|
|
while (seq1 < 1 || seq1 > 5) {
|
|
|
|
|
cout << "输入错误,请重新输入:";
|
|
|
|
|
cin >> seq;
|
|
|
|
|
}
|
|
|
|
|
if (seq1 == 1) {
|
|
|
|
|
cout << "你要将“" << s[seq].cla << "”修改为:";
|
|
|
|
|
cin >> s[seq].cla;
|
|
|
|
|
}
|
|
|
|
|
else if (seq1 == 2) {
|
|
|
|
|
cout << "你要将“" << s[seq].num << "”修改为:";
|
|
|
|
|
cin >> s[seq].num;
|
|
|
|
|
}
|
|
|
|
|
else if (seq1 == 3) {
|
|
|
|
|
cout << "你要将“" << s[seq].name << "”修改为:";
|
|
|
|
|
cin >> s[seq].name;
|
|
|
|
|
}
|
|
|
|
|
else if (seq1 == 4) {
|
|
|
|
|
cout << "你要将“" << s[seq].sex << "”修改为:";
|
|
|
|
|
cin >> s[seq].sex;
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
cout << "你要将“" << s[seq].score << "”修改为:";
|
|
|
|
|
cin >> s[seq].score;
|
|
|
|
|
}
|
|
|
|
|
cout << endl << "修改成功,是否继续修改(继续输入1,不继续输入0):";
|
|
|
|
|
cin >> seq;
|
|
|
|
|
while (seq != 0 && seq != 1) {
|
|
|
|
|
cout << "输入错误,请重新输入:";
|
|
|
|
|
cin >> seq;
|
|
|
|
|
}
|
|
|
|
|
if (seq == 1)
|
|
|
|
|
rev();
|
|
|
|
|
else
|
|
|
|
|
list1();
|
|
|
|
|
}
|
|
|
|
|
void dele() {
|
|
|
|
|
list();
|
|
|
|
|
N--;
|
|
|
|
|
int seq;
|
|
|
|
|
cout << "请输入你要删除的学生编号:";
|
|
|
|
|
cin >> seq;
|
|
|
|
|
while (seq < 1 || seq > N + 1) {
|
|
|
|
|
cout << "输入错误,请重新输入:";
|
|
|
|
|
cin >> seq;
|
|
|
|
|
}
|
|
|
|
|
for (int i = seq; i <= N; i++) {
|
|
|
|
|
s[i] = s[i + 1];
|
|
|
|
|
}
|
|
|
|
|
cout << endl << "\t是否继续删除(继续输入1,不继续输入0):";
|
|
|
|
|
cin >> seq;
|
|
|
|
|
while (seq != 0 && seq != 1) {
|
|
|
|
|
cout << "输入错误,请重新输入:";
|
|
|
|
|
cin >> seq;
|
|
|
|
|
}
|
|
|
|
|
if (seq == 1)
|
|
|
|
|
dele();
|
|
|
|
|
else
|
|
|
|
|
list1();
|
|
|
|
|
}
|
|
|
|
|
void add() {
|
|
|
|
|
list();
|
|
|
|
|
N++;
|
|
|
|
|
cout << "\t请输入学生信息\n\t学生班级:";
|
|
|
|
|
cin >> s[N].cla;
|
|
|
|
|
cout << endl << "\t学生学号:";
|
|
|
|
|
cin >> s[N].num;
|
|
|
|
|
cout << endl << "\t学生姓名:";
|
|
|
|
|
cin >> s[N].name;
|
|
|
|
|
cout << endl << "\t学生性别:";
|
|
|
|
|
cin >> s[N].sex;
|
|
|
|
|
cout << endl << "\t学生成绩:";
|
|
|
|
|
cin >> s[N].score;
|
|
|
|
|
cout << endl << "\t是否继续录入(继续输入1,不继续输入0):";
|
|
|
|
|
int seq;
|
|
|
|
|
cin >> seq;
|
|
|
|
|
while (seq != 0 && seq != 1) {
|
|
|
|
|
cout << "输入错误,请重新输入:";
|
|
|
|
|
cin >> seq;
|
|
|
|
|
}
|
|
|
|
|
if (seq == 1)
|
|
|
|
|
add();
|
|
|
|
|
else
|
|
|
|
|
list1();
|
|
|
|
|
}
|
|
|
|
|
void inq() {
|
|
|
|
|
cout << "请选择查询途径(1.学号查询 2.姓名查询)\n";
|
|
|
|
|
cout << "请输入选择途径的序号(1或2):";
|
|
|
|
|
int seq;
|
|
|
|
|
cin >> seq;
|
|
|
|
|
while (seq != 2 && seq != 1) {
|
|
|
|
|
cout << "输入错误,请重新输入:";
|
|
|
|
|
cin >> seq;
|
|
|
|
|
}
|
|
|
|
|
if (seq == 1)
|
|
|
|
|
{
|
|
|
|
|
cout << "请输入待查学生学号:";
|
|
|
|
|
int inq_num, mark{ 0 };
|
|
|
|
|
cin >> inq_num;
|
|
|
|
|
for (int i = 1; i <= N; i++) {
|
|
|
|
|
if (s[i].num == inq_num) {
|
|
|
|
|
mark = 1;
|
|
|
|
|
cout << "该学生信息如下\n";
|
|
|
|
|
cout << "\t\t序号\t班级\t学号\t姓名\t 性别\t成绩\n";
|
|
|
|
|
cout << "\t\t----------------------------------------------------------\n";
|
|
|
|
|
cout << "\t\t" << i << ".\t" << s[i].cla << "\t" << s[i].num << "\t" << s[i].name << "\t " << s[i].sex << "\t" << s[i].score << "\n";
|
|
|
|
|
cout << "\t\t----------------------------------------------------------\n";
|
|
|
|
|
cout << "\n\n";
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (mark == 0) {
|
|
|
|
|
cout << "\t\t\t该学生信息不存在";
|
|
|
|
|
inq();
|
|
|
|
|
}
|
|
|
|
|
cout << "\n\n输入1返回菜单,输入0退出系统:";
|
|
|
|
|
cin >> seq;
|
|
|
|
|
while (seq != 0 && seq != 1) {
|
|
|
|
|
cout << "输入错误,请重新输入:";
|
|
|
|
|
cin >> seq;
|
|
|
|
|
}
|
|
|
|
|
if (seq == 1)
|
|
|
|
|
menu();
|
|
|
|
|
else
|
|
|
|
|
quit();
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
cout << "请输入待查学生姓名:";
|
|
|
|
|
int mark{ 0 };
|
|
|
|
|
char inq_name[20];
|
|
|
|
|
cin >> inq_name;
|
|
|
|
|
for (int i = 1; i <= N; i++) {
|
|
|
|
|
if (strcmp(inq_name, s[i].name)) {
|
|
|
|
|
mark = 1;
|
|
|
|
|
cout << "该学生信息如下\n";
|
|
|
|
|
cout << "\t\t序号\t班级\t学号\t姓名\t 性别\t成绩\n";
|
|
|
|
|
cout << "\t\t----------------------------------------------------------\n";
|
|
|
|
|
cout << "\t\t" << i << ".\t" << s[i].cla << "\t" << s[i].num << "\t" << s[i].name << "\t " << s[i].sex << "\t" << s[i].score << "\n";
|
|
|
|
|
cout << "\t\t----------------------------------------------------------\n";
|
|
|
|
|
cout << "\n\n";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (mark == 0) {
|
|
|
|
|
cout << "\t\t\t该学生信息不存在";
|
|
|
|
|
inq();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
cout << "\n\n输入1返回菜单,输入0退出系统:";
|
|
|
|
|
cin >> seq;
|
|
|
|
|
while (seq != 0 && seq != 1) {
|
|
|
|
|
cout << "输入错误,请重新输入:";
|
|
|
|
|
cin >> seq;
|
|
|
|
|
}
|
|
|
|
|
if (seq == 1)
|
|
|
|
|
menu();
|
|
|
|
|
else
|
|
|
|
|
quit();
|
|
|
|
|
}
|
|
|
|
|
void readFile()
|
|
|
|
|
{
|
|
|
|
|
ifstream ifs;
|
|
|
|
|
ifs.open("stuList.txt", ios::in);
|
|
|
|
|
ifs >> N;
|
|
|
|
|
for (int i = 1; i <= N; i++)
|
|
|
|
|
{
|
|
|
|
|
ifs >> s[i].cla >> s[i].num >> s[i].name >> s[i].sex >> s[i].score;
|
|
|
|
|
}
|
|
|
|
|
ifs.close();
|
|
|
|
|
cout << "已读取存档\n";
|
|
|
|
|
menu();
|
|
|
|
|
}
|
|
|
|
|
//写入文件
|
|
|
|
|
void writeFile()
|
|
|
|
|
{
|
|
|
|
|
ofstream ofs;
|
|
|
|
|
ofs.open("stuList.txt", ios::out);
|
|
|
|
|
ofs << N << endl; //先写入学生数量
|
|
|
|
|
for (int i = 1; i <= N; i++)
|
|
|
|
|
{
|
|
|
|
|
ofs << s[i].cla << " " << s[i].num << " " << s[i].name << " " << s[i].sex << " " << s[i].score << endl;
|
|
|
|
|
}
|
|
|
|
|
ofs.close();
|
|
|
|
|
}
|
|
|
|
|
int score_min() {
|
|
|
|
|
int sc_mi{ 999 }, min{0};
|
|
|
|
|
for (int i = 1; i <= N; i++) {
|
|
|
|
|
if (s[i].score <= sc_mi) {
|
|
|
|
|
sc_mi = s[i].score;
|
|
|
|
|
min = i;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return min;
|
|
|
|
|
}
|
|
|
|
|
int score_max() {
|
|
|
|
|
int sc_ma{ 0 }, max{ 0 };
|
|
|
|
|
for (int i = 1; i <= N; i++) {
|
|
|
|
|
if (s[i].score >= sc_ma) {
|
|
|
|
|
sc_ma = s[i].score;
|
|
|
|
|
max = i;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return max;
|
|
|
|
|
}
|
|
|
|
|
double aver() {
|
|
|
|
|
double averge{ 0 };
|
|
|
|
|
for (int i = 1; i <= N; i++) {
|
|
|
|
|
averge += s[i].score * 1.0 / N;
|
|
|
|
|
}
|
|
|
|
|
return averge;
|
|
|
|
|
}
|
|
|
|
|
void search(int a, int b) {
|
|
|
|
|
cout << "符合成绩范围条件的学生信息如下:" << "\n";
|
|
|
|
|
cout << "\t\t序号\t班级\t学号\t姓名\t 性别\t成绩\n";
|
|
|
|
|
cout << "\t\t----------------------------------------------------------\n";
|
|
|
|
|
for (int i = 1; i <= N; i++) {
|
|
|
|
|
if (s[i].score >= a && s[i].score <= b) {
|
|
|
|
|
cout << "\t\t" << i << ".\t" << s[i].cla << "\t" << s[i].num << "\t" << s[i].name << "\t " << s[i].sex << "\t" << s[i].score << "\n";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
cout << "\t\t----------------------------------------------------------\n";
|
|
|
|
|
}
|
|
|
|
|
double variance() {
|
|
|
|
|
double ave = aver();
|
|
|
|
|
double var{ 0 };
|
|
|
|
|
for (int i = 1; i <= N; i++) {
|
|
|
|
|
var += pow((s[i].score - ave), 2) / N;
|
|
|
|
|
}
|
|
|
|
|
return var;
|
|
|
|
|
}
|
|
|
|
|
void seqence() {
|
|
|
|
|
for (int i = 1; i < N; i++) {
|
|
|
|
|
for (int j = 1; j <= N-i; j++) {
|
|
|
|
|
if (s[j].score < s[j + 1].score) {
|
|
|
|
|
STUDENT s_t;
|
|
|
|
|
s_t = s[j];
|
|
|
|
|
s[j] = s[j + 1];
|
|
|
|
|
s[j + 1] = s_t;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void menu() {
|
|
|
|
|
int seq;
|
|
|
|
|
cout << "\t\t\t\t欢迎来到学生信息管理系统\n";
|
|
|
|
|
cout << "\t\t*********************************************************\n\n";
|
|
|
|
|
cout << "\t\t\t\t\t 菜单\n";
|
|
|
|
|
cout << "\t\t|-------------------------------------------------------|\n";
|
|
|
|
|
cout << "\t\t| 1. 添加学生信息 |\n";
|
|
|
|
|
cout << "\t\t|-------------------------------------------------------|\n";
|
|
|
|
|
cout << "\t\t| 2. 删除学生信息 |\n";
|
|
|
|
|
cout << "\t\t|-------------------------------------------------------|\n";
|
|
|
|
|
cout << "\t\t| 3. 修改学生信息 |\n";
|
|
|
|
|
cout << "\t\t|-------------------------------------------------------|\n";
|
|
|
|
|
cout << "\t\t| 4. 查询学生信息 |\n";
|
|
|
|
|
cout << "\t\t|-------------------------------------------------------|\n";
|
|
|
|
|
cout << "\t\t| 5. 显示学生列表 |\n";
|
|
|
|
|
cout << "\t\t|-------------------------------------------------------|\n";
|
|
|
|
|
cout << "\t\t| 6. 学生数据分析 |\n";
|
|
|
|
|
cout << "\t\t|-------------------------------------------------------|\n";
|
|
|
|
|
cout << "\t\t| 7. 读取文件 |\n";
|
|
|
|
|
cout << "\t\t|-------------------------------------------------------|\n";
|
|
|
|
|
cout << "\t\t| 8. 退出系统 |\n";
|
|
|
|
|
cout << "\t\t|-------------------------------------------------------|\n";
|
|
|
|
|
cout << "\n\n请选择你的操作(输入操作前的序号1-8):";
|
|
|
|
|
cin >> seq;
|
|
|
|
|
while (seq != 1 && seq != 2 && seq != 3 && seq != 4 && seq != 5 && seq != 6 && seq != 7 && seq != 8) {
|
|
|
|
|
cout << "输入错误,请重新输入:";
|
|
|
|
|
cin >> seq;
|
|
|
|
|
}
|
|
|
|
|
if (seq == 1) {
|
|
|
|
|
cout << "\t\t*****************欢迎使用添加学生信息功能******************\n\n\n";
|
|
|
|
|
add();
|
|
|
|
|
}
|
|
|
|
|
else if (seq == 2) {
|
|
|
|
|
cout << "\t\t*****************欢迎使用删除学生信息功能******************\n\n\n";
|
|
|
|
|
dele();
|
|
|
|
|
}
|
|
|
|
|
else if (seq == 3) {
|
|
|
|
|
cout << "\t\t*****************欢迎使用修改学生信息功能******************\n\n\n";
|
|
|
|
|
rev();
|
|
|
|
|
}
|
|
|
|
|
else if (seq == 4) {
|
|
|
|
|
cout << "\t\t*****************欢迎使用查询学生信息功能******************\n\n\n";
|
|
|
|
|
inq();
|
|
|
|
|
}
|
|
|
|
|
else if (seq == 5)
|
|
|
|
|
list1();
|
|
|
|
|
else if (seq == 6) {
|
|
|
|
|
cout << "\t\t*****************欢迎使用学生数据分析功能******************\n\n\n";
|
|
|
|
|
ana();
|
|
|
|
|
}
|
|
|
|
|
else if (seq == 7)
|
|
|
|
|
readFile();
|
|
|
|
|
else quit();
|
|
|
|
|
}
|