数据结构设计--学生信息管理系统

目录

1.环境

2.知识图

3.程序的功能

4.程序的源代码


1.环境

vs code

2.知识图

快排+哈希

3.程序的功能

(1)程序中的数据存储到文件中。

(2) 录入学生成绩,格式如下:

(学号(12位) 、姓名、性别、专业、班级、课程成绩(5门课程),总分)其中,总分通过程序计算求得。

(3)输出所有学生成绩。

(a)按某门课程成绩降序输出。

(b)按总分降序输出所有成绩,总分相同的再按学号升序输c)按班级升序输出所有成绩,同一个班级的按总分降序输出。

(4)可以删除某个学生的成绩(删除时按学号删除)。

(5)成绩查询

(a)根据姓名查找该生的成绩信息,若有同名,则输出所有同名学生的成绩信息。

(b)根据班级查找该班的所有成绩信息,并按总分降序输出。

(6)统计

(a)统计每个学生的平均分,按平均分降序输出。

(b)统计每个专业的平均分,按平均分降序输出。

(c)统计每个班中总分最高的前三名和总分最低的后三名,并输出。

(d)统计获得励志奖学金的学生信息。励志奖学金的获取条件为:平均分>=90分且各科成绩>=85分且在班级的排名为前三名。

4.程序的源代码

#include
#include
#include
#include
#include
using namespace std;

const int N=1000;

typedef struct{
    string xuehao;//学号 
    string name;//姓名 
    string sex;//性别 
    string zhuanye;//专业 
    string banji;//班级 
    int a,b,c,d,e;//五门课的成绩 
    int sum;//总成绩 
    float ave;//平均分 
    float zy_sum; 
}stu;

stu student[N];
int n;//学生人数 

void init()//初始化 
{
    n=0;
    return ;
} 

void readfile()//录入学生成绩 
{    
    int i=0;
    init();
    ifstream infile("D:\\下载2\\student.txt");
    while(!infile.eof())    
    {
        infile>>student[i].xuehao;
        infile>>student[i].name;
        infile>>student[i].sex;
        infile>>student[i].zhuanye;
        infile>>student[i].banji;
        infile>>student[i].a;
        infile>>student[i].b;
        infile>>student[i].c;
        infile>>student[i].d;
        infile>>student[i].e;
        i++;
    }
    n=i;
    infile.close();
    for(int i=0;i=r) return ;
    int i=l-1,j=r+1;
    if(op==1)
    {
        int x=student[l+r>>1].a;
        while(ix);
            do j--;while(student[j].a>1].b;
        while(ix);
            do j--;while(student[j].b>1].c;
        while(ix);
            do j--;while(student[j].c>1].d;
        while(ix);
            do j--;while(student[j].d>1].e;
        while(ix);
            do j--;while(student[j].e>1].sum;
        while(ix);
            do j--;while(student[j].sumstudent[j+1].xuehao)
                {
                    stu student1=student[j];
                    student[j]=student[j+1];
                    student[j+1]=student1;
                }
            }
        }
    }
    return ; 
}

void bj_sort()//班级升序,同一个班级按总分降序 
{
    for(int i=0;istudent[j+1].banji)
            {
                stu student1=student[j];
                student[j]=student[j+1];
                student[j+1]=student1;
            }
            else if(student[j].banji==student[j+1].banji)
            {
                if(student[j].sum>x;
    int ans=0;
    for(int i=0;i>x;
    int ans=0;
    int f=0;
    for(int i=0;i>x;
    stu student1[N];
    int ans=0,f=0;
    for(int i=0;i h;//STL里面的哈希表,也可以手写哈希表 
    for(int i=0;i::iterator it=h.begin();it!=h.end();it++)
    {
        double sum=0;
        for(int i=0;ifirst)
            {
                sum+=student[i].sum;
            }
        }
        sum/=it->second;//专业的平均分
        for(int i=0;ifirst)
            {
                student[i].zy_sum=sum;
            }
        } 
    }
    for(int i=0;istudent[j+1].zy_sum)
            {
                stu student1=student[j];
                student[j]=student[j+1];
                student[j+1]=student1;
            }
        }
    }
    return ; 
}

void bjtj()//统计每个班最高的前三名和最低的后三名 
{
    map h;
    for(int i=0;i::iterator it=h.begin();it!=h.end();it++)
    {
        stu student1[N];
        int ans=0;
        for(int i=0;ifirst)
            {
                student1[ans++]=student[i];
            }
        }
        quick_sort(student1,0,ans-1,6);//排序每个班
        cout<first<=ans-3;i--)
            cout< h;
    int m=0;
    for(int i=0;i::iterator it=h.begin();it!=h.end();it++)
    {
        stu student1[N];
        int ans=0;
        for(int i=0;ifirst)
            {
                student1[ans++]=student[i];
            }
        }
        quick_sort(student1,0,ans-1,6);//排序每个班
        for(int i=0;i<3;i++)
        {
            if(student1[i].ave>=90&&student1[i].a>=85&&student1[i].b>=85&&student1[i].c>=85&&student1[i].d>=85&&student1[i].e>=85)
            {
                m++;
                printf("第%d名学生信息:\n",m);
                cout<>op;
    quick_sort(student,0,n-1,op);
}

void print()
{
    for(int i=0;i>op;
        switch(op)
        {
            case 1:
                cout<<"欢迎下次使用!"<

你可能感兴趣的:(算法,c++,算法,数据结构)