高級數(shù)據(jù)庫技術(shù)課程設(shè)計報告_第1頁
高級數(shù)據(jù)庫技術(shù)課程設(shè)計報告_第2頁
高級數(shù)據(jù)庫技術(shù)課程設(shè)計報告_第3頁
高級數(shù)據(jù)庫技術(shù)課程設(shè)計報告_第4頁
高級數(shù)據(jù)庫技術(shù)課程設(shè)計報告_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

目錄TOC\o"1-3"\h\u107841.設(shè)計目的和任務(wù) 1195552.開發(fā)環(huán)境 1309452.1硬件環(huán)境 1262432.2軟件環(huán)境 1321193.設(shè)計題目 1116443.1題目名稱 1167633.2題目詳細(xì)描述 1208073.3功能要求 2222034.相關(guān)技術(shù)及知識點 380094.1SqlConnection對象 352624.2SqlCommand對象 3314574.3SqlDataAdapter對象 473504.4DataTable對象 48254.5DataSet對象 5195495.設(shè)計與實現(xiàn) 663575.1登錄界面 686915.2教師管理界面 7185535.3管理員管理界面 1299705.4學(xué)生考試界面 1436756.總結(jié) 1894287.參考資料 19《高級數(shù)據(jù)庫技術(shù)(ADO.NET&XML)》課程設(shè)計報告-《高級數(shù)據(jù)庫技術(shù)(ADO.NET&XML)》課程設(shè)計報告-設(shè)計目的和任務(wù)綜合運用ADO.NET相關(guān)知識,設(shè)計一個具有實用價值的學(xué)生考試管理系統(tǒng)。(1)鞏固和加深對本課程基本知識的理解和掌握;(2)掌握C#編程和ADO.NET程序調(diào)試的基本技能;(3)掌握設(shè)計ADO.NET應(yīng)用軟件的基本思路和方法;(4)提高運用ADO.NET解決實際問題的能力;(5)培養(yǎng)撰寫設(shè)計報告的能力。2.開發(fā)環(huán)境2.1硬件環(huán)境筆記本電腦硬件概要CPU 英特爾GenuineIntel(R)CPUT2130@1.86GHz主板 Wistron-英特爾945PM(Calistoga-PM)+ICH7-M/U內(nèi)存 金士頓2GDDR2-SDRAM666MHz顯卡 nVIDIAGeForceGo7200(G72)主硬盤 希捷120GB聲卡 英特爾82801GBICH7-HighDefinitionAudio[B0]網(wǎng)卡 英特爾PRO/Wireless3945ABGNetworkConnection(HP-RoW)2.2軟件環(huán)境MicrosoftWindowsXP操作系統(tǒng);MicrosoftSQLServer2005;MicrosoftVisualStudio2005;3.設(shè)計題目3.1題目名稱學(xué)生考試管理系統(tǒng)3.2題目詳細(xì)描述1、登錄界面2)在線答題。功能:可以選擇已激活試卷答題。在線評分。保存考試成績可供教師查詢。4.相關(guān)技術(shù)及知識點ADO.NET提供了多種對象模型,比較典型的以下有五種,它們?nèi)繗w類System.Data.SqlClient名稱空間下。4.1SqlConnection對象ADO.NET使用SqlConnection對象與SQLServer進(jìn)行連接。連接字符串的常用形式有兩種:1.使用Windows集成安全身份認(rèn)證,例如:stringconnectionString="IntegratedSecurity=SSPI;Database=MySchool.mdf;Server=localhost;";2.在連接字符串中指定服務(wù)器名、用戶id、用戶口令、數(shù)據(jù)庫名等信息。例如:stringconnectionString="server=localhost;uid=sa;pwd=123;database=MySchool.mdf";然后通過連接字符串直接創(chuàng)建SqlConnection對象,如SqlConnectionconn=newSqlConnection(connectionString);4.2SqlCommand對象在ADO.NET中,有兩種操作數(shù)據(jù)庫的方式:1.無連接的方式;2.保持連接的方式。不論哪種都可以通過SqlCommand對象提供的方法傳遞對數(shù)據(jù)庫操作的命令,并返回命令執(zhí)行結(jié)果。在保持連接的方式下操作數(shù)據(jù)庫的一般步驟為:1.創(chuàng)建SqlConnection的實例;2.創(chuàng)建SqlCommand的實例;3.打開連接;4.執(zhí)行命令;5.關(guān)閉連接。SqlCommand對象提供了多種完成對數(shù)據(jù)庫操作的方法。常用有:1.ExecuteNonQuery該方法執(zhí)行SQL語句的結(jié)果,但不返回命令執(zhí)行的表數(shù)據(jù),僅返回操作所影響的行數(shù)。2.ExecuteReaderExecuteReader方法提供了只向前的、順序的快速讀取數(shù)據(jù)庫中數(shù)據(jù)的方法。3.ExecuteScaler()該方法用于執(zhí)行SELECT查詢,得到的返回結(jié)果為一個值的情況,比如使用count函數(shù)求表中記錄個數(shù)或者使用sum函數(shù)求和等。4.3SqlDataAdapter對象SqlDataAdapter對象通過無連接的方式完成數(shù)據(jù)庫和本地DataSet之間的交互。使用這種方式操作數(shù)據(jù)庫的一般步驟為:1.創(chuàng)建SqlConnection的實例;2.創(chuàng)建SqlDataAdapter的實例,需要的話,根據(jù)select語句生成其他SQL語句;3.創(chuàng)建DataSet的實例;4.使用Fill方法將數(shù)據(jù)庫中的表填充到DataSet的表中;5.利用DataGridView或者其他控件對象編輯或顯示數(shù)據(jù);6.需要的話,使用Update方法更新數(shù)據(jù)庫。SqlDataAdapter對象通過SelectCommand、InsertCommand、UpdateCommand和DeleteCommand屬性為后臺數(shù)據(jù)庫提供對應(yīng)的操作命令,并傳遞需要的參數(shù)。一般情況下,只需要提供SELECT語句和連接字符串創(chuàng)建SqlDataAdapter對象,然后利用SqlCommandBuilder對象生成InsertCommand、UpdateCommand和DeleteCommand屬性。4.4DataTable對象ADO.NET可以在與數(shù)據(jù)庫斷開連接的方式下通過DataSet或DataTable對象進(jìn)行數(shù)據(jù)處理,當(dāng)需要更新數(shù)據(jù)時才重新與數(shù)據(jù)源進(jìn)行連接,并更新數(shù)據(jù)源。DataTable對象表示保存在本機(jī)內(nèi)存中的表,它提供了對表中行列數(shù)據(jù)對象的各種操作。可以直接將數(shù)據(jù)從數(shù)據(jù)庫填充到DataTable對象中,也可以將DataTable對象添加到現(xiàn)有的DataSet對象中。在斷開連接的方式下,DataSet對象提供了和關(guān)系數(shù)據(jù)庫一樣的關(guān)系數(shù)據(jù)模型,代碼中可以直接訪問DataSet對象中的DataTable對象,也可以添加、刪除DataTable對象。1.創(chuàng)建DataTable對象可以通過以下兩種方式創(chuàng)建DataTable對象:1)通過DataTable類的構(gòu)造函數(shù)創(chuàng)建DataTable對象,例如:DataTabletable=newDataTable();2)通過DataSet的Tables對象的Add方法創(chuàng)建DataTable對象,例如:DataSetdataset=newDataSet();DataTabletable=dataset.Tables.Add("MyTableName");2.在DataTable對象中添加列在DataTable對象中添加列的最常用的方法是通過DataTable對象的Column屬性中的Add方法。添加后的每一列都是一個DataColumn對象。3.設(shè)置DataTable對象的主鍵關(guān)系數(shù)據(jù)庫中的表一般都有一個主鍵,用來惟一標(biāo)識表中的每一行記錄。通過DataTable對象的PrimaryKey屬性可以設(shè)置Datatable的主鍵。主鍵可以是一個或者多個DataColumn對象組成的數(shù)組。例如:DataColumn[]key=newDataColumn[1];//dt是一個DataTable對象key[0]=dt.Columns[0];dt.PrimaryKey=key;4.在DataTable對象中創(chuàng)建行DataTable對象的每一行都是一個DataRow對象,所以創(chuàng)建行時可以先利用DataTable對象的NewRow方法創(chuàng)建一個DataRow對象,并設(shè)置新行中各列的數(shù)據(jù),然后利用Add方法將DataRow對象添加到表中5.將SQLServer數(shù)據(jù)庫中的表填充到DataTable中除了可以直接創(chuàng)建DataTable對象的行列信息外,也可以通過DateAdapter對象的Fill方法將SQLServer數(shù)據(jù)庫中的表填充到DataTable對象中。4.5DataSet對象1.創(chuàng)建DataSet對象使用創(chuàng)建的DataSet對象可以完成各種數(shù)據(jù)操作,利用向?qū)傻臄?shù)據(jù)庫數(shù)據(jù)源是一個強類型的DataSet以及一對或多對強類型的DataTable和TableAdapter的組合。類型化的DataSet是一個生成的類,是從.NETFramework的一般DataSet類衍生來的,但提供了已定義的架構(gòu)以及特定于該架構(gòu)的屬性和方法。同時,對于DataSet中的每個表,還生成了特定于該DataSet的附加衍生類,而且每個類都為相關(guān)的表提供了特定的架構(gòu)、屬性和方法。當(dāng)然,也可以直接創(chuàng)建一般的DataSet對象,例如:DataSetmyDataset=newDataSet();2.填充DataSet對象創(chuàng)建DataSet后,就可以使用SqlDataAdapter對象把數(shù)據(jù)導(dǎo)入到DataSet對象中,比如通過Fill方法將數(shù)據(jù)填充到DataSet中的某個表中。5.設(shè)計與實現(xiàn)(包括每個設(shè)計點的文字描述,圖表,關(guān)鍵代碼)(該說明在最終報告里面要刪除!)5.1登錄界面在登錄界面(圖5-1)用戶對應(yīng)相應(yīng)的權(quán)限選擇用戶類型進(jìn)行登錄,分教員、學(xué)生、管理員。登錄后根據(jù)選擇的權(quán)限進(jìn)入相應(yīng)的界面。輸入用戶名框非空,密碼框非空,權(quán)限選擇判斷;登錄界面還有新用戶注冊,同樣是選擇不同用戶類型進(jìn)行注冊。注冊后需管理員激活才能登錄。還有一個就是找回密碼,用戶通過輸入用戶名和姓名等信息找回密碼。圖5-1登錄界面代碼:if(ValidateInput())//驗證輸入成功{stringmessage="";//驗證輸入的密碼if(loginBll.ValidateUser(txtLoginId.Text.Trim(),txtLoginPwd.Text,cboLoginType.Text,refmessage)){//記錄登錄用戶名和登錄類型UserHelper.loginId=txtLoginId.Text;UserHelper.loginType=cboLoginType.Text;if(cboLoginType.Text=="教師"){//創(chuàng)建教員主窗體對象TeacherFormteacherForm=newTeacherForm();//顯示窗體teacherForm.Show();}elseif(cboLoginType.Text=="學(xué)生"){StudentFormstudentForm=newStudentForm();studentForm.Show();}else{AdminFormadminForm=newAdminForm();adminForm.Show();}//登錄窗體隱藏this.Visible=false;}5.2教師管理界面在教師管理界面(圖5-2)中有以下菜單和按鈕:*選擇題目(圖5-3):右鍵選擇題目加入到新建的試卷中;*成績管理(圖5-4)選擇不同的試卷進(jìn)行查詢,讀取數(shù)據(jù)到DataSet,然后用DataSet中數(shù)據(jù)計算該試卷的平均分;也可以直接修改DataSet中表的數(shù)據(jù),然后保存。增加試題:先輸入好題目,然后提交,將數(shù)據(jù)插入數(shù)據(jù)庫中;還有一些其它的功能,查詢試題:按科目查詢試題;試題管理:按難度查詢試題列表,并可增加、修改試題。試題列表,按難度查詢試題列表,并可增加、修改試題然后保存,將數(shù)據(jù)保存到數(shù)據(jù)庫;圖5-2圖5-3圖5-4教師管理界面代碼://點擊時,打開新增試題窗體privatevoidtsmiAddQuestion_Click(objectsender,EventArgse){//創(chuàng)建窗體對象AddQuestionFormaddQuestionForm=newAddQuestionForm();//設(shè)置MDI主窗體addQuestionForm.MdiParent=this;//顯示窗體addQuestionForm.Show();}//點擊菜單中的“幫助”->”關(guān)于”,以模式窗口顯示About窗體privatevoidtsmiAbout_Click(objectsender,EventArgse){AboutFormaboutForm=newAboutForm();aboutForm.MdiParent=this;aboutForm.Show();//以模式窗口顯示}//窗體加載事件處理privatevoidTeacherForm_Load(objectsender,EventArgse){//設(shè)置狀態(tài)欄標(biāo)簽顯示的文字lblTeacher.Text=string.Format("教員{0}登錄了!",UserHelper.loginId);}privatevoidTeacherForm_FormClosed(objectsender,FormClosedEventArgse){Application.Exit();}privatevoidbtnSearchQuestion_Click(objectsender,EventArgse){CheckTitlesCT=newCheckTitles();CT.Show();}privatevoidbtnQuestionList_Click(objectsender,EventArgse){//創(chuàng)建窗體對象TestListtForm=newTestList();//設(shè)置MDI主窗體tForm.MdiParent=this;//顯示窗體tForm.Show();}選擇題目代碼://選擇題目窗口privatevoidTestList_Load(objectsender,EventArgse){dataSet=getDataSetBll.GetAllQuestion(refdataAdapter);dataSet2=getDataSetBll.GetSelectedQuestion(refdataAdapter2,ExamId);dgvTest.DataSource=dataSet.Tables["Question"];txtExamName.Text=CreateTestForm.ExamName;ExamId=CreateTestForm.ExamId;}//刷新privatevoidbutton1_Click_1(objectsender,EventArgse){dataSet.Tables["Question"].Clear();dgvTest.DataSource=getDataSetBll.GetQuestionByDifficulty(cboDifficulty.Text.Trim(),refdataAdapter);}//將選中的題目加入試卷中privatevoidtsmAddQuestion_Click(objectsender,EventArgse){stringmessage="";intsum=dgvTest.SelectedCells.Count;for(inti=0;i<sum;i++){stringQuestionId=dgvTest.SelectedCells[i].Value.ToString();message=createTestBll.AddQuestion(ExamId,QuestionId,refExamSum);}txtExamSum.Text=ExamSum.ToString();MessageBox.Show(message);}//將選中的題目從試卷中刪除privatevoidtsmDeleteQuestion_Click(objectsender,EventArgse){stringmessage="";intsum=dgvTest.SelectedCells.Count;for(inti=0;i<sum;i++){stringQuestionId=dgvTest.SelectedCells[i].Value.ToString();message=createTestBll.DeleteQuestion(ExamId,QuestionId,refExamSum);}txtExamSum.Text=ExamSum.ToString();MessageBox.Show(message);}//已選擇題目列表privatevoidbtn_Click(objectsender,EventArgse){dataSet2.Tables["Question"].Clear();dataSet2=getDataSetBll.GetSelectedQuestion(refdataAdapter2,ExamId);dgvSelectedQuestion.DataSource=dataSet2.Tables["Question"];}privatevoidbutton3_Click(objectsender,EventArgse){this.Close();}成績管理代碼://成績管理的窗口privatevoidTestGradeManageForm_Load(objectsender,EventArgse){ExamId=cboExamId.Text.ToString();dataSet=getDataSetBll.GetScore(refdataAdapter,ExamId);//加載examIdforeach(DataRowrowindataSet.Tables["Score"].Rows){foreach(stringitemincboExamId.Items){if(item.ToString().Equals(row["examId"].ToString()))gotocon;}cboExamId.Items.Add(row["examId"].ToString());con:;}dgvScore.DataSource=dataSet.Tables["Score"];}privatevoidbtnSearch_Click(objectsender,EventArgse){//查詢成績ExamId=cboExamId.Text.ToString();dataSet.Tables["Score"].Clear();dataSet=getDataSetBll.GetScore(refdataAdapter,ExamId);dgvScore.DataSource=dataSet.Tables["Score"];intsum=0,i=0,avgScore=0;foreach(DataRowrowindataSet.Tables["Score"].Rows){sum+=int.Parse(row["scorevalue"].ToString());i++;}if(i!=0)avgScore=sum/i;txtAvgScore.Text=avgScore.ToString();}//刷新privatevoidbtnRefresh_Click(objectsender,EventArgse){dataSet.Tables["Score"].Clear();dataSet=getDataSetBll.GetScore(refdataAdapter,ExamId);}//保存privatevoidbtnSave_Click(objectsender,EventArgse){DialogResultresult=MessageBox.Show("確定");if(result==DialogResult.OK){SqlCommandBuilderbuilder=newSqlCommandBuilder(dataAdapter);dataAdapter.Update(dataSet,"Score");}}5.3管理員管理界面管理員管理界面(圖5-5):通過選擇不同的菜單和按鈕進(jìn)入不同的界面,用戶管理,其中有新建用戶(新學(xué)員用戶,新建教員用戶)。查詢及修改學(xué)員(圖5-6):用DataSet讀取數(shù)據(jù)到DataGridView。用戶信息列表,包括查詢以及教員學(xué)員信息。題庫管理,管理試題庫。圖5-5圖5-6學(xué)員信息界面代碼://學(xué)員窗口privatevoidTestList_Load(objectsender,EventArgse){dataSet=StudentListBll.GetAllQuestion(refdataAdapter);dgvTest.DataSource=dataSet.Tables["Student"];}//刷新privatevoidbutton1_Click(objectsender,EventArgse){dataSet.Tables["Student"].Clear();dataAdapter.Fill(dataSet,"Student");}//保存privatevoidbutton2_Click(objectsender,EventArgse){DialogResultresult=MessageBox.Show("確定");if(result==DialogResult.OK){SqlCommandBuilderbuilder=newSqlCommandBuilder(dataAdapter);dataAdapter.Update(dataSet,"Student");}}//按性別查詢privatevoidcboDifficulty_SelectedIndexChanged(objectsender,EventArgse){dataSet.Tables["Student"].Clear();dgvTest.DataSource=StudentListBll.GetQuestionByDifficulty(cboDifficulty.Text.Trim(),refdataAdapter);}privatevoidbutton3_Click(objectsender,EventArgse){this.Close();}5.4學(xué)生考試界面學(xué)生在線考試界面(圖5-8):通過選擇不同的菜單和按鈕進(jìn)入不同的界面:在線答題界面(圖5-9):可以選擇已激活試卷答題。還有維護(hù)個人信息:對個人信息進(jìn)行查詢,修改;在線評分。保存考試成績可供教師查詢。圖5-8圖5-9學(xué)生在線考試界面代碼:publicpartialclassStudentForm:Form{publicStudentForm(){InitializeComponent();}privatevoidtsbOnlineAnswer_Click(objectsender,EventArgse){SelectExamFormsExamForm=newSelectExamForm();sExamForm.MdiParent=this;sExamForm.Show();}privatevoidtsbOnlineAnswer_Click(objectsender,EventArgse){AnswerQuestionFormaQuestionForm=newAnswerQuestionForm();aQuestionForm.MdiParent=this;aQuestionForm.Show();}回答問題界面代碼://“答題卡”按鈕privatevoidbtnAnswerCard_Click(objectsender,EventArgse){AnswerCardFormanswerCardForm=newAnswerCardForm();answerCardForm.Show();}//窗體加載事件privatevoidAnswerQuestionForm_Load(objectsender,EventArgse){dataSet=getDataSetBll.ExamLoad(refdataAdapter,refExamId);//將題目放入strExam中foreach(DataRowrowindataSet.Tables["Question"].Rows){strExam[j,0]=row["Question"].ToString();strExam[j,1]=row["OptionA"].ToString();strExam[j,2]=row["OptionB"].ToString();strExam[j,3]=row["OptionC"].ToString();strExam[j,4]=row["OptionD"].ToString();strExam[j,5]=row["Answer"].ToString();j++;}lblQuestion.Text+=Convert.ToString(questionIndex+1);DisplayQuestion(questionIndex);}//顯示題目及選項publicvoidDisplayQuestion(inti){txtQuestion.Text=strExam[i,0];rdoA.Text=rdoA.Text+strExam[i,1];rdoB.Text=rdoB.Text+strExam[i,2];rdoC.Text=rdoC.Text+strExam[i,3];rdoD.Text=rdoD.Text+strExam[i,4];}//“下一題”按鈕事件,為studentAnswers數(shù)組賦值privatevoidbtnNext_Click(objectsender,EventArgse){lblQuestion.Text="問題";rdoA.Text="A.";rdoB.Text="B.";rdoC.Text="C.";rdoD.Text="D.";if(questionIndex<QuizHelper.questionNum){QuizHelper.studentAnswers[questionIndex]=GetStudentAnswer();}questionIndex++;rdoA.Checked=false;rdoB.Checked=false;rdoC.Checked=false;rdoD.Checked=false;if(questionIndex>j-1){MessageBox.Show("試題已答完,你可以點擊<答題卡>按鈕進(jìn)行查看","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);return;}lblQuestion.Text+=Convert.ToString(questionIndex+1);DisplayQuestion(questionIndex);}//記時器控件的Tick事件privatevoidtmrCostTime_Tick(objectsender,EventArgse){intminute;intsecond;if(QuizHelper.remainSeconds>0){QuizHelper.remainSeconds--;minute=QuizHelper.remainSeconds/60;second=QuizHelper.remainSeconds%60;lblTimer.Text=string.Format("{0:00}:{1:00}",minute,second);}else{tmrCostTime.Stop();MessageBox.Show("時間到了,該交卷了!","提示",MessageBoxButtons.OK,MessageBoxIcon.Warning);QuizResultFormquizResultForm=newQuizResultForm();quizResultForm.MdiParent=this.MdiParent;quizResultForm.Show();this.Close();}}//判斷用戶選擇的答案publ

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論