版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
實(shí)驗(yàn)七:數(shù)據(jù)庫使用系統(tǒng)開發(fā)(綜合性實(shí)驗(yàn))一、指導(dǎo)思想培養(yǎng)學(xué)生利用所學(xué)的數(shù)據(jù)庫原理及使用的知識,選擇某一編程工具,進(jìn)行數(shù)據(jù)庫使用系統(tǒng)的開發(fā);培養(yǎng)學(xué)生獨(dú)立思考問題、解決問題的能力和學(xué)生計(jì)算機(jī)使用編程的能力。二、實(shí)驗(yàn)?zāi)康募耙笠髮W(xué)生選擇一種開發(fā)工具(如 ,e等),利用前面設(shè)計(jì)的數(shù)據(jù)庫,建立一個(gè)基于或結(jié)構(gòu)的數(shù)據(jù)庫管理系統(tǒng),要求涉及:數(shù)據(jù)維護(hù)(輸入修改,刪除)、數(shù)據(jù)查詢和統(tǒng)計(jì)、報(bào)表打印等。三、涉及的內(nèi)容或知識點(diǎn)綜合利用數(shù)據(jù)庫原理及使用所有知識,所選擇的開發(fā)工具的知識,專業(yè)知識中要解決的某個(gè)方面的問題的領(lǐng)域知識。四、采用的教學(xué)方法和手段根據(jù)所選設(shè)計(jì)項(xiàng)目,對項(xiàng)目進(jìn)行需求分析和設(shè)計(jì)方法,形成一個(gè)問題的解決方案,學(xué)生分為2-3人一組,每組提出一個(gè)要解決的問題;先對問題進(jìn)行分析,明確問題的目標(biāo)和解決問題的思路,同樣設(shè)計(jì)出問題的解決方案。最后采用一種開發(fā)工具進(jìn)行設(shè)計(jì)和實(shí)現(xiàn)來解決問題。小組成員各自承擔(dān)不同的設(shè)計(jì)任務(wù)。最后的實(shí)驗(yàn)報(bào)告包括:問題解決方案(系統(tǒng)分析和設(shè)計(jì)報(bào)告、數(shù)據(jù)庫設(shè)計(jì)方案,功能設(shè)計(jì),界面設(shè)計(jì)),設(shè)計(jì)的系統(tǒng),系統(tǒng)運(yùn)行報(bào)告等。附錄:綜合性實(shí)驗(yàn)報(bào)告要求:一、系統(tǒng)分析和設(shè)計(jì)報(bào)告二、數(shù)據(jù)庫設(shè)計(jì)方案,功能設(shè)計(jì),界面設(shè)計(jì)三、設(shè)計(jì)的系統(tǒng)四、系統(tǒng)測試運(yùn)行報(bào)告五、個(gè)人完成的程序模塊和文檔清單六、個(gè)人遇到的困難和獲得的主要成果使用儀器、材料WindowXPVisualBasic2008SQLServer2008一系統(tǒng)分析和設(shè)計(jì)1.1需求分析選課管理系統(tǒng)的主要目的是利用軟件實(shí)現(xiàn)選課的錄入、查詢、修改等功能,針對不同表的用戶(學(xué)生、教師、管理員)提供不同的操作,使學(xué)生選課及對其的管理更加方便,提高工作效率,降低管理成本。選課的管理一般包括選課查詢和選課維護(hù)兩部分,在實(shí)際的選課過程中,學(xué)生主要對課程進(jìn)行選擇,了解自己的選課情況,而教師除了能夠?qū)x擇教師自己教授的課程的學(xué)生進(jìn)行查詢之外,還要對課程成績進(jìn)行錄入,修改等操作。對于整個(gè)系統(tǒng)而言,為了便于對各種數(shù)據(jù)進(jìn)行維護(hù),還要增設(shè)管理員,方便對學(xué)生和教師信息以及課程等基本信息的維護(hù),從而達(dá)到靈活的管理選課的效果。因此從安全角度考慮,有必要針對不同的用戶對數(shù)據(jù)的訪問和編輯進(jìn)行控制。學(xué)生、教師和管理員對選課信息的操作權(quán)限如表 所示。表用戶所在表操作查詢修改刪除錄入學(xué)生可以不可以不可以不可以教師可以可以不可以可以管理員可以可以可以可以而管理員還具有對整個(gè)系統(tǒng)其他信息,如課程信息,的全部操作權(quán)限。功能需求分析具體如下。系統(tǒng)登陸用戶輸入用戶名和密碼,系統(tǒng)查詢數(shù)據(jù)庫中的信息對用戶名和密碼進(jìn)行驗(yàn)證。如果用戶名或密碼不正確則不能進(jìn)入系統(tǒng)。如果用戶名存在且密碼正確,系統(tǒng)會(huì)自動(dòng)根據(jù)該用戶所在的表進(jìn)入不同的界面且顯示該用戶相對應(yīng)的基本信息。學(xué)生界面基本信息
學(xué)生登陸成功,可看到自己的基本信息包括學(xué)號、姓名、性別、年齡、系別。選課可查看學(xué)生本人的選課情況,包括課程名、授課老師、課室、分?jǐn)?shù)。并可進(jìn)一步進(jìn)行選擇和刪除。教師界面基本信息教師登陸成功,可看到自己的基本信息包括教師號、姓名、性別、職稱、系別。還可看到自己教授的所有課程查看學(xué)生信息可查看選擇自己教授的課程的學(xué)生名單,并可進(jìn)一步對選擇該門課程的學(xué)生成績進(jìn)行錄入和修改。管理員界面查詢可查詢學(xué)生信息、教師信息以及其他的一些基本選課信息包括課程信息、選課信息、課室信息、教授課程和授課地點(diǎn)。編輯可對正在瀏覽的學(xué)生和教師信息進(jìn)行編輯操作包括修改、刪除,并可進(jìn)行學(xué)生或教師基本信息的錄入。當(dāng)未進(jìn)行瀏覽時(shí),僅可錄入信息而不能進(jìn)行修改和刪除。報(bào)表可顯示所有學(xué)生的選課信息包括課程名、教師和授課老師。并可進(jìn)一步打印或?qū)С?。除此之外,每個(gè)用戶均可重新設(shè)置自己的密碼(需要舊密碼驗(yàn)證)。模塊設(shè)計(jì)系統(tǒng)架構(gòu)系統(tǒng)的模塊劃分如圖 所示,將系統(tǒng)分為個(gè)大模塊,每個(gè)模塊負(fù)責(zé)的功能和用戶所在的表有關(guān)。其中用戶登陸模塊根據(jù)用戶所在的表顯示不同的界面和提供不同的操作。本系統(tǒng)采用 的 數(shù)據(jù)庫訪問技術(shù)實(shí)現(xiàn)對數(shù)據(jù)庫的訪問操作。系統(tǒng)的最底層是數(shù)據(jù)庫,本系統(tǒng)采用 作為后臺數(shù)據(jù)庫。用戶登錄模塊學(xué)耳教師 管理員
數(shù)據(jù)庫訪問接口ADO.門田SQLServer數(shù)據(jù)庫圖 模塊劃分圖用戶登錄模塊用戶登陸模塊實(shí)現(xiàn)對用戶合法性的檢查,讀取不同的用戶表,根據(jù)用戶所在TOC\o"1-5"\h\z的表展示不同的界面。用戶登陸界面的類為“ o學(xué)生模塊、教師模塊和管理員模塊功能介紹詳見功能需求具體分析 ~學(xué)生界面對應(yīng)類“ u選課功能對應(yīng)類“ s教師界面對應(yīng)類“ ”,查看相應(yīng)課程學(xué)生信息對應(yīng)類“ ”,錄入、修改學(xué)生分?jǐn)?shù)對應(yīng)類“ ”;管理員界面對應(yīng)類“ ”,錄入、修改學(xué)生信息對應(yīng)類“ ”,錄入、修改教師信息對應(yīng)類“ ”,查看和編輯其他選課信息對應(yīng)類“ ”,報(bào)表對應(yīng)類“”。所有用戶修改密碼統(tǒng)一使用類“ i止匕外,還定義了幾個(gè)公共類方便操作。“ ”類存儲(chǔ)全局變量;“ ”類保存用戶登錄名和密碼以及提供了修改密碼的方法; ”類的作用是提供統(tǒng)一的方法執(zhí)行語句,并對語句進(jìn)行判斷是添加、刪除、更新操作還是查詢操作,若為前者,彈出對應(yīng)信息框通知用戶。二數(shù)據(jù)庫分析和設(shè)計(jì)概念設(shè)計(jì)在以上的系統(tǒng)分析基礎(chǔ)上,設(shè)計(jì)出系統(tǒng)的 圖,如圖所示。
圖2-1E-R圖主要包括個(gè)實(shí)體,分別是學(xué)生、教師、課程、教室及三個(gè)關(guān)系,即選修、講授和授課地。一門課程可由多個(gè)老師教授,一個(gè)老師也可以教授多門課程,課程實(shí)體和教師實(shí)體是多對多關(guān)系。一門課程可由多個(gè)學(xué)生選擇,一個(gè)學(xué)生也可以選擇多門課程,課程實(shí)體和學(xué)生實(shí)體是多對多關(guān)系。一門課程可安排在多個(gè)教室上,一個(gè)教室也可以作為多門課程的授課地點(diǎn),課程實(shí)體和教室之間是多對多關(guān)系。邏輯設(shè)計(jì)在根據(jù)以上實(shí)體和實(shí)體的關(guān)系,形成表和表之間的邏輯關(guān)系,如圖 所示。
圖2-2邏輯關(guān)系圖圖2-2邏輯關(guān)系圖英語部分為實(shí)際表名中文部分為解釋表的具體項(xiàng)如下所示(為方便編程除了課程表項(xiàng)的類別),英語部分為實(shí)際表名中文部分為解釋學(xué)生學(xué)號、姓名 、性別、年齡、系別教師教師號,姓名 ,性別,職稱 ,系別課程課程號、課程名 ,學(xué)分,類別教室教室號,多媒體,座位講授(教師號 ,課程號)選修(學(xué)號,課程號,成績 )授課地(課程號 ,教室號 )數(shù)據(jù)庫的實(shí)現(xiàn)
各個(gè)表內(nèi)列的名稱、含義、是否主鍵等基本信息可從 獲知,這里不再贅述。在數(shù)據(jù)庫中創(chuàng)建各個(gè)表的 語句見附錄一。三系統(tǒng)實(shí)現(xiàn)新建一個(gè)項(xiàng)目,使用默認(rèn)配置,保存為“ ”i關(guān)于項(xiàng)目中各個(gè)類的代碼部分詳見附錄二。代碼部分帶有注釋,就不重復(fù)解釋了。設(shè)置全局變量和自定義用戶類以及操作類添加一個(gè)模塊,用于保存全局變量。單擊“項(xiàng)目” “添加模塊”,并命名為“ ”c代碼部分詳見附錄二。添加一個(gè)類,操作同上,保存為“”e之所以使用類,是為了能保存用戶的登陸信息,和在修改密碼時(shí)能傳遞信息,而不需要重新執(zhí)行語句進(jìn)行查詢。再添加一個(gè)類,保存為“ r其功能為執(zhí)行 語句,并對語句進(jìn)行判斷是添加、刪除、更新操作還是查詢操作,若為前者,彈出對應(yīng)信息框通知用戶。登陸窗口添加窗體,保存為“ ”,使用工具箱(視圖工具箱),添加各控件后登陸窗口如圖 所示。圖3-13.3學(xué)生界面如果是用戶是學(xué)生,則登陸后界面如圖 所示。對應(yīng)的項(xiàng)目文件為
圖3-2學(xué)生信息界面可看到基本信息(除了密碼項(xiàng))。單擊“選課”按鈕,彈出選課對話框,如圖 所示,對應(yīng)項(xiàng)目文件為圖3-3代碼中主要使用語句執(zhí)行并進(jìn)行數(shù)據(jù)填充,如其中自定義的填充數(shù)據(jù)集方法 。
還使用了其他幾個(gè) 語句進(jìn)行查詢,至于具體的代碼詳見目錄,這里只給出執(zhí)行的 語句。查找對應(yīng)課程名的課程號查找對應(yīng)學(xué)號和課程號的記錄插入選課記錄刪除選課記錄單擊“修改密碼”按鈕進(jìn)入修改密碼對話框,如圖3-4所示,對應(yīng)項(xiàng)目文件為“dlgModifyPW.vb"。注:所有用戶修改密碼都是使用該窗口界面,可節(jié)省空間。圖3-4圖3-4主要判斷“舊密碼”和“新密碼”是否一致,通過類保存的密碼進(jìn)行對比,而不是使用語句重新查詢。之后調(diào)用新。類中的修改密碼方法進(jìn)行密碼更而不是使用語句重新查詢。之后調(diào)用新。類中的修改密碼方法進(jìn)行密碼更教師界面教師用戶登陸后的界面如圖3-5所示,所對應(yīng)的項(xiàng)目文件為“frmTeacher.vb”。圖基本代碼和學(xué)生界面的代碼類似,主要不同的地方有:增加了一個(gè)表格,需要對表格進(jìn)行填充,并且對雙擊表格單元格內(nèi)容時(shí)編程使其可以查看選修該門課程的學(xué)生信息。雙擊表格單元格內(nèi)容需要使用表格的 過程,具體代碼如下:注:下面的第一二行代碼應(yīng)該在同一行,由于排版問題分開了。PrivateSubgrdTC_CellContentDoubleClick(ByValsenderAsObject,ByValeAsSystem.Windows.Forms.DataGridViewCellEventArgs)HandlesgrdTC.CellContentDoubleClick’判斷有沒超過范圍并獲取當(dāng)前活動(dòng)單元的值IfgrdTC.CurrentCell.RowIndex<grdTC.RowCount-1Then'storeCnameforpassingittofrmTStudengInfoCname=grdTC.Item(0,grdTC.CurrentRow.Index).ValuefrmTStudentInfo.ShowDialog()EndIfEndSub雙擊單元格內(nèi)容查看選修該門課程的學(xué)生信息,界面如圖3-6所示,對應(yīng)的項(xiàng)目文件為“frmTStudentInfo.vb”圖3-6可看到選修該門課程的學(xué)生信息(學(xué)號、姓名、系別、分?jǐn)?shù),列名還沒修改)雙擊學(xué)生基本信息表格的單元格內(nèi)容可修改該行記錄的學(xué)生的分?jǐn)?shù),界面如圖3-7所示,對應(yīng)的項(xiàng)目文件為“dlgTModifyGrade.vb”。圖3-7僅可以修改分?jǐn)?shù)項(xiàng)。提交修改即可修改分?jǐn)?shù)。管理員界面管理員用戶登陸后的界面如圖 所示,對應(yīng)項(xiàng)目文件為“查詢口編輯報(bào)表幫助教師信息學(xué)生信息其他 卜關(guān)干藤幫助查詢口編輯報(bào)表幫助教師信息學(xué)生信息其他 卜關(guān)干藤幫助請?jiān)诖巳绮榭磳W(xué)生選課情況圖3-8由于管理員的功能比較多,所以代碼也相對較多和復(fù)雜,主要代碼部分都有注釋詳加解釋,故不再此贅述。菜單欄各下拉項(xiàng)如圖 所示。圖3-9查詢菜單僅可以查詢,表格屬性為只讀。需要修改或者刪除,需要在編輯項(xiàng)中選中修改或刪除才可以進(jìn)行編輯。當(dāng)沒有選中查詢菜單中的項(xiàng)時(shí),編輯菜單中的修改和刪除是灰白的,不能被選擇。查詢后選擇修改,則可以在表格中雙擊需要修改的記錄,彈出修改對話框。例:單擊查詢->學(xué)生信息,然后選擇編輯->修改,彈出“修改學(xué)生信息對話框”,如圖3-10所示。圖3-10修改時(shí),不能修改學(xué)號項(xiàng)。單擊查詢->教師信息,然后選擇編輯->修改,則彈出“修改教師信息對話框”。查詢后選擇刪除,則可以在表格中雙擊需要修改的記錄,進(jìn)行刪除,并且自動(dòng)退出修改狀態(tài)。例:單擊查詢->學(xué)生信息,然后選擇編輯->刪除,如圖3-11所示:
明管理員?10020001李二明管理員?10020001李二男教授數(shù):10020002張三男講師計(jì):米選擇“編輯->錄入。學(xué)生信息”彈出“錄入學(xué)生信息對話框”如圖3-12所示。圖3-12選擇“編輯->錄入。教師信息”則彈出“錄入教師信息對話框”。為了節(jié)省空間,查看課程信息等其他信息時(shí),只給出了表格,并可以直接在表格上編輯,如圖3-13所示。圖3-13報(bào)表顯示的是學(xué)生的選課信息(課程名稱、課室、授課老師姓名)如圖3-14所示,使用水晶報(bào)表制作,可導(dǎo)出為excel表格。報(bào)表likid甲1甲3李勇劉晨錢小平王大力王剛吳賓張海2011-12-CnamBlikid甲1甲3李勇劉晨錢小平王大力王剛吳賓張海2011-12-CnamBCRn口Tnam巳八=litid數(shù)據(jù)庫原理與應(yīng)用計(jì)算機(jī)掰絡(luò)201103李二李二甲1電子商務(wù)美不302301張三張三甲3美術(shù)301張三V<叩>附附▼L卜方芍|主報(bào)至當(dāng)前頁碼:1總頁數(shù):1+縮放系數(shù):1口口區(qū)圖錄入、修改學(xué)生信息對應(yīng)項(xiàng)目文件“ ”,錄入、修改教師信息對應(yīng)項(xiàng)目文件“ a查看和編輯其他選課信息對應(yīng)項(xiàng)目文件“ ”,報(bào)表對應(yīng)項(xiàng)目文件“ ”。四系統(tǒng)測試運(yùn)行大部分正常運(yùn)行的界面在第三部分的系統(tǒng)實(shí)現(xiàn)部分已經(jīng)展示在此僅展示部分錯(cuò)誤輸入的情況。用戶名輸入錯(cuò)誤時(shí)給出的提示。學(xué)生選課時(shí)添加已經(jīng)選擇的課程時(shí)給出的提示。修改密碼時(shí)輸入的舊密碼不正確時(shí)給出的提示。信息框八輸入的舊密碼不正確!確定錄入學(xué)生信息時(shí)學(xué)號為空給出的提示。由于時(shí)間匆忙,可能存在部分未被測試到的安全性隱患。五程序模塊和文檔清單主要程序代碼段設(shè)置全局變量'ImportDataandSqlClientnamespaces...ImportsSystem.DataImportsSystem.Data.SqlClientModulePublicVarPublicobjConnectionAsNewSqlConnectionPublicobjDataAdapterAsNewSqlDataAdapter()PublicSQLStringAsString '保存SQL語句PublicstrInfoAsString '保存消息窗口標(biāo)題PublicUserAsCUser '保存登陸用戶賬號、密碼信息'調(diào)用main過程,以適應(yīng)不同的測試界面Submain()‘初始化objDataAdapter.SelectCommand=NewSqlCommand()strInfo="信息框"EndSubPublicSubobjOpen()'Opentheconnection,ifalreadyopenthenskipoverIfobjConnection.State<>ConnectionState.OpenThenobjConnection.Open()EndIfEndSubPublicSubobjClose()'Closetheconnection,ifalreadyclosethenskipoverIfobjConnection.State<>ConnectionState.ClosedThenobjConnection.Close()EndIf
EndSubEndModule保存用戶的登陸信息,和在修改密碼時(shí)能傳遞信息,而不需要重新執(zhí)行 語句進(jìn)行查詢。PublicClassCUserPrivatem_UserIDAsString '保存用戶名Privatem_PasswordAsString '保存密碼Privatem_UserTypeAsInteger '0表示管理員,1表示學(xué)生,2表示老師PropertyUserID()AsStringGetReturnm_UserIDEndGetSet(ByValvalueAsString)mUserID=valueEndSetEndPropertyPropertyPassword。AsStringGetReturnm_PasswordEndGetSet(ByValvalueAsString)mPassword=valueEndSetEndPropertyPropertyUserType()AsStringGetReturnm_UserTypeEndGetSet(ByValvalueAsString)mUserType=valueEndSetEndPropertySubNew(ByValIDAsString,ByValPWAsString)‘傳遞賬號信息m_UserID=IDmPassword=PWEndSubFunctionPasswordModify(ByValNewPasswordAsString,ByValUserTypeAsString)AsBooleanDimstrTypeAsString '對應(yīng)不同的登陸用戶查詢的表名字母DimstrCharAsChar 對應(yīng)不同的登陸用戶的賬號和密碼查詢的首字母strType=""
’0表示管理員,1表示學(xué)生,2表示老師IfUserType=0ThenstrType="Admin"strChar="A"ElselfUserType=1ThenstrType="Student"strChar="S"ElseIfUserType=2ThenstrType="Teacher"strChar="T"EndIf'DimSQLStringAsStringSQLString=_"update"&strType&"set"&strChar&"password='"&NewPassword&"'where"&strChar&"no='"—&User.m_UserID&"'"’使用自定義類執(zhí)行SQL語句CDBOperation.DBoperate(SQLString)'Refreshpasswordm_Password=NewPasswordEndFunctionEndClassPublicClassCDBOperationSharedFunctionDBoperate(ByValSQLStringAsString)’執(zhí)行SQL語句,并對SQL語句進(jìn)行判斷是添加、刪除、更新操作還是查詢操作,’若為前者,彈出對應(yīng)信息框通知用戶。TryobjDataAdapter.SelectCommand.CommandText=SQLStringobjDataAdapter.SelectCommand.CommandType =CommandType.TextDimsTokens()AsString'declareanArray'Splitstringby""sTokens=SQLString.Split("")'OpentheconnectionobjOpen()’將添加、刪除、更新操作中使用的SQL語句的第一個(gè)單詞和’要執(zhí)行的SQL語句的第一個(gè)單詞進(jìn)行比較,若為前者的操作,則執(zhí)行SQL語句并給予用戶對應(yīng)的提示‘否則僅執(zhí)行語句IfStrings.InStr("INSERT,DELETE,UPDATE",sTokens(0).ToUpper)Then'Executethecommand
objDataAdapter.SelectCommand.ExecuteNonQuery()IfsTokens(0).ToUpper="INSERT"Then乂$880乂("插入成功",MsgBoxStyle.Information,strInfo)‘不可直接return,因?yàn)檫€需要關(guān)閉數(shù)據(jù)庫連接節(jié)省資源EndIfIfsTokens(0).ToUpper="DELETE"ThenMsgBox("刪除成功",MsgBoxStyle.Information,strInfo)EndIfIfsTokens(0).ToUpper="UPDATE"ThenMsgBox("更新成功",MsgBoxStyle.Information,strInfo)EndIfElse'ExecutethecommandobjDataAdapter.SelectCommand.ExecuteNonQuery()EndIfobjClose()CatchexAsExceptionMsgBox(ex.Message)EndTryReturnNothingEndFunctionEndClassfrmLogin.vbfrmLogin.vb個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)PublicClassfrmLoginDimLDataSetAsNewDataSet。DimobjDataViewAsDataViewPrivateSubReset()'重置txtUserID.Text=""txtPasswd.Text=""EndSubFunctionLoginConfirm(ByValIDAsString,ByValPWAsString)AsInteger’判斷輸入的用戶名和密碼是哪個(gè)表(學(xué)生、教師、管理員)中的記錄‘使用SQL語句查詢對應(yīng)的學(xué)生學(xué)號和密碼objDataAdapter.SelectCommand.CommandText=_"selectSnofromStudent"—&"whereSno='"&User.UserID—&"'andSpassword='"&User.Password&"'"objDataAdapter.SelectCommand.CommandType=CommandType.TextobjOpen()'ExecuteScalar方法返回表的第一行的第一個(gè)數(shù)據(jù)?!?yàn)樾枰祷財(cái)?shù)據(jù)以便判斷,故沒有調(diào)用CDBOperation類進(jìn)行操作。SQLString=objDataAdapter.SelectCommand.ExecuteScalarobjClose()
TryIfSQLString=NothingThenobjDataAdapter.SelectCommand.CommandText=_"select*fromTeacher"—&"whereTno='"&User.UserID—&"'andTpassword='"&User.Password&"'"objOpen()'ExecuteScalar方法返回表的第一行的第一個(gè)數(shù)據(jù)。SQLString=objDataAdapter.SelectCommand.ExecuteScalarobjClose()IfSQLString=NothingThenobjDataAdapter.SelectCommand.CommandText=_"select*fromAdmin"—&"whereAno='"&User.UserID—&"'andApassword='"&User.Password&"'"objOpen()'ExecuteScalar方法返回表的第一行的第一個(gè)數(shù)據(jù)。SQLString=objDataAdapter.SelectCommand.ExecuteScalarobjClose()IfSQLString=NothingThenUser.UserType=-1MsgBox("輸入用戶名或密碼有誤,請重試",MsgBoxStyle.Exclamation,strInfo)Return-1ElseUser.UserType=0MsgBox("管理員登陸成功!",MsgBoxStyle.Information,strInfo)Return0EndIfElseUser.UserType=2MsgBox("教師登陸成功!",MsgBoxStyle.Information,strInfo)Return2EndIfElseUser.UserType=1MsgBox("學(xué)生登陸成功!",MsgBoxStyle.Information,strInfo)Return1EndIfCatchexAsExceptionMsgBox(ex.Message)EndTry
EndFunctionPrivateSubbtnOK_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesbtnOK.ClickUser=NewCUser(txtUserID.Text,txtPasswd.Text)DimflagAsInteger'-1表示不存在,0表示管理員,1表示學(xué)生,2表示老師flag=LoginConfirm(User.UserID,User.Password)If-1=flagThentxtPasswd.Text=""txtPasswd.Focus()ElseIf0=flagThenfrmAdmin.Show()'markElseIf1=flagThenfrmStudent.Show()ElseIf2=flagThenfrmTeacher.Show()EndIf'Successfullylogin,closefrmLoginwindowMe.Close()EndIfEndSubPrivateSubbtnReset_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesbtnReset.ClickReset()txtUserID.Focus()EndSubPrivateSubbtnExit_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesbtnExit.ClickEndEndSubPrivateSubfrmLogin_Load(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesMyBase.LoadIfobjConnection.Database=""ThenCallmain()objConnection.ConnectionString=_"DataSource=LI-KID;InitialCatalog=學(xué)生選課庫;IntegratedSecurity=True"objDataAdapter.SelectCommand.Connection=objConnectionEndIfPublicClassfrmStudent
DimSDataSetAsNewDataSet()DimobjDataViewAsDataViewPrivateSubFillDataSetAndView()SQLString=_"selectSno,Sname,Ssex,Sage,Sdept,Spassword"_&"fromStudent"—&"whereSno='"&User.UserID&"'andSpassword='"&User.Password&"'"’使用自定義類執(zhí)行SQL語句CDBOperation.DBoperate(SQLString)‘清除數(shù)據(jù)集中的內(nèi)容以防重復(fù)填充SDataSet.Clear()’填充數(shù)據(jù):objDataAdapter.Fill(SDataSet,"StudentInfo")’填充數(shù)據(jù)視圖objDataView=NewDataView(SDataSet.Tables("StudentInfo"))EndSubPrivateSubBindFields()'ClearanypreviousbindingstxtSno.DataBindings.Clear()txtSname.DataBindings.Clear()txtSsex.DataBindings.Clear()txtSage.DataBindings.Clear()txtSdept.DataBindings.Clear()Try'AddnewbindingstotheDataViewobjecttxtSno.DataBindings.Add("Text",objDataView,"Sno")txtSname.DataBindings.Add('Text",objDataView,"Sname")txtSsex.DataBindings.Add("Text",objDataView,"Ssex")txtSage.DataBindings.Add("Text",objDataView,"Sage")txtSdept.DataBindings.Add('Text",objDataView,"Sdept")CatchexAsExceptionMsgBox(ex.Message)EndTryEndSubPrivateSubfrmStudent_Load(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesMyBase.Load調(diào)用自定義過程進(jìn)行數(shù)據(jù)填充FillDataSetAndView()調(diào)用自定義過程進(jìn)行數(shù)據(jù)綁定BindFields()EndSubPrivateSubbtnLogout_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesbtnLogout.Click
frmLogin.Show()Me.Close()EndSubPrivateSubbtnModifyPW_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesbtnModifyPW.ClickdlgModifyPW.ShowDialog()EndSubPrivateSubbtnSelect_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesbtnSelect.ClickdlgSChooseCourse.ShowDialog()EndSubPrivateSubbtnExit_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesbtnExit.ClickobjConnection.Close()注:在“ ”中使用到一個(gè)填充數(shù)據(jù)的方法e分別填充了數(shù)據(jù)集 和文本框 的值,并使用了手動(dòng)綁定,定義該方法為 。在其他需要手動(dòng)綁定文本框和填充數(shù)據(jù)集的地方將不再重復(fù)附上詳細(xì)代碼,需要查看詳細(xì)代碼的請查看附帶的項(xiàng)目文件。
CDBOperation.DBoperate(SQLString)‘清除數(shù)據(jù)集中的內(nèi)容以防重復(fù)填充SCCDataSet.Clear()’填充數(shù)據(jù)集objDataAdapter.Fill(SCCDataSet,"SCInfo")’設(shè)置表格數(shù)據(jù)源和成員grdSC.AutoGenerateColumns=TruegrdSC.DataSource=SCCDataSetgrdSC.DataMember="SCInfo"'ChangecolumnnamesusingthecolumnindexgrdSC.Columns(0).HeaderText="課程名"'ChangecolumnnamesusingthecolumnnamegrdSC.Columns("Grade").HeaderText="分?jǐn)?shù)"grdSC.Columns("Tname").HeaderText="教師名"grdSC.Columns("CRno").HeaderText="課室號"’設(shè)置寬度,默認(rèn)100grdSC.Columns("Tname").Width=75grdSC.Columns("CRno").Width=75grdSC.Columns("Grade").Width=75'grdSC.Columns("Cname").Width/1.5EndSubPrivateFunctionIsExist()AsBoolean’查找對應(yīng)學(xué)號和課程號的記錄SQLString=_"select*fromSCwhereSno='"&User.UserID&"'"—&"andCno='"&Cno&"'"objDataAdapter.SelectCommand.CommandText=SQLStringobjOpen()‘若要添加的課程已存在(即已選),則彈出信息框并返回TRUEIf(objDataAdapter.SelectCommand.ExecuteScalar)ThenMsgBox("該課程已選!",MsgBoxStyle.Exclamation,strInfo)ReturnTrueEndIfobjClose()ReturnFalseEndFunctionPrivateSubbtnCancel_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesbtnCancel.ClickMe.Close()EndSubPrivateSubdlgSChooseCourse_Load(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesMyBase.LoadcboChooseCourse.Items.Add("計(jì)算機(jī)文化學(xué)")cboChooseCourse.Items.Add('VB")
cboChooseCourse.Items.Add("計(jì)算機(jī)網(wǎng)絡(luò)")cboChooseCourse.Items.Add("數(shù)據(jù)庫原理和使用")cboChooseCourse.Items.Add("高等數(shù)學(xué)”)cboChooseCourse.Items.Add("數(shù)據(jù)結(jié)構(gòu)")cboChooseCourse.Items.Add("美術(shù)")cboChooseCourse.Items.Add("電子商務(wù)")’顯示下拉框的第一個(gè)數(shù)據(jù)(索引值為0)cboChooseCourse.SelectedIndex=0'FilltheDataGridFillDataGrid()EndSubPrivateSubbtnAdd_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesbtnAdd.ClickMsg=MsgBox("確定添加?",MsgBoxStyle.OkCancel,strInfo)'IfOK,thenexecuteSQLandrefillDataGridIfMsg=MsgBoxStyle.OkCancelThen’確定添加時(shí)獲得CnoCnameToCno()’判斷添加的課程是否是已選課程,若未選則添加If(IsExist()=False)Then’插入選課記錄SQLString="insertintoSC(Cno,Sno)values。"&Cno&"','"&User.UserID&"')"調(diào)用自定義操作類執(zhí)行SQL語句CDBOperation.DBoperate(SQLString)FillDataGrid()EndIfEndIfEndSubPrivateSubbtnDel_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesbtnDel.ClickCnameToCno()'刪除選課記錄SQLString="deleteSCwhereCno='"&Cno&"'andSno='"&User.UserID&"'"Msg=MsgBox("確定刪除?",MsgBoxStyle.OkCancel,strInfo)'IfOK,thenexecuteSQLandrefillDataGridIfMsg=MsgBoxStyle.OkCancelThenCDBOperation.DBoperate(SQLString)FillDataGrid()EndIfEndSubEndClass注:在“ ”中自定義了 方法用于填充表格,還有添加和刪除操作,和綁定下拉列表框。在其他使用類似方法的代碼將不再重復(fù)附上詳細(xì)代碼,需要查看詳細(xì)代碼的請查看附帶的項(xiàng)目文件。、上、卜、卜、卜、卜、卜、卜、卜、卜、卜、卜、卜、卜、卜、卜、上、上個(gè)個(gè)個(gè)個(gè)個(gè)小小小小小小小小小小小小小小小小小小frmTeacher.vb、上、卜、卜、卜、卜、卜、卜、卜、卜、卜、卜、卜、卜、卜、卜、卜、卜、卜、卜、上、上
個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)小、上、卜、卜、卜、卜、卜、卜、卜、卜、卜、卜、卜、卜、卜、卜、上、上個(gè)個(gè)個(gè)個(gè)個(gè)小小小小小小小小小小小小小小小小小小frmTeacher.vb、上、卜、卜、卜、卜、卜、卜、卜、卜、卜、卜、卜、卜、卜、卜、卜、卜、卜、卜、上、上
個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)小PrivateSubfrmTeacher_Load(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesMyBase.Load調(diào)用自定義過程進(jìn)行數(shù)據(jù)填充FillDataSetAndView()調(diào)用自定義過程進(jìn)行數(shù)據(jù)綁定BindFields()調(diào)用自定義過程填充表格FillGrid()EndSubPrivateSubgrdTC_CellContentDoubleClick(ByValsenderAsObject,ByValeAs System.Windows.Forms.DataGridViewCellEventArgs) HandlesgrdTC.CellContentDoubleClick’判斷有沒超過范圍并獲取當(dāng)前活動(dòng)單元的值IfgrdTC.CurrentCell.RowIndex<grdTC.RowCount-1Then'storeCnameforpassingittofrmTStudengInfoCname=grdTC.Item(0,grdTC.CurrentRow.Index).ValuefrmTStudentInfo.ShowDialog()EndIfEndIf注:該部分填充數(shù)據(jù)集 、填充表格 和綁定文本框的代碼未給出,和前面給出的代碼大同小異,需要查看詳細(xì)代碼請自行查閱項(xiàng)目文件。新增一個(gè)對“雙擊表格單元格內(nèi)容”事件的操作 DPublicClassfrmAdminPublicTypeAsInteger'1forStudent,2forTeacher,3forCourse,4forSC,5forClassroom,6forTC,7forVenueDimisClickSBAsBoolean'judgewhetherthesearchbuttonshasbeenclicked,whenclickedthencaneditDimisModifyStatusAsBoolean'judgewhethertheModifybuttonhasbeenclicked(ModifyStatus)DimisDeleteStatusAsBoolean'judgewhethertheDeletebuttonhasbeenclicked(DeleteStatus)’由于錄入和修改是是使用同一個(gè)對話框,所以需要設(shè)置一標(biāo)志判斷當(dāng)前狀態(tài)PublicisAddStatusAsBooleanDimADataSetAsNewDataSet()PrivateSubFillDataSetAndGrid(ByValTypeAsInteger)’如果是瀏覽學(xué)生信息IfType=1ThenSQLString="select*fromStudent"CDBOperation.DBoperate(SQLString)ADataSet.Clear()objDataAdapter.Fill(ADataSet,"SInfo")grdInfo.DataSource=ADataSetgrdInfo.DataMember="SInfo"’如果是教師信息ElseIfType=2ThenSQLString="select*fromTeacher"CDBOperation.DBoperate(SQLString)ADataSet.Clear()objDataAdapter.Fill(ADataSet,"TInfo")grdInfo.DataSource=ADataSetgrdInfo.DataMember="TInfo"EndIfEndSubPrivateSubLogoutToolStripMenuItem_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesLogoutToolStripMenuItem.ClickfrmLogin.Show()Me.Close()EndSubPrivateSubExitToolStripMenuItem_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesExitToolStripMenuItem.ClickEndEndSubPrivateSubTInfoToolStr
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年03月山東齊商銀行濟(jì)寧分行招考筆試歷年參考題庫附帶答案詳解
- 2024-2025學(xué)年揚(yáng)州市儀征市三年級數(shù)學(xué)第一學(xué)期期末經(jīng)典模擬試題含解析
- 財(cái)務(wù)會(huì)計(jì)個(gè)人述職報(bào)告(合集7篇)
- 2024-2025學(xué)年土默特右旗三年級數(shù)學(xué)第一學(xué)期期末經(jīng)典試題含解析
- 職員辭職申請書(15篇)
- 我有一個(gè)想法500字滿分寫作素材12篇范文
- 單位辦公室人員個(gè)人工作計(jì)劃范文5篇
- 2024年荒坡土地承包經(jīng)營權(quán)協(xié)議
- 下車間實(shí)習(xí)報(bào)告集錦十篇
- 護(hù)士個(gè)人工作總結(jié)15篇
- 國家開放大學(xué)《理工英語3》章節(jié)測試參考答案
- 濕法脫硫用水水質(zhì)要求
- 信息化系統(tǒng)機(jī)房標(biāo)識的相關(guān)規(guī)范
- 城管局個(gè)人工作總結(jié)
- MT_T 1186-2020 露天煤礦運(yùn)輸安全技術(shù)規(guī)范_(高清版)
- 冷庫項(xiàng)目專項(xiàng)扶持資金申請報(bào)告(模板范本)
- 鉑銠合金漏板.
- (完整版)建筑力學(xué)(習(xí)題答案)
- 少年宮籃球活動(dòng)教案
- 國有建設(shè)企業(yè)《大宗材料及設(shè)備采購招標(biāo)管理辦法》
- 民間秘術(shù)絕招大全
評論
0/150
提交評論