freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

畢業(yè)設(shè)計論文-基于net的駕校理論考試模擬系統(tǒng)(編輯修改稿)

2025-01-08 16:31 本頁面
 

【文章內(nèi)容簡介】 據(jù)庫的參數(shù)等,應(yīng)用程序的數(shù)據(jù)訪問層都基于該類。 類 SQLHelper 封裝 了 函 數(shù) AddMyCommandParams() 和函 數(shù)AddDataAdapterParam(),添加 了 存儲過程 的 參數(shù)。函數(shù) AddMyCommandParams()是添加 SqlCommand() 對象 的參 數(shù), 函數(shù) AddDataAdpterParam()則 是添 加SqlDataAdapter對象 的 參數(shù)。 函數(shù) GetCacheParameters(),該函數(shù)從 Caching對象中獲取緩存的數(shù)據(jù)庫參數(shù)。如果參數(shù)值為空,則 要 重新構(gòu)造數(shù)據(jù)庫參數(shù)并添加到 Caching對象中, 當再次需要獲取參數(shù)時,只要從 Caching對象 中 獲取即可。 5. 2 用戶登錄和新用戶注冊 5. 2. 1用戶界面設(shè)計 用戶在登錄由 ,它的代碼隱藏在 件 中 。用戶登錄是應(yīng)用 程序的主要入口,用戶只有通過該入口才能進入系統(tǒng)。 由于用戶 所屬的角色不相同,所以在登錄時 都 要選擇 自己 所屬的角色 , 否則不能進入系統(tǒng)。 用戶登錄使用了兩個 TextBox控件作為輸入名稱和密碼,用戶單擊“確定”按鈕 就 可以登錄到系統(tǒng)。單擊“注冊”按鈕可以重新注冊一個用戶。 用戶的角色是從 Roles表中獲取的, 考生為 默認角色 。 用戶登錄使用了兩個驗證控件,它們?yōu)?RFVUserNamet和 RFVPassword,分別驗證用戶名稱和用戶密碼是 否為非空 。 兩個非空驗證控件僅僅對“確定”按鈕有效,其 實現(xiàn)方法就是把“注冊”控鈕的屬性 CausesValidation值設(shè)為 False。 5. 2. 2用戶登錄 用戶登錄過程是一個驗證過程,應(yīng)用程序首先從數(shù)據(jù)庫獲取該用戶的信息,如用戶名稱和用戶角色,然后再根據(jù)用戶的角色顯示用戶的下一步操作頁面。如果考生登錄,顯示生成等待頁面和在線答題頁面;如果管理登錄,顯示題庫頁面;如果系統(tǒng)管理員登錄,則顯示系統(tǒng)維護頁面。無論用戶是什么樣的角色登錄,系統(tǒng)都將保存該用戶的 ID 和角色 ID。 用戶單擊“確定”按鈕觸發(fā)事件 SureBtn_Click()來 實現(xiàn)用戶登錄驗證過程。該 事件調(diào)用了數(shù)據(jù)訪問層的函數(shù) GetUserLogin()驗證用戶的輸入,如果是正確的 , 用戶 就 登錄到系統(tǒng)中。否則頁面 將 彈出錯誤信息的提示。 函數(shù) GetUserLogin()從數(shù)據(jù)庫獲取合法用戶的 ID數(shù)據(jù) ,函數(shù) GetUserLogin() 第 9 頁 共 25頁 調(diào)用存儲過程 Pr_GetUserLogin()訪問數(shù)據(jù)庫。 為了整個系統(tǒng)的安全性,在用戶表 Users中的存儲用戶的密碼 Password字段不是用戶密碼的真實值,而是加密后的密碼字符串。加密函數(shù) Encrypt()被定義為 UserDB類的靜態(tài)函數(shù)。調(diào)用加密函數(shù)時,首先把加密字符串編碼成 Uncode,然后使用系統(tǒng)的不對稱加密 算法 MD5加密用戶密碼串。 5. 2. 3用戶注冊 添加新的用戶有兩種方式,一種是從后臺的用戶管理中添加用戶,另一種是用戶注冊,用戶注冊方式只能添加考生 。因為具有管理員角色的用戶可以直接進入到系統(tǒng)后臺進行管理。 用戶注冊 時 分別輸入用戶名稱、用戶密碼、確認密碼和用戶的電子郵箱信息即可 。 前 三個控件都用了驗證控件和一個正則表達式 , 電子郵箱 則 使用格式驗證。 單擊“確定”按鈕觸發(fā)事件 SureBtn_Click(),該事件調(diào)用數(shù)據(jù)訪問層函數(shù)AddUser()提交新用戶注冊信息到表 Users中。 SureBtn_Click()事件調(diào)用函數(shù)AddUser(),AddUser()調(diào)用存儲過程 Pr_AddUser添加新用戶信息到 Users中 。在添加的過程中,還查看 Users表中是否有同名稱用戶,有同名用戶就不添加當前的用戶。 5. 3 用戶 及其權(quán)限管理 5. 3. 1用戶管理 系統(tǒng)管理員可以對 用戶管理和 用戶 角色 分配 管理等功能,此功能的關(guān)系圖 5所示。 圖 5 用戶管理與角色管理關(guān)系流程圖 否 是 用戶管理和角色管理 用戶管理 角色權(quán)限管理 用戶角色分配 系統(tǒng)管理員否 開始 結(jié)束 第 10 頁 共 25頁 用戶 管理功能由頁面 ,用戶管理模塊實現(xiàn)了用戶的刪除、角色的 分 配、密碼的修改。 界面設(shè)計如圖 6所示: 圖 6 用戶管理 及角色管理 用戶列表框顯示系統(tǒng)當前包含 的 所 有用戶 ,系統(tǒng)管理員單擊“ X”按鈕即可刪除當前列表框被選中的用戶。 單擊“/”按鈕即可添加新 用戶 。 用戶 管理頁面初始化時,調(diào)用 BindData()實現(xiàn)綁定用戶列表控件,該函數(shù)調(diào)用數(shù)據(jù)訪問層UserDB類的函數(shù) GetUser()從用戶表中獲取用戶和用戶 ID等數(shù)據(jù)。 單擊刪除 “ X” 按鈕實現(xiàn)刪除用戶的功能,該按鈕為圖像按鈕,單擊此按鈕觸發(fā)事件 deleteBtn_Click()。該事件調(diào)用數(shù) 據(jù)訪問層 UserDB類的函數(shù)DeleteUser()刪除數(shù)據(jù)庫中的用戶記錄。刪除列表中的用戶 之 后,該事件還要 重新綁 定 用戶數(shù)據(jù)。 單擊添加 “ /” 按鈕實現(xiàn)實現(xiàn)用戶添加功能, 此按鈕為圖像按鈕, 單擊此按鈕觸發(fā)事件 AddBtn_Click()。 用戶密碼同樣是采用 MD5加密函數(shù) Encry(),事件調(diào)用數(shù)據(jù)訪問層 UserDB類的函數(shù) AddUser()添加新的用戶到數(shù)據(jù)庫中。添加后事件重新綁定用戶數(shù)據(jù)。 5. 3. 2用戶角色 管理 用戶 角色 管理實現(xiàn)用戶角色的分配功能。系統(tǒng)存在角色較多 , 不同的角色具有不同的操作權(quán)限。如系統(tǒng)管理員具有該角色 的 用戶 可以維護和管理整個系 統(tǒng);第 11 頁 共 25頁 管理員角色的用戶可以管理整個系統(tǒng),如可以添加系統(tǒng)考試試題,創(chuàng)建不同類型的試卷 ;不同的 考生分配不同的試卷,而且參加考試 后 只能 看到自己的考試成績。用戶角色管理由頁面 。 用戶角色管理頁面初始化時調(diào)用 函數(shù) BindUserData(),調(diào)用數(shù)據(jù)訪問層的UserDB類的函數(shù) GetUsers()從表中獲取用戶數(shù)據(jù) , 然后再綁定到用戶列表控件。函數(shù) BindRoleData()調(diào)用數(shù)據(jù)訪問層的 RoleDB類的函數(shù) GetGetRoles()從表中獲取用戶數(shù)據(jù) , 然后再綁定 數(shù)據(jù) 到 角色 列表控件。 函數(shù) BindUserRoleData()調(diào)用數(shù)據(jù)訪問層的 UserDB類的函數(shù) GetSingleUser()從表中獲取用戶數(shù)據(jù) , 然后再綁定到用戶角色控件。 用戶單擊“設(shè)為該用戶的角色”按鈕觸發(fā)事 件 ,該事件實現(xiàn)用戶角色之間的關(guān)聯(lián)功能,事件調(diào)用函數(shù) UpdateUserRole()修改用戶表的角色字段值。 5. 3. 3用戶密碼修改 修改密碼由 , 用戶修改自己的密碼時必須知道自己以前的密碼 , 否則不能修改密碼。 單擊“確定”后 觸發(fā)事件 SureBtn_Click().先判斷新 密碼 的 兩次輸入是否一致。如果一致 , 就把新的密碼更新到數(shù)據(jù)庫 ,該事件調(diào)用數(shù)據(jù)訪問層 UserDB類的函數(shù) UpdateUserPassword()修改表中的密碼。 此函數(shù)獲取用戶的名稱,用戶只能修改自己的密碼,不能更改名稱。 5. 4題庫設(shè)計 題庫設(shè)計主要是試題的添加、刪除和修改 ,試題圖片的添加、修改和刪除,試題種類的添加、修改、刪除排序及試題的答案添加 、 刪除和修改等。 5. 4. 1試題種類管理 試題 種類 管理由頁面 , 試題種類管理實現(xiàn)了試題種類的添加、修改、排序和刪除功能。 頁面有 “↑”“↓”“∕” “ X”和“增加新的試題種類”, 按鈕分別實現(xiàn)試題種類的上移、下移、修改 、刪除 和添加功能。試題類別管理使用函數(shù) BindQuesKindData(),該函數(shù)首先從 QuestionKinds表 中獲取試題的種類數(shù)據(jù),然后再把數(shù)據(jù)綁定到列表控件。 用戶在文本框中輸入試題種類的名稱,然后單擊“增加新的試題種類”按鈕觸發(fā)事件 AddQuesKind_Click(),該函數(shù)添加新的試題種類,它調(diào)用數(shù)據(jù)訪問層的QuestionKindDB類的函數(shù) AddQuesKind(String sKindName,int nOrder)實現(xiàn)添加功能。 單擊“↑”“↓”“∕”、“ X”按鈕 都屬于 ImageButton類型按鈕,在此使用同一個函數(shù) MoveEdit_Click()實現(xiàn)所有按鈕的單擊事件,該函數(shù)通過參數(shù)CommandName區(qū)別是那個按鈕觸發(fā)的事件,然后再使用 switch語句調(diào)用不同的操第 12 頁 共 25頁 作函數(shù)。函數(shù) UpdateQuesKindName()和函數(shù) UpdateBtn_Click()實現(xiàn)試題種類的修改功能。函數(shù) UpdateQuesKindName()從試題種類表 QuestionKinds中獲取修改前試題種類名稱,并顯示在網(wǎng)頁 上,函數(shù) UpdateBtn_Click()修改試題的種類名稱。 函數(shù) DeleteQuesKind()實現(xiàn)試題種類的刪除功能,該函數(shù)從試題種類表QuestionKinds中刪除選中的試題種類,然后 再 重新綁定試題種類數(shù)據(jù) 。 5. 4. 2試題圖片管理 試題圖片管理由頁面 ,試題圖片管理主要實現(xiàn)圖片的添加 、 刪除 、 修改等功能。 界面設(shè)計如圖 7所示: 圖 7 試題圖片管理 試題圖片管理在初始頁面 時調(diào)用函數(shù) BindPictureData(),該函數(shù)首先從表Pictures中獲取 所有圖片的 信息,然后再把數(shù)據(jù)綁定到列表控件。圖片都是上傳到系統(tǒng) 的一個文件夾中,顯示圖片的時候 都是從數(shù)據(jù)庫獲取該圖片的路徑,然后在顯示在頁面上。單擊“上傳”按鈕即是添加新 的圖片, 添加圖片后,然后重新綁定數(shù)據(jù)。單擊“ /”、“ X”此按鈕即可修改圖片信息和刪除圖片。 5. 4. 3添加試題 添加試題功能由頁面 ,一個試題至少包含幾個屬性:試題的內(nèi)容、試題的類型、試題所在的章節(jié)、試題的分值及試題的創(chuàng)建時間和添加的用戶用戶名稱。 添加試題頁面使用函數(shù) BindQuesKindData(),該函數(shù)首先從 QuestionKinds表中獲取試題種類的數(shù)據(jù),然后再把數(shù)據(jù)綁定到列表控件。函數(shù)BindQuesPictureData()首先從 Pictures表中獲取圖片信息,然后再把數(shù)據(jù)綁定到列表控件。 用戶單擊“確認提交”按鈕觸發(fā)事件 AddNewQuestion_Click(),該事件添加試題,在添加時獲取問題 ID和圖片 ID就可以成功的添加一道新的試題。 第 13 頁 共 25頁 5. 4. 4修改試題 修改試題由頁面 ,它的界面設(shè)計和添加 試題相似。修改試題頁面調(diào)用函數(shù) Page_Load()綁定試題種類、試題圖片和被修改問題 。 其中綁定試題種類和試題圖片同添加試題相似,綁定修改問題數(shù)據(jù)功能由函數(shù)BindQuestionData()實現(xiàn)。 用戶單擊“確認修改”按鈕觸發(fā)事件 UpdateQuestion_Click()實現(xiàn)試題的修改功能。該事件和添加試題事件有很多相同之處。 5. 4. 5刪除試題 刪除試題功能由頁面 , 刪除試題和修改試題實現(xiàn)有很多相同之處。 用戶單擊“確認刪除”按鈕觸發(fā)事件 DeleteMyQuestion_Click(),該事件刪除選中的試題。 5. 4. 6試題答案設(shè)計 試題答案和試題是不可分割的,在此系統(tǒng)中,每個試題都有三個 答案與之對應(yīng) ,只一個正確 答案 。試題答案設(shè)計 實現(xiàn)。 在下拉列表選擇框中顯示試題種類,在普通列表框中顯示試題,單擊“添加試題答案”按鈕跳轉(zhuǎn)到答案添加頁面 。試題管理界面用戶函數(shù)Page_Load()進行初始化,函數(shù) Page_Load()調(diào)用函數(shù) BindQuesKindData()和BindQuestionData()函數(shù)。 函數(shù) BindQuesKindData()綁定下拉列表控件的數(shù)據(jù),如試題種類 。 還調(diào)用數(shù)據(jù)訪問層 QuestionKindDB類的函數(shù) GetQuesKinds()從表 QuestionKinds中獲取試題種類數(shù)據(jù);函數(shù) BindQuestionData()綁定普通列表控件的數(shù)據(jù),如試題內(nèi)容。該函數(shù)調(diào)用數(shù)據(jù)訪問層 QuestionDB類的 GetQuestions()函數(shù)從表 Questions中獲取試題信息。用戶單擊“添加問題答案”按鈕觸發(fā)事件 AddQuesAnswer_Click(),該事件首先判斷試題列表中某個試題項。如果已經(jīng)選擇,則跳轉(zhuǎn)到試題答案添加頁面 , 否 則系統(tǒng) 將 提示你沒有選擇數(shù)據(jù)。 private void AddQuesAnswer_Click(object sender, e) { (~/Admins/?QuestionID= + )。} 事件 QuesKindList_SelectedIndex
點擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1