JAVA开发思想与实例--模块化编程

模块化编程,不能再在main函数中一锅端。


xml文件:

<?xml version="1.0" encoding="UTF-8" standalone="no"?><exam>
    <student examid="222" idcard="111">
        <name>张三</name>
        <location>沈阳</location>
        <grade>89</grade>
    </student>

    <student examid="444" idcard="333">
        <name>李四</name>
        <location>大连</location>
        <grade>97</grade>
    </student>
</exam>




最先进行编写的模块是   Javabean

不同模块的程序写在不同的包里面

封装数据的实体一般为domain  域对象

DAO层一般有接口和该接口的实现类! 接口用于规范实现类! 实现类一般用于用于操作数据库! 一般操作修改,添加,删除数据库操作的步骤很相似,就写了一个公共类DAO类 ,修改,添加,删除数据库操作时 直接调用公共类DAO类!

dao(Data access object 数据访问对象)用于操作xml文档,StudentDao。  Javabean student封装Java数据。Main与用户打交道。

DAO共同的代码要抽取出来形成工具类。工具类所有的方法都是静态的。


utils则是提供工具方法,一般为静态,防止调用麻烦。


任何东西加字符串都是字符串   double+""

SHIFT+F6  重构-重命名 


intellij的输出:

System.out.println;  //输出后光标位于下一行
System.out.print;    //输出光标位于本行

输入流:

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String type = br.readLine();

type.equalsIgnoreCase("a")   //不区分大小写的比较


xml的添加:

public void add(Student student){
        try {
            Document document = XmlUtilsByJaxp.getDocument();

            Element student_node = document.createElement("student");
            student_node.setAttribute("examid", student.getExamid());
            student_node.setAttribute("idcard", student.getIdcard());

            Element name = document.createElement("name");
            name.setTextContent(student.getName());

            Element location = document.createElement("location");
            location.setTextContent(student.getLocation());

            Element grade = document.createElement("grade");
            grade.setTextContent(student.getGrade()+"");

            student_node.appendChild(name);
            student_node.appendChild(location);
            student_node.appendChild(grade);

            document.getElementsByTagName("exam").item(0).appendChild(student_node);
            XmlUtilsByJaxp.write2Xml(document);

        } catch (Exception e) {
           throw new RuntimeException(e);
        }



从下往上的设计思想。


xml的查找:

通过准考证号(examid)来进行学生信息的查找。   examid是student的一个属性,通过匹配来进行查找。

 public Student find(String examid){
        try {
            Document document = XmlUtilsByJaxp.getDocument();

            Student student = new Student();

            NodeList list = document.getElementsByTagName("student");
            for (int i=0;i<list.getLength();i++){
                Element student_node = (Element) list.item(i);
                String s_examid = student_node.getAttribute("examid");
                if (s_examid.equals(examid)){
                    //get
                    student.setExamid(student_node.getAttribute("examid"));
                    student.setIdcard(student_node.getAttribute("idcard"));

                    student.setName(student_node.getElementsByTagName("name").item(0).getTextContent());
                    student.setLocation(student_node.getElementsByTagName("location").item(0).getTextContent());
                    student.setGrade(Double.parseDouble(student_node.getElementsByTagName("grade").item(0).getTextContent()));

                    return student;
                }
            }
            return null;
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }

 找到返回该对象(student),没找到返回NULL。


xml的删除:

通过姓名来删除。
dao中的删除:

public void delete(String name){
        try {
            Document document = XmlUtilsByJaxp.getDocument();

            NodeList list = document.getElementsByTagName("name");
            for (int i=0; i < list.getLength(); i++){
                Node item = list.item(i);
                if (item.getTextContent().equals(name)){
                    item.getParentNode().getParentNode().removeChild(item.getParentNode());
                    XmlUtilsByJaxp.write2Xml(document);
                    return;
                }
            }
            throw new RuntimeException("对不起,您要删除的学生不存在");

        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }


main中的删除:

删除学生
            try {
                System.out.print("请输入删除的学生姓名:");

                String name = br.readLine();

                StudentDaoByDom4j dao = new StudentDaoByDom4j();
                dao.delete(name);
                System.out.println("恭喜你,删除成功");

            } catch (Exception e) {
                System.out.println(e.getMessage());
            }



有时在开发时不允许改变,团队开发,只能实现方法,不能改变方法声明,异常也是一种返回。






  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值