C++實(shí)現(xiàn)教職工信息管理系統(tǒng)
本文實(shí)例為大家分享了C++實(shí)現(xiàn)教職工信息管理系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下
一.問(wèn)題描述
一個(gè)小公司包含四類(lèi)人員:經(jīng)理,技術(shù)人員,銷(xiāo)售人員和銷(xiāo)售經(jīng)理,各類(lèi)人員的工資計(jì)算方法如下:經(jīng)理:固定月薪(8000);技術(shù)人員:月薪按技術(shù)等級(jí)(1~8)(1600+等級(jí)*300);銷(xiāo)售人員:按提成(4%*銷(xiāo)售額);銷(xiāo)售經(jīng)理:底薪+提成(1500+0.2%*總銷(xiāo)售額);設(shè)計(jì)一個(gè)管理程序,實(shí)現(xiàn)對(duì)各類(lèi)人員的信息輸入,修改和顯示。
二 .基本要求
(1)使用面向?qū)ο缶幊趟枷刖帉?xiě)開(kāi)發(fā)過(guò)程中需要用到的類(lèi),比如:設(shè)計(jì)Person類(lèi):編號(hào),姓名,崗位,工資,成員函數(shù)可設(shè)一個(gè)計(jì)算月薪的純虛函數(shù);另外再設(shè)計(jì)四個(gè)針對(duì)四類(lèi)人員的類(lèi)均繼承 Person;添加相應(yīng)的派生類(lèi)數(shù)據(jù)成員和函數(shù),經(jīng)理和銷(xiāo)售經(jīng)理可以沒(méi)有新的數(shù)據(jù)成員,計(jì)算月薪即可; 技術(shù)人員添加技術(shù)等級(jí)數(shù)據(jù)成員,銷(xiāo)售人員添加數(shù)據(jù)成員:銷(xiāo)售額。還需設(shè)計(jì)一個(gè)Manage 類(lèi)來(lái)完成各種操作。人員數(shù)組 vector,數(shù)據(jù)類(lèi)型為基類(lèi)指針。
(2)需要使用菜單功能顯示添加人員(輸入),修改信息,瀏覽信息,按姓名查找,月薪排序。
(3)為了設(shè)計(jì)簡(jiǎn)潔,假定經(jīng)理和銷(xiāo)售經(jīng)理都只能有一個(gè);用文本編輯器編輯一個(gè)文本文件(總數(shù) 20 人以上)包含各類(lèi)人員的信息;并且在程序中能修改保存。
基本流程圖
#include<iostream> #include<vector> #include<string> #include<cstdlib> #include<windows.h> #include<iomanip> #include<fstream> #include <algorithm> #define filename "student.txt" using namespace std;? class Person { public: ?? ?Person(string, string, int = 0);//構(gòu)造函數(shù)? ?? ?double virtual pay_salary() = 0; //借用虛函數(shù)進(jìn)行工資初始化? ?? ?void ?virtual show(); ?? ??? ?//顯示信息? ?? ?bool operator<(const Person*&) const;?? ?//重載<比較薪水大小用于排序? ?? ?static int num; //定義靜態(tài)變量,自動(dòng)賦予員工編號(hào)? ?? ?int Number; ? //編號(hào)? ?? ?double Salary;//工資? ?? ?string Name;//姓名? ?? ?string Department;//部門(mén)? ?? ?int c;//技術(shù)級(jí)? }; bool Person::operator<(const Person*& obj) const//函數(shù)重載<,用于比較薪水? { ?? ?return this->Salary > obj->Salary; } Person::Person(string name1, string work1, int c1) //構(gòu)造函數(shù)的實(shí)現(xiàn)? { ?? ?c = c1; ?? ?Number = num++; ?? ?Name = name1; ?? ?Department = work1; } int Person::num = 1;//編號(hào)從1開(kāi)始? void ?Person::show() { ?? ?cout<<"-----------------------------------"<<endl; ?? ?cout <<right<<setw(3)<<Number<<setw(10)<<Name<<setw(11)<<Department<<setw(8)<<Salary; //setw()控制輸出寬度? ?? ? } class Manager :public Person //經(jīng)理類(lèi),繼承person類(lèi)? { public: ?? ?Manager(string, string, int);//構(gòu)造函數(shù)? ?? ?double pay_salary();//計(jì)算工資函數(shù)? ?? ?void show();//顯示經(jīng)理的信息? }; Manager::Manager(string name1, string post1, int c1) :Person(name1, post1, c1) //構(gòu)造函數(shù) 的實(shí)現(xiàn)? { ?? ?pay_salary(); } double Manager::pay_salary()//計(jì)算經(jīng)理的工資? ?{ ?? ?Salary = 8000; ?? ?return Salary; } void Manager::show() //顯示經(jīng)理的信息? { ?? ?cout<<"-----------------------------------"<<endl; ?? ?cout <<right<<setw(3)<<Number<<setw(10)<<Name<<setw(9)<<Department<<setw(10)<<Salary;? } class SaleManager :public Person//銷(xiāo)售經(jīng)理類(lèi),繼承person類(lèi)? ?{ public: ?? ?SaleManager(string, string, int);//構(gòu)造函數(shù)? ?? ?double pay_salary();//計(jì)算銷(xiāo)售經(jīng)理的工資? ?? ?void show();//顯示銷(xiāo)售經(jīng)理的信息? }; SaleManager::SaleManager(string name1, string post1, int c1) :Person(name1, post1, c1)//構(gòu)造函數(shù) 的實(shí)現(xiàn)? ?{ ?? ?pay_salary(); } double SaleManager::pay_salary() //計(jì)算經(jīng)理的工資,基本工資 1500元? { ?? ?Salary = 1500; ?? ?return Salary; } void SaleManager::show() //顯示銷(xiāo)售經(jīng)理的信息? { ?? ?cout<<"-----------------------------------"<<endl; ?? ?cout <<right<<setw(3)<<Number<<setw(10)<<Name<<setw(11)<<Department<<setw(8)<<Salary;? } class Salesman :public Person//銷(xiāo)售人員類(lèi),繼承Person類(lèi)? ?{ public: ?? ?Salesman(string, string, int);//構(gòu)造函數(shù)? ?? ?int salevolume;//銷(xiāo)售額 ?? ?double pay_salary();//計(jì)算銷(xiāo)售人員的工資? ?? ?void show();//顯示銷(xiāo)售人員的信息? }; Salesman::Salesman(string name1, string post1, int sv) :Person(name1, post1, sv)//構(gòu)造函數(shù)的實(shí)現(xiàn)? { ?? ?salevolume = sv; ?? ?pay_salary(); } double Salesman::pay_salary()//計(jì)算銷(xiāo)售人員工資,4%×銷(xiāo)售額? ?{ ?? ?Salary = 0.04 * salevolume; ?? ?return Salary; } void Salesman::show() //顯示銷(xiāo)售人員的信息? { ?? ?cout<<"-----------------------------------"<<endl; ?? ?cout <<right<<setw(3)<<Number<<setw(10)<<Name<<setw(11)<<Department<<setw(8)<<Salary;? } class Technician :public Person //技術(shù)人員類(lèi),繼承Person類(lèi)? { public: ?? ?Technician(string, string, int);//技術(shù)等級(jí)為繼承來(lái)的參數(shù)c? ?? ?double pay_salary();//計(jì)算技術(shù)人員的工資? ?? ?void show();//顯示技術(shù)人員的所有信息? }; Technician::Technician(string name1, string post1, int rank1) :Person(name1, post1, rank1)? { ?? ?pay_salary(); } double Technician::pay_salary() //計(jì)算技術(shù)人員的工資,技術(shù)等級(jí)×300+1600? { ?? ?Salary = 1600 + 300 * c; ?? ?return Salary; } void Technician::show()//顯示所有技術(shù)人員的信息? ?{ ??? ?cout<<"-----------------------------------"<<endl; ?? ?cout <<right<<setw(3)<<Number<<setw(10)<<Name<<setw(11)<<Department<<setw(8)<<Salary;? } class Manage//管理類(lèi)? { public: ?? ?void Menu() { salevolume = 0; }//菜單函數(shù)? ?? ?int salevolume;//總銷(xiāo)售額? ?? ?vector<Person*> Ma;//vector數(shù)組,存放Person類(lèi)的對(duì)象指針? ?? ?void add(Person*);//添加人員信息? ?? ?void alter(string);//刪除人員信息? ?? ?void addtofile();//寫(xiě)入文件? ?? ?void show();//顯示所有信息? ?? ?void show1();//按月薪降序? ?? ?Person* find(string&);//查找人員信息? }; Person* Manage::find(string& name1) { //查找 ?? ?for (vector<Person*>::iterator iter = Ma.begin(); iter != Ma.end(); iter++) { ?? ??? ?if ((*iter)->Name == name1) { ?? ??? ??? ?return *iter; ?? ??? ?} ?? ?} ?? ?return NULL; } void Manage::alter(string name1) { //刪除 ?? ?for (vector<Person*>::iterator iter = Ma.begin(); iter != Ma.end(); iter++) { ?? ??? ?if ((*iter)->Name == name1) { ?? ??? ??? ?Ma.erase(iter); ?? ??? ??? ?return; ?? ??? ?} ?? ?} ?? ?cout << "查無(wú)此人" << endl; } void Manage::add(Person* people) //添加? { ?? ?if (people->Department == "銷(xiāo)售人員") { ?? ??? ?salevolume += ((Salesman*)people)->salevolume; ?? ?} ?? ?Ma.push_back(people); } void Manage::addtofile()//寫(xiě)入文件? ?{ ?? ?ofstream outfile(filename);//打開(kāi)文件寫(xiě)入? ?? ?for (vector<Person*>::iterator iter = Ma.begin(); iter != Ma.end(); iter++) { ?? ??? ?outfile << (*iter)->Department << " " << (*iter)->Name << " "; ?? ??? ?if ((*iter)->c == 0) outfile << endl; ?? ??? ?else outfile << (*iter)->c << endl; ?? ?} ?? ?outfile.close();//關(guān)閉? } bool cmp(Person* x, Person* y) { //比較薪水 ?? ?return x->Salary > y->Salary; } void Manage::show() { ?? ?for (vector<Person*>::iterator iter = Ma.begin(); iter != Ma.end(); iter++) { ?? ??? ?if ((*iter)->Department == "銷(xiāo)售經(jīng)理") { ?? ??? ??? ?(*iter)->Salary = salevolume * 0.002 +1500; ?? ??? ??? ?break; ?? ??? ?} ?? ?} ?? ?sort(Ma.begin(), Ma.end(), cmp);//薪水大小排序 ?? ?for (vector<Person*>::iterator iter = Ma.begin(); iter != Ma.end(); iter++) { ?? ??? ?(*iter)->show(); ?? ??? ?cout << endl; ?? ?} } void readfile(Manage& obj)//讀取文件? ?{ ?? ?FILE* fp; ?? ?fp = fopen(filename, "r");//打開(kāi)文件,只讀? ?? ?if (fp == NULL) { ?? ??? ?cout << "未找到人員名單" << endl; ?? ??? ?return; ?? ?} ?? ?while (!feof(fp)) { ?? ??? ?char post[20]; ?? ??? ?char Name[20]; ?? ??? ?int c; ? //銷(xiāo)售額或技術(shù)等級(jí) ?? ??? ?fscanf(fp, "%s%s%d", post, Name,&c); ?? ??? ?if (!strcmp(post, "經(jīng)理")) { //文件中為經(jīng)理的人的信息先填入 ?? ??? ??? ?Person* peo = new Manager(Name, post, 0); ?? ??? ??? ?obj.add(peo); ?? ??? ?} ?? ??? ?else if (!strcmp(post, "技術(shù)人員")) { ?? ??? ??? ?Person* peo = new Technician(Name, post, c); ?? ??? ??? ?obj.add(peo); ?? ??? ?} ?? ??? ?else if (!strcmp(post, "銷(xiāo)售人員")) { ?? ??? ??? ?Person* peo = new Salesman(Name, post, c); ?? ??? ??? ?obj.add(peo); ?? ??? ?} ?? ??? ?else if (!strcmp(post, "銷(xiāo)售經(jīng)理")) { ?? ??? ??? ?Person* peo = new SaleManager(Name, post, 0); ?? ??? ??? ?obj.add(peo); ?? ??? ?} ?? ?} ?? ?fclose(fp);//關(guān)閉文件? } void Manage::show1()//對(duì)vector數(shù)組進(jìn)行讀取? { ?? ?for (vector<Person*>::iterator iter = Ma.begin(); iter != Ma.end(); iter++) { ?? ??? ?(*iter)->show(); ?? ??? ?cout << endl; ?? ?} } int main(){ ?? ?int x; ?? ?Manage T; ?? ?readfile(T); ?? ?while(1){ ? ? ? ? cout<< " ? ?———————————————————————————————" << endl ?? ??? ??? ?<< " ? ?| ? ? ? 公司人事管理系統(tǒng) ? ? ? ?|" << endl ?? ??? ??? ?<< " ? ?———————————————————————————————" << endl ?? ??? ??? ?<< " ? ?| ? ? ? ? 1.添加員工 ? ? ? ? ? |" << endl ?? ??? ??? ?<< " ? ?| ? ? ? ? 2.修改信息 ? ? ? ? ? |" << endl ?? ??? ??? ?<< " ? ?| ? ? ? ? 3.按姓名查找 ? ? ? ? |" << endl ?? ??? ??? ?<< " ? ?| ? ? ? ? 4.顯示所有信息 ? ? ? |" << endl ?? ??? ??? ?<< " ? ?| ? ? ? ? 5.按月薪降序排序 ? ? |" << endl ?? ??? ??? ?<< " ? ?| ? ? ? ? 0.保存并退出程序 ? ? |" << endl ?? ??? ??? ?<< " ? ?———————————————————————————————" << endl;?? ??? ? ?? ??? ?cout<< "請(qǐng)選擇->"; ?? ??? ?cin >> x; ?? ??? ?switch (x) { ?? ??? ?case 1: { ?? ??? ??? ?while (1) { ?? ??? ??? ??? ?int n; ?? ??? ??? ??? ?string Name; ?? ??? ??? ??? ?cout << "請(qǐng)輸入姓名:" ; ?? ??? ??? ??? ?cin >> Name; ?? ??? ??? ??? ?cout << "請(qǐng)輸入人員崗位(1.經(jīng)理 2.技術(shù)人員 3. 銷(xiāo)售人員 4.銷(xiāo)售經(jīng)理):" ;? ?? ??? ??? ??? ?cin >> n; ?? ??? ??? ??? ?if (n == 1) { ?? ??? ??? ??? ??? ?Person* peo = new Manager(Name, "經(jīng)理", 0); ?? ??? ??? ??? ??? ?T.add(peo); ?? ??? ??? ??? ??? ?cout << "添加成功" << endl << endl << endl; ?? ??? ??? ??? ??? ?break; ?? ??? ??? ??? ?} ?? ??? ??? ??? ?else if (n == 2) { ?? ??? ??? ??? ??? ?while (1) { ?? ??? ??? ??? ??? ??? ?int rank = 0; ?? ??? ??? ??? ??? ??? ?cout << "請(qǐng)輸入技術(shù)等級(jí)(1~8):" ; ?? ??? ??? ??? ??? ??? ?cin >> rank; ?? ??? ??? ??? ??? ??? ?if (rank > 8 || rank < 1) { ?? ??? ??? ??? ??? ??? ??? ?cout << "輸入錯(cuò)誤,請(qǐng)?jiān)?~8之間輸入:" ; ?? ??? ??? ??? ??? ??? ?} ?? ??? ??? ??? ??? ??? ?else { ?? ??? ??? ??? ??? ??? ??? ?Person* peo = new Technician(Name, "技術(shù)人員", rank); ?? ??? ??? ??? ??? ??? ??? ?T.add(peo); ?? ??? ??? ??? ??? ??? ??? ?break; ?? ??? ??? ??? ??? ??? ?} ?? ??? ??? ??? ??? ?} ?? ??? ??? ??? ??? ?cout << "添加成功" << endl << endl << endl; ?? ??? ??? ??? ??? ?break; ?? ??? ??? ??? ?} ?? ??? ??? ??? ?else if (n == 3) { ?? ??? ??? ??? ??? ?int sales = 0; ?? ??? ??? ??? ??? ?cout << "請(qǐng)輸入銷(xiāo)售額:" << endl; ?? ??? ??? ??? ??? ?cin >> sales; ?? ??? ??? ??? ??? ?Person* peo = new Salesman(Name, "銷(xiāo)售人員", sales); ?? ??? ??? ??? ??? ?T.add(peo); ?? ??? ??? ??? ??? ?cout << "添加成功" << endl << endl << endl; ?? ??? ??? ??? ??? ?break; ?? ??? ??? ??? ?} ?? ??? ??? ??? ?else if (n == 4) { ?? ??? ??? ??? ??? ?Person* peo = new SaleManager(Name, "銷(xiāo)售經(jīng)理", 0); ?? ??? ??? ??? ??? ?T.add(peo); ?? ??? ??? ??? ??? ?cout << "添加成功" << endl << endl << endl; ?? ??? ??? ??? ??? ?break; ?? ??? ??? ??? ?} ?? ??? ??? ??? ?else { ?? ??? ??? ??? ??? ?cout << "輸入錯(cuò)誤,請(qǐng)重新輸入:" << endl; ?? ??? ??? ??? ?} ?? ??? ??? ?} ?? ??? ? system("pause");} ?? ??? ??? ??? ?break; ?? ??? ?case 2: { ?? ??? ??? ?string Name; ?? ??? ??? ?int n = 0; ?? ??? ??? ?cout << "請(qǐng)輸入姓名:" ; ?? ??? ??? ?cin >> Name; ?? ??? ??? ?Person* peo = T.find(Name); ?? ??? ??? ?if (peo == NULL) { ?? ??? ??? ??? ?cout << "?? ??? ?查無(wú)此人" << endl << endl << endl; ?? ??? ??? ??? ?break; ?? ??? ??? ?} ?? ??? ??? ?peo->show(); ?? ??? ??? ?if (peo->Department == "經(jīng)理") { ?? ??? ??? ??? ?cout << " ? ?經(jīng)理無(wú)法修改" << endl; ?? ??? ??? ?} ?? ??? ??? ?else if (peo->Department == "技術(shù)人員") { ?? ??? ??? ??? ?int rank = 0; ?? ??? ??? ??? ?while (1) { ?? ??? ??? ??? ??? ?cout <<endl<< "請(qǐng)輸入技術(shù)等級(jí)(1~8):" << endl; ?? ??? ??? ??? ??? ?cin >> rank; ?? ??? ??? ??? ??? ?if (rank > 8 || rank < 1) { ?? ??? ??? ??? ??? ??? ?cout << "等級(jí)輸入錯(cuò)誤,請(qǐng)重新輸入" << endl; ?? ??? ??? ??? ??? ?} ?? ??? ??? ??? ??? ?else break; ?? ??? ??? ??? ?} ?? ??? ??? ??? ?T.alter(Name); ?? ??? ??? ??? ?peo = new Technician(Name, "技術(shù)人員", rank); ?? ??? ??? ??? ?T.add(peo); ?? ??? ??? ??? ?cout << "修改成功!" << endl; ?? ??? ??? ??? ? ?? ??? ??? ?} ?? ??? ??? ?else if (peo->Department == "銷(xiāo)售人員") { ?? ??? ??? ??? ?int sales = 0; ?? ??? ??? ??? ?cout <<endl<< "請(qǐng)輸入銷(xiāo)售額:" << endl; ?? ??? ??? ??? ?cin >> sales; ?? ??? ??? ??? ?T.alter(Name); ?? ??? ??? ??? ?peo = new Salesman(Name, "銷(xiāo)售人員", sales); ?? ??? ??? ??? ?T.add(peo); ?? ??? ??? ??? ?cout << "?? ?修改成功!" << endl; ?? ??? ??? ??? ? ?? ??? ??? ?} ?? ??? ??? ?else if (peo->Department == "銷(xiāo)售經(jīng)理") { ?? ??? ??? ??? ?cout << " ? 銷(xiāo)售經(jīng)理無(wú)法修改" << endl; ?? ??? ??? ?} ?? ??? ??? ?else { ?? ??? ??? ??? ?cout << "輸入錯(cuò)誤" << endl; ?? ??? ??? ?} ?? ??? ?}system("pause"); ?? ??? ??? ??? ?break; ?? ??? ?case 3: { ?? ??? ??? ?string Name; ?? ??? ??? ?int n = 0; ?? ??? ??? ?cout << "請(qǐng)輸入所查找人的姓名:"; ?? ??? ??? ?cin >> Name; ?? ??? ??? ?Person* peo = T.find(Name); ?? ??? ??? ?if (peo == NULL) { ?? ??? ??? ??? ?cout << "查無(wú)此人" << endl; ?? ??? ??? ??? ?system("cls"); ?? ??? ??? ??? ?break; ?? ??? ??? ?} ?? ??? ??? ?cout<<"-----------------------------------"<<endl; ?? ??? ??? ?cout <<left<<setw(8)<<"序 號(hào)"<<setw(9)<<"姓 名"<<setw(10)<<"崗 位"<<setw(10)<<"工 資"<< endl;? ?? ??? ??? ?peo->show(); ?? ??? ??? ?cout<<endl<<"-----------------------------------"<<endl; ?? ??? ??? ?cout << endl; ?? ??? ??? ?system("pause"); ?? ??? ??? ? ?? ??? ?} ?? ??? ??? ??? ?break; ?? ??? ?case 4: {? ?? ??? ??? ?cout<<"-----------------------------------"<<endl; ?? ??? ??? ?cout <<left<<setw(8)<<"序 號(hào)"<<setw(9)<<"姓 名"<<setw(10)<<"崗 位"<<setw(10)<<"工 資"<< endl;? ?? ??? ??? ?T.show1(); ?? ??? ??? ?cout<<"-----------------------------------"<<endl; ?? ??? ??? ?system("pause"); ?? ??? ??? ?system("cls"); ?? ??? ?} ?? ??? ??? ??? ?break; ?? ??? ?case 5: {? ?? ??? ??? ?cout<<"-----------------------------------"<<endl; ?? ??? ??? ?cout <<left<<setw(8)<<"序 號(hào)"<<setw(9)<<"姓 名"<<setw(10)<<"崗 位"<<setw(10)<<"工 資"<< endl;? ?? ??? ??? ??? ?T.show(); ?? ??? ?} ?? ??? ??? ?system("pause"); ?? ??? ??? ??? ?break; ?? ??? ?case 0: ?? ??? ??? ?T.addtofile(); ?? ??? ??? ?exit(0); ?? ??? ?default: ?? ??? ??? ?cout << "輸入錯(cuò)誤請(qǐng)重新輸入" << endl; ?? ??? ??? ?break; ?? ??? ?} ?? ?} ?? ?return 0; }
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
C語(yǔ)言重難點(diǎn)之內(nèi)存對(duì)齊和位段
這篇文章主要介紹了C語(yǔ)言重難點(diǎn)之內(nèi)存對(duì)齊和位段,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-05-05C++實(shí)現(xiàn)將長(zhǎng)整型數(shù)轉(zhuǎn)換為字符串的示例代碼
這篇文章主要介紹了C++實(shí)現(xiàn)將長(zhǎng)整型數(shù)轉(zhuǎn)換為字符串的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04C語(yǔ)言指針應(yīng)用簡(jiǎn)單實(shí)例
這篇文章主要介紹了C語(yǔ)言指針應(yīng)用簡(jiǎn)單實(shí)例的相關(guān)資料,需要的朋友可以參考下2017-05-05Qt模仿實(shí)現(xiàn)文字浮動(dòng)字母的效果
這篇文章主要介紹了通過(guò)Qt實(shí)現(xiàn)的文字浮動(dòng)的效果,效果很簡(jiǎn)單就是文本向上移動(dòng),在移動(dòng)過(guò)程中文字整體變大或縮小。感興趣的可以試一試2022-01-01Linux頁(yè)面置換算法的C語(yǔ)言實(shí)現(xiàn)
這篇文章主要為大家詳細(xì)介紹了Linux頁(yè)面置換算法的C語(yǔ)言實(shí)現(xiàn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-12-12基于OpenGL實(shí)現(xiàn)多段Bezier曲線(xiàn)拼接
這篇文章主要為大家詳細(xì)介紹了基于OpenGL實(shí)現(xiàn)多段Bezier曲線(xiàn)拼接,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-04-04使用C++和Crypto++庫(kù)實(shí)現(xiàn)AES加密與解密
在這篇博客中,我們將深入探討如何利用C++和Crypto++庫(kù)實(shí)現(xiàn)高效且安全的AES加密與解密機(jī)制,Crypto++是一款高度認(rèn)可的免費(fèi)C++類(lèi)庫(kù),文中通過(guò)代碼示例介紹的非常詳細(xì),具有一定的參考價(jià)值,需要的朋友可以參考下2024-01-01C語(yǔ)言文件操作實(shí)現(xiàn)數(shù)據(jù)持久化(幫你快速了解文件操作函數(shù))
持久數(shù)據(jù)其實(shí)就是將數(shù)據(jù)保存到數(shù)據(jù)庫(kù),下面這篇文章主要給大家介紹了關(guān)于C語(yǔ)言文件操作實(shí)現(xiàn)數(shù)據(jù)持久化(幫你快速了解文件操作函數(shù))的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-11-11