IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Java基础知识融合(Arraylist集合,多态,继承,封装,包装类,循环嵌套,if嵌套等等) -> 正文阅读

[Java知识库]Java基础知识融合(Arraylist集合,多态,继承,封装,包装类,循环嵌套,if嵌套等等)

目录

1.项目大纲

? 1.项目前提

? 2.项目说明

3.项目内容

?3.该软件完成以下功能:

2.软件设计

? ? ?1.结构

? 2.类设计

3. 部分代码展示

心得:


1.项目大纲

? 1.项目前提

  1. 掌握java基本语法
  2. 熟悉使用流程控制
  3. 了解Arraylist集合的基本
  4. 理解面向对象思想
  5. 熟练封装,继承,多态
  6. 熟悉使用接口,异常

? 2.项目说明

  1. 本实践项目是一个项目开发团队分配管理系统,可以对开发人员和开发团队进行统一管理,并且可以给一个项目分配一个团队进行开发。
  2. 本实践项目有四个模块:用户注册和登录模块,开发人员管理模块,开发团队调度管理模块和开发项目管理模块
  3. 开发人员相关信息请按照需求文档设计
  4. 团队组建过程包括将成员插入到团队中,或从团队中删除某成员,还可以列出团队中现有成员的列表开发团队成员包括架构师、设计师和程序员。
  5. 最后,需要完成每一个项目都能有一个开发团队在进行开发即可

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知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-08-14 13:53:43  更:2021-08-14 13:54:01 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 4:37:39-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码