首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> C++ 入門

C++ STL 實戰:基於 vector/algorithm/functional 的學生信息管理系統

     編輯:C++ 入門

系統功能

實現學生信息的增、刪、查、改、排序、遍歷,展示 STL 容器 vector、算法 sort/find_if、仿函數 operator() 的綜合應用。

類設計 CStudent

  • 數據成員:學號 StudentNumber、姓名 StudnetName、存儲對象的 vector<CStudent> student2(值語義,避免指針管理內存)。
  • 核心方法:
    • add_student():輸入學號姓名,push_back 入庫。
    • print_student():迭代器遍歷輸出所有學生。
    • SortStudent():sort(student2.begin(), student2.end()),依賴 operator< 按學號升序。
    • FindStudent():find_if + 仿函數 operator()(比較學號或姓名)定位學生。
    • DeleteOneStudent():find_if 定位後 erase 刪除。
    • DeleteAllStudent():clear() 清空。

關鍵運算符重載

// 用於 sort 排序比較
bool operator<(CStudent &stu) { return StudentNumber < stu.StudentNumber; }

// 用於 find_if 查找匹配(學號或姓名相同即視為同一學生)
bool operator()(CStudent &other) {
    return (StudentNumber == other.StudentNumber) || (StudnetName == other.StudnetName);
}

主程序交互邏輯

int main() {
    CStudent s; int flag;
    while (1) {
        // 菜單:1增 2查全部 3查找 4刪全部 5刪一個 6排序 0退出
        cin >> flag;
        switch(flag) {
            case 1: s.add_student(); break;
            case 2: s.print_student(); break;
            case 3: s.FindStudent(); break;
            case 4: s.DeleteAllStudent(); break;
            case 5: s.DeleteOneStudent(); break;
            case 6: s.SortStudent(); break;
            case 0: return 0;
        }
    }
}

運行效果展示

菜單界面 添加學生 打印所有 查找學生 刪除學生 排序結果

技術亮點總結

  1. 值語義存儲:vector<CStudent> 避免了裸指針的內存洩漏風險。
  2. 算法與仿函數解耦:sort 用 operator<,find_if 用 operator(),職責清晰。
  3. 迭代器遍歷:標準 begin()/end() 模式,通用性強。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved