VC 課程設計報告-邢欣-最終打印版_第1頁
VC 課程設計報告-邢欣-最終打印版_第2頁
VC 課程設計報告-邢欣-最終打印版_第3頁
VC 課程設計報告-邢欣-最終打印版_第4頁
VC 課程設計報告-邢欣-最終打印版_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

PAGEPAGEIHarbinInstituteofTechnologyatWeihaiVC++課程設計報告設計題目:班級通訊錄 院系:計算機科學與技術學院班級:0904202學號:090420202設計者:邢欣哈爾濱工業(yè)大學(威海)二零一零年十二月哈爾濱工業(yè)大學(威海)計算機學院《VC++課程設計》驗收及成績評定表項目名稱班級通訊錄設計開始日期2010-12-20項目完成日期2010-12-25文檔評審成績(共35分)評審項目評審內(nèi)容成績標準評審成績項目名稱課題是否從實際出發(fā),是否滿足工作量需求,是否具有創(chuàng)意等5分文檔格式文檔格式是否規(guī)范;文字是否規(guī)范;圖表(流程圖等)是否規(guī)范;術語是否準確等15分文檔質(zhì)量程序設計思想與整體框架是否清晰等15分文檔特殊評價備注總成績程序功能完備性評審成績(共45分)評審項目評審內(nèi)容成績標準評審成績程序運行狀況程序是否能正常運行;是否出現(xiàn)死鎖;是否遇到錯誤而中止運行10分程序正確性對于給定的輸入數(shù)據(jù),是否能得到正確的輸出結(jié)果10分程序與文檔的一致性程序與各種文檔的內(nèi)容是否一致5分程序的代碼量程序代碼量的大小10分實現(xiàn)方法圖形界面或命令行界面,美觀程度5分程序功能程序的功能是否完備5分程序特殊評價備注總成績答辯評審成績(共15分)評審項目評審內(nèi)容成績標準評審成績答辯思路答辯思路是否清晰5分回答問題回答問題是否正確10分考勤評定成績(共5分)考勤成績答辯總體評價總成績

哈爾濱工業(yè)大學(威海)課程設計任務書姓名:邢欣學號:090420202院(系):計算機科學與技術學院專業(yè):信息安全任務起止日期:2010年12月20日至2010年12月25日課程設計題目:班級通訊錄問題闡述與分析:人與人之間的聯(lián)系不斷加強,通訊錄在日常生活中也發(fā)揮著越來越重要的作用。建立一個功能完備的通訊錄,可以極大的方便我們對大量的聯(lián)系人信息的管理,實現(xiàn)高效的添加、查找、修改、刪除。通過數(shù)據(jù)庫保存?zhèn)€人信息,并對信息的修改設置管理員權限,保證的信息的安全性。同時,通過這次課程設計,還可以鞏固本學期所學的C++知識,學習并聯(lián)系MFC的基本知識,學會簡單的windows程序設計,還可以借此練習對版本控制工具的使用。工作量:軟件功能分析;軟件功能模塊劃分;對各功能模塊的設計與分析;學習利用MFC編程;學習數(shù)據(jù)庫的基本調(diào)用;軟件測試;用戶體驗的試驗、調(diào)整。工作計劃安排:2010年12月20日~12月21日:進行系統(tǒng)分析,確定各模塊功能及具體實現(xiàn)方案。2010年12月22日~12月24日:選定設計及運行環(huán)境,完成設計、運行測試環(huán)境的搭建。2010年12月24日~12月25日:系統(tǒng)完善,撰寫報告。目錄1需求分析 11.1設計目的與背景 11.2功能概述 12開發(fā)環(huán)境 13程序設計 23.1程序結(jié)構 23.2數(shù)據(jù)庫結(jié)構 23.3主要的困難 34功能實現(xiàn) 34.1涉及的主要技術 34.2主界面及瀏覽模塊 44.3查詢模塊 44.4登錄模塊 64.5管理模塊 84.6其他 115程序測試及運行界面 135.1主界面 135.2查詢界面 135.3登錄界面 145.4管理界面 166自我評價及總結(jié) 177參考資料 19哈爾濱工業(yè)大學(威海)課程設計報告-PAGE1-“班級通訊錄”設計報告需求分析設計目的與背景人與人之間的聯(lián)系不斷加強,通訊錄在日常生活中也發(fā)揮著越來越重要的作用。建立一個功能完備的通訊錄,可以極大的方便我們對大量的聯(lián)系人信息的管理,實現(xiàn)高效的添加、查找、修改、刪除。通過數(shù)據(jù)庫保存?zhèn)€人信息,并對信息的修改設置管理員權限,保證的信息的安全性。同時,通過這次課程設計,還可以達到以下目的:鞏固本學期所學的C++知識,學習并聯(lián)系MFC的基本知識,學會簡單的windows程序設計,練習對版本控制工具的使用功能概述本程序主要面向兩類用戶。普通用戶可以實現(xiàn)對通訊錄所有內(nèi)容的查看與搜索(提供按學號、按姓名兩種方式)。管理員用戶除可使用普通用戶可使用的功能外,還可以實現(xiàn)對用戶信息的增加、刪除、修改操作。同時,程序提供簡單的音樂播放功能,用戶可控制程序?qū)?nèi)置音樂的播放與停止。開發(fā)環(huán)境操作系統(tǒng):MicrosoftWindows7旗艦版開發(fā)環(huán)境:MicrosoftVisualC++6.0中文版數(shù)據(jù)庫:MicrosoftOfficeAccess2007版本控制工具:TortoiseSVN1.6.5及Subversion1.6.13程序設計程序結(jié)構本程序的結(jié)構如下圖:數(shù)據(jù)庫結(jié)構數(shù)據(jù)庫結(jié)構如下表:字段名稱中文含義數(shù)據(jù)類型寬度stunum學號文本10stunam姓名文本20stuage年齡數(shù)字2cellnum學歷文本10stuadd家庭住址文本50stutel聯(lián)系電話文本20stuqqQQ文本10stuemEmail文本30表STYLEREF1\s3SEQ表\*ARABIC\s11student字段名稱中文含義數(shù)據(jù)類型寬度usernam用戶名文本20userpass用戶密碼文本20表STYLEREF1\s3SEQ表\*ARABIC\s12login主要的困難困難:只學習過C++的基礎知識,對MFC程序設計不了解,對數(shù)據(jù)庫的連接更是不了解。解決方法:對照書本學習,利用MSDN學習,利用網(wǎng)絡上的資源學習,向周圍的人請教。功能實現(xiàn)涉及的主要技術本程序采用了MFC方式進行編程,ODBC方式連接數(shù)據(jù)庫,SVN方式進行開發(fā)過程中的版本控制。主界面及瀏覽模塊采用標準Windows窗體,在主界面使用DBGrid和RemoteDateCtrl這兩個ActiveX控件可以方便的顯示聯(lián)系人信息。同時,主界面提供“查詢”“管理員登錄”“退出”三個按鈕。關鍵代碼如下: //以模態(tài)形式顯示“登錄”對話框voidCAddressBookView::OnButtonLogin(){ //TODO:Addyourcontrolnotificationhandlercodehere CLoginDlgdlg; if(dlg.DoModal()==IDOK) { CManageDlgmdlg; if(mdlg.DoModal()==IDOK) OnPaint();//重繪主窗體 }} //以非模態(tài)形式顯示“查找”對話框voidCAddressBookView::OnButtonSearch(){ //TODO:Addyourcontrolnotificationhandlercodehere //因為CSearchView是基于CView類,CView類是基于CWnd類,不可以使用CDialog::Create() CDialog*pdlg; pdlg=(CDialog*)newCDialog; pdlg->Create(IDD_SEARCH); pdlg->ShowWindow(SW_SHOWNORMAL);}查詢模塊利用好MFC中CRecordSet類的成員變量m_strFilter、m_strSort,成員函數(shù)Open,即可實現(xiàn)查詢功能。對需要實現(xiàn)查找功能的窗體,設置一個CRecordSet的派生類,選擇好數(shù)據(jù)源,在將窗體類的基類設置為CDialog,在其聲明中增加一個成員變量mSet。在需要進行查找時,先關閉mSet,設置好mSet.m_strFilter和mSet.m_strSort,執(zhí)行mSet.Open,即可得到查詢結(jié)果。結(jié)合CRecordSet::MoveNext()和CRecordSet::MovePrev()函數(shù)用CRecordSet.IsEOF()和CRecordSet.IsBOF()進行判斷,即可實現(xiàn)對多查詢結(jié)果的瀏覽。將mSet.strSort分別設置為學號和姓名,即可實現(xiàn)對學號和姓名的查詢。將“按學號”一欄的Tab鍵順序設為1,即可實現(xiàn)對它的默認選定狀態(tài)。在本模塊中,本計劃使用CRecordView類,使用它的指針m_pSet可以比較方便的實現(xiàn)查詢結(jié)果的轉(zhuǎn)換,但是實際操作失敗。在嘗試了利用指針轉(zhuǎn)換的方式打開窗口后,窗口可以正常顯示,但是什么功能都無法實現(xiàn)。通過網(wǎng)絡搜索,可知其他人也出現(xiàn)了類似的結(jié)果。原因未知。成功后的關鍵代碼如下: //執(zhí)行查詢操作的代碼voidCSearchDlg::OnButtonSearch(){ //TODO:Addyourcontrolnotificationhandlercodehere UpdateData(TRUE); CSearchSetmSet; intnID=GetCheckedRadioButton(IDC_RADIO_STUNUM,IDC_RADIO_STUNAM); m_strSearch.TrimLeft(); if(m_strSearch.IsEmpty())//未輸入數(shù)據(jù),時,按下“搜索”按鈕無效 { return; } //if(nID==0)//未選擇查詢類型時,按下“搜索”按鈕無效 //{ // return; //} if(mSet.IsOpen()) { mSet.Close(); } if(nID==IDC_RADIO_STUNAM) { mSet.m_strFilter.Format("stunam='%s'",m_strSearch); mSet.m_strSort="stunum"; }else { mSet.m_strFilter.Format("stunum='%s'",m_strSearch); mSet.m_strSort="stunam"; } mSet.Open(); if(mSet.IsEOF()) { MessageBox("沒有你要找的對象"); } else { //mSet m_strStunum=mSet.m_stunum; m_strStunam=mSet.m_stunam; m_nStuage=mSet.m_stuage; m_strCellnum=mSet.m_cellnum; m_strStuadd=mSet.m_stuadd; m_strStutel=mSet.m_stutel; m_strStuqq=mSet.m_stuqq; m_strStuem=mSet.m_stuem; UpdateData(FALSE);//將查詢結(jié)果在編輯欄中顯示出來 nstate=1; }}//關閉非模態(tài)窗口voidCSearchDlg::OnOK(){ //TODO:Addextravalidationhere DestroyWindow(); deletethis;}登錄模塊通過對登錄框所屬類添加成員變量,實現(xiàn)對用戶的錯誤輸入次數(shù)的記錄,從而可以實現(xiàn)用戶三次輸入錯誤時退出登錄界面。通過對登錄對話框關閉方式的判斷(IDOK或IDCANCEL),主程序可以決定是否開啟用戶信息管理模塊。關鍵代碼如下: //用戶輸入錯誤時重建登錄對話框,連續(xù)3次輸入錯誤,則退出循環(huán)voidCLoginDlg::OnOK(){ //TODO:Addextravalidationhere CStringstrtemp;//該變量用于存放錯誤提示信息 m_nCount++; UpdateData(TRUE); CLoginSetm_Set; if(m_Set.IsOpen()) m_Set.Close();//在進行查找操作之前先關閉記錄集 m_Set.m_strFilter.Format("usernam='%s'ANDuserpass='%s'",m_strUsername,m_strPassword);//設置查詢條件 m_Set.Open();//查找記錄表login if(m_Set.IsEOF())//對于沒有找到記錄時的處理。這里按照剩余輸入次數(shù)分了兩種處理方法 { m_Set.Close(); if(m_nCount<3) { strtemp.Format("您的輸入有誤!\n您還有%d次機會,請重新輸入!",3-m_nCount); MessageBox(strtemp,"出錯啦!",MB_ICONERROR);//MessageBox的題目為“出錯啦!”,圖標為ERROR m_strUsername.Empty(); m_strPassword.Empty(); UpdateData(FALSE); } else { strtemp.Format("對不起,您的錯誤次數(shù)已達最大限制!"); MessageBox(strtemp,"出錯啦!",MB_ICONERROR); CDialog::OnCancel(); //這里不是OnOK() } } else//如果找到了記錄, { strtemp.Format("%s,歡迎回來!",m_strUsername); MessageBox(strtemp,"登錄成功!"); CDialog::OnOK(); }}//關閉窗口voidCLoginDlg::OnClose(){ //TODO:Addyourmessagehandlercodehereand/orcalldefault CDialog::OnClose();}管理模塊管理模塊可在查詢模塊的基礎上實現(xiàn)。正確利用CRecordSet::AddNew(),CRecordSet::Delete(),CRecordSet::Edit(),CRecordSet::Update()函數(shù),即可實現(xiàn)對用戶信息的增刪改操作。需要注意的是,在進行增加和修改操作之后,必須手動調(diào)用CRecordSet::Update()函數(shù)才可實現(xiàn)其功能。在管理對話框所屬類中增加一個成員變量ingnstate,以記錄當前是否已有聯(lián)系人信息顯示。關鍵代碼如下://增加一個聯(lián)系人voidCManageDlg::OnButtonAdd(){ //TODO:Addyourcontrolnotificationhandlercodehere CEditDlgdlg; if(dlg.DoModal()==IDOK) { if(!mSet.IsOpen()) mSet.Open(); mSet.AddNew(); mSet.m_stunum =dlg.m_strStunum; mSet.m_stunam =dlg.m_strStunam; mSet.m_stuage =dlg.m_nStuage; mSet.m_cellnum =dlg.m_strCellnum; mSet.m_stuadd =dlg.m_strStuadd; mSet.m_stutel =dlg.m_strStutel; mSet.m_stuqq =dlg.m_strStuqq; mSet.m_stuem =dlg.m_strStuem; mSet.Update(); mSet.Requery(); } m_strStunum =dlg.m_strStunum; m_strStunam =dlg.m_strStunam; m_nStuage =dlg.m_nStuage; m_strCellnum=dlg.m_strCellnum; m_strStuadd =dlg.m_strStuadd; m_strStutel =dlg.m_strStutel; m_strStuqq =dlg.m_strStuqq; m_strStuem =dlg.m_strStuem; UpdateData(FALSE);//在編輯欄中顯示出聯(lián)系人信息 nstate=1;}//編輯聯(lián)系人信息voidCManageDlg::OnButtonEdit(){ //TODO:Addyourcontrolnotificationhandlercodehere if(!nstate)//當前沒有記錄顯示,不執(zhí)行編輯功能 { MessageBox("請先選擇一個聯(lián)系人"); return; } CEditDlgdlg; dlg.m_strStunum =m_strStunum; dlg.m_strStunam =m_strStunam; dlg.m_nStuage =m_nStuage; dlg.m_strCellnum=m_strCellnum; dlg.m_strStuadd =m_strStuadd; dlg.m_strStutel =m_strStutel; dlg.m_strStuqq =m_strStuqq; dlg.m_strStuem =m_strStuem; if(dlg.DoModal()==IDOK) { mSet.Edit(); mSet.m_stunum=dlg.m_strStunum; mSet.m_stunam=dlg.m_strStunam; mSet.m_stuage=dlg.m_nStuage; mSet.m_cellnum=dlg.m_strCellnum; mSet.m_stuadd=dlg.m_strStuadd; mSet.m_stutel=dlg.m_strStutel; mSet.m_stuqq=dlg.m_strStuqq; mSet.m_stuem=dlg.m_strStuem; mSet.Update(); UpdateData(FALSE); }}//刪除一個聯(lián)系人voidCManageDlg::OnButtonDelete(){ //TODO:Addyourcontrolnotificationhandlercodehere if(!nstate)//當前沒有記錄顯示,不執(zhí)行刪除功能 { MessageBox("請先選擇一個聯(lián)系人!"); return; } CRecordsetStatusstatus; mSet.GetStatus(status); mSet.Delete(); if(status.m_lCurrentRecord==0) mSet.MoveNext(); else mSet.MoveFirst(); UpdateData(FALSE); nstate=0;}//查找上一條記錄voidCManageDlg::OnButtonPrev(){ //TODO:Addyourcontrolnotificationhandlercodehere if(!nstate)//當前沒有記錄顯示,不執(zhí)行查找上一條功能 { MessageBox("請先選擇一個聯(lián)系人!"); return; } if(!mSet.IsBOF()) { mSet.MovePrev(); m_strStunum=mSet.m_stunum; m_strStunum=mSet.m_stunum; m_strStunam=mSet.m_stunam; m_nStuage=mSet.m_stuage; m_strCellnum=mSet.m_cellnum; m_strStuadd=mSet.m_stuadd; m_strStutel=mSet.m_stutel; m_strStuqq=mSet.m_stuqq; m_strStuem=mSet.m_stuem; UpdateData(FALSE); } else{ return; } }//查找下一條記錄voidCManageDlg::OnButtonNext(){ //TODO:Addyourcontrolnotificationhandlercodehere if(!nstate)//當前沒有記錄顯示,不執(zhí)行查找下一條功能 { MessageBox("請先選擇一個聯(lián)系人!"); return; } if(!mSet.IsEOF()) { mSet.MoveNext(); m_strStunum=mSet.m_stunum; m_strStunum=mSet.m_stunum; m_strStunam=mSet.m_stunam; m_nStuage=mSet.m_stuage; m_strCellnum=mSet.m_cellnum; m_strStuadd=mSet.m_stuadd; m_strStutel=mSet.m_stutel; m_strStuqq=mSet.m_stuqq; m_strStuem=mSet.m_stuem; UpdateData(FALSE); } else{ return; }}其他本程序在主界面在工具欄和控制欄中提供對音樂播放功能的控制。對于音樂播放,使用了PlaySound()函數(shù),在頭文件中添加#include"mmsystem.h"#pragmacomment(lib,"winmm.lib")為了實現(xiàn)音樂播放按鈕與菜單的一致性,將菜單與控制欄按鈕設置為相同的ID。在其對應類CMainFrame中添加如下代碼://音樂播放voidCMainFrame::OnEditPlay(){ //TODO:Addyourcommandhandlercodehere PlaySound(".\\song.wav",NULL,SND_FILENAME|SND_ASYNC|SND_LOOP);//使用了相對路徑 m_bMainWork=FALSE;}//音樂停止voidCMainFrame::OnEditStop(){ //TODO:Addyourcommandhandlercodehere PlaySound("x.x",NULL,SND_FILENAME|SND_ASYNC);//這里不用LOOP m_bMainWork=TRUE;}voidCMainFrame::OnUpdateEditPlay(CCmdUI*pCmdUI){ //TODO:AddyourcommandupdateUIhandlercodehere pCmdUI->Enable(TRUE); pCmdUI->SetCheck(!m_bMainWork);}voidCMainFrame::OnUpdateEditStop(CCmdUI*pCmdUI){ //TODO:AddyourcommandupdateUIhandlercodehere pCmdUI->Enable(TRUE); pCmdUI->SetCheck(m_bMainWork);}程序測試及運行界面主界面圖STYLEREF1\s5SEQ圖\*ARABIC\s11主界面查詢界面圖STYLEREF1\s5SEQ圖\*ARABIC\s12查詢界面登錄界面圖STYLEREF1\s5SEQ圖\*ARABIC\s13登錄界面圖STYLEREF1\s5SEQ圖\*ARABIC\s14第一次登錄失敗圖STYLEREF1\s5SEQ圖\*ARABIC\s15第二次登錄失敗圖STYLEREF1\s5SEQ圖\*ARABIC\s16第三次登錄失敗圖STYLEREF1\s5SEQ圖\*ARABIC\s17登錄成功管理界面圖STYLEREF1\s5SEQ圖\*ARABIC\s18管理界面圖STYLEREF1\s5SEQ圖\*ARABIC\s19添加/修改學生信息圖STYLEREF1\s5SEQ圖\*ARABIC\s110刪除/修改不存在的聯(lián)系人自我評價及總結(jié)本程序的主要特色:對用戶的角色進行了分類程序中添加了音樂播放功能原創(chuàng)程度

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論