C/C++实现学生成绩管理系统

代码如下,需要的自取,有不对的请指出。

#include<iostream>
#include<stdio.h>
#include<cstdlib>
#define maxsize 3
using namespace std;
typedef struct sd
{
    int xuehao;
    char name[20];
    int yuwen,shuxue,yingyu,wuli,huaxue,shengwu;
    int sum;
}student;

typedef student *stu;

struct sd tempt;

void prt(stu h)//打印学生成绩
{
    stu use;
    use=h;
    int i;
    cout<<"\t学号\t"<<"姓名\t"<<"语文\t"<<"数学\t"<<"英语\t"<<"物理\t"<<"化学\t"<<"生物\t"<<"总成绩\t"<<endl;
    for(i=0;i<maxsize;i++)
    {
        cout<<"\t"<<use[i].xuehao<<"\t"
            <<use[i].name<<"\t"
            <<use[i].yuwen<<"\t"
            <<use[i].shuxue<<"\t"
            <<use[i].yingyu<<"\t"
            <<use[i].wuli<<"\t"
            <<use[i].huaxue<<"\t"
            <<use[i].shengwu<<"\t"
            <<use[i].sum<<endl;
    }
}


stu creat_biao()//输入学生成绩
{
    int i;
    stu use = new student[maxsize];
    stu w = new student;
    //printf("%d %d",sizeof(use),sizeof(w));
    for(i=0;i<maxsize;i++){
        cout<<endl<<"\t请输入第:"<<i+1<<"个学生信息";
        cout<<endl<<"\t\t请输入学生学号:"<<' ';cin>>use[i].xuehao;
        cout<<endl<<"\t\t请输入学生姓名:"<<' ';scanf("%s",use[i].name);
        cout<<endl<<"\t\t请输入语文成绩:"<<' ';cin>>use[i].yuwen;
        cout<<endl<<"\t\t请输入数学成绩:"<<' ';cin>>use[i].shuxue;
        cout<<endl<<"\t\t请输入英语成绩:"<<' ';cin>>use[i].yingyu;
        cout<<endl<<"\t\t请输入物理成绩:"<<' ';cin>>use[i].wuli;
        cout<<endl<<"\t\t请输入化学成绩:"<<' ';cin>>use[i].huaxue;
        cout<<endl<<"\t\t请输入生物成绩:"<<' ';cin>>use[i].shengwu;
        use[i].sum=use[i].yuwen + use[i].shuxue + use[i].yingyu + use[i].wuli + use[i].huaxue + use[i].shengwu;
        cout<<endl<<"输入完成!"<<endl<<endl;
    }
    prt(use);
    return use;
}

void xuehao_p(stu h)//按照学号排序
{
    stu use;
    use=h;
    int i,j;
    for(i=1;i<maxsize;i++){
        tempt = use[i];
        for(j=i-1;j>=0;j-=1){
            if(tempt.xuehao<use[j].xuehao){
                use[j+1] = use[j];
            }
            else{
                break;
            }
        }
        use[j+1] = tempt;
    }
    // for(int i=0;i<maxsize-1;i++)
    // {
    //     for(int j=0;j<maxsize-i-1;j++)
    //     {
    //         if(use[j+1].xuehao<use[j].xuehao)
    //         {
    //             tempt=use[j+1];
    //             use[j+1]=use[j];
    //             use[j]=tempt;
    //         }
    //     }
    // }
    cout<<"\t按照学号排名如下"<<endl;
    prt(use);
}

void zong_p(stu h)//按照总成绩排序
{
    stu use;    
    use=h;
    int i,j;
    for(i=1;i<maxsize;i++){
        tempt = use[i];
        for(j=i-1;j>=0;j-=1){
            if(tempt.sum>use[j].sum){
                use[j+1] = use[j];
            }
            else{
                break;
            }
        }
        use[j+1] = tempt;
    }
    // for(int i=0;i<maxsize-1;i++)
    // {
    //     for(int j=0;j<maxsize-i-1;j++)
    //     {
    //         if(use[j+1].sum>use[j].sum)
    //         {
    //             tempt=use[j+1];
    //             use[j+1]=use[j];
    //             use[j]=tempt;
    //         }
    //     }
    // }
    cout<<"\t按照总成绩排名如下"<<endl;
    prt(use);
}

void danke_show(stu h)//单科成绩最优
{
    stu use;
    use=h;
    int yuwen=0,shuxue=0,yingyu=0,wuli=0,huaxue=0,shengwu=0;
    int yuwen_h,shuxue_h,yingyu_h,wuli_h,huaxue_h,shengwu_h;
    for(int i=0;i<maxsize;i++)
    {
        if(yuwen<use[i].yuwen)
        {
            yuwen=use[i].yuwen;
            yuwen_h=i;
        }
        if(shuxue<use[i].shuxue)
        {
            shuxue = use[i].shuxue;
            shuxue_h=i;
        }
        if(yingyu<use[i].yingyu)
        {
            yingyu=use[i].yingyu;
            yingyu_h=i;
        }
        if(wuli<use[i].wuli)
        {
            wuli=use[i].wuli;
            wuli_h=i;
        }
        if(huaxue<use[i].huaxue)
        {
            huaxue=use[i].huaxue;
            huaxue_h=i;
        }
        if(shengwu<use[i].shengwu)
        {
            shengwu=use[i].shengwu;
            shengwu_h=i;
        }
    }
    cout<<endl<<"科目\t"<<"成绩\t"<<"姓名";
    cout<<endl<<"语文\t"<<yuwen<<"\t"<<use[yuwen_h].name;
    cout<<endl<<"数学\t"<<shuxue<<"\t"<<use[shuxue_h].name;
    cout<<endl<<"英语\t"<<yingyu<<"\t"<<use[yingyu_h].name;
    cout<<endl<<"物理\t"<<wuli<<"\t"<<use[wuli_h].name;
    cout<<endl<<"生物\t"<<shengwu<<"\t"<<use[shengwu_h].name;
    cout<<endl<<"化学\t"<<huaxue<<"\t"<<use[huaxue_h].name;
}

void file_stronge(stu h)
{
    FILE *filep;
    stu use=h;
    xuehao_p(use);
    filep=fopen("student_data.txt","w+");
    fprintf(filep,"学号 姓名 语文 数学 英语 物理 化学 生物 总分\n");
    for(int i=0;i<maxsize;i++)
    {
        fprintf(filep,"%d\t%s\t%d\t%d\t%d\t%d\t%d\t%d\t%3d\n",use[i].xuehao,use[i].name,use[i].yuwen,use[i].shuxue,use[i].yingyu,use[i].wuli,use[i].huaxue,use[i].shengwu,use[i].sum);
    }
}

int main()
{
    int b=1,choose;
    stu use;
    printf("%x\n\n",&use);
    while(b)
    {
        system("cls");
        cout<<"\t\t——————学生成绩管理系统——————"<<endl
            <<"\t\t|1.输入学生信息及成绩\t|"<<endl
            <<"\t\t|2.查看学生信息及成绩\t|"<<endl
            <<"\t\t|3.按照总成绩排名\t|"<<endl
            <<"\t\t|4.单科成绩最高分\t|"<<endl
            <<"\t\t|5.将成绩保存在文件中\t|"<<endl
            <<"\t\t|0.退出程序\t\t|"<<endl;
        cout<<"\t请选择以上功能:";
        cin>>choose;
        switch (choose)
        {
            case 1:use=creat_biao();    break;
            case 2:xuehao_p(use);       break;
            case 3:zong_p(use);         break;
            case 4:danke_show(use);     break;
            case 5:file_stronge(use);   break;
            case 0:b=0;                 break;
        }
        if(choose != 0)
        {
            cout<<endl<<"点击任意键继续!"<<endl;
            getchar();
            getchar();
        }
    }
    system("cls");
    free(use);
}

  • 15
    点赞
  • 114
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值