天天看點

[零基礎學JAVA]Java SE實戰開發-37.MIS資訊管理系統實戰開發[JDBC](3)

PersonDAOProxyJDBC.java

package org.michael.demo.proxy;    

import java.util.Set;    

import org.michael.demo.dao.PersonDAO;    

import org.michael.demo.dao.impl.PersonDAOImplJDBC;    

import org.michael.demo.vo.Person;    

public class PersonDAOProxyJDBC implements PersonDAO {    

        private PersonDAO dao = null;    

        public PersonDAOProxyJDBC(String type) {    

                this.dao = new PersonDAOImplJDBC(type);    

        }    

        public boolean doCreate(Person person) throws Exception {    

                // TODO Auto-generated method stub    

                return this.dao.doCreate(person);    

        public boolean doDelete(String id) throws Exception {    

                return this.dao.doDelete(id);    

        public boolean doUpdate(Person person) throws Exception {    

                return this.dao.doUpdate(person);    

        public Set<Person> findAll() throws Exception {    

                return this.dao.findAll();    

        public Person findById(String id) throws Exception {    

                return this.dao.findById(id);    

        public Set<Person> findByLike(String keyWord) throws Exception {    

                return this.dao.findByLike(keyWord);    

}

InputData.java

package org.michael.demo.util;    

//輸入資料的操作類    

import java.io.BufferedReader;    

import java.io.IOException;    

import java.io.InputStreamReader;    

public class InputData {    

        private BufferedReader buf = null;    

        public InputData() {    

                buf = new BufferedReader(new InputStreamReader(System.in));    

        public int getInt() {    

                int temp = 0;    

                // 如果輸入的不是數字,至少應該有一個提示,告訴使用者輸入錯了    

                // 可以使用正則驗證    

                String str = null;    

                boolean flag = true;    

                while (flag) {    

                        // 輸入資料    

                        str = this.getString();    

                        if (!(str.matches("\\d+"))) {    

                                // 如果不是一個數字,則必須重新輸入    

                                System.out.print("輸入的内容,必須是整數,請重新輸入:");    

                        } else {    

                                // 是一個正确的數字,則可以進行轉換    

                                temp = Integer.parseInt(str);    

                                // 表示退出循環    

                                flag = false;    

                        }    

                }    

                return temp;    

        public String getString() {    

                try {    

                        str = buf.readLine();    

                } catch (IOException e) {    

                        e.printStackTrace();    

                return str;    

        public float getFloat() {    

                float f = 0.0f;    

                        if (!(str.matches("\\d+.?\\d{1,2}"))) {    

                                System.out.print("輸入的内容,必須是小數(小數點後隻到兩位),請重新輸入:");    

                                f = Float.parseFloat(str);    

                return f;    

TimeStamp.java

import java.util.Calendar;    

import java.util.GregorianCalendar;    

import java.util.Random;    

// 取得時間戳的類    

public class TimeStamp {    

        private Calendar calendar = null;    

        // 此标記有外部決定    

        private String flag = null;    

        public TimeStamp() {    

                this.calendar = new GregorianCalendar();    

        public TimeStamp(String flag) {    

                this() ;    

                this.flag = flag;    

        public String getTimeStamp() {    

                StringBuffer buf = new StringBuffer();    

                if (this.flag != null) {    

                        buf.append(this.flag);    

                buf.append(this.addZero(calendar.get(Calendar.YEAR), 4));    

                buf.append(this.addZero(calendar.get(Calendar.MONTH) + 1, 2));    

                buf.append(this.addZero(calendar.get(Calendar.DAY_OF_MONTH), 2));    

                buf.append(this.addZero(calendar.get(Calendar.HOUR_OF_DAY), 2));    

                buf.append(this.addZero(calendar.get(Calendar.MINUTE), 2));    

                buf.append(this.addZero(calendar.get(Calendar.SECOND), 2));    

                buf.append(this.addZero(calendar.get(Calendar.MILLISECOND), 3));    

                return buf.toString();    

        public String getTimeStampRandom() {    

                Random r = new Random();    

                buf.append(this.getTimeStamp());    

                buf.append(r.nextInt(10));    

        // 可以單獨設定一個加“0”的操作    

        private String addZero(int temp, int len) {    

                String str = temp + "";    

                while (str.length() < len) {    

                        str = "0" + str;    

Person.java

package org.michael.demo.vo; 

import java.io.Serializable; 

public abstract class Person implements Comparable<Object>,Serializable { 

  // 定義各公共屬性 

  private String id ; 

  private String name ; 

  private int age ; 

  public Person(String id,String name,int age){ 

    this.setId(id) ; 

    this.setName(name) ; 

    this.setAge(age) ; 

  } 

  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 int getAge() { 

    return age; 

  public void setAge(int age) { 

    this.age = age; 

Student.java

package org.michael.demo.vo;    

public class Student extends Person {    

        private static final long serialVersionUID = 1L;    

        private float score;    

        public Student(String id, String name, int age, float score) {    

                super(id, name, age);    

                this.setScore(score);    

        public int compareTo(Object arg0) {    

                Student s = (Student) arg0;    

                if (this.score < s.score) {    

                        return 1;    

                } else if (this.score > s.score) {    

                        return -1;    

                } else {    

                        if (super.getAge() < s.getAge()) {    

                                return -1;    

                        } else if (super.getAge() > s.getAge()) {    

                                return 1;    

                                return 0;    

        public String toString() {    

                return this.getId() + "\t" + this.getName() + "\t" + this.getAge() + "\t" + this.score;    

        public float getScore() {    

                return score;    

        public void setScore(float score) {    

                this.score = score;    

Worker.java

public class Worker extends Person {    

        private float salary;    

        public Worker(String id, String name, int age, float salary) {    

                this.setSalary(salary);    

                Worker w = (Worker) arg0;    

                if (this.salary < w.salary) {    

                } else if (this.salary > w.salary) {    

                        if (super.getAge() < w.getAge()) {    

                        } else if (super.getAge() > w.getAge()) {    

                return this.getId() + "\t" + this.getName() + "\t" + this.getAge()    

                                + "\t" + this.salary;    

        public float getSalary() {    

                return salary;    

        public void setSalary(float salary) {    

                this.salary = salary;    

測試:

<a href="http://redking.blog.51cto.com/attachment/200904/2/27212_1238673161DCGQ.png"></a>

<a href="http://redking.blog.51cto.com/attachment/200904/2/27212_1238673169SXju.png"></a>

<a href="http://redking.blog.51cto.com/attachment/200904/2/27212_1238673181yTPS.png"></a>

<a href="http://redking.blog.51cto.com/attachment/200904/2/27212_12386731934UXD.png"></a>

<a href="http://redking.blog.51cto.com/attachment/200903/25/27212_1237987227gWAz.png"></a>

<a href="http://redking.blog.51cto.com/attachment/200903/25/27212_1237987242XNWx.png"></a>

  ####################Michael分割線###########################

本身顯示的效果并不複雜,但是在此程式中重點是展現了一種程式的設計的分層思路,如果可以做的再好,最好把學生和勞工的操作分開,分别完成。 

建立一個專門的:StudentDAO操作 

建立一個專門的:WorkerDAO操作 

這樣的話通過工廠分别取得兩個接口的執行個體,就可以避免傳遞參數了。 

所有的類要分别按不同的包存放,而且在寫代碼的時候必須使用考慮如果萬一修改了該怎麼辦? 

####################Michael分割線###########################

<a href="http://bbs.51cto.com/thread-563672-1.html" target="_blank">源代碼下載下傳</a>

#################Michael分割線####################

本文轉自redking51CTO部落格,原文連結:http://blog.51cto.com/redking/145389,如需轉載請自行聯系原作者