#include <iostream>
#include <iomanip>
#include <stdlib.h>
#include <string.h>
#include <fstream>
using namespace std;
//分数结构体
struct score
{
float m_DataStructurescore; //数据结构
float m_Englishscore; //英语
float m_Mathscore; //数学
float m_PE; //体育
float m_Probability; //概率
struct score *next;
};
//学生信息结构体
struct student
{
long number;
char name[20];
char sex[5];
score chengji;
float average;
struct student *next;
};
int amount = 0; //全局变量,记录学生个数
int const Q = 80;
float A[Q];
student *head = (student*)malloc(sizeof(student));
void InputScore(); //录入学生xinx
void DisplayMainMenu(); //显示菜单
void SearchByName(); //按名查询
void SearchByNumber(); //按学号查询
void EditByName(); //按名修改
void EditByNumber(); //按学号修改
void Delete(); //删除学生信息
void save(); //保存学生信息
void Sort_DataStructrue(); //按数据结构排序
void Sort_Englishi(); //按英语排序
void Sort_Math(); //按数学排序
void Sort_PE(); //按体育排序
void Sort_Probability(); //按概率排序
void Sort_Average(); //按平均分排序
void Statistics(); //统计学生信息
void ShowStudentInfo(); //显示学生信息
void FreadFile(); //读取文件信息
void Insert(); //插入学生信息
void Sort(struct score num);
int main(void)
{
char x;
bool flag2 = 0;
DisplayMainMenu();
do
{
do
{
cin >> x;
if((x >= 'a' && x <= 'z'))
{
flag2 = 1;
}
else
{
cout << "指令错误!!!!!!" << endl;
cout << "请选择相应的数组进行操作:" << endl;
}
}while(flag2 == 0);
switch(x)
{
case 'a':
cout << "*******************现在进行学生信息录入********************" << endl;
InputScore();
cout << "输入的学生信息为:"<< endl;
ShowStudentInfo();
cout << "***********************************************************" << endl;
DisplayMainMenu();
break;
case 'b':
{
char z;
cout << "*******************现在进行学生信息查询********************" << endl;
cout << "请选择查询方式:(0)--按姓名查询; (1)--按学号查询;" << endl;
cin >> z;
while(z != '0' && z != '1')
{
cout << "指令错误(请选择(0)或者(1))!!!!!!" << endl;
cout << "请选择查询方式:(0)--按姓名查询; (1)--按学号查询;" << endl;
cin >> z;
}
switch(z)
{
case '0': SearchByName(); break; //按姓名查询
case '1': SearchByNumber(); break; //按学号查询
}
cout << "***********************************************************" << endl;
DisplayMainMenu();
break;
}
case 'c':
{
char p;
cout << "*******************现在进行学生信息修改********************" << endl;
cout << "请选择查询方式:(0)--按姓名修改; (1)--按学号修改;" << endl;
cin >> p;
while(p != '0' && p != '1')
{
cout << "指令错误(请选择(0)或者(1))!!!!!!" << endl;
cout << "请选择修改方式:(0)--按姓名修改; (1)--按学号修改;" << endl;
cin >> p;
}
switch(p)
{
case '0': EditByName(); break; //按姓名修改
case '1': EditByNumber(); break; //按学号修改
}
cout << "***********************************************************" << endl;
DisplayMainMenu();
break;
}
case 'd':
cout << "*******************现在进行学生信息删除********************" << endl;
Delete(); //删除
cout << "***********************************************************" << endl;
DisplayMainMenu();
break;
case 'e':
cout <<"*******************现在进行显示学生信息********************" << endl;
ShowStudentInfo(); //显示数据
cout <<"***********************************************************" << endl;
DisplayMainMenu();
break;
case 'f':
cout <<"*******************现在进行保存学生信息********************" << endl;
save(); //显示数据
cout <<"***********************************************************" << endl;
DisplayMainMenu();
break;
case 'g':
cout <<"*******************现在进行读取学生信息********************" << endl;
FreadFile(); //显示数据
cout <<"***********************************************************" << endl;
DisplayMainMenu();
break;
case 'h':
cout << "*******************现在进行统计学生信息********************" << endl;
Statistics(); //显示数据
cout << "***********************************************************" << endl;
DisplayMainMenu();
break;
case 'i':
{
char a;
cout << "***********************现在进行排序************************" << endl;
cout << "请选择排序方式:" << endl;
cout << "1 按数据结构成绩排序" << endl;
cout << "2 按英语成绩排序" << endl;
cout << "3 按数学成绩排序" << endl;
cout << "4 按体育成绩排序" << endl;
cout << "5 按概率成绩排序" << endl;
cout << "6 按平均成绩排序" << endl;
cin >> a;
while(a < '1' || a > '6')
{
cout << "指令错误(请选择(1~6)!!!!!!)" << endl;
cout << "1 按数据结构成绩排序" << endl;
cout << "2 按英语成绩排序" << endl;
cout << "3 按数学成绩排序" << endl;
cout << "4 按体育成绩排序" << endl;
cout << "5 按概率成绩排序" << endl;
cout << "6 按平均成绩排序" << endl;
cin >> a;
}
switch(a)
{
case '1' : Sort_DataStructrue(); break; //按数据结构排序
case '2' : Sort_Englishi(); break; //按英语成绩排序
case '3' : Sort_Math(); break; //按数学成绩排序
case '4' : Sort_PE(); break; //按体育成绩排序
case '5' : Sort_Probability(); break; //按概率成绩排序
case '6' : Sort_Average(); break; //按平均分排序
}
cout << "***********************************************************" << endl;
DisplayMainMenu();
break;
}
case 'j':
cout << "***********************************************************" << endl;
cout <<" 您已退出学生管理系统,谢谢您的使用! " << endl;
cout << "***********************************************************" << endl;
cout << endl;
return 0;
break;
case 'k':
cout << "***********************************************************" << endl;
cout << "*******************现在进行插入学生信息********************" << endl;
Insert(); //插入
cout << "***********************************************************" << endl;
DisplayMainMenu();
break;
}
}while(flag2 == 1);
return 0;
}
/*保存学生信息*/
void save()
{
student *stu = head->next;
ofstream out("成绩管理.txt", ios::out);
out << amount << "\t";
int i = 1;
while(stu != NULL && i <= amount)
{
out << (*stu).number << "\t" << (*stu).name << "\t" << (*stu).sex
<< "\t" << (*stu).chengji.m_DataStructurescore << "\t"<< (*stu).chengji.m_Englishscore
<< "\t"<< (*stu).chengji.m_Mathscore<< "\t" << (*stu).chengji.m_PE
<< "\t" << (*stu).chengji.m_Probability << "\t" << (*stu).average;
i++;
stu = stu->next;
cout << endl;
}
cout << "......成功将学生信息保存到(成绩管理.txt)中!!!!!!" << endl;
out.close();
}
/*文件读功能*/
void FreadFile()
{
student *p2, *p1;
p1 = p2 = new student;
ifstream fin("成绩管理.txt", ios::out);
fin >> amount;
cout << "共读出" << amount << "个学生信息:" << endl;
head = p2; //把链表头传给head
if(!fin)
{
cout << "不能打开文件!!!!!!" << endl;
}
for(int k = 1; k <= amount; k++)
{
p1 = new student;
fin >> p1->number >> p1->name >> p1->sex >> p1->chengji.m_DataStructurescore >> p1->chengji.m_Englishscore
>> p1->chengji.m_Mathscore >> p1->chengji.m_PE >> p1->chengji.m_Probability >> p1->average;
p2->next = p1;
p2 = p1;
}
student *q = head->next;
cout << "学号 姓名 性别 据结构 英语 数学 体育 概率 平均分 " << endl;
for(int i = 1; i <= amount; i++)
{
cout << setw(8) << q->number;
cout << setw(8) << q->name;
cout << setw(4) << q->sex;
cout << setw(7) << q->chengji.m_DataStructurescore;
cout << setw(8) << q->chengji.m_Englishscore;
cout << setw(6) << q->chengji.m_Mathscore;
cout << setw(6) << q->chengji.m_PE;
cout << setw(6) << q->chengji.m_Probability;
cout << setw(8) << q->average;
cout << endl;
i++;
q = q->next;
}
//显示读入数据
fin.close();
cout << "......数据已经成功读取完毕。" << endl;
}
/*按英语排序*/
void Sort_DataStructrue()
{
student *q = head->next;
float B[Q];
int i, j;
/*首先将数据保存到数组中,数组下标从1开始*/
for(i = 1; i <= amount; i++)
{
A[i] = q->chengji.m_DataStructurescore;
q = q->next;
}
/*A[0]作为空位,直接选择排序*/
for(i = 2; i <= amount; ++i)
{
if(A[i] < A[i - 1])
{
A[0] = A[i];
A[i] = A[i - 1];
for(j = i - 2; A[0] <= A[j]; --j) A[j + 1] = A[j]; //元素后移
A[j + 1] = A[0];
}
}
B[1] = A[1];
for(i = 1, j = 1; i <= amount; i++)
{
if(A[i] > B[j])
{
j++;
B[j] = A[i];
}
}
cout << "学号\t 姓名 性别 据结构 英语 数学 体育 概率 平均分 " << endl;
for(i = amount; i >= 1; i--)
{
student *p = head->next;
for(j = 1; j <= amount; j++)
{
if(p->chengji.m_DataStructurescore == B[i])
{
cout << setw(8) << p->number;
cout << setw(8) << p->name;
cout << setw(4) << p->sex;
cout << setw(7) << p->chengji.m_DataStructurescore;
cout << setw(8) << p->chengji.m_Englishscore;
cout << setw(6) << p->chengji.m_Mathscore;
cout << setw(6) << p->chengji.m_PE;
cout << setw(6) << p->chengji.m_Probability;
cout << setw(8) << p->average;
cout << endl;
}
p = p->next;
}
}
}
/*按数据结构成绩排序*/
void Sort_Englishi()
{
student *q = head->next;
float B[Q];
int i, j;
/*首先将数据保存到数组中,数组下标从1开始*/
for(i = 1; i <= amount; i++)
{
A[i] = q->chengji.m_Englishscore;
q = q->next;
}
/*A[0]作为空位,直接选择排序*/
for(i = 2; i <= amount; ++i)
{
if(A[i] < A[i - 1])
{
A[0] = A[i];
A[i] = A[i - 1];
for(j = i - 2; A[0] <= A[j]; --j) A[j + 1] = A[j]; //元素后移
A[j + 1] = A[0];
}
}
B[1] = A[1];
for(i = 1, j = 1; i <= amount; i++)
{
if(A[i] > B[j])
{
j++;
B[j] = A[i];
}
}
cout << "学号\t 姓名 性别 据结构 英语 数学 体育 概率 平均分 " << endl;
for(i = amount; i >= 1; i--)
{
student *p = head->next;
for(j = 1; j <= amount; j++)
{
if(p->chengji.m_DataStructurescore == B[i])
{
cout << setw(8) << p->number;
cout << setw(8) << p->name;
cout << setw(4) << p->sex;
cout << setw(7) << p->chengji.m_DataStructurescore;
cout << setw(8) << p->chengji.m_Englishscore;
cout << setw(6) << p->chengji.m_Mathscore;
cout << setw(6) << p->chengji.m_PE;
cout << setw(6) << p->chengji.m_Probability;
cout << setw(8) << p->average;
cout << endl;
}
p = p->next;
}
}
}
/*按数学排序*/
void Sort_Math()
{
student *q = head->next;
float B[Q];
int i, j;
/*首先将数据保存到数组中,数组下标从1开始*/
for(i = 1; i <= amount; i++)
{
A[i] = q->chengji.m_Mathscore;
q = q->next;
}
/*A[0]作为空位,直接选择排序*/
for(i = 2; i <= amount; ++i)
{
if(A[i] < A[i - 1])
{
A[0] = A[i];
A[i] = A[i - 1];
for(j = i - 2; A[0] <= A[j]; --j) A[j + 1] = A[j]; //元素后移
A[j + 1] = A[0];
}
}
B[1] = A[1];
for(i = 1, j = 1; i <= amount; i++)
{
if(A[i] > B[j])
{
j++;
B[j] = A[i];
}
}
cout << "学号\t 姓名 性别 据结构 英语 数学 体育 概率 平均分 " << endl;
for(i = amount; i >= 1; i--)
{
student *p = head->next;
for(j = 1; j <= amount; j++)
{
if(p->chengji.m_DataStructurescore == B[i])
{
cout << setw(8) << p->number;
cout << setw(8) << p->name;
cout << setw(4) << p->sex;
cout << setw(7) << p->chengji.m_DataStructurescore;
cout << setw(8) << p->chengji.m_Englishscore;
cout << setw(6) << p->chengji.m_Mathscore;
cout << setw(6) << p->chengji.m_PE;
cout << setw(6) << p->chengji.m_Probability;
cout << setw(8) << p->average;
cout << endl;
}
p = p->next;
}
}
}
/*按体育排序*/
void Sort_PE()
{
student *q = head->next;
float B[Q];
int i, j;
/*首先将数据保存到数组中,数组下标从1开始*/
for(i = 1; i <= amount; i++)
{
A[i] = q->chengji.m_PE;
q = q->next;
}
/*A[0]作为空位,直接选择排序*/
for(i = 2; i <= amount; ++i)
{
if(A[i] < A[i - 1])
{
A[0] = A[i];
A[i] = A[i - 1];
for(j = i - 2; A[0] <= A[j]; --j) A[j + 1] = A[j]; //元素后移
A[j + 1] = A[0];
}
}
B[1] = A[1];
for(i = 1, j = 1; i <= amount; i++)
{
if(A[i] > B[j])
{
j++;
B[j] = A[i];
}
}
cout << "学号\t 姓名 性别 据结构 英语 数学 体育 概率 平均分 " << endl;
for(i = amount; i >= 1; i--)
{
student *p = head->next;
for(j = 1; j <= amount; j++)
{
if(p->chengji.m_DataStructurescore == B[i])
{
cout << setw(8) << p->number;
cout << setw(8) << p->name;
cout << setw(4) << p->sex;
cout << setw(7) << p->chengji.m_DataStructurescore;
cout << setw(8) << p->chengji.m_Englishscore;
cout << setw(6) << p->chengji.m_Mathscore;
cout << setw(6) << p->chengji.m_PE;
cout << setw(6) << p->chengji.m_Probability;
cout << setw(8) << p->average;
cout << endl;
}
p = p->next;
}
}
}
/*按概率排序*/
void Sort_Probability()
{
student *q = head->next;
float B[Q];
int i, j;
/*首先将数据保存到数组中,数组下标从1开始*/
for(i = 1; i <= amount; i++)
{
A[i] = q->chengji.m_Probability;
q = q->next;
}
/*A[0]作为空位,直接选择排序*/
for(i = 2; i <= amount; ++i)
{
if(A[i] < A[i - 1])
{
A[0] = A[i];
A[i] = A[i - 1];
for(j = i - 2; A[0] <= A[j]; --j) A[j + 1] = A[j]; //元素后移
A[j + 1] = A[0];
}
}
B[1] = A[1];
for(i = 1, j = 1; i <= amount; i++)
{
if(A[i] > B[j])
{
j++;
B[j] = A[i];
}
}
cout << "学号\t 姓名 性别 据结构 英语 数学 体育 概率 平均分 " << endl;
for(i = amount; i >= 1; i--)
{
student *p = head->next;
for(j = 1; j <= amount; j++)
{
if(p->chengji.m_DataStructurescore == B[i])
{
cout << setw(8) << p->number;
cout << setw(8) << p->name;
cout << setw(4) << p->sex;
cout << setw(7) << p->chengji.m_DataStructurescore;
cout << setw(8) << p->chengji.m_Englishscore;
cout << setw(6) << p->chengji.m_Mathscore;
cout << setw(6) << p->chengji.m_PE;
cout << setw(6) << p->chengji.m_Probability;
cout << setw(8) << p->average;
cout << endl;
}
p = p->next;
}
}
}
/*按平均分排序*/
void Sort_Average()
{
student *q = head->next;
float B[Q];
int i, j;
/*首先将数据保存到数组中,数组下标从1开始*/
for(i = 1; i <= amount; i++)
{
A[i] = q->average;
q = q->next;
}
/*A[0]作为空位,直接选择排序*/
for(i = 2; i <= amount; ++i)
{
if(A[i] < A[i - 1])
{
A[0] = A[i];
A[i] = A[i - 1];
for(j = i - 2; A[0] <= A[j]; --j) A[j + 1] = A[j]; //元素后移
A[j + 1] = A[0];
}
}
B[1] = A[1];
for(i = 1, j = 1; i <= amount; i++)
{
if(A[i] > B[j])
{
j++;
B[j] = A[i];
}
}
cout << "学号\t 姓名 性别 据结构 英语 数学 体育 概率 平均分 " << endl;
for(i = amount; i >= 1; i--)
{
student *p = head->next;
for(j = 1; j <= amount; j++)
{
if(p->chengji.m_DataStructurescore == B[i])
{
cout << setw(8) << p->number;
cout << setw(8) << p->name;
cout << setw(4) << p->sex;
cout << setw(7) << p->chengji.m_DataStructurescore;
cout << setw(8) << p->chengji.m_Englishscore;
cout << setw(6) << p->chengji.m_Mathscore;
cout << setw(6) << p->chengji.m_PE;
cout << setw(6) << p->chengji.m_Probability;
cout << setw(8) << p->average;
cout << endl;
}
p = p->next;
}
}
}
/*统计学生信息(主要统计不及格的人数和不及格的门数)*/
void Statistics()
{
student *p1 = head->next;
int a = 0, b = 0, c = 0, d = 0, e = 0, f = 0;
int i1, i2;
//记录数据结构不及格的人数
for(i1 = 1; i1 <= amount; i1++)
{
if(p1->chengji.m_DataStructurescore < 60) a++;
if(p1->chengji.m_Englishscore < 60) b++;
if(p1->chengji.m_Mathscore < 60) c++;
if(p1->chengji.m_PE < 60) d++;
if(p1->chengji.m_Probability < 60) e++;
p1 = p1->next;
}
cout << "数据结构不及格人数:" << a << endl;
cout << "英语不及格人数:" << c << endl;
cout << "数学不及格人数:" << c << endl;
cout << "体育不及格人数:" << d << endl;
cout << "概率不及格人数:" << e << endl;
student *p2 = head->next;
for(i2 = 1; i2 <= amount && p2 != NULL; i2++)
{
f = 0;
if(p2->chengji.m_DataStructurescore < 60) f++;
if(p2->chengji.m_Englishscore < 60) f++;
if(p2->chengji.m_Mathscore < 60) f++;
if(p2->chengji.m_PE < 60) f++;
if(p2->chengji.m_Probability < 60) f++;
cout << p2->name << "同学不及格门数:" << f;
if(f != 0) cout << "分别是:";
if(p2->chengji.m_DataStructurescore < 60) cout << "数据结构";
if(p2->chengji.m_Englishscore < 60) cout << " 英语";
if(p2->chengji.m_Mathscore < 60) cout << " 数学";
if(p2->chengji.m_PE < 60) cout << " 体育";
if(p2->chengji.m_Probability < 60) cout << " 概论";
cout << endl;
p2 = p2->next;
}
}
/*插入新的学生信息*/
void Insert()
{
char c;
int j = 0;
int i;
student *q = head->next;
for(i = 1; i <= amount - 1; i++) q = q->next; //查找文件的末尾
do
{
student *stu = new student;
cout << "请输入学号:(8位)" << setw(4);
cin >> (*stu).number;
cout << "请输入姓名:" << setw(4);
cin >> (*stu).name;
cout << "请输入性别:" << setw(2);
cin >> (*stu).sex;
cout << "请输入数据结构成绩:" << setw(3);
cin >> (*stu).chengji.m_DataStructurescore;
cout << "请输入英语成绩:" << setw(3);
cin >> (*stu).chengji.m_Englishscore;
cout << "请输入数学成绩:" << setw(3);
cin >> (*stu).chengji.m_Mathscore;
cout << "请输入体育成绩:" << setw(3);
cin >> (*stu).chengji.m_PE;
cout << "请输入概率成绩:" << setw(3);
cin >> (*stu).chengji.m_Probability;
(*stu).average = ((*stu).chengji.m_DataStructurescore
+ (*stu).chengji.m_Englishscore + (*stu).chengji.m_Mathscore
+ (*stu).chengji.m_PE + (*stu).chengji.m_Probability) * 0.2;
q->next = stu;
amount++;
cout << "数据信息插入成功,想继续插入吗?(y/n)";
cin >> c;
q = q->next;
while(c != 'y' && c != 'n')
{
cout << "指令错误<请输入y/n>!!!!!!" << endl;
cout << "数据信息插入成功,想继续插入吗(y/n)";
cin >> c;
}
}while(c == 'y');
j++;
}
/*删除学生信息*/
void Delete()
{
char c;
long no;
do
{
bool flag = 0;
cout << "请输入您要删除的学生的学号:" << endl;
cin >> no;
student *p, *q;
q = head;
/*查找要删除的节点*/
while(q ->next != NULL && no != q->next->number) q = q->next;
if(q->next != NULL)
{
flag = 1;
p = q->next;
q->next = p->next;
amount--;
free(p);
cout << "........删除成功!!!!!!!!" << endl;
}
if(flag == 0)
{
cout << "对不起!!!您要删除的学生不存在!!!!!!" << endl;
cout << "您想继续删除吗?(y/n)" << endl;
cin >> c;
while(c != 'y' && c != 'n')
{
cout << "指令错误!!!<请输入y/n!!!>" << endl;
cin >> c;
}
}
}while(c == 'y');
}
/*按学号编辑函数*/
void EditByNumber()
{
long no;
char c;
do
{
bool flag = 0;
student *stu = head;
score chengji;
cout << "请输入您要修改的学生的学号:" << endl;
cin >> no;
do
{
if(no == (*stu).number)
{
flag = 1;
cout << "请输入新的数据结构成绩:" << endl;
cin >> chengji.m_DataStructurescore;
(*stu).chengji.m_DataStructurescore = chengji.m_DataStructurescore;
cout << "请输入新的英语成绩:" << endl;
cin >> chengji.m_Englishscore;
(*stu).chengji.m_Englishscore = chengji.m_Englishscore;
cout << "请输入新的数学成绩:" << endl;
cin >> chengji.m_Mathscore;
(*stu).chengji.m_Mathscore = chengji.m_Mathscore;
cout << "请输入新的体育成绩:" << endl;
cin >> chengji.m_PE;
(*stu).chengji.m_PE = chengji.m_PE;
cout << "请输入新的概率成绩:" << endl;
cin >> chengji.m_Probability;
(*stu).chengji.m_Probability = chengji.m_Probability;
(*stu).average = ((*stu).chengji.m_DataStructurescore
+ (*stu).chengji.m_Englishscore + (*stu).chengji.m_Mathscore
+ (*stu).chengji.m_PE + (*stu).chengji.m_Probability) * 0.2;
cout << "学号\t 姓名 性别 据结构 英语 数学 体育 概率 平均分 " << endl;
cout << setw(8) << (*stu).number;
cout << setw(8) << (*stu).name;
cout << setw(4) << (*stu).sex;
cout << setw(7) << (*stu).chengji.m_DataStructurescore;
cout << setw(8) << (*stu).chengji.m_Englishscore;
cout << setw(6) << (*stu).chengji.m_Mathscore;
cout << setw(6) << (*stu).chengji.m_PE;
cout << setw(6) << (*stu).chengji.m_Probability;
cout << setw(8) << (*stu).average;
cout << endl;
cout << "........数据修改成功!" << endl;
break;
}
stu = stu->next;
}while(stu != NULL);
if(flag == 0)
{
cout << "对不起,您要修改的学生不存在!请重新输入!!!!!!" << endl;
}
cout << "想继续修改吗?(y/n)" << endl;
cin >> c;
while(c != 'y' && c == 'N')
{
cout << "指令错误<请输入y/n!>!!!!!!" << endl;
cout << "您想继续修改吗?(y/n)" << endl;
cin >> c;
}
}while(c == 'y');
}
/*按姓名编辑函数*/
void EditByName()
{
char name[20];
char c;
do
{
bool flag = 0;
student *stu = head;
score chengji;
cout << "请输入要修改的学生的姓名" << endl;
cin >> name;
do
{
if(strcmp(name, (*stu).name) == 0)
{
flag = 1;
cout << "请输入新的数据结构成绩:" << endl;
cin >> chengji.m_DataStructurescore;
(*stu).chengji.m_DataStructurescore = chengji.m_DataStructurescore;
cout << "请输入新的英语成绩:" << endl;
cin >> chengji.m_Englishscore;
(*stu).chengji.m_Englishscore = chengji.m_Englishscore;
cout << "请输入新的数学成绩:" << endl;
cin >> chengji.m_Mathscore;
(*stu).chengji.m_Mathscore = chengji.m_Mathscore;
cout << "请输入新的体育成绩:" << endl;
cin >> chengji.m_PE;
(*stu).chengji.m_PE = chengji.m_PE;
cout << "请输入新的概率成绩:" << endl;
cin >> chengji.m_Probability;
(*stu).chengji.m_Probability = chengji.m_Probability;
(*stu).average = ((*stu).chengji.m_DataStructurescore
+ (*stu).chengji.m_Englishscore + (*stu).chengji.m_Mathscore
+ (*stu).chengji.m_PE + (*stu).chengji.m_Probability) * 0.2;
cout << "学号\t 姓名 性别 据结构 英语 数学 体育 概率 平均分 " << endl;
cout << setw(8) << (*stu).number;
cout << setw(8) << (*stu).name;
cout << setw(4) << (*stu).sex;
cout << setw(7) << (*stu).chengji.m_DataStructurescore;
cout << setw(8) << (*stu).chengji.m_Englishscore;
cout << setw(6) << (*stu).chengji.m_Mathscore;
cout << setw(6) << (*stu).chengji.m_PE;
cout << setw(6) << (*stu).chengji.m_Probability;
cout << setw(8) << (*stu).average;
cout << endl;
cout << "........数据修改成功!" << endl;
break;
}
stu = stu->next;
}while(stu != NULL);
if(flag == 0)
{
cout << "对不起,您要修改的学生不存在!请重新输入!!!!!!" << endl;
}
cout << "想继续修改吗?(y/n)" << endl;
cin >> c;
while(c != 'n' && c != 'y')
{
cout << "指令错误<请输入y/n!>!!!!!!" << endl;
cout << "您想继续修改吗?(y/n)" << endl;
cin >> c;
}
}while(c == 'y');
}
/*学生姓名查找*/
void SearchByName()
{
int i2;
char c;
char name[20];
do
{
student *stu = head->next;
bool flag = 0;
cout << "请输入您要查询的学生姓名:" << endl;
cin >> name;
for(i2 = 1; i2 <= amount; i2++)
{
/*strcmp()比较函数*/
if(strcmp(name, stu->name) == 0)
{
flag = 1;
cout << "您要查询的学生是:" << stu->name << endl;;
cout << "学号\t 姓名 性别 据结构 英语 数学 体育 概率 平均分 " << endl;
cout << setw(8) << (*stu).number;
cout << setw(8) << (*stu).name;
cout << setw(4) << (*stu).sex;
cout << setw(7) << (*stu).chengji.m_DataStructurescore;
cout << setw(8) << (*stu).chengji.m_Englishscore;
cout << setw(6) << (*stu).chengji.m_Mathscore;
cout << setw(6) << (*stu).chengji.m_PE;
cout << setw(6) << (*stu).chengji.m_Probability;
cout << setw(8) << (*stu).average;
cout << endl;
}
else
{
stu = stu->next;
}
}
if(flag == 1)
{
cout << "您想继续查询吗?(y/n)" << endl;
cin >> c;
while(c != 'y' && c != 'n')
{
cout << "指令错误!!!!!!<请输入y/n!!!!!!!>" << endl;
cin >> c;
}
}
if(flag == 0)
{
cout << "对不起!您要查询的学生不存在!!!!!!" << endl;
cout << "您想继续查询吗?(y/n)" << endl;
cin >> c;
while(c != 'y' && c != 'n')
{
cout << "指令错误!!!!!!<请输入y/n!!!!!!!>" << endl;
cin >> c;
}
}
}while(c == 'y');
}
/*学生学号查找*/
void SearchByNumber()
{
int i2;
char c;
long no;
do
{
student *stu = head->next;
bool flag = 0;
cout << "请输入您要查询的学生学号:" << endl;
cin >> no;
for(i2 = 1; i2 <= amount; i2++)
{
if(no == stu->number)
{
flag = 1;
cout << "您要查询的学生是:" << stu->name << endl;
cout << "学号\t 姓名 性别 据结构 英语 数学 体育 概率 平均分 " << endl;
cout << setw(8) << (*stu).number;
cout << setw(8) << (*stu).name;
cout << setw(4) << (*stu).sex;
cout << setw(7) << (*stu).chengji.m_DataStructurescore;
cout << setw(8) << (*stu).chengji.m_Englishscore;
cout << setw(6) << (*stu).chengji.m_Mathscore;
cout << setw(6) << (*stu).chengji.m_PE;
cout << setw(6) << (*stu).chengji.m_Probability;
cout << setw(8) << (*stu).average;
cout << endl;
}
else
{
stu = stu->next;
}
}
if(flag == 1)
{
cout << "您想继续查询吗?(y/n)" << endl;
cin >> c;
while(c != 'y' && c != 'n')
{
cout << "指令错误!!!!!!<请输入y/n!!!!!!!>" << endl;
cin >> c;
}
}
if(flag == 0)
{
cout << "对不起!您要查询的学生不存在!!!!!!" << endl;
cout << "您想继续查询吗?(y/n)" << endl;
cin >> c;
while(c != 'y' && c != 'n')
{
cout << "指令错误!!!!!!<请输入y/n!!!!!!!>" << endl;
cin >> c;
}
}
}while(c == 'y');
}
/*录入学生数据*/
void InputScore()
{
head->next = NULL; //要录入学生信息,必须删除以前所有的信息
amount = 0;
char c;
int j = 0;
student *p = head;
do
{
student *stu = new student;
cout << "请输入学号:(8位)" << setw(4);
cin >> (*stu).number;
cout << "请输入姓名:" << setw(4);
cin >> (*stu).name;
cout << "请输入性别:" << setw(2);
cin >> (*stu).sex;
cout << "请输入数据结构成绩:" << setw(3);
cin >> (*stu).chengji.m_DataStructurescore;
cout << "请输入英语成绩:" << setw(3);
cin >> (*stu).chengji.m_Englishscore;
cout << "请输入数学成绩:" << setw(3);
cin >> (*stu).chengji.m_Mathscore;
cout << "请输入体育成绩:" << setw(3);
cin >> (*stu).chengji.m_PE;
cout << "请输入概率成绩:" << setw(3);
cin >> (*stu).chengji.m_Probability;
(*stu).average = ((*stu).chengji.m_DataStructurescore
+ (*stu).chengji.m_Englishscore + (*stu).chengji.m_Mathscore
+ (*stu).chengji.m_PE + (*stu).chengji.m_Probability) * 0.2;
stu->next = p->next;
p->next = stu;
amount++;
cout << "数据信息录入成功,想继续录入吗?(y/n)";
cin >> c;
p = p->next;
while(c != 'y' && c != 'n')
{
cout << "指令错误<请输入y/n!>!!!!!!" << endl;
cout << "数据信息录入成功,想继续录入吗?(y/n)";
cin >> c;
}
}while(c == 'y');
j++;
cout << "输入了" << amount << "个学生的信息。" << endl;
}
/*显示学生信息*/
void ShowStudentInfo()
{
student *stu = head->next;
cout << "学号\t 姓名 性别 据结构 英语 数学 体育 概率 平均分 " << endl;
int i = 1;
while(stu != NULL && i <= amount)
{
cout << setw(8) << (*stu).number;
cout << setw(8) << (*stu).name;
cout << setw(4) << (*stu).sex;
cout << setw(7) << (*stu).chengji.m_DataStructurescore;
cout << setw(8) << (*stu).chengji.m_Englishscore;
cout << setw(6) << (*stu).chengji.m_Mathscore;
cout << setw(6) << (*stu).chengji.m_PE;
cout << setw(6) << (*stu).chengji.m_Probability;
cout << setw(8) << (*stu).average;
cout << endl;
i++;
stu = stu->next;
}
}
/*显示主菜单*/
void DisplayMainMenu()
{
cout <<"\t-----------------------------------------" << endl;
cout <<"\t|***********学生成绩管理系统************|" << endl;
cout <<"\t|* a.录入学生信息 b.查询学生信息 *|" << endl;
cout <<"\t|* c.修改学生信息 d.删除学生信息 *|" << endl;
cout <<"\t|* e.显示学生信息 f.保存学生信息 *|" << endl;
cout <<"\t|* g.读文件 h.统计学生信息 *|" << endl;
cout <<"\t|* i.排序 k.插入学生信息 *|" << endl;
cout <<"\t|* j.退出软件 *|" << endl;
cout <<"\t|***************************************|" << endl;
cout <<"\t-----------------------------------------" << endl;
}