zoukankan      html  css  js  c++  java
  • c++链表实现学生成绩管理系统(简易版)

    #include<iostream>
    using namespace std;
    
    typedef struct student{
        int id;//学号
        string sex;
        string name;
        int cpp;//c++成绩
        struct student *next;
    }stu;
    
    
    stu *head=NULL;
    
    void test(); // 测试头指针是否为空
    void record();//记录成绩
    void modify();//修改成绩
    void print();//打印单科成绩
    void aver();//求各科的平均成绩
    void Count();//成绩统计
    void add();//添加学生
    void delt();//删除学生
    void print();//打印成绩
    
    
    int main()
    {
        int choice;
        cout<<"			学生成绩管理系统
    
    
    ";
        cout<<"0.退出系统  1.记录信息  2.修改信息  3.平均成绩  4.统计成绩  5.添加信息  6.删除信息  7.打印成绩
    ";
        cout<<"输入选择(0-7): ";
        cin>>choice;
        while(1)
        {
            switch(choice)
            {
                case 0: exit(0);
                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<<"输入有误!
    ";   break;
            }
            cout<<"输入选择(0-7): ";
            cin>>choice;
        }
        return 0;
    }
    
    void test() {
    	if (!head) {
        	cout << "head NULL
    ";
        	exit(-1);
        }
    }
    
    void record()
    {
        stu *p,*q;
        int i,n;
        cout<<"输入学生人数: ";
        cin>>n;
        i=0;
        cout<<"输入学生信息:姓名  学号  性别  成绩
    ";
        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()
    {
        cout<<"输入要修改学生的学号: ";
        int id;
        cin>>id;
        stu *p;
        test();
        p=head->next;
        while(p)
        {
            if(p->id==id)
            {
                cout<<"请选择要修改的内容:
    ";
                cout<<"1.id     2.name      3.sex       4.cpp
    ";
                int choice;
                cin>>choice;
                switch(choice)
                {
                case 1:
                    {
                        int newid;
                        cout<<"输入新学号: ";
                        cin>>newid;
                        p->id=newid;
                        break;
                    }
                case 2:
                    {
                        string newname;
                        cout<<"输入新名字: ";
                        cin>>newname;
                        p->name=newname;
                        break;
                    }
                case 3:
                    {
                        string newsex;
                        cout<<"输入新性别: ";
                        cin>>newsex;
                        p->sex=newsex;
                        break;
                    }
                case 4:
                    {
                        int newcpp;
                        cout<<"输入新成绩: ";
                        cin>>newcpp;
                        p->cpp=newcpp;
                        break;
                    }
                default:cout<<"输入有误!
    ";    break;
                }
                break;
            }
            p=p->next;
        }
    }
    
    
    void aver()
    {
        stu *p;
        int sum,i;
        sum=0;
        i=0;
        test();
        p=head->next;
        while(p)
        {
            sum+=p->cpp;
            i++;
            p=p->next;
        }
        cout<<"所有同学c++的平均成绩为: "<<sum/i<<endl;
    }
    
    
    void Count()
    {
        int max;
        stu *p,*q;
        test();
        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++获得了第一名
    "<<"最高分为: "<<max<<endl;
    }
    
    
    void add()
    {
        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;
        test();
        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;
        test();
        p=head->next;
        while(p)
        {
            cout<<p->name<<"      "<<p->cpp<<endl;
            p=p->next;
        }
    }
  • 相关阅读:
    Python RabbitMQ
    对于一些概念的澄清
    Python没有执行__init__
    python中的gil是什么?
    linux命令行快捷键
    关于异步:再次思考和澄清
    greenlet代码解读
    关于协程
    设计模式-重复重复的设计模式
    组合模式-虚有其表的模式
  • 原文地址:https://www.cnblogs.com/deepspace/p/10260744.html
Copyright © 2011-2022 走看看