版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
個(gè)人通訊錄管理系統(tǒng)(MFC版)專業(yè)班級(jí):學(xué)號(hào):姓名:成績(jī):目錄引言通訊錄管理系統(tǒng)分析1、通訊錄管理系統(tǒng)的意義2、預(yù)期目的通訊錄管理系統(tǒng)設(shè)計(jì)1、MFC介紹2、系統(tǒng)整體框架圖3、多個(gè)功效的實(shí)現(xiàn)運(yùn)行與測(cè)試1、插入統(tǒng)計(jì)的測(cè)試2、刪除統(tǒng)計(jì)的測(cè)試3、修改統(tǒng)計(jì)的測(cè)試4、導(dǎo)入的測(cè)試5、保存統(tǒng)計(jì)和退出的測(cè)試設(shè)計(jì)總結(jié)附錄1.插入信息對(duì)話框代碼2.通訊錄窗口代碼引言21世紀(jì)是IT普及的世界,到處都存在IT的身影,實(shí)時(shí)通訊已是占據(jù)它不可或缺的地位。一種好的、強(qiáng)大的通訊錄系統(tǒng)的好壞,不僅能夠直接影響到公司、個(gè)人的人際關(guān)系,并且會(huì)間接的影響到公司、個(gè)人經(jīng)濟(jì)利益和社會(huì)地位。隨著社會(huì)的發(fā)展,科技的進(jìn)步,計(jì)算機(jī)的應(yīng)用在社會(huì)各領(lǐng)域中都得到了普及,越來越多的人都感受到運(yùn)用計(jì)算機(jī)進(jìn)行各類管理的科學(xué)和便捷,運(yùn)用計(jì)算機(jī)進(jìn)行通訊管理已經(jīng)是一種趨勢(shì)。MFC是MicrosoftFoundationClassLibrary(微軟基礎(chǔ)類庫(kù))的縮寫形式。它是C++的類集,提供面對(duì)對(duì)象框架,運(yùn)用這個(gè)框架,程序員能夠輕松的創(chuàng)立Windows應(yīng)用程序?;贛FC的通訊管理系統(tǒng)含有美觀的窗口界面、充足可靠的信息數(shù)據(jù)、簡(jiǎn)樸方便的維護(hù)手段和靈活多變的查詢方式以及快捷而精確的查詢成果。因此,對(duì)于通訊錄管理系統(tǒng)的設(shè)計(jì)重要涉及數(shù)據(jù)庫(kù)的建立、維護(hù)以及應(yīng)用程序的開發(fā)兩個(gè)方面。對(duì)于前者而言規(guī)定建立起數(shù)據(jù)一致性及完整性強(qiáng)、數(shù)據(jù)安全性好的數(shù)據(jù)庫(kù)。對(duì)于后者而言則規(guī)定含有應(yīng)用程序功效全,易使用等,運(yùn)行穩(wěn)定等特點(diǎn)。因此,擬選用的開發(fā)軟件是Microsoft公司出品的VisualC++6.0MFC平臺(tái)進(jìn)行系統(tǒng)的開發(fā)。通訊錄管理系統(tǒng)的分析1、通訊錄管理系統(tǒng)的意義管理信息系統(tǒng)(ManagementInformationSystem,下列簡(jiǎn)稱為MIS),是一種將公司生產(chǎn)和經(jīng)營(yíng)中的多個(gè)內(nèi)、外部信息進(jìn)行收集、加工、整頓、傳遞,并有序地存儲(chǔ),以用于管理和決策,是公司增效的信息系統(tǒng)。它能夠使公司更加及時(shí)、精確、全方面、詳實(shí)的理解所需的信息數(shù)據(jù)。同時(shí)管理信息系統(tǒng)對(duì)多個(gè)信息數(shù)據(jù)的進(jìn)一步加工,能使公司領(lǐng)導(dǎo)層的生產(chǎn)、經(jīng)營(yíng)、管理決策根據(jù)更加充足,更含有合理性、科學(xué)性;從而為社會(huì)發(fā)明出更多的價(jià)值,為公司的發(fā)展發(fā)明出更多的機(jī)會(huì)。對(duì)于企、事業(yè)單位的通訊錄管理系統(tǒng)來說,不需要大型的數(shù)據(jù)庫(kù)系統(tǒng)。只需要一種操作方便,功效實(shí)用,能滿足本中心對(duì)數(shù)據(jù)的管理及需求的系統(tǒng),能夠提高通訊錄管理的效率。預(yù)期目的我們的目的就是使用C++輸入/輸出流設(shè)計(jì)一種基于對(duì)話框的通訊錄,用于編輯和保存顧客的姓名、電話和E-mail信息,開發(fā)出一種功效比較實(shí)用、操作非常方便、簡(jiǎn)樸的通訊錄管理系統(tǒng)。并在功效上實(shí)現(xiàn)插入統(tǒng)計(jì)、刪除統(tǒng)計(jì)、修改統(tǒng)計(jì)、保存統(tǒng)計(jì)、導(dǎo)入與退出等基本功效,滿足我們通訊錄日常所需。通訊錄管理系統(tǒng)的設(shè)計(jì)1、MFC介紹MFC是MicrosoftFoundationClassLibrary(微軟基礎(chǔ)類庫(kù))的縮寫形式。它是C++的類集,提供面對(duì)對(duì)象框架,運(yùn)用這個(gè)框架,程序員能夠輕松地創(chuàng)立Windows應(yīng)用程序。MFC還提供應(yīng)用程序開發(fā)模型。用MFCAppwizard來創(chuàng)立一種基于對(duì)話框的應(yīng)用程序,過程以下從“文獻(xiàn)”菜單中單擊“新建”,顯示“新建”對(duì)話框的Projects(項(xiàng)目)選項(xiàng)卡,其中列出了VisualC++中的向?qū)?。選擇標(biāo)有MFCAppWizard(exe)的圖標(biāo),如圖1所示,為項(xiàng)目輸入一種名字。在位置文本框中指定一種途徑。直到選擇列表中的一種圖標(biāo),并輸入一種項(xiàng)目名后,OK按鈕才干用。單擊OK。圖1單擊“擬定”之后,在出現(xiàn)的界面中選擇“基于對(duì)話框”如圖2所示,即MFC應(yīng)用程序向?qū)Лh(huán)節(jié)一圖2點(diǎn)擊“下一步”,進(jìn)入圖3界面,即MFC應(yīng)用程序向?qū)Лh(huán)節(jié)二圖3點(diǎn)擊“下一步”,進(jìn)入圖4界面,即MFC應(yīng)用程序向?qū)Лh(huán)節(jié)三圖4點(diǎn)擊“下一步”,進(jìn)入圖5界面,再點(diǎn)擊“完畢”,即完畢應(yīng)用程序的建立圖5系統(tǒng)整體框架圖通訊錄管理系統(tǒng)通訊錄管理系統(tǒng)刪除統(tǒng)計(jì)修改統(tǒng)計(jì)保存統(tǒng)計(jì)插入統(tǒng)計(jì)通訊錄管理系統(tǒng)設(shè)計(jì)重要進(jìn)行四個(gè)功效:插入統(tǒng)計(jì)、刪除統(tǒng)計(jì)、修改統(tǒng)計(jì)、保存統(tǒng)計(jì),在此基礎(chǔ)上增加兩個(gè)高級(jí)功效:導(dǎo)入與退出。多個(gè)功效的實(shí)現(xiàn)在“查看”菜單中選擇ClassWizard命令,在打開的對(duì)話框中切換到MemberVariable選項(xiàng)卡。選中列表控件的IDC_LIST1,單擊【AddVariable】按鈕,添加組員變量的名稱為m_list,類型為CListCtrl,其設(shè)計(jì)成果如圖6.1所示,選中列表控件的IDC_EDIT1選項(xiàng),添加Membervariablename為m_name,類型為CString,單擊【OK】按鈕返回,依次解決IDC_EDIT2、IDC_EDIT3,最后設(shè)計(jì)成果如圖6.2圖6.1圖6.2(2)在文獻(xiàn)視圖FileView中單擊SourceFiles目錄,雙擊1111Dlg.cpp選項(xiàng)打開該文獻(xiàn)。在文獻(xiàn)中找到OnInitDialog()函數(shù),在//TODO:Addextrainitializationhere的提示下,添加下列代碼:m_list.ModifyStyle(0,LVS_REPORT); //修改顯示風(fēng)格 m_list.InsertColumn(0,"姓名",LVCFMT_CENTER,70,NULL); //添加“姓名”列 m_list.InsertColumn(1,"電話",LVCFMT_CENTER,100,NULL); //添加“電話”列 m_list.InsertColumn(2,"Email",LVCFMT_CENTER,150,NULL); //添加“Email”列輸入信息對(duì)話框的設(shè)計(jì):添加對(duì)話框,雙擊該對(duì)話框,創(chuàng)立一種新類,添加類名為Inputdlg,其設(shè)計(jì)如圖7.1,整體效果設(shè)計(jì)圖為7.2圖7.1圖7.2在“通訊錄”對(duì)話框中,雙擊【插入統(tǒng)計(jì)】按鈕,彈出對(duì)話框,如圖8所示,保持函數(shù)名默認(rèn)值為OnBUTTONinsert(),單擊【OK】按鈕進(jìn)行代碼編輯。依這類推,解決其它按鈕。圖8(5)【插入統(tǒng)計(jì)】按鈕的組員函數(shù)為:voidCMy1111Dlg::OnBUTTONinsert()對(duì)應(yīng)代碼:Inputdlgdlg; if(IDOK==dlg.DoModal()) {m_list.InsertItem(0,dlg.m_name); m_list.SetItemText(0,1,dlg.m_phone); m_list.SetItemText(0,2,dlg.m_email); } k=0;【刪除統(tǒng)計(jì)】按鈕的組員函數(shù)為:voidCMy1111Dlg::OnBUTTONdelete()對(duì)應(yīng)代碼:if(!m_list.GetItemCount()){ MessageBox("沒有統(tǒng)計(jì)能夠刪除","Error",MB_ICONERROR|MB_OKCANCEL); return;}intindex=0;index=m_list.GetNextItem(0,LVNI_SELECTED);if(-1==index){if(IDOK==MessageBox("擬定刪除?","Information",MB_OKCANCEL)){ m_list.DeleteItem(0);}}else{if(IDOK==MessageBox("擬定刪除?","Information",MB_OKCANCEL)){ m_list.DeleteItem(index);}}}【修改統(tǒng)計(jì)】按鈕的組員函數(shù)為:voidCMy1111Dlg::OnBUTTONmodify()對(duì)應(yīng)代碼:if(!m_list.GetItemCount()){MessageBox("沒有統(tǒng)計(jì)能夠修改");return;}Inputdlgdlg;dlg.m_name=m_list.GetItemText(0,0);dlg.m_phone=m_list.GetItemText(0,1);dlg.m_email=m_list.GetItemText(0,2);intindex=0;index=m_list.GetNextItem(0,LVNI_SELECTED);if(-1==index){dlg.m_name=m_list.GetItemText(0,0);dlg.m_phone=m_list.GetItemText(0,1);dlg.m_email=m_list.GetItemText(0,2);if(dlg.DoModal()){m_list.SetItemText(0,0,dlg.m_name); m_list.SetItemText(0,1,dlg.m_phone); m_list.SetItemText(0,2,dlg.m_email);}}else{dlg.m_name=m_list.GetItemText(index,0);dlg.m_phone=m_list.GetItemText(index,1);dlg.m_email=m_list.GetItemText(index,2);if(dlg.DoModal()){m_list.SetItemText(index,0,dlg.m_name);m_list.SetItemText(index,1,dlg.m_phone);m_list.SetItemText(index,2,dlg.m_email);}}}【保存統(tǒng)計(jì)】按鈕的組員函數(shù)為:voidCMy1111Dlg::OnBUTTONsave()對(duì)應(yīng)代碼:CStringstr; fstreamoutfile("book.txt",ios::out); intCount=m_list.GetItemCount(); for(inti=Count-1;i>=0;i--) { for(intj=0;j<3;j++) { str=m_list.GetItemText(i,j); str+=''; outfile<<str; } outfile<<endl; } outfile.close(); k=1;【導(dǎo)入】按鈕的組員函數(shù)為:voidCMy1111Dlg::OnBUTTONload()對(duì)應(yīng)代碼:BOOLend=FALSE; charp[100]; introw=0,column=0; fstreaminfile("book.txt",ios::in|ios::nocreate); if(!infile) {MessageBox("您沒有保存過信息!"); return; } while(1) {m_list.InsertItem(m_list.GetItemCount(),NULL,NULL);for(column=0;column<3;column++) {if(!(infile>>p)) {end=TRUE; break; } m_list.SetItemText(row,column,p); } row++; if(TRUE==end) {break; } } infile.close();}【退出】按鈕的組員函數(shù)為:voidCMy1111Dlg::OnButton6()對(duì)應(yīng)代碼:if(k==0)MessageBox("您輸入的數(shù)據(jù)未保存,請(qǐng)保存后再繼續(xù)!"); elseDestroyWindow();(6)“通訊錄”對(duì)話框的設(shè)計(jì)從控件列表框中選擇按鈕控件和列表控件置于對(duì)話框上,修改按鈕控件的屬性,達(dá)成如圖9的設(shè)計(jì)效果圖9運(yùn)行與測(cè)試插入統(tǒng)計(jì)的測(cè)試如圖10.1我將自己信息插入,特別是在輸入Email的時(shí)候,如果輸入沒有“@”為不正當(dāng)格式,將會(huì)出現(xiàn)如圖10.2所示狀況。圖10.1圖10.2刪除統(tǒng)計(jì)的測(cè)試剛開始我保存了三個(gè)人的聯(lián)系方式如圖11.1所示,刪除時(shí)出現(xiàn)圖11.2的界面,之后如圖11.3的界面。圖11.1圖11.2圖11.3修改統(tǒng)計(jì)的測(cè)試如果我先現(xiàn)我姐姐的電話輸入錯(cuò)了,對(duì)的的號(hào)碼是90909090,那么在圖12的界面下修改電話號(hào)碼,然后點(diǎn)擊擬定即可圖12導(dǎo)入的測(cè)試如圖13.1,我在我和姐姐的信息基礎(chǔ)上增加了我父親媽媽的個(gè)人通信信息,然后運(yùn)行程序“導(dǎo)入”,之后出現(xiàn)如圖13.2的界面。圖13.1圖13.2保存統(tǒng)計(jì)和退出的測(cè)試程序在設(shè)計(jì)時(shí)考慮文獻(xiàn)的保存問題,因此當(dāng)碰到東西沒有保存狀況下選擇了退出系統(tǒng),系統(tǒng)會(huì)出現(xiàn)警告,那么會(huì)出現(xiàn)圖14的界面。圖14設(shè)計(jì)總結(jié)在本次基于MFC的簡(jiǎn)易通訊錄管理系統(tǒng)設(shè)計(jì)中,該系統(tǒng)擁有插入統(tǒng)計(jì)。刪除統(tǒng)計(jì)、修改統(tǒng)計(jì)、保存統(tǒng)計(jì)、導(dǎo)入和退出功效。輸入信息涉及姓名、電話號(hào)碼、Email。其中導(dǎo)入txt文本信息和退出時(shí)檢查與否保存數(shù)據(jù)為較高級(jí)功效。系統(tǒng)運(yùn)行很正常,算較成功的程序設(shè)計(jì)。但是這只是對(duì)MFC的簡(jiǎn)樸的應(yīng)用,通過它,我對(duì)MFC的工作機(jī)制有了初步的理解,對(duì)MFC的進(jìn)一步理解還需要更多的時(shí)間和更多的實(shí)踐,設(shè)計(jì)中所設(shè)計(jì)功效都是最簡(jiǎn)樸的功效,有待提高。我后來會(huì)嘗試把數(shù)據(jù)庫(kù)MicrosoftSQLServer或Access等軟件學(xué)習(xí)好,然后再和MFC相結(jié)合做出功效更強(qiáng)大的應(yīng)用程序來。附錄1.插入信息對(duì)話框代碼:voidInputdlg::DoDataExchange(CDataExchange*pDX){ CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(Inputdlg) DDX_Text(pDX,IDC_EDIT1,m_name); DDX_Text(pDX,IDC_EDIT2,m_phone); DDX_Text(pDX,IDC_EDIT3,m_email); //}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(Inputdlg,CDialog) //{{AFX_MSG_MAP(Inputdlg) ON_WM_SHOWWINDOW() //}}AFX_MSG_MAPEND_MESSAGE_MAP()///////////////////////////////////////////////////////////////////////////////InputdlgmessagehandlersvoidInputdlg::OnOK()//確認(rèn)按鈕的代碼{ //TODO:Addextravalidationhere UpdateData(TRUE); GetDlgItem(IDC_EDIT1)->SetFocus(); if(m_email.Find('@',0)<0)//檢測(cè)郵箱與否符合格式(有@) {MessageBox("Email不對(duì)的,請(qǐng)重新輸入"); GetDlgItem(IDC_EDIT3)->SetFocus(); return; } CDialog::OnOK();}voidInputdlg::OnShowWindow(BOOLbShow,UINTnStatus){ CDialog::OnShowWindow(bShow,nStatus); GetDlgItem(IDC_EDIT1)->SetFocus(); //TODO:Addyourmessagehandlercodehere }2.通訊錄窗口代碼:#include"stdafx.h"#include"1111.h"#include"1111Dlg.h"#ifdef_DEBUG#definenewDEBUG_NEW#undefTHIS_FILEstaticcharTHIS_FILE[]=__FILE__;#endif#include"inputdlg.h"#include"fstream.h"intk=1;//k值擬定與否保存///////////////////////////////////////////////////////////////////////////////CAboutDlgdialogusedforAppAboutclassCAboutDlg:publicCDialog{public: CAboutDlg();//DialogData //{{AFX_DATA(CAboutDlg) enum{IDD=IDD_ABOUTBOX}; //}}AFX_DATA //ClassWizardgeneratedvirtualfunctionoverrides //{{AFX_VIRTUAL(CAboutDlg) protected: virtualvoidDoDataExchange(CDataExchange*pDX);//DDX/DDVsupport //}}AFX_VIRTUAL//Implementationprotected: //{{AFX_MSG(CAboutDlg) //}}AFX_MSG DECLARE_MESSAGE_MAP()};CAboutDlg::CAboutDlg():CDialog(CAboutDlg::IDD)//有關(guān){ //{{AFX_DATA_INIT(CAboutDlg) //}}AFX_DATA_INIT}voidCAboutDlg::DoDataExchange(CDataExchange*pDX){ CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CAboutDlg) //}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(CAboutDlg,CDialog) //{{AFX_MSG_MAP(CAboutDlg) //Nomessagehandlers //}}AFX_MSG_MAPEND_MESSAGE_MAP()///////////////////////////////////////////////////////////////////////////////CMy1111DlgdialogCMy1111Dlg::CMy1111Dlg(CWnd*pParent/*=NULL*/) :CDialog(CMy1111Dlg::IDD,pParent){ //{{AFX_DATA_INIT(CMy1111Dlg) //NOTE:theClassWizardwilladdmemberinitializationhere //}}AFX_DATA_INIT //NotethatLoadIcondoesnotrequireasubsequentDestroyIconinWin32 m_hIcon=AfxGetApp()->LoadIcon(IDR_MAINFRAME);}voidCMy1111Dlg::DoDataExchange(CDataExchange*pDX){ CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CMy1111Dlg) DDX_Control(pDX,IDC_LIST1,m_list); //}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(CMy1111Dlg,CDialog) //{{AFX_MSG_MAP(CMy1111Dlg) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() ON_BN_CLICKED(IDC_BUTTON1,OnBUTTONinsert) ON_BN_CLICKED(IDC_BUTTON2,OnBUTTONdelete) ON_BN_CLICKED(IDC_BUTTON3,OnBUTTONmodify) ON_BN_CLICKED(IDC_BUTTON4,OnBUTTONsave) ON_BN_CLICKED(IDC_BUTTON5,OnBUTTONload) ON_BN_CLICKED(IDC_BUTTON6,OnButton6) //}}AFX_MSG_MAPEND_MESSAGE_MAP()///////////////////////////////////////////////////////////////////////////////CMy1111DlgmessagehandlersBOOLCMy1111Dlg::OnInitDialog()//初始化對(duì)話框{ CDialog::OnInitDialog(); //Add"About..."menuitemtosystemmenu. //IDM_ABOUTBOXmustbeinthesystemcomm
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 養(yǎng)老院老人康復(fù)理療師考核獎(jiǎng)懲制度
- 【地球課件】地基基礎(chǔ)設(shè)計(jì)理論與荷載
- 九年級(jí)歷史期末試卷答題卡-教案課件-初中歷史九年級(jí)上冊(cè)部編版
- 房屋租賃的合同(2篇)
- 《食品安全和營(yíng)養(yǎng)》課件
- 2025年拉薩貨運(yùn)從業(yè)資格證模擬試題題庫(kù)及答案大全
- 2025年揚(yáng)州貨運(yùn)從業(yè)資格證考些什么內(nèi)容
- 2024年土地承包合同終止后的土地經(jīng)營(yíng)權(quán)租賃協(xié)議6篇
- 中國(guó)古代禮儀文明課件-婚禮
- 2025年沈陽經(jīng)營(yíng)性道路客貨運(yùn)輸駕駛員從業(yè)資格考試
- 三級(jí)綜合醫(yī)院評(píng)審標(biāo)準(zhǔn)(2024年版)
- 眾創(chuàng)空間運(yùn)營(yíng)管理實(shí)施方案
- 2024智慧城市數(shù)據(jù)采集標(biāo)準(zhǔn)規(guī)范
- 云南省2022年中考道德與法治真題試卷
- 業(yè)委會(huì)解除小區(qū)物業(yè)服務(wù)合同的函
- Unit 7 Be wise with money(教學(xué)設(shè)計(jì))2024-2025學(xué)年譯林版英語七年級(jí)上冊(cè)
- 2024-2025學(xué)年北京市海淀區(qū)數(shù)學(xué)三上期末教學(xué)質(zhì)量檢測(cè)試題含解析
- 車位進(jìn)行特許權(quán)經(jīng)營(yíng)服務(wù)投標(biāo)方案(技術(shù)方案)
- 8《美麗文字 民族瑰寶》教學(xué)設(shè)計(jì)2023-2024學(xué)年統(tǒng)編版道德與法治五年級(jí)上冊(cè)
- 語文上課課件-第七單元作文課-即景-部編版
- 人工智能訓(xùn)練師理論知識(shí)考核要素細(xì)目表三級(jí)
評(píng)論
0/150
提交評(píng)論