Java基础知识融合(Arraylist集合,多态,继承,封装,包装类,循环嵌套,if嵌套等等)
目錄
1.項目大綱
? 1.項目前提
? 2.項目說明
3.項目內容
?3.該軟件完成以下功能:
2.軟件設計
? ? ?1.結構
? 2.類設計
3. 部分代碼展示
心得:
1.項目大綱
? 1.項目前提
? 2.項目說明
3.項目內容
系統流程:
?3.該軟件完成以下功能:
? ? ? ? ? ? ?軟件啟動時,首先進入登錄界面進行注冊和登錄功能。 當登陸成功后,進入菜單,首先就可以對開發人員賬戶和密碼進行修改。 然后可以對開發人員進行增刪改操作 人員添加成功后,根據菜單提示,基于現有的公司成員,組建一個開發團隊以開發一個新的項目。 組建過程包括將成員插入到團隊中,或從團隊中刪除某成員,還可以列出團隊中現有成員的列表,開發團隊成員包括架構師、設計師和程序員。 團隊組建成功,則可以進入項目模塊,添加項目,分配開發團隊進行開發。
2.軟件設計
? ? ?1.結構
? ? ? ? ? ?com.team.view ? ?模塊為主控模塊,負責菜單的顯示和處理用戶操作 com.team.service ?模塊為實體對象(Employee及其子類如程序員等)的管理模塊, NameListService和TeamService類分別用各自的數組來管理公司員工和開發團隊成員對象 ProjectService是對項目的操作對象類 domain模塊為Employee及其子類等JavaBean類所在的包
?
? 2.類設計
? ?1. 定義一個LoginView類
? ? ? ?1.1 實現注冊方法
? ? ? ? ? ? 如果沒有賬戶則需要注冊
? ? ? ? ? ? ?如果有賬號則直接進行登錄
? ? ? ?1.2實現登錄功能
? ? ? ? ? ? ? 判斷用戶輸入的值是否正確
? ? ? ? ? ? ? 如果正確則進入軟件菜單
? ? ? ? ? ? ? ?如果錯誤則重新輸入,限制次數只有5次,超過次數則程序停止,重新啟動
? ? ? ? 1.3實現修改用戶密碼功能
? ? ? ? ? ? ? ? 可以實現對用戶名,密碼,或者兩者都可以進行修改即可。
? ?2.實體類
? ? ? 2.1Equipment接口以及實現子類
說明: model 表示機器的型號 display 表示顯示器名稱 type 表示機器的類型 根據需要提供各屬性的get/set方法以及重載構造器 實現類實現接口的方法,返回各自屬性的信息
? ?2.2Employee類及子類的設計?
?3.開發人員管理模塊
? ? 3.1在NameListService類中完成功能操作
? ? ? ?實現員工的添加(根據職業添加(無,程序員,設計師,架構師)) 實現員工的修改(至少修改員工的姓名,年齡,工資) 實現員工的刪除(注意員工id需要動態顯示,也就是刪除后,員工id需要更新) 實現員工的查看 (顯示所有數據)
?
按照設計要求編寫NameListService類 一個屬性為:private ArrayList<Employee> employees 有一個代碼塊用作數據的填充,如圖(注意不同人的身份和設備都不同) 有一個方法:getAllEmployees(),返回employees對象即可 還有一個方法:getEmployee(int id),得到指定id的員工,沒有則拋出自定義的異常。 其他方法
4.開發團隊調度管理模塊
需求:
?? ?如果添加操作因某種原因失敗,將顯示類似以下信息(失敗原因視具體原因而不同): 1-團隊列表 ?2-添加團隊成員 ?3-刪除團隊成員 4-退出 ? 請選擇(1-4):2 ---------------------添加成員--------------------- 請輸入要添加的員工ID:2 添加失敗,原因:該員工已是某團隊成員 按回車鍵繼續... ?? ?失敗信息包含以下幾種: ?(需要拋出自定義異常) 成員已滿,無法添加 該成員不是開發人員,無法添加 該員工已在本開發團隊中 該員工已是某團隊成員 團隊中至多只能有一名架構師(以下判斷可借用instanceof進行判斷) 團隊中至多只能有兩名設計師 團隊中至多只能有三名程序員
當選擇“添加團隊成員”菜單時,將執行從列表中添加指定(通過ID)成員到開發團隊的功能: 1-團隊列表 ?2-添加團隊成員 ?3-刪除團隊成員 ?4-退出 ? 請選擇(1-4):2 ---------------------添加成員--------------------- 請輸入要添加的員工ID:2 添加成功 按回車鍵繼續... 添加成功后,按回車鍵將重新顯示主界面。 開發團隊人員組成要求: 最多一名架構師 最多兩名設計師 最多三名程序員
功能:關于開發團隊成員的管理:添加、刪除等(還需要自行實現)。 說明: counter為靜態變量,用來為開發團隊新增成員自動生成團隊中的唯一ID,即memberId。(提示:應使用增1的方式) MAX_MEMBER:表示開發團隊最大成員數 team數組:用來保存當前團隊中的各成員對象 (也可以用一個新的集合)
?說明: getTeam()方法:返回當前團隊的所有對象 返回:包含所有成員對象的數組,數組大小與成員人數一致 addMember(e: Employee)方法:向團隊中添加成員 參數:待添加成員的對象 異常:添加失敗, TeamException中包含了失敗原因 removeMember(memberId: int)方法:從團隊中刪除成員 參數:待刪除成員的memberId 異常:找不到指定memberId的員工,刪除失敗 另外,可根據需要自行添加其他方法或重載構造器
?
?
3. 部分代碼展示
3.1登錄界面
package ProjectOne.view;import ProjectOne.domain.UserRegistration;import java.util.ArrayList;/*** @author 黎豪* @version 1.0*/public class LoginView {/*** 顏色特效*/public static final String ANSI_RESET = "\u001B[0m";public static final String ANSI_GREEN = "\u001B[32m";public static final String ANSI_YELLOW = "\u001B[33m";public static final String ANSI_PURPLE = "\u001B[35m";public static final String ANSI_BLUE = "\u001B[34m";public static final String ANSI_CYAN = "\u001B[36m";private static int count=0;private static boolean b=true;public static ArrayList<String> array=new ArrayList<>();//下面是用戶登錄界面public static void menu() {while (b){System.out.println(ANSI_CYAN);System.out.println("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$");System.out.println("$ $");System.out.println("$歡迎來到項目開發團隊分配管理軟件$");System.out.println("$ $");System.out.println("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$");System.out.println("$");System.out.println("$");System.out.println("$");System.out.println("$");System.out.println("--------請您先登錄-----------");TSUtility.readReturn();System.out.println(ANSI_YELLOW);System.out.println("*******************");System.out.println("*** <登錄界面> ***");System.out.println("*** (: ***");System.out.println("********************");System.out.println("請先輸入你的登錄賬戶名稱:");String userAccount = TSUtility.readKeyBoard(20, false);System.out.println("請輸入你的密碼:");String LoginPassword=TSUtility.readKeyBoard(11, false);if (array.size() == 0) {System.out.println("未檢測到您的賬號,請您先注冊!");try {UserRegistration.addUserAccount(array);//注冊賬號System.out.println();} catch (InterruptedException e) {e.printStackTrace();}}else if (!(array.get(0).equals(userAccount))){count++;System.out.println("用戶名不存在請重新輸入:"+"你還有"+(5-count)+"次機會");if (count==5){System.out.println("你已經錯了5次,請聯系管理員");System.exit(0);}}else if (!(array.get(1).equals(LoginPassword))){count++;System.out.println("密碼錯誤!請重新輸入!"+"你還有"+(5-count)+"次機會");if (count==5){System.out.println("你已經錯了5次,請聯系管理員");System.exit(0);}}else if (count==5){System.exit(0);}else {UserRegistration.CheckUserAccount(array, userAccount, LoginPassword);b=false;}}}}3.2團隊調度管理
package ProjectOne.view;import ProjectOne.domain.*; import ProjectOne.service.NameListService; import ProjectOne.service.TeamException;import java.util.ArrayList;/*** @author 黎豪* @version 1.0*/ //開發團隊調度管理 public class TeamView extends NameListService implements TID {/*** 顏色特效*/public static final String ANSI_RESET = "\u001B[0m";public static final String ANSI_GREEN = "\u001B[32m";public static final String ANSI_YELLOW = "\u001B[33m";public static final String ANSI_PURPLE = "\u001B[35m";public static final String ANSI_BLUE = "\u001B[34m";public static final String ANSI_CYAN = "\u001B[36m";public static int count=1,count1=1,count2=1;public static ArrayList<ArrayList> team=new ArrayList<>();//團隊調度界面1,2,3,4;public static ArrayList<Programmer> programmer=new ArrayList<>();public static void DispatchingTeam(){boolean b=true;while (b) {System.out.println(ANSI_BLUE);System.out.println("※※※※※※※※※※※");System.out.println("※ 團隊調度界面 ※");System.out.println("※※※※※※※※※※※");System.out.print("1-添加團隊 2-查看團隊 3-刪除團隊 4-退出 請選擇(1-4):");char number = TSUtility.readMenuSelection();switch (number) {case '1':addTeam();break;case '2':findTeam();break;case '3':deletaTeam();break;case '4'://b=false;System.out.println("確認退出Y/N:");char c3=TSUtility.readConfirmSelection();if (c3=='Y') {b = false;}else {break;}break;}}}//1.添加團隊public static void addTeam(){int k=0;boolean b=true;while (b){viewDeveloper();System.out.println("---------------------------------------------");System.out.println("1-團隊列表 2-添加團隊成員 3-刪除團隊成員 4-退出");char c=TSUtility.readMenuSelection();switch (c){case '1':viewTeampeople();break;case '2':addTeampeople();break;case '3':deletaTeampeople();break;case '4':if (programmer.size()==0){System.out.println("此次操作你沒有添加任何成員!!!");}else {if (programmer.size()!=0){team.add(k,programmer);}programmer=new ArrayList<>();k++;count=1;count1=1;count2=1;}b = false;break;}}}//2.查看團隊列表public static void viewTeampeople(){if (programmer.size()==0){System.out.println("沒有任何成員,請先添加團隊成員!!!");}else {System.out.println("-------------------------------");System.out.println("TID/ID\t姓名\t\t年齡\t 工資\t 職位\t 獎金\t 股票 領用設備");for (int i = 0; i <programmer.size() ; i++) {System.out.println((i+1)+"/"+programmer.get(i));}System.out.println("---------------------------------");}}//3.刪除團隊成員public static void deletaTeampeople(){System.out.println(ANSI_GREEN);if (programmer.size()==0){System.out.println("請先添加成員!");}else {viewTeampeople();System.out.println("請輸入要刪除的TID:");int i=TSUtility.readInt();if (i>programmer.size()||i<=0){System.out.println("刪除失敗,員工TID錯誤!!!");}else {programmer.get(i-1).setStatus(true);System.out.println("刪除成功!");if (programmer.get(i-1) instanceof Architect){count--;}//最多兩名設計師else if (programmer.get(i-1) instanceof Desigener){count1--;}//最多三名程序員else if (programmer.get(i-1) instanceof Programmer){count2--;}programmer.remove(i-1);}}}//添加團隊成員public static void addTeampeople(){System.out.println(ANSI_GREEN);System.out.println("----------添加成員--------");System.out.println("請輸入要添加的員工ID:");int num=TSUtility.readInt();try {abnormal(num);} catch (TeamException e) {System.out.println("添加失敗!原因:"+e.getMessage());}}//各種異常的處理------------------------------public static void abnormal(int num) throws TeamException {//員工ID不存在if (num>employees.size()||num<=0){throw new TeamException("該員工不存在!");}//該成員不是開發團隊else if (!(employees.get(num-1) instanceof Programmer)){throw new TeamException("該成員不是開發團隊,無法添加!!!");}//狀態為false的不添加else if (((Programmer)employees.get(num-1)).getStatus()==false){//已存在該隊伍for (int i = 0; i <programmer.size() ; i++) {if (employees.get(num-1).getId()==programmer.get(i).getId()){throw new TeamException("已存在該隊伍");}}System.out.println("該成員已存在某團隊中!!!無法添加!");}//團隊成員不能超過5名else if (programmer.size()>4){throw new TeamException("團隊成員最多只能有五個");}//只能有一名架構師else if (employees.get(num-1) instanceof Architect){if (count>1){throw new TeamException("團隊中至多只能有一名架構師!");}else {programmer.add((Programmer) employees.get(num-1));System.out.println("添加了一名架構師");count++;((Programmer) employees.get(num-1)).setStatus(false);}}//最多兩名設計師else if (employees.get(num-1) instanceof Desigener){if (count1>2){throw new TeamException("最多兩名設計師");}else {programmer.add((Programmer) employees.get(num-1));count1++;System.out.println("添加了一名設計師");((Programmer) employees.get(num-1)).setStatus(false);}}//最多三名程序員else if (employees.get(num-1) instanceof Programmer){if (count2>3){throw new TeamException("添加失敗!最多三名程序員");}else {programmer.add((Programmer) employees.get(num-1));count2++;System.out.println("添加了一名程序員");((Programmer) employees.get(num-1)).setStatus(false);}} } //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//查看團隊public static void findTeam(){System.out.println(ANSI_GREEN);if (team.size()==0){System.out.println("沒有團隊!!!請先添加!!!!!");}else{System.out.println("TID/ID\t姓名\t\t年齡\t 工資\t 職位\t 獎金\t 股票 領用設備");for (int i = 0; i <team.size() ; i++) {for (int j = 0; j <team.get(i).size() ; j++) {System.out.println((j+1)+"/"+team.get(i).get(j));}System.out.println("======這是團隊"+(i+1)+"=======");System.out.println("==========================================");}}}//刪除團隊public static void deletaTeam(){if (team.size()==0){System.out.println("請先添加團隊,再刪除!!!!");}else{findTeam();System.out.println("請輸入你想刪除的團隊編號:");int a=TSUtility.readInt();if (a>team.size()||a<=0){System.out.println("你輸入的編號有誤!!!刪除失敗!!");}else {for (int i = 0; i <team.get(a-1).size(); i++) {((Programmer)team.get(a-1).get(i)).setStatus(true);// System.out.println(((Programmer)team.get(a-1).get(i)));}team.remove(a-1);System.out.println("你已成功刪除團隊"+a);}}}}3.3項目管理
package ProjectOne.service;import ProjectOne.domain.Programmer; import ProjectOne.domain.Project; import ProjectOne.view.TSUtility; import ProjectOne.view.TeamView;import java.util.ArrayList;/*** @author 黎豪* @version 1.0*/ /管理項目的類、、、、、 public class ProjectService {public static final String ANSI_RESET = "\u001B[0m";public static final String ANSI_YELLOW = "\u001B[33m";public static ArrayList<Project> pro=new ArrayList<Project>();public static ArrayList<ArrayList>total=new ArrayList<>();public static ArrayList<Project> newpro=new ArrayList<>();public static int count=1;//增加項目public static void addProject(){System.out.println(ANSI_YELLOW);System.out.println("項目參考:--------------------------------------------------");System.out.println("1.小米官網:開發完成類似于小米官網的web項目.");System.out.println("2.公益在線商城:貓寧Morning公益商城是中國公益性在線電子商城.");System.out.println("3.博客系統:Java博客系統,讓每一個有故事的人更好的表達想法!");System.out.println("4.在線協作文檔編輯系統:一個很常用的功能,適合小組內的文檔編輯。");System.out.println("------------------------------------------------------------");TSUtility.readReturn();System.out.println("請輸入你想添加的項目名: ");char c=TSUtility.readMenuSelection();switch (c) {case '1':Project p1 = new Project();p1.setProId(count++);p1.setProName("小米官網");p1.setDesName("開發完成類似于小米官網的web項目.");pro.add(p1);try {TSUtility.loadSpecialEffects();} catch (InterruptedException e) {e.printStackTrace();}System.out.println("已添加項目:"+p1.getProName());break;case '2':Project p2 = new Project();p2.setProId(count++);p2.setProName("公益在線商城");p2.setDesName("貓寧Morning公益商城是中國公益性在線電子商城.");pro.add(p2);try {TSUtility.loadSpecialEffects();} catch (InterruptedException e) {e.printStackTrace();}System.out.println("已添加項目:"+p2.getProName());break;case '3':Project p3 = new Project();p3.setProId(count++);p3.setProName("博客系統");p3.setDesName("Java博客系統,讓每一個有故事的人更好的表達想法!");pro.add(p3);try {TSUtility.loadSpecialEffects();} catch (InterruptedException e) {e.printStackTrace();}System.out.println("已添加項目:" + p3.getProName());break;case '4':Project p4 = new Project();p4.setProId(count++);p4.setProName("在線協作文檔編輯系統");p4.setDesName("一個很常用的功能,適合小組內的文檔編輯。");pro.add(p4);try {TSUtility.loadSpecialEffects();} catch (InterruptedException e) {e.printStackTrace();}System.out.println("已添加項目:"+p4.getProName());break;default:System.out.println("項目不存在!!!");}}//項目分配public static void distributionProject(ArrayList<ArrayList>team){if (pro.size()==0){System.out.println("你還沒有項目,請先添加");}else{if (team.size()==0){System.out.println("你的團隊已經被分配完了!!!請去添加團隊");}else {System.out.println("TID/ID\t姓名\t\t年齡\t 工資\t 職位\t 獎金\t 股票 領用設備");for (int i = 0; i < team.size(); i++) {for (int j = 0; j < team.get(i).size(); j++) {System.out.println((j + 1) + "/" + team.get(i).get(j));}System.out.println("======這是團隊" + (i + 1) + "=======");System.out.println("==========================================");}System.out.println("請先選擇團隊:");int t = TSUtility.readInt();if (t > team.size() || t <= 0) {System.out.println("你輸入有誤!!!分配失敗!!");} else {System.out.println("請給他們取一個新的團隊名稱:");String name = TSUtility.readKeyBoard(6, false);for (int j = 0; j < pro.size(); j++) {System.out.println(pro.get(j));}System.out.println("請為該團隊分配任務!!!請輸入項目序號(從一開始):");int c1 = TSUtility.readInt();if (c1 > pro.size() || c1 <= 0) {System.out.println("你輸入有誤!!添加項目失敗!!");} else if ((pro.get(c1 - 1).getStatus())) {System.out.println("該項目已被開發!!!");} else if (!(pro.get(c1 - 1).getStatus())) {pro.get(c1 - 1).setStatus(true);pro.get(c1 - 1).setTeamName(name);total.add(team.get(t - 1));team.remove(t - 1);newpro.add(pro.get(c1 - 1));pro.remove(c1 - 1);System.out.println("項目分配成功!!");TSUtility.readReturn();}}}}}//查看項目public static void findProject(){System.out.println(ANSI_RESET);if (newpro.size()==0){if (pro.size()==0){System.out.println("請先添加項目在查看!!!");}else{for (int i = 0; i <pro.size() ; i++) {System.out.println(pro.get(i));}}}else{if (pro.size()==0){for (int i = 0; i <newpro.size() ; i++) {System.out.println(newpro.get(i));}}else {for (int i = 0; i <pro.size() ; i++) {System.out.println(pro.get(i));}System.out.println("==========================================");for (int i = 0; i <newpro.size() ; i++) {System.out.println(newpro.get(i));}}}}//項目刪除public static void deletaProject() {if (pro.size() == 0) {System.out.println("沒有未開發任務!!!");} else {for (int i = 0; i < pro.size(); i++) {System.out.println(pro.get(i));}System.out.println("請輸入你要刪除的項目(從一開始):");int a = TSUtility.readInt();if (a <= 0 || a > pro.size()) {System.out.println("該項目不存在!!!!");} else {pro.remove(a - 1);System.out.println("刪除成功!!!");}}}}心得:
? 第一次寫千行代碼,感覺自己又行了!!!!
總結
以上是生活随笔為你收集整理的Java基础知识融合(Arraylist集合,多态,继承,封装,包装类,循环嵌套,if嵌套等等)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 分布式入门,怎样用PyTorch实现多G
- 下一篇: 用隐马尔可夫模型(HMM)做命名实体识别