ddmingtian 2020-05-12 19:11 采纳率: 0%
浏览 599

c++实现学生信息管理,有一个程序,但是不对,能不能对这个程序进行改进?

1、问题描述
学生信息包括:学号、姓名、性别、年龄、班级等信息。
小学生除了包括学生所有信息外,还包括英语、数学和语文成绩。
大学生除了包括学生所有信息外,还包括专业、英语、程序设计和高等数学等课程。
设计一程序能够对学生成绩进行管理,应用到继承、抽象类、虚函数、虚基类、多态和文件的输入/输出等内容。
2、功能要求
(1)添加功能:程序能够添加不同学生的记录,提供选择界面供用户选择所要添加的类别,要求学号要唯一,如果添加了重复学号的记录时,则提示数据添加重复并取消添加。
(2)显示功能:可显示当前系统中所有学生的记录,每条记录占据一行。
(3)删除功能:主要实现对已添加的学生记录进行删除。如果当前系统中没有相应的记录,则提示“记录为空!”并返回操作。
(4)求小学生、大学生各自的平均成绩。

#include<bits/stdc++.h>
#include<iostream>
#include <string>
using namespace std;

class xuesheng
{
    public:
        char number[20];
        char name[20];
        char sex;
        int age;
        int classs ;
};
class xiaoxuesheng :public xuesheng
{
    public:
        float english;
        float math;
        float chinese;
        xiaoxuesheng(char number[20],char name[20],char sex,int age,int classs,float english,float math,float chinese);
};
class daxuesheng: public xuesheng
{
    public: 
        float major;
        float english;
        float programming;
        float high_math;
        d\
        daxuesheng(char number[20],char name[20],char sex,int age,int classs,float major,float english;,float programming,float high_math);
};
void input_xiaoxuesheng()
 {
    cout<<"依次输入小学生信息:学号、姓名、性别、年龄、班级、英语成绩、数学成绩、语文成绩"<<endl;
    cin<<number<<name<<sex<<age<<classs<<english<<math<<chinese<<endl; 
    p1=new xiaoxuesheng;
    p1->number=number;p1->name=name;p1->sex->sex;p1->age=age;p1->classs=classs;p1->english=english;p1->math=math;p1->chinese=chinese;
    cout<<"增添新同学成功"<<endl;
 };
void input_daxuesheng()
 {
    cout<<"依次输入大学生信息:学号、姓名、性别、年龄、班级、专业成绩、英语成绩、程序设计成绩、高等数学成绩"<<endl;
    cin<<number<<name<<sex<<age<<classs<<major<<english<<programming<<high_math<<endl; 
    p2=new daxuesheng;
    p2->number=number;p2->name=name;p2->sex->sex;p2->age=age;p2->classs=classs;p2->major=major;p2->english=english;p2->programming;p2->high_math=high_math;
    cout<<"增添新同学成功"<<endl;
 };
void delete_xiaoxuesheng
{
    delete p1;  
 } ;
void delete_daxuesheng
{
    delete p2;
};
int main()
{  
    char d;
    bool run=1;
    //显示系统操作界面
    while(run)
    {
        cout<<">>请输入操作类型<<","[A:对小学生操作]","[B:对大学生操作]","[C:显示全部学生信息]","[D:求小学生和大学生的各自平均值 ]","[E:退出]"<<endl;
        cout<<endl;
        for(int i=0;i<48;i++)cout<<" ";
        cin>>d;
    //对小学生进行操作 
        if(d=='A'){        //对小学生进行操作 
            cout<<">>请输入操作类型<<","[A:添加学生信息]",,"[B:删除学生信息]","[C:返回上一界面]"<<endl;
            bool flag=true;//判断是否退出操作
            while(flag)//循环操作
            {
                for(int i=0; i<42; i++)cout<<" ";
                cout<<"请输入操作指令:\n"<<endl;
                for(int i=0; i<48; i++)cout<<" ";
                cin>>choice;
                switch(choice)
                {
                    case 'A':
                        input_xiaoxuesheng();
                    case 'B':
                        delete_xiaoxuesheng();
                        break;
                    case 'C':
                        flag=false;
                        break;
                    default :
                        for(int i=0; i<43; i++)cout<<" ";
                        cout<<"Input Error!"<<endl;        //??????????????????????????????????????
                }
            }
        }
    //对大学生进行操作 
        else if(d=='B'){           //对大学神进行操作 
            cout<<">>请输入操作类型<<","[A:添加学生信息]",,"[B:删除学生信息]","[C:返回上一界面]"<<endl;
            bool flag=true;//判断是否退出操作
            while(flag)//循环操作
            {
                for(int i=0; i<42; i++)cout<<" ";
                cout<<"请输入操作指令:\n"<<endl;
                for(int i=0; i<48; i++)cout<<" ";
                cin>>choice;
                switch(choice)
                {
                    case 'A':           
                       input_daxuesheng(); 
                        break;
                    case 'B':
                        delete_daxuesheng();  
                        break;
                    case 'C':
                        flag=false;
                        break;
                    default :
                        for(int i=0; i<43; i++)cout<<" ";
                        cout<<"Input Error!"<<endl;
                }
            }
        }
    //显示全部学生信息 
        else if(d=='C'){         //显示全部学生信息 
            cout<<">>全部学生信息<<"<<endl;
            show_all_message(); 
        }
    //求小学生和大学生各自的成绩平均 
        else if(d=='D'){         //求小学生和大学社各自成绩的平均 
            cout<<">>小学生的大学生的各自平均成绩<<"<<endl;
            average(); 
        }
    //退出程序 
        else if(d=='E'){
            run=0;
            cout<<endl;
            for(int i=0;i<44;i++)cout<<" ";
            cout<<"退出成功!"<<endl;
        }
        else{
            cout<<endl;
            for(int i=0;i<40;i++)cout<<" ";
            cout<<"输入的操作有误!"<<endl;
        }
    }
    return 0; 
};

  • 写回答

1条回答 默认 最新

  • threenewbee 2020-05-12 22:00
    关注

    修改当然是可以,但是如果要修改的程序本身都不正确,而且和你的需求差距较大,那么比重新写还费劲。
    加上你的问题没有悬赏,你也没有历史信用。这种吃力不讨好的事情,估计你亲儿子都未必愿意帮你搞。你最好还是让老师给你做吧,毕竟他是收了你学费的人,就应该为你负责到底。

    评论

报告相同问题?

悬赏问题

  • ¥15 用matlab 设计一个不动点迭代法求解非线性方程组的代码
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler
  • ¥15 oracle集群安装出bug
  • ¥15 关于#python#的问题:自动化测试
  • ¥20 问题请教!vue项目关于Nginx配置nonce安全策略的问题
  • ¥15 教务系统账号被盗号如何追溯设备
  • ¥20 delta降尺度方法,未来数据怎么降尺度
  • ¥15 c# 使用NPOI快速将datatable数据导入excel中指定sheet,要求快速高效