C++学习心得


前言

在之前有一定的C语言和Java的基础上,作者因为项目需求,简单地学习一下C++,这里主要介绍一些基础知识。

声明:本分享主要参考C语言中文网上C++的教程,仅限编程爱好者学习使用,不作任何商业用途,如有侵权,请联系我删除。

一、C++基础知识

1.类和对象

不同于C语言是面向过程的编程语言,JAVA和C++都是面向对象的。这里主要讲解一下类(Class)和对象(Object)是什么。
#include <stdio.h>
//通过class关键字类定义类,初次学习C++的同学可能会对class比较陌生,之后用多了就熟悉了。
class Teacher{
public: //之后讲继承相关的知识会解释
    //类包含的变量,注意对象并不是这些变量哈!!!
    char *name;
    int age;
    float score;
    //类包含的函数,是的你没看错,不同于C语言,C++中支持直接在类中定义函数方法
    void say(){
        printf("%s的年龄是 %d,评分是 %f\n", name, age, score);
    }
};
int main(){
    //通过类来定义变量,即创建对象
    class Teacher t1;  //这里Teacher是上面声明的一个类,故class关键字其实可以省略。t1就是通过类声明的一个对象。
    //为类的成员变量赋值。本人习惯称下面t1.name等为t1对象的属性,可以类比C语言的结构体
    t1.name = "小明";
    t1.age = 15;
    t1.score = 92.5f;
    //调用类的成员函数,本人习惯称t1.say()为该对象的say方法
    t1.say();
    return 0;
}

以上代码,为了说明什么是类什么是对象,仅供初学者参考,而大佬们可以忽略。可以看出,C++的一个优点就是:当你需要增加方法或者属性的时候,直接在class Teacher()里面添加就行了。

2.命名空间

3.输入输出

4.函数重载

二、c++应用实例

1.用c++语言制作一个通讯录,拥有添加、显示、删除、查找、修改、清空联系人并退出的功能。

#include <iostream>
#include<string>
using namespace std;

#define MAX 1000
//联系人结构体
struct Person
{
    string p_Name;//姓名
    int P_Sex;//性别 男:1  女:2
    int P_Age;//年龄
    string P_PhoneNum;//电话
    string P_Addr;//地址
};

//通讯录结构体
struct AddressBook
{
    Person personArray[MAX];//通讯录最大容量
    int A_Size;//通讯录当前存储人数
};


void showMenu();
void addPerson(AddressBook * abs);
void showPerson(AddressBook* abs);
int isExist(AddressBook* abs, string name);
void deletePerson(AddressBook* abs);
void searchPerson(AddressBook* abs);
void modifyPerson(AddressBook* abs);
void emptyPerson(AddressBook* abs);

int main() {
    //创建通讯录结构体变量
    AddressBook abs;

    //初始化通讯录人员
    abs.A_Size = 0;

  
    int sel = 0;
    while (1) {  
        showMenu();
        cin >> sel;
        switch (sel)
        {        
            case 0://0、退出通讯录
                cout << "欢迎下次使用!" << endl;
                system("pause");
                return 0;
                break;
            case 1://1、添加联系人
                addPerson(&abs);
                break;
            case 2://2、显示联系人
                showPerson(&abs);
                break;
            case 3://3、删除联系人
                deletePerson(&abs);
                break;
            case 4://4、查找联系人
                searchPerson(&abs);
                break;
            case 5://5、修改联系人
                modifyPerson(&abs);
                break;
            case 6://6、清空联系人
                emptyPerson(&abs);
                break;     
            default:  
                return 0;
                break;
        }
    }


    system("pause");
    return 0;
}




//显示菜单界面功能
void showMenu() {
    cout << "**************************" << endl;
    cout << "****** 1.添加联系人 ******" << endl;
    cout << "****** 2.显示联系人 ******" << endl;
    cout << "****** 3.删除联系人 ******" << endl;
    cout << "****** 4.查找联系人 ******" << endl;
    cout << "****** 5.修改联系人 ******" << endl;
    cout << "****** 6.清空联系人 ******" << endl;
    cout << "****** 0.退出通讯录 ******" << endl;
    cout << "**************************" << endl;
}

//添加联系人功能
void addPerson(AddressBook *abs) {
    //判断通讯录是否已满
    if (abs->A_Size >= MAX) {
        cout << "通讯录已满,无法添加!"<<endl;
        return;
    }
    else //添加具体联系人
    {
        //姓名
        string name;
        cout << "请输入联系人姓名" << endl;
        cin >> name;
        abs->personArray[abs->A_Size].p_Name = name;

        //性别
        int sex=0;
        cout << "请输入性别" << endl;
        cout << "1 --- 男" << endl;
        cout << "2 --- 女" << endl;

        while (1) {
            cin >> sex;
            if (sex == 1 || sex == 2) {
                abs->personArray[abs->A_Size].P_Sex = sex;
                break;
            }
            else {
                cout << "输入无效,请重新输入!" << endl;
            }
        }
        //年龄
        int age;
        cout << "请输入年龄" << endl;
        cin >> age;
        abs->personArray[abs->A_Size].P_Age = age;

        //电话
        string phoneNum;
        cout << "请输入电话号码" << endl;
        cin >> phoneNum;
        abs->personArray[abs->A_Size].P_PhoneNum = phoneNum;

        //地址
        string addr;
        cout << "请输入地址" << endl;
        cin >> addr;
        abs->personArray[abs->A_Size].P_Addr = addr;
        
        //更新通讯录人数
        abs->A_Size++;
        cout<<"添加成功!" << endl;

        system("pause"); 
        system("cls");
    }

}

//显示联系人
void showPerson(AddressBook *abs) {
    if (abs->A_Size == 0) {
        cout << "当前记录为空!" << endl;
    }
    else {
        for (int i = 0;i < abs->A_Size;i++) {

            cout << abs->personArray[i].p_Name << "\t" <<
                (abs->personArray[i].P_Sex == 1 ? "男" :"女") << "\t" <<
                abs->personArray[i].P_Age << "\t" <<
                abs->personArray[i].P_PhoneNum << "\t" <<
                abs->personArray[i].P_Sex << endl;
        }
    }
    system("pause");
    system("cls");
}

//判断是否存在
int isExist(AddressBook * abs,string name)
{
    for (int i = 0; i < abs->A_Size;i++) {
        if (name == abs->personArray[i].p_Name) return i;
    }
    return -1;
}



//删除联系人
void deletePerson(AddressBook* abs) {
    cout << "请输入删除联系人姓名" << endl;
    string name;
    cin >> name;
    int flag = isExist(abs, name);

    if (flag == -1) {
        cout << "未找到该联系人" << endl;
    }
    else {
        for (int i = flag;i < abs->A_Size;i++) {
            abs->personArray[i] = abs->personArray[i + 1];
        }
        abs->A_Size--;
        cout << "删除成功!" << endl;
    }
    system("pause");
    system("cls");
}

//查找联系人
void searchPerson(AddressBook* abs) {
    cout << "请输入要查找的联系人姓名" << endl;
    string name;
    cin >> name;

    int flag = isExist(abs, name);
    if (flag == -1) {
        cout << "未找到该联系人!" << endl;
    }
    else {
        cout << abs->personArray[flag].p_Name << "\t" <<
            (abs->personArray[flag].P_Sex == 1 ? "男" : "女") << "\t" <<
            abs->personArray[flag].P_Age << "\t" <<
            abs->personArray[flag].P_PhoneNum << "\t" <<
            abs->personArray[flag].P_Sex << endl;
    }
    system("pause");
    system("cls");
}

//修改联系人
void modifyPerson(AddressBook* abs) {
    cout << "请输入要修改的联系人姓名" << endl;
    string name;
    cin >> name;

    int flag = isExist(abs, name);
    if (flag == -1) {
        cout << "未找到该联系人" << endl;
    }
    else {
        //姓名
        string name;
        cout << "请输入联系人姓名" << endl;
        cin >> name;
        abs->personArray[flag].p_Name = name;

        //性别
        int sex = 0;
        cout << "请输入性别" << endl;
        cout << "1 --- 男" << endl;
        cout << "2 --- 女" << endl;

        while (1) {
            cin >> sex;
            if (sex == 1 || sex == 2) {
                abs->personArray[flag].P_Sex = sex;
                break;
            }
            else {
                cout << "输入无效,请重新输入!" << endl;
            }
        }
        //年龄
        int age;
        cout << "请输入年龄" << endl;
        cin >> age;
        abs->personArray[flag].P_Age = age;

        //电话
        string phoneNum;
        cout << "请输入电话号码" << endl;
        cin >> phoneNum;
        abs->personArray[flag].P_PhoneNum = phoneNum;

        //地址
        string addr;
        cout << "请输入地址" << endl;
        cin >> addr;
        abs->personArray[flag].P_Addr = addr;

        //更新通讯录人数
  
        cout << "修改成功!" << endl;
    }
    system("pause");
    system("cls");
}

//清空联系人
void emptyPerson(AddressBook* abs) {
    abs->A_Size = 0;
    cout << "清空成功!" << endl;
    system("pause");
    system("cls");
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值