日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【面向对象应用~.~】——项目开发团队分配管理软件

發布時間:2023/12/20 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【面向对象应用~.~】——项目开发团队分配管理软件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

項目大綱

  • 項目介紹
    • 【項目前提】
    • 【項目說明】
    • 【項目結構】
    • 【項目需求】
    • 【項目設計框架】
  • 系統功能設計
    • 用戶登錄和注冊
    • 開發人員管理
    • 開發團隊調度管理
    • 開發項目管理
  • 各系統功能合并
    • 合并過程
    • 注意事項
  • 心得體會

?
?

項目詳細代碼,提取碼: hwrk

項目介紹

?

【項目前提】

掌握java基本語法
????熟悉使用流程控制
????????了解Arraylist集合的基本
????????????理解面向對象思想
????????????????熟練?封裝,繼承,多態
????????????????????熟悉使用接口,異常

?

【項目說明】

1、本實踐項目是一個項目開發團隊分配管理系統,可以對開發人員和開發團隊進行統一管理,并且可以給一個項目分配一個團隊進行開發。團隊組建過程包括將成員插入到團隊中,或從團隊中刪除某成員,還可以列出團隊中現有成員的列表開發團隊成員包括架構師、設計師和程序員。最后,需要完成每一個項目都能有一個開發團隊在進行開發即可。
?
2、本實踐項目有四個模塊:用戶注冊和登錄模塊開發人員管理模塊開發團隊調度管理模塊開發項目管理模塊

?

【項目結構】

?

【項目需求】

軟件啟動時,首先進入登錄界面進行注冊和登錄功能。
?
當登陸成功后,進入菜單,首先就可以對開發人員賬戶和密碼進行修改。 然后可以對開發人員進行增刪改操作
?
人員添加成功后,根據菜單提示,基于現有的公司成員,組建一個開發團隊以開發一個新的項目。
?
組建過程包括將成員插入到團隊中,或從團隊中刪除某成員,還可以列出團隊中現有成員的列表,開發團隊成員包括架構師、設計師和程序員。
?
團隊組建成功,則可以進入項目模塊,添加項目,分配開發團隊進行開發.

?

【項目設計框架】

1、創建一個MainMenu類,用于編寫各個系統的訪問界面,在這個類中,調用各個系統的功能類。
?
代碼如下:

public class MainMenu {//主菜單界面public void mainInterface(){}//登錄和注冊界面public void loginInterface(){}//開發人員管理界面public void developerManage(){}//開發團隊人員管理界面public void developerteamManagement(){}//團隊管理界面public void teamManagement(){}//項目管理界面public void projectManagement(){}public static void main(String[] args){}}

?
?
2、創建一個operate包,將 MainMenu類各個系統的功能類 都放入其中。
?

?
?
3、創建一個tool_class包,用于存放異常類(自定義的異常)和一個工具類(該工具類用于從替代鍵盤輸入
?

?

設計好大致的框架,后面我們要做的就是將每一個系統的功能設計出來,然后統一進行合并的銜接。

?
?
?
--------------------------------------------------------------------------------完美分割線-------------------------------------------------------------------------------------

系統功能設計

?
?
?
-------------------小小分割線------------------------

用戶登錄和注冊

?

用戶需要在登錄界面進行登錄進入到系統中去,這里的用戶指的是管理人員。考慮到用戶是否有賬號這一情況,需要設計注冊功能;還有用戶要修改密碼,也需要設計用戶修改功能

?
1、創建一個登錄界面。

因為登錄時的情況分為有賬號無賬號兩種情況,所以用if語句進行判斷,然后為了鍵盤輸入一次后能再進行選擇,在外面又嵌套一個while循環。

后面為了在MainMenu中調用,進行用戶信息修改,這里將返回值設定為一個用戶信息類的集合。

注意:register 方法 和 login 方法后面會提到
?
代碼如下:

//登錄界面public static ArrayList<ManagementInfor> loginInterface() {ArrayList<ManagementInfor> al = new ArrayList<>();System.out.println("---------用戶登錄界面---------");Scanner sc = new Scanner(System.in);while (true) {System.out.println("請問您是否已有賬號? (請輸入有或無)");String s = sc.nextLine();if (s.equals("無")) {System.out.println("------------------");System.out.println("您已進入賬號注冊系統");register(al);System.out.println("注冊成功");System.out.println("------------------");} else if (s.equals("有")) {System.out.println("------------------");System.out.println("您已進入賬號登錄系統");login(al);System.out.println("登錄成功");System.out.println("------------------");break;} else {System.out.println("輸入錯誤,請重新輸入");}}return al;}

?
?
2、創建一個用戶信息類ManagementInfor

登錄的管理員只需要一個ID和密碼,所以在用戶信息類中只需要有兩個成員變量ID和card,然后寫上set/get方法,還有該類的有參和無參構造。

?
代碼如下:

public class ManagementInfor {private String ID;private String card;public ManagementInfor() {}public ManagementInfor(String ID, String card) {this.ID = ID;this.card = card;}public String getCard() {return card;}public void setCard(String card) {this.card = card;}public String getID() {return ID;}public void setID(String ID) {this.ID = ID;} }

?
?
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 對象添加到員工集合中。
?
代碼如下:

case 2:System.out.print("請輸入當前雇員的姓名:");String name2=TSUtility.readKeyBoard(4,false);System.out.print("請輸入當前雇員的年齡:");int age2=TSUtility.readInt();System.out.print("請輸入當前雇員的工資:");double salary2=TSUtility.readDouble();System.out.println("請為當前雇員配一臺好的臺式電腦");System.out.print("請輸入臺式電腦的機器型號:");String model2=TSUtility.readKeyBoard(10,false);System.out.print("請輸入臺式電腦的顯示器名稱:");String display2=TSUtility.readKeyBoard(10,false);PC pc=new PC(model2,display2);Programmer programmer=new Programmer(++count,name2,age2,salary2,pc);employees.add(programmer);System.out.println("人員添加成功!");TSUtility.readReturn();break;

?
刪除信息:(注意員工id需要動態顯示,也就是刪除后,員工id需要更新)

刪除的思路是一樣的,先鍵盤輸入要刪除的員工id,然后用for循環查看該員工是否存在

如果存在則刪除成功,如果不存在則拋出異常。
代碼如下:

if (flag){System.out.println("刪除成功");}else {throw new TeamException("該員工不存在");}

?
修改信息:(至少修改員工的姓名,年齡,工資)

先鍵盤輸入要修改的員工id,再利用for循環尋找該員工是否存在

若存在,就鍵盤錄入要修改的信息;若不存在,就拋出異常。

我這里設計的是如果拋出了異常,那么就重新返回到鍵盤輸入id那里,故要從鍵盤輸入id到判斷結尾處添加一個while循環。

?
獲取指定的某個成員的信息:獲取指定ID的員工對象。

通過形參傳入要獲取的員工對象的ID,然后用for循環查詢該員工是否存在。

如果存在,打印該員工的信息并返回;如果不存在,則拋出異常。

?
(詳細代碼請看鏈接)
?
?
?
-------------------小小分割線------------------------

開發團隊調度管理

?
每個開發團隊都需要管理其中的人員,所以我們需要創建一個用來管理開發團隊里的人員的類TeamServer。
?
(1)首先,我們要先創建一些成員變量。

int counter=1; //為靜態變量,用來為開發團隊新增成員自動生成團隊中的唯一ID final int MAX_MEMBER=5; //表示開發團隊最大成員數 int total=0; //記錄團隊成員的實際人數 Programmer[] team=new Programmer[MAX_MEMBER]; //用來保存當前團隊中的各成員對象

?

(2)然后創建了一個初始化Programmmer數組的方法,還有返回數組成員的方法,因為后面會對團隊進行添加、刪除和查詢,所以這兩個方法是必須創建的。

//返回team中所有程序員構成的數組public Programmer[] getTeam(){}//初始化當前團隊成員數組public void clearTeam()

?
(3)創建查詢方法,用一個for循環將數組中的數據都打印出來,注意此時人員的id有兩個,一個是開發人員系統里的id,一個是開發團隊人員系統里的memberId(我寫的時候寫錯了,把i寫成了l,因為后面引用太多,不方便修改),故打印的時候要將兩個都打印出來。

for (int i = 0; i < total; i++) {System.out.println(team[i].getMemberld()+"\\"+team[i]);}

?
(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處理,否則會報錯并直接退出

--------------------------------------------------------------------------------完美分割線-------------------------------------------------------------------------------------

心得體會

寫完這個管理系統,又經過老師的驗收后,發現自己有很多的細節并沒有做到,要是給客戶看,肯定會很不滿意。
自己在構建大體結構上還是很有心得的,只是在以后的項目實踐中要注意一些小細節,這些細節都是以后的客戶可能很看重的。

學無止境

總結

以上是生活随笔為你收集整理的【面向对象应用~.~】——项目开发团队分配管理软件的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。