<项目><day12>通讯录(视频)

1 需求分析(需求分析师)

功能分析:

1)添加联系人

2)修改联系人

3)删除联系人

4)查询所有联系人

2 需求设计(系统分析师/架构师/资深开发人员)

2.1设计实体(抽象实体)

联系人实体:

class Contact{
    private String id;
    private String name;
    private String gender;
    private int age;
    private String phone;
    private String email;
    private String qq;
  public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getGender() {
        return gender;
    }
    public void setGender(String gender) {
        this.gender = gender;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public String getPhone() {
        return phone;
    }
    public void setPhone(String phone) {
        this.phone = phone;
    }
    public String getEmail() {
        return email;
    }
    public void setEmail(String email) {
        this.email = email;
    }
    public String getQq() {
        return qq;
    }
    public void setQq(String qq) {
        this.qq = qq;
    }
    @Override
    public String toString() {
        return "Contact [age=" + age + ", email=" + email + ", gender="
                + gender + ", id=" + id + ", name=" + name + ", phone=" + phone
                + ", qq=" + qq + "]";
    }
}

2.2设计“数据库”,(xml代替"数据库")

XML格式

contact.xml
<contactList>
<contact id="1">
<name>张三</name>
<gender>男</gender>
<age>20</age>
<phone>13433334444</phone>
<email>[email protected]</email>
<qq>43222222<qq>
</contact>
</contactList>

XML工具类

 1 public class XMLUtil {
 2
 3     /**
 4      * 读取xml文档方法
 5      * @return
 6      */
 7     public static Document getDocument(){
 8         try {
 9             Document doc = new SAXReader().read(new File("e:/contact.xml"));
10             return doc;
11         } catch (DocumentException e) {
12             e.printStackTrace();
13             throw new RuntimeException(e);
14         }
15     }
16
17
18     /**
19      * 写出到xml文档中
20      */
21     public static void write2xml(Document doc){
22         try {
23             FileOutputStream out = new FileOutputStream("e:/contact.xml");
24             OutputFormat format = OutputFormat.createPrettyPrint();
25             format.setEncoding("utf-8");
26             XMLWriter writer = new XMLWriter(out,format);
27             writer.write(doc);
28             writer.close();
29         } catch (Exception e) {
30             e.printStackTrace();
31             throw new RuntimeException(e);
32         }
33     }
34 }

2.3设计涉及的接口

DAO接口(数据访问对象):实体对象的CRUD方法。

项目原则: 通常一个实体对象就会对应一个DAO接口和一个DAO实现类

DAO接口

interface ContactDao{
    public void addContact(Contact contact);//添加联系人
    public void updateContact(Contact contact);//修改联系人
    public void deleteContact(String id);//删除联系人
    public List<Contact> findAll();  //查询所有联系人
    public Contact findById(String id);//根据编号查询联系人
}

DAO实现类

  1 public class ContactDaoImpl implements ContactDao {
  2
  3     /**
  4      * 添加联系人
  5      */
  6     public void addContact(Contact contact) {
  7         try {
  8             File file = new File("e:/contact.xml");
  9             Document doc = null;
 10             Element rootElem = null;
 11             if(!file.exists()){
 12                 /**
 13                  * 需求: 把contact对象保存到xml文件中
 14                  */
 15                 //如果没有xml文件,则创建xml文件
 16                 doc = DocumentHelper.createDocument();
 17                 //创建根标签
 18                 rootElem = doc.addElement("contactList");
 19             }else{
 20                 //如果有xml文件,则读取xml文件
 21                 doc = XMLUtil.getDocument();
 22                 //如果有xml文件,读取根标签
 23                 rootElem = doc.getRootElement();
 24             }
 25
 26             //添加contact标签
 27             /**
 28              * <contact id="1">
 29                     <name>eric</name>
 30                     <gender>男</gender>
 31                     <age>20</age>
 32                     <phone>1343333</phone>
 33                     <email>[email protected]</email>
 34                     <qq>554444</qq>
 35                 </contact>
 36              */
 37             Element contactElem = rootElem.addElement("contact");
 38
 39             /**
 40              * 由系统自动生成随机且唯一的ID值,赋值给联系人
 41              */
 42             String uuid = UUID.randomUUID().toString().replace("-","");
 43
 44             contactElem.addAttribute("id", uuid);
 45             contactElem.addElement("name").setText(contact.getName());
 46             contactElem.addElement("gender").setText(contact.getGender());
 47             contactElem.addElement("age").setText(contact.getAge()+"");
 48             contactElem.addElement("phone").setText(contact.getPhone());
 49             contactElem.addElement("email").setText(contact.getEmail());
 50             contactElem.addElement("qq").setText(contact.getQq()); 51
 52             //把Document写出到xml文件
 53             XMLUtil.write2xml(doc);
 54         } catch (Exception e) {
 55             e.printStackTrace();
 56             throw new RuntimeException(e);
 57         }
 58     }
 59
 60     /**
 61      * 删除联系人
 62      */
 63     public void deleteContact(String id) {
 64         try {
 65             //1.读取xml文件
 66             Document doc = XMLUtil.getDocument();
 67             //2.查询需要删除id的contact
 68             Element contactElem = (Element)doc.selectSingleNode("//contact[@id=‘"+id+"‘]");
 69             //删除标签
 70             if(contactElem!=null){
 71                 contactElem.detach();
 72             }
 73
 74             //3.把Document写出到xml文件
 75             XMLUtil.write2xml(doc);
 76         } catch (Exception e) {
 77             e.printStackTrace();
 78             throw new RuntimeException(e);
 79         }
 80     }
 81
 82     /**
 83      * 查询所有联系人
 84      */
 85     public List<Contact> findAll() {
 86         //1.读取xml文件
 87         Document doc = XMLUtil.getDocument();
 88
 89         //2.创建List对象
 90         List<Contact> list = new ArrayList<Contact>();
 91         //3.读取contact标签
 92         List<Element> conList = (List<Element>)doc.selectNodes("//contact");
 93         for(Element e:conList){
 94             //创建COntact对象
 95             Contact c = new Contact();
 96             c.setId(e.attributeValue("id"));
 97             c.setName(e.elementText("name"));
 98             c.setGender(e.elementText("gender"));
 99             c.setAge(Integer.parseInt(e.elementText("age")));
100             c.setPhone(e.elementText("phone"));
101             c.setEmail(e.elementText("email"));
102             c.setQq(e.elementText("qq"));
103             //把Contact放入list中
104             list.add(c);
105         }
106         return list;
107     }
108
109     /**
110      * 根据编号查询联系人
111      */
112     public Contact findById(String id) {
113         Document doc = XMLUtil.getDocument();
114         Element e = (Element)doc.selectSingleNode("//contact[@id=‘"+id+"‘]");
115
116         Contact c = null;
117         if(e!=null){
118             //创建COntact对象
119             c = new Contact();
120             c.setId(e.attributeValue("id"));
121             c.setName(e.elementText("name"));
122             c.setGender(e.elementText("gender"));
123             c.setAge(Integer.parseInt(e.elementText("age")));
124             c.setPhone(e.elementText("phone"));
125             c.setEmail(e.elementText("email"));
126             c.setQq(e.elementText("qq"));
127         }
128         return c;
129     }
130
131     /**
132      * 修改联系人
133      */
134     public void updateContact(Contact contact) {
135         /**
136          * 需求: 修改id值为2的联系人
137          *     1)查询id值为2的contact标签
138          *  2)修改contact标签的内容
139          */
140         try {
141             //1.读取xml文件
142             Document doc = XMLUtil.getDocument();
143
144             Element contactElem = (Element)doc.selectSingleNode("//contact[@id=‘"+contact.getId()+"‘]");
145
146             //2.修改contact标签内容            contactElem.element("name").setText(contact.getName());
147             contactElem.element("gender").setText(contact.getGender());
148             contactElem.element("age").setText(contact.getAge()+"");
149             contactElem.element("phone").setText(contact.getPhone());
150             contactElem.element("email").setText(contact.getEmail());
151             contactElem.element("qq").setText(contact.getQq());
152             //3.把Document写出到xml文件
153             XMLUtil.write2xml(doc);
154         } catch (Exception e) {
155             e.printStackTrace();
156             throw new RuntimeException(e);
157         }
158     }
159     public static void main(String[] args) {
160         //测试UUID
161         String uuid = UUID.randomUUID().toString().replace("-","");
162         System.out.println(uuid);
163     }
164
165 }

2.4设计项目的目录结构

项目名称: contactSys_web

目录结构:

|- contactSys_web

  |-src

    |-gz.itcast.contactSys_web.entity : 存放实体对象

    |-gz.itcast.contactSys_web.dao : 存放dao的接口

    |-gz.itcast.contactSys_web.dao.impl: 存放dao的实现类

    |-gz.itcast.contactSys_web.servlet: 存放servlet的类

    |-gz.itcast.contactSys_web.test: 存放单元测试类

    |-gz.itcast.contactSys_web.util: 存放工具类

    |-gz.itcast.contactSys_web.exception: 存放自定义异常类

  |-WebRoot

    |-html文件

    |-images:目录。存放图片资源

    |-css:目录。存放css资源

    |-js:目录。存放js资源

3 编码实现(软件开发工程师/攻城狮)

开发顺序:

设计数据库-> 实体 -> DAO接口,DAO实现-> Servlet+html页面

3.1显示所有人的逻辑

public class ListContactServlet extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        //1.从xml中读取出联系人数据
        ContactDao dao = new ContactDaoImpl();
        List<Contact> list = dao.findAll();

        //2.显示到浏览器
        response.setContentType("text/html;charset=utf-8");
        PrintWriter writer = response.getWriter();

        String html = "";

        //shift+alt+A   ^(.*)$  \1";
        html += "<!DOCTYPE html PUBLIC ‘-//W3C//DTD XHTML 1.0 Transitional//EN‘ ‘http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd‘>";
        html += "<html xmlns=‘http://www.w3.org/1999/xhtml‘>";
        html += "<head>";
        html += "<meta http-equiv=‘Content-Type‘ content=‘text/html; charset=utf-8‘ />";
        html += "<title>查询所有联系人</title>";
        html += "<style type=‘text/css‘>";
        html += "    table td{";
        html += "        /*文字居中*/";
        html += "        text-align:center;";
        html += "    }";
        html += "    ";
        html += "    /*合并表格的边框*/";
        html += "    table{";
        html += "        border-collapse:collapse;";
        html += "    }";
        html += "</style>";
        html += "</head>";
        html += "";
        html += "<body>";
        html += "<center><h3>查询所有联系人</h3></center>";
        html += "<table align=‘center‘ border=‘1‘ width=‘800px‘>";
        html += "    <tr>";
        html += "        <th>编号</th>";
        html += "        <th>姓名</th>";
        html += "        <th>性别</th>";
        html += "        <th>年龄</th>";
        html += "        <th>电话</th>";
        html += "        <th>邮箱</th>";
        html += "        <th>QQ</th>";
        html += "        <th>操作</th>";
        html += "    </tr>";
        if(list!=null){
            for (Contact contact : list) {
                html += "    <tr>";
                html += "        <td>"+contact.getId()+"</td>";
                html += "        <td>"+contact.getName()+"</td>";
                html += "        <td>"+contact.getGender()+"</td>";
                html += "        <td>"+contact.getAge()+"</td>";
                html += "        <td>"+contact.getPhone()+"</td>";
                html += "        <td>"+contact.getEmail()+"</td>";
                html += "        <td>"+contact.getQq()+"</td>";
                html += "        <td><a href=‘"+request.getContextPath()+"/QueryContactServlet?id="+contact.getId()+"‘>修改</a>&nbsp;<a href=‘"+request.getContextPath()+"/DeleteContactServlet?id="+contact.getId()+"‘>删除</a></td>";
                html += "    </tr>";
            }
        }
        html += "    <tr>";
        html += "        <td colspan=‘8‘ align=‘center‘><a href=‘"+request.getContextPath()+"/addContact.html‘>[添加联系人]</a></td>";
        html += "    </tr>";
        html += "</table>";
        html += "</body>";
        html += "</html>";

        writer.write(html);

    }

    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        doGet(request, response);
    }

}

3.2添加联系人的逻辑

 1 public class AddContactServlet extends HttpServlet {
 2
 3     public void doGet(HttpServletRequest request, HttpServletResponse response)
 4             throws ServletException, IOException {
 5         request.setCharacterEncoding("utf-8");
 6         //1.接收参数
 7         String name = request.getParameter("name");
 8         String gender = request.getParameter("gender");
 9         String age = request.getParameter("age");
10         String phone = request.getParameter("phone");
11         String email = request.getParameter("email");
12         String qq = request.getParameter("qq");
13
14         //封装成Contact对象
15         Contact contact = new Contact();
16         contact.setName(name);
17         contact.setGender(gender);
18         contact.setAge(Integer.parseInt(age));
19         contact.setPhone(phone);
20         contact.setEmail(email);
21         contact.setQq(qq);
22
23         //2.调用dao类的添加联系人的方法
24         ContactDao dao = new ContactDaoImpl();
25         dao.addContact(contact);
26
27         //3.跳转到查询联系人的页面
28         response.sendRedirect(request.getContextPath()+"/ListContactServlet");
29     }
30
31     public void doPost(HttpServletRequest request, HttpServletResponse response)
32             throws ServletException, IOException {
33         doGet(request, response);
34     }
35
36 }

3.3修改前查询联系人的逻辑

 1 public class QueryContactServlet extends HttpServlet {
 2
 3     public void doGet(HttpServletRequest request, HttpServletResponse response)
 4             throws ServletException, IOException {
 5         //1.接收id
 6         String id = request.getParameter("id");
 7
 8         //2.调用dao根据id查询联系人的方法
 9         ContactDao dao = new ContactDaoImpl();
10         Contact contact = dao.findById(id);
11
12         //3.把联系人显示到浏览器中
13         response.setContentType("text/html;charset=utf-8");
14         PrintWriter writer = response.getWriter();
15
16         String html = "";
17
18         html += "<!DOCTYPE html PUBLIC ‘-//W3C//DTD XHTML 1.0 Transitional//EN‘ ‘http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd‘>";
19         html += "<html xmlns=‘http://www.w3.org/1999/xhtml‘>";
20         html += "<head>";
21         html += "<meta http-equiv=‘Content-Type‘ content=‘text/html; charset=utf-8‘ />";
22         html += "<title>修改联系人</title>";
23         html += "</head>";
24         html += "";
25         html += "<body>";
26         html += "<center><h3>修改联系人</h3></center>";
27         html += "<form action=‘"+request.getContextPath()+"/UpdateContactServlet‘ method=‘post‘>";
28         //注意:添加id的隐藏域
29         html += "<input type=‘hidden‘ name=‘id‘ value=‘"+contact.getId()+"‘/>";
30         html += "<table align=‘center‘ border=‘1‘ width=‘300px‘>";
31         html += "    <tr>";
32         html += "        <th>姓名</th>";
33         html += "        <td><input type=‘text‘ name=‘name‘ value=‘"+contact.getName()+"‘/></td>";
34         html += "    </tr>";
35         html += "    <tr>";
36         html += "        <th>性别</th>";
37         html += "        <td>";
38
39         if(contact.getGender().equals("男")){
40             html += "        <input type=‘radio‘ name=‘gender‘ value=‘男‘ checked=‘checked‘/>男";
41             html += "        <input type=‘radio‘ name=‘gender‘ value=‘女‘/>女";
42         }else if(contact.getGender().equals("女")){
43             html += "        <input type=‘radio‘ name=‘gender‘ value=‘男‘/>男";
44             html += "        <input type=‘radio‘ name=‘gender‘ value=‘女‘ checked=‘checked‘/>女";
45         }else{
46             html += "        <input type=‘radio‘ name=‘gender‘ value=‘男‘ checked=‘checked‘/>男";
47             html += "        <input type=‘radio‘ name=‘gender‘ value=‘女‘/>女";
48         }
49
50         html += "        </td>";
51         html += "    </tr>";
52         html += "    <tr>";
53         html += "        <th>年龄</th>";
54         html += "        <td><input type=‘text‘ name=‘age‘ value=‘"+contact.getAge()+"‘/></td>";
55         html += "    </tr>";
56         html += "    <tr>";
57         html += "        <th>电话</th>";
58         html += "        <td><input type=‘text‘ name=‘phone‘ value=‘"+contact.getPhone()+"‘/></td>";
59         html += "    </tr>";
60         html += "    <tr>";
61         html += "        <th>邮箱</th>";
62         html += "        <td><input type=‘text‘ name=‘email‘ value=‘"+contact.getEmail()+"‘/></td>";
63         html += "    </tr>";
64         html += "    <tr>";
65         html += "        <th>QQ</th>";
66         html += "        <td><input type=‘text‘ name=‘qq‘ value=‘"+contact.getQq()+"‘/></td>";
67         html += "    </tr>";
68         html += "    <tr>";
69         html += "        <td colspan=‘2‘ align=‘center‘>";
70         html += "        <input type=‘submit‘ value=‘保存‘/>&nbsp;";
71         html += "        <input type=‘reset‘ value=‘重置‘/></td>";
72         html += "    </tr>";
73         html += "</table>";
74         html += "</form>";
75         html += "</body>";
76         html += "</html>";
77
78
79
80         writer.write(html);
81     }
82
83     public void doPost(HttpServletRequest request, HttpServletResponse response)
84             throws ServletException, IOException {
85         doGet(request, response);
86     }
87
88 }

3.4修改联系人的逻辑

 1 public class UpdateContactServlet extends HttpServlet {
 2
 3     public void doGet(HttpServletRequest request, HttpServletResponse response)
 4             throws ServletException, IOException {
 5         request.setCharacterEncoding("utf-8");
 6         //1.接收参数
 7         String id = request.getParameter("id");
 8         String name = request.getParameter("name");
 9         String gender = request.getParameter("gender");
10         String age = request.getParameter("age");
11         String phone = request.getParameter("phone");
12         String email = request.getParameter("email");
13         String qq = request.getParameter("qq");
14
15         //封装成Contact对象
16         Contact contact = new Contact();
17         contact.setId(id);
18         contact.setName(name);
19         contact.setGender(gender);
20         contact.setAge(Integer.parseInt(age));
21         contact.setPhone(phone);
22         contact.setEmail(email);
23         contact.setQq(qq);
24
25         //2.调用dao修改联系人的方法
26         ContactDao dao = new ContactDaoImpl();
27         dao.updateContact(contact);
28
29         //3.跳转到查询联系人的页面
30         response.sendRedirect(request.getContextPath()+"/ListContactServlet");
31
32     }
33
34     public void doPost(HttpServletRequest request, HttpServletResponse response)
35             throws ServletException, IOException {
36         doGet(request, response);
37     }
38
39 }

3.5删除联系人的逻辑

 1 public class DeleteContactServlet extends HttpServlet {
 2
 3     public void doGet(HttpServletRequest request, HttpServletResponse response)
 4             throws ServletException, IOException {
 5         //在火狐浏览器中以Get方式提交带参数的数据,会重复提交两次。
 6         System.out.println("删除联系人");
 7         //1.接收id
 8         String id = request.getParameter("id");
 9
10         //2.调用dao删除联系人的方法
11         ContactDao dao = new ContactDaoImpl();
12         dao.deleteContact(id);
13
14         //3.跳转到查询联系人的页面
15         response.sendRedirect(request.getContextPath()+"/ListContactServlet");
16     }
17
18     public void doPost(HttpServletRequest request, HttpServletResponse response)
19             throws ServletException, IOException {
20         doGet(request, response);
21     }
22
23 }

4 功能测试(测试攻城狮)

5 性能测试(测试攻城狮)

6 部署上线(实施攻城狮)

7 维护阶段(实施攻城狮)

时间: 2024-10-13 02:39:20

<项目><day12>通讯录(视频)的相关文章

&lt;项目&gt;&lt;day12&gt;通讯录(自己做的)

设计一个通讯录主页面 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <title>电话本首页</title> 5 6 <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> 7 <meta http-equiv="description" content="

java学习项目案例分享视频资源地址

java学习项目案例分享视频资源地址 http://v.youku.com/v_show/id_XMjYxNjc4MTgwOA==.html?spm=a2hzp.8244740.userfeed.5!8~5~5~5!3~5~A你要的学习资料到了- web前端交流学习群21

生产应用Win平台Oracle+WebSphere项目实施_WebSphere视频培训教程

基础部分: Oracle基本概念与体系结构 WebSphere相关概念,概要文件,数据源,连接池,控制台. 实战部分: 虚拟机配置.Windows主机环境安装.Oracle数据库的安装.Oracle数据库的创建与日常维护管理. Oracle数据库自动备份配置.Oracle客户端的安装与PLSQL的连接测试.WebSphere安装及Profile的创建. WebSphere管理维护与优化.JDBC配置连接数据库.应用的布署与测试 视频学习地址: http://edu.51cto.com/cours

Appuim项目实战---录制视频

背景:在app测试中,很多场景当时出现,后期无法出现,如果这个时候就通过录制视频的方式记录那么问题就很快解决了,录制视频的简单命令:adb shell screenrecord --time-limit 10 /sdcard/demo.mp4 默认录制10分钟就结束,注意我录制视频是会使用ip,默认录制视频使用的屏幕都很大,我们可以换个小的屏幕,具体录制视频adb参数可以看这篇博客http://blog.csdn.net/wirelessqa/article/details/22725581 在

android项目之通讯录数据库

Android通讯录的制作有很多种方式,网上大部分也都有了,但是用数据库制作通讯录的却少之又少,这里我就制作一个简单的app供大家学习 先看一下效果图,在下面有提供项目源码 首先打开app会有一个全屏的闪屏效果 //全屏显示welcome画面 requestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.La

团队项目简介及视频

一.团队项目简介 各位用户,我们的产品”天气小贴士“是为了解决当前铁大学生的痛苦.他们每周周二.周三.周五都需要跑操,有时会出现起床以后发现出现下雨.下雪天气的情况:有时出现气温骤降或天气突变的情况:有时出现前后两天温差浮动较大的情况等:他们需要对这些情况进行掌控,以免给生活带来不便.但是现有的方案并没有很好地解决这些需求.我们独特的方法,即用户可以通过设置早上起床时间,中午出门时间,以及晚上出门时间,在设置的时间对天气进行读取,用提醒的方式提醒学生关注天气,提醒用户今天气温以及天气状况,建议用

优秀开源项目之一:视频监控系统iSpy

iSpy是一个开源的视频监控软件,目前已经支持中文.自己用了一下,感觉还是很好用的.翻译了一下它的介绍. iSpy将PC变成一个完整的安全和监控系统 iSpy使用您的摄像头和麦克风来检测和记录声音或运动.捕获的媒体被压缩编码成Flash Video或MP4,在网络上安全的传输.iSpy可以同时运行在多台计算机上,具有完整的电子邮件,短信和Twitter报警功能. 特点 iSpy是世界上功能最丰富的监控软件!一些关键的特点是:数量不限的摄像头和麦克风(包括网络摄像头和USB摄像头),运动检测(3种

Asp.NET Core2.0 项目实战入门视频课程_完整版

END OR START? 看到这个标题,你开不开心,激不激动呢? 没错,.net core的入门课程已经完毕了.52ABP.School项目从11月19日,第一章视频的试录制,到今天完整版出炉,离不开各位的帮助和加油. 课程概述 52ABP大学例子程序演示如何使用Entity Framework(EF) Core 2.0 和 Visual Studio 2017 创建一个 ASP.NET Core 2.0 MVC web 应用. 例子是一个大学的网站.它包括了学生入学,创建课程.教师管理等功能

图像处理项目——人脸检测—视频

人脸检测 *开发环境为visual studio2010*使用的是opencv中的Haart特征分类器,harr Cascades*检测对象为视频中的人脸 一:主要步骤 1.加载分类器,将人脸检测分类器和笑脸检测分类器放在项目目录中去 2.调用detecMutiScale()函数检测,对函数中相关的参数进行修改调整, 是检测的结果更加精确 3.打开摄像头或者视频文件,把检测到的人脸用矩形画出来 opencv中用来做目标检测的级联分类器的一个 类,其结构如下: The constructor fo