學校有一些規模不同的機房,製作機房預約系統
1、身份簡介
分別有三種身份使用該程式,三種身份有各自的功能:
學生:申請預約機房、檢視自身的預約、檢視所有的預約、取消自身的預約、登出登入 ;
學生的屬性:學號、姓名、登入密碼。
教師:檢視所有預約、審核預約(審核通過或不通過)、登出登入;
教師的屬性:職工編號、姓名、登陸密碼。
管理員:新增賬號(新增老師或學生的賬號)、檢視賬號(檢視教師和學生的所有資訊)、檢視機房資訊、清空所有預約記錄、登出登入;
管理員的屬性:姓名、密碼。
2、申請事項
申請的訂單由管理員每週負責清空;
學生可以預約未來一周內機房的使用,預約的日期為周一至周五,預約時需要選擇預約時段(上午、下午);
教師來審核預約,依據實際情況審核預約通過或不通過。
3、系統操作流程
首先進入登入介面,選擇登入身份:學生、教師、管理員
選擇1:進入學生子選單介面; 選擇2:進入教師子選單介面;
選擇3:進入管理員子選單介面; 選擇0:退出系統
選擇身份後,輸入學號/職工編號、姓名、密碼登入。輸入正確則進入相應子選單介面,輸入錯誤則重新輸入。
進入子選單介面後可以選擇各項功能,如選擇0、登出登入,則退出當前賬號,返回初始選單介面。
//管理員檔案
#define admin_file "admin.txt"
//學生檔案
#define student_file "student.txt"
//教師檔案
#define teacher_file "teacher.txt"
//機房資訊檔案
#define computer_file "computerroom.txt"
//訂單檔案
#define order_file "order.txt"
2、建立類
學生、教師、管理員三種身份擁有類似的功能(顯示子選單介面)和屬性(姓名、登陸密碼),所以建立基類identity;三個身份又有各自不同的屬性和功能,所以分別建立學生類、教師類、管理員類,繼承基類。
其中的容器都用於和文字檔案進行資料讀取。在建立物件執行建構函式時,就從文字檔案中讀取相關資訊,存放在容器中。若其他功能函式需要使用文字檔案的資料,無需再開啟檔案進行讀取,直接呼叫容器即可。
//身份抽象類
class
identity
;
//學生類
class
student
:public identity
;
//教師類
class
teacher
:public identity
;
class
manager
:public identity
;
此外,由於對預約記錄的處理比較複雜,所以建立類orderfile,便於和order.txt交換資訊。
class
orderfile
;
3、系統操作流程
控制系統流程的主要函式在main.cpp中實現。
int
main()
}}
main函式重複執行一段關於初始選單介面的程式。首先顯示主選單,使用者選擇身份後呼叫loginin函式,向該函式傳遞不同的身份資訊。loginin函式實現登入功能,兩個形參分別表示匯入哪個身份的文字檔案,和正在登入的使用者身份型別。
例如,若是學生登入,則開啟student.txt,讀取裡面的學號、姓名、密碼資訊,檢測是否與使用者輸入的資訊一致。若一致則建立指向student類物件的基類指標,同時程式會自動實現student的建構函式,向容器中寫入資訊,然後呼叫學生子選單函式。
//登入功能 引數1:操作的檔名稱 引數2:操作的身份的型別
void
loginin
(string filename,
int type)
//準備接收使用者的資訊
int id=0;
string name;
string pwd;
//判斷身份
if(type ==1)
//學生身份
else
if(type ==2)
cout <<
"請輸入使用者名稱"
<< endl;
cin >> name;
cout <<
"請輸入密碼"
<< endl;
cin >> pwd;
if(type==1)
}}else
if(type ==2)
}}else
if(type ==3)
}}cout <<
"驗證登入失敗!"
<< endl;
system
("pause");
system
("cls");
}
若不按0登出登入,系統將一直停留在子選單功能中,由使用者選擇實現各項功能。
//進入學生子選單介面
void
studentmenu
(identity*
& student)
}}
//進入管理員子選單介面
void
managermenu
(identity*
& manager)
}}
//進入教師子選單介面
void
teachermenu
(identity*
& teacher)
}}
C 機房預約系統之總結
機房預約系統 這個專案是b站黑馬的教程 c 從0到1入門程式設計的綜合練習專案 本人在最近終於將這個專案完整的敲過一遍,有很多收穫,也產生了許多疑問。但是,正所謂讀書百遍其義自現,再敲一遍,很多疑惑便迎刃而解。而今天這篇部落格則是從這個專案的尾部開始複習.在這個專案裡,教師的主要功能是 1.檢視所有...
機房收費系統(一)
這是我在敲機房的時候遇到的幾個小問題,機房還在進行,問題會不斷產生,努力去解決!問題一 查詢視窗不報錯但是也不顯示查詢的內容 錯誤原因 語句錯誤。end if寫錯位置 圖為正解 問題二 一般這種問題不是資料庫沒連好就是 有問題,大部分情況是 有問題。問題三 實時錯誤3021 困了我好幾天的問題 事實...
重構機房收費系統(一)
從10月 1號開始重構學校機房收費系統 沒想到這次重構,推翻 再重構 用了兩周時間。這次整體架構採用三層,並融入了一些設計模式。下面介紹這次重構的過程 一 從uml 用例圖開始 對於機房收費系統的需求已經很熟悉了,用例和角色都已經提取出來了,在這裡遇到乙個問題,就是,究竟是根據角色劃分用例,還是根據...