數(shù)據(jù)庫高級(jí)應(yīng)用課外實(shí)踐報(bào)告_第1頁
數(shù)據(jù)庫高級(jí)應(yīng)用課外實(shí)踐報(bào)告_第2頁
數(shù)據(jù)庫高級(jí)應(yīng)用課外實(shí)踐報(bào)告_第3頁
數(shù)據(jù)庫高級(jí)應(yīng)用課外實(shí)踐報(bào)告_第4頁
數(shù)據(jù)庫高級(jí)應(yīng)用課外實(shí)踐報(bào)告_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

數(shù)據(jù)庫高級(jí)應(yīng)用課外設(shè)計(jì)報(bào)告項(xiàng)目名稱:學(xué)生信息管理系統(tǒng)所在班級(jí):指導(dǎo)教師:小組成員:項(xiàng)目簡介學(xué)生信息管理是高校的一項(xiàng)重要工作,傳統(tǒng)的手工記錄與查詢相關(guān)信息既浪費(fèi)時(shí)間又浪費(fèi)人力和物力。采用計(jì)算機(jī)對(duì)學(xué)生信息進(jìn)行電子化管理可提高學(xué)生信息管理的效率,實(shí)現(xiàn)學(xué)生信息管理工作的系統(tǒng)化、規(guī)范化和自動(dòng)化。因此,制作一個(gè)學(xué)生信息管理系統(tǒng)有十分重要的意義。本章將按照軟件工程的思想對(duì)學(xué)生信息管理系統(tǒng)進(jìn)行分析與設(shè)計(jì),并采用ADO技術(shù)開發(fā)實(shí)現(xiàn)。需求分析學(xué)生信息管理系統(tǒng)的基本功能是對(duì)學(xué)生信息進(jìn)行處理,如數(shù)據(jù)的錄入、增加、修改、刪除以及信息查詢等。作為一個(gè)完整的系統(tǒng),還應(yīng)該包括系統(tǒng)用戶管理。所以學(xué)生信息管理系統(tǒng)應(yīng)該實(shí)現(xiàn)以下幾個(gè)方面的功能。(1)學(xué)生基本信息管理。對(duì)學(xué)生的基本信息進(jìn)行錄入、刪除、修改以及條件查詢,應(yīng)能根據(jù)不同的查詢條件對(duì)學(xué)生的基本信息進(jìn)行查詢操作。(2)課程信息管理。對(duì)課程信息進(jìn)行錄入、刪除、修改以及條件查詢,應(yīng)能根據(jù)不同的查詢條件對(duì)課程信息進(jìn)行查詢操作。(3)學(xué)生成績管理。對(duì)學(xué)生成績進(jìn)行錄入、刪除、修改以及條件查詢,應(yīng)能根據(jù)不同的查詢條件對(duì)成績信息進(jìn)行查詢操作。并實(shí)現(xiàn)打印預(yù)覽及打印成績單功能。(4)系統(tǒng)用戶管理。只有被授權(quán)的用戶才可以對(duì)有關(guān)信息進(jìn)行錄入、刪除、修改密碼及條件查詢。可行性分析學(xué)生信息管理系統(tǒng)主要涉及兩項(xiàng)關(guān)鍵技術(shù):一是對(duì)Access數(shù)據(jù)庫的建立;二是在VisualC++中,使用ADO技術(shù)對(duì)數(shù)據(jù)庫進(jìn)行增刪改查等各種操作。功能模塊學(xué)生信息管理系統(tǒng)主要由基本信息管理、課程管理、成績管理和系統(tǒng)用戶管理4個(gè)功能模塊構(gòu)成。1.學(xué)生基本信息管理(1)添加學(xué)生基本信息,包括學(xué)生的學(xué)號(hào)、姓名、性別、生日、專業(yè)、班級(jí)、家庭住址、備注。(2)修改學(xué)生基本信息。(3)刪除學(xué)生基本信息。(4)查詢學(xué)生基本信息,可以按照學(xué)號(hào)、姓名、班級(jí)等進(jìn)行查詢。2.課程信息管理(1)課程信息的添加、刪除、修改。(2)查詢課程信息。3.成績信息管理(1)添加成績信息,包括學(xué)號(hào)、課程代號(hào)、學(xué)年、學(xué)期、平時(shí)成績、期末成績、總評(píng)成績、備注。(2)成績信息修改、刪除和查詢。(3)實(shí)現(xiàn)打印預(yù)覽及打印成績單功能。4.系統(tǒng)用戶管理(1)添加系統(tǒng)用戶信息,包括用戶名、密碼、用戶類型(學(xué)生、教師、系統(tǒng)管理員)。(2)修改系統(tǒng)用戶信息及密碼。(3)刪除系統(tǒng)用戶信息。(4)查詢系統(tǒng)用戶信息。數(shù)據(jù)庫邏輯結(jié)構(gòu)設(shè)計(jì)本系統(tǒng)采用Access2003創(chuàng)建數(shù)據(jù)庫,數(shù)據(jù)庫名稱為StudentDB。包含4個(gè)表:學(xué)生基本信息表、成績表、課程信息表和系統(tǒng)用戶表?;拘畔⒈鞸tudentlnfo字段名稱字段類型字段大小說明StuID文本12學(xué)號(hào)StuName文本15姓名Sex文本2性別Specialty文本20專業(yè)Class文本10班級(jí)Birthday文本10出生日期Address文本50家庭住址Memo文本50備注(獎(jiǎng)勵(lì)和處分等)學(xué)生成績表Scores字段名稱字段類型字段大小說明StuID文本12學(xué)號(hào)StuName文本15姓名Class文本10班級(jí)CourseID文本10課程代號(hào)AcademicYear文本15學(xué)年Semester文本2學(xué)期UsualScore單精度平時(shí)成績TestScore單精度期末成績TotalScore單精度總評(píng)成績Memo文本10備注(缺考/緩考/補(bǔ)考)課程信息表Courses字段名稱字段類型字段大小說明CourseID文本10課程代號(hào)CourseName文本15課程名CreditHour整型學(xué)時(shí)CreditScore單精度型學(xué)分CourseKind文本10課程性質(zhì)(必修/限選/校選)系統(tǒng)用戶表Users字段名稱字段類型字段大小說明UserName文本10用戶名UserPsw文本12用戶密碼UserType整型用戶類型(0:學(xué)生,1:教師,2:系統(tǒng)管理員)六、功能結(jié)構(gòu)圖系統(tǒng)使用說明書軟件安裝一、系統(tǒng)要求:、硬件要求:CPU主頻:1.8GHz以及以上。硬盤空間:2G及以上。內(nèi)存大?。?12MB及以上。顯示卡:無要求。、軟件要求:WindowsXP/Windows2000/Windows2003操作系統(tǒng)。軟件安裝:無需安裝,直接打開exe文件。系統(tǒng)使用詳細(xì)說明軟件使用首先,向軟件開發(fā)者獲取管理員或其他用戶的用戶名和密碼,用初始密碼登陸。1登陸界面按確定即可登陸如果用戶名或密碼錯(cuò)誤,則彈出2如果用戶名和密碼身份級(jí)別均對(duì)應(yīng),則顯示主界面。3點(diǎn)擊學(xué)生基本信息管理,進(jìn)入學(xué)生基本信息管理界面:可以選擇按學(xué)號(hào),姓名,班級(jí)來實(shí)現(xiàn)查找功能;在編輯區(qū)進(jìn)行編輯;然后點(diǎn)擊添加,修改,刪除,分別實(shí)現(xiàn)對(duì)應(yīng)功能。點(diǎn)擊關(guān)閉按鈕回到主界面。4點(diǎn)擊課程信息管理,進(jìn)入課程信息管理界面:此界面與學(xué)生基本信息管理界面相似,按代碼,課程名或全部課程實(shí)現(xiàn)查找;在編輯區(qū)進(jìn)行編輯;然后點(diǎn)擊添加,修改,刪除,分別實(shí)現(xiàn)對(duì)應(yīng)功能。點(diǎn)擊關(guān)閉按鈕回到主界面。5點(diǎn)擊學(xué)生成績管理,進(jìn)入學(xué)生成績管理界面:按學(xué)期,學(xué)年,班級(jí),課程,課程實(shí)現(xiàn)查詢;在編輯區(qū)進(jìn)行編輯,點(diǎn)擊添加,修改,刪除,分別實(shí)現(xiàn)對(duì)應(yīng)功能;點(diǎn)擊打印預(yù)覽及打印成績單實(shí)現(xiàn)打印功能;點(diǎn)擊關(guān)閉按鈕回到主界面。6點(diǎn)擊系統(tǒng)用戶管理,進(jìn)入系統(tǒng)用戶管理界面:選中一條記錄,在編輯數(shù)據(jù)區(qū)進(jìn)行編輯;在修改密碼區(qū)修改密碼,點(diǎn)擊修改密碼,實(shí)現(xiàn)密碼修改功能;在條件查詢區(qū)根據(jù)用戶名,用戶類型或全部,進(jìn)行查詢;在點(diǎn)擊添加,刪除,分別實(shí)現(xiàn)對(duì)應(yīng)功能;點(diǎn)擊關(guān)閉按鈕回到主界面。最后點(diǎn)擊退出按鈕,退出程序。課外實(shí)踐總結(jié)通過這次實(shí)踐,我對(duì)于MFC類庫的各種控件得到了熟練掌握,尤其是列表控件的使用得到了充分的練習(xí),對(duì)于其中插入記錄等步驟有了更好的掌握。對(duì)于數(shù)據(jù)庫連接技術(shù)——ADO技術(shù)有了更為深刻的理解,將所學(xué)到的理論知識(shí)運(yùn)用于實(shí)踐。主要源代碼ADO連接類:voidCADOConn::OnInitADOConn(){ ::CoInitialize(NULL);//初始化COM環(huán)境 try { m_pConnection.CreateInstance("ADODB.Connection");//創(chuàng)建Connection對(duì)象 //設(shè)置連接字符串 _bstr_tstrConnect="Provider=Microsoft.Jet.OLEDB.4.0;DataSource=StudentDB.mdb"; m_pConnection->Open(strConnect,"","",adModeUnknown);//打開數(shù)據(jù)庫 } catch(_com_errore) { AfxMessageBox("數(shù)據(jù)庫連接失敗,確認(rèn)數(shù)據(jù)庫路徑是否正確!"); }}BOOLCADOConn::ExecuteSQL(_bstr_tbstrSQL){ try { if(m_pConnection==NULL) OnInitADOConn(); m_pConnection->Execute(bstrSQL,NULL,adCmdText);//執(zhí)行SQL語句 returntrue; } catch(_com_errore) { AfxMessageBox("不能打開記錄集!"); returnfalse; }}voidCADOConn::ExitConnect(){ //關(guān)閉記錄集和連接 if(m_pRecordset!=NULL) m_pRecordset->Close(); m_pConnection->Close(); //釋放環(huán)境 ::CoUninitialize();}_RecordsetPtr&CADOConn::GetRecordset(_bstr_tbstrSQL){try { if(m_pConnection==NULL) OnInitADOConn();m_pRecordset.CreateInstance(__uuidof(Recordset));//創(chuàng)建Recordset對(duì)象 //打開記錄集 m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText); } catch(_com_errore) { AfxMessageBox("不能打開記錄集!"); } returnm_pRecordset;}學(xué)生基本信息管理BOOLCBaseInfoDlg::OnInitDialog(){ CDialog::OnInitDialog(); //TODO:Addextrainitializationhere /* m_BaseInfoList.SetExtendedStyle(LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT|LVS_EX_ONECLICKACTIVATE);*/ DWORDdwExStyle=LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES|LVS_EX_HEADERDRAGDROP|LVS_EX_ONECLICKACTIVATE|LVS_EX_FLATSB;m_BaseInfoList.ModifyStyle(0,LVS_REPORT|LVS_SINGLESEL|LVS_SHOWSELALWAYS); //設(shè)置列表框控件的顏色 m_BaseInfoList.SetExtendedStyle(dwExStyle);//設(shè)置列名m_BaseInfoList.InsertColumn(0,"學(xué)號(hào)"); m_BaseInfoList.InsertColumn(1,"姓名"); m_BaseInfoList.InsertColumn(2,"性別"); m_BaseInfoList.InsertColumn(3,"專業(yè)"); m_BaseInfoList.InsertColumn(4,"班級(jí)"); m_BaseInfoList.InsertColumn(5,"出生日期"); m_BaseInfoList.InsertColumn(6,"家庭住址"); m_BaseInfoList.InsertColumn(7,"備注"); RECTrectList; m_BaseInfoList.GetWindowRect(&rectList); intwidth=(rectList.right-rectList.left)/8;//設(shè)置列寬 for(inti=0;i<8;i++) m_BaseInfoList.SetColumnWidth(i,width); if(0==UserType)//對(duì)于學(xué)生,只能查詢信息{GetDlgItem(IDC_BUTTON_ADD)->EnableWindow(false);GetDlgItem(IDC_BUTTON_DEL)->EnableWindow(false);GetDlgItem(IDC_BUTTON_MODIFY)->EnableWindow(false); } m_nSex=0;//缺省性別為男m_nSearchKey=1;//缺省為按姓名查詢UpdateData(false); ListRecordset();//顯示全部記錄 returnTRUE;//returnTRUEunlessyousetthefocustoacontrol //EXCEPTION:OCXPropertyPagesshouldreturnFALSE}voidCBaseInfoDlg::ListRecordset(_bstr_tbstrSQL){m_BaseInfoList.DeleteAllItems();//刪除列表中原來的記錄 CADOConnm_ADOConn; m_ADOConn.OnInitADOConn(); _RecordsetPtrBaseInfoSet;//記錄集對(duì)象指針BaseInfoSet=m_ADOConn.GetRecordset(bstrSQL); inti=0;//記錄序號(hào) _variant_ttheValue; CStringstrTemp; //輸出匹配的記錄,直到記錄集為空 while(!BaseInfoSet->adoEOF)//如果記錄集不空 { //設(shè)置ListCtrl控件的Item值 strTemp=""; theValue=BaseInfoSet->GetCollect("StuID");//獲取學(xué)號(hào) if(theValue.vt!=VT_NULL) strTemp=(char*)_bstr_t(theValue); m_BaseInfoList.InsertItem(i,strTemp); strTemp=""; theValue=BaseInfoSet->GetCollect("StuName");//獲取姓名 if(theValue.vt!=VT_NULL) strTemp=(char*)_bstr_t(theValue); m_BaseInfoList.SetItemText(i,1,strTemp); strTemp=""; theValue=BaseInfoSet->GetCollect("Sex");//獲取性別 if(theValue.vt!=VT_NULL) strTemp=(char*)_bstr_t(theValue); m_BaseInfoList.SetItemText(i,2,strTemp); strTemp=""; theValue=BaseInfoSet->GetCollect("Specialty");//獲取專業(yè) if(theValue.vt!=VT_NULL) strTemp=(char*)_bstr_t(theValue); m_BaseInfoList.SetItemText(i,3,strTemp); strTemp="";theValue=BaseInfoSet->GetCollect("Class");//獲取班級(jí) if(theValue.vt!=VT_NULL) strTemp=(char*)_bstr_t(theValue); m_BaseInfoList.SetItemText(i,4,strTemp); strTemp=""; theValue=BaseInfoSet->GetCollect("Birthday");//獲取出生日期 if(theValue.vt!=VT_NULL) strTemp=(char*)_bstr_t(theValue); m_BaseInfoList.SetItemText(i,5,strTemp); strTemp=""; theValue=BaseInfoSet->GetCollect("Address");//獲取家庭住址 if(theValue.vt!=VT_NULL) strTemp=(char*)_bstr_t(theValue); m_BaseInfoList.SetItemText(i,6,strTemp); strTemp=""; theValue=BaseInfoSet->GetCollect("Memo");//獲取備注 if(theValue.vt!=VT_NULL) strTemp=(char*)_bstr_t(theValue); m_BaseInfoList.SetItemText(i,7,strTemp); BaseInfoSet->MoveNext();//移到下一條記錄 i++; } m_ADOConn.ExitConnect();}voidCBaseInfoDlg::OnButtonSearch(){ //TODO:Addyourcontrolnotificationhandlercodehere UpdateData(); CStringstrFieldName[3]={"學(xué)號(hào)","姓名","班級(jí)"};//查詢的中文條件 CStringstrField[3]={"StuID","StuName","Class"};//查詢條件對(duì)應(yīng)的數(shù)據(jù)庫表中的字段名 CFindDlgfindDlg; findDlg.m_strField=strFieldName[m_nSearchKey]+":"; UpdateData(false); if(IDOK!=findDlg.DoModal())//如果點(diǎn)擊取消按鈕則結(jié)束查詢 return; //如果點(diǎn)擊了確定按鈕則執(zhí)行查詢 _bstr_tvSQL="select*fromStudentInfowhere"+strField[m_nSearchKey]+"='"+findDlg.m_strFieldValue+"'"; ListRecordset(vSQL);//查詢出記錄并顯示在列表控件中}voidCBaseInfoDlg::OnButtonAdd(){ //TODO:Addyourcontrolnotificationhandlercodehere UpdateData(); if(m_StuID.IsEmpty()) { MessageBox("學(xué)號(hào)不能為空!"); return; } if(m_StuName.IsEmpty()) { MessageBox("姓名不能為空!"); return; } //查找是否有同一學(xué)號(hào) _bstr_tvSQL; vSQL="select*fromStudentInfoWHEREStuID='"+m_StuID+"'";CADOConnm_ADOConn; m_ADOConn.OnInitADOConn(); _RecordsetPtrBaseInfoSet;//記錄集對(duì)象指針BaseInfoSet=m_ADOConn.GetRecordset(vSQL); //判斷數(shù)據(jù)庫中是否有同一學(xué)號(hào),如果有則退出 if(!BaseInfoSet->adoEOF) { MessageBox("同一學(xué)號(hào)學(xué)生已經(jīng)存在!"); m_ADOConn.ExitConnect(); return; } //如果沒有同一學(xué)生,則執(zhí)行正常的添加操作 CStringstrSex,strBirthday; if(m_nSex==0) strSex="男"; else strSex="女";strBirthday=m_BirthYear+"-"+m_BirthMonth+"-"+m_BirthDay;//出生日期 vSQL="insertintoStudentInfovalues('"+m_StuID+"','"+m_StuName+"','"+strSex+"','"+m_Specialty+"','"+m_Class+"','"+strBirthday+"','"+m_Address+"','"+m_Memo+"')";m_ADOConn.ExecuteSQL(vSQL);//向數(shù)據(jù)庫表中添加一條記錄 m_ADOConn.ExitConnect(); ListRecordset();//顯示記錄集}voidCBaseInfoDlg::OnButtonDel(){ //TODO:AddyourcontrolnotificationhandlercodehereUpdateData();if(MessageBox("是否刪除當(dāng)前學(xué)生信息?","請(qǐng)確認(rèn)",MB_YESNO|MB_ICONQUESTION)==IDYES){ _bstr_tvSQL; CADOConnm_ADOConn; m_ADOConn.OnInitADOConn();//刪除所選學(xué)生的成績信息 vSQL="deletefromScoreswhereStuID='"+m_StuID+"'";m_ADOConn.ExecuteSQL(vSQL); //刪除所選學(xué)生的基本信息 vSQL="deletefromStudentInfowhereStuID='"+m_StuID+"'";m_ADOConn.ExecuteSQL(vSQL); m_ADOConn.ExitConnect(); ListRecordset();//顯示記錄集 MessageBox("刪除成功!"); } }voidCBaseInfoDlg::OnButtonModify(){ //TODO:Addyourcontrolnotificationhandlercodehere UpdateData(); CStringstrSex,strBirthday; if(m_nSex==0) strSex="男"; else strSex="女";strBirthday=m_BirthYear+"-"+m_BirthMonth+"-"+m_BirthDay;_bstr_tvSQL;_RecordsetPtrBaseInfoSet; vSQL="select*fromStudentInfowhereStuID='"+m_StuID+"'";CADOConnm_ADOConn; m_ADOConn.OnInitADOConn(); BaseInfoSet=m_ADOConn.GetRecordset(vSQL); _variant_ttheValue; CStringstrTemp; if(!BaseInfoSet->adoEOF)//如果記錄集不空,修改該記錄的值 { BaseInfoSet->Fields->GetItem("StuName")->Value=_bstr_t(m_StuName);BaseInfoSet->Fields->GetItem("Sex")->Value=_bstr_t(strSex);BaseInfoSet->Fields->GetItem("Specialty")->Value=_bstr_t(m_Specialty);BaseInfoSet->Fields->GetItem("Class")->Value=_bstr_t(m_Class);BaseInfoSet->Fields->GetItem("Birthday")->Value=_bstr_t(strBirthday);BaseInfoSet->F

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(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)論