版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
VisualStudio2019(C#)Windows數(shù)據(jù)庫項(xiàng)目開發(fā)認(rèn)識項(xiàng)目第一章【ch01】認(rèn)識項(xiàng)目.pptx【ch02】主窗體開發(fā).pptx【ch03】數(shù)據(jù)維護(hù)窗體開發(fā).pptx【ch04】系統(tǒng)登錄及權(quán)限管理.pptx【ch05】學(xué)生選課.pptx【ch06】選課抽簽及抽簽結(jié)果查詢.pptx【ch07】統(tǒng)計查詢.pptx【ch08】RDLC報表.pptx【ch09】系統(tǒng)完善.pptx【ch10】控件開發(fā).pptx【ch11】LINQ技術(shù).pptx【ch12】使用ClickOnce部署項(xiàng)目.pptx全套可編輯PPT課件01項(xiàng)目和開發(fā)環(huán)境介紹項(xiàng)目1.為什么開發(fā)Windows項(xiàng)目Windows窗體應(yīng)用程序具備界面友好、功能豐富的特點(diǎn),還具備智能客戶端部署功能,可使客戶端自動升級到最新程序。2.為什么使用數(shù)據(jù)庫項(xiàng)目市場上需求的軟件,如各種ERP軟件、財務(wù)軟件、游戲軟件等基本都和數(shù)據(jù)庫有關(guān),因此開發(fā)數(shù)據(jù)庫系統(tǒng)具有廣泛的實(shí)用性。項(xiàng)目3.為什么使用學(xué)生選課系統(tǒng)有的讀者可能會說,這個好像是Web項(xiàng)目。沒錯,編者確實(shí)開發(fā)過該選課系統(tǒng)的Web項(xiàng)目,但為什么將它作為Windows項(xiàng)目講解呢?這是因?yàn)椋旱谝?,該系統(tǒng)使用的數(shù)據(jù)庫便于學(xué)生理解;第二,無論什么項(xiàng)目,其主要功能其實(shí)都很類似,如數(shù)據(jù)的維護(hù)(錄入、修改、刪除)、統(tǒng)計、查詢,以及報表輸出、登錄驗(yàn)證和相應(yīng)的業(yè)務(wù)邏輯等??刹捎玫拈_發(fā)環(huán)境如下。
Visual
Studio2019
(社區(qū)版、專業(yè)版、企業(yè)版均可)。本書使用的是VisualStudio2019社區(qū)版,可以在微軟官網(wǎng)免費(fèi)下載和使用?!QL
Server
2014或以上版本。本書使用的是SQL
Server2014。開發(fā)環(huán)境02項(xiàng)目運(yùn)行準(zhǔn)備項(xiàng)目所需數(shù)據(jù)庫(1)如圖1-1所示,右擊“SQLServerManagementStudio”圖標(biāo),在彈出的快捷菜單中選擇“以管理員身份運(yùn)行”命令。(2)啟動SQL
Server
Management
Studio,彈出“連接到服務(wù)器”對話框,如圖1-2所示。準(zhǔn)備項(xiàng)目所需數(shù)據(jù)庫(3)在“服務(wù)器類型”下拉列表中選擇“數(shù)據(jù)庫引擎”選項(xiàng);在“服務(wù)器名稱”文本框中輸入“\SQLEXPRESS”,考慮到環(huán)境部署的便利性,本書使用SQLEXPRESS實(shí)例;在“身份驗(yàn)證”下拉列表中選擇“Windows身份驗(yàn)證”選項(xiàng),并單擊“連接”按鈕。準(zhǔn)備項(xiàng)目所需數(shù)據(jù)庫(4)如圖1-3所示,在SQLServerManagementStudio的“對象資源管理器”窗口中右擊“數(shù)據(jù)庫”選項(xiàng),在彈出的快捷菜單中選擇“附加”命令。準(zhǔn)備項(xiàng)目所需數(shù)據(jù)庫(5)如圖1-4所示,在“附加數(shù)據(jù)庫”對話框中,單擊“添加”按鈕以選擇數(shù)據(jù)庫文件。(6)如圖1-5所示,在“定位數(shù)據(jù)庫文件”對話框中找到Xk.MDF文件所在的文件夾(讀者可以在本書配套資源的“教材項(xiàng)目\選課數(shù)據(jù)庫”文件夾下找到),并選中Xk.MDF文件,單擊“確定”按鈕。準(zhǔn)備項(xiàng)目所需數(shù)據(jù)庫(7)如圖1-6所示,在“附加數(shù)據(jù)庫”對話框中,單擊“確定”按鈕,完成附加Xk數(shù)據(jù)庫的操作(再次提醒,如果出現(xiàn)錯誤,請確認(rèn)一下是否是以管理員身份運(yùn)行SQL
ServerManagementStudio的)。準(zhǔn)備項(xiàng)目所需數(shù)據(jù)庫(8)如圖1-7所示,在“對象資源管理器”窗口中展開“數(shù)據(jù)庫”→“Xk”→“表”選項(xiàng),并右擊“dbo.Class”選項(xiàng),在彈出的快捷菜單中選擇“編輯前200行”命令,顯示Xk數(shù)據(jù)庫中Class表的數(shù)據(jù)。運(yùn)行學(xué)生選課系統(tǒng)(1)啟動VisualStudio,在界面右下方選擇“繼續(xù)但無須代碼”選項(xiàng)。(2)在VisualStudio主菜單中選擇“文件”→“打開”→“項(xiàng)目/解決方案”命令。(3)如圖1-8所示,最終完成的項(xiàng)目相關(guān)文件在本書配套資源的“教材項(xiàng)目\最終完成的項(xiàng)目”文件夾下,選中Xksln文件,單擊“打開”按鈕。運(yùn)行學(xué)生選課系統(tǒng)(4)如圖1-9所示,在“解決方案資源管理器”窗口中雙擊“app.config”選項(xiàng),檢查文件中的“Data
Source=\SQLEXPRESS”語句,若數(shù)據(jù)庫服務(wù)器名稱與本書環(huán)境不一致,則可以更改此處代碼(若數(shù)據(jù)庫服務(wù)器名稱為“.”,則更改代碼為“Data
Source=.”)。運(yùn)行學(xué)生選課系統(tǒng)(
5
)按“F5”鍵或單擊工具欄上的“啟動”按鈕?。為了測試方便,本示例已經(jīng)將管理員用戶之一的用戶名“001”和密碼“123”輸入好了,讀者只需單擊“登錄”按鈕即可以管理員身份進(jìn)入系統(tǒng)。03了解項(xiàng)目功能及數(shù)據(jù)庫項(xiàng)目功能介紹(1)登錄系統(tǒng)。如圖1-10所示,輸入正確的用戶名和密碼并單擊“登錄”按鈕,即可進(jìn)入系統(tǒng)主界面。(2)系統(tǒng)主界面。若以管理員身份登錄系統(tǒng),則主界面如圖1-11所示。項(xiàng)目功能介紹(3)以管理員身份登錄系統(tǒng)后,在主菜單中選擇“系部信息”菜單,將出現(xiàn)如圖1-13所示的界面。(4)以管理員身份登錄系統(tǒng)后,在主菜單中選擇“班級信息”菜單,將出現(xiàn)如圖1-14所示的界面。項(xiàng)目功能介紹(5)以管理員身份登錄系統(tǒng)后,在主菜單中選擇“學(xué)生信息”菜單,將出現(xiàn)如圖1-15所示的界面。(6)以管理員身份登錄系統(tǒng)后,在主菜單中選擇“課程信息”菜單,將出現(xiàn)如圖1-16所示的界面。項(xiàng)目功能介紹(7)以管理員身份登錄系統(tǒng)后,在主菜單中選擇“選課抽簽結(jié)果”→“隨機(jī)抽簽”命令,將出現(xiàn)如圖1-17所示的界面,可以對報名后的數(shù)據(jù)進(jìn)行隨機(jī)抽簽,以決定選課結(jié)果。(8)以管理員身份登錄系統(tǒng)后,在主菜單中選擇“選課抽簽結(jié)果”→“按課程查看選課結(jié)果”命令,將出現(xiàn)如圖1-18所示的界面,可以查詢抽簽后每門課程的學(xué)生名單。項(xiàng)目功能介紹(9)以管理員身份登錄系統(tǒng)后,在主菜單中選擇“統(tǒng)計查詢”→“按班級性別統(tǒng)計學(xué)生人數(shù)”命令,將出現(xiàn)如圖1-19所示的界面,可以統(tǒng)計出各班男女人數(shù)。項(xiàng)目功能介紹(10)以管理員身份登錄系統(tǒng)后,在主菜單中先選擇“統(tǒng)計查詢”菜單,再選擇“未選課學(xué)生名單”子菜單,將出現(xiàn)如圖1-20所示的界面,可以統(tǒng)計出未選課學(xué)生名單,以便提醒這些學(xué)生及時報名。(11)在很多情形下,我們可能需要打印功能,如打印單據(jù)后簽字、和客戶對賬等。項(xiàng)目功能介紹(12)“LINQ示例”菜單?!癓INQ示例”菜單下有兩個命令,分別為“LINQTO
Object示例”和“LINQTODataSet示例”。這是我們要學(xué)習(xí)的與LINQ相關(guān)的內(nèi)容。從運(yùn)行效果來看,這兩個命令的功能類似。圖1-24所示為“LINQTO
DataSet示例”命令的運(yùn)行效果。項(xiàng)目功能介紹(13)“關(guān)于”對話框。開發(fā)者編寫程序后,希望有一個地方能留下自己的姓名,這也是大多數(shù)軟件具有的一個功能。以管理員身份或?qū)W生身份登錄系統(tǒng)后,在主菜單中選擇“系統(tǒng)”→“關(guān)于”命令,彈出“關(guān)于學(xué)生選課系統(tǒng)”對話框,如圖1-25所示。項(xiàng)目功能介紹(14)以學(xué)生身份登錄系統(tǒng)后,在主菜單中選擇“學(xué)生選課”→“報名”命令,將出現(xiàn)如圖1-26所示的界面。(15)以學(xué)生身份登錄系統(tǒng)后,在主菜單中選擇“學(xué)生選課”→“我的報名結(jié)果”命令,將出現(xiàn)如圖1-27所示的界面。熟悉項(xiàng)目數(shù)據(jù)庫中的表(1)Department表有2列,分別是DepartNo
(系部代碼)、DepartName
(系部名稱)。該表中的數(shù)據(jù)如圖1-28所示。(2)Class表有3列,分別是ClassNo
(班級代碼)、DepartNo
(系部代碼)、ClassName
(班級名稱)。該表中的數(shù)據(jù)如圖1-29所示。熟悉項(xiàng)目數(shù)據(jù)庫中的表(3)Student表有6列,分別是StuNo(學(xué)號)、ClassNo(班級代碼)、StuName(姓名)、Sex(性別)、BirthDay(出生日期)、Pwd(密碼)。該表中的數(shù)據(jù)如圖1-30所示。熟悉項(xiàng)目數(shù)據(jù)庫中的表(4)Course表有4列,分別是CouNo(課程代碼)、CouName(課程名稱)、Credit(學(xué)分)、LimitNum
(限選人數(shù))。該表中的數(shù)據(jù)如圖1-31所示。熟悉項(xiàng)目數(shù)據(jù)庫中的表(5)StuCou表有5列,分別是StuNo(學(xué)號)、CouNo(課程代碼)、WillOrder(志愿號)、State(選課狀態(tài):報名和選中)、RandomNum(隨機(jī)數(shù),當(dāng)報名人數(shù)超過限選人數(shù)時,本系統(tǒng)采取隨機(jī)抽簽的方式進(jìn)行選擇)。該表中的數(shù)據(jù)如圖1-32所示。熟悉項(xiàng)目數(shù)據(jù)庫中的表(6)Users表有5列,分別是UscrID(用戶號)、UserName(用戶姓名)、Pwd(密碼)、EMail(郵件地址)、Tel(聯(lián)系電話)。該表中的數(shù)據(jù)如圖1-33所示。數(shù)據(jù)庫中表之間的關(guān)系(1)如圖1-34所示,在“對象資源管理器”窗口中展開“數(shù)據(jù)庫”→“Xk”→“數(shù)據(jù)庫關(guān)系圖”選項(xiàng),并雙擊“dbo.Diagram_0”選項(xiàng)。(2)如果出現(xiàn)如圖1-35所示的操作提示,則執(zhí)行步驟(3)~步驟(5),否則直接跳到步驟(6)。數(shù)據(jù)庫中表之間的關(guān)系(3)如圖1-36所示,在“對象資源管理器”窗口中展開“數(shù)據(jù)庫”選項(xiàng),并右擊“Xk”選項(xiàng),在彈出的快捷菜單中選擇“新建查詢”命令。(4)如圖1-37所示,在查詢窗口中輸入命令“ALTERAUTHORIZATIONONDATABASE::Xk
TO
sa”,單擊按鈕。數(shù)據(jù)庫中表之間的關(guān)系(5)重新按照步驟(1)執(zhí)行。(6)數(shù)據(jù)庫中表之間的關(guān)系如圖1-38所示。感謝觀看,再見!VisualStudio2019(C#)Windows數(shù)據(jù)庫項(xiàng)目開發(fā)VisualStudio2019(C#)Windows數(shù)據(jù)庫項(xiàng)目開發(fā)主窗體開發(fā)第二章01項(xiàng)目構(gòu)成創(chuàng)建項(xiàng)目(1)在“文件”菜單中選擇“新建項(xiàng)目”命令,彈出“創(chuàng)建新項(xiàng)目”對話框,如圖2-1所示。在該對話框右上方選擇“C#”“Windows”“桌面”選項(xiàng),在中間部分選擇“Windows窗體應(yīng)用程序(.NET
Framework)”選項(xiàng),并單擊“下一步”按鈕。創(chuàng)建項(xiàng)目(2)如圖2-2所示,將“項(xiàng)目名稱”命名為“Xk”,“位置”可根據(jù)自己的需要進(jìn)行選擇(Visual
Studio將為項(xiàng)目創(chuàng)建一個按項(xiàng)目名稱命名的新文件夾),“解決方案名稱”默認(rèn)與項(xiàng)目名稱保持一致(即“Xk”),在“框架”下拉列表中選擇“.NETFramework4.7.2”選項(xiàng)(或自己機(jī)器的最新版本),單擊“創(chuàng)建”按鈕。創(chuàng)建項(xiàng)目(3)新項(xiàng)目的最初元素如圖2-3所示,在“解決方案資源管理器”窗口(若找不到,則可以在“視圖”菜單中選擇“解決方案資源管理器”命令)中可以看到新項(xiàng)目包含名為Forml.cs的窗體文件、Program.cs文件,以及Properties屬性和相關(guān)引用。(4)在設(shè)計視圖和代碼視圖之間切換。(5)改變窗體的大小。切換到窗體的設(shè)計視圖,單擊窗體的右下角,當(dāng)鼠標(biāo)指針變?yōu)殡p向箭頭時,拖動窗體的角可以改變窗體的大小。(6)顯示“屬性”窗口。“屬性”窗口的默認(rèn)位置在Visual
Studio集成開發(fā)環(huán)境的右下部,用戶可以根據(jù)需要將其移動到其他位置。如果沒有顯示“屬性”窗口,則可以在“視圖”菜單中選擇“屬性”命令?!皩傩浴贝翱谥辛谐隽水?dāng)前所選的Windows窗體或控件的屬性,并且用戶可以在此處更改當(dāng)前的值。創(chuàng)建項(xiàng)目認(rèn)識Program.cs文件(1)如圖2-4所示,在“解決方案資源管理器”窗口中右擊“Forml.cs”選項(xiàng),在彈出的快捷菜單中選擇“重命名”命令。(2)如圖2-5所示,輸入新的名稱“frmMain.cs”。(3)按“Enter”鍵,彈出如圖2-6所示的對話框,提示是否將相關(guān)名稱的引用修改為新名稱,單擊“是”按鈕。認(rèn)識Program.cs文件02主窗體設(shè)計主菜單(MenuStrip)
(1)添加菜單。如圖2-7所示,切換到frmMain窗體的設(shè)計頁面,在“工具箱”窗口中展開“菜單和工具欄”選項(xiàng),將“MenuStrip”控件拖放到窗體中。(2)適當(dāng)調(diào)整窗體的大小。根據(jù)本系統(tǒng)的功能,先大致設(shè)計菜單,如圖2-8所示。主菜單(MenuStrip)
(3)設(shè)計菜單圖標(biāo)。如圖2-9所示,選擇“系部信息”菜單,在“屬性”窗口中找到“Image”屬性,單擊四按鈕。(4)如圖2-10所示,在彈出的對話框中,選中“本地資源”單選按鈕,單擊“導(dǎo)入”按鈕。主菜單(MenuStrip)
(5)如圖2-11所示,選擇我們需要的資源文件。本書配套資源的“教材項(xiàng)目\資源文件”文件夾中有一些圖片文件可供讀者選擇,當(dāng)然讀者也可以自行選擇自己喜歡的圖片。這里選擇“教材項(xiàng)目\資源文件”文件夾中的“Departmentpng”文件,單擊“打開”按鈕。主菜單(MenuStrip)
(6)返回“選擇資源”對話框,單擊“確定”按鈕。(7)類似地,給各菜單指定資源文件,最后完成的菜單如圖2-12所示。(8)現(xiàn)在,讀者已經(jīng)完成了應(yīng)用程序的設(shè)計,此時可以開始添加一些代碼以實(shí)現(xiàn)程序的功能。工具欄(ToolStrip)
(1)添加工具欄。如圖2-13所示,在“工具箱”窗口中展開“菜單和工具欄”選項(xiàng),將“ToolStri
p”控件拖放到窗體中。(2)如圖2-14所示,單擊ToolStrip控件的下拉按鈕,選擇“Button”選項(xiàng)。工具欄(ToolStrip)
(3)為剛剛添加的Button設(shè)置“Image”屬性,和菜單的設(shè)置操作類似。這里設(shè)置該Button的功能為報名,因此選擇一個和菜單中的“報名”命令一樣的圖片。(4)單擊ToolStrip控件的下拉按鈕,選擇“Separator”選項(xiàng),放置一個分隔符。工具欄(ToolStrip)
(5)單擊ToolStrip控件的下拉按鈕,選擇“Button”選項(xiàng)。將該工具欄按鈕設(shè)計為和菜單中的“退出”命令相同的功能。完成后的工具欄如圖2-15所示。(6)為工具欄按鈕指定功能。這里我們將工具欄上的“退出”按鈕指定為和“退出”命令相同的功能,具體操作如下。工具欄(ToolStrip)
(7)如圖2-16所示,右擊工具欄上的“退出”按鈕,在彈出的快捷菜單中選擇“屬性”命令。(8)如圖2-17所示,注意圖中鼠標(biāo)指針的位置,在“屬性”窗口單擊三按鈕,切換到“事件”選項(xiàng)卡。工具欄(ToolStrip)
(9)如圖2-18所示,在Click事件中單擊下拉按鈕,選擇“退出ToolStripMenuItem_Click”狀態(tài)欄(StatusStrip)
(1)如圖2-19所示,在“工具箱”窗口中展開“菜單和工具欄”選項(xiàng),將“StatusStrip”控件拖放到窗體中。(2)如圖2-20所示,單擊StatusStrip控件的下拉按鈕,選擇“StatusLabel”選項(xiàng)。狀態(tài)欄(StatusStrip)
(3)為剛剛添加的toolStripStatusLabell設(shè)置屬性如下。(4)單擊StatusStrip控件的下拉按鈕,選擇“StatusLabel”選項(xiàng),再添加一個StatusLabel,并設(shè)置屬性如下。多文檔界面(MDI)主窗體(1)確保選中fimMain窗體,在窗體的空白位置單擊即可。如圖2-22所示,設(shè)置frmMain窗體的“IsMdiContainer”屬性為“True”(設(shè)置該窗體為多文檔界面子窗體的容器)。多文檔界面(MDI)主窗體(2)如圖2-23所示,設(shè)置frmMain窗體的“Text”“WindowState”屬性如下。多文檔界面(MDI)主窗體(3)設(shè)置背景圖片。如圖2-24所示,在fmMain窗體的“屬性”窗口中找“Backgroundlmage”屬性,單擊四按鈕。多文檔界面(MDI)主窗體(4)在彈出的“選擇資源”對話框中,選中“本地資源”單選按鈕,單擊“導(dǎo)入”按鈕。(5)定位到“資源文件”文件夾中的“主窗體背景jpg”文件,單擊“打開”按鈕。(6)返回“選擇資源”對話框,單擊“確定”按鈕。多文檔界面(MDI)主窗體(7)如圖2-25所示,設(shè)置frmMain窗體的“BackgroundfmageLayout”屬性為“Stretch”(設(shè)置背景圖片為拉伸效果)。(8)如圖2-26所示,在frmMain窗體的“屬性”窗口中找到“Resize”事件并雙擊,為其編寫代碼如下。多文檔界面(MDI)主窗體(9)運(yùn)行效果如圖2-28所示。選擇“系統(tǒng)”→“退出”命令或單擊工具欄中的“退出”按鈕都可以退出系統(tǒng)。感謝觀看,再見!VisualStudio2019(C#)Windows數(shù)據(jù)庫項(xiàng)目開發(fā)VisualStudio2019(C#)Windows數(shù)據(jù)庫項(xiàng)目開發(fā)數(shù)據(jù)維護(hù)窗體開發(fā)第三章01系部數(shù)據(jù)維護(hù)(1)如圖3-1所示,在“解決方案資源管理器”窗口中右擊“Xk”選項(xiàng),在彈出的快捷菜單中選擇“添加”→“新建項(xiàng)”命令。創(chuàng)建數(shù)據(jù)集并添加系部表創(chuàng)建數(shù)據(jù)集并添加系部表(2)如圖3-2所示,在“添加新項(xiàng)”對話框中單擊“排序依據(jù)”下拉列表右側(cè)的薰按鈕,以小圖標(biāo)的方式查看,這樣可以看到更多的選項(xiàng)。在“已安裝”模板中選擇“數(shù)據(jù)”選項(xiàng),中間部分選擇“數(shù)據(jù)集”選項(xiàng),并在“名稱”文本框中輸入“dsXkxsd”,單擊“添加”按鈕。創(chuàng)建數(shù)據(jù)集并添加系部表(3)添加新的數(shù)據(jù)集后,系統(tǒng)會切換到如圖3-3所示的界面,單擊界面左下角的“服務(wù)器資源管理器”按鈕。(4)如圖3-4所示,在“服務(wù)器資源管理器”窗口中右擊“數(shù)據(jù)連接”選項(xiàng),在彈出的快捷菜單中選擇“添加連接”命令。(5)如圖3-5所示,確保數(shù)據(jù)源是“Microsoft
SQL
Server(SqlClient)”。(6)在“服務(wù)器資源管理器”窗口中展開剛才添加的連接,這里顯示為“hand\sqlexpress.
Xk.dbo”,其中,“hand”為編者的計算機(jī)名稱,讀者在操作時看到的顯示內(nèi)容可能不一樣,編者在不同的計算機(jī)上操作截圖時,也可能出現(xiàn)截圖中不是“hand”的情形。創(chuàng)建數(shù)據(jù)集并添加系部表(7)如圖3-7所示,在“服務(wù)器資源管理器”窗口中展開“數(shù)據(jù)連接”→“hand\sglexpress.
Xk.dbo”→“表”選項(xiàng),將“Department”表拖放到數(shù)據(jù)集的設(shè)計界面中。創(chuàng)建數(shù)據(jù)集并添加系部表設(shè)計“系部信息”窗體并維護(hù)數(shù)據(jù)(1)如圖3-8所示,在“解決方案資源管理器”窗口中右擊“Xk”選項(xiàng),在彈出的快捷菜單中選擇“添加”→“窗體(Windows窗體)”命令。(2)如圖3-9所示,默認(rèn)已經(jīng)選擇了“VisualC#項(xiàng)”→“窗體(Windows窗體)”選項(xiàng),在“名稱”文本框中輸入“fimDepartment.cs”,單擊“添加”按鈕。設(shè)計“系部信息”窗體并維護(hù)數(shù)據(jù)(3)將窗體調(diào)整為合適大小,設(shè)置窗體的“Text”屬性為“系部信息”。(4)如圖3-10所示,選擇“視圖”→“其他窗口”→“數(shù)據(jù)源”命令。(5)如圖3-11所示,在“數(shù)據(jù)源”窗口中確保Department左側(cè)的圖標(biāo)為DataGridView狀態(tài)。如果不是,可單擊Department右側(cè)的下拉按鈕,選擇“DataGridView”選項(xiàng)。(7)窗體中還自動添加了一些代碼。下面我們切換到該窗體的代碼中來觀察一下。(8)調(diào)整DataGridView控件的列標(biāo)題。如圖3-13所示,單擊DataGridView控件右上角的小三角按鈕,在彈出的設(shè)置面板中選擇“編輯列”選項(xiàng)。設(shè)計“系部信息”窗體并維護(hù)數(shù)據(jù)設(shè)計“系部信息”窗體并維護(hù)數(shù)據(jù)(9)如圖3-14所示,在“編輯列”對話框左側(cè)的“選定的列”列表框中選擇“DepartNo”選項(xiàng),并在右側(cè)綁定的屬性中,設(shè)置“HeaderText”屬性為“系部代碼”我們可以看到,“DataProperty
Name”屬性已經(jīng)被設(shè)置為“DepartNo”。實(shí)際上,顯示表中的哪一列數(shù)據(jù)就是由該屬性決定的。設(shè)計“系部信息”窗體并維護(hù)數(shù)據(jù)(10)在主窗體中加入調(diào)用frmDepartment窗體的代碼。如圖3-15所示,在“解決方案資源管理器”窗口中雙擊“frmMain.cs”選項(xiàng),打開該窗體的設(shè)計界面,雙擊“系部信息”菜單,將生成該菜單的Click事件框架。(11)編寫“系部信息”菜單的Click事件代碼如下。(12)按“F5”鍵運(yùn)行項(xiàng)目,在主窗體中選擇“系部信息”菜單,運(yùn)行效果如圖3-16所示。設(shè)計“系部信息”窗體并維護(hù)數(shù)據(jù)(13)在不違反數(shù)據(jù)庫相關(guān)約束規(guī)則的前提下,可以進(jìn)行如下測試。①添加一條記錄,單擊“保存”按鈕,在數(shù)據(jù)庫中驗(yàn)證是否加入了該記錄。②修改剛添加的記錄,單擊“保存”按鈕,在數(shù)據(jù)庫中驗(yàn)證是否修改了該記錄。③刪除剛添加的記錄,單擊“保存”按鈕,在數(shù)據(jù)庫中驗(yàn)證是否刪除了該記錄。設(shè)計“系部信息”窗體并維護(hù)數(shù)據(jù)02班級數(shù)據(jù)維護(hù)修改數(shù)據(jù)集并添加班級表(1)如圖3-17所示,在“解決方案資源管理器”窗口中雙擊“dsXkxsd”選項(xiàng),編輯數(shù)據(jù)集。修改數(shù)據(jù)集并添加班級表(2)如圖3-18所示,在“服務(wù)器資源管理器”窗口(如果看不到該窗口,可選擇“視圖”→“服務(wù)器資源管理器”命令)中展開“數(shù)據(jù)連接”→“hand\sqlexpress.Xk.dbo”→“表”選項(xiàng),將“Class”表拖放到數(shù)據(jù)集的設(shè)計界面中。(3)系統(tǒng)將根據(jù)數(shù)據(jù)庫中主外鍵的關(guān)系在數(shù)據(jù)集中添加對應(yīng)的關(guān)系。設(shè)計“班級信息”窗體并維護(hù)數(shù)據(jù)(1)在項(xiàng)目中添加新的Windows窗體,并命名為“fimClass”。(2)將窗體調(diào)整為合適大小,設(shè)置窗體的“Text”屬性為“班級信息”。(3)打開“數(shù)據(jù)源”窗口,如果看不到該窗口,可選擇“視圖”→“其他窗口”→“數(shù)據(jù)源”命令。(4)在“數(shù)據(jù)源”窗口中確保Class左側(cè)的圖標(biāo)為DataGridView狀態(tài),如果不是,可單擊Class右側(cè)的下拉按鈕,選擇“DataGridView”選項(xiàng)。設(shè)計“班級信息”窗體并維護(hù)數(shù)據(jù)(5)在“數(shù)據(jù)源”窗口中將“Class”表拖放到frmClass窗體中。(6)在主窗體中加入調(diào)用“班級信息”窗體的代碼。在“解決方案資源管理器”窗口中雙擊“fmMain.cs”選項(xiàng),打開該窗體的設(shè)計界面。雙擊“班級信息”菜單,為該菜單編寫Click事件,代碼如下。設(shè)計“班級信息”窗體并維護(hù)數(shù)據(jù)(7)在主窗體中選擇“班級信息”菜單,運(yùn)行效果如圖3-20所示。(8)如圖3-21所示,單擊DataGridView控件右上角的小三角按鈕,在彈出的設(shè)置面板中選擇“編輯列”選項(xiàng)。設(shè)計“班級信息”窗體并維護(hù)數(shù)據(jù)(9)如圖3-22所示,在“編輯列”對話框左側(cè)的“選定的列”列表框中選擇“DepartNo”選項(xiàng),并在右側(cè)綁定的屬性中,設(shè)置“ColumnType”屬性為“DataGridViewComboBoxColumn”,則該列顯示為下拉列表。設(shè)計“班級信息”窗體并維護(hù)數(shù)據(jù)(10)如圖3-23所示,設(shè)置“DataSource”屬性為“Department”。(11)如圖3-25所示,設(shè)置“DisplayMember”屬性為“DepartName”。(12)如圖3-26所示,設(shè)置“ValueMember”屬性為“DepartNo”。設(shè)計“班級信息”窗體并維護(hù)數(shù)據(jù)(13)將列標(biāo)題分別調(diào)整為“班級代碼”“所在系部”“班級名稱”,如圖3-27所示。(14)如圖3-28所示,讀者可自行設(shè)置各列的寬度,即“Width”屬性的值。設(shè)計“班級信息”窗體并維護(hù)數(shù)據(jù)(15)如圖3-29所示,設(shè)置“所在系部”列的“DisplayStyle”屬性為“Nothing”。此樣式在瀏覽模式時為普通的文本框,在進(jìn)入編輯模式時變?yōu)橄吕斜怼?16)單擊“確定”按鈕完成列的設(shè)置。設(shè)計“班級信息”窗體并維護(hù)數(shù)據(jù)(17)在主窗體中選擇“班級信息”菜單,運(yùn)行效果如圖3-30所示,可以看到“所在系部”列的內(nèi)容顯示為文本。(18)如圖3-31所示,在任意一個數(shù)據(jù)行單擊“所在系部”列中的單元格,可以看到出現(xiàn)了下拉列表,可供用戶選擇新的值。設(shè)計“班級信息”窗體并維護(hù)數(shù)據(jù)(19)在不違反數(shù)據(jù)庫相關(guān)約束規(guī)則的前提下,可以進(jìn)行如下測試。①添加一條班級記錄,其中的“所在系部”可在下拉列表中進(jìn)行選擇,單擊“保存”按鈕,在數(shù)據(jù)庫中驗(yàn)證是否加入了該記錄。同時,驗(yàn)證一下系部代碼是否為下拉列表中選擇的系部名稱對應(yīng)的系部代碼。②修改剛添加的記錄,單擊“保存”按鈕,在數(shù)據(jù)庫中驗(yàn)證是否修改了該記錄。③刪除剛添加的記錄,單擊“保存”按鈕,在數(shù)據(jù)庫中驗(yàn)證是否刪除了該記錄。03學(xué)生數(shù)據(jù)維護(hù)修改數(shù)據(jù)集并添加學(xué)生表(1)在“解決方案資源管理器”窗口中雙擊“dsXk.xsd”選項(xiàng),編輯數(shù)據(jù)集。(2)在“服務(wù)器資源管理器”窗口中展開“數(shù)據(jù)連接”→“home'sqlexpress.Xk.dbo”→“表”選項(xiàng),將“Student”表拖放到數(shù)據(jù)集的設(shè)計界面中。設(shè)計“學(xué)生信息”窗體并維護(hù)數(shù)據(jù)(1)在項(xiàng)目中添加新的Windows窗體,并命名為“frmStudent”。(2)將窗體調(diào)整為合適大小,設(shè)置窗體的“Text”屬性為“學(xué)生信息”。(3)打開“數(shù)據(jù)源”窗口,如果看不到該窗口,可選擇“視圖”→“其他窗口”→“數(shù)據(jù)源”命令。設(shè)計“學(xué)生信息”窗體并維護(hù)數(shù)據(jù)(4)如圖3-32所示,在“數(shù)據(jù)源”窗口中確保Student左側(cè)的圖標(biāo)為“詳細(xì)信息”狀態(tài)。如果不是,可單擊Student右側(cè)的下拉按鈕,選擇“詳細(xì)信息”選項(xiàng)。設(shè)計“學(xué)生信息”窗體并維護(hù)數(shù)據(jù)(5)在“數(shù)據(jù)源”窗口中將“Student”表拖放到frmStudent窗體中。如圖3-33所示,可以看到窗體中沒有DataGridView控件,而是以TextBox控件的方式來顯示和操作數(shù)據(jù)的。這就是在“數(shù)據(jù)源”窗口中將Student左側(cè)的圖標(biāo)分別設(shè)置為“DataGridView”和“詳細(xì)信息”狀態(tài)的區(qū)別。設(shè)計“學(xué)生信息”窗體并維護(hù)數(shù)據(jù)(6)在主窗體中加入調(diào)用“學(xué)生信息”窗體的代碼。在“解決方案資源管理器”窗口中雙擊“fimMain.cs”選項(xiàng),打開該窗體的設(shè)計界面。雙擊“學(xué)生信息”菜單,為該菜單編寫Click事件,代碼如下。設(shè)計“學(xué)生信息”窗體并維護(hù)數(shù)據(jù)(7)運(yùn)行程序,在主窗體中選擇“學(xué)生信息”菜單,運(yùn)行效果如圖3-34所示。設(shè)計“學(xué)生信息”窗體并維護(hù)數(shù)據(jù)(8)結(jié)束程序運(yùn)行,切換到“學(xué)生信息”窗體的設(shè)計界面,如圖3-35所示,將“ClassNo”右側(cè)的TextBox控件刪除,在“工具箱”窗口中展開“公共控件”選項(xiàng),將“ComboBox”控件拖放到“Class“。設(shè)計“學(xué)生信息”窗體并維護(hù)數(shù)據(jù)(9)如圖3-36所示,設(shè)置新添加的ComboBox控件的“DropDownStyle”屬性為“DropDownList”,使下拉列表只允許選擇,不允許輸入。(10)如圖3-37所示,單擊ComboBox控件右上角的小三角按鈕,在彈出的設(shè)置面板中勾選“使用數(shù)據(jù)綁定項(xiàng)”復(fù)選框。設(shè)計“學(xué)生信息”窗體并維護(hù)數(shù)據(jù)(11)如圖3-38所示,設(shè)置“數(shù)據(jù)源”為“Class”。如果已經(jīng)這樣操作過,則系統(tǒng)將自動添加classBindingSource控件,當(dāng)再次在“數(shù)據(jù)源”下拉列表中選擇時,選擇“classBindingSource”選項(xiàng)即可。設(shè)計“學(xué)生信息”窗體并維護(hù)數(shù)據(jù)(12)如圖3-39所示,設(shè)置“顯示成員”為“ClassName”。(13)如圖3-40所示,設(shè)置“值成員”為“ClassNo”。設(shè)計“學(xué)生信息”窗體并維護(hù)數(shù)據(jù)(14)如圖3-41所示,設(shè)置“選定值”為“studentBindingSource”下的“ClassNo”。(15)如圖3-42所示,調(diào)整各Label控件的“Text”屬性,使界面更友好。設(shè)計“學(xué)生信息”窗體并維護(hù)數(shù)據(jù)(16)繼續(xù)改進(jìn),將“性別”右側(cè)的文本框調(diào)整為下拉列表,以便在下拉列表中選擇“男”或“女”選項(xiàng),這樣比直接輸入方便。(17)如圖3-43所示,將“性別”右側(cè)的TextBox控件刪除,在“工具箱”窗口中展開“公共控件”選項(xiàng),將“ComboBox”控件拖放到“性別”右側(cè)。設(shè)計“學(xué)生信息”窗體并維護(hù)數(shù)據(jù)(
1
8
)設(shè)置“DropDownStyle”屬性為“DropDownList”,使下拉列表只允許選擇,不允許輸入。(19)如圖3-44所示,單擊ComboBox控件右上角的小三角按鈕,在彈出的設(shè)置面板中選擇“編輯項(xiàng)”選項(xiàng)。設(shè)計“學(xué)生信息”窗體并維護(hù)數(shù)據(jù)(20)如圖3-45所示,輸入兩行文字,分別為“男”“女”,單擊“確定”按鈕。(21)如圖3-46所示,選擇“性別”下拉列表,查看其屬性,展開“DataBindings”屬性列表,設(shè)置“Selectedltem”屬性為“studentBindingSource”下的“Sex”。設(shè)計“學(xué)生信息”窗體并維護(hù)數(shù)據(jù)(22)調(diào)整日期格式。如圖3-47所示,選擇“出生日期”右側(cè)的DateTimePicker控件,設(shè)置其“Format”屬性為“Custom”、“CustomFormat”屬性為“yyyy-MM-dd”,表示年(4位)、月(2位)、日(2位)的格式。(23)運(yùn)行程序,在主窗體中選擇“學(xué)生信息”菜單,運(yùn)行效果如圖3-48所示。設(shè)計“學(xué)生信息”窗體并維護(hù)數(shù)據(jù)
(24)在不違反數(shù)據(jù)庫相關(guān)約束規(guī)則的前提下,可以進(jìn)行如下測試。①添加一條學(xué)生記錄,其中的“所在班級”可在下拉列表中進(jìn)行選擇,單擊“保存”按鈕,在數(shù)據(jù)庫中驗(yàn)證是否加入了該記錄。同時,驗(yàn)證一下班級代碼是否為下拉列表中選擇的班級名稱對應(yīng)的班級代碼。②修改剛添加的記錄,單擊“保存”按鈕,在數(shù)據(jù)庫中驗(yàn)證是否修改了該記錄。③刪除剛添加的記錄,單擊“保存”按鈕,在數(shù)據(jù)庫中驗(yàn)證是否刪除了該記錄。04課程數(shù)據(jù)維護(hù)設(shè)計“課程信息”窗體(1)在“解決方案資源管理器”窗口中雙擊“dsXkxsd”選項(xiàng),編輯數(shù)據(jù)集。(2)在“服務(wù)器資源管理器”窗口中展開“數(shù)據(jù)連接”→“home'sqlexpress.Xkdbo”→“表”選項(xiàng),將“Course”表拖放到數(shù)據(jù)集的設(shè)計界面中。(3)在項(xiàng)目中添加新的Windows窗體,并命名為“frmCourse”。(4)將窗體調(diào)整為合適大小,設(shè)置窗體的“Text”屬性為“課程信息”。(5)打開“數(shù)據(jù)源”窗口,如果看不到該窗口,可選擇“視圖”→“其他窗口”→“數(shù)據(jù)源”命令。設(shè)計“課程信息”窗體(6)如圖3-49所示,在“數(shù)據(jù)源”窗口中確保Course左側(cè)的圖標(biāo)為“詳細(xì)信息”狀態(tài)。如果不是,可單擊Course右側(cè)的下拉按鈕,選擇“詳細(xì)信息”選項(xiàng)。(7)在“數(shù)據(jù)源”窗口中將“Course”表拖放到frmCourse窗體中。設(shè)計“課程信息”窗體(8)在主窗體中加入調(diào)用“課程信息”窗體的代碼。在“解決方案資源管理器”窗口中雙擊“fimMain.cs”選項(xiàng),打開該窗體的設(shè)計界面。雙擊“課程信息”菜單,為該菜單編寫Click事件,代碼如下。設(shè)計“課程信息”窗體(9)切換到frmCourse窗體的設(shè)計界面,調(diào)整各Label控件的“Text”屬性,使界面更友好,如圖3-50所示。(10)在主窗體中選擇“課程信息”菜單,運(yùn)行效果如圖3-51所示。維護(hù)課程數(shù)據(jù)(1)刪除courseBindingNavigator控件中的+、×、品按鈕。如圖3-52所示,右擊相應(yīng)按鈕,在彈出的快捷菜單中選擇“刪除”命令即可。(2)為了方便后面的代碼控制,我們將窗體上的Label控件和TextBox控件都放入一個GroupBox控件中。維護(hù)課程數(shù)據(jù)(3)如圖3-54所示,將相關(guān)的Label控件和Text控件拖放到GroupBox控件中,并適當(dāng)調(diào)整GroupBox控件及窗體的大小和位置。(4)在“工具箱”窗口中展開“菜單和工具欄”選項(xiàng),將“ToolStrip”控件拖放到窗體中。維護(hù)課程數(shù)據(jù)(5)如圖3-55所示,單擊ToolStrip控件右上角的小三角按鈕,在彈出的設(shè)置面板中設(shè)置其“Dock”屬性為“Bottom”。(6)將該ToolStrip控件的“Name”屬性設(shè)置為“tsControl”。維護(hù)課程數(shù)據(jù)(7)如圖3-56所示,在ToolStrip控件中添加5個Button控件。維護(hù)課程數(shù)據(jù)(8)將5個Button控件的“Text”屬性分別設(shè)置為“新增”“修改”“刪除”“保存”“放棄”。(9)為ToolStrip控件中新添加的5個Button控件設(shè)置“Image”屬性,讀者可以在資源文件夾中選擇圖片,也可以將其設(shè)置為自己喜歡的圖片。(10)將5個Button控件的“DisplayStyle”屬性都設(shè)置為“ImageAndText”。(11)將5個Button控件的“Name”屬性分別設(shè)置為“tsbInsert”“tsbEdit”“tsbDelete”“tsbSave”“tsbCancel”。維護(hù)課程數(shù)據(jù)(12)將“保存”和“放棄”這兩個按鈕的“Enabled”屬性設(shè)置為“False”。這5個按鈕將分別完成新增、修改、刪除、保存、放棄的操作,現(xiàn)在設(shè)計好的界面如圖3-57所示。維護(hù)課程數(shù)據(jù)(13)將GroupBox控件(gbEdit)中的4個TextBox控件(couNoTextBox、couNameTextBox、creditTextBox、limitNumTextBox)的“ReadOnly”屬性都設(shè)置為“True”,表示將最開始的課程代碼、課程名稱、學(xué)分、限選人數(shù)都設(shè)置為只讀狀態(tài)。(14)切換到代碼頁,編寫自定義方法ChangeEnabledState。該方法將數(shù)據(jù)導(dǎo)航條和“新增”“修改”“刪除”“保存”“放棄”按鈕的“Enabled”屬性狀態(tài)取反;將GroupBox控件(gbEdit)中的4個TextBox控件的“ReadOnly”屬性狀態(tài)取反,即原來為“True”狀態(tài)的將變?yōu)椤癋alse”狀態(tài),原來為“False”狀態(tài)的將變?yōu)椤癟rue”狀態(tài)。維護(hù)課程數(shù)據(jù)(15)雙擊“新增”按鈕,生成Click事件框架,并編寫代碼如下。(16)類似地,為“修改”按鈕編寫Click事件,代碼如下。(17)為“保存”按鈕編寫Click事件,代碼如下。維護(hù)課程數(shù)據(jù)(18)為“放棄”按鈕編寫Click事件,代碼如下。(19)為“刪除”按鈕編寫Click事件,代碼如下。維護(hù)課程數(shù)據(jù)(20)運(yùn)行程序,在主窗體中選擇“課程信息”菜單,運(yùn)行效果如圖3-58所示。(21)在不違反數(shù)據(jù)庫相關(guān)約束規(guī)則的前提下,可以進(jìn)行如下測試。感謝觀看,再見!VisualStudio2019(C#)Windows數(shù)據(jù)庫項(xiàng)目開發(fā)VisualStudio2019(C#)Windows數(shù)據(jù)庫項(xiàng)目開發(fā)系統(tǒng)登錄及權(quán)限管理第四章01系統(tǒng)登錄(1)在“解決方案資源管理器”窗口中右擊“Xk”選項(xiàng),在彈出的快捷菜單中選擇“添加”→“窗體(Windows窗體)”命令。(2)設(shè)置窗體的屬性如下。設(shè)計登錄窗體設(shè)計登錄窗體(3)如圖4-1所示,在窗體中放入一個PictureBox控件,兩個Label控件,兩個TextBox控件,兩個Button控件和一個CheckBox控件。(4)每個控件的“Text”屬性可以從圖4-1中看出來,這里就不再贅述了。設(shè)計登錄窗體(5)將“請輸入用戶名”右側(cè)的TextBox控件的“Name”屬性設(shè)置為“txtID”。(6)將“請輸入密碼”右側(cè)的TextBox控件的“Name”屬性設(shè)置為“txtPwd”、“PasswordChar”屬性設(shè)置為“*”。(7)設(shè)置txtID文本框的“Text”屬性為“001”、txtPwd文本框的“Text”屬性為“123”,這是其中一個管理員的用戶名和密碼。(8)設(shè)置“登錄”按鈕的“Name”屬性為“btnLogin”。設(shè)計登錄窗體(9)設(shè)置“退出”按鈕的“Name”屬性為“btnExit”。(10)設(shè)置PictureBox控件和兩個Button控件的“Image”屬性,適當(dāng)美化界面。(11)設(shè)置兩個Button控件的“ImageAlign”屬性為“MiddleLeft”。(12)將“管理員”復(fù)選框的“Name”屬性設(shè)置為“cblsManager”、“Checked”屬性設(shè)置為“True”。當(dāng)勾選該復(fù)選框時,表示以管理員身份登錄系統(tǒng),否則以學(xué)生身份登錄系統(tǒng)。(1)引入名稱空間。(
2
)在CPublic類中聲明一個靜態(tài)變量。(
3
)在CPublic類中聲明一個布爾型靜態(tài)變量isManager,用來識別用戶的登錄身份是管理員還是學(xué)生。該變量為“True”時表示登錄身份是管理員,為“False”時表示登錄身份是學(xué)生。編寫供全局使用的靜態(tài)類編寫供全局使用的靜態(tài)類(
4
)在CPublic類中聲明兩個靜態(tài)方法。publicstaticvoidCheckUsers(stringUserID,stringPwd)該方法根據(jù)參數(shù)傳入的用戶號、密碼與Users表中的信息進(jìn)行驗(yàn)證,如果驗(yàn)證正確,則給LoginInfo變量賦予登錄用戶的值,否則LoginInfo變量為空。publicstaticvoidCheckStudent(string
StuNo,stringPwd)該方法根據(jù)參數(shù)傳入的學(xué)號、密碼與Student表中的信息進(jìn)行驗(yàn)證,如果驗(yàn)證正確,則給LoginInfo變量賦予登錄用戶的值,否則Loginlnfo變量為空。(1)回到Login窗體的設(shè)計界面,雙擊“登錄”按鈕,為其編寫Click事件。(2)雙擊“退出”按鈕,為其編寫Click事件(即關(guān)閉登錄窗體),代碼如下。編寫登錄相關(guān)代碼編寫登錄相關(guān)代碼(3)運(yùn)行程序,結(jié)果如圖4-4所示。如果輸入的用戶名、密碼不正確,則給出提示信息并要求重新輸入。編寫登錄相關(guān)代碼(4)確保輸入正確的管理員用戶名和密碼,如用戶名為“001”、密碼為“123”,勾選“管理員”復(fù)選框,單擊“登錄”按鈕,將以管理員身份登錄系統(tǒng),登錄后的主界面如圖4-5所示。(5)確保輸入正確的學(xué)生用戶名和密碼,如用戶名為“00000001”、密碼為“123”,取消勾選“管理員”復(fù)選框,單擊“登錄”按鈕,將以學(xué)生身份登錄系統(tǒng)。02權(quán)限管理登錄信息(1)打開fimMain窗體的設(shè)計界面。窗體右下角的狀態(tài)欄里有一個名為Loginlnfo的Label控件,該控件是用來顯示登錄信息的。(
2
)為frmMain窗體的Load事件編寫如下代碼。登錄信息(3)frmMain窗體的左下角顯示了登錄人員的E-mail信息。如果希望用戶單擊此處時啟動郵件程序,則可以雙擊該toolStripStatusLabel控件,為其編寫Click事件,代碼如下。登錄信息(4)運(yùn)行程序,結(jié)果如圖4-6所示,可以看到界面右下角顯示了登錄人員的歡迎信息。(5)單擊界面左下角的E-mail信息,將啟動系統(tǒng)的默認(rèn)郵件系統(tǒng)。操作權(quán)限控制(1)改寫frmMain窗體的Load事件,編寫如下代碼。操作權(quán)限控制(2)運(yùn)行程序,以管理員身份登錄系統(tǒng),如圖4-
7所示,可以看到“學(xué)生選課”菜單不可用。(3)重新運(yùn)行程序,以學(xué)生身份登錄系統(tǒng),如圖4-8所示,可以看到僅“學(xué)生選課”“系統(tǒng)”兩個菜單可用。感謝觀看,再見!VisualStudio2019(C#)Windows數(shù)據(jù)庫項(xiàng)目開發(fā)VisualStudio2019(C#)Windows數(shù)據(jù)庫項(xiàng)目開發(fā)學(xué)生選課第五章01選課填報志愿界面設(shè)計(1)在“解決方案資源管理器”窗口中右擊“Xk”選項(xiàng),在彈出的快捷菜單中選擇“添加”→“窗體(Windows窗體)”命令,在“名稱”文本框中輸入“frmSelectCourse”,設(shè)置窗體的“Text”屬性為“選課”。(2)在“選課”窗體中放入兩個Label控件和兩個DataGridView控件。將兩個Label控件的“Text”屬性分別設(shè)置為“課程列表”和“已選課程”;將上方DataGridView控件的“Name”屬性設(shè)置為“dgvCourse”;將下方DataGridView控件的“Name”屬性設(shè)置為“dgvSelectCourse”。界面設(shè)計(3)切換到代碼視圖,加入如下代碼。(4)在frmSelectCourse類中聲明一個變量。(5)在fmSelectCourse類中編寫一個getStuCou方法,用于獲取登錄系統(tǒng)的學(xué)生已經(jīng)報名的課程信息。getStuCou方法的代碼如下。界面設(shè)計(
6
)在frmSelectCourse類中編寫一個getCourse方法,以便列出所有的課程,使學(xué)生可以從所有的課程中挑選自己喜歡的課程來報名。getCourse方法的代碼如下。(7)如果希望在窗體運(yùn)行時DataGridView控件能顯示期望的數(shù)據(jù),則可以先切換到設(shè)計界面,雙擊窗體的空白位置,產(chǎn)生Load事件框架,再切換到代碼界面,編寫如下代碼。(8)在“解決方案資源管理器”窗口中雙擊“frmMain.cs”選項(xiàng),打開該窗體的設(shè)計界面,如圖5-2所示,在fmMain窗體的“學(xué)生選課”菜單下添加“選課填報志愿”命令。(9)雙擊“選課填報志愿”命令,為其編寫Click事件,代碼如下。界面設(shè)計(10)這里以學(xué)號為“00000001”的學(xué)生身份登錄系統(tǒng),并在主菜單中選擇“學(xué)生選課”→“選課填報志愿”命令,運(yùn)行效果如圖5-3所示。界面設(shè)計界面設(shè)計(11)更改DataGridView控件的列標(biāo)題,切換到frmSelectCourse窗體的設(shè)計界面。如圖5-4所示,單擊窗體上方的DataGridView控件右上角的小三角按鈕,在彈出的設(shè)置面板中,確保不要勾選“啟用添加”“啟用編輯”“啟用刪除”“啟用列重新排序”復(fù)選框,選擇“編輯列”選項(xiàng)。界面設(shè)計(12)在彈出的“編輯列”對話框中單擊“添加”按鈕,打開“添加列”對話框,各選項(xiàng)的設(shè)置如圖5-5所示。(13)單擊“添加”按鈕,繼續(xù)添加新的列,各選項(xiàng)的設(shè)置如圖5-6所示。(14)單擊“添加”按鈕,繼續(xù)添加新的列,各選項(xiàng)的設(shè)置如圖5-7所示。(15)單擊“添加”按鈕,繼續(xù)添加新的列,各選項(xiàng)的設(shè)置如圖5-8所示。界面設(shè)計界面設(shè)計(16)單擊“添加”按鈕,繼續(xù)添加新的列,各選項(xiàng)的設(shè)置如圖5-9所示。(17)單擊“添加”按鈕,完成“報名”列的設(shè)置。(18)單擊“關(guān)閉”按鈕,結(jié)束列的添加。界面設(shè)計(19)如圖5-10所示,將“課程代碼”列的“DataPropertyName”(20)類似地,將“課程名稱”列的“DataPropertyName”屬性設(shè)置為“CouName”;將“學(xué)分”列的“DataPropertyName”屬性設(shè)置為“Credit”;將“限選人數(shù)”列的“DataPropertyName”屬性設(shè)置為“LimitNum”。(21)如圖5-11所示,設(shè)置“報名”列的屬性如下。(22)如圖5-12所示,注意圖中鼠標(biāo)指針的位置,單擊“報名”列的“DefaultCellStyle”屬性右邊的■按鈕。界面設(shè)計(23)如圖5-13所示,展開“Padding”屬性列表,設(shè)置“Left”和“Right”屬性的值均為“10”。單擊“確定”按鈕。界面設(shè)計界面設(shè)計(24)如圖5-14所示,單擊窗體下方的DataGridView控件右上角的小三角按鈕,在彈出的設(shè)置面板中,確保不要勾選“啟用添加”“啟用編輯”“啟用刪除”“啟用列重新排序”復(fù)選框,選擇“編輯列”選項(xiàng)。界面設(shè)計(25)在彈出的“編輯列”對話框中單擊“添加”按鈕,打開“添加列”對話框,各選項(xiàng)的設(shè)置如圖5-15所示。(26)單擊“添加”按鈕,繼續(xù)添加新的列,各選項(xiàng)的設(shè)置如圖5-16所示。界面設(shè)計(27)單擊“添加”按鈕,繼續(xù)添加新的列,各選項(xiàng)的設(shè)置如圖5-17所示。(28)單擊“添加”按鈕,繼續(xù)添加新的列,各選項(xiàng)的設(shè)置如圖5-18所示。(29)單擊“添加”按鈕,完成“取消”列的設(shè)置。(30)單擊“關(guān)閉”按鈕,結(jié)束列的添加。(31)如圖5-19所示,將“課程代碼”列的“DataPropertyName”屬性設(shè)置為“CouNo”。界面設(shè)計界面設(shè)計(32)類似地,將“課程名稱”列的“DataPropertyName”屬性設(shè)置為“CouName”;將“原志愿號”列的“DataPropertyName”屬性設(shè)置為“WillOrder”。(33)如圖5-20所示,注意圖中鼠標(biāo)指針的位置,單擊“取消”列的“DefaultCellStyle”屬性右邊的四按鈕。(34)如圖5-21所示,展開“Padding”屬性列表,設(shè)置“Left”和“Right”屬性的值均為“10”。單擊“確定”按鈕。(35)將兩個DataGridView控件的寬度調(diào)整為合適的值。界面設(shè)計(36)修改窗體的Load事件,代碼如下。(37)運(yùn)行測試,請讀者仔細(xì)觀察運(yùn)行效果。界面設(shè)計實(shí)現(xiàn)選課業(yè)務(wù)邏輯(1)按照下面的步驟完成本功能。①將dgvCourse
(課程列表)中選中的課程加入dgvSelectCourse
(已選課程)。②如果選中的課程是dgvSelectCourse中已有的課程,則不允許添加,并給出提示。③如果在dgvSelectCourse中已有5門課程,則不允許添加,并給出提示(本系統(tǒng)規(guī)定,每人限報5門課程)。(2)編寫自定義方法SCourse,代碼如下。實(shí)現(xiàn)選課業(yè)務(wù)邏輯實(shí)現(xiàn)選課業(yè)務(wù)邏輯(3)選中dgvCourse,在其事件列表中找到CellContentClick事件并雙擊,如圖5-22所示,產(chǎn)生事件框架。(4)編寫dgvCourse的CellContentClick事件代碼,如果單擊的是“Join”按鈕,則調(diào)用SCourse方法,代碼如下。實(shí)現(xiàn)選課業(yè)務(wù)邏輯實(shí)現(xiàn)選課業(yè)務(wù)邏輯(5)現(xiàn)在我們來控制:如果選中的課程是dgvSelectCourse中已有的課程,則不允許添加,并給出提示。改寫SCourse方法,代碼如下。(6)現(xiàn)在我們來控制:如果在dgvSelectCourse中已有5門課程,則不允許添加,并給出提示。改寫SCourse方法,代碼如下。實(shí)現(xiàn)選課業(yè)務(wù)邏輯實(shí)現(xiàn)選課業(yè)務(wù)邏輯(7)如圖5-23所示,在窗體中添加一個按鈕,設(shè)置“Text”屬性為“提交”。將該按鈕的“Name”屬性設(shè)置為“btnUpdat
e”。(8)編寫自定義方法CCourse。(9)選中dgvSelectCourse,在其事件列表中找到CellContentClick事件并雙擊,如圖5-24所示,產(chǎn)生事件框架。實(shí)現(xiàn)選課業(yè)務(wù)邏輯(10)編寫dgvSelectCourse的CellContentClick事件代碼,如果單擊的是“Cancel”按鈕,則調(diào)用CCourse方法,代碼如下。實(shí)現(xiàn)選課業(yè)務(wù)邏輯實(shí)現(xiàn)選課業(yè)務(wù)邏輯(11)雙擊“提交”按鈕,為其編寫Click事件,代碼如下。實(shí)現(xiàn)選課業(yè)務(wù)邏輯(12)運(yùn)行程序,可以進(jìn)行如下測試。①在“課程列表”列表框中雙擊某行,或者在“課程列表”列表框中選中某行后,單擊“選課”按鈕,“已選課程”列表框中將加入該行。②如果該課程代碼已經(jīng)存在,則給出相應(yīng)提示。③如果已選課程超過5門,則會給出相應(yīng)提示。④在“已選課程”列表框中雙擊某行,或者在“已選課程”列表框中選中某行后,單擊“取消選課”按鈕,“已選課程”列表框中將刪除該行。⑤單擊“提交”按鈕,會將報名結(jié)果寫入數(shù)據(jù)庫,志愿號按“已選課程”列表框中的順序排列。實(shí)現(xiàn)選課業(yè)務(wù)邏輯通過DataGridView控件拖動行確定選課志愿順序(1)設(shè)置dgvSelectCourse的屬性如下。(2)設(shè)置dgvCourse的屬性如下。(3)切換到代碼窗口,在SelectCourse類中聲明如下變量。通過DataGridView控件拖動行確定選課志愿順序(4)為dgvSelectCourse的MouseDown事件編寫如下代碼。通過DataGridView控件拖動行確定選課志愿順序(5)為dgvSelectCourse的MouseUp事件編寫如下代碼。(6)編寫自定義方法OnRowDragOver,強(qiáng)制行進(jìn)行重繪,代碼如下。(7)在按下鼠標(biāo)左鍵時移動鼠標(biāo)指針,開始拖動,為dgvSelectCourse的MouseMove事件編寫如下代碼。通過DataGridView控件拖動行確定選課志愿順序(8)在移動鼠標(biāo)指針過程中拖動數(shù)據(jù)行時執(zhí)行重繪,為dgvSelectCourse的DragOver事件編寫如下代碼。通過DataGridView控件拖動行確定選課志愿順序通過DataGridView控件拖動行確定選課志愿順序(9)將鼠標(biāo)指針移動至目標(biāo)行釋放時,為dgvSelectCourse的DragDrop事件編寫如下代碼。(10)為dgvSelectCourse的RowPostPaint事件編寫代碼,完成如下功能。①在將鼠標(biāo)指針移動至行上方時繪制一條紅線。②在行頭顯示序號。通過DataGridView控件拖動行確定選課志愿順序(11)運(yùn)行程序,界面如圖5-25所示。通過DataGridView控件拖動行確定選課志愿順序(12)測試。①在“已選課程”列表框中可以看到行頭有序號,即提交后報名的志愿號。②可以在“己選課程”列表框中拖動行來重新排列順序。③單擊“提交”按鈕,會將報名結(jié)果寫入數(shù)據(jù)庫,志愿號按“已選課程”列表框中的順序排列。02查詢報名結(jié)果界面設(shè)計(1)在項(xiàng)目中添加新的Windows窗體,并命名為“frmMyResult.cs”。(2)將窗體調(diào)整為合適大小,設(shè)置窗體的“Text”屬性為“我的報名結(jié)果”。(3)在“工具箱”窗口中展開“數(shù)據(jù)”選項(xiàng),將“DataGridView”控件拖放到窗體中,設(shè)置其“ReadOnly”屬性為“True”,保持其默認(rèn)的“Name”屬性為“dataGridView1”。相關(guān)代碼編寫(1)切換到該窗體的代碼視圖,添加如下代碼。(2)在frmMyResult類中編寫一個getStuCou方法,用于查詢指定學(xué)號(即登錄的學(xué)號,保存在CPublic.LoginInfo["StuNo"]中)的報名信息(報名信息保存在StuCou表中),因?yàn)樾枰@示課程名稱,所以進(jìn)行多表查詢(即與Course表的連接),代碼如下。相關(guān)代碼編寫(3)切換到設(shè)計視圖,雙擊窗體的空白位置,產(chǎn)生Load事件框架,為Load事件編寫如下代碼。(4)更改DataGridView控件的列標(biāo)題。切換到窗體的設(shè)計界面,單擊dataGridView1控件右上角的小三角按鈕,在彈出的設(shè)置面板中選擇“編輯列”選項(xiàng),如圖5-26所示。相關(guān)代碼編寫(5)在彈出的“編輯列”對話框中單擊“添加”按鈕,如圖5-27所示。(6)在打開的“添加列”對話框中設(shè)置新列的屬性,如圖5-28所示,單擊“添加”按鈕。相關(guān)代碼編寫(7)繼續(xù)設(shè)置新列的屬性,在“名稱”文本框中輸入“WillOrder”、“頁眉文本”文本框中輸入“志愿號”,單擊“添加”按鈕。(8)繼續(xù)設(shè)置新列的屬性,在“名稱”文本框中輸入“State”、“頁眉文本”文本框中輸入“狀態(tài)”,單擊“添加”按鈕。(9)單擊“關(guān)閉”按鈕,關(guān)閉“添加列”對話框。相關(guān)代碼編寫(10)如圖5-29所示,在“編輯列”對話框中,將“課程名稱”列的“DataPropertyName”屬性設(shè)置為“CouName”。(11)類似地,將“志愿號”列的“DataPropertyName”屬性設(shè)置為“WillOrder”、“狀態(tài)”列的“DataPropertyName”屬性設(shè)置為“State”。相關(guān)代碼編寫(12)在“解決方案資源管理器”窗口中雙擊“frmMain.cs”選項(xiàng),打開該窗體的設(shè)計界面,如圖5-30所示,在frmMain窗體的“學(xué)生選課”菜單下添加“我的報名結(jié)果”命令。相關(guān)代碼編寫(13)添加調(diào)用該命令的代碼。雙擊“我的報名結(jié)果”命令,為其編寫Click事件,代碼如下。相關(guān)代碼編寫(14)以學(xué)生身份登錄系統(tǒng),在“我的報名結(jié)果”窗體中選擇“學(xué)生選課”→“我的報名結(jié)果”命令,運(yùn)行效果如圖5-31所示。在該窗體中可以查看自己所有報名的課程,從“狀態(tài)”列中可以看到是否被選中。感謝觀看,再見!VisualStudio2019(C#)Windows數(shù)據(jù)庫項(xiàng)目開發(fā)VisualStudio2019(C#)Windows數(shù)據(jù)庫項(xiàng)目開發(fā)選課抽簽及抽簽結(jié)果查詢第六章01隨機(jī)抽簽產(chǎn)生選課結(jié)果設(shè)計存儲過程(1)在Windows操作系統(tǒng)中,選擇“開始”→“所有程序”→“MicrosoftSQLServer”→“SQL
Server
Management
Studio”命令,啟動SQLServerManagementStudio。(2)彈出“連接到服務(wù)器”對話框,在“服務(wù)器類型”下拉列表中選擇“數(shù)據(jù)庫引擎”選項(xiàng),在“服務(wù)器名稱”文本框中輸入“\SQLEXPRESS”,在“身份驗(yàn)證”下拉列表中選擇“Windows身份驗(yàn)證”選項(xiàng),并單擊“連接”按鈕。(3)在SQLServerManagementStudio的“對象資源管理器”窗口中展開“數(shù)據(jù)庫”→“Xk”→“可編程性”→“存儲過程”選項(xiàng)??梢钥吹絻蓚€存儲過程,分別為“dbo.
DrawLots”和“dbo.ExecuteDrawLots”。(4)右擊“dbo.DrawLots”選項(xiàng),在彈出的快捷菜單中選擇“修改”命令來查看dbo.DrawLots存儲過程。設(shè)計存儲過程設(shè)計存儲過程(5)類似地,讀者可以自行查看dbo.ExecuteDrawLots存儲過程。該存儲過程分5次調(diào)用dbo.DrawLots存儲過程,參數(shù)分別為1、2、3、4、5,分別表示對第1、2、3、4、5志愿抽簽,其代碼如下。調(diào)用存儲過程(1)在“解決方案資源管理器”窗口中雙擊“frmMain.cs”選項(xiàng),打開該窗體的設(shè)計界面。如圖6-3所示,在frmMain窗體的“選課抽簽結(jié)果”菜單下添加“隨機(jī)抽簽”命令。
(2)切換到代碼界面,添加如下代碼。(3)切換到設(shè)計界面,雙擊“隨機(jī)抽簽”命令,為其編寫Click事件,代碼如下。調(diào)用存儲過程(4)以管理員身份登錄系統(tǒng)。登錄后,選擇“選課抽簽結(jié)果”→“隨機(jī)抽簽”命令。(5)單擊“是”按鈕,確認(rèn)執(zhí)行抽簽操作。這里從界面上看不出什么效果,讀者可以配合任務(wù)6.2的執(zhí)行結(jié)果來查看本功能的執(zhí)行情況。調(diào)用存儲過程02按課程查看選課結(jié)果界面設(shè)計(1)在項(xiàng)目中添加新的Windows窗體,并命名為“frmChooseCourseResult.cs”。(2)將窗體調(diào)整為合適大小,設(shè)置窗體的“Text”屬性為“按課程查看選課結(jié)果”。(3)在“工具箱”窗口中展開“公共控件”選項(xiàng),將“ComboBox”控件拖放到窗體中。設(shè)置ComboBox控件的“Name”屬性為“cbCourse”、“DropDownStyle”屬性為“DropDownList”。界面設(shè)計(4)在“工具箱”窗口中展開“數(shù)據(jù)”選項(xiàng),將“DataGridVicw”控件拖放到窗體中。設(shè)置DataGridView控件的“ReadOnly”屬性為“True”、“AllowUserToAddRows”屬性為“False”、“AllowUserToDeleteRows”屬性為“False”,保持其默認(rèn)的“Name”屬性為“dataGridView1”。(5)設(shè)計dataGridView1中各列的屬性。①將“班級”列的“Name”和“DataPropertyName”屬性都設(shè)置為“ClassName”、“HeaderText”屬性設(shè)置為“班級”。界面設(shè)計②將“學(xué)號”列的“Name”和“DataPropertyName”屬性都設(shè)置為“StuNo”、“HeaderText”屬性設(shè)置為“學(xué)號”。③將“姓名”列的“Name”和“DataPropertyName”屬性都設(shè)置為“StuName”、“HeaderText”屬性設(shè)置為“姓名”。④將“性別”列的“Name”和“DataPropertyName”屬性都設(shè)置為“Sex”、“HeaderText”屬性設(shè)置為“性別”。⑤將“出生日期”列的“Name”和“DataPtopertyName”屬性都設(shè)置為“BirthDay”、“HeaderText”屬性設(shè)置為“出生日期”。相關(guān)代碼編寫(1)切換到該窗體的代碼視圖,添加如下代碼。(2)下拉列表cbCourse是用來選擇課程的。為該窗體編寫一個自定義方法getCourse,該方法的代碼如下。相關(guān)代碼編寫(3)dataGridView1用于顯示下拉列表中選定課程的學(xué)生名單。為該窗體再編寫一個自定義方法getStudent,該方法的代碼如下。相關(guān)代碼編寫(4)為了使窗體啟動時下拉列表和DataGridView控件中有正確的數(shù)據(jù),可以切換到窗體的設(shè)計界面,雙擊窗體的空白位置,產(chǎn)生Load事件框架,并編寫Load事件代碼如下。相關(guān)代碼編寫(5)為了在下拉列表發(fā)生變化時能夠正確地獲得該門課程的學(xué)生名單,可以切換到窗體的設(shè)計界面,雙擊cbCourse,產(chǎn)生SelectedindexChanged事件框架,為SelectedindexChanged事件編寫代碼如下。相關(guān)代碼編寫(6)在“解決方案資源管理器”窗口中雙擊“frmMain.cs”選項(xiàng),打開該窗體的設(shè)計界面。如圖6-5所示,在fmMain窗體的“選課抽簽結(jié)果”菜單下添加“按課程查看抽簽結(jié)果”命令。相關(guān)代碼編寫(7)添加調(diào)用該命令的代碼。雙擊“按課程查看抽簽結(jié)果”命令,為其編寫Click事件,代碼如下。相關(guān)代碼編寫(8)在主窗體中選擇“選課抽簽結(jié)果”→
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024至2030年重型自動焊接操作機(jī)項(xiàng)目投資價值分析報告
- 2024至2030年西方人物雕像項(xiàng)目投資價值分析報告
- 2024年版:綜合管件采購合同樣本
- 提供綠化勞務(wù)合同范例
- 個人短租房合同范例
- 陜西鐵路工程職業(yè)技術(shù)學(xué)院《聚合物科學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 2024年非標(biāo)墊圈項(xiàng)目可行性研究報告
- 地塊變換合同范例
- 2024年解吸除氧器項(xiàng)目可行性研究報告
- 勞動教育合同范例
- 風(fēng)力發(fā)電項(xiàng)目報價清單 (風(fēng)機(jī)基礎(chǔ)等)
- DB41∕T 2001-2020 金銀花扦插育苗技術(shù)規(guī)程
- 臨床路徑及在麻醉科的應(yīng)用
- 車輛架大修規(guī)程分析
- 第三章熱分析
- “小學(xué)數(shù)學(xué)概念教學(xué)”課題研究
- 視神經(jīng)炎專家共識PPT醫(yī)學(xué)課件
- word中表格的使用(課堂PPT)
- 變電站電氣工程質(zhì)量監(jiān)理旁站點(diǎn)及旁站監(jiān)理記錄
- 流動資金缺口測算表
- 混凝土結(jié)構(gòu)設(shè)計原理課程設(shè)計
評論
0/150
提交評論