C++之結構體以及通訊錄管理系統

1,結構體基本概念

結構體屬于自定義的數據概念,允許用戶存儲不同的數據類型

2,結構體的定義和使用

語法:struct? 結構體名{ 結構體成員列表};

通過結構體創建變量的方式有三種:

1,struct? 結構體名? {? 結構體成員列表 }

示例:

//1,創建學生數據類型:包括姓名,年齡,成績
//自定義數據類型,一些類型集合組成一個類型struct Student 
{//成員列表//姓名string name;//年齡int age;//成績char score;
};int main()
{//2,通過學生類型創建具體學生struct Student s1;//給s1賦值,通過“.”訪問結構體變量中的屬性s1.name = "張三";s1.age = 18;s1.score = 100;cout << "姓名:" << s1.name << "年齡:" << s1.age << "成績:" << s1.score << endl;system("pause");return 0;
}

?

2,struct? 結構體名? 變量名= {成員1值,成員2值......}

#include<iostream>
using namespace std;
#include<string>//1,創建學生數據類型:包括姓名,年齡,成績
//自定義數據類型,一些類型集合組成一個類型struct Student 
{//成員列表//姓名string name;//年齡int age;//成績int score;
};int main()
{struct Student s2 = { "李四",20,90 };cout << "姓名:" << s2.name << "年齡:" << s2.age << "成績:" << s2.score << endl;system("pause");return 0;
}

3,定義結構體時順便創建變量

#include<iostream>
using namespace std;
#include<string>//1,創建學生數據類型:包括姓名,年齡,成績
//自定義數據類型,一些類型集合組成一個類型struct Student 
{//成員列表//姓名string name;//年齡int age;//成績int score;
}s3;int main()
{s3.name = "王五";s3.age = 56;s3.score = 99;cout << "姓名:" << s3.name << "年齡:" << s3.age << "成績:" << s3.score << endl;system("pause");return 0;
}

總結1:定義結構體時的關鍵字是struct,不可省略

總結2:創建結構體變量時,關鍵字struct可以省略

總結3:結構體變量利用操作符”.“訪問成員?

建議用前面兩種方式

3,結構體數組

作用:將自定義的結構他放入到數列中方便維護

語法:struct? 結構體名? ?數組名[元素個數]={{},{},{}};

示例

struct student
{//成員列表//姓名string name;//年齡int age;//成績int score;
};int main()
{//創建結構體數組struct student StuArr[3] ={{"張三",18,100},{"李四",28,99},{"王五",28,66}};//給結構體數組中的元素賦值StuArr[2].name = "趙六";StuArr[2].age = 60;StuArr[2].score = 82;//遍歷結構體數組for (int i = 0; i < 3; i++){cout << "姓名:" << StuArr[i].name << "年齡:" << StuArr[i].age << "成績:" << StuArr[i].score << endl;}system("pause");return 0;
}

4,結構體指針

作用:通過指針訪問結構體成員

利用->操作符可以通過結構體指針訪問結構體屬性

示例:

struct Student
{//成員列表//姓名string name;//年齡int age;//成績int score;
};int main()
{struct Student s2 = { "李四",20,90 };struct Student* p = &s2;p->score = 80;cout << "姓名:" << s2.name << "年齡:" << s2.age << "成績:" << s2.score << endl;system("pause");return 0;
}

總結:結構體指針可以通過->操作符來訪問結構體中的成員?

5,結構體嵌套結構體

作用:結構體中的成員時另一個結構體:

例如:每個老師輔導一個學生,一個老師的結構體中,記錄一個學生的結構體

示例:


//結構體嵌套結構體
struct student
{//學生列表string name;//學生名字int age; //學生年齡int score;//學生成績
};struct teacher
{//成員列表int id;//職工編號string name;//教師姓名int age;//年齡struct student s1;//老師所輔導的學生
};int main()
{//結構體嵌套結構體//創建老師teacher t;t.id = 10000;t.name = "老王";t.age = 25;t.s1.name = "小王";t.s1.age = 18;t.s1.score = 100;cout << "老師姓名:" << t.name << endl;cout << "老師編號:" << t.id << endl;cout << "老師年齡:" << t.age << endl;cout << "老師輔導的學生:" << t.s1.name << endl;cout << "老師輔導的學生的年齡:" << t.s1.age << endl;cout << "老師輔導的學生的成績" << t.s1.score << endl;system("pause");return 0;
}

6,結構體做函數參數

作用:將結構體作為參數向函數中傳遞

傳遞的方式有兩種:

? ?值傳遞

struct student
{//學生列表string name;//學生名字int age; //學生年齡int score;//學生成績
};void printfstudent1(struct student s)
{s.age=56;cout << "子函數中的打印" << endl;cout << " 姓名:" << s.name << "年齡:" << s.age << "成績:" << s.score << endl;
}int main()
{struct student s;s.name = "張三";s.age = 18;s.score = 100;cout << "main函數中的打印:" << endl;cout << " 姓名:"<<s.name << "年齡:" << s.age << "成績:" << s.score << endl;printfstudent1(s);//結構體做函數參數system("pause");return 0;
}

? ?地址傳遞

struct student
{//學生列表string name;//學生名字int age; //學生年齡int score;//學生成績
};void printfstudent2(struct student* p)
{p->age = 100;cout << "子函數中的打印" << endl;cout << " 姓名:" << p->name << "年齡:" << p->age << "成績:" << p->score << endl;}int main()
{struct student s;s.name = "張三";s.age = 18;s.score = 100;cout << "main函數中的打印:" << endl;cout << " 姓名:" << s.name << "年齡:" << s.age << "成績:" << s.score << endl;printfstudent2(&s);system("pause");return 0;
}

總結:如果不想修改主函數中的數據,用值傳遞,反之,用地址傳遞?

7,結構體中const的使用場景

作用:用const來防止操作錯誤

示例:

//const 使用場景
//將函數中的形參改為指針,可以減少內存空間,而且不會復制出新的副本出來
void printfstudent2(struct student* p)//加const防止函數體中的誤操作
{//p->age = 100;加了const,不可以修改數據,可以防止我們的誤操作cout << "子函數中的打印" << endl;cout << " 姓名:" << p->name << "年齡:" << p->age << "成績:" << p->score << endl;}

8,結構體案例

8.1?案例1

學校正在做畢設項目,每名老師帶領5名學生,總共三名老師,需求如下:

設計學生和老師的結構體,其中在老師的結構體中,有老師姓名和一個存放5名學生的數組作為成員

學生的成員有姓名,考試成績,創建數組存放3名老師,通過函數給每個老師及所帶的學生賦值

最終打印出老師數據以及老師所帶的學生數據

代碼展示:

#include<iostream>
using namespace std;
#include<string>
#include<ctime>
//學生的結構體
struct student
{string sName;int score;
};//老師的結構體
struct teacher
{string tName;struct student sArray[5];
};//信息賦值
void allocate_student(struct teacher tArray[], int len)
{string nameSeed = "ABCDE";for (int i = 0; i < len; i++){tArray[i].tName = "Teacher";tArray[i].tName += nameSeed[i];for (int j = 0; j < 5; j++){tArray[i].sArray[j].sName = "Studemt_";tArray[i].sArray[j].sName += nameSeed[j];int random = rand() % 61 + 40;//40~99tArray[i].sArray[j].score = random;}}
}
//打印所有老師及所帶的學生信息
void print_Student(struct teacher tArray[], int len)
{for (int i = 0; i < len; i++){cout << "老師姓名:" << tArray[i].tName << endl;for (int j = 0; j < 5; j++){cout << "\t學生姓名:" << tArray[i].sArray[j].sName<<"學生成績:"<< tArray[i].sArray[j].score << endl;}}}
int main()
{srand((unsigned)time(NULL));//1,創建3名老師的數組struct teacher tArray[3];//2,通過函數給3名老師賦值,并給老師帶的學生信息賦值int len = sizeof(tArray) / sizeof(tArray[0]);allocate_student(tArray, len);//3,打印所有老師及所帶的學生信息print_Student(tArray, len);system("pause");return 0;
}

8.2 案例二

案例描述:

設計一個英雄的結構體,包括成員姓名,年齡,性別;

創建結構體數組,數組中存放5名英雄。

通過冒泡排序的算法,將數組中的英雄按照年齡進行升序排序,最終打印排序后的結果

五名英雄信息如下:

{”劉備“,23,”男“}

{“關羽”,22,“男”}

{“張飛”,21,“男”}

{“趙云”,20,“男”}

{“貂蟬”,19,“女”}

代碼如下:

#include<iostream>
using namespace std;
#include<string>//1,設計英雄結構體
struct Hero
{//姓名string name;//年齡int age;//性別string sex;
};void printsort(struct Hero Array[], int len)
{cout << "排序后" << endl;for (int i = 0; i < len; i++){cout << "英雄姓名:" << Array[i].name << "\t"<< "英雄年齡:" << Array[i].age << "\t"<< "英雄性別:" << Array[i].sex << "\t"<< endl;}
}void Bubblesort(struct Hero Array[], int len)
{for (int i = 0; i < len - 1; i++){for (int j = 0; j < len - i - 1; j++){if (Array[j].age > Array[j + 1].age){int temp = Array[j].age;Array[j].age = Array[j + 1].age;Array[j+1].age = temp;}}}
}int main()
{//2,創建數組存放英雄struct Hero Array[5] ={{"劉備",23,"男" },{ "關羽",22,"男" },{ "張飛",21,"男" },{ "趙云",20,"男" },{ "貂蟬",19,"女" }};int len = sizeof(Array) / sizeof(Array[0]);cout << "排序前" << endl;for (int i = 0; i < len; i++){cout << "英雄姓名:" << Array[i].name << "\t"<< "英雄年齡:" << Array[i].age << "\t"<< "英雄性別:" << Array[i].sex << "\t"<< endl;}//3,創建函數對數組進行排序,按照年齡進行升序排序Bubblesort(Array, len);//4,對排序后結果進行打印輸出printsort(Array, len);system("pause");return 0;
}

?

9, 通訊錄管理系統

#include<iostream>
using namespace std;
#include<string>//頭文件信息
#define MAX 1000//聯系人結構體
struct Person
{string m_name;//姓名int m_sex;//性別int m_age;//年齡string m_phone;//電話string m_address;//住址
};//通訊錄結構體
struct Addressbooks
{struct Person personArray[MAX];//通訊錄保存聯系人信息int m_size;//通訊錄中人員個數
};//菜單界面
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;cout << endl;
}//添加聯系人
void addPerson(Addressbooks * abs)
{//先判斷通訊錄是否已滿,如果滿了后不再添加if (abs->m_size  == MAX){cout << "通訊錄已滿,無法添加!" << endl;return;}else{//添加聯系人//姓名string name;cout << "請輸入名字:" << endl;cin >> name;abs->personArray[abs->m_size].m_name = name;//性別cout << "請輸入性別" << endl;cout << "1----男" << endl;cout << "2----女" << endl;int sex = 0;while (true){cin >> sex;if (sex == 1 || sex == 2){abs->personArray[abs->m_size].m_sex = sex;break;}cout << "輸入有誤,請重新輸入" << endl;}//年齡cout << "請輸入年齡" << endl;int age = 0;cin >> age;abs->personArray[abs->m_size].m_age = age;//聯系電話cout << "請輸入電話" << endl;string phone;cin >> phone;abs->personArray[abs->m_size].m_phone = phone;//家庭住址cout << "請輸入地址" << endl;string address;cin >> address;abs->personArray[abs->m_size].m_address = address;//更新通訊錄人數abs->m_size++;cout << "添加成功" << endl;}system("pause");//按任意鍵繼續system("cls");//清屏操作
}//顯示聯系人
void showPerson(Addressbooks* abs)
{//判斷如果當前通訊錄中沒有人員,就提示記錄為空//人數大于0,顯示通訊錄中信息if (abs->m_size == 0){cout << "當前記錄為空" << endl;}else{for (int i = 0; i < abs->m_size; i++){cout << "姓名:" << abs->personArray[i].m_name << "\t";cout << "性別:" << (abs->personArray[i].m_sex == 1 ? "男" : "女" )<< "\t";cout << "年齡:" << abs->personArray[i].m_age << "\t";cout << "電話:" << abs->personArray[i].m_phone << "\t";cout << "地址:" << abs->personArray[i].m_address << endl;}}system("pause");//按任意鍵繼續system("cls");//清屏操作
}//如果存在,返回聯系人在通訊錄中的位置,不存在則返回 - 1
//參數1  通訊錄   參數2   對比姓名
int isExist(Addressbooks * abs,string name)
{for (int i = 0; i < abs->m_size ; i++){//找到用戶姓名if (abs->personArray[i].m_name  == name){//返回這個人的下標return i;}return -1;//如果遍歷結果都沒有找到,則返回-1}
}void deletePerson(Addressbooks * abs, string name)
{int ret = isExist(abs, name);//ret==-1  未查到//ret != 1  查到了if (ret != -1){//查到人,要進行刪除操作for (int i = 0; i < abs->m_size; i++){//數據遷移//刪除:就是將后面每個人的信息的位置替換前一個人的信息abs->personArray[i] = abs->personArray[i + 1];}abs->m_size--;cout << "刪除成功" << endl;}else{cout << "查無此人" << endl;}system("pause");system("cls");
}void findPerson(Addressbooks * abs)
{cout << "輸入您要查找的聯系人" << endl;string name;cin >> name;//判斷聯系人是否在通訊錄中int ret = isExist(abs, name);if (ret != -1)//找到聯系人{cout << "姓名:" << abs->personArray[ret].m_name << "\t";cout << "性別:" << (abs->personArray[ret].m_sex == 1 ? "男" : "女") << "\t";cout << "年齡:" << abs->personArray[ret].m_age << "\t";cout << "電話:" << abs->personArray[ret].m_phone << "\t";cout << "地址:" << abs->personArray[ret].m_address << endl;}else {cout << "查無此人" << endl;}system("pause");system("cls");
}void modifyPerson(Addressbooks* abs)
{cout << "輸入您要修改的聯系人" << endl;string name;cin >> name;int ret = isExist(abs, name);if (ret != -1)//找到聯系人{//姓名string name;cout << "請輸入名字:" << endl;cin >> name;abs->personArray[ret].m_name = name;//性別cout << "請輸入性別" << endl;cout << "1----男" << endl;cout << "2----女" << endl;int sex = 0;while (true){cin >> sex;if (sex == 1 || sex == 2){abs->personArray[ret].m_sex = sex;break;}cout << "輸入有誤,請重新輸入" << endl;}//年齡cout << "請輸入年齡" << endl;int age = 0;cin >> age;abs->personArray[ret].m_age = age;//聯系電話cout << "請輸入電話" << endl;string phone;cin >> phone;abs->personArray[ret].m_phone = phone;//家庭住址cout << "請輸入地址" << endl;string address;cin >> address;abs->personArray[ret].m_address = address;cout << "修改成功" << endl;}else{cout << "查無此人" << endl;}system("pause");system("cls");
}void cleanPerson(Addressbooks* abs)
{abs->m_size = 0;cout << "通訊錄已經清空" << endl;system("pause");system("cls");
}int main()
{Addressbooks abs;//創建通訊錄結構體變量abs.m_size = 0;//初始化當前人數個數int select = 0;//創建用戶輸入變量while (1){//調用菜單showMenu();cout << "請輸入:" << endl;int select = 0;cin >> select;switch (select){case 1://1,添加聯系人addPerson(&abs);//利用地址傳參,可以修飾實參break;case 2://2, 顯示聯系人showPerson(&abs);break;case 3://3,刪除聯系人{cout << "請輸入刪除聯系人的姓名:" << endl;string name;cin >> name;if (isExist(&abs, name) == -1){cout << "查無此人" << endl;}else{cout << "找到此人" << endl;}deletePerson(&abs, name); }break;case 4://4,查找聯系人findPerson(&abs);break;case 5://5,修改聯系人modifyPerson(&abs);break;case 6://6,清空聯系人cleanPerson(&abs);break;case 0://0,退出通訊錄cout << "歡迎下次使用!" << endl;system("pause");break;default:break;}}system("pause");return 0;
}

通訊錄管理系統具體操作請看以下文章:

本文鏈接:c++之通訊錄管理系統-CSDN博客

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/717255.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/717255.shtml
英文地址,請注明出處:http://en.pswp.cn/news/717255.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【簡說八股】面試官:你知道什么是AOP么?

回答 AOP(Aspect-Oriented Programming)&#xff0c;即面向切面編程&#xff0c;是一種編程范式&#xff0c;它的主要思想是將應用程序中的橫切關注點&#xff08;如日志記錄、性能統計、安全控制等&#xff09;從業務邏輯中剝離出來&#xff0c;然后通過特殊的方式將這些橫切…

設計模式學習筆記 - 設計原則 - 8.迪米特法則(LOD)

前言 迪米特法則&#xff0c;是一個非常實用的原則。利用這個原則&#xff0c;可以幫我們實現代碼的 “高內聚、松耦合”。 圍繞下面幾個問題&#xff0c;來學習迪米特原則。 什么是 “高內聚、松耦合”&#xff1f;如何利用迪米特法則來實現 高內聚、松耦合&#xff1f;哪些…

程序員求職

程序員的金三銀四求職寶典 隨著春天的腳步漸近&#xff0c;對于許多程序員來說&#xff0c;一年中最繁忙、最重要的面試季節也隨之而來。金三銀四&#xff0c;即三月和四月&#xff0c;被廣大程序員視為求職的黃金時期。在這兩個月里&#xff0c;各大公司紛紛開放招聘&#xf…

技術實踐|百度安全「大模型內容安全」高級攻擊風險評測

1、引子 2023年10月16日&#xff0c;OWASP發布了《OWASP Top 10 for LLM Applications》&#xff0c;這對于新興的大語言模型安全領域&#xff0c;可謂一份綱領性的重要報告。 OWASP是開放式Web應用程序安全項目&#xff08;Open Web Application Security Project&#xff0…

【Linux網絡命令系列】ping curl telnet三劍客

&#x1f49d;&#x1f49d;&#x1f49d;歡迎來到我的博客&#xff0c;很高興能夠在這里和您見面&#xff01;希望您在這里可以感受到一份輕松愉快的氛圍&#xff0c;不僅可以獲得有趣的內容和知識&#xff0c;也可以暢所欲言、分享您的想法和見解。 推薦:kwan 的首頁,持續學…

【C++】vector的使用和模擬實現(超級詳解!!!!)

文章目錄 前言1.vector的介紹及使用1.1 vector的介紹1.2 vector的使用1.2.1 vector的定義1.2.2 vector iterator 的使用1.2.3 vector 空間增長問題1.2.3 vector 增刪查改1.2.4 vector 迭代器失效問題。&#xff08;重點!!!!!!&#xff09;1.2.5 vector 在OJ中有關的練習題 2.ve…

C++入門和基礎

目錄 文章目錄 前言 一、C關鍵字 二、命名空間 2.1 命名空間的定義 2.2 命名空間的使用 2.3 標準命名空間 三、C輸入&輸出 四、缺省參數 4.1 缺省參數的概念 4.2 缺省參數的分類 五、函數重載 5.1 函數重載的簡介 5.2 函數重載的分類 六、引用 6.1 引用的…

搭建個人IC_EDA服務器(物理機)一:安裝Centos7

1.準備 大于8G的U盤&#xff1b;待裝的電腦&#xff0c;我使用淘汰的在大學時候使用的筆記本&#xff1b;U盤啟動器制作工具&#xff1a;UltralSo&#xff1b;官網下載的在沒有付費的情況下&#xff0c;即使試用期&#xff0c;安裝的時候會有莫名的問題&#xff0c;建議使用這…

【接口測試】常見HTTP面試題

目錄 HTTP GET 和 POST 的區別 GET 和 POST 方法都是安全和冪等的嗎 接口冪等實現方式 說說 post 請求的幾種參數格式是什么樣的&#xff1f; HTTP特性 HTTP&#xff08;1.1&#xff09; 的優點有哪些&#xff1f; HTTP&#xff08;1.1&#xff09; 的缺點有哪些&#x…

全量知識系統問題及SmartChat給出的答復 之14 解析器+DDD+文法型 之2

Q36. 知識系統中設計的三種文法解析器和設計模式之間的關系 進一步&#xff0c;我想將 知識系統中設計的三種語言&#xff08;形式語言、人工語言和自然&#xff09;的文法解析器和DDD中的三種程序類型&#xff08;領域模型、領域實體和領域服務&#xff09; 形式語言文法 我…

動態代理總結

Java 代理模式 使用代理對象來代替對真實對象(real object)的訪問&#xff0c;這樣就可以在不修改原目標對象的前提下&#xff0c;提供額外的功能操作&#xff0c;擴展目標對象的功能 靜態代理 靜態代理在編譯時就將接口、實現類、代理類這些都變成了一個個實際的 class 文件…

MQ如何防止消息被重復消費?

被詢問如何防止MQ消息被重復消費時&#xff0c;其實是在考察候選人對消息隊列、分布式系統設計以及容錯機制的理解&#xff0c;通過這些問題&#xff0c;可以全面了解候選人在處理MQ消息重復消費問題時的思考方式、技術能力和實踐經驗&#xff0c;從而評估其是否適合擔任相關崗…

Puzzles

題目鏈接&#xff1a;Submit - Codeforces?????? 解題思路&#xff1a; 題目大概意思就是在一個數組里找n個數里的最大值減最小值的最小值&#xff0c;先排序&#xff0c;然后將第i n - 1項減去第i項與最小值作比較&#xff0c;輸出最小值即可&#xff0c;注意循環結束…

NTP網絡校時服務器(GPS北斗衛星校時系統)應用場景

NTP網絡校時服務器&#xff08;GPS北斗衛星校時系統&#xff09;應用場景 NTP網絡校時服務器&#xff08;GPS北斗衛星校時系統&#xff09;應用場景 隨著大數據、云計算時代的到來,各行業信息化建設的不斷提升,信息化下的各個系統不再單獨處理各自業務,而是趨于協同工作,因此,各…

YOLOv應用開發與實現

一、背景與簡介 YOLO&#xff08;You Only Look Once&#xff09;是一種流行的實時目標檢測系統&#xff0c;其核心思想是將目標檢測視為回歸問題&#xff0c;從而可以在單個網絡中進行端到端的訓練。YOLOv作為該系列的最新版本&#xff0c;帶來了更高的檢測精度和更快的處理速…

代碼隨想錄day34||● 860.檸檬水找零 ● 406.根據身高重建隊列 ● 452. 用最少數量的箭引爆氣球

860. 檸檬水找零 - 力扣&#xff08;LeetCode&#xff09; class Solution { public:bool lemonadeChange(vector<int>& bills) {int five0,ten0,twenty0;for(int bill:bills){if(bill5)five;if(bill10){if(five<0)return false;ten;five--;}if(bill20){if(ten&g…

【框架】MyBatis 框架重點解析

MyBatis 框架重點解析 1. MyBatis 執行流程 會話工廠生產的 SqlSession 對象提供了對數據庫執行SQL命令所需的所有方法&#xff0c;包括但不限于以下功能&#xff1a; 數據庫操作&#xff1a;SqlSession可以執行查詢&#xff08;select&#xff09;、插入&#xff08;insert&a…

騰訊云幻獸帕魯游戲存檔遷移教程,本地單人房遷移/四人世界怎么遷移存檔?

騰訊云幻獸帕魯游戲存檔遷移的方法主要包括以下幾個步驟&#xff1a; 登錄輕量云控制臺&#xff1a;首先&#xff0c;需要登錄到輕量云控制臺&#xff0c;這是進行存檔遷移的前提條件。在輕量云控制臺中&#xff0c;可以找到接收存檔的服務器卡片&#xff0c;并點擊進入實例詳情…

Jmeter 安裝

JMeter是Java的框架&#xff0c;因此在安裝Jmeter前需要先安裝JDK&#xff0c;此處安裝以Windows版為例 1. 安裝jdk&#xff1a;Java Downloads | Oracle 安裝完成后設置環境變量 將環境變量JAVA_HOME設置為 C:\Program Files\Java\jdk1.7.0_25 在系統變量Path中添加 C:\Pro…

股票技術指標(包含貪婪指數)

股票技術指標是用于分析股票價格和成交量數據&#xff0c;以便預測未來市場走勢的工具。技術分析師使用這些指標來識別市場趨勢、價格模式、交易信號和投資機會。技術指標通常基于數學公式&#xff0c;并通常在股票價格圖表上以圖形形式表示。 技術指標主要分為以下幾類&#x…