#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <cstdio>
#include <string.h>
using namespace std;
void Store();
void Insert();
void Delete();
void Show_all();
void Menu();
int num=0; //统计学生人数
typedef struct{
string name;
int math;
int english;
}Student;
Student student[100];
void mathScore_paixu();
void englishScore_paixu();
int main(){
int a;
while(1){
Menu();
cout<<"请输入数字选择:";
cin>>a;
if(a==1){
Store();
}else if(a==2){
Insert();
}else if(a==3){
Delete();
}else if(a==4){
Show_all();
}else if(a==5){
mathScore_paixu();
}
else if(a==6){
englishScore_paixu();
}
else break;
}
return 0;
}
void Menu(){ //目录
printf("\t\t******************************\n");
printf("\t\t* 1.录入学生数据 \n");
printf("\t\t 2.插入学生信息 \n");
printf("\t\t 3.删除学生信息 \n");
printf("\t\t 4.显示所有学生信息 \n");
printf("\t\t 5.高数成绩排序 \n");
printf("\t\t 6.英语成绩排序 \n");
printf("\t\t 7.退出 \n");
printf("\t\t*****************************\n\n");
}
void Store(){ //录入学生信息
system(“cls”);
int n;
printf("\n请输入学生人数(小于100):");
cin>>n;
num=n;
cout <<“姓名”<<’\t’<<“高数”<<’\t’<<“英语”<< endl;
for(int i=0;i<n;i++){
cin>>student[i].name;
cin>>student[i].math;
cin>>student[i].english;
}
system(“cls”);
printf(“学生信息录入完毕!\n\n”);
}
void Insert(){ //插入学生信息
int c;
system(“cls”) ;
printf("\n请输入插入位置:");
cin>>c;
cout <<“姓名”<<’\t’<<“高数”<<’\t’<<“英语”<< endl;
for(int i=num;i>=c;i–) {
student[i].name = student[i-1].name ;
student[i].math = student[i-1].math ;
student[i].english = student[i-1].english;
}
cin>>student[c-1].name ;
cin>>student[c-1].math;
cin>>student[c-1].english;
system(“cls”);
printf(“插入成功!\n\n”);
num++;
}
void Delete(){ //删除某位置的学生的信息
system(“cls”);
int a;
printf(“请输入删除学生的位置:”);
cin>>a;
for(int i=a-1;i<num-1;i++){
student[i].name = student[i+1].name ;
student[i].math = student[i+1].math;
student[i].english= student[i+1].english;
}
num–;
}
void Show_all(){ //显示所有学生信息
system(“cls”);
if(num>=0) {
printf(“共有%d位学生\n\n”,num);
cout <<“姓名”<<’\t’<<“高数”<<’\t’<<“英语”<< endl;
for(int i=0;i<num;i++){
cout <<student[i].name<<’\t’<<student[i].math<<’\t’<<student[i].english<< endl;
}
printf(“全部学生信息显示完毕!\n\n”);
}
else printf(“请先录入学生信息!\n\n”);
}
使用冒泡排序对成绩进行排序
void mathScore_paixu() //按高数成绩排序(降序)
{
int len=num;
for(int j=0; j<len-1; j++)
for(int i=0; i<len-j-1; i++)
if (student[i].math<student[i+1].math)
{
int tmp1=student[i].math;
string tmp2=student[i].name;
int tmp3=student[i].english;
student[i].math=student[i+1].math;
student[i].name=student[i+1].name;
student[i].english=student[i+1].english;
student[i+1].math=tmp1;
student[i+1].name=tmp2;
student[i+1].english=tmp3;
}
cout <<"姓名"<<'\t'<<"高数"<<'\t'<<"英语"<< endl;
for(int i=0; i<num; i++)
{
cout <<student[i].name<<'\t'<<student[i].math<<'\t'<<student[i].english<< endl;
}
return ;
}
void englishScore_paixu() //按英语成绩排序 (降序)
{
int len=num;
for(int j=0; j<len-1; j++)
for(int i=0; i<len-j-1; i++)
if (student[i].english<student[i+1].english)
{
int tmp1=student[i].math;
string tmp2=student[i].name;
int tmp3=student[i].english;
student[i].math=student[i+1].math;
student[i].name=student[i+1].name;
student[i].english=student[i+1].english;
student[i+1].math=tmp1;
student[i+1].name=tmp2;
student[i+1].english=tmp3;
}
cout <<"姓名"<<'\t'<<"高数"<<'\t'<<"英语"<< endl;
for(int i=0; i<num; i++)
{
cout <<student[i].name<<'\t'<<student[i].math<<'\t'<<student[i].english<< endl;
}
return ;
}