2013-06-05 34 views
0

我想在具有GUI和數據庫的java中創建一個應用程序。我將使用MYSQL作爲數據庫,並且我最近使用JavaFX的經驗相當令人愉快,所以這就是我將用於編碼的內容。設計一個帶有用戶訪問控制的java GUI程序

我的問題是我想要的用戶訪問控制,並想基於誰或什麼類型的用戶日誌,顯示GUI組件。

因此,讓我們說這是一所學校的管理制度,如果在老師老師的日誌可以訪問他或她的課程和家庭作業(當然是通過GUI),但不能訪問其他任何老師。如果管理員用戶登錄,他/她可以更改學生檔案等,但沒有別的。

有人能指出我在正確的方向有關於概念,教程,書籍,示例代碼等。這樣我就可以做到這樣的事情

if(user==teacher){ 
    stage.setscene(teacherOnlyScene); 
    stage.show(); 
} 

太謝謝你了!如果它太主觀,道歉。這是我使用90%的時間來解答所有與編程相關的問題的網站。

+1

嘗試查看用戶,組和角色。 http://docs.oracle.com/javaee/6/tutorial/doc/bnbxj.html – orangegoat

+0

感謝您的鏈接! –

回答

2

問題的範圍可能太大,無法在這裏成功解答,因爲您詢問的是最終系統體系結構的相當大且可能很複雜的部分。用戶訪問系統通常非常複雜,特別是如果它們是高度可配置的,例如您可以授予用戶特權以外的基本組權限等。

在開始編寫任何代碼之前,請先考慮您想實現的目標。您已經提出了使用用戶組的想法,我認爲這非常明智,但您需要提出一些問題。用戶是否可以屬於多個組?可以將權限分配給用戶,還是隻能將其分配給組?管理員是特例還是可以作爲另一個組來處理?

看看Linux處理用戶和組分配權限的方式。這是一個非常深思熟慮的系統應該提供一些啓發。另外,鏈接到的JavaEE 6文檔orangegoat提供了有關Java EE中安全性的良好概述(但需要警告它相當複雜)。

話雖如此,我覺得我必須鼓勵您考慮使這個基於Web的應用程序,而不是使用JavaFX。這聽起來並不像你有任何特別複雜的圖形要求,它聽起來像你想要多次同時訪問系統/數據庫(例如,不止一位教師可以一次檢查他們的作業)。

也許我有點偏頗,但我認爲基於JavaEE的Web應用程序更適合這些需求。業務邏輯和事物的多用戶方面的大部分複雜性可以通過一組EJB來處理,所有的持久性由JPA處理。圖形用戶界面將寫入JSFPrimeFaces以及GlassFish上的整個寄存器。這個設置的真正好處是您的安裝空間爲零,在推出新版本時將爲您節省大量時間。走JavaEE路線可能會讓你更加困難,但我認爲這是滿足要求的正確解決方案。

+0

哇!我到現在還不瞭解JSF。謝謝!並再次感謝您的詳細解答。 是的,我提出了一些基於網絡的想法,但我想我應該包括誰是目標市場:第三世界國家的學校有幾臺電腦。他們通常知道如何上網,與辦公室程序一起工作,並且通常可以通過一次點擊安裝。 我已經重新考慮了數據庫,我認爲最好與SQLite一起要求非技術人員首先安裝MySQL可能不是一個好主意。 –

+0

好吧,那肯定會改變事情,我可以看到你爲什麼去了JavaFX。查看使用JavaDB而不是SQLite,因爲它已經內置到JRE中。 您仍然可以通過使用嵌入式GlassFish實例(https://embedded-glassfish.java.net/)或運送安裝GlassFish的安裝程序,然後部署您的應用程序(Sonatype的Nexus是一個很好的示例IIRC) 。這樣做的好處是,當學校獲得一臺機器網絡時,你準備好了,因爲它肯定會。 – wobblycogs

+0

太棒了!非常感謝! –