JavaCore-OOP-2-图书管理系统(商品管理升级版)

来源:互联网 发布:mac ps 未经正确签署 编辑:程序博客网 时间:2024/05/16 05:19

话说

各位读者,晚上好!上一篇博客很基础很基础吧!这篇依旧很基础。在我们基本掌握了框架之后,蓦然回首这些最初接触的知识,还是感慨万千。

今天实现这样一个功能:功能要求如下:

===========================图书管理系统============================1.显示所有的图书2.添加图书3.删除图书4.编辑图书5.购买请输入功能编号(1~5):Book类属性->数组BookListBoolist[0] = “书名,价格,作者”;构造方法在构造方法中,初始化数组BookList,在没有添加图书时,至少内部有三本书。第一个方法:showAllBook 显示所有数组中的图书;第二个方法:addBook 接收三个参数,分别是书名、价格、作者,存入数组;第三个方法:delBook删除图书,接收一个参数:书名,根据书名删除数组中的元素;第四个方法:editBook编辑图书,接收三个参数,分别是书名、价格、作者,根据书名修改价格和作者;第五个方法:buyBook购买图书,把所有图书显示出来,在左侧显示出图书的编号。1 书名,价格,作者2 书名,价格,作者3 书名,价格,作者4 书名,价格,作者用户可以输入编号:1,2,3,4表示用户想买4本书,在控制台输出用户的购物清单,同时计算总价格。把用户买走的书,从数组中删除。

这个功能跟上一篇大同小异,但是这次写得更加细致。其实,后面的框架,如果不了解底层实现,单纯从实现功能来说,比这个还简单些。

开发工具
Eclipse

目录


一、效果图
二、实体类
三、方法类
四、总结


一、效果图

这里写图片描述

开始界面

这里写图片描述

购买图书界面,可以单本买,也可以多本买。

这里写图片描述

购买成功后,书单自动去掉购买掉的书。

二、实体类

Book

package com.hmc.yijian03_02;/****2017年11月23日*User:Meice*下午4:28:22*/public class Book {    private int book_id;    private String book_name;    private double book_price;    private String book_author;    public Book() {         }    public Book(int book_id,String book_name,double book_price,String book_author) {        this.book_id = book_id;        this.book_name = book_name;        this.book_price = book_price;        this.book_author = book_author;    }    public void setBook_id(int book_id) {        this.book_id = book_id;    }    public int getBook_id() {        return book_id;    }    public void setBook_name(String book_name) {        this.book_name = book_name;    }    public String getBook_name() {        return book_name;    }    public void setBook_price(double book_price) {        this.book_price = book_price;    }    public double getBook_price() {        return book_price;    }    public void setBook_author(String book_author) {        this.book_author = book_author;    }    public String getBook_author() {        return book_author;    }    @Override    public String toString() {        return "Book [book_id=" + book_id + ", book_name=" + book_name + ", book_price=" + book_price + ", book_author="                + book_author + "]";    }}

三、方法类

BookManagement

package com.hmc.yijian03_02;import org.junit.Test;import java.text.DecimalFormat;import java.util.Scanner;/****2017年11月23日*User:Meice*下午5:05:05*/public class BookManagement {    //初始化数组,用于存放图书对象    static Book BookList[] = new Book[100];    //购书车    static Book buiedBookList[] = new Book[20];    Book book1 = new Book(1,"《笑傲江湖》",23.45,"金庸");    Book book2 = new Book(2,"《神雕侠侣》",34.56,"金庸");    Book book3 = new Book(3,"《宝贝,宝贝》",12.23,"周国平");     public BookManagement() {        //初始化三个对象        BookList[0] = book1;        BookList[1] = book2;        BookList[2] = book3;    }    /**     * 方法一:显示所有图书showAllBook()     */    @Test    public void showAllBook() {        System.out.println("===================图书列表==========================");        /*//初始化三个对象        BookList[0] = book1;        BookList[1] = book2;        BookList[2] = book3;*/        if(getNullOfBookList()==BookList.length) {            System.out.println("Sorry!图书已售罄,请等待新书上架吧~~");        }        for(int i=0;i<BookList.length;i++) {            if(BookList[i]!=null) {                System.out.println(BookList[i].getBook_id()+"\t"+BookList[i].getBook_name()                        +"\t\t"+BookList[i].getBook_price()+"\t"+BookList[i].getBook_author());            }        }    }    /**     * 如果书名是一个字或者两个字,就对不齐,如何对齐?     *      */    /**     * 方法二:新增图书addBook()      */    public void addBook(Book book) {        //循环就可以保证每次存放的都是在没有书的位置存放啦        for(int i=0;i<BookList.length;i++) {            if(BookList[i]==null) {                BookList[i]=book;                System.out.println("恭喜您!新增成功!");                break;            }        }    }    /**     * 方法三:接收用户返回的对象     */    public Book getOneBook() {        System.out.println("请输入新增图书名称:");        String book_name = new Scanner(System.in).next();        System.out.println("请输入图书价格:");        double book_price = new Scanner(System.in).nextDouble();        System.out.println("请输入图书作者:");        String book_author = new Scanner(System.in).next();        int j =0;        for(;j<BookList.length;j++) {            if(BookList[j]==null) {                System.out.println(j);                break;            }        }        int book_id = j+1;        Book book = new Book(book_id,book_name,book_price,book_author);        return book;    }    /**     * 方法四:接收用户输入序号方法getChooseNumber()     * @param args     */    public int getChooseNumber() {        return new Scanner(System.in).nextInt();    }    /**     * 方法五:删除图书     */    public void delBook() {        System.out.println("请输入要删除图书的图书名:");        String book_name2 = new Scanner(System.in).next();        for(int i=0;i<BookList.length;i++) {            //如果不限制,会报错:NullPointException,会比较后面的空值            if(BookList[i] !=null) {                if(book_name2.equals(BookList[i].getBook_name())) {                    BookList[i]= null;                    System.out.println("恭喜您,删除成功!");                }            }        }    }    /**     * 方法六:编辑图书     */    public void editBook() {        System.out.println("请输入要修改图书的书名:");        String book_name = new Scanner(System.in).next();        System.out.println("请输入该图书价格:");        double book_price = new Scanner(System.in).nextDouble();        System.out.println("请输入该图书作者:");        String book_author = new Scanner(System.in).next();        for(int i=0;i<BookList.length;i++) {            if(BookList[i]!=null) {                if(book_name.equals(BookList[i].getBook_name())) {                    BookList[i].setBook_price(book_price);                    BookList[i].setBook_author(book_author);                    System.out.println("恭喜您!修改成功!");                }            }        }    }    /**     * 方法七:购买图书buyBook()     */    public void buyBook() {        System.out.println("请输入要购买的图书编号【以逗号间隔】:");        String str = new Scanner(System.in).next();        String[] strArr = new String[20];        strArr = str.split(",");        double sumBookPrice = 0;        for(int i=0;i<strArr.length;i++) {            for(int j=0;j<BookList.length;j++) {                if(BookList[j]!=null) {                    if(BookList[j].getBook_id()==Integer.parseInt(strArr[i])) {                        /*System.out.println("您要购买的图书信息如下:");                        System.out.println("书名"+"\t\t\t"+"价格"+"\t\t"+"作者"+"\t\t"+"金额合计");                        System.out.println(BookList[j].getBook_name()+"\t\t"+BookList[j].getBook_price()+                                "\t\t"+BookList[j].getBook_author()+"\t\t");*/                        sumBookPrice +=BookList[j].getBook_price();                        /*System.out.println("\t\t\t\t\t\t\t"+sumBookPrice+"元");*/                        buiedBookList[j] =  BookList[j];                        BookList[j]=null;                        //System.out.println(BookList[j]);                        int m = getNotNullofBookList();                        //待完善                        if(i==(strArr.length-1) && j==m) {                            System.out.println("恭喜您!购买成功!");                        }                        //显示购买图书信息                    }                }            }        }        System.out.println("您购买图书清单信息如下:");        System.out.println("***********************************************");        System.out.println("书名\t\t作者\t价格\t金额合计");        for(int i=0;i<buiedBookList.length;i++) {            if(buiedBookList[i]!=null) {                System.out.println(buiedBookList[i].getBook_name()+"\t"+buiedBookList[i].getBook_author()+                        "\t"+buiedBookList[i].getBook_price());            }        }        DecimalFormat df = new DecimalFormat("#.00");        System.out.println("\t\t\t\t"+df.format(sumBookPrice));        System.out.println("***********************************************");    System.out.println("\n\n");    }    /**     * 方法八:返回BookList[]数组中不为null的值     * 为方法七服务,为了只输出一个“购买成功”提示     */    public int getNotNullofBookList() {        int j=0;        for(int i=0;i<BookList.length;i++) {            if(BookList[i]!=null) {                j++;            }        }        return j;    }    /**     * 方法九:返回BookList[]数组中为null的个数     */    public int getNullOfBookList() {        int k=0;        for(int i=0;i<BookList.length;i++) {            if(BookList[i]==null) {                k++;            }        }        return k;    }    /**     * 方法十:定义开始界面startBookSystem()     * @param args     */    public void startBookSystem() {        System.out.println("================欢迎进入图书管理系统==================");        System.out.println("1.显示图书列表");        System.out.println("2.添加图书");        System.out.println("3.删除图书");        System.out.println("4.编辑图书");        System.out.println("5.购买");        System.out.println("6.退出");        System.out.println("============================================");        System.out.println("请输入要选择的序号:");    }    @Test    public void Test() {        for(int i=3;i<BookList.length;i++) {            BookList[i] = null;        }    }    public static void main(String[] args) {        BookManagement bm = new BookManagement();        while(true) {            bm.startBookSystem();            switch(bm.getChooseNumber()) {                case 1:                    //显示图书                    bm.showAllBook();                    break;                case 2:                    //新增图书                    //接收一个图书对象                    Book book = bm.getOneBook();                    bm.addBook(book);                    break;                case 3:                    //删除图书                    bm.delBook();                    break;                case 4:                    //编辑图书                    bm.editBook();                    break;                case 5:                    bm.showAllBook();                    bm.buyBook();                    break;                case 6:                    System.out.println("谢谢惠顾!您的认可会让我们做得更好!");                    return;                default:                    System.out.println("输入有误奥,请重新选择");                    break;            }        }    }    /**     * 小结:     * 1、如何初始化值?二维数组?一维数组?——对象     * 2、如何保证每次添加是给null值添加呢?-break;     * 3、如何自动添加图书编号呢?类似2的解决方案,找到编号,手动添加;     * 4、购买书以后,设置为空,要想生效,就要在构造方法里初始化数组中的对象,否则每次查看,都是原来的三本书,其实后台已经更新了。     * 5、购买成功,只提示一次!不必每本书都提示!     * 6、图书售罄应该提示没有图书     * 7、购买后的图书清单,单独存放在一个数组中,便于输出     */}   

四、总结


1、初始化值的时候,开始想用二维数组,其实没必要;数组里面可以直接添加对象,跟集合类似;List集合底层还不是数组;

2、初始化值的时候,注意初始化的位置;否则调用方法就初始化数据;

3、添加图书,要保证每次自动给一个null值添加,用到了关键字break;添加后就跳出循环;

4、用户添加图书,是不用考虑编号的,但是后台要考虑,后台考虑思路是找到不是null的那个序号,自动加1即可;

5、购买图书成功,如何只实现一次提示?需要用到循环的初始值和最终值;

6、如果所有图书购买完毕,需要提示,注意提示的位置;

7、购买图书后,要单独罗列图书清单,所以单独存放在一个数组中,便于操作。


细节还是不少。好了,读者朋友,你也敲一敲吧。晚安!下期再会!





========================优化=========================
后续优化如下:

主要输入错误等情况一 一作了处理,整个小程序相对于上面这个要健壮许多,主要作了下面这些优化:


     * 优化1:不能直接死循环,要根据用户选择来决定是否循环;     *      * 优化2:新增图书直接输出“恭喜您!新增成功”还不够好,要输出这本书,让用户再次确认一下;这里把isContinueDo()用起来;     *      * 优化3:删除图书,书名不存在要做个判断;     *      * 优化4:编辑图书,要输出编辑后的信息;     *      * 优化5:Exception in thread "main" java.util.InputMismatchException这个异常要处理下,用try catch捕获一下 用户很可能输入5.不小心,就报错,多尴尬!有什么办法可以全局捕获异常?因为每次输入都可能报这个异常?这里还暂不能用配置文件;这里先局部处理     *       * 优化6:购买成功后,要打印购买清单,并且计算总价格;总金额要格式化一下"#.00";     *      * 优化7:当图书被买完,要提示图书售罄;     *      * 优化8:Exception in thread "main"      * java.lang.NumberFormatException:这是在购买图书的时候容易出现的,因为默认处理英文,也要try catch一下。

优化后的代码如下:
Book实体类还是和上面一样,只是主体代码丰富了不少。

BookManagementSystem

package com.hmc.yijian04;import java.nio.file.attribute.AclEntry.Builder;import java.text.DecimalFormat;import java.util.Scanner;import org.junit.Test;/***2017年11月24日*User:Meice*下午5:09:05*/public class BookManagementSystem {    //接受用户选择参数     static int choice;     //定义用户是否继续参数     boolean isContinue = false;     //定义购买总金额     double sumOfBookPrice = 0;    //初始化3本书,在构造方法中    static Book[] BookList = new Book[100];    //定义数组存放购买清单类似“购物车”    Book[] buiedBooksList = new Book[20];    public BookManagementSystem() {        Book book1 = new Book(1,"《三国演义》",12.56,"罗贯中");        Book book2 = new Book(2,"《儒林外史》",25.66,"吴敬梓");        Book book3 = new Book(3,"《宝贝,宝贝》",34.55,"周国平");        Book book4 = new Book(4,"《悲惨世界》",56.77,"雨果");        Book book5 = new Book(5,"《曾国藩家书》",23.45,"曾国藩");        //遍历赋值还不够方便        BookList[0] = book1;        BookList[1] = book2;        BookList[2] = book3;        BookList[3] = book4;        BookList[4] = book5;    }    //先把框架搭建出来,然后针对性的写各种方法    //这个作为主要测试类    public static void main(String[] args) {        BookManagementSystem bms = new BookManagementSystem();        do {            bms.welcomeEnter();            switch(bms.getChoiceNumber()) {            case 1:                //显示图书列表                bms.showAllBook();                break;            case 2:                //新增图书                bms.addBook(bms.getOneBook());                break;            case 3:                //删除图书                bms.showAllBook();                bms.delBook(bms.getOneBookName());                break;            case 4:                //编辑图书                bms.showAllBook();                bms.editBook(bms.getOneBookName());                break;            case 5:                //购买                bms.showAllBook();                bms.buyBook();                break;            default:                //其他情况                break;            }        }while(bms.isContinueDo("是否继续?(y/n)"));    }    /**     * 定义欢迎界面     *      */    public void welcomeEnter() {        System.out.println("=================欢迎进入图书管理系统========================");        System.out.println("1.显示图书列表\n2.新增图书\n3.删除图书\n4.编辑图书\n5.购买图书");        System.out.println("=======================================================");        System.out.println("请输入对应操作序号:");    }    /**     * 方法一:开始界面     * getChoiceNumber()     */    public int getChoiceNumber() {        //处理InputMismatchException异常        try {            choice = new Scanner(System.in).nextInt();        }catch (Exception e) {            System.out.println("输入有误,请重新选择");            welcomeEnter();        }        //这里要补充如果用户输出其他,该怎么办?捕获异常即可        return choice;    }    /**     * 方法二:showAllBook()     * 显示图书列表        */    public void showAllBook() {        //知识点:数组遍历        System.out.println("==========================图书列表======================");        //图书售罄,做提示        if(getBooksCount()==0) {            System.out.println("图书已售罄,期待您下次购买~");        }else {            System.out.println("图书编号\t"+"图书名称\t\t"+"价格\t"+"作者");        }        for(int i=0;i<BookList.length;i++) {            if(BookList[i]!=null) {                System.out.println(BookList[i].getBook_id()+"\t"+BookList[i].getBook_name()+                        "\t"+BookList[i].getBook_price()+"\t"+BookList[i].getBook_author());            }        }        System.out.println("======================================================");    }    /**     * 方法三:新增图书     * addBook()     */    public void addBook(Book book) {        //打印输出新增图书        System.out.println("********************************************");        System.out.println("书名\t\t价格\t\t作者");        System.out.println(book.getBook_name()+"\t"+book.getBook_price()+"\t\t"+book.getBook_author());        System.out.println("********************************************");        boolean flag = isContinueDo("请确认新增图书正确与否,是否新增 (y/n)?");        for(int i=0;i<BookList.length;i++) {            //如果用户输入书目有误,就中断            if(flag) {                if(BookList[i]==null) {                    BookList[i] = book;                    System.out.println("恭喜您,新增成功!");                    break;                }            }else {                System.out.println("请重新选择新增图书操作");                return;            }        }    }    /**     * 方法三.2确认是否新增图书     * 我们让这个方法来调用新增操作     * switch里面调用这个方法     */    public void isAddBook() {        //用户确认新增无误后在执行新增操作        if(isContinueDo("请确认以上新增图书是否有误 (y/n)?")) {            addBook(getOneBook());              }else {            System.out.println("请重新输入:");            addBook(getOneBook());        }    }    /**     * 方法四:接收用户的图书     * getOneBook()     */    public Book getOneBook() {        System.out.println("请输入书名:");        String book_name = new Scanner(System.in).next();        System.out.println("请输入价格:");        double book_price = new Scanner(System.in).nextDouble();        System.out.println("请输入作者:");        String book_author = new Scanner(System.in).next();        Book book = new Book(getBooksCount()+1, book_name, book_price, book_author);        return book;    }    /**     * 方法五:定义获取图书数量的方法     * getBooksCount()     * 这个方法很有必要:判断图书售罄可以用;判断是否循环结束也可以用     */    public int getBooksCount() {        int j = 0;        for(int i=0;i<BookList.length;i++) {            if(BookList[i] != null) {                j++;            }        }        return j;    }    /**     * 方法六:删除图书     * delBook()     */    public void delBook(String book_name) {        for(int i=0;i<BookList.length;i++) {            if(BookList[i]!=null) {                if(book_name.equals(BookList[i].getBook_name())) {                    BookList[i] = null;                         System.out.println("恭喜您!删除成功!");                    }else{                    //要确保遍历结束                    if(i==(getBooksCount()-1)) {                        System.out.println("书名不存在,请重新选择操作");                            break;                    }                }            }        }    }    /**     * 方法七:获得一个图书名     * getOneBookName()     */    public String getOneBookName() {        System.out.println("请输入书名:");        return new Scanner(System.in).next();    }    /**     * 方法八:根据书名编辑图书     * editBook()     */    public void editBook(String book_name) {        for(int i=0;i<BookList.length;i++) {            if(BookList[i]!=null) {                if(book_name.equals(BookList[i].getBook_name())) {                    System.out.println("请输入修改后的价格:");                    double book_price = new Scanner(System.in).nextDouble();                    System.out.println("请输入修改后的作者:");                    String book_author = new Scanner(System.in).next();                    //输出用户要修改的信息,便于核实                    System.out.println("********************************************");                    System.out.println("书名\t\t价格\t\t作者");                    System.out.println(book_name+"\t"+book_price+"\t\t"+book_author);                    System.out.println("********************************************");                    //用户要对修改的数据做确认,如果无误,在执行                    if(isContinueDo("请核实修改信息,确认修改(y/n)?")) {                        BookList[i].setBook_price(book_price);                        BookList[i].setBook_author(book_author);                        System.out.println("恭喜您!修改成功!");                    }else {                        System.out.println("请重新选择修改操作:");                        break;                    }                }else {                    //这个地方有个bug,命名修改成功后,为什么代码还会进来?                    System.out.println("输入有误奥,请重新选择操作");                    break;                }            }        }    }    /**     * 方法九:购买图书     * buyBook()     */    public void buyBook() {        System.out.println("请输入购买图书编号(以英文逗号间隔):");        //处理NumberFormatException        String book_ids = null;        try {            book_ids = new Scanner(System.in).next();            String[] book_idArr = book_ids.split(",");            for(int i=0;i<book_idArr.length;i++) {                for(int j=0;j<BookList.length;j++) {                    if(BookList[j]!=null) {                        if(Integer.parseInt(book_idArr[i])==BookList[j].getBook_id()) {                            //把购买图书存入“购物车”                            buiedBooksList[j]=BookList[j];                            sumOfBookPrice +=BookList[j].getBook_price();                            BookList[j]=null;                        }                    }                }            }            System.out.println("恭喜您,购买成功!");            //显示购买信息            System.out.println("您的购物清单如下:");            System.out.println("********************************************");            System.out.println("书名\t\t价格\t\t作者\t总金额");            for(int i=0;i<buiedBooksList.length;i++) {                if(buiedBooksList[i]!=null) {                    System.out.println(buiedBooksList[i].getBook_name()+"\t"+buiedBooksList[i].getBook_price()+"\t\t"+buiedBooksList[i].getBook_author());                }            }            DecimalFormat df = new DecimalFormat("#.00");            System.out.println("\t\t\t\t\t"+df.format(sumOfBookPrice)+"元");            System.out.println("********************************************");        }catch (NumberFormatException e) {            System.out.println("输入有误,请重新选择。\n输入要购买图书编号,用英文逗号间隔:");        }    }    /**     * 方法十:判断用户是否继续操作     * isContinueDo()//和变量名区别下     * str代表要提示的语句     * 为了提高这段代码的复用率,所以增加一个参数str,让用户自己选择要输入的语句     * 比如一开始是:"是否继续?(y/n)"     * 新增图书的时候:"是否新增?(y/n)"     * 删除的时候:"是否删除?(y/n)"     * 修改的时候:"请再次确认修改:(y/n)";这样一段代码就可以复用好多次     */    public boolean isContinueDo(String str) {        System.out.println(str);        //choose用来接收用户输入的字母        String choose = new Scanner(System.in).next();        if("y".equals(choose)||"Y".equals(choose)) {            isContinue = true;        }else {            if("n".equals(choose)|| "N".equals(choose)) {                System.out.println("谢谢惠顾~期待下次光临~");                isContinue = false;            }else {                System.out.println("您输入有误,请重新输入输入:y/Y表示继续;n/N表示退出");                String choose2 = new Scanner(System.in).next();                if("y".equals(choose2)||"Y".equals(choose2)) {                    isContinue = true;                }else {                    if("n".equals(choose2)||"N".equals(choose2)) {                        System.out.println("谢谢惠顾~欢迎下次光临~");                        isContinue= false;                    }else {                        System.out.println("您多次输入错误!程序自动终止,请求助管理员【小美】吧!");                        isContinue = false;                    }                }            }        }        return isContinue;    }    /**     * 1.补充choice其他方法     * 2.     *      */    //遇到的问题    /**     * 1.Exception in thread "main" java.lang.NullPointerException     * 数组初始化100个,遍历的时候,如果不做选择,就会报错!     *      * 2.我把构造方法多写了个void,导致数组出不来。可见,没有深刻体会到什么是构造方法!     *      * 3.开始偷懒,把totalBooks直接数量直接在showAllBook()中加1实现的,发现一查看,序号就会按照书本次数翻倍。     * 所以,单独提炼出来。     *      * 4.删除图书,如果书名输入有误,提示会循环重复让输入书名,怎么处理?break     * public void delBook(String book_name) {        for(int i=0;i<BookList.length;i++) {            if(BookList[i]!=null) {                if(book_name.equals(BookList[i].getBook_name())) {                    BookList[i] = null;                }else {                    System.out.println("书名不存在,请重新输入完整版书名(含书名号):");                    getOneBookName();                    //continue;                }            }        }        System.out.println("恭喜您!删除成功!");    }     *      *      * 优化1:不能直接死循环,要根据用户选择来决定是否循环;     * 优化2:新增图书直接输出“恭喜您!新增成功”还不够好,要输出这本书,让用户再次确认一下;这里把isContinueDo()用起来;     * 优化3:删除图书,书名不存在要做个判断;     * 优化4:编辑图书,要输出编辑后的信息;     * 优化5:Exception in thread "main" java.util.InputMismatchException这个异常要处理下,用try catch捕获一下      *      用户很可能输入5.不小心,就报错,多尴尬!有什么办法可以全局捕获异常?因为每次输入都可能报这个异常?这里还暂不能用配置文件;这里先局部处理     *       * 优化6:购买成功后,要打印购买清单,并且计算总价格;总金额要格式化一下"#.00";     * 优化7:当图书被买完,要提示图书售罄;     * 优化8:Exception in thread "main" java.lang.NumberFormatException:这是在购买图书的时候容易出现的,因为默认处理英文,     * 也要try catch一下     */    /**     * 1.处理数组,要时刻提防出现NullPointException和IndexOutofException     * 2.不论多么简单的功能,都要站在用户角度考虑问题;站在用户角度,就是要多尝试;最好请不同的人来检测你的程序,这就是测试人员的巨大作用,他们     * 就相当于内部的客户;有些你可以想到,但是用户千千万,意料之外的情况就会非常多;但是按照程序员的严谨态度,我们应该尽全力把产品功能做到完美;     * 3.写基本功能花费时间不多,但是优化要考虑的问题就多了点。原来200来行代码,优化后,就是400来行了。     */}

总结2:


1.处理数组,要时刻提防出现NullPointException和IndexOutofException;

2.不论多么简单的功能,都要站在用户角度考虑问题;站在用户角度,就是要多尝试;最好请不同的人来检测你的程序,这就是测试人员的巨大作用,他们就相当于内部的客户;有些你可以想到,但是用户千千万,意料之外的情况就会非常多;但是按照程序员的严谨态度,我们应该尽全力把产品功能做到完美,有些功能一次是优化是不行的,需要不断优化,温故而知新嘛~

3.写基本功能花费时间不多,但是优化要考虑的问题就多了点。原来200来行代码,优化后,就是400来行了。


优化时间:2017.11.25下午

下期再会~!

原创粉丝点击