我的宝~请你相信我们的团队~好吗?----- 项目开发团队

本文档详细介绍了使用Java实现一个基于文本界面的项目开发团队分配管理软件的过程,涵盖用户注册登录、开发人员管理、团队调度和项目管理四大模块。通过面向对象编程,实现类的继承、多态性、接口等高级特性,并强调了数据互通和异常处理的重要性。在每个模块中,作者都提供了具体的代码实现和注意事项,帮助读者理解如何逐步构建这样一个系统。

专业团队

 

目录

一、引言 :

二、项目需求:

三、功能实现:  

四、具体实现:  

1、用户和注册登录模块:

2、开发人员管理模块:

3、开发团队调度模块: 

4、开发项目管理模块:


一、引言 :

        大家好啊!学习java这几个月以来,例如系统这样的增删改查小项目满打满算也做了三四个了,总体做下来,在一开始接触的时候会感觉比较难下手,颇有种拔剑四顾心茫然的意思,只能一步一步的跟着ppt走,一点一点的入手,就像拼图一样,拼到最后,哦~原来是这样啊,也不是很难嘛。所以,我的最大感受就是,一开始胆子要大,步子迈开,后面就能逐渐上手。这次的这个实践项目,我个人觉得本质上就是一个大的系统,里面的四个功能分化为具体的四个小系统,难点在于一开始的入手和最后的bug和优化。

二、项目需求:

模拟实现一个基于文本界面的 项目开发团队分配管理软件
熟悉 Java 面向对象的高级特性,进一步掌握编程技巧和调试技巧
主要涉及以下知识点:
Ø 类的继承性和多态性
Ø 对象的值传递、接口
Ø static final 修饰符
Ø 特殊类的使用:包装类、抽象类、内部类
Ø 异常处理
Ø Java 基本语法和流程控制
Ø 数组, ArrayList 集合

三、功能实现:  

该软件实现以下功能:
Ø 软件启动时,首先进入登录界面进行注册和登录功能。
Ø 当登陆成功后,进入菜单,首先就可以对开发人员账户和密码进行修改。
Ø 然后可以对开发人员进行增删改操作
Ø 人员添加成功后,根据菜单提示,基于现有的 公司成员 ,组建一个 开发团队 以开发一个新的项目。
Ø 组建过程包括将成员插入到团队中,或从团队中删除某成员,还可以列出团队中现有成员的列表,开发团队成员包括架构师、设计师和程序员。
Ø 团队组建成功,则可以进入项目模块,添加项目,分配开发团队进行开发。

  

                                                                                                                    小注意:将不同的类按包来分类放置会方便寻找和操作哦。

四、具体实现:  

1、用户和注册登录模块:

        这个模块是本项目的第一个系统了,和之前做过的差不多,要注意工具包的理解和使用。如果不想再另外创建测试类,可以直接创建测试方法。

public class LoginView {

    private String accountNumber;//账号
    private String password;//密码

    public String getAccountNumber() {
        return accountNumber;
    }

    public String getPassword() {
        return password;
    }

    //注册
    public void register() {
        System.out.println("开始注册");
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入你的注册账号名称:");
        accountNumber = TSUtility.readKeyBoard(7, false);
        /*this.accountNumber = accountNumber;*/
        System.out.println("请输入你的注册密码:");
        password = TSUtility.readKeyBoard(7, false);
        System.out.println("注册成功!请登录!");
    }

    //登录
    public void enter() throws InterruptedException {


        int count = 5;
        while (count > 0) {

            System.out.println("********************🐱");
            System.out.println("***   <登录界面>   ***");
            System.out.println("***   (*/ω\*)   ***🐱");
            System.out.println("********************🐱");

            System.out.println("请输入你的登录账户名称:");
            String accountNumber = TSUtility.readKeyBoard(7, false);
            System.out.println("请输入你的登录密码:");
            String password = TSUtility.readKeyBoard(7, false);
            //判断是否进行过注册
            if (this.accountNumber == null && this.password == null) {
                System.out.println("未检测到您的账号!请您先注册!");
                register();
                continue;
            }
            //注册完正式进入登录
            if (accountNumber.equals(this.accountNumber)) {
                if (password.equals(this.password)) {
                    TSUtility.loadSpecialEffects();
                    System.out.println("登录成功!欢迎您:" + getAccountNumber());
                    break;
                } else {
                    count--;
                    if (count == 0) {
                        System.out.println("登录次数不足!退出!");
                        return;
                    }
                    System.out.println("您输入的密码错误,登录次数还剩" + count + "次,请重新输入");
                }
            } else {
                count--;
                if (count == 0) {
                    System.out.println("登录次数不足!退出!");
                    return;
                }
                System.out.println("您输入的账号错误,登录次数还剩" + count + "次,请重新输入");

            }

        }

        System.out.println("进入软件菜单");

    }

    //修改
    public void amend() {
        while (true) {
            System.out.println("********************🐱");
            System.out.println("***   <修改界面>   ****");
            System.out.println("***  o( =•ω•= )m ***🐱");
            System.out.println("********************🐱");

            System.out.println("请输入您需要修改的类型:");
            System.out.println("1(修改账号)");
            System.out.println("2(修改密码)");
            System.out.println("3(修改账号和密码)");
            System.out.println("4(不修改,退出)");

            char c = TSUtility.readMenuSelection();
            switch (c) {
                case '1':
                    System.out.println("请输入您的新账号");
                    this.accountNumber = TSUtility.readKeyBoard(7, false);
                    System.out.println("修改账号成功!");
                    break;
                case '2':
                    System.out.println("请输入您的新密码");
                    this.password = TSUtility.readKeyBoard(7, false);
                    System.out.println("修改密码成功!");
                    break;
                case '3':
                    System.out.println("请输入您的新账号");
                    this.accountNumber = TSUtility.readKeyBoard(7, false);
                    System.out.println("修改账号成功!");
                    System.out.println("请输入您的新密码");
                    this.password = TSUtility.readKeyBoard(7, false);
                    System.out.println("修改密码成功!");
                    break;
                case '4':
                    System.out.println("退出中。。。");
                    try {
                        TSUtility.loadSpecialEffects();
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    return;
            }
        }
    }

    //测试
    public static void main(String[] args) {
        LoginView l = new LoginView();
        try {
            l.enter();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        l.amend();
    }
}

2、开发人员管理模块:

        这个模块主要是创建雇员、程序员和接口等等这些类,加上创建NameListService类,任务会比较重,要实现员工的增删改查的功能。这个模块开始就要详细注意其中的功能优化和bug了,例如员工的id在删除之后要动态,当捕捉到异常时只需要输出异常的原因即可等等。专家建议将功能完善好了在进行下个模块的创建,最后bug太多,改起来还是很头疼的。

        特别提示:在这个模块中要进行数据互通,这个是非常重要的,在对全体员工进行增删改查的操作之后,开发团队添加程序员时,却发现没有变化,这就是没进行数据互通了,我这里采用了其中的一种方法。用static修饰全体员工的集合,使他变得唯一,其他类在使用到它的时候就不会创建新对象。然后给普通代码块加个是否为空的条件语句,这样在类加载的时候就不会重复加载了。

private static ArrayList<Employee> employees = new ArrayList<Employee>();
{
        if (employees.isEmpty()) {
            employees.add(new Employee(count, "马云 ", 22, 3000));
            employees.add(new Architect(++count, "马化腾", 32, 18000, new NoteBook("联想T4", 6000), 60000, 5000));
            employees.add(new Programmer(++count, "李彦宏", 23, 7000, new PC("戴尔", "NEC 17寸")));
            employees.add(new Programmer(++count, "刘强东", 24, 7300, new PC("戴尔", "三星 17寸")));
            employees.add(new Designer(++count, "雷军 ", 50, 10000, new Printer("激光", "佳能2900"), 5000));
            employees.add(new Programmer(++count, "任志强", 30, 16800, new PC("华硕", "三星 17寸")));
            employees.add(new Designer(++count, "柳传志", 45, 35500, new PC("华硕", "三星 17寸"), 8000));
            employees.add(new Architect(++count, "杨元庆", 35, 6500, new Printer("针式", "爱普生20k"), 15500, 1200));
            employees.add(new Designer(++count, "史玉柱", 27, 7800, new NoteBook("惠普m6", 5800), 1500));
            employees.add(new Programmer(++count, "丁磊 ", 26, 6600, new PC("戴尔", "NEC17寸")));
            employees.add(new Programmer(++count, "张朝阳 ", 35, 7100, new PC("华硕", "三星 17寸")));
            employees.add(new Designer(++count, "杨致远", 38, 9600, new NoteBook("惠普m6", 5800), 3000));
        }
    }

3、开发团队调度模块: 

        这个模块也是先对类进行设计,然后在对它的功能进行完善和优化,其中团队id也要和全体员工的id一样,在增删改查之后要动态变化。

        这个模块的删除功能要格外注意,该模块包含了两个系统,其中开发团队人员系统包含在开发团队调度系统内的,首先进行删除功能时,因为工具包无法排除0和负数的选择,所以对于待删除对象的id或者团队序号应该进行判断,否则将会出现索引越界等等问题。其次是对删除之后的团队员工状态也要及时更新,尤其是在团队删除之后,其中的员工状态也应回归true。最后是团队某一成员删除之后,表示团队实际成员数的total要进行更新。添加功能也是同理。

4、开发项目管理模块:

         这个模块需要创建一个对项目进行操作的类,其中也包含了增删改查的功能,索引越界和更新状态的问题和上个模块一样,该系统中格外要注意不能对一个项目进行重复添加。我采取的方式是在每个项目添加前进行遍历判断是否重复,但是感觉显得冗余。最后,这个模块对整个项目的类进行了整合。建议大家在进行最终测试前,对每个小系统分别进行测试。

//添加新项目
    public void addProject() throws InterruptedException {

        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.setProjectName("小米官网");
                p1.setDesName("开发完成类似于小米官网的web项目.");
                if (pro.size() == 0) {//项目集合没有项目直接添加
                    pro.add(p1);
                    TSUtility.loadSpecialEffects();
                    System.out.println("已添加项目:" + p1.getProjectName());
                } else {//项目集合有项目进行判断是否重复
                    for (int i = 0; i < pro.size(); i++) {
                        if (pro.get(i).getProjectName().equals("小米官网")) {
                            System.out.println("项目:小米官网\t已添加,请勿重复添加!");
                        } else {
                            pro.add(p1);
                            TSUtility.loadSpecialEffects();
                            System.out.println("已添加项目:" + p1.getProjectName());
                            break;
                        }
                    }
                }
                break;
            case '2':
                Project p2 = new Project();
                p2.setProId(count++);
                p2.setProjectName("公益在线商城");
                p2.setDesName("猫宁Morning公益商城是中国公益性在线电子商城.");
                if (pro.size() == 0) {
                    pro.add(p2);
                    TSUtility.loadSpecialEffects();
                    System.out.println("已添加项目:" + p2.getProjectName());
                } else {
                    for (int i = 0; i < pro.size(); i++) {
                        if (pro.get(i).getProjectName().equals("公益在线商城")) {
                            System.out.println("项目:公益在线商城\t已添加,请勿重复添加!");
                        } else {
                            pro.add(p2);
                            TSUtility.loadSpecialEffects();
                            System.out.println("已添加项目:" + p2.getProjectName());
                            break;
                        }
                    }
                }

                break;
            case '3':
                Project p3 = new Project();
                p3.setProId(count++);
                p3.setProjectName("博客系统");
                p3.setDesName("Java博客系统,让每一个有故事的人更好的表达想法!");
                if (pro.size() == 0) {
                    pro.add(p3);
                    TSUtility.loadSpecialEffects();
                    System.out.println("已添加项目:" + p3.getProjectName());
                } else {
                    for (int i = 0; i < pro.size(); i++) {
                        if (pro.get(i).getProjectName().equals("博客系统")) {
                            System.out.println("项目:博客系统\t已添加,请勿重复添加!");
                        } else {
                            pro.add(p3);
                            TSUtility.loadSpecialEffects();
                            System.out.println("已添加项目:" + p3.getProjectName());
                            break;
                        }
                    }
                }
                break;
            case '4':
                Project p4 = new Project();
                p4.setProId(count++);
                p4.setProjectName("在线协作文档编辑系统");
                p4.setDesName("一个很常用的功能,适合小组内的文档编辑。");
                if (pro.size() == 0) {
                    pro.add(p4);
                    TSUtility.loadSpecialEffects();
                    System.out.println("已添加项目:" + p4.getProjectName());
                } else {
                    for (int i = 0; i < pro.size(); i++) {
                        if (pro.get(i).getProjectName().equals("在线协作文档编辑系统")) {
                            System.out.println("项目:在线协作文档编辑系统\t已添加,请勿重复添加!");
                        } else {
                            pro.add(p4);
                            TSUtility.loadSpecialEffects();
                            System.out.println("已添加项目:" + p4.getProjectName());
                            break;
                        }
                    }
                }
                break;
            default:
                System.out.println("项目不存在");
                break;
        }
    }

 求关注!

求收藏!

求评论!

查看源图像

评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值