基于顺序表对成绩表的操作(录入,插入,删除,排序)

#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 ;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值