![基于C++語言的學(xué)生考試管理系統(tǒng)(完整課設(shè)報告)_第1頁](http://file1.renrendoc.com/fileroot_temp2/2020-10/13/c4cf144d-17da-49c7-b875-076337299cfb/c4cf144d-17da-49c7-b875-076337299cfb1.gif)
![基于C++語言的學(xué)生考試管理系統(tǒng)(完整課設(shè)報告)_第2頁](http://file1.renrendoc.com/fileroot_temp2/2020-10/13/c4cf144d-17da-49c7-b875-076337299cfb/c4cf144d-17da-49c7-b875-076337299cfb2.gif)
![基于C++語言的學(xué)生考試管理系統(tǒng)(完整課設(shè)報告)_第3頁](http://file1.renrendoc.com/fileroot_temp2/2020-10/13/c4cf144d-17da-49c7-b875-076337299cfb/c4cf144d-17da-49c7-b875-076337299cfb3.gif)
![基于C++語言的學(xué)生考試管理系統(tǒng)(完整課設(shè)報告)_第4頁](http://file1.renrendoc.com/fileroot_temp2/2020-10/13/c4cf144d-17da-49c7-b875-076337299cfb/c4cf144d-17da-49c7-b875-076337299cfb4.gif)
![基于C++語言的學(xué)生考試管理系統(tǒng)(完整課設(shè)報告)_第5頁](http://file1.renrendoc.com/fileroot_temp2/2020-10/13/c4cf144d-17da-49c7-b875-076337299cfb/c4cf144d-17da-49c7-b875-076337299cfb5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、福建農(nóng)林大學(xué)計算機與信息學(xué)院福建農(nóng)林大學(xué)計算機與信息學(xué)院 課程設(shè)計報告課程設(shè)計報告 課程名稱:數(shù)據(jù)庫原理課程設(shè)計 論文題目: 學(xué)生考試管理系統(tǒng) 姓 名: 系: 計算機科學(xué)與技術(shù) 專 業(yè): 計算機科學(xué)與技術(shù) 年 級: 2012 學(xué) 號: 指導(dǎo)教師: 2014 年 12 月 28 日 福建農(nóng)林大學(xué)計算機與信息學(xué)院福建農(nóng)林大學(xué)計算機與信息學(xué)院 課程設(shè)計報告結(jié)果評定課程設(shè)計報告結(jié)果評定 評語 評分內(nèi)容標準分得分 用軟件工程的方法進行系統(tǒng)需求分析和系統(tǒng)設(shè)計得 出系統(tǒng)的數(shù)據(jù)流圖數(shù)據(jù)字典和信息模型,寫出需求 規(guī)格說明書。 15 按數(shù)據(jù)庫設(shè)計方法和規(guī)范化理論得出符合 3NF 的邏 輯模型,外模型和物理模型。
2、25 定義 MySQL 的基本表和安全性、完整性要求。 10 設(shè)計并編寫輸入輸出、查詢統(tǒng)計、數(shù)據(jù)維護等功 能模塊的應(yīng)用程序。 35 對系統(tǒng)的各個功能模塊進行集成、總調(diào)試和優(yōu)化工 作,優(yōu)化用戶界面、撰寫設(shè)計報告。 15 總分 指導(dǎo)教師簽字:評定日期: 目目 錄錄 一一 考試管理系統(tǒng)可行性分析考試管理系統(tǒng)可行性分析 .1 1.1 問題描述及開發(fā)背景.1 1.2 開發(fā)意義、資金消耗及應(yīng)用范圍分析.1 二二 考試管理系統(tǒng)需求分析考試管理系統(tǒng)需求分析 .1 2.1 用戶需求及功能分析匯總.1 2.2 系統(tǒng)流程圖及數(shù)據(jù)流圖.2 2.3 數(shù)據(jù)字典.2 2.4 數(shù)據(jù)庫設(shè)計.4 三三 考試管理系統(tǒng)概要設(shè)計考試管
3、理系統(tǒng)概要設(shè)計 .4 3.1 系統(tǒng)模塊劃分.4 3.2 確定目標系統(tǒng)實現(xiàn)方案.5 四四 目標系統(tǒng)詳細設(shè)計目標系統(tǒng)詳細設(shè)計 .6 4.1 數(shù)據(jù)庫設(shè)計.6 4.2 創(chuàng)建數(shù)據(jù)源并通過數(shù)據(jù)庫操作事務(wù)對象連接.6 4.3 創(chuàng)建前臺控件與數(shù)據(jù)源間數(shù)據(jù)傳輸?shù)臄?shù)據(jù)窗口對象和查詢對象.7 4.3 創(chuàng)建數(shù)據(jù)管道.8 五五 系統(tǒng)編碼系統(tǒng)編碼(幾個重要部分)(幾個重要部分) .9 5.1EXAMONLINE.9-10 5.2ADDSUBJECT.11 5.3EXAMINFO.14-16 5.4TESTRESULT. .16-18 六六 測試測試 .18 6.1 單元模塊測試與分析.18 6.2 集成測試與分析.18
4、6.3 系統(tǒng)運行截圖.18-23 七七 總結(jié)總結(jié).23-24 參考文獻參考文獻 .23 學(xué)生考試管理系統(tǒng)學(xué)生考試管理系統(tǒng) 開發(fā)環(huán)境:開發(fā)環(huán)境:Virtual C+ 一一 考試管理系統(tǒng)可行性分析考試管理系統(tǒng)可行性分析 1.11.1 問題描述及開發(fā)背景問題描述及開發(fā)背景 隨著教育改革的進行,目前高中階段教學(xué)已逐步采用同大學(xué)教學(xué)類似的學(xué) 分制,原先對于學(xué)生考試管理成績資料的那種人工或半人工的管理方式的低效 性越來越明顯;而對于中學(xué)若采購成套資料管理系統(tǒng),無論從資金還是人員配 置方面多少都有些小題大做。鑒于以上話題的諸多特征,策劃設(shè)計一個功能、 可操縱性以及資金消耗與之適合的學(xué)生考試管理系統(tǒng)。 1.2
5、1.2 開發(fā)意義、資金消耗及應(yīng)用范圍分析開發(fā)意義、資金消耗及應(yīng)用范圍分析 開發(fā)此類系統(tǒng)主要是想,在兼顧到性能和資金消耗的前提下,加速中學(xué)的 信息管理方式同教育改革相適應(yīng)的速度。 該系統(tǒng)預(yù)定開發(fā)周期為一周,開發(fā)人員三人,每天工作八小時。規(guī)劃同勞 動量等值市場開發(fā)經(jīng)費為 500 元(具體規(guī)劃為:人員酬勞每人每小時酬勞為 20 元,共計 420 元;市場調(diào)研、計算機設(shè)備使用以及交付客戶初期的系統(tǒng)適應(yīng)性 維護等經(jīng)費 80 元。 該系統(tǒng)主要面向中學(xué)學(xué)生考試成績資料管理人員。 二二 考試管理系統(tǒng)需求分析考試管理系統(tǒng)需求分析 2.12.1 用戶需求及功能分析匯總用戶需求及功能分析匯總 (1)保密方面:采用密
6、碼登陸方式啟動。 (2) 數(shù)據(jù)存儲管理方面:采用服務(wù)器工作站方式,僅在服務(wù)器上運行數(shù)據(jù) 庫管理軟件,各年級辦公室的計算機共享數(shù)據(jù)資源;具備不同服務(wù)器間、已購數(shù) 據(jù)庫系統(tǒng)間數(shù)據(jù)塊的傳輸功能。 (3)數(shù)據(jù)操作方面:注冊賬號。學(xué)生基本信息的錄入、修改和查詢功能; 課程添加、題庫修改和刪除功能;學(xué)生成績的查詢功能。 (4)易以操縱性:窗口界面布置風(fēng)格盡量一致,要求輸入類的操作盡量少。 (5)容錯性能:由于操作人員主要為教師或?qū)W生,所以對誤操作的處理能能 力要相對強一些。 (6)硬件及系統(tǒng)軟件要求:基本的 windowsXP 平臺即可。 (7)提供必要的維護文檔。 2.22.2 系統(tǒng)流程圖及數(shù)據(jù)流圖系統(tǒng)
7、流程圖及數(shù)據(jù)流圖 系統(tǒng)流程圖如圖 2-1 所示(其中:“”表示后臺數(shù)據(jù)流動, “” 表示信息管理員的前端操作) 。 數(shù)據(jù)流圖如圖 2-2 所示。 2.32.3 數(shù)據(jù)字典數(shù)據(jù)字典 (1)名字:事務(wù) 描述:需管理員操作的活動; (2)名字:后臺事務(wù) 描述:通過激活的事件或數(shù)據(jù)庫系統(tǒng)完成的活動,對于管理員是透明的。 圖 2-1 系統(tǒng)流程圖 (3)名字:學(xué)生基本信息 定義:學(xué)生基本信息=學(xué)號+姓名+性別+身份證+手機號 位置:數(shù)據(jù)庫 (4)名字:課程信息 定義:課程信息=課程名+課程考題+考題答案+成績 位置:數(shù)據(jù)庫 (5)名字:學(xué)生成績 定義:學(xué)生成績=學(xué)號+課程名+成績 圖 2-2 系統(tǒng)數(shù)據(jù)流圖
8、2.42.4 數(shù)據(jù)庫設(shè)計數(shù)據(jù)庫設(shè)計 E-R 圖如圖 2-3 所示。 圖 2-3 E-R 圖 三三 考試管理系統(tǒng)概要設(shè)計考試管理系統(tǒng)概要設(shè)計 3.13.1 系統(tǒng)模塊劃分系統(tǒng)模塊劃分 系統(tǒng)層次結(jié)構(gòu)如圖 3-1 所示,模塊劃分如圖 3-2 所示。 圖 3-1 系統(tǒng)層次結(jié)構(gòu)示意圖 圖 3-2 系統(tǒng)設(shè)計模塊劃分示意圖 說明:我負責(zé)數(shù)據(jù)庫構(gòu)建模塊的設(shè)計。 3.23.2 確定目標系統(tǒng)實現(xiàn)方案確定目標系統(tǒng)實現(xiàn)方案 方案一:方案一:快速原型增量模式開發(fā) 優(yōu)點:開發(fā)出最終版本的系統(tǒng)之前,所有原型系統(tǒng)都已通過與用戶交互 而得到驗證,據(jù)此產(chǎn)生的規(guī)格說明文檔正確地描述了用戶的要求,因此,在開 發(fā)過程的后續(xù)階段不會因為發(fā)
9、現(xiàn)了規(guī)格說明文檔錯誤而進行較大的返工。 開發(fā)人員通過建立原型系統(tǒng)已經(jīng)學(xué)到了許多東西(至少知道了“系統(tǒng)不 應(yīng)該做什么,以及怎樣不去做不該做的事情” ) ,因此,在設(shè)計和編碼階段發(fā)生 錯誤的可能性也比較小,這自然減少了在后續(xù)階段需要改正前面階段所犯錯誤 的可能性。 劣勢:該模式的本質(zhì)特征是“快速” ,但由于原型系統(tǒng)的用途是獲知用戶的 真正需求,一旦需求確定了,原型版本就將被拋棄。這也決定了其對人員配備 和勞動量有較高的要求。 方案二:方案二:文檔驅(qū)動模塊化一次性開發(fā) 優(yōu)點:由其文檔驅(qū)動的特性,決定了這種方案具有階段性和依賴性,同 時可最大限度推遲系統(tǒng)的具體代碼實現(xiàn)。實踐表明,對于規(guī)模相對較大的軟件
10、 項目來說,往往編碼開始的越早,最終完成開發(fā)工作所需要的時間反而越長。 因為,前面階段的工作沒做或做得不扎實,過早地考慮進行程序?qū)崿F(xiàn),往往導(dǎo) 致大量返工,有時甚至發(fā)生無法彌補的問題,帶來災(zāi)難性結(jié)果。 可強迫開發(fā)人員采用規(guī)范的方法嚴格地規(guī)定了每個階段必須提交的文檔, 這將使軟件開發(fā)設(shè)計變得相對容易一些。 由于是模塊化設(shè)計,單元編碼和測試,最后總裝,正使得系統(tǒng)具有了一 定的開放性。一者簡化了測試階段復(fù)雜度,另一方面也有利于軟件發(fā)布以后的 運行為階段完善性維護和適應(yīng)性維護。 劣勢:系統(tǒng)的開發(fā)過程完全由文檔驅(qū)動,同方案一相比,開發(fā)周期可能會 較長些。 確定:確定:從該系統(tǒng)的規(guī)模、應(yīng)用范圍、開發(fā)經(jīng)費消耗
11、和現(xiàn)實的開發(fā)意義等方面綜 合考慮,決定開發(fā)過程采用方案二進行。 四四 目標系統(tǒng)詳細設(shè)計目標系統(tǒng)詳細設(shè)計 說明:由于在開發(fā)過程中我主要負責(zé)數(shù)據(jù)庫模塊的設(shè)計,故接下來的內(nèi)容 將主要敘述數(shù)據(jù)庫模塊的詳細設(shè)計思路。 4.14.1 數(shù)據(jù)庫設(shè)計數(shù)據(jù)庫設(shè)計 根據(jù)第二章中圖 2-3 所示的 E-R 數(shù)據(jù)結(jié)構(gòu)示意圖設(shè)計了四個而為關(guān)系表,分 別是:學(xué)生基本信息表,如表 4-1 所示; 課程信息表,如表 4-2 所示; 學(xué)生成績表,如表 4-3 所示; 4.24.2 創(chuàng)建數(shù)據(jù)源并通過數(shù)據(jù)庫操作事務(wù)對象連接創(chuàng)建數(shù)據(jù)源并通過數(shù)據(jù)庫操作事務(wù)對象連接 總共創(chuàng)建兩個數(shù)據(jù)源:本地服務(wù)器數(shù)據(jù)源(用于本校日常管理) ,遠程數(shù)據(jù) 源
12、(用于上傳或下載數(shù)據(jù)) 。 采用 PowerBuilder 的初始化文件 PB.INI 文件,利用通用方式通過事務(wù)對象 連接數(shù)據(jù)源。連接的程序流程如圖 4-1 所示。 表 4-1 學(xué)生基本信息表定義 名稱數(shù)據(jù)類型字節(jié)大小可為空默認值備注 學(xué)號char10否主鍵 姓名char8否 身份證號char20否 性別char2否 聯(lián)系電話char11否 成績int4可Null 表 4-2 課程信息表定義 名稱數(shù)據(jù)類型字節(jié)大小可為空默認值備注 課程名稱Char3否主鍵,外鍵 考題Char50可 考試成績int 4否 表 4-3 學(xué)生成績表定義 名稱數(shù)據(jù)類型字節(jié)大小可為空默認值備注 學(xué)生用戶名Char6否主
13、鍵,外鍵 課程名稱Char3否主鍵,外鍵 成績Float8可 表 4.1 的數(shù)據(jù)庫操作語句: create table Student( Sno varchar(10) primary key, Sname Varchar(8), Snum Varchar(20), Ssex varchar(2), Stel Varchar(11), Spoint Varint(4) ) ; 表 4.2 的數(shù)據(jù)庫操作語句: create table Course( Cname Varchar(8), primary key, Ctitle Varchar(50), Cpoint Varint(4) ) ; 表
14、 4.3 的數(shù)據(jù)庫操作語句: create table SC( SCno varchar(10) primary key, SCname Varchar(8), SCpoint Varchar(10) ) ; 4.34.3 創(chuàng)建前臺控件與數(shù)據(jù)源間數(shù)據(jù)傳輸?shù)臄?shù)據(jù)窗口對象和查詢對象創(chuàng)建前臺控件與數(shù)據(jù)源間數(shù)據(jù)傳輸?shù)臄?shù)據(jù)窗口對象和查詢對象 d_cjupdata:存儲過程類數(shù)據(jù)窗口對象,用于錄入、修改、刪除學(xué)生成績表 中的記錄; d_kc:sql 類數(shù)據(jù)窗口對象,用于通過課程號參數(shù)查詢課程表中的對應(yīng)記錄; d_kcpudata:quickSelect 類型數(shù)據(jù)窗口對象,用于錄入、修改、刪除課程表 中的記
15、錄; d_stuupdata:quickSelect 類型數(shù)據(jù)窗口對象,用于錄入、修改、刪除學(xué)生 基本信息表中的記錄; d_score:sql 類數(shù)據(jù)窗口對象,用于通過學(xué)號參數(shù)查詢學(xué)生成績表中的相應(yīng) 記錄; d_xs:sql 類數(shù)據(jù)窗口對象,用于通過學(xué)號參數(shù)查詢學(xué)生基本信息表中的相 應(yīng)記錄; query_xs:查詢對象,與 d_xs 搭配使用; query_kc: 查詢對象,與 d_kc 搭配使用; query_xs_xscj: 查詢對象,與 d_score 搭配使用; 圖 4-1 通過事務(wù)對象連接數(shù)據(jù)源程序流程示意圖 4.34.3 創(chuàng)建數(shù)據(jù)管道創(chuàng)建數(shù)據(jù)管道 表結(jié)構(gòu)定義時曾強調(diào),表名、列名、類
16、型、寬度、Null 值等一經(jīng)確定,便 難以修改。要更改表的這些屬性,只有利用數(shù)據(jù)管道。此外我們還經(jīng)常要復(fù)制 表的結(jié)構(gòu)及表中部分后全部數(shù)據(jù)、講一個表中數(shù)據(jù)加到另一個表中去(即使兩 個表的結(jié)構(gòu)不一樣),還有講一個數(shù)據(jù)庫中的表復(fù)制到另一個數(shù)據(jù)庫(可能是兩 個不同類型的數(shù)據(jù)庫包括服務(wù)器和本地庫) 。數(shù)據(jù)管道都能滿足這些要求。具體 創(chuàng)建使用程序流程如圖 4-2 所示。 圖 4-2 數(shù)據(jù)管道創(chuàng)建和使用程序流程示意圖 五五 系統(tǒng)編碼系統(tǒng)編碼 5.1C+主程序源代碼主程序源代碼 系統(tǒng)實現(xiàn)的主程序 / ExamOnline.cpp : Defines the class behaviors for the ap
17、plication. / #include stdafx.h #include ExamOnline.h #include ExamOnlineDlg.h #include LOGIN.h #include Back.h #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE = _FILE_; #endif / CExamOnlineApp BEGIN_MESSAGE_MAP(CExamOnlineApp, CWinApp) /AFX_MSG_MAP(CExamOnlineApp) / NOTE -
18、 the ClassWizard will add and remove mapping macros here. / DO NOT EDIT what you see in these blocks of generated code! /AFX_MSG ON_COMMAND(ID_HELP, CWinApp:OnHelp) END_MESSAGE_MAP() / CExamOnlineApp construction CExamOnlineApp:CExamOnlineApp() / TODO: add construction code here, / Place all signifi
19、cant initialization in InitInstance / The one and only CExamOnlineApp object CExamOnlineApp theApp; / CExamOnlineApp initialization BOOL CExamOnlineApp:InitInstance() AfxEnableControlContainer(); :CoInitialize(NULL); / Standard initialization / If you are not using these features and wish to reduce
20、the size / of your final executable, you should remove from the following / the specific initialization routines you do not need. #ifdef _AFXDLL Enable3dControls();/ Call this when using MFC in a shared DLL #else Enable3dControlsStatic();/ Call this when linking to MFC statically #endif /CBack dlg;
21、/dlg.DoModal(); CLOGIN logindlg; if(logindlg.DoModal()=IDOK) CString Name; Name=logindlg.m_UserName; CString sql=select * from register where username=+Name+; m_AdoConn.OnInitADOConn(); m_pRs=m_AdoConn.GetRecordSet(_bstr_t)sql); studentid=atoi(char*)(_bstr_t)m_pRs-GetCollect(studentid); CExamOnlineD
22、lg dlg; m_pMainWnd = dlg.DoModal(); /int nResponse = dlg.DoModal(); /if (nResponse = IDOK) / TODO: Place code here to handle when the dialog is / dismissed with OK /else if (nResponse = IDCANCEL) / TODO: Place code here to handle when the dialog is / dismissed with Cancel :CoUninitialize(); / Since
23、the dialog has been closed, return FALSE so that we exit the / application, rather than start the applications message pump. return FALSE; 5.2.AddSubject 代碼代碼 添加部件(其他功能類似) / ExamOnline.cpp : Defines the class behaviors for the application. / #include stdafx.h #include ExamOnline.h #include ExamOnlin
24、eDlg.h #include LOGIN.h #include Back.h #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE = _FILE_; #endif / CExamOnlineApp BEGIN_MESSAGE_MAP(CExamOnlineApp, CWinApp) /AFX_MSG_MAP(CExamOnlineApp) / NOTE - the ClassWizard will add and remove mapping macros here. / DO NOT EDIT
25、 what you see in these blocks of generated code! /AFX_MSG ON_COMMAND(ID_HELP, CWinApp:OnHelp) END_MESSAGE_MAP() / CExamOnlineApp construction CExamOnlineApp:CExamOnlineApp() / TODO: add construction code here, / Place all significant initialization in InitInstance / The one and only CExamOnlineApp o
26、bject CExamOnlineApp theApp; / CExamOnlineApp initialization BOOL CExamOnlineApp:InitInstance() AfxEnableControlContainer(); :CoInitialize(NULL); / Standard initialization / If you are not using these features and wish to reduce the size / of your final executable, you should remove from the followi
27、ng / the specific initialization routines you do not need. #ifdef _AFXDLL Enable3dControls();/ Call this when using MFC in a shared DLL #else Enable3dControlsStatic();/ Call this when linking to MFC statically #endif /CBack dlg; /dlg.DoModal(); CLOGIN logindlg; if(logindlg.DoModal()=IDOK) CString Na
28、me; Name=logindlg.m_UserName; CString sql=select * from register where username=+Name+; m_AdoConn.OnInitADOConn(); m_pRs=m_AdoConn.GetRecordSet(_bstr_t)sql); studentid=atoi(char*)(_bstr_t)m_pRs-GetCollect(studentid); CExamOnlineDlg dlg; m_pMainWnd = dlg.DoModal(); /int nResponse = dlg.DoModal(); /if
29、 (nResponse = IDOK) / TODO: Place code here to handle when the dialog is / dismissed with OK /else if (nResponse = IDCANCEL) / TODO: Place code here to handle when the dialog is / dismissed with Cancel :CoUninitialize(); / Since the dialog has been closed, return FALSE so that we exit the / applicat
30、ion, rather than start the applications message pump. return FALSE; 5.3ExamInfo 學(xué)生考試科目,成績的錄入,保存 / ExamInfo.cpp : implementation file / #include stdafx.h #include ExamOnline.h #include ExamInfo.h #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE = _FILE_; #endif extern CExamO
31、nlineApp theApp; / CExamInfo dialog CExamInfo:CExamInfo(CWnd* pParent /*=NULL*/) : CDialog(CExamInfo:IDD, pParent) /AFX_DATA_INIT(CExamInfo) / NOTE: the ClassWizard will add member initialization here /AFX_DATA_INIT void CExamInfo:DoDataExchange(CDataExchange* pDX) CDialog:DoDataExchange(pDX); /AFX_
32、DATA_MAP(CExamInfo) DDX_Control(pDX, IDC_SUBJECTCOMBO, m_SubjectCombo); /AFX_DATA_MAP BEGIN_MESSAGE_MAP(CExamInfo, CDialog) /AFX_MSG_MAP(CExamInfo) ON_BN_CLICKED(IDC_BUTTON_OK, OnButtonOk) ON_BN_CLICKED(IDC_BUTTON_CANCEL, OnButtonCancel) /AFX_MSG_MAP END_MESSAGE_MAP() / CExamInfo message handlers BO
33、OL CExamInfo:OnInitDialog() CDialog:OnInitDialog(); m_AdoConn.OnInitADOConn(); CString sql=select* from subject; m_pRs=m_AdoConn.GetRecordSet(_bstr_t)sql); while(m_pRs-adoEOF=0) CString subject=(char*)(_bstr_t)m_pRs-GetCollect(subjectname); m_SubjectCombo.AddString(subject); m_pRs-MoveNext(); m_AdoC
34、onn.ExitConn(); return TRUE; / return TRUE unless you set the focus to a control / EXCEPTION: OCX Property Pages should return FALSE void CExamInfo:OnButtonOk() UpdateData(); if(m_SubjectCombo.GetCurSel()=-1) AfxMessageBox(請選擇科目); return; int studentid=theApp.studentid; m_SubjectCombo.GetLBText(m_Su
35、bjectCombo.GetCurSel(),Subject); m_AdoConn.OnInitADOConn(); CString sql; sql.Format(select * from result where studentid=%d and Subject=%s ,studentid,Subject); m_pRs=m_AdoConn.GetRecordSet(_bstr_t)sql); if(m_pRs-adoEOF) sql=select * from subject where subjectname=+Subject+; m_pRs=m_AdoConn.GetRecord
36、Set(_bstr_t)sql); Sid=atoi(char*)(_bstr_t)m_pRs-GetCollect(subjectid); sql.Format(select *from test where subjectid=%d order by testid,Sid); m_pRs=m_AdoConn.GetRecordSet(_bstr_t)sql); Question=(char*)(_bstr_t)m_pRs-GetCollect(question); CDialog:OnOK(); else MessageBox(該考生以進行過本科目的考試); m_AdoConn.ExitC
37、onn(); void CExamInfo:OnButtonCancel() CDialog:OnCancel(); void CExamInfo:OnOK() OnButtonOk(); 5.4.TestResult 判斷考生做題是否正確的部件,正確便加分。 / TestResult.cpp : implementation file / #include stdafx.h #include ExamOnline.h #include TestResult.h #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char T
38、HIS_FILE = _FILE_; #endif / CTestResult dialog extern CExamOnlineApp theApp; CTestResult:CTestResult(CWnd* pParent /*=NULL*/) : CDialog(CTestResult:IDD, pParent) /AFX_DATA_INIT(CTestResult) / NOTE: the ClassWizard will add member initialization here /AFX_DATA_INIT void CTestResult:DoDataExchange(CDa
39、taExchange* pDX) CDialog:DoDataExchange(pDX); /AFX_DATA_MAP(CTestResult) DDX_Control(pDX, IDC_RESULTLIST, m_ResultList); /AFX_DATA_MAP BEGIN_MESSAGE_MAP(CTestResult, CDialog) /AFX_MSG_MAP(CTestResult) ON_BN_CLICKED(IDC_CANCEL, OnCancel) /AFX_MSG_MAP END_MESSAGE_MAP() / CTestResult message handlers B
40、OOL CTestResult:OnInitDialog() CDialog:OnInitDialog(); m_ResultList.SetExtendedStyle(LVS_EX_FLATSB|LVS_EX_FULLROWSELECT|LVS_E X_GRIDLINES|LVS_EX_HEADERDRAGDROP|LVS_EX_ONECLICKACTIVATE); m_ResultList.InsertColumn(0,題號,LVCFMT_CENTER,200,0); m_ResultList.InsertColumn(1,結(jié)果,LVCFMT_CENTER,200,1); m_AdoCon
41、n.OnInitADOConn(); CString sql=select*from examminginfo; m_pRs=m_AdoConn.GetRecordSet(_bstr_t)sql); int i=0; int sum=0; while(m_pRs-adoEOF=0) CString num=(char*)(_bstr_t)m_pRs-GetCollect(testnum); CString result=(char*)(_bstr_t)m_pRs-GetCollect(totle); m_ResultList.InsertItem(i,); m_ResultList.SetIt
42、emText(i,0,num); if(result=0) m_ResultList.SetItemText(i,1,錯誤); else m_ResultList.SetItemText(i,1,正確); i+; sum+=atoi(result); m_pRs-MoveNext(); CString str; str.Format(%d,sum); m_ResultList.InsertItem(i,); m_ResultList.SetItemText(i,0,總分:); m_ResultList.SetItemText(i,1,str+分); CTime time; time=CTime
43、:GetCurrentTime(); CString Tstr=time.Format(%m 月%d 日%H:%M); sql=update result set closetime=+Tstr+,totle=+str+ where starttime=+TimeStr+; m_AdoConn.ExecuteSQL(_bstr_t)sql); m_AdoConn.ExitConn(); return TRUE; / return TRUE unless you set the focus to a control / EXCEPTION: OCX Property Pages should r
44、eturn FALSE void CTestResult:OnCancel() CString sql; sql.Format(delete from examminginfo); m_AdoConn.OnInitADOConn(); m_AdoConn.ExecuteSQL(_bstr_t)sql); m_AdoConn.m_pCon-Close(); CDialog:OnCancel(); 六六 測試測試 6.16.1 單元模塊測試與分析單元模塊測試與分析 (1)數(shù)據(jù)操作測試:由于該單元的錄入、修改、查詢、刪除和更新這些操作的 控制均由后臺數(shù)據(jù)庫系統(tǒng)管理,而后臺數(shù)據(jù)庫系統(tǒng)采用的是 Microsoft 發(fā)布的成 熟系統(tǒng),故可能出問題主要發(fā)生在前臺向后臺傳送操作參數(shù)過程中,而
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度智慧社區(qū)建設(shè)與運營管理合同-@-1
- 2025年度建筑外墻涂料施工節(jié)能改造工程合同
- 2025年度地下綜合管廊工程設(shè)計合同范本
- 2025年度教育培訓(xùn)學(xué)校教師培訓(xùn)合同協(xié)議書
- 2025年度專業(yè)潛水員雇傭合同(含潛水設(shè)備維護)
- 2025年度數(shù)字貨幣交易系統(tǒng)開發(fā)合同
- 2025年度水暖工程安全質(zhì)量保證合同
- 2025年度汽車租賃市場拓展與合作伙伴招募合同
- 2025年度建筑企業(yè)資質(zhì)股權(quán)轉(zhuǎn)讓居間代理合同范本
- 2025年度船舶租賃與港口使用權(quán)租賃合同
- 2024年浙江省公務(wù)員錄用考試《行測》題(A類)
- 2024版《安全生產(chǎn)法》考試題庫附答案(共90題)
- 《化工設(shè)備機械基礎(chǔ)(第8版)》完整全套教學(xué)課件
- 疥瘡病人的護理
- 2024年江西省中考英語試題含解析
- 公務(wù)員2012年國考《申論》真題卷及答案(地市級)
- 跨學(xué)科實踐活動2 制作模型并展示科學(xué)家探索物質(zhì)組成與結(jié)構(gòu)的歷程(分層作業(yè))-九年級化學(xué)上冊同步高效課堂(人教版2024)(解析版)
- 新員工三級安全教育考試試題參考答案
- 35kV輸變電工程(變電站、輸配電線路建設(shè))技術(shù)方案
- 數(shù)學(xué)史簡介課件可編輯全文
- 化學(xué)廢水水池清理施工方案
評論
0/150
提交評論