c++1學(xué)生信息管理系統(tǒng)_第1頁(yè)
c++1學(xué)生信息管理系統(tǒng)_第2頁(yè)
c++1學(xué)生信息管理系統(tǒng)_第3頁(yè)
c++1學(xué)生信息管理系統(tǒng)_第4頁(yè)
c++1學(xué)生信息管理系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩12頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、【精品文檔】如有侵權(quán),請(qǐng)聯(lián)系網(wǎng)站刪除,僅供學(xué)習(xí)與交流c+1學(xué)生信息管理系統(tǒng).精品文檔.學(xué)生信息管理系統(tǒng)1.課程設(shè)計(jì)的目的隨著信息技術(shù)在管理上越來(lái)越深入而廣泛的應(yīng)用,管理信息系統(tǒng)的實(shí)施在技術(shù)上已逐步成熟。管理信息系統(tǒng)是一個(gè)不斷發(fā)展的新型學(xué)科,任何一個(gè)單位要生存要發(fā)展,要高效率地把內(nèi)部活動(dòng)有機(jī)地組織起來(lái),就必須建立與自身特點(diǎn)相適應(yīng)的管理信息系統(tǒng)。VC+程序設(shè)計(jì)課程設(shè)計(jì)是計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)的VC+程序設(shè)計(jì)課程的綜合性實(shí)踐環(huán)節(jié)。VC+程序設(shè)計(jì)是一門實(shí)用性很強(qiáng)的學(xué)科,是進(jìn)行軟件開發(fā)的主要工具,只有進(jìn)行實(shí)際操作,才能將理論知識(shí)和實(shí)際應(yīng)用有機(jī)的結(jié)合起來(lái),鍛煉學(xué)生分析解決實(shí)際問(wèn)題的能力,提高學(xué)生實(shí)際運(yùn)用的能

2、力,為學(xué)生畢業(yè)設(shè)計(jì),日后工作中的軟件開發(fā)打下良好的基礎(chǔ)。2.需求分析 用計(jì)算機(jī)技術(shù)實(shí)現(xiàn)的科學(xué)化管理,是在信息技術(shù)迅速發(fā)展的今天學(xué)校提高管理效率的必需選擇。學(xué)生信息管理系統(tǒng)是典型的信息管理系統(tǒng)(MIS),其開發(fā)主要包括后臺(tái)數(shù)據(jù)庫(kù)的建立和維護(hù)以及前端應(yīng)用程序的開發(fā)兩個(gè)方面。對(duì)于前者要求建立起數(shù)據(jù)一致性和完整性強(qiáng)、數(shù)據(jù)安全性好的庫(kù)。而對(duì)于后者則要求應(yīng)用程序功能完備、易使用等特點(diǎn)。學(xué)生信息管理系統(tǒng)用來(lái)將某一個(gè)院系按專業(yè)、班級(jí)來(lái)管理學(xué)生的基本信息、課程信息和學(xué)生成績(jī)。下面就其系統(tǒng)功能作簡(jiǎn)單的說(shuō)明。該系統(tǒng)主要是方便查詢學(xué)生的信息,用該系統(tǒng)可以查到學(xué)生的姓名,年齡,學(xué)號(hào),性別,學(xué)院,班級(jí)等??梢越y(tǒng)計(jì)學(xué)生在某

3、一學(xué)期的總學(xué)分或者單科成績(jī)、總成績(jī)。系統(tǒng)主要功能包括:信息操作功能、查詢功能、統(tǒng)計(jì)功能、分析功能。2.1 信息操作功能(1)學(xué)生基本信息的添加、修改和刪除。學(xué)生基本信息包括:學(xué)號(hào)(學(xué)號(hào)的前6位為班級(jí)號(hào))、姓名、性別、出生日期和所在專業(yè)。(2)學(xué)生成績(jī)信息的添加、修改和刪除。學(xué)生成績(jī)信息包括:學(xué)號(hào)、課程號(hào)、成績(jī)和和學(xué)分。22查詢功能 可以通過(guò)學(xué)號(hào)來(lái)查詢學(xué)生基本信息,通過(guò)學(xué)號(hào)可以查詢學(xué)生的選課信息,通過(guò)學(xué)號(hào)和學(xué)期查詢學(xué)生的成績(jī),通過(guò)課程號(hào)查詢?cè)撜n程的信息。23統(tǒng)計(jì)功能統(tǒng)計(jì)學(xué)生某個(gè)學(xué)期或所有學(xué)期課程的總學(xué)分,統(tǒng)計(jì)學(xué)生某個(gè)學(xué)期的或所有學(xué)期的單科成績(jī)或者總成績(jī)。2.4運(yùn)行環(huán)境(1)硬件環(huán)境處理器:Int

4、er Centrino Duo。內(nèi)存:521MB。硬盤空間:80G。(2)軟件環(huán)境操作系統(tǒng):WindowsXP Microsoft visual c+ Microsoft access數(shù)據(jù)庫(kù)3. 總體設(shè)計(jì)3.1系統(tǒng)的結(jié)構(gòu)圖學(xué)生信息管理系統(tǒng)是對(duì)學(xué)生的基本信息和成績(jī)信息進(jìn)行管理,主要包括添加、修改和刪除學(xué)生的基本信息及課程的基本信息;錄入、修改和刪除學(xué)生的成績(jī)信息,對(duì)基本信息、成績(jī)信息進(jìn)行查詢、排序及統(tǒng)計(jì)等操作,從而實(shí)現(xiàn)學(xué)生信息管理的自動(dòng)化與計(jì)算機(jī)化。本課題將實(shí)現(xiàn)一個(gè)簡(jiǎn)化的學(xué)生信息管理系統(tǒng)。 (1)添加信息:使用這個(gè)模塊,可以添加學(xué)生的基本信息,包括學(xué)生的學(xué)號(hào),姓名,民族,性別,籍貫,出生年月日,

5、政治面貌,學(xué)院,專業(yè),所在年級(jí),寢室地址,畢業(yè)院校,身份證號(hào),電子郵箱,聯(lián)系電話,家庭住址,備注等。(2)成績(jī)導(dǎo)入:包括學(xué)號(hào),課程編號(hào),課程名稱,學(xué)分,成績(jī)。(3)信息查詢:包括學(xué)號(hào),姓名,班級(jí),學(xué)院。(4)成績(jī)查詢:包括課程名稱,課程編號(hào)。(5)個(gè)人信息:當(dāng)點(diǎn)擊這個(gè)按鈕時(shí),可以顯示當(dāng)前某個(gè)人的信息。(6)查看成績(jī):點(diǎn)擊這個(gè)按鈕時(shí),可以顯示當(dāng)前這個(gè)人的所有成績(jī)。3.2設(shè)計(jì)數(shù)據(jù)庫(kù) 用Microsoft Access創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)main.mdb,含有3個(gè)主要數(shù)據(jù)表:學(xué)生基本信息表student、課程信息表couese和學(xué)生成績(jī)表score。這3個(gè)數(shù)據(jù)表的結(jié)構(gòu)如表13所示。這幾個(gè)表中,學(xué)號(hào)stud

6、entno和課程號(hào)courseno內(nèi)容都是唯一的,分別是student和course表中的主關(guān)鍵字。Score表中的studentno和student表中的同名字段相對(duì)應(yīng),字段course和course表中的courseno字段相對(duì)應(yīng)。說(shuō)明:由于student和course表中都有專業(yè)字段,因此為便于用戶操作,需要一個(gè)專業(yè)數(shù)據(jù)字典。該數(shù)據(jù)字典也作為數(shù)據(jù)庫(kù)main.mdb的一個(gè)數(shù)據(jù)表speical,其結(jié)構(gòu)如表4所示。表1 學(xué)生基本信息表(student)結(jié)構(gòu)序號(hào)字段名稱數(shù)據(jù)類型字段大小小數(shù)位字段含義12345studentnamestudentnoxbbirthdayspeical文本文本是/否

7、日期/時(shí)間文本201050姓名學(xué)號(hào)性別出生年月專業(yè)表2 課程信息表(course)結(jié)構(gòu)序號(hào)字段名稱數(shù)據(jù)類型字段大小小數(shù)位字段含義1234567coursenospecialcoursenamecoursetypeopentermhourscredit文本文本文本文本數(shù)字?jǐn)?shù)字?jǐn)?shù)字7505010字節(jié)字節(jié)單精度1課程號(hào)所屬專業(yè)課程名課程類型開學(xué)學(xué)期課時(shí)數(shù)學(xué)分表3 學(xué)生課程成績(jī)表(score)結(jié)構(gòu)序號(hào)字段名稱數(shù)據(jù)類型字段大小小數(shù)位字段含義1234studentnocoursescorecredit文本文本數(shù)字?jǐn)?shù)字87單精度單精度11學(xué)號(hào)課程號(hào)成績(jī)學(xué)分4.詳細(xì)設(shè)計(jì)該系統(tǒng)包含多個(gè)模塊,期中重要的有6大模塊

8、,添加信息,成績(jī)導(dǎo)入,信息查詢,成績(jī)查詢,個(gè)人信息,查看成績(jī)。該系統(tǒng)的主界面如圖2所示。圖2系統(tǒng)的主界面4.1信息查詢的設(shè)計(jì)下面我們對(duì)信息查詢做詳細(xì)的設(shè)計(jì)。信息查詢這個(gè)模塊的功能主要通過(guò)某個(gè)學(xué)生的某一項(xiàng)信息,比如學(xué)號(hào),班級(jí),姓名,專業(yè),年級(jí),然后查詢到這個(gè)學(xué)生的多個(gè)信息。比如通過(guò)學(xué)生的學(xué)號(hào),可以查詢到這個(gè)學(xué)生所在學(xué)院,所在班級(jí)等。當(dāng)我們點(diǎn)擊信息查詢這個(gè)按鈕時(shí),顯示一個(gè)對(duì)話框,如圖3所示。圖3信息查詢的界面 當(dāng)我們點(diǎn)擊信息查詢按鈕時(shí),會(huì)立刻彈出一個(gè)對(duì)話框,期中對(duì)話框中包括一個(gè)列表框,列表框中包括學(xué)號(hào),姓名,學(xué)院,專業(yè),年級(jí),列表框中還包括2個(gè)按鈕,一個(gè)查找按鈕,一個(gè)取消按鈕。使用CRecordS

9、et類的成員變量m_strFilter、m_strSort和成員函數(shù)Open可以對(duì)表進(jìn)行記錄查詢。(1) 打開Ex_ODBC應(yīng)用程序的表的單資源,按如圖4所示的布局添加控件,七宗添加的編輯框ID號(hào)設(shè)為IDC_EDIT_QUERY,查詢按鈕的ID號(hào)設(shè)為IDC_BUTTON_QUERY.圖4添加控件(2) 用MFC classwizard為控件IDC_EDIT_QUERY添加關(guān)聯(lián)變量m_strQuery.(3) 在CEx_ODBCView類中添加按鈕控件IDC_BUTTON_QUERY的BN_CLICKED消息映射,并在映射函數(shù)中添加下列代碼:void CMemberView:RemoveAll(

10、)/增加指針變量指向ListView的CListCtrlCListCtrl *ctl;ctl=&GetListCtrl();/刪除CListCtrl中的所有記錄ctl->DeleteAllItems();/strSearch查詢條件 strMember關(guān)鍵字void CMemberView:ListMember(CString strSearch,CString strMember) /前此輸出的用戶記錄RemoveAll(); /建立一個(gè)指針,用以操作ListCtrl輸出用戶記錄CListCtrl *ctl;ctl=&GetListCtrl();/創(chuàng)建CMemberRe

11、Set的實(shí)例CMemberReSet m_MemberReSet;/記錄用戶序號(hào)int i=0;/定義一個(gè)變量來(lái)保存"%"以便設(shè)置SQL語(yǔ)句char chrTemp='%'CString strTemp;tryif(m_MemberReSet.IsOpen()m_MemberReSet.Close();/設(shè)置查詢條件"MemName=strMemberName"if(strMember="")AfxMessageBox("請(qǐng)輸入關(guān)鍵字"); return;進(jìn)入信息查詢模塊之后就可以對(duì)信息進(jìn)行查詢,我

12、們選擇選擇框里選擇“姓名”,然后在輸入框里輸入“陳一”,然后點(diǎn)查找按鈕,然后就會(huì)彈出陳一的個(gè)人信息,如圖5所示。圖5陳一的個(gè)人信息 在個(gè)人信息的模塊里包括多個(gè)輸入框,比如學(xué)號(hào),姓名,性別,民族,籍貫,出生年月日,政治面貌,學(xué)院專業(yè),所在年級(jí),寢室地址,畢業(yè)院校,身份證號(hào),電子郵箱,聯(lián)系號(hào)碼,家庭住址,家庭電話,備注。又包括2個(gè)單擊按鈕,一個(gè)修改,一個(gè)取消。我們可以在輸入框里輸入各種信息,也可以修改當(dāng)前的信息,修改完然后點(diǎn)“修改”按鈕,然后就會(huì)彈出一個(gè)消息對(duì)話框,如圖6所示。圖6消息提示在這個(gè)操作過(guò)程中我們需要建立一個(gè)映射控件消息。(1) 打開Ex_DlgCtrls應(yīng)用程序項(xiàng)目。(2) 將項(xiàng)目工

13、作區(qū)窗口切換到ResourseView頁(yè)面,雙擊Dialog資源下的標(biāo)識(shí)IDD_EX_DLGCTRLS_DLALOG,打開該對(duì)話框資源模板(3) 刪除“TODO:在這里設(shè)置對(duì)話控制”控件,添加一個(gè)按鈕控件,保留其默認(rèn)屬性。(4) 按快捷鍵CTRL+W,打開""MFC CLASSWIZAD"對(duì)話框,查看“class name”列表中是否選擇了CEx_DlgCtrlsDlg,在IDs列表中選擇IDS_BUTTON1,這是添加按鈕后,系統(tǒng)自動(dòng)為此按鈕設(shè)置的默認(rèn)標(biāo)示符,然后在Messages框中選擇BN_CKICKED消息。(5) 單吸“Add function”按鈕或者

14、雙擊BN_CLICKED消息,出現(xiàn)“Add Member Function”對(duì)話框。在這里可以輸入成員函數(shù)的名稱,系統(tǒng)默認(rèn)的函數(shù)為ONButton1。(6) 單吸"OK"按鈕,在MFC Class Wizard 的“Member function”列表中將列出新增加的成員函數(shù)。選擇此函數(shù),單吸“Edit Code”按鈕,開發(fā)環(huán)境的文檔窗口中將自動(dòng)打開該函數(shù)的源代碼文件,并定位到該函數(shù)的實(shí)現(xiàn)代碼處。在此成員函數(shù)中添加下列代碼:Void CEx_DlgCtrlsDlg:onButton()MessageBox("確定修改記錄?")(7) 編譯并運(yùn)行,當(dāng)單擊按

15、鈕時(shí),就會(huì)執(zhí)行ONButton1函數(shù),彈出一個(gè)消息一個(gè)對(duì)話框。5. 心得體會(huì)剛看到課程設(shè)計(jì)題目的時(shí)候,總感覺(jué)對(duì)visual c+處于一知半解的狀態(tài),開始分工也比較混亂,但是在劃分模塊后明確的各自分工,漸漸的有了點(diǎn)眉目。 在設(shè)計(jì)的過(guò)程中,經(jīng)常會(huì)遇到這樣那樣的問(wèn)題,比如說(shuō)怎樣才能實(shí)現(xiàn)我們所要的功能,設(shè)計(jì)過(guò)程中的圖的畫法,程序的編寫、文檔的編寫、排版等。由于課本上的知識(shí)太多,平時(shí)課間的學(xué)習(xí)并不能很好的理解和運(yùn)用知識(shí),面對(duì)這些問(wèn)題,我們就自己上圖書館借書,網(wǎng)上搜素資料,相互討論來(lái)解決我們的問(wèn)題。真的是體會(huì)到了只有理論知識(shí)是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識(shí)與實(shí)踐相結(jié)合起來(lái),從理論中得出結(jié)論,才能真正的為

16、我所用,從而提高自己的實(shí)際動(dòng)手能力和獨(dú)立思考的能力。此次課程設(shè)計(jì),讓我們學(xué)到了很多課內(nèi)學(xué)不到的東西,比如獨(dú)立思考解決問(wèn)題,出現(xiàn)差錯(cuò)的隨機(jī)應(yīng)變,和與人合作共同提高等等,無(wú)不讓我們受益非淺。6. 參考文獻(xiàn)1王珊,薩師煊編著.vc+實(shí)用教程M.北京高等教育出版社,2007.7 83-1262孫越編著.Visual C+數(shù)據(jù)庫(kù)開發(fā)自學(xué)教程M.人民郵電出版社2003.7 50-753王彬華,李建華編著.Visual C+實(shí)例教程M電子科技大學(xué)出版社2004.48-95 4李春葆,曾平編著數(shù)據(jù)庫(kù)原理與應(yīng)用M. 北京清華大學(xué)出版社,2006.1 41-74附錄:#include "stdafx.h

17、"#include "member.h"#include "memberDoc.h"#include "memberView.h"#include "MainFrm.h"#include "MemberReSet.h"#include "MemberDialog.h"#include "MemberEditDlg.h"#include "ScoreDlg.h"#include "ScoreReSet.h"#

18、include "MemberAdd.h"#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endif/ CMemberViewIMPLEMENT_DYNCREATE(CMemberView, CListView)BEGIN_MESSAGE_MAP(CMemberView, CListView)/AFX_MSG_MAP(CMemberView)ON_NOTIFY_REFLECT(NM_DBLCLK, OnDblclk)/AFX_MSG_MAP/ Standard

19、 printing commandsON_COMMAND(ID_FILE_PRINT, CListView:OnFilePrint)ON_COMMAND(ID_FILE_PRINT_DIRECT, CListView:OnFilePrint)ON_COMMAND(ID_FILE_PRINT_PREVIEW, CListView:OnFilePrintPreview)END_MESSAGE_MAP()/ CMemberView construction/destructionCMemberView:CMemberView()/ TODO: add construction code hereCM

20、emberView:CMemberView()BOOL CMemberView:PreCreateWindow(CREATESTRUCT& cs)/ TODO: Modify the Window class or styles here by modifying/ the CREATESTRUCT cs/設(shè)置CListCtrl的格式為:LVS_REPORT并且LVS_SINGLESELcs.style|=LVS_REPORT|LVS_SINGLESEL;return CListView:PreCreateWindow(cs);/ CMemberView drawingvoid CMe

21、mberView:OnDraw(CDC* pDC)CMemberDoc* pDoc = GetDocument();ASSERT_VALID(pDoc);/ TODO: add draw code for native data herevoid CMemberView:OnInitialUpdate()/創(chuàng)建一個(gè)CListCtrl指針CListCtrl *ctl;ctl=&GetListCtrl(); /指向CListView的CListCtrl/表格風(fēng)格ctl->SetExtendedStyle(ctl->GetExtendedStyle()|LVS_EX_GRIDLI

22、NES|LVS_EX_FULLROWSELECT); /利用CLisrCtrl設(shè)置列的題頭ctl->InsertColumn(0,"學(xué)號(hào)",LVCFMT_LEFT,100);ctl->InsertColumn(1,"姓名",LVCFMT_LEFT,100);ctl->InsertColumn(2,"性別",LVCFMT_LEFT,80);ctl->InsertColumn(4,"學(xué)院",LVCFMT_LEFT,100);ctl->InsertColumn(5,"專業(yè)"

23、;,LVCFMT_LEFT,100);ctl->InsertColumn(6,"所在年級(jí)",LVCFMT_LEFT,100);ctl->InsertColumn(7,"聯(lián)系號(hào)碼",LVCFMT_LEFT,100);ctl->InsertColumn(8,"寢室地址",LVCFMT_LEFT,200);OnPaint();CListView:OnInitialUpdate();/獲取CMainFrame的指針CMainFrame *m_Frm=(CMainFrame*):AfxGetMainWnd();/將CMainF

24、rame的m_ListViet指針變量指向CMemberView的實(shí)列m_Frm->m_ListView=this;/ TODO: You may populate your ListView with items by directly accessing/ its list control through a call to GetListCtrl()./ CMemberView printingBOOL CMemberView:OnPreparePrinting(CPrintInfo* pInfo)/ default preparationreturn DoPreparePrint

25、ing(pInfo);void CMemberView:OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)/ TODO: add extra initialization before printingvoid CMemberView:OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)/ TODO: add cleanup after printing/ CMemberView diagnostics#ifdef _DEBUGvoid CMemberView:AssertValid() co

26、nstCListView:AssertValid();void CMemberView:Dump(CDumpContext& dc) constCListView:Dump(dc);CMemberDoc* CMemberView:GetDocument() / non-debug version is inlineASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CMemberDoc);return (CMemberDoc*)m_pDocument;#endif /_DEBUG/ CMemberView message handlersvoid

27、 CMemberView:RemoveAll()/增加指針變量指向ListView的CListCtrlCListCtrl *ctl;ctl=&GetListCtrl();/刪除CListCtrl中的所有記錄ctl->DeleteAllItems();/strSearch查詢條件 strMember關(guān)鍵字void CMemberView:ListMember(CString strSearch,CString strMember) /前此輸出的用戶記錄RemoveAll(); /建立一個(gè)指針,用以操作ListCtrl輸出用戶記錄CListCtrl *ctl;ctl=&Get

28、ListCtrl();/創(chuàng)建CMemberReSet的實(shí)例CMemberReSet m_MemberReSet;/記錄用戶序號(hào)int i=0;/定義一個(gè)變量來(lái)保存"%"以便設(shè)置SQL語(yǔ)句char chrTemp='%'CString strTemp;tryif(m_MemberReSet.IsOpen()m_MemberReSet.Close();/設(shè)置查詢條件"MemName=strMemberName"if(strMember="")AfxMessageBox("請(qǐng)輸入關(guān)鍵字"); return

29、;if(strSearch="學(xué)號(hào)") CString str; str.Format("select * from member where MemID = '%s' order by MemID ASC",strMember); m_MemberReSet.Open(CRecordset:snapshot,str,CRecordset:none);else if(strSearch="姓名") m_MemberReSet.m_strFilter.Format("MemName LIKE '%c%s

30、%c' order by MemID ASC",chrTemp,strMember.operator LPCTSTR(),chrTemp); m_MemberReSet.Open(CRecordset:snapshot,NULL,CRecordset:none);else if(strSearch="學(xué)院") m_MemberReSet.m_strFilter.Format("MemIns = '%s' order by MemID ASC",strMember.operator LPCTSTR(); m_MemberR

31、eSet.Open(CRecordset:snapshot,NULL,CRecordset:none);else if(strSearch="專業(yè)") m_MemberReSet.m_strFilter.Format("MemSpe LIKE '%c%s%c' order by MemID ASC",chrTemp,strMember.operator LPCTSTR(),chrTemp); m_MemberReSet.Open(CRecordset:snapshot,NULL,CRecordset:none);else if(strSe

32、arch="年級(jí)") m_MemberReSet.m_strFilter.Format("MemYear LIKE '%c%s%c' order by MemID ASC",chrTemp,strMember.operator LPCTSTR(),chrTemp); m_MemberReSet.Open(CRecordset:snapshot,NULL,CRecordset:none);else if(strSearch="年級(jí)tree") m_MemberReSet.m_strFilter.Format("

33、MemYear = %s order by MemID ASC",strMember.operator LPCTSTR(); m_MemberReSet.Open(CRecordset:snapshot,NULL,CRecordset:none);elseAfxMessageBox("條件選擇錯(cuò)誤"); return; /輸出匹配上查詢到的用戶記錄,直到記錄為空while(!m_MemberReSet.IsEOF() ctl->InsertItem(i,m_MemberReSet.m_MemID);ctl->SetItemText(i,1,m_Memb

34、erReSet.m_MemName);ctl->SetItemText(i,2,m_MemberReSet.m_MemSex);ctl->SetItemText(i,3,m_MemberReSet.m_MemIns);ctl->SetItemText(i,4,m_MemberReSet.m_MemSpe);ctl->SetItemText(i,5,m_MemberReSet.m_MemYear);ctl->SetItemText(i,6,m_MemberReSet.m_MemPhone);ctl->SetItemText(i,7,m_MemberReSet.

35、m_MemBed); m_MemberReSet.MoveNext();if(m_MemberReSet.IsOpen()m_MemberReSet.Close();catch(CDBException *e)e->Delete();return;void CMemberView:EditCurUser()/建立一個(gè)指針,用以操作ListCtrl輸出用戶記錄CListCtrl *ctl;ctl=&GetListCtrl();/尋找當(dāng)前選中的記錄的位置POSITION pos=ctl->GetFirstSelectedItemPosition();if (pos=NULL)/

36、如果沒(méi)有選擇記錄,則提示并退出AfxMessageBox("請(qǐng)先選擇一條信息!");return;/獲取當(dāng)前記錄的位置游標(biāo)int m_CurUser=ctl->GetNextSelectedItem(pos);/創(chuàng)建一個(gè)MemberEditDlg的實(shí)例CMemberEditDlg m_MemberEditDlg;CMemberReSet m_MemberReSet;/創(chuàng)建一個(gè)臨時(shí)字符串來(lái)保存當(dāng)前用戶信息char chrTemp201 = '0' /查找學(xué)號(hào)ctl->GetItemText(m_CurUser,0,chrTemp,sizeof(ch

37、ar20); if(m_MemberReSet.IsOpen()m_MemberReSet.Close();m_MemberReSet.m_strFilter.Format("MemID LIKE '%s'",chrTemp);m_MemberReSet.Open(CRecordset:snapshot,NULL,CRecordset:none);/輸出匹配上條件用戶記錄,直到記錄為空 if(m_MemberReSet.IsOpen() && !m_MemberReSet.IsEOF()/開始顯示記錄的內(nèi)容m_MemberEditDlg.m_

38、MemID=m_MemberReSet.m_MemID; m_MemberEditDlg.m_MemName=m_MemberReSet.m_MemName; m_MemberEditDlg.m_MemSex=m_MemberReSet.m_MemSex; m_MemberEditDlg.m_MemBorn=m_MemberReSet.m_MemBorn;m_MemberEditDlg.m_MemPolity=m_MemberReSet.m_MemPolity;m_MemberEditDlg.m_MemNative=m_MemberReSet.m_MemNative;m_MemberEditD

39、lg.m_MemPlace=m_MemberReSet.m_MemPlace;m_MemberEditDlg.m_MemIns=m_MemberReSet.m_MemIns;m_MemberEditDlg.m_MemSpe=m_MemberReSet.m_MemSpe;m_MemberEditDlg.m_MemSchool=m_MemberReSet.m_MemSchool;m_MemberEditDlg.m_MemBed=m_MemberReSet.m_MemBed;m_MemberEditDlg.m_MemEmail=m_MemberReSet.m_MemEmail;m_MemberEdi

40、tDlg.m_MemYear=m_MemberReSet.m_MemYear;m_MemberEditDlg.m_MemCard=m_MemberReSet.m_MemCard;m_MemberEditDlg.m_MemPhone=m_MemberReSet.m_MemPhone;m_MemberEditDlg.m_MemHadd=m_MemberReSet.m_MemHadd;m_MemberEditDlg.m_MemHphone=m_MemberReSet.m_MemHphone;m_MemberEditDlg.m_Remark=m_MemberReSet.m_Remark;if(m_Me

41、mberEditDlg.DoModal()!=IDOK)/如果用戶選擇取消按鈕,則退出return;UpdateData(FALSE);if(MessageBox("確定修改記錄?","修改確認(rèn)",MB_YESNO|MB_ICONQUESTION)=IDYES) try if(m_MemberReSet.IsOpen() m_MemberReSet.Close(); /設(shè)置查詢條件"MemID=chrTemp" m_MemberReSet.m_strFilter.Format("MemID='%s'"

42、;,chrTemp); m_MemberReSet.Open(CRecordset:snapshot,NULL,CRecordset:none); /如果用戶記錄存在,則進(jìn)行修改操作 if(m_MemberReSet.IsOpen()&&!m_MemberReSet.IsEOF() /設(shè)置編輯當(dāng)前記錄 m_MemberReSet.Edit(); /開始編輯該條記錄的內(nèi)容 m_MemberReSet.m_MemID=m_MemberEditDlg.m_MemID; m_MemberReSet.m_MemName=m_MemberEditDlg.m_MemName; m_Membe

43、rReSet.m_MemSex=m_MemberEditDlg.m_MemSex; m_MemberReSet.m_MemBorn=m_MemberEditDlg.m_MemBorn; if(m_MemberReSet.CanUpdate() m_MemberReSet.Update(); /更新完畢,關(guān)閉數(shù)據(jù)庫(kù) m_MemberReSet.Close(); else /關(guān)閉數(shù)據(jù)庫(kù) if(m_MemberReSet.IsOpen() m_MemberReSet.Close(); /提示用戶 AfxMessageBox("該記錄不存在,無(wú)法修改!"); return; cat

44、ch(CDBException*e) e->ReportError (); return; /將用戶信息及時(shí)更新到ListCtrl中 ctl->SetItemText(m_CurUser,0,m_MemberEditDlg.m_MemID); ctl->SetItemText(m_CurUser,1,m_MemberEditDlg.m_MemName); ctl->SetItemText(m_CurUser,2,m_MemberEditDlg.m_MemSex); ctl->SetItemText(m_CurUser,3,m_MemberEditDlg.m_Mem

45、Ins); ctl->SetItemText(m_CurUser,4,m_MemberEditDlg.m_MemSpe); ctl->SetItemText(m_CurUser,5,m_MemberEditDlg.m_MemYear); ctl->SetItemText(m_CurUser,6,m_MemberEditDlg.m_MemPhone); ctl->SetItemText(m_CurUser,7,m_MemberEditDlg.m_MemBed);void CMemberView:OnDblclk(NMHDR* pNMHDR, LRESULT* pResul

46、t) / TODO: Add your control notification handler code here*pResult = 0;EditCurUser();void CMemberView:LookMember() /創(chuàng)建一個(gè)MemberDialog的實(shí)例 CMemberDialog m_MemberDialog; CMemberReSet m_MemberReSet;CString chrTemp=FindPosition();if(chrTemp="")return; if(m_MemberReSet.IsOpen() m_MemberReSet.Clos

47、e(); m_MemberReSet.m_strFilter.Format("MemID LIKE '%s'",chrTemp);m_MemberReSet.Open(CRecordset:snapshot,NULL,CRecordset:none); /輸出匹配上條件用戶記錄,直到記錄為空 if(m_MemberReSet.IsOpen() && !m_MemberReSet.IsEOF() /開始顯示記錄的內(nèi)容 m_MemberDialog.m_MemID=m_MemberReSet.m_MemID; m_MemberDialog.m_M

48、emName=m_MemberReSet.m_MemName; m_MemberDialog.m_MemSex=m_MemberReSet.m_MemSex; m_MemberDialog.m_MemBorn=m_MemberReSet.m_MemBorn; m_MemberDialog.m_MemPolity=m_MemberReSet.m_MemPolity; m_MemberDialog.m_MemNative=m_MemberReSet.m_MemNative; m_MemberDialog.m_MemPlace=m_MemberReSet.m_MemPlace; m_MemberDi

49、alog.m_MemIns=m_MemberReSet.m_MemIns; m_MemberDialog.m_MemSpe=m_MemberReSet.m_MemSpe; m_MemberDialog.m_MemSchool=m_MemberReSet.m_MemSchool; m_MemberDialog.m_MemBed=m_MemberReSet.m_MemBed; m_MemberDialog.m_MemEmail=m_MemberReSet.m_MemEmail; m_MemberDialog.m_MemYear=m_MemberReSet.m_MemYear; m_MemberDi

50、alog.m_MemCard=m_MemberReSet.m_MemCard; m_MemberDialog.m_MemPhone=m_MemberReSet.m_MemPhone; m_MemberDialog.m_MemHadd=m_MemberReSet.m_MemHadd; m_MemberDialog.m_MemHphone=m_MemberReSet.m_MemHphone; m_MemberDialog.m_Remark=m_MemberReSet.m_Remark; if(m_MemberDialog.DoModal()=IDCANCEL) /如果用戶選擇取消按鈕,則退出 re

51、turn; UpdateData(FALSE);void CMemberView:DelCurUser()/建立一個(gè)指針,用以操作ListCtrl輸出用戶記錄CListCtrl *ctl;ctl=&GetListCtrl();/尋找當(dāng)前選中的記錄的位置POSITION pos=ctl->GetFirstSelectedItemPosition();if (pos=NULL)/如果沒(méi)有選擇記錄,則提示并退出AfxMessageBox("請(qǐng)先選中一條記錄!");return;/獲取當(dāng)前記錄的位置游標(biāo)int m_CurUser=ctl->GetNextSele

52、ctedItem(pos);/創(chuàng)建一個(gè)臨時(shí)字符串來(lái)保存當(dāng)前用戶信息char chrTemp21 = '0'/取得用戶IDctl->GetItemText(m_CurUser,0,chrTemp,sizeof(char20);/創(chuàng)建CMemberReSet的實(shí)例CMemberReSet m_MemberReSet;if(MessageBox("刪除該學(xué)生同時(shí)會(huì)刪除該生所有成績(jī)記錄,確定刪除記錄?","刪除確認(rèn)",MB_YESNO|MB_ICONQUESTION)=IDYES) try /刪除個(gè)人信息 if(m_MemberReSet.

53、IsOpen()m_MemberReSet.Close(); m_MemberReSet.m_strFilter.Format("MemID LIKE '%s' order by MemID",chrTemp);m_MemberReSet.Open(CRecordset:snapshot,NULL,CRecordset:none);/如果用戶記錄存在,則進(jìn)行修改操作if(m_MemberReSet.IsOpen() && !m_MemberReSet.IsEOF()/設(shè)置編輯當(dāng)前記錄m_MemberReSet.Delete();/更新完畢,關(guān)

54、閉數(shù)據(jù)庫(kù)m_MemberReSet.Close();else/考慮特例,如果操作中用戶信息不存在了/關(guān)閉數(shù)據(jù)庫(kù)if(m_MemberReSet.IsOpen()m_MemberReSet.Close();/提示用戶AfxMessageBox("該記錄不存在,無(wú)法刪除!");return;/刪除對(duì)應(yīng)的所有個(gè)人成績(jī)CScoreReSet m_ScoreReSet;if(m_ScoreReSet.IsOpen()m_ScoreReSet.Close(); CString sql;sql.Format("select * from score where MemID=&#

55、39;%s'",chrTemp);m_ScoreReSet.Open(CRecordset:snapshot,sql,CRecordset:none);/如果用戶記錄存在,則進(jìn)行修改操作while(!m_ScoreReSet.IsEOF()/設(shè)置編輯當(dāng)前記錄m_ScoreReSet.Delete();m_ScoreReSet.MoveNext();/更新完畢,關(guān)閉數(shù)據(jù)庫(kù)m_ScoreReSet.Close();catch(CDBException*e)e->ReportError ();return;/在ListCtrl中刪除當(dāng)前用戶信息ctl->DeleteItem(m_CurUser);void CMemberView:OnPaint()RemoveAll();/創(chuàng)建一個(gè)CListCtrl指針CListCtrl *ct

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論