c++链表实现学生成绩管理系统(简易版)

时间:2022-10-20 13:17:45

常敲代码心情好c++链表实现学生成绩管理系统(简易版)

当年我的学生成绩管理系统的数据结构版是没写出来了的 ,现在有时间,顺便写了个简易版的管理系统,微微弥补一下一直以来的遗憾。c++链表实现学生成绩管理系统(简易版)

#include<iostream>

// #include<cstdlib>
using namespace std;


typedef struct student{
    int id;//学号
    string sex;
    string name;
    int cpp;//c++成绩
    struct student *next;
}stu;


stu *head=NULL;


void record();//记录成绩
void modify();//修改成绩
void print();//打印单科成绩
void aver();//求各科的平均成绩
void Count();//成绩统计
void add();//添加学生
void delt();//删除学生
void print();//打印成绩


int main()
{
    int choice;
    cout<<"\t\t\t学生成绩管理系统\n\n\n";
    cout<<"0.退出系统  1.记录信息  2.修改信息  3.平均成绩  4.统计成绩  5.添加信息  6.删除信息  7.打印成绩\n";
    cout<<"输入选择(0-7): ";
    cin>>choice;
    while(1)
    {
        switch(choice)
        {
            case 0: exit(-1);
            case 1: record();   break;
            case 2: modify();   break;
            case 3: aver  ();   break;
            case 4: Count ();   break;
            case 5: add   ();   break;
            case 6: delt  ();   break;
            case 7: print ();   break;
           default: cout<<"输入有误!\n";   break;
        }
        cout<<"输入选择(0-7): ";
        cin>>choice;
    }
    return 0;
}


void record()
{
    stu *p,*q;
    int i,n;
    cout<<"输入学生人数: ";
    cin>>n;
    i=0;
    cout<<"输入学生信息:姓名  学号  性别  成绩\n";
    while(i<n)
    {
        p=new stu;
        if(head==NULL)
        {
            head=p;
            q=head;
        }
        else
        {
            cin>>p->name>>p->id>>p->sex>>p->cpp;
            q->next=p;
            q=p;
            i++;
        }
    }
}


void modify()
{
    //system("cls");
    cout<<"输入要修改学生的学号: ";
    int id;
    cin>>id;
    stu *p;
    p=head->next;
    while(p)
    {
        if(p->id==id)
        {
            cout<<"请选择要修改的内容:\n";
            cout<<"1.id     2.name      3.sex       4.cpp\n";
            int choice;
            cin>>choice;
            switch(choice)
            {
            case 1:
                {
                    int newid;
                    cout<<"输入新学号: ";
                    cin>>newid;
                    p->id=newid;
                    break;
                }
            case 2:
                {
                    string newname;
                    cout<<"输入新名字: ";
                    getline(cin,newname);
                    p->name=newname;
                    break;
                }
            case 3:
                {
                    string newsex;
                    cout<<"输入新性别: ";
                    getline(cin,newsex);
                    p->sex=newsex;
                    break;
                }
            case 4:
                {
                    int newcpp;
                    cout<<"输入新成绩: ";
                    cin>>newcpp;
                    p->cpp=newcpp;
                    break;
                }
            default:cout<<"输入有误!\n";    break;
            }
            break;
        }
        p=p->next;
    }
}


void aver()
{
    //system("cls");
    stu *p;
    int sum,i;
    sum=0;
    i=0;
    p=head->next;
    while(p)
    {
        sum+=p->cpp;
        i++;
        p=p->next;
    }
    cout<<"所有同学c++的平均成绩为: "<<sum/i<<endl;
}


void Count()
{
    //system("cls");
    int max;
    stu *p,*q;
    p=head->next;
    max=p->cpp;
    q=p;
    while(1)
    {
        p=p->next;
        if(p==NULL)
            break;
        if(max<p->cpp)
        {
            max=p->cpp;
            q=p;
        }
    }
    cout<<q->name<<"的c++获得了第一名\n"<<"最高分为: "<<max<<endl;
}


void add()
{
    //system("cls");
    stu *p,*q;
    p=new stu;
    cout<<"输入新加同学的名字  学号  性别  c++成绩: ";
    cin>>p->name>>p->id>>p->sex>>p->cpp;
    p->next=head->next;
    head->next=p;
}


void delt()
{
    //system("cls");
    stu *p,*q;
    int id;
    cout<<"输入要删除学生的学号: ";
    cin>>id;
    q=head;
    p=q->next;
    while(1)
    {
        if(p->id==id)
        {
            q->next=p->next;
            delete p;
            break;
        }
        q=p;
        p=q->next;
    }
}


void print()
{
    stu *p;
    p=head->next;
    while(p)
    {
        cout<<p->name<<"      "<<p->cpp<<endl;
        p=p->next;
    }
}