| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 439 人关注过本帖
标题:请教关于一个关于用类编写学分计算程序时遇到的问题
只看楼主 加入收藏
深藏依旧
Rank: 2
等 级:论坛游民
帖 子:45
专家分:93
注 册:2012-12-8
结帖率:100%
收藏
已结贴  问题点数:40 回复次数:3 
请教关于一个关于用类编写学分计算程序时遇到的问题
#include<iostream>
#include<cstring>
using namespace std;
class Course
{
private:
    char CourseTitle[20];
    int CourseNo;
    int CreditHours;
    int mark;
    float score;
public:
    void SetCourseTitle()  //获取课程名的成员函数
    {
        char temp[20];
        cin>>temp;
        strcpy(CourseTitle,temp);
    }

    char* GetCourseTitle()  //取出课程名的成员函数
    {
        return CourseTitle;
    }
        
    void SetCourseNo()  //同上,获取课程编号
    {
        int temp;
        cin>>temp;
        CourseNo = temp;
    }

    int GetCourseNo()   //取出课程号
    {
        return CourseNo;
    }

    void SetCreditHours()  //获取课程的的学分
    {
        int temp;
        cin>>temp;
        CreditHours = temp;
    }

    int GetCreditHours()   //取出课程的学分
    {
        return CreditHours;
    }


    void Setmarks()   //获取课程的成绩
    {
        int temp;
        cin>>temp;
        mark = temp;
    }
    int Getmarks()  //取出成绩
    {
        return mark;
    }

    void GetScore(Course p[],int n)  
    {
        float T1=0,T2=0;float T3;//实现学分积点的计算
        for(int i=0;i<n;i++)
        {
            T1+=(p[i].Getmarks() - 50);
            T2+=p[i].GetCreditHours();
        }
        
        T3 = T1/T2;
        cout<<T3<<endl;
    }

};
class Student
{
private:
    char Name[20];
    int Number;
public:
    void SetName()
    {
        char temp[20];
        cin>>temp;
        strcpy(Name,temp);
    }
    char* GetName()
    {
        return Name;
    }
    void SetNumber()
    {
        int temp;
        cin>>temp;
        Number=temp;
    }
    int GetNumber()
    {
        return Number;
    }
    void Print(Student p[],int n)
    {
        for(int i=0;i<n;i++)
        {
            cout<<p[i].GetName()<<" "<<p[i].GetNumber()<<endl;
        }

    }
};

class Class
{
private:
    int _SNumber;//班级的的学生数
public:
   

};

void main()
{

    cout<<"*****************************学分积点计算系统*****************************"<<endl<<endl<<endl;
    cout<<"  \t\t "<<"1.读取学生信息"<<"\t\t"<<"2.输入学生信息"<<endl<<endl;
    cout<<"  \t\t "<<"3.读取课程信息"<<"\t\t"<<"4.计算学分积点"<<endl<<endl;
    cout<<"  \t\t "<<"5.按照积点排序"<<"\t\t"<<"6.返回到主菜单"<<endl<<endl;
    cout<<"请输入你要进行的操作:"<<endl;


        int count2;
        cout<<"请输入学生的个数"<<endl;
        cin>>count2;
        Student* p2 = new Student[count2];
        for(int i=0;i<count2;i++)
        {
            cout<<"请输入第"<<i+1<<"个学生的姓名"<<endl;
            p2[i].SetName();
            cout<<"请输入第"<<i+1<<"个学生的学号"<<endl;
            p2[i].SetNumber();
        }


        int count1;
        cout<<"请输入课程的数目:"<<endl;
        cin>>count1;
        Course* p1 = new Course[count1];
        for( int j = 0;j < count1;j ++)
        {
            cout<<"请输入第"<<j+1<<"课课程名:"<<endl;
            p1[j].SetCourseTitle();
            cout<<"请输入第"<<j+1<<"课课程号:"<<endl;
            p1[j].SetCourseNo();   
            cout<<"请输入第"<<j+1<<"课课程的学分数:"<<endl;
            p1[j].SetCreditHours();
            cout<<"请输入第"<<j+1<<"课课程的成绩:"<<endl;
            p1[j].Setmarks();
        }   
        Course a;
        a.GetScore(p1,count1);   
 }
这个程序现在只能计算学分,但是要调节这三个类Course,Student,Class让程序实现mian()中的菜单功能,我用while语句的话实现不了 不知怎么调用。
还有这3个类要是继承关系,又该怎么调用?
int m;
cin>>m;
while(m==2)
{       int count2;
        cout<<"请输入学生的个数"<<endl;
        cin>>count2;
        Student* p2 = new Student[count2];
        for(int i=0;i<count2;i++)
        {   cout<<"请输入第"<<i+1<<"个学生的姓名"<<endl;
            p2[i].SetName();
            cout<<"请输入第"<<i+1<<"个学生的学号"<<endl;
            p2[i].SetNumber();
        }
};
while(m==3)
{        int count1;
        cout<<"请输入课程的数目:"<<endl;
        cin>>count1;
        Course* p1 = new Course[count1];
        for( int j = 0;j < count1;j ++)
        {   cout<<"请输入第"<<j+1<<"课课程名:"<<endl;
            p1[j].SetCourseTitle();
            cout<<"请输入第"<<j+1<<"课课程号:"<<endl;
            p1[j].SetCourseNo();   
            cout<<"请输入第"<<j+1<<"课课程的学分数:"<<endl;
            p1[j].SetCreditHours();
            cout<<"请输入第"<<j+1<<"课课程的成绩:"<<endl;
            p1[j].Setmarks();
        }   
};这样在while(m==3)和whlie(m==4)中就没法调用输入的那些数据了
希望遇到类似的能帮我一下

搜索更多相关主题的帖子: public include private 课程 
2012-12-29 21:55
深藏依旧
Rank: 2
等 级:论坛游民
帖 子:45
专家分:93
注 册:2012-12-8
收藏
得分:0 
会的看看

厚积薄发
2012-12-30 09:30
cwds
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:23
专家分:134
注 册:2012-6-17
收藏
得分:40 
lz明白while的意思不。。。
while在这里不是“当...时(,做...)”,while表示循环,具体的去看书。你写的while(m == 2)语句,如果m的值为2,那么while的循环体就会执行。除非循环体内m的值被改变,否则就是死循环,即循环体会一直执行。这样当然就不会跳到while(m == 3)还有while(m == 4)了。
你其实可以:
while (1)  //这里只是示例,你可以不要写成while (1)这样的死循环。而换成比如m != -1什么的来结束
{
    cin >> m;
    switch (m)
    {
    case 2:
        // do sth
        break;
    case 3:
        // do sth else
        break;
    //other case
    }
}
还有关于你讲的继承,把course、student、class三者定为继承关系有点不合理的,如果是:student继承自person、collegeStudent继承自student,这样会比较合理,要结合现实生活。建议你再看看书上怎么讲继承的,还有封装、多态。
2012-12-31 00:18
深藏依旧
Rank: 2
等 级:论坛游民
帖 子:45
专家分:93
注 册:2012-12-8
收藏
得分:0 
这个while不是重点,这个我也知道,我只是想说明白我的问题,我只是想求解这个程序按菜单的选择进行,该在main()中怎么用?

厚积薄发
2012-12-31 11:33
快速回复:请教关于一个关于用类编写学分计算程序时遇到的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.040768 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved