【面向对象应用~.~】——项目开发团队分配管理软件
項目大綱
- 項目介紹
- 【項目前提】
- 【項目說明】
- 【項目結構】
- 【項目需求】
- 【項目設計框架】
- 系統功能設計
- 用戶登錄和注冊
- 開發人員管理
- 開發團隊調度管理
- 開發項目管理
- 各系統功能合并
- 合并過程
- 注意事項
- 心得體會
?
?
項目詳細代碼,提取碼: hwrk
項目介紹
?
【項目前提】
掌握java基本語法
????熟悉使用流程控制
????????了解Arraylist集合的基本
????????????理解面向對象思想
????????????????熟練?封裝,繼承,多態
????????????????????熟悉使用接口,異常
?
【項目說明】
1、本實踐項目是一個項目開發團隊分配管理系統,可以對開發人員和開發團隊進行統一管理,并且可以給一個項目分配一個團隊進行開發。團隊組建過程包括將成員插入到團隊中,或從團隊中刪除某成員,還可以列出團隊中現有成員的列表開發團隊成員包括架構師、設計師和程序員。最后,需要完成每一個項目都能有一個開發團隊在進行開發即可。
?
2、本實踐項目有四個模塊:用戶注冊和登錄模塊,開發人員管理模塊,開發團隊調度管理模塊,開發項目管理模塊。
?
【項目結構】
?
【項目需求】
軟件啟動時,首先進入登錄界面進行注冊和登錄功能。
?
當登陸成功后,進入菜單,首先就可以對開發人員賬戶和密碼進行修改。 然后可以對開發人員進行增刪改操作
?
人員添加成功后,根據菜單提示,基于現有的公司成員,組建一個開發團隊以開發一個新的項目。
?
組建過程包括將成員插入到團隊中,或從團隊中刪除某成員,還可以列出團隊中現有成員的列表,開發團隊成員包括架構師、設計師和程序員。
?
團隊組建成功,則可以進入項目模塊,添加項目,分配開發團隊進行開發.
?
【項目設計框架】
1、創建一個MainMenu類,用于編寫各個系統的訪問界面,在這個類中,調用各個系統的功能類。
?
代碼如下:
?
?
2、創建一個operate包,將 MainMenu類 和 各個系統的功能類 都放入其中。
?
?
?
3、創建一個tool_class包,用于存放異常類(自定義的異常)和一個工具類(該工具類用于從替代鍵盤輸入)
?
?
設計好大致的框架,后面我們要做的就是將每一個系統的功能設計出來,然后統一進行合并的銜接。
?
?
?
--------------------------------------------------------------------------------完美分割線-------------------------------------------------------------------------------------
系統功能設計
?
?
?
-------------------小小分割線------------------------
用戶登錄和注冊
?
用戶需要在登錄界面進行登錄進入到系統中去,這里的用戶指的是管理人員。考慮到用戶是否有賬號這一情況,需要設計注冊功能;還有用戶要修改密碼,也需要設計用戶修改功能。
?
1、創建一個登錄界面。
因為登錄時的情況分為有賬號和無賬號兩種情況,所以用if語句進行判斷,然后為了鍵盤輸入一次后能再進行選擇,在外面又嵌套一個while循環。
后面為了在MainMenu中調用,進行用戶信息修改,這里將返回值設定為一個用戶信息類的集合。
注意:register 方法 和 login 方法后面會提到
?
代碼如下:
?
?
2、創建一個用戶信息類ManagementInfor
登錄的管理員只需要一個ID和密碼,所以在用戶信息類中只需要有兩個成員變量ID和card,然后寫上set/get方法,還有該類的有參和無參構造。
?
代碼如下:
?
?
3、創建三個功能的方法
?
( 1 )注冊方法 register():
此時我們是沒有賬號的,用戶信息集合中也是沒有對象的,所以先創建一個用戶信息類的對象來存儲即將注冊的用戶信息。
代碼如下:
ManagementInfor mf = new ManagementInfor();?
?
從鍵盤錄入信息后,將錄入的信息傳遞到用戶信息表中,然后將該對象傳入集合中。
代碼如下:
mf.setID(s1);mf.setCard(s2);al.add(mf);?
?
( 2 )登錄方法 login():
首先要從鍵盤錄入用戶信息。創建一個boolean類型的變量flag,初始值為false,用于判斷用戶是否存在。
然后在集合進行for循環,看是否有賬戶信息與鍵盤錄入一致的對象,如果有,令flag為true。
if (id.equals(s1) && card.equals(s2)) {flag = true;break;} else {flag = false;}最后對flag進行判斷,如果為true就登錄成功,如果為false就重新輸入,為了能夠重新輸入,需從鍵盤輸入開始到判斷flag,將整個過程用while循環包起來。
(詳細代碼見鏈接)
?
?
( 3 )修改方法 insert():
首先鍵盤錄入需要修改的用戶的ID。創建一個boolean類型的變量flag,初始值為false,用于判斷用戶是否存在。
然后在集合中進行for循環,查詢是否有這個ID,如果有就令flag=true。
for (int i = 0; i < al.size(); i++) {String name = al.get(i).getID();if (name.equals(id)) {flag = true;break;}}然后對flag進行判斷,如果為true就可以重新錄入新的用戶信息,如果為false就會退出報錯并退出修改,要想再修改需重新進入。
?
?
?
-------------------小小分割線------------------------
開發人員管理
創建一個NameListService類完成開發人員管理模塊,并創建一個成員變量:
ArrayList<Employee> employees=new ArrayList<>();?
1、創建各個類的實體類
Employee(雇員)—>Programmer (程序員)—>Designer(設計師)
—>Architect(架構師)
?
Equipment(工具)—>PC(臺式電腦) Equipment(工具)—>NoteBook(筆記本電腦)
Equipment(工具)—>Printer(打印機)
Employee(雇員)實現了Equipment(工具)接口
Equipment(工具)接口包含方法:String getDescription();
?
(詳細代碼請看鏈接)
?
?
2、創建實現功能的方法
做開發人員管理的功能設計,需要設計以下方法:
初始化:這里的初始化是提前錄入一些數據,以便于后面進行測試。
?
查詢:(顯示所有數據)
直接用for循環將員工集合里的每一個對象的信息都打印出來
for (int i = 0; i < employees.size(); i++) {System.out.println(employees.get(i));}?
添加信息:(根據職業添加(無,程序員,設計師,架構師))
因為這里有四個選項,故我使用了switch語句來進行循環;我們以程序員舉例,通過鍵盤錄入程序員的每條信息后,創建一個Programmer對象,使用Programmer類的有參構造方法賦值,程序員的工具是Equipment的子類PC,又創建一個PC對象,并使用有參構造方法賦值。然后將該Programmer 對象添加到員工集合中。
?
代碼如下:
?
刪除信息:(注意員工id需要動態顯示,也就是刪除后,員工id需要更新)
刪除的思路是一樣的,先鍵盤輸入要刪除的員工id,然后用for循環查看該員工是否存在
如果存在則刪除成功,如果不存在則拋出異常。
代碼如下:
?
修改信息:(至少修改員工的姓名,年齡,工資)
先鍵盤輸入要修改的員工id,再利用for循環尋找該員工是否存在
若存在,就鍵盤錄入要修改的信息;若不存在,就拋出異常。
我這里設計的是如果拋出了異常,那么就重新返回到鍵盤輸入id那里,故要從鍵盤輸入id到判斷結尾處添加一個while循環。
?
獲取指定的某個成員的信息:獲取指定ID的員工對象。
通過形參傳入要獲取的員工對象的ID,然后用for循環查詢該員工是否存在。
如果存在,打印該員工的信息并返回;如果不存在,則拋出異常。
?
(詳細代碼請看鏈接)
?
?
?
-------------------小小分割線------------------------
開發團隊調度管理
?
每個開發團隊都需要管理其中的人員,所以我們需要創建一個用來管理開發團隊里的人員的類TeamServer。
?
(1)首先,我們要先創建一些成員變量。
?
(2)然后創建了一個初始化Programmmer數組的方法,還有返回數組成員的方法,因為后面會對團隊進行添加、刪除和查詢,所以這兩個方法是必須創建的。
//返回team中所有程序員構成的數組public Programmer[] getTeam(){}//初始化當前團隊成員數組public void clearTeam()?
(3)創建查詢方法,用一個for循環將數組中的數據都打印出來,注意此時人員的id有兩個,一個是開發人員系統里的id,一個是開發團隊人員系統里的memberId(我寫的時候寫錯了,把i寫成了l,因為后面引用太多,不方便修改),故打印的時候要將兩個都打印出來。
?
(4)創建添加方法,直接鍵盤輸入要添加的員工id,然后直接調用開發人員管理系統的員工集合。在添加時,有以下的一些規定:
成員已滿,無法添加
?
該成員不是開發人員,無法添加
?
該員工已在本開發團隊中 該員工已是某團隊成員
?
團隊中至多只能有一名架構師(以下判斷可借用instanceof進行判斷)
?
團隊中至多只能有兩名設計師 團隊中至多只能有三名程序員
出現以上的情況就要拋出異常。
?
(5)創建刪除方法
首先鍵盤輸入要刪除的成員的團隊id(memberId)。
然后利用for循環找到指定memberId的員工,并刪除。
如果遍歷一遍,都找不到,則報異常。
然后又用for循環,使后面的元素覆蓋前面的元素
for (int i = n + 1; i < total; i++) {team[i].setMemberld(i);team[i - 1] = team[i];}team[--total] = null;?
?
2、在MainMenu中創建團隊管理界面的方法
?
?
?
-------------------小小分割線------------------------
開發項目管理
1、創建項目類Project
創建以下成員變量,并寫出set/get方法,還有類的有參和無參構造。
int prold; //項目號String projectName; //項目名稱String desName; //項目介紹Programmer[] team; //開發團隊String teamName; //開發團隊名稱boolean status=false; //開發狀態 status=false(true為開發中,false為未開發中))?
?
2、創建實現功能的方法
(1)項目的添加
鍵盤輸入項目的名稱和介紹。
然后創建一個新的項目,并傳入數據。
Project p=new Project();p.setProld(count++);p.setProjectName(projectName);p.setDesName(desName);再將該對象添加到項目的集合pro中
?
?
(2)項目分配團隊
分配團隊、分配項目,然后給分配好的團隊取名
(注意:在分配團隊和項目的時候,都要查詢團隊和項目是否存在,如果不存在,都需要拋出異常)
然后創建項目對象,將數據傳入進去,注意要把Project中的status狀態改為true,表示該項目已被開發。
?
?
(3)查看項目當前狀態
用for循環將項目里的對象的信息都打印出來
for (int i = 0; i < pro.size(); i++) {System.out.println(pro.get(i));}?
?
(4)項目的刪除
首先鍵盤輸入要刪除的項目編號,并查詢是否存在,若不存在要拋出異常。
如果項目存在,又查看該項目的status。如果為true(開發狀態)就不能刪除,因為開發狀態中的項目是不能夠刪除的,這時就要拋出異常并退出;如果為false(未開發狀態)便可用remove方法將該項目刪除。
if (flag){if (pro.get(temp).isStatus()){throw new TeamException("該項目正在被開發中,無法刪除");}else {pro.remove(temp);System.out.println("刪除成功");count--;}?
(詳細代碼請看鏈接)
?
?
?
-------------------小小分割線------------------------
?
?
--------------------------------------------------------------------------------完美分割線-------------------------------------------------------------------------------------
各系統功能合并
?
合并過程
用戶登錄和注冊系統 LoginServer
?
開發人員管理系統 NameListServer
?
開發團隊管理系統 TeamServer
?
項目管理系統 ProjectServer
在MainMenu類中,創建以上類對應的方法,并調用類的成員方法,完成各個系統的功能。
創建各個功能類的對象,還有需要使用到的集合對象,代碼如下:
private ArrayList<ManagementInfor> al=loginInterface();private ArrayList<Programmer[]> team_sum = new ArrayList<>();private ArrayList<Employee> employees=new ArrayList<>();TeamServer teamServer=new TeamServer();NameListService nls=new NameListService();ProjectService pjs=new ProjectService();然后創建一個主菜單界面方法mainInterface,將各個系統對應的方法在其中調用。
最后在main方法中創建一個MainMenu的對象,調用mainInterface方法。
-------------------小小分割線------------------------
注意事項
(1)在打印信息時,可以打印出想要的信息,這需要到實體類中重寫toString方法,而打印時可以不用調用toString方法。
(2)凡是刪除、修改或者查詢都需要查看該對象是否存在。
(3)拋出異常后,統一在調用界面的方法里進行try/catch處理,否則會報錯并直接退出
--------------------------------------------------------------------------------完美分割線-------------------------------------------------------------------------------------
心得體會
寫完這個管理系統,又經過老師的驗收后,發現自己有很多的細節并沒有做到,要是給客戶看,肯定會很不滿意。
自己在構建大體結構上還是很有心得的,只是在以后的項目實踐中要注意一些小細節,這些細節都是以后的客戶可能很看重的。
| 學無止境 |
總結
以上是生活随笔為你收集整理的【面向对象应用~.~】——项目开发团队分配管理软件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android学习第三天 创建demo
- 下一篇: IE清除默认的三角形