前言
在之前有一定的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");
}