编写一个新的串类

一、目标与要求

编写一个新的串类的程序

一:扩充串类

                将教材中的串类功能扩充;

                重载操作运算符 +

重载字符串流输入运算符 <<  

重载字符串流输出运算符 >>

         

二:编写学生基本信息类,使用单链表进行管理

                1.定义一个学生类;

class student {

     String name;

      int weight;

      float height;

      String No;

}

                2.使用单链表进行管理

3.使用文件保存一个班的同学;

4.具有输入新同学,修改同学,屏幕打印输出;

 

三:要求

  1. 文件内容如下(同学的总数,每个同学的信息)

3

WangLin 

65 

170.3 

07215103

LiJun     

48  

165.8 

07215105

CaoHong  

68 

179.4 

07215123

  1. 文件输入输出使用运算符重载 << >>

             例如 student wang ,Li ,chao

              ios >> wang >> Li >> chao

              ios << wang << Li << chao

二、工具/准备工作

VC6.0,串类、节点类、单链表类等相关软件包

三、实验分析

1.首先需要重载串类的“+”“>>”“<<”运算符,函数实现过程可以调用串类中已存在的函数。

2.创建student类,并实现student类的“<<”“>>”运算符重载

3.创建oneclass类,该类继承lk_list<student>类并进行扩充,以实现“使用文件保存一个班的同学及“输入新同学,修改同学,屏幕打印输出”等功能。

四、实验步骤

1.完成string.h的扩充,实现“+”“>>”“<<”运算符重载,具体代码如下:

istream& operator >>(istream &is, String &str)//  >>重载

{  char e[30];

   is>>e;

   String t(e);

   str=t;

   return is;

}

ostream& operator <<(ostream &os,const String &str) //  <<重载

{return os<<str.CStr()<<'\n';

}

String operator +(const String &first, const String &second)//  +重载

{  String e(first);

   Concat(e,second);

   return e;

}

2.创建student类

成员变量如下:

     String name;

      int weight;

      float height;

      String No;

友元函数如下:

   friend ostream& operator << (ostream &os, student &copy);

   friend istream& operator >> (istream &is, student &copy);

3.创建oneclass类,如下:

class oneclass: public LinkList<student>

{public:

void Save();              //保存信息

void Show();                    //屏幕输出

void AddStudent(int n);     //通过文件添加新同学,n为添加的同学数

void AddOneStudent();     //添加一个同学,同学数据由键盘输入   

bool Edit(int n);         //通过键盘修改第n个同学的信息

};

完成相关函数的编写。

4.编写main函数,调试、完善程序。

五、测试与结论

String a("hello "),b;           cin>>b;   cout<<a+b<<endl;

//通过键盘输入信息到b(检验“>>”重载),输出a+b(检验“<<”“+”重载),运行如下:

oneclass classone;

classone.AddStudent(3);                 //新添3个同学,同学数据从data.txt中获取

classone.AddOneStudent();             //新添一个同学,同学数据由键盘输入

classone.Show();                     //通过屏幕输出学生信息

classone.Save();                      //将信息保存至data2.txt

以下是这四个函数的测试结果:

生成的data2.txt如下:

classone.Edit(2);                     //修改同学信息,这里修改第2个同学

cout<<"修改后的数据:"<<endl;

classone.Show();                     //通过屏幕输出修改后的数据

运行结果如下:

实验程序满足了实验目标与要求。

六、实验总结

  1. 创建了oneclass类,使用类成员函数可以方便地管理学生信息,功能完善。
  2. 熟悉了软件包的使用。
  3. 巩固了大一所学的继承与派生,输入输出流等内容,并将所学实现了具体的应用。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

金锋986321

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值