




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
青島理工大學(xué)C++面向?qū)ο笳n程設(shè)計(jì)報(bào)告院(系):計(jì)算機(jī)工程學(xué)院專業(yè):網(wǎng)絡(luò)工程學(xué)生姓名:_班級:網(wǎng)絡(luò)092班_學(xué)號:題目:_學(xué)生綜合評測管理系統(tǒng)____起迄日期:_2013.3.27~2013.4.11設(shè)計(jì)地點(diǎn):計(jì)算機(jī)學(xué)院機(jī)房指導(dǎo)教師:李蘭完成日期:2013年4月11一、需求分析1.設(shè)計(jì)目標(biāo)了解Windows應(yīng)用程序的結(jié)構(gòu)與DOS程序的不同,掌握應(yīng)用MFC類庫編寫Windows應(yīng)用程序的基本模式與用ODBC方式訪問數(shù)據(jù)庫。隨著計(jì)算機(jī)技術(shù)的不斷發(fā)展,在現(xiàn)代化社會(huì)中,各種信息的處理基本都是由計(jì)算機(jī)來完成的。在本課題中,我們要用計(jì)算機(jī)技術(shù)實(shí)現(xiàn)大學(xué)生綜合測評信息的管理。在沒有計(jì)算機(jī)之前,所有的信息記錄都是由人工記錄維護(hù),不但不方便,還經(jīng)常出錯(cuò),有了計(jì)算機(jī)就可以方便的對各種信息進(jìn)行查詢和維護(hù)了。管理信息系統(tǒng)(MIS)是進(jìn)行信息的采集、存儲(chǔ)、加工、維護(hù)和使用的系統(tǒng),數(shù)據(jù)庫技術(shù)是計(jì)算機(jī)應(yīng)用的一個(gè)重要組成部分,是很多的信息管理系統(tǒng)都不可缺少的,因此本系統(tǒng)也有推而廣之的研究價(jià)值。隨著社會(huì)經(jīng)濟(jì)的發(fā)展,我們越來越感覺到社會(huì)的競爭日益激烈,國家經(jīng)濟(jì)實(shí)力的競爭歸根到底就是人才的競爭,而人才的培養(yǎng)關(guān)鍵靠教育。在教育的領(lǐng)域中,學(xué)校對于學(xué)生的管理是非常重要的,當(dāng)每年中考,高考后學(xué)生大量涌入學(xué)校的時(shí)候,也就是每個(gè)學(xué)校最繁忙最混亂的時(shí)候,為了減輕學(xué)生信息管理中心管理員繁重的工作負(fù)擔(dān),也為了更好的對學(xué)生的信息和學(xué)生對學(xué)校課程的安排有一定的幫助和了解,一套完善的管理系統(tǒng)是非常重要的。作為高校的學(xué)生綜合測評系統(tǒng),它涉及到大量的學(xué)生信息,各個(gè)學(xué)生的素質(zhì)測評信息等各種信息,信息種類多,信息量大,如果一切都靠人工操作管理,不但查找不方便,維護(hù)也更是噩夢,作為計(jì)算機(jī)信息管理的一名學(xué)生,更有義務(wù)通過計(jì)算機(jī)實(shí)現(xiàn)對這些信息的科學(xué)化管理,也能通過這次課程設(shè)計(jì)鍛煉自己獨(dú)立開發(fā)系統(tǒng)的能力。綜合測評系統(tǒng)不同于一般管理信息系統(tǒng),有它自身的特殊性。該系統(tǒng)面向相關(guān)學(xué)生管理部門,是實(shí)現(xiàn)對學(xué)生成績情況、學(xué)生信息情況、科目考試情況、教師與班級的情況、考勤情況、違紀(jì)和處分等情況進(jìn)行管理的計(jì)算機(jī)管理系統(tǒng)。在大學(xué)校園中,綜合評測是每個(gè)學(xué)校每學(xué)年都必須進(jìn)行的活動(dòng),以往煩瑣的手工計(jì)算不僅容易出錯(cuò),而且很浪費(fèi)時(shí)間。通過設(shè)計(jì)綜合評測系統(tǒng)可以增強(qiáng)綜合評測的公正性、準(zhǔn)確性和執(zhí)行效率。2.設(shè)計(jì)思想基于MFC庫類對對話框界面的設(shè)計(jì),通過創(chuàng)建類成員函數(shù)成員變量,編輯控件創(chuàng)建消息映射,調(diào)用消息函數(shù)完成數(shù)據(jù)的輸入輸出,實(shí)現(xiàn)相關(guān)功能。VisualC++作為一種程序設(shè)計(jì)語言,它同時(shí)也是一個(gè)集成開發(fā)工具,提供了軟件代碼自動(dòng)生成和可視化的資源編輯功能。VisualC++語言是目前最實(shí)用和最流行的一種計(jì)算機(jī)程序設(shè)計(jì)語言。
VisualC++語言是對C的繼承、改進(jìn)和擴(kuò)展。
VisualC++語言既是面向過程又是面向?qū)ο蟮恼Z言。
語法規(guī)則和內(nèi)容豐富,通用性強(qiáng),能夠很方便地進(jìn)行結(jié)構(gòu)化和模塊化的程序設(shè)計(jì)。VisualC++可以和諸如SQLSever、MicrosoftAccess這樣的數(shù)據(jù)進(jìn)行掛接。利用一些特別的對象集合,ActiveDataObject(ADO),就可以在VisualC++中使用SQL語言。MFC的英文全稱是MicrosoftFundationClasses,即微軟的基本類庫,MFC的本質(zhì)就是一個(gè)包含了許多微軟公司已經(jīng)定義好的對象的類庫,我們知道,雖然我們要編寫的程序在功能上是千差萬別的,但從本質(zhì)上來講,都可以化歸為用戶界面的設(shè)計(jì),對文件的操作,多媒體的使用,數(shù)據(jù)庫的訪問等等一些最主要的方面。這一點(diǎn)正是微軟提供MFC類庫最重要的原因,在這個(gè)類庫中包含了一百多個(gè)程序開發(fā)過程中最常用到的對象。在進(jìn)行程序設(shè)計(jì)的時(shí)候,如果類庫中的某個(gè)對象能完成所需要的功能,這時(shí)我們只要簡單地調(diào)用已有對象的方法就可以了。我們還可以利用面向?qū)ο蠹夹g(shù)中很重要的“繼承”方法從類庫中的已有對象派生出我們自己的對象,這時(shí)派生出來的對象除了具有類庫中的對象的特性和功能之外,還可以由我們自己根據(jù)需要加上所需的特性和方法,產(chǎn)生一個(gè)更專門的,功能更為強(qiáng)大的對象。當(dāng)然,你也可以在程序中創(chuàng)建全新的對象,并根據(jù)需要不斷完善對象的功能。正是由于MFC編程方法充分利用了面向?qū)ο蠹夹g(shù)的優(yōu)點(diǎn),它使得我們編程時(shí)極少需要關(guān)心對象方法的實(shí)現(xiàn)細(xì)節(jié),同時(shí)類庫中的各種對象的強(qiáng)大功能足以完成我們程序中的絕大部分所需功能,這使得應(yīng)用程序中程序員所需要編寫的代碼大為減少,有力地保證了程序的良好的可調(diào)試性。3.設(shè)計(jì)說明(1)包含的功能有:查看、增加、刪除、排序、篩選等功能。(2)通過sqlserver2005創(chuàng)建數(shù)據(jù)庫并通過ODBC方式訪問數(shù)據(jù)庫。(3)編輯界面上的不同按鈕,創(chuàng)建消息映射,以完成相關(guān)的各種操作。設(shè)計(jì)內(nèi)容創(chuàng)建數(shù)據(jù)庫:(1)學(xué)生考試信息表(2)教師表(3)學(xué)生測評表(4)學(xué)生獎(jiǎng)懲表(5)學(xué)生信息表(6)科目編號表和班級輔導(dǎo)員表2、添加ODBC數(shù)據(jù)源打開“ODBC數(shù)據(jù)源管理器”3、在MFC中創(chuàng)建相關(guān)按鍵并設(shè)置好屬性及ID4、模塊圖。學(xué)生綜合測評管理系統(tǒng)學(xué)生綜合測評管理系統(tǒng)主控模塊錄入數(shù)據(jù)修改記錄刪除記錄查詢模塊按學(xué)號查詢按順序查詢排序模塊按成績階段分?jǐn)?shù)評定優(yōu)良錄入信息刪除數(shù)據(jù)主界面主要實(shí)現(xiàn)代碼并進(jìn)行初始化:BOOLCMystudentsysApp::InitInstance(){ if(CoInitialize(NULL)!=0) { AfxMessageBox("初始化COM支持庫失敗!"); exit(1); } try { CStringstrConnect; strConnect.Format("DSN=mystudentsys;"); if(m_DB.Open(NULL,false,false,"ODBC;DSN=mystudentsys;UID=Sa;PWD=;")==0) { AfxMessageBox("UnabletoConnecttotheSpecifiedDataSource"); returnFALSE; } } catch(CDBException*pE) { pE->ReportError(); pE->Delete(); returnFALSE; }AfxEnableControlContainer();(2)學(xué)生成績錄入:voidCExaminfo_submarkdlg::Oninputsavemarks(){ UpdateData(TRUE);//讀入輸入的資料 if(m_studentid.IsEmpty()||m_examsubject.IsEmpty()||m_examkind.IsEmpty()) { AfxMessageBox("請輸入相應(yīng)的數(shù)據(jù)!"); return; } CStringsqlStr_findid; sqlStr_findid="SELECT*FROMtb_studentinfoWHEREtb_studentinfo.studentid='"+m_studentid+"'"; myfindset_id=newCStudentinfoset(&((CMystudentsysApp*)AfxGetApp())->m_DB); if(!myfindset_id->Open(AFX_DB_USE_DEFAULT_TYPE,sqlStr_findid)) { AfxMessageBox("tb_studentinfo表打開失敗!"); } if(myfindset_id->GetRecordCount()==0) { AfxMessageBox("沒有此學(xué)生,請確認(rèn)學(xué)號后再輸入!"); if(myfindset_id->IsOpen()) { myfindset_id->Close(); deletemyfindset_id; } return; } if(myfindset_id->IsOpen()) { myfindset_id->Close(); deletemyfindset_id; } CStringsql; CStringyear,month,day; year=m_examdate.Format("%Y"); month=m_examdate.Format("%m"); day=m_examdate.Format("%d"); sql.Format("SELECT*FROMtb_examinfo_subWHEREtb_examinfo_sub.studentid\ ='%s'andcode='%s'andkind='%s'andyear(examdate)='%s'and\ month(examdate)='%s'andday(examdate)='%s'",m_studentid, m_examsubject,m_examkind,year,month,day); myexamsubmarkset_findsame=newCExaminfo_submarkset(&((CMystudentsysApp*)AfxGetApp())->m_DB); if(!myexamsubmarkset_findsame->Open(AFX_DB_USE_DEFAULT_TYPE,sql)) { AfxMessageBox("tb_examinfo_sub表打開失敗!"); } if(myexamsubmarkset_findsame->GetRecordCount()!=0) { AfxMessageBox("已經(jīng)有此記錄,不能重復(fù)輸入!"); if(myexamsubmarkset_findsame->IsOpen()) { myexamsubmarkset_findsame->Close(); } return; } if(myexamsubmarkset_findsame->IsOpen()) { myexamsubmarkset_findsame->Close(); deletemyexamsubmarkset_findsame; } myexamsubmarkset->AddNew();//調(diào)用添加記錄的函數(shù)處理 myexamsubmarkset->m_studentid=m_studentid;//對應(yīng)變量更新 myexamsubmarkset->m_code=m_examsubject;myexamsubmarkset->m_grade=m_submark;myexamsubmarkset->m_kind=m_examkind; myexamsubmarkset->m_examdate=m_examdate; myexamsubmarkset->Update(); myexamsubmarkset->Requery(); DisplayRecord();//更新顯示}boolCExaminfo_submarkdlg::DisplayRecord(){ if(myexamsubmarkset->IsEOF()&&myexamsubmarkset->IsBOF()) { m_studentid=""; m_submark=0.0f; m_examsubject=""; m_examkind=""; } else { if(myexamsubmarkset->IsBOF())//移動(dòng)到了開頭,就向后移動(dòng) { myexamsubmarkset->MoveNext(); } else//否則前移 { if(myexamsubmarkset->IsEOF()) { myexamsubmarkset->MovePrev(); } } }GetCurrentTime(m_examdate); m_studentid=""; m_submark=0.0f; m_examsubject=""; m_examkind=""; UpdateData(FALSE);//顯示更新 returnTRUE;}BOOLCExaminfo_submarkdlg::OnInitDialog(){ CDialog::OnInitDialog(); //TODO:Addextrainitializationhere CStringsqlStr; sqlStr="SELECT*FROMtb_examinfo_sub"; myexamsubmarkset=newCExaminfo_submarkset(&((CMystudentsysApp*)AfxGetApp())->m_DB); if(!myexamsubmarkset->Open(AFX_DB_USE_DEFAULT_TYPE,sqlStr))//打開數(shù)據(jù)表 { AfxMessageBox("tb_examinfo_sub表打開失敗!"); } m_examdate=CTime::GetCurrentTime(); UpdateData(FALSE); returnTRUE;}voidCExaminfo_submarkdlg::OnClose(){ //TODO:Addyourmessagehandlercodehereand/orcalldefault if(myexamsubmarkset->IsOpen()) { myexamsubmarkset->Close(); deletemyexamsubmarkset; } CDialog::OnClose();}voidCExaminfo_submarkdlg::OnOK(){}(3)學(xué)生信息管理:主要實(shí)現(xiàn)代碼為:boolCInfoStudent::DisplayRecord(){ if(mystudentset->IsBOF()&&mystudentset->IsEOF()) { m_studentaddr=""; m_studentage=0.0f; m_studentclass=""; m_studentname=""; m_studentphone=""; m_studentsex=""; m_studentid=""; } else { if(mystudentset->IsBOF())//移動(dòng)到了開頭,就向后移動(dòng) { mystudentset->MoveNext(); } else//否則前移 { if(mystudentset->IsEOF()) { mystudentset->MovePrev(); } } } m_studentaddr=mystudentset->m_addr; m_studentage=mystudentset->m_age; m_studentclass=mystudentset->m_class; m_studentname=mystudentset->m_studentname; m_studentphone=mystudentset->m_phone; m_studentsex=mystudentset->m_sex; m_studentid=mystudentset->m_studentid; UpdateData(FALSE); returnTRUE;}voidCInfoStudent::Onsubjectinfotoolbaradd(){ //TODO:Addyourcommandhandlercodehere m_studentaddr="";m_studentage=0.0f;m_studentclass="";m_studentname="";m_studentphone=""; m_studentsex=""; m_studentid=""; UpdateData(FALSE);}voidCInfoStudent::Onsubjectinfotoolbardel(){ //TODO:Addyourcommandhandlercodehere mystudentset->Delete();//刪除記錄 mystudentset->Requery(); DisplayRecord();}voidCInfoStudent::Onsubjectinfotoolbarfirst(){ //TODO:Addyourcommandhandlercodehere if(!mystudentset->IsBOF()) { mystudentset->MoveFirst();//向前移動(dòng)一條記錄 DisplayRecord();//更新窗口顯示 }}voidCInfoStudent::Onsubjectinfotoolbarlast(){ //TODO:Addyourcommandhandlercodehere if(!mystudentset->IsEOF()) { mystudentset->MoveLast(); DisplayRecord(); }}voidCInfoStudent::Onsubjectinfotoolbarnext(){ //TODO:Addyourcommandhandlercodehere if(!mystudentset->IsEOF()) { mystudentset->MoveNext(); DisplayRecord(); }}voidCInfoStudent::Onsubjectinfotoolbarpre(){ //TODO:Addyourcommandhandlercodehere if(!mystudentset->IsBOF()) { mystudentset->MovePrev(); DisplayRecord(); }}voidCInfoStudent::Onsubjectinfotoolbarsave(){ //TODO:Addyourcommandhandlercodehere UpdateData(TRUE); if(m_studentaddr.IsEmpty()||m_studentclass.IsEmpty() ||m_studentname.IsEmpty()||m_studentphone.IsEmpty() ||m_studentsex.IsEmpty()||m_studentid.IsEmpty()) { AfxMessageBox("請輸入相應(yīng)的數(shù)據(jù)!"); return; } mystudentset->AddNew();//調(diào)用添加記錄的函數(shù)處理 mystudentset->m_studentid=m_studentid; mystudentset->m_addr=m_studentaddr; mystudentset->m_age=m_studentage; mystudentset->m_class=m_studentclass; mystudentset->m_studentname=m_studentname; mystudentset->m_phone=m_studentphone; mystudentset->m_sex=m_studentsex; mystudentset->Update(); mystudentset->Requery(); AfxMessageBox("成功保存數(shù)據(jù)!"); DisplayRecord();//更新顯示}voidCInfoStudent::OnClose(){ //TODO:Addyourmessagehandlercodehereand/orcalldefault if(mystudentset->IsOpen()) { mystudentset->Close(); deletemystudentset; } CDialog::OnClose();}(4)成績等級測評:主要代碼為:BOOLCGrade_levelinfodlg::OnInitDialog(){ CDialog::OnInitDialog(); //TODO:Addextrainitializationhere m_List3.InsertColumn(0,"學(xué)生編號"); m_List3.InsertColumn(1,"考試科目"); m_List3.InsertColumn(2,"成績"); m_List3.InsertColumn(3,"考試類別"); m_List3.InsertColumn(4,"時(shí)間"); RECTrect; m_List3.GetWindowRect(&rect); intwid=rect.right-rect.left; m_List3.SetColumnWidth(0,wid/5); m_List3.SetColumnWidth(1,wid/5);m_List3.SetColumnWidth(2,wid/5); m_List3.SetColumnWidth(3,wid/5); m_List3.SetColumnWidth(4,wid/5); m_List3.SetExtendedStyle(LVS_EX_FULLROWSELECT); UpdateData(FALSE); returnTRUE;}voidCGrade_levelinfodlg::OnBtnsetgradelevel(){ //TODO:Addyourcontrolnotificationhandlercodehere UpdateData(TRUE); m_gradekindC.GetWindowText(m_gradekind); if(m_gradekind.IsEmpty()) { AfxMessageBox("請輸入相應(yīng)的數(shù)據(jù)!"); } CStringsqlStr; sqlStr="SELECT*FROMtb_gradelevelWHEREtb_gradelevel.grade_level='"+m_gradekind+"'"; gradelevel_findset=newCGrade_levelset(&((CMystudentsysApp*)AfxGetApp())->m_DB); if(!gradelevel_findset->Open(AFX_DB_USE_DEFAULT_TYPE,sqlStr))//打開數(shù)據(jù)表 { AfxMessageBox("tb_gradelevel表打開失敗!"); } gradelevel_findset->Edit(); gradelevel_findset->m_up_grade=m_upgrade;//對應(yīng)變量更新 gradelevel_findset->m_low_grade=m_lowgrade; gradelevel_findset->Update(); gradelevel_findset->Requery(); AfxMessageBox("設(shè)置成功!"); DisplayRecord();//更新顯示 if(gradelevel_findset->IsOpen()) { gradelevel_findset->Close(); deletegradelevel_findset; }}boolCGrade_levelinfodlg::DisplayRecord(){ m_upgrade=gradelevel_findset->m_up_grade;//對應(yīng)變量更新 m_lowgrade=gradelevel_findset->m_low_grade; UpdateData(FALSE); returnTRUE;}voidCGrade_levelinfodlg::OnBtnfindbest(){ //TODO:AddyourcontrolnotificationhandlercodehereBETWEEN CStringsqlStr_finduplow; sqlStr_finduplow="SELECT*FROMtb_gradelevelWHEREtb_gradelevel.grade_level='優(yōu)秀'"; findbest_uplowset=newCGrade_levelset(&((CMystudentsysApp*)AfxGetApp())->m_DB); if(!findbest_uplowset->Open(AFX_DB_USE_DEFAULT_TYPE,sqlStr_finduplow))//打開數(shù)據(jù)表 { AfxMessageBox("tb_gradelevel表打開失敗!"); }floatupgrade=findbest_uplowset->m_up_grade;floatlowgrade=findbest_uplowset->m_low_grade; if(findbest_uplowset->IsOpen()) { findbest_uplowset->Close(); deletefindbest_uplowset; } CStringsqlStr_findmarks; sqlStr_findmarks.Format("SELECT*FROMtb_examinfo_subWHEREtb_examinfo_sub.grade\ <='%f'ANDtb_examinfo_sub.grade>='%f'",upgrade,lowgrade); exammark_findbestset=newCExaminfo_submarkset(&((CMystudentsysApp*)AfxGetApp())->m_DB); if(!exammark_findbestset->Open(AFX_DB_USE_DEFAULT_TYPE,sqlStr_findmarks))//打開數(shù)據(jù)表 { AfxMessageBox("tb_examinfo_sub表打開失敗!"); } CStringstuid,subject,kind; floatmarks; CStringdate;CTimetDate; inti=0; m_List3.DeleteAllItems(); while(!exammark_findbestset->IsEOF()) { stuid=exammark_findbestset->m_studentid; subject=exammark_findbestset->m_code; kind=exammark_findbestset->m_kind; marks=exammark_findbestset->m_grade; charbuffer[50]; _gcvt(marks,4,buffer); tDate=exammark_findbestset->m_examdate; date=tDate.Format("%m/%d/%y"); m_List3.InsertItem(i,stuid.GetBuffer(50)); m_List3.SetItemText(i,1,subject.GetBuffer(50)); m_List3.SetItemText(i,2,buffer); m_List3.SetItemText(i,3,kind.GetBuffer(50)); m_List3.SetItemText(i,4,date.GetBuffer(50)); exammark_findbestset->MoveNext(); i++; } UpdateData(FALSE); if(exammark_findbestset->IsOpen()) { exammark_findbestset->Close(); deleteexammark_findbestset; } return;}voidCGrade_levelinfodlg::OnBtnfindbetter(){ //TODO:Addyourcontrolnotificationhandlercodehere CStringsqlStr_finduplow; sqlStr_finduplow="SELECT*FROMtb_gradelevelWHEREtb_gradelevel.grade_level='良好'"; findbetter_uplowset=newCGrade_levelset(&((CMystudentsysApp*)AfxGetApp())->m_DB); if(!findbetter_uplowset->Open(AFX_DB_USE_DEFAULT_TYPE,sqlStr_finduplow))//打開數(shù)據(jù)表 { AfxMessageBox("tb_gradelevel表打開失敗!"); }floatupgrade=findbetter_uplowset->m_up_grade;floatlowgrade=findbetter_uplowset->m_low_grade; if(findbetter_uplowset->IsOpen()) { findbetter_uplowset->Close(); deletefindbetter_uplowset; } CStringsqlStr_findmarks; sqlStr_findmarks.Format("SELECT*FROMtb_examinfo_subWHEREtb_examinfo_sub.grade\ <='%f'ANDtb_examinfo_sub.grade>='%f'",upgrade,lowgrade); exammark_findbetterset=newCExaminfo_submarkset(&((CMystudentsysApp*)AfxGetApp())->m_DB); if(!exammark_findbetterset->Open(AFX_DB_USE_DEFAULT_TYPE,sqlStr_findmarks))//打開數(shù)據(jù)表 { AfxMessageBox("tb_examinfo_sub表打開失敗!"); } CStringstuid,subject,kind; floatmarks; CStringdate;CTimetDate; inti=0; m_List3.DeleteAllItems(); while(!exammark_findbetterset->IsEOF()) { stuid=exammark_findbetterset->m_studentid; subject=exammark_findbetterset->m_code; kind=exammark_findbetterset->m_kind; marks=exammark_findbetterset->m_grade; charbuffer[50]; _gcvt(marks,4,buffer); tDate=exammark_findbetterset->m_examdate; date=tDate.Format("%m/%d/%y"); m_List3.InsertItem(i,stuid.GetBuffer(50)); m_List3.SetItemText(i,1,subject.GetBuffer(50)); m_List3.SetItemText(i,2,buffer); m_List3.SetItemText(i,3,kind.GetBuffer(50)); m_List3.SetItemText(i,4,date.GetBuffer(50)); exammark_findbetterset->MoveNext(); i++; } UpdateData(FALSE); if(exammark_findbetterset->IsOpen()) { exammark_findbetterset->Close(); deleteexammark_findbetterset; } return;}voidCGrade_levelinfodlg::OnBtnfindnormal(){ //TODO:Addyourcontrolnotificationhandlercodehere CStringsqlStr_finduplow; sqlStr_finduplow="SELECT*FROMtb_gradelevelWHEREtb_gradelevel.grade_level='及格'"; findnormal_uplowset=newCGrade_levelset(&((CMystudentsysApp*)AfxGetApp())->m_DB); if(!findnormal_uplowset->Open(AFX_DB_USE_DEFAULT_TYPE,sqlStr_finduplow))//打開數(shù)據(jù)表 { AfxMessageBox("tb_gradelevel表打開失敗!"); }floatupgrade=findnormal_uplowset->m_up_grade;floatlowgrade=findnormal_uplowset->m_low_grade; if(findnormal_uplowset->IsOpen()) { findnormal_uplowset->Close(); deletefindnormal_uplowset; } CStringsqlStr_findmarks; sqlStr_findmarks.Format("SELECT*FROMtb_examinfo_subWHEREtb_examinfo_sub.grade\ <='%f'ANDtb_examinfo_sub.grade>='%f'",upgrade,lowgrade); exammark_findnormalset=newCExaminfo_submarkset(&((CMystudentsysApp*)AfxGetApp())->m_DB); if(!exammark_findnormalset->Open(AFX_DB_USE_DEFAULT_TYPE,sqlStr_findmarks))//打開數(shù)據(jù)表 { AfxMessageBox("tb_examinfo_sub表打開失敗!"); } CStringstuid,subject,kind; floatmarks; CStringdate;CTimetDate; inti=0; m_List3.DeleteAllItems(); while(!exammark_findnormalset->IsEOF()) { stuid=exammark_findnormalset->m_studentid; subject=exammark_findnormalset->m_code; kind=exammark_findnormalset->m_kind; marks=exammark_findnormalset->m_grade; charbuffer[50]; _gcvt(marks,4,buffer); tDate=exammark_findnormalset->m_examdate; date=tDate.Format("%m/%d/%y"); m_List3.InsertItem(i,stuid.GetBuffer(50)); m_List3.SetItemText(i,1,subject.GetBuffer(50)); m_List3.SetItemText(i,2,buffer); m_List3.SetItemText(i,3,kind.GetBuffer(50)); m_List3.SetItemText(i,4,date.GetBuffer(50)); exammark_findnormalset->MoveNext(); i++; } UpdateData(FALSE); if(exammark_findnormalset->IsOpen()) { exammark_findnormalset->Close(); deleteexammark_findnormalset; } return;}voidCGrade_levelinfodlg::OnBtnfindworse(){ //TODO:Addyourcontrolnotificationhandlercodehere CStringsqlStr_finduplow; sqlStr_finduplow="SELECT*FROMtb_gradelevelWHEREtb_gradelevel.grade_level='不及格'"; findworse_uplowset=newCGrade_levelset(&((CMystudentsysApp*)AfxGetApp())->m_DB); if(!findworse_uplowset->Open(AFX_DB_USE_DEFAULT_TYPE,sqlStr_finduplow))//打開數(shù)據(jù)表 { AfxMessageBox("tb_gradelevel表打開失敗!"); }floatupgrade=findworse_uplowset->m_up_grade;floatlowgrade=findworse_uplowset->m_low_grade; if(findworse_uplowset->IsOpen()) { findworse_uplowset->Close(); deletefindworse_uplowset; } CStringsqlStr_findmarks; sqlStr_findmarks.Format("SELECT*FROMtb_examinfo_subWHEREtb_examinfo_sub.grade\ <='%f'ANDtb_examinfo_sub.grade>='%f'",upgrade,lowgrade); exammark_findworseset=newCExaminfo_submarkset(&((CMystudentsysApp*)AfxGetApp())->m_DB); if(!exammark_findworseset->Open(AFX_DB_USE_DEFAULT_TYPE,sqlStr_findmarks))//打開數(shù)據(jù)表 { AfxMessageBox("tb_examinfo_sub表打開失敗!"); } CStringstuid,subject,kind; floatmarks; CStringdate;CTimetDate; inti=0; m_List3.DeleteAllItems(); while(!exammark_findworseset->IsEOF()) { stuid=exammark_findworseset->m_studentid; subject=exammark_findworseset->m_code; kind=exammark_findworseset->m_kind; marks=exammark_findworseset->m_grade; charbuffer[50]; _gcvt(marks,4,buffer); tDate=exammark_findworseset->m_examdate; date=tDate.Format("%m/%d/%y"); m_List3.InsertItem(i,stuid.GetBuffer(50)); m_List3.SetItemText(i,1,subject.GetBuffer(50)); m_List3.SetItemText(i,2,buffer); m_List3.SetItemText(i,3,kind.GetBuffer(50)); m_List3.SetItemText(i,4,date.GetBuffer(50)); exammark_findworseset->MoveNext(); i++; } UpdateData(FALSE); if(exammark_findworseset->IsOpen()) { exammark_findworseset->Close(); deleteexammark_findworseset; } return;}(5)學(xué)生獎(jiǎng)懲管理三、調(diào)試分析在程序在錄入數(shù)據(jù)和查詢方面還是比較成功的,問題主要出現(xiàn)在學(xué)生成績錄入功能上面,當(dāng)進(jìn)行測試的時(shí)候出現(xiàn)了數(shù)據(jù)的不正確寫入,修改了數(shù)據(jù)庫的數(shù)據(jù)形式之后才終于正常運(yùn)行,htmlhelp.ldb文件一直找不到,后來在網(wǎng)上查閱了很多資料后發(fā)現(xiàn)應(yīng)該要將這個(gè)文件放到源文件目錄下,這樣就可以對文件進(jìn)行解析了。在調(diào)試的過程中初始化的時(shí)候分別試了不同的函數(shù),感覺如果要做輸出的話,光是驅(qū)動(dòng)就得正確的去配置相關(guān)的office驅(qū)動(dòng)??傊?,程序是做出來了。很有成就感。用戶手冊為方便用戶使用特提供本幫助。1.軟件主界面主界面包括主菜單,常用的功能按鈕和軟件名稱及版本等信息。2.主菜單軟件主菜單包括“學(xué)生管理”,“普通查詢”和“幫助”三個(gè)主菜單。2.1學(xué)生管理主菜單功能點(diǎn)擊“學(xué)生管理”主菜單項(xiàng),可以看到它包括的功能子菜單項(xiàng),包括“學(xué)生信息錄入”,“成績等級設(shè)置”和“學(xué)生違規(guī)處理”3個(gè)菜單項(xiàng)目,分別完成學(xué)生成績的錄入,成績等級設(shè)置和違規(guī)處理功能。點(diǎn)擊“學(xué)生信息錄入”進(jìn)入成績錄入子窗口在對應(yīng)的輸入框內(nèi)輸入內(nèi)容點(diǎn)擊“保存/輸入下一個(gè)”按鈕即可將輸入的記錄保存到數(shù)據(jù)庫中。如果學(xué)生編號是空,即沒有此學(xué)生時(shí)候系統(tǒng)能給出錯(cuò)誤提示。同時(shí)注意“考試日期輸入框一定要選擇日期。如果有重復(fù)記錄的話,系統(tǒng)將給出錯(cuò)誤提示,并不會(huì)保存記錄。點(diǎn)擊“成績等級設(shè)置”進(jìn)入成績等級設(shè)置子窗口在“設(shè)置類別”選擇框內(nèi)可以選擇“優(yōu)秀”,“良好”“及格”和“不及格”四個(gè)選擇項(xiàng)。然后在成績上下限輸入框內(nèi)輸入該等級成績的上限和下限,然后點(diǎn)擊“設(shè)置”即可。下面的四個(gè)功能按鈕分別完成查詢對應(yīng)成績等級的功能,并在窗口底部實(shí)時(shí)顯示。點(diǎn)擊“學(xué)生違規(guī)處理”子菜單進(jìn)入違規(guī)處理子窗口在對應(yīng)的輸入框內(nèi)輸入記錄點(diǎn)擊“保存違規(guī)記錄”按鈕即可將輸入記錄保存到數(shù)據(jù)庫。如果沒有此學(xué)生編號系統(tǒng)會(huì)給出錯(cuò)誤提示。2.2查詢管理菜單項(xiàng)點(diǎn)擊“查詢管理”打開查詢管理子菜單項(xiàng)點(diǎn)擊“學(xué)生基礎(chǔ)信息查詢”進(jìn)入學(xué)生基礎(chǔ)信息查詢子窗口該窗口可以按照學(xué)生編號查詢學(xué)生的基礎(chǔ)信息,在“學(xué)生編號”對應(yīng)的輸入框內(nèi)輸入要查詢的學(xué)生編號,點(diǎn)擊“查詢”按鈕即可。如果有此學(xué)生的信息,下面對應(yīng)的基礎(chǔ)信息顯示框內(nèi)就顯示查詢到的該學(xué)生的記錄,最下的列表框內(nèi)將顯示查詢到的學(xué)生的列表信息。點(diǎn)擊“學(xué)生違規(guī)查詢”子菜單項(xiàng)進(jìn)入學(xué)生違規(guī)查詢界面,該界面可以實(shí)現(xiàn)按照學(xué)生編號的查詢違規(guī)記錄的功能。在學(xué)生編號的輸入框內(nèi)輸入學(xué)生編號,點(diǎn)擊“查詢”按鈕即可。下面的對應(yīng)的結(jié)果顯示欄內(nèi)將顯示該學(xué)生的第一條違規(guī)的詳細(xì)記錄,最低端的列表框內(nèi)將顯示此學(xué)生的所有違規(guī)記錄。2.3“幫助”主菜單項(xiàng)點(diǎn)擊“幫助”主菜單項(xiàng),進(jìn)入其子菜單項(xiàng),包括兩個(gè)子菜單項(xiàng):“系統(tǒng)幫助”和“關(guān)于學(xué)生信息管理系統(tǒng)”點(diǎn)擊“幫助”打開系統(tǒng)幫助文件;點(diǎn)擊“關(guān)于學(xué)生信息管理系統(tǒng)”子菜單項(xiàng),進(jìn)入關(guān)于系統(tǒng)信息的子窗口,該窗口顯示本系統(tǒng)的名稱和版本信息,版權(quán)信息等。3.常用功能按鈕在主界面的左側(cè)是常用的功能按鈕,包括:科室信息管理,科目信息管理,教師信息管理,班級信息管理,班級科目設(shè)置和考試類別設(shè)置3.1科室信息管理點(diǎn)擊“科室信息管理”按鈕進(jìn)入科室信息管理子窗口。在
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 復(fù)混肥料在農(nóng)業(yè)現(xiàn)代化進(jìn)程中的角色考核試卷
- 智能交通管理系統(tǒng)的運(yùn)營與維護(hù)考核試卷
- 體育表演跨國合作案例考核試卷
- 辦公設(shè)備培訓(xùn)課程考核試卷
- 推廣會(huì)議合同范本
- 工地噴錨合同范本
- 兼職項(xiàng)目加工合同范本
- 物聯(lián)網(wǎng)技術(shù)在智能家居領(lǐng)域的合同
- 年度項(xiàng)目進(jìn)度計(jì)劃及任務(wù)分配方案書
- 智慧農(nóng)業(yè)技術(shù)服務(wù)合同
- 青少年社會(huì)支持評定量表
- kW直流充電樁的設(shè)計(jì)
- 施工圖總目錄
- 《裝配化工字組合梁鋼橋六車道3x30m通用圖》(3911-05-2021)【可編輯】
- 02S404給排水圖集標(biāo)準(zhǔn)
- 人民醫(yī)院診斷證明書
- 六年級勞動(dòng)與技術(shù)下冊《課程綱要》
- 掛牌督辦安全生產(chǎn)重大事故隱患銷號申請表
- 2023纖維增強(qiáng)水泥擠出成型中空墻板
- 頸源性頭痛課件
- 關(guān)于與旅游發(fā)展集團(tuán)成立合資公司的可行性研究報(bào)告
評論
0/150
提交評論