日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

基于C++实现(控制台+界面)通讯录管理系统【100010012】

發(fā)布時間:2024/3/13 c/c++ 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基于C++实现(控制台+界面)通讯录管理系统【100010012】 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

個人通訊錄管理系統(tǒng)

問題描述:

主要內(nèi)容

個人通訊錄是記錄了同學(xué)(包含一起上學(xué)的學(xué)校名稱)、同事(包含共事的單位名稱)、朋友(包含認(rèn)識的地點)、親戚(包含稱呼)等與本人有關(guān)人員的數(shù)據(jù)集。

具體要求

  • 提供錄入個人信息、修改個人信息(姓名和出生日期除外)、刪除個人信息等編輯功能。

  • 提供按姓名查詢個人信息的功能。

  • 提供查找在5天之內(nèi)過生日的人員的信息,以便發(fā)出祝賀電話或 E-mail。

  • 按照姓名或出生日期排序,顯示輸出。

  • 統(tǒng)計在給定月份出生的人數(shù),并顯示輸出。

  • 能列出全體人員的姓名、出生日期、電話和email地址。

  • 能分別列出同學(xué)、同事、朋友、親戚的所有信息。

  • 用菜單形式提供程序的各種功能的選擇。

系統(tǒng)設(shè)計

開發(fā)環(huán)境

  • 控制臺版本:VS2015

  • Qt界面版本:Qt_5_6_0_MinGW_32bit

控制臺版本與界面版本

程序共有兩個版本,控制臺版本和界面版本。在程序設(shè)計之初,我們?yōu)榱擞梢椎诫y循序漸進,我們先在控制臺下實現(xiàn)通訊錄的各個功能。在完成并完善了控制臺下最初版本之后,再設(shè)計并實現(xiàn)最終的界面版本。

類體系設(shè)計

程序結(jié)構(gòu)中以Person類為基類,以Relative、Friend、Colleague和Classmate為其派生類。程序通過生成這四個派生類的對象來存儲通訊錄聯(lián)系人信息?;怭erson類中包含了姓名、電話、地址等基本信息,每一個派生類各自增加了不同的數(shù)據(jù)成員以及相應(yīng)返回其數(shù)據(jù)成員的成員函數(shù)。

程序中還定義了AddressBook類,這個類嚴(yán)格意義來說就是我們所理解的通訊錄。其數(shù)據(jù)成員中包含了一個Person類型的指針數(shù)組。其成員函數(shù)共有七個,七個函數(shù)可對該Person類型指針數(shù)組進行操作,以完成題目所要求的添加聯(lián)系人、刪除聯(lián)系人、顯示所有聯(lián)系人并排序等功能。

類體系設(shè)計框架如圖。

類定義:(圖片代碼中有注釋詳細(xì)說明)

基類Person類:

數(shù)據(jù)成員:

成員函數(shù):

派生類Relative:

派生類Colleague:

派生類Friend:

派生類Classmate:

通訊錄類Addressbook:

頭文件

Cpp文件

通訊錄Addressbook類各部分功能:

輸入聯(lián)系人信息:

刪除聯(lián)系人:

對聯(lián)系人進行排序:

保存到文件夾

讀取文件

查找聯(lián)系人

另外需要說明的是,控制臺版本中基類Person類設(shè)為抽象類,函數(shù)Print、Print2為純虛函數(shù)。(Print輸出中文如“姓名、電話號碼”等等,Print2則輸出相應(yīng)的具體成員信息) 四個派生類都有其版本的虛函數(shù)以滿足輸出不同信息的要求。

因為讀寫兼容性問題(二進制文本讀寫和虛函數(shù)似乎不兼容,這個問題我們一直未能解決。目前已將該情況向老師說明,但暫時還未得到解決)因此我們在控制臺版本中繼續(xù)采用抽象類以及虛函數(shù),并將二進制文本讀寫改為文本讀寫。在界面版本中我們則放棄采用抽象類和虛函數(shù),繼續(xù)使用二進制文本讀取。這樣也是為了更多使用我們所學(xué)知識。

界面實現(xiàn)技術(shù)細(xì)節(jié):

添加菜單:

一、添加 QToolButton 控件,清除text,icon 為空,設(shè)置屬性 arrowType 為**DownArrow”” ,這樣就變成一個倒三角形狀。

二、彈出菜單

  • 添加菜單。
  • 設(shè)置樣式。
  • 關(guān)聯(lián)菜單信號和槽函數(shù)。

三、響應(yīng)菜單選中信號(寫槽函數(shù))。

四、補充:彈出右鍵菜單。

  • 從指定控件的類派生出一個類,把這個控件提升為這個派生類。
  • 重寫 contextMenuEvent ,在這里創(chuàng)建菜單和關(guān)聯(lián)信號和槽函數(shù)。
  • 寫對應(yīng)槽函數(shù)。

重寫界面邊框

原理實際就是去掉邊框,然后添加label 和 按鈕控件手動模擬。

一、去掉系統(tǒng)默認(rèn)邊框的顯示

二、界面布局

  • 左邊添加一個 label 控件,去掉text,設(shè)置 pixmap 屬性,來設(shè)置圖片。
  • 中間放一個label空間,然后是3個按鈕控件。
  • 設(shè)置對應(yīng)的圖片,這里用QSS樣式設(shè)置。
  • QSS樣式設(shè)置。

三、代碼實現(xiàn)

  • 響應(yīng)3個按鈕點擊信號,彈出菜單前面已經(jīng)提到。

  • 按住標(biāo)題移動功能,重寫 mousePressEvent mouseReleaseEvent

mouseMoveEvent 事件。

搜索功能,編輯框虛字提示

一、設(shè)置編輯框?qū)傩?placeholderText ,即可實現(xiàn)上面的虛字提示功能,(有輸入虛字提示消失)。

二、搜索按鈕 和 上面最小化 按鈕 QSS設(shè)置一樣。

ListWidget 控件自定義窗口

思路:

ListWidget 控件下的每一個 Item(QListWidgetItem)都可以看作一個窗口,只要把窗口設(shè)置成自定義的窗口即可。

  • 創(chuàng)建子窗口,關(guān)聯(lián)子窗口和ListWidget,關(guān)聯(lián)子窗口和父窗口的信號和槽函數(shù)。

  • 槽函數(shù)之刪除子窗口。
    • 判斷信號子窗口。

    • 使用 takeItem 來去除子窗口。

  • 一些函數(shù)。

TabWidget 控件

這里實際當(dāng)按鈕使用,使用TabWidget 方便創(chuàng)建多個按鈕和響應(yīng)時間。

一、QSS樣式

二、添加槽函數(shù) void MainWindow::on_tabWidget_currentChanged(int index)

ListItem子窗口

一、設(shè)置label 的圖片 和 按鈕的樣式

二、移入顯示按鈕,移出隱藏按鈕(重寫 enterEvent leaveEvent)

三、彈出(創(chuàng)建)窗口

四、日期的計算和選擇

五、雙擊顯示詳細(xì)信息

重寫 ListItemForm 的 mouseDoubleClickEvent 事件即可(不是在主窗口的ListWidget響應(yīng)雙擊事件)

窗口編輯和查看切換

一、編輯模式:

二、查看模式:

三、思路:

  • 通過 setEnabled 函數(shù)來設(shè)置是否可編輯。

  • 通過 setStyleSheet 函數(shù)來改變顯示的樣式。

  • 禁用控件之后,字體會變灰(包括上面的Tab控件也是這樣來避免禁用后難看的問題)。通過 樣式表里面的 color 屬性來設(shè)置字體,避免字體變灰。
  • 編輯框邊框隱藏。通過設(shè)置樣式表里面border 屬性大小為 0px 來隱藏邊框
  • TabWidget 設(shè)置Tab按鈕的樣式。

  • DataWidget 控件,設(shè)置 上面的樣式并沒有 去除邊框 和 黑色背景。所以使用一個label控件來顯示查看模式,編輯模式才顯示DataEdit控件。

彈出文件選擇框:

EXE文件圖標(biāo)設(shè)置:

  • 把圖標(biāo)文件icon.ico復(fù)制到項目目錄下

  • 在 .pro 文件以下一下語句

程序測試

界面設(shè)計細(xì)節(jié)(QT版本):

頁面設(shè)計與基本功能如下:

主界面

添加菜單

搜索功能,編輯框虛字提醒:

搜索編輯框自動補全功能:

查看聯(lián)系人詳細(xì)信息:

編輯聯(lián)系人信息:

生日選擇:

查詢最近生日與生日提醒:

生成祝賀文本:

使用說明

程序的使用:

由界面提示操作即可。

開發(fā)環(huán)境:

  • 控制臺版本:VS2015

    • 如果使用低版本vs打開,請先設(shè)置項目的平臺工具集屬性

    • 設(shè)置方式

      • 項目–>屬性–>常規(guī)–>平臺工具集–>當(dāng)前VS對應(yīng)的那個選項
  • Qt界面版本:Qt_5_6_0_MinGW_32bit

    • 注意不是使用VS下的Qt插件,必須安裝Qt5.6來打開項目,而不是用VS打開。

    • 注意,Qt項目的目錄路徑不能含有中文,有中文無法編譯

?? 資源

大小: 3.27MB
?? 資源下載:https://download.csdn.net/download/s1t16/87247954

總結(jié)

以上是生活随笔為你收集整理的基于C++实现(控制台+界面)通讯录管理系统【100010012】的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。