diff --git a/students/82180735/ood/ood-assignment/README.md b/students/82180735/ood/ood-assignment/README.md
new file mode 100644
index 0000000000..c425e51701
--- /dev/null
+++ b/students/82180735/ood/ood-assignment/README.md
@@ -0,0 +1,6 @@
+
+[TOC]
+## 面向对象相关的作业
+
+### 第一周作业 重构一个发送邮件的程序，使之符合SRP
+
diff --git a/students/82180735/ood/ood-assignment/pom.xml b/students/82180735/ood/ood-assignment/pom.xml
new file mode 100644
index 0000000000..b55d53ffe1
--- /dev/null
+++ b/students/82180735/ood/ood-assignment/pom.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+
+	<groupId>com.yue</groupId>
+	<artifactId>ood-assignment</artifactId>
+	<version>1.0-SNAPSHOT</version>
+
+
+</project>
\ No newline at end of file
diff --git a/students/82180735/ood/ood-assignment/src/main/java/com/coderising/ood/srp/Configuration.java b/students/82180735/ood/ood-assignment/src/main/java/com/coderising/ood/srp/Configuration.java
new file mode 100644
index 0000000000..d11d29787e
--- /dev/null
+++ b/students/82180735/ood/ood-assignment/src/main/java/com/coderising/ood/srp/Configuration.java
@@ -0,0 +1,23 @@
+package com.coderising.ood.srp;
+import java.util.HashMap;
+import java.util.Map;
+
+public class Configuration {
+
+	static Map<String,String> configurations = new HashMap<String,String>();
+	static{
+		configurations.put(ConfigurationKeys.SMTP_SERVER, "smtp.163.com");
+		configurations.put(ConfigurationKeys.ALT_SMTP_SERVER, "smtp1.163.com");
+		configurations.put(ConfigurationKeys.EMAIL_ADMIN, "admin@company.com");
+	}
+	/**
+	 * 应该从配置文件读， 但是这里简化为直接从一个map 中去读
+	 * @param key
+	 * @return
+	 */
+	public String getProperty(String key) {
+		
+		return configurations.get(key);
+	}
+
+}
diff --git a/students/82180735/ood/ood-assignment/src/main/java/com/coderising/ood/srp/ConfigurationKeys.java b/students/82180735/ood/ood-assignment/src/main/java/com/coderising/ood/srp/ConfigurationKeys.java
new file mode 100644
index 0000000000..8695aed644
--- /dev/null
+++ b/students/82180735/ood/ood-assignment/src/main/java/com/coderising/ood/srp/ConfigurationKeys.java
@@ -0,0 +1,9 @@
+package com.coderising.ood.srp;
+
+public class ConfigurationKeys {
+
+	public static final String SMTP_SERVER = "smtp.server";
+	public static final String ALT_SMTP_SERVER = "alt.smtp.server";
+	public static final String EMAIL_ADMIN = "email.admin";
+
+}
diff --git a/students/82180735/ood/ood-assignment/src/main/java/com/coderising/ood/srp/Main.java b/students/82180735/ood/ood-assignment/src/main/java/com/coderising/ood/srp/Main.java
new file mode 100644
index 0000000000..72dccf53ef
--- /dev/null
+++ b/students/82180735/ood/ood-assignment/src/main/java/com/coderising/ood/srp/Main.java
@@ -0,0 +1,50 @@
+package com.coderising.ood.srp;
+
+import com.coderising.ood.srp.domain.mail.MailConfigInfo;
+import com.coderising.ood.srp.domain.mail.MailInfo;
+import com.coderising.ood.srp.domain.product.ProductInfo;
+import com.coderising.ood.srp.service.ProductInfoService;
+import com.coderising.ood.srp.service.PromotionMailService;
+import com.coderising.ood.srp.service.UserService;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Created by justin on 17/6/19.
+ */
+public class Main {
+
+	public static void main(String[] args) {
+		//查询商品信息
+		ProductInfoService productInfoService = new ProductInfoService();
+		ProductInfo productInfo = productInfoService.selectProduct();
+
+		//查询用户信息
+		UserService userService = new UserService();
+		List<Map<String,String>> userList = userService.querySubscriptions(productInfo.getProductID());
+
+		//构造邮件配置及发件人信息
+		Configuration configuration = new Configuration();
+		MailConfigInfo mailConfigInfo = new MailConfigInfo();
+		mailConfigInfo.setSmtpHost(configuration.getProperty(ConfigurationKeys.SMTP_SERVER));
+		mailConfigInfo.setAltSmtpHost(configuration.getProperty(ConfigurationKeys.ALT_SMTP_SERVER));
+		mailConfigInfo.setFromAddress(configuration.getProperty(ConfigurationKeys.EMAIL_ADMIN));
+
+		//构造邮件内容及收件人信息
+		List<MailInfo> mailInfos = new ArrayList<MailInfo>(userList.size());
+		for (Map<String,String> map : userList) {
+			MailInfo mailInfo = new MailInfo();
+			mailInfo.setMessage("尊敬的 "+map.get("NAME")+", 您关注的产品 " + productInfo.getProductDesc() + " 降价了，欢迎购买!");
+			mailInfo.setSubject("您关注的产品降价了");
+			mailInfo.setToAddress(map.get("EMAIL"));
+
+			mailInfos.add(mailInfo);
+		}
+
+		PromotionMailService promotionMailService = new PromotionMailService();
+
+		promotionMailService.sendEMails(mailConfigInfo,mailInfos,true);
+	}
+}
diff --git a/students/82180735/ood/ood-assignment/src/main/java/com/coderising/ood/srp/dao/UserDao.java b/students/82180735/ood/ood-assignment/src/main/java/com/coderising/ood/srp/dao/UserDao.java
new file mode 100644
index 0000000000..89137e35d8
--- /dev/null
+++ b/students/82180735/ood/ood-assignment/src/main/java/com/coderising/ood/srp/dao/UserDao.java
@@ -0,0 +1,22 @@
+package com.coderising.ood.srp.dao;
+
+import com.coderising.ood.srp.util.DBUtil;
+
+import java.util.List;
+
+/**
+ * Created by justin on 17/6/19.
+ */
+public class UserDao {
+
+	public List querySubscriptions(String productId) {
+
+		String sendMailQuery = "Select name from subscriptions "
+				+ "where product_id= '" + productId +"' "
+				+ "and send_mail=1 ";
+
+
+		System.out.println("loadQuery set");
+		return DBUtil.query(sendMailQuery);
+	}
+}
diff --git a/students/82180735/ood/ood-assignment/src/main/java/com/coderising/ood/srp/domain/mail/MailConfigInfo.java b/students/82180735/ood/ood-assignment/src/main/java/com/coderising/ood/srp/domain/mail/MailConfigInfo.java
new file mode 100644
index 0000000000..bcfd9aa857
--- /dev/null
+++ b/students/82180735/ood/ood-assignment/src/main/java/com/coderising/ood/srp/domain/mail/MailConfigInfo.java
@@ -0,0 +1,35 @@
+package com.coderising.ood.srp.domain.mail;
+
+/**
+ * Created by justin on 17/6/12.
+ */
+public class MailConfigInfo {
+	private String smtpHost;
+	private String altSmtpHost;
+	private String fromAddress;
+
+	public String getSmtpHost() {
+		return smtpHost;
+	}
+
+	public void setSmtpHost(String smtpHost) {
+		this.smtpHost = smtpHost;
+	}
+
+	public String getAltSmtpHost() {
+		return altSmtpHost;
+	}
+
+	public void setAltSmtpHost(String altSmtpHost) {
+		this.altSmtpHost = altSmtpHost;
+	}
+
+	public String getFromAddress() {
+		return fromAddress;
+	}
+
+	public void setFromAddress(String fromAddress) {
+		this.fromAddress = fromAddress;
+	}
+
+}
diff --git a/students/82180735/ood/ood-assignment/src/main/java/com/coderising/ood/srp/domain/mail/MailInfo.java b/students/82180735/ood/ood-assignment/src/main/java/com/coderising/ood/srp/domain/mail/MailInfo.java
new file mode 100644
index 0000000000..07aa58602a
--- /dev/null
+++ b/students/82180735/ood/ood-assignment/src/main/java/com/coderising/ood/srp/domain/mail/MailInfo.java
@@ -0,0 +1,35 @@
+package com.coderising.ood.srp.domain.mail;
+
+/**
+ * Created by justin on 17/6/12.
+ */
+public class MailInfo {
+	private String toAddress;
+	private String subject;
+	private String message;
+
+
+	public String getToAddress() {
+		return toAddress;
+	}
+
+	public void setToAddress(String toAddress) {
+		this.toAddress = toAddress;
+	}
+
+	public String getSubject() {
+		return subject;
+	}
+
+	public void setSubject(String subject) {
+		this.subject = subject;
+	}
+
+	public String getMessage() {
+		return message;
+	}
+
+	public void setMessage(String message) {
+		this.message = message;
+	}
+}
diff --git a/students/82180735/ood/ood-assignment/src/main/java/com/coderising/ood/srp/domain/product/ProductInfo.java b/students/82180735/ood/ood-assignment/src/main/java/com/coderising/ood/srp/domain/product/ProductInfo.java
new file mode 100644
index 0000000000..2bc2be9d1e
--- /dev/null
+++ b/students/82180735/ood/ood-assignment/src/main/java/com/coderising/ood/srp/domain/product/ProductInfo.java
@@ -0,0 +1,25 @@
+package com.coderising.ood.srp.domain.product;
+
+/**
+ * Created by justin on 17/6/12.
+ */
+public class ProductInfo {
+	private String productID;
+	private String productDesc;
+
+	public String getProductID() {
+		return productID;
+	}
+
+	public void setProductID(String productID) {
+		this.productID = productID;
+	}
+
+	public String getProductDesc() {
+		return productDesc;
+	}
+
+	public void setProductDesc(String productDesc) {
+		this.productDesc = productDesc;
+	}
+}
diff --git a/students/82180735/ood/ood-assignment/src/main/java/com/coderising/ood/srp/product_promotion.txt b/students/82180735/ood/ood-assignment/src/main/java/com/coderising/ood/srp/product_promotion.txt
new file mode 100644
index 0000000000..b7a974adb3
--- /dev/null
+++ b/students/82180735/ood/ood-assignment/src/main/java/com/coderising/ood/srp/product_promotion.txt
@@ -0,0 +1,4 @@
+P8756 iPhone8
+P3946 XiaoMi10
+P8904 Oppo_R15
+P4955 Vivo_X20
\ No newline at end of file
diff --git a/students/82180735/ood/ood-assignment/src/main/java/com/coderising/ood/srp/service/ProductInfoService.java b/students/82180735/ood/ood-assignment/src/main/java/com/coderising/ood/srp/service/ProductInfoService.java
new file mode 100644
index 0000000000..32b1733564
--- /dev/null
+++ b/students/82180735/ood/ood-assignment/src/main/java/com/coderising/ood/srp/service/ProductInfoService.java
@@ -0,0 +1,44 @@
+package com.coderising.ood.srp.service;
+
+import com.coderising.ood.srp.domain.product.ProductInfo;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileReader;
+import java.io.IOException;
+import java.net.URL;
+
+/**
+ * Created by justin on 17/6/19.
+ */
+public class ProductInfoService {
+
+	public ProductInfo selectProduct() {
+//		File file = new File("C:\\coderising\\workspace_ds\\ood-example\\src\\product_promotion.txt");
+		URL base = Thread.currentThread().getContextClassLoader().getResource("");
+		File file = new File(base.getFile(),"product_promotion.txt");
+		BufferedReader br = null;
+		ProductInfo productInfo = new ProductInfo();
+		try {
+			br = new BufferedReader(new FileReader(file));
+			String temp = br.readLine();
+			String[] data = temp.split(" ");
+
+			productInfo.setProductID(data[0]);
+			productInfo.setProductDesc(data[1]);
+
+			System.out.println("产品ID = " + productInfo.getProductID() + "\n");
+			System.out.println("产品描述 = " + productInfo.getProductDesc() + "\n");
+
+		} catch (IOException e) {
+//			throw new IOException(e.getMessage());
+		} finally {
+			try {
+				br.close();
+			} catch (IOException e) {
+				e.printStackTrace();
+			}
+		}
+		return productInfo;
+	}
+}
diff --git a/students/82180735/ood/ood-assignment/src/main/java/com/coderising/ood/srp/service/PromotionMailService.java b/students/82180735/ood/ood-assignment/src/main/java/com/coderising/ood/srp/service/PromotionMailService.java
new file mode 100644
index 0000000000..248d0b7a64
--- /dev/null
+++ b/students/82180735/ood/ood-assignment/src/main/java/com/coderising/ood/srp/service/PromotionMailService.java
@@ -0,0 +1,52 @@
+package com.coderising.ood.srp.service;
+
+import com.coderising.ood.srp.util.MailUtil;
+import com.coderising.ood.srp.domain.mail.MailConfigInfo;
+import com.coderising.ood.srp.domain.mail.MailInfo;
+
+import java.util.Iterator;
+import java.util.List;
+
+/**
+ * Created by justin on 17/6/12.
+ */
+public class PromotionMailService {
+
+	public void sendEMails(MailConfigInfo mailConfigInfo, List<MailInfo> mailInfos, boolean debug)
+	{
+
+		System.out.println("开始发送邮件");
+
+
+		if (mailInfos != null) {
+			Iterator iter = mailInfos.iterator();
+			while (iter.hasNext()) {
+				MailInfo mailInfo = (MailInfo) iter.next();
+
+				try
+				{
+					if (mailInfo.getToAddress().length() > 0)
+						MailUtil.sendEmail(mailInfo.getToAddress(), mailConfigInfo.getFromAddress(), mailInfo.getSubject(), mailInfo.getMessage(),
+								mailConfigInfo.getSmtpHost(), debug);
+				}
+				catch (Exception e)
+				{
+					try {
+						MailUtil.sendEmail(mailInfo.getToAddress(), mailConfigInfo.getFromAddress(), mailInfo.getSubject(), mailInfo.getMessage(),
+								mailConfigInfo.getAltSmtpHost(), debug);
+
+					} catch (Exception e2)
+					{
+						System.out.println("通过备用 SMTP服务器发送邮件失败: " + e2.getMessage());
+					}
+				}
+			}
+		}
+
+		else {
+			System.out.println("没有邮件发送");
+
+		}
+
+	}
+}
diff --git a/students/82180735/ood/ood-assignment/src/main/java/com/coderising/ood/srp/service/UserService.java b/students/82180735/ood/ood-assignment/src/main/java/com/coderising/ood/srp/service/UserService.java
new file mode 100644
index 0000000000..bed06d4306
--- /dev/null
+++ b/students/82180735/ood/ood-assignment/src/main/java/com/coderising/ood/srp/service/UserService.java
@@ -0,0 +1,15 @@
+package com.coderising.ood.srp.service;
+
+import com.coderising.ood.srp.dao.UserDao;
+
+import java.util.List;
+
+/**
+ * Created by justin on 17/6/19.
+ */
+public class UserService {
+
+	public List querySubscriptions(String productId) {
+		return new UserDao().querySubscriptions(productId);
+	}
+}
diff --git a/students/82180735/ood/ood-assignment/src/main/java/com/coderising/ood/srp/util/DBUtil.java b/students/82180735/ood/ood-assignment/src/main/java/com/coderising/ood/srp/util/DBUtil.java
new file mode 100644
index 0000000000..f18e812954
--- /dev/null
+++ b/students/82180735/ood/ood-assignment/src/main/java/com/coderising/ood/srp/util/DBUtil.java
@@ -0,0 +1,26 @@
+package com.coderising.ood.srp.util;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class DBUtil {
+	
+	/**
+	 * 应该从数据库读， 但是简化为直接生成。
+	 * @param sql
+	 * @return
+	 */
+	public static List<Map<String,String>> query(String sql){
+		
+		List userList = new ArrayList();
+		for (int i = 1; i <= 3; i++) {
+			HashMap userInfo = new HashMap();
+			userInfo.put("NAME", "User" + i);			
+			userInfo.put("EMAIL", "aa@bb.com");
+			userList.add(userInfo);
+		}
+
+		return userList;
+	}
+}
diff --git a/students/82180735/ood/ood-assignment/src/main/java/com/coderising/ood/srp/util/MailUtil.java b/students/82180735/ood/ood-assignment/src/main/java/com/coderising/ood/srp/util/MailUtil.java
new file mode 100644
index 0000000000..bb028c690c
--- /dev/null
+++ b/students/82180735/ood/ood-assignment/src/main/java/com/coderising/ood/srp/util/MailUtil.java
@@ -0,0 +1,18 @@
+package com.coderising.ood.srp.util;
+
+public class MailUtil {
+
+	public static void sendEmail(String toAddress, String fromAddress, String subject, String message, String smtpHost,
+			boolean debug) {
+		//假装发了一封邮件
+		StringBuilder buffer = new StringBuilder();
+		buffer.append("From:").append(fromAddress).append("\n");
+		buffer.append("To:").append(toAddress).append("\n");
+		buffer.append("Subject:").append(subject).append("\n");
+		buffer.append("Content:").append(message).append("\n");
+		System.out.println(buffer.toString());
+		
+	}
+
+	
+}
diff --git a/students/82180735/ood/ood-assignment/src/main/resources/product_promotion.txt b/students/82180735/ood/ood-assignment/src/main/resources/product_promotion.txt
new file mode 100644
index 0000000000..b7a974adb3
--- /dev/null
+++ b/students/82180735/ood/ood-assignment/src/main/resources/product_promotion.txt
@@ -0,0 +1,4 @@
+P8756 iPhone8
+P3946 XiaoMi10
+P8904 Oppo_R15
+P4955 Vivo_X20
\ No newline at end of file
