| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 390 人关注过本帖
标题:麻烦帮看下程序
只看楼主 加入收藏
skd718
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2010-5-31
结帖率:0
收藏
已结贴  问题点数:20 回复次数:2 
麻烦帮看下程序
#include <iostream.h>
#include <string.h>

int length = 0;

class student
{
     int num;
     char name[20];
     double score;
     friend class stulist;
};

class stulist
{
     student *stu;
    int volume;
   
    public:
   
    stulist(int n)
     {
           stu=new student[n];
           volume=n;
     }
   
    void add(int nu,char na[],double sc)
     {
         if (length > volume)
             cout<<"full"<<endl;
         else
         {
               stu[length].num=nu;   
               strcpy(stu[length].name,na);
               stu[length].score=sc;
               length++;
           }
     }
   
    void search(int n)
    {
       int i=0;
       for(i=0;i<=length;i++)
       {
           if(stu[i].num==n)
           {
                   cout<<"学号:"<<stu[i].num<<"姓名:"<<stu[i].name<<"成绩:"<<stu[i].score<<endl;
              }
       }
       if (i==length)
              cout<<"没有记录!"<<endl;
    }


    void sort()
    {
       int i,j,tnu;
       double tsc;
       char tna[20];
      
       for(i=0;i<length-1;i++)
       {
           for(j=0;j<length-i-1;j++)
           {
              if(stu[j].score>stu[j+1].score)
              {
                  tnu=stu[j].num;
                  stu[j].num=stu[j+1].num;
                  stu[j+1].num=tnu;
                  tsc=stu[j].score;
                  stu[j].score=stu[j+1].score;
                  stu[j+1].score=tsc;
                  strcpy(tna,stu[j].name);
                  strcpy(stu[j].name,stu[j+1].name);
                  strcpy(stu[j+1].name,tna);
              }
          }
       }
    }
   
    void print()
    {
        cout<<"学号\t"<<"姓名\t"<<"成绩\t"<<endl;
        for(int i=0;i<length;i++)
        {
             cout<<stu[i].num<<"\t"<<stu[i].name<<"\t"<<stu[i].score<<"\t"<<endl;
        }
    }
};

void main()
{
    int nu,n;
    double sc;
    char na[20];
    cout<<"请输入学生人数:"<<endl;
    cin>>n;
    stulist *st = new stulist(n);
   
    for(int i=0;i<n;i++)
    {
        cout<<"请依次输入这"<<i<<"位学生的学号,姓名,成绩:"<<endl;
        cin>>nu;
        cin>>na;
        cin>>sc;
        st[0].add(nu,na,sc);
        st[0].print(); //good
    }
}
老哥给了个程序,让我看,看不明白啊!那位大侠能给解释下,这个程序的结构是什么样的啊!
搜索更多相关主题的帖子: 麻烦 
2010-05-31 23:30
南国利剑
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:29
帖 子:1165
专家分:3536
注 册:2010-4-12
收藏
得分:10 
简单的浏览了一下代码:
第一个类,没有公有接口,所以第一个类的所有的私有成员的操作都是通过友元类的公有接口实现的。建议把第一个类直接定义成结构体会更好。

这是一个存储学生信息的程序。基本的功能就是对学生信息进行输入输出。

第二个类有一个student类的指针,这个指针是这个类实现用链表存储学生信息的关键技术。

大体上就是这样了。

南国利剑
2010-06-01 00:26
yuls
Rank: 2
等 级:论坛游民
帖 子:23
专家分:60
注 册:2010-5-28
收藏
得分:10 
length 随着学生数的增加而增加,用于记录学生数目……。。。。

class stulist is class student 的友元类  , stulist 的成员函数可以访问 student 的私有成员。。。

add()   当length< volume ,即 stu=new student[n] 申请的空间还没用完,则可以继续向其添加学生对象(相应的 学号,姓名,成绩)。。。

search(int n) 找到学号为 n 的学生 ,输出相应信息。。。

sort() 按成绩排序 。。。
2010-06-01 00:26
快速回复:麻烦帮看下程序
数据加载中...
 
   



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

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