C++实现学生通讯录类

需积分: 14 1 下载量 182 浏览量 更新于2024-09-18 收藏 120KB DOC 举报
"本资源提供了一个C++实现的学生通讯录类的示例,包含学号、姓名、院系、通讯地址和电话等数据成员,并有相应的成员函数用于输出和设置这些信息。" 在C++编程中,类是组织数据和操作数据的方法,它允许我们定义自定义的数据类型。在这个例子中,我们定义了一个名为`CStudent`的类,用来表示学生通讯录中的一个条目。这个类包含了以下数据成员: 1. `int number`: 学号,用于唯一标识每个学生。在这里使用了整型变量`int`来存储。 2. `char* p_name`: 姓名,使用指向字符的指针来存储字符串。这是因为C++标准库中的`string`类型在早期版本中并未被广泛使用,所以这里使用了C风格的字符串处理。 3. `char* p_school`: 院系,同样使用指向字符的指针来存储。 4. `char* p_address`: 通讯地址,同样使用指针存储。 5. `char tel[15]`: 电话,由于电话号码长度有限,使用固定大小的字符数组来存储。 除了数据成员,`CStudent`类还定义了一些成员函数,用于操作这些数据: - `void show()`: 输出数据成员的值,通过调用`get`系列函数获取每个数据成员的值并显示在控制台上。 - `CStudent(int un, char* pn, char* ps, char* pa, char tel[])`: 构造函数,用于初始化一个新的`CStudent`对象。接受学号、姓名、院系、地址和电话作为参数,并使用`set`系列函数设置这些值。 - `void setname(char* name)`: 设置学生的姓名,首先申请足够大的内存来存储新名字,然后使用`strcpy`复制传入的名字到`p_name`所指向的位置。 - `void setnumber(int nu)`: 直接将传入的学号赋值给`number`。 - `void setschool(char* school)`: 类似地,为院系分配内存并复制传入的院系名称。 - `void setaddress(char* address)`: 设置通讯地址,分配内存并复制传入的地址。 - `void settel(char tel[])`: 将电话号码复制到`tel`数组中。 这样的设计使得我们可以方便地创建和管理学生通讯录,同时通过成员函数来保护数据成员不被直接访问,提高了代码的安全性和封装性。在实际应用中,可能还需要添加更多的功能,如添加、删除学生条目,搜索学生信息等。同时,为了防止内存泄漏,记得在不再需要这些动态分配的字符串时释放内存,这可以通过在类中添加析构函数或者使用智能指针来实现。