# Adien的小檔案 你好!我叫Adien,從我幾乎甚麼程式語言都不會到現在可以自己寫一個簡單的程式為止,已經過8個月了,最開始是因為對目前工作的未來充滿不確定感,於是自己找了實體補習班的課程來學習,就這樣學了C#到現在。 非常感謝老師的指導,讓我最初從對C#的眼花撩亂,到功能開發完成時獲得的成就感,慢慢覺得軟體開發真的很有趣 課程管理系統,這是我從開始接觸C#時做的一個功能簡易的作品,也是我第一個完成的作品 :::success ## 課程管理系統(WPF) - 簡介 - 登入功能 - 使用者權限 - 功能介紹 > 1. 修改密碼 > 2. 使用者資訊管理 > 3. 學生資訊管理 > 4. 講師資訊管理 > 5. 課程資訊管理 > 6. 開課資訊管理 ::: 簡介 === :::warning - 開發的使用對象是某教育單位的管理員(例如:學校、補習班等...)及選課的學生 - 開發工具 : 微軟的**Visual Studio 2022**, - 程式語言 : **C#** - 使用者介面 : **WPF**(.NET Framework) - 資料庫 : **SQL Server Management Studio**(MSSQL) - 使用者介面 : **WPF**(.NET Framework),採**三層式架構**,並結合**ADO** **.** **NET**來實作 > 三層式架構  ::: 登入功能 === :::danger  ::: 使用者權限 === - 登入者為**系統管理員**時 :::info 在登入頁面中將使用者分為管理員專用的登入頁面和學生專用的登入頁面,再依照登入頁面去給予使用者等級,按等級去限制使用者可使用的系統功能  因此我在功能頁面中用switch去決定要對使用者開放那些功能 程式碼如下 ``` var current = ((App)Application.Current).CurrentUser; switch (current.Level) { case "Manager": this.TextBlockUserLevel.Text = "角色:系統管理員"; break; case "Student": this.TextBlockUserLevel.Text = "角色:學生"; this.BtnUserInfo.Visibility = Visibility.Collapsed; //關閉使用者資訊 this.BtnCourseScheduleManager.Visibility = Visibility.Collapsed; //關閉課表資訊 this.BtnTeacherManager.Visibility = Visibility.Collapsed; //關閉講師資訊 this.BtnCourseManager.Visibility = Visibility.Collapsed; //關閉課程資訊 break; } ``` ::: 功能介紹 === - **修改密碼** - 在主畫面功能中按下**修改密碼** :::info 為了確認當前使用者是否為帳號持有者,因此設定上必須輸入原始密碼,並確認就密碼與新密碼是否同時填寫,為避免新密碼在輸入時可能輸入錯誤,因次需要再一次輸入新密碼,來避免因為輸入失誤導致帳號無法再登入的情況發生    最後,確認原始密碼與新密碼都沒有錯誤時按下**確認變更密碼**,系統提示密碼變更完成  ::: --- - **使用者資訊管理** - 在主畫面功能中按下**使用者資訊管理** :::info  **新增** - 帳號為必填項目,信箱則非必填 - 密碼使用預設 >若要變更個人密碼,請在新增後由該帳號使用者登入後再行變更密碼 >  - 帳號不可重複    新增完成後,使用查詢確認資料是否寫入資料庫  **查詢** - 不使用條件直接查詢會全部查詢  - 可使用管理員的名稱來查詢  - 可使用信箱來查詢  **修改** - 在資料視窗中選擇想要修改的資料後,資料會繫結到右側的畫面中 - 因管理員的名稱為使用者登入時的帳號,因此右側的管理員名稱(帳號)欄位設定為唯讀不可修改    **刪除** - 選擇想要刪除資料後,按下按鈕**刪除**後,系統提示「用戶已刪除」時,表示資料已刪除  - 在管理員剩下一位時,則無法再進行刪除  ::: --- ## 系統管理員權限 - **學生資訊管理** :::warning  ::: :::info - **新增** 當使用者按下畫面中的**新增**按鈕時,會跳出新增學生資料的視窗   - 其中學生姓名及信箱(帳號)設為必填項目 密碼則使用預設密碼(採使用者登入後自行修改的機制),連絡電話則為非必填(可空白)  - 若資料確認無誤後,按下按鈕**建立**,系統跳出提示訊息「**學生資料建立完成**」時,表示資料已成功建立  - 關閉新增功能的視窗後,可按下按鈕**查詢**來確認剛剛新增的資料是否存在資料庫中  **查詢** 查詢功能有兩種方式 - 不輸入任何查詢條件,按下按鈕**查詢**,會進行查詢全部的動作  - 也可輸入學生姓名或信箱來進行條件查詢,但是必須完成正確才能查詢到資料  **修改** - 在使用按鈕**查詢**後  - 點選想要進行資料修改的學生資訊,系統會將該名學生可修改的資料繫結至右側,並在右側輸入想要更改的資訊後  按下按鈕**修改**後,系統提示「資料已修改」,表示修改成功  **刪除** - 選擇想要刪除的學生資訊後按下按鈕**刪除**後,系統提示「學生資料已刪除」,表示該名學生資訊已刪除   - 若該名學生已有選課則無法刪除  **退選課程** - 在學生資訊中選擇學生資料時,系統會自動查詢學生已選課的課程資訊,並將資料繫結至下方的**學生選課資訊**視窗中  - 選擇想要退選的課程後,按下按鈕**退選課程**後,系統提示「課程已退選」表示學生所選課程資料已刪除  ::: --- - **講師資訊管理** :::info 講師資訊管理頁面  **新增** - 在講師頁面按下按鈕**新增**後會跳出新增視窗  - 其中講師姓名及信箱為必填項目  - 確認資料無誤後,按下按鈕**建立教師資料**後,系統提示「**講師資料建立完成**」表示新增成功  **查詢** 查詢功能有兩種方式 - 不輸入任何查詢條件,按下按鈕**查詢**,會進行查詢全部的動作  - 也可輸入講師姓名或信箱或手機來進行條件查詢(但查詢條件的輸入必須完全正確)  **修改** - 在畫面中選擇想要修改的講師資料  - 確認資料無誤後按下按鈕**修改**後,系統提示「**資料已修改**」表示修改資料完成  **刪除** - 在畫面中選擇想要刪除的資料  - 按下按鈕**刪除**後,系統提示「**講師資料已刪除**」表示資料已被刪除  - 若想要刪除的講師已有開設課程,則需要先將開設的課程結束或刪除才可將講師資料刪除  ::: --- - **課程資訊管理** :::info - 課程資訊管理頁面  **新增** - 在畫面中按下按鈕**新增**  - 其中課程名稱、課程代碼、課程描述、課程時數皆為必填項目,課程代碼不可重複,課程時數必須大於0小時     - 確認資料無誤按下按鈕**新增**後,系統提示「**新增成功**」表示資料已新增完成  **查詢** 查詢功能有兩種方式 - 不輸入任何查詢條件,按下按鈕**查詢**後,會進行全部查詢的動作  - 也可以輸入課程名稱或課程代碼來進行條件查詢(但查詢條件的輸入必須完全正確)  **修改** - 在畫面中選擇想要修改的資料  - 確認資料無誤後按下按鈕**修改**後,系統提示「**資料已修改**」表示修改資料完成  **刪除** - 在畫面中選擇想要刪除的資料  - 按下按鈕**刪除**後,系統提示「**課程已刪除**」表示資料已被刪除  - 若想要刪除的課程已有學生選課,則不可刪除   ::: --- - **開課資訊管理** :::info - 開課資訊管理頁面  **新增** - 在畫面中按下按鈕**新增**後  - 選擇想要開設的課程以及講師,其中所有項目皆為必填,開課日不可為過去日期,結束日期也不可在開課日之前  - 相同講師不可連續開同一門課程,必須在該課程結束後再開設,或刪除課程後再開設  - 確認資料無誤後按下按鈕**新增**後,系統提示「**新增完成**」表示課程開設完成  **查詢** 查詢功能有兩種方式 - 不輸入任何查詢條件,按下按鈕**查詢**後,會進行全部查詢的動作  - 也可以輸入課程名稱或講師名稱來進行條件查詢,查詢條件的輸入這裡採**模糊比對**,因此輸入不需要完全相同也可以查詢到資料   **修改** - 選擇想要修改的資料  - 這裡想要修改的資料條件限制和新增課程的條件相同   - 確認資料無誤後按下按鈕**修改**後,系統提示「**開課資訊已修改**」表示開設課程資料已修改完成  **刪除** - 選擇想要刪除的開課課程  - 按下按鈕**刪除**後,系統提示「課程已刪除」表示開課資訊已刪除完成  - 若選擇的資料已有學生選課,則無法刪除   ::: --- ## 學生權限 :::success  - 系統限制學生可使用的功能 學生可使用的功能只有學生資訊管理和變更密碼  - 在學生管理資訊頁面中  **新增**與**刪除**皆無法使用,系統會限制學生的使用權限  按鈕**查詢**只能查詢到學生本身(登入者)的資料  因此修改只能修改學生本身(登入者)資料   退選課程也是   :::
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up