diff --git a/Src/medi_fetch/fetchinfo.py b/Src/medi_fetch/fetchinfo.py
new file mode 100644
index 0000000..81c2d43
--- /dev/null
+++ b/Src/medi_fetch/fetchinfo.py
@@ -0,0 +1,44 @@
+# MEDICATION REMINDER SYSTEM FOR SENIORS
+# database: SQLite 3
+# Modules required: sqlite3
+# -*- coding: utf-8 -*-
+# Author: TOMYUE(tang yue) in DASE_ECNU 2021
+
+import sqlite3
+import re;
+
+def fetch():
+    try:
+        # scan gun input the barcode of the medicine,barcode_scan is a string
+        barcode_scan = input()
+        # connect the database to query the medication
+        conn = sqlite3.connect('medicine.db')
+        cur = conn.cursor()
+
+        sql ="SELECT rowid,* FROM medicine_chengyao WHERE Barcode='"+barcode_scan+"';"
+
+        cur.execute(sql)
+        data = cur.fetchone()
+        # ---------------------------
+        medication_name = data[1] # tansmit the name of the product to the TTS
+        # ---------------------------
+        #print(data[1])
+        pattern = re.sub("\\(.*\\)", "", medication_name)
+        print(pattern)
+        #print()
+        print(data)
+
+        conn.commit()
+
+        conn.close()
+        return medication_name
+
+    except TypeError as error:
+        # print("Error while executing:", error)
+        return "None" # the medication,which not be found,will be audio boardcst the name of the medication
+
+    finally:
+        if conn:
+            conn.close()
+            # print("sqlite connection is closed")
+
diff --git a/Src/medi_fetch/func_db_cy.py b/Src/medi_fetch/func_db_cy.py
new file mode 100644
index 0000000..cb59a4e
--- /dev/null
+++ b/Src/medi_fetch/func_db_cy.py
@@ -0,0 +1,59 @@
+# MEDICATION REMINDER SYSTEM FOR SENIORS
+# database: SQLite 3
+# Modules required: sqlite3
+# -*- coding: utf-8 -*-
+# Author: TOMYUE(tang yue) in DASE_ECNU 2021
+import sqlite3
+import sqlite_database
+
+def show_all(info):
+# connect to a database
+    conn=sqlite3.connect('medicine.db')
+# Create a cursor
+    cur = conn.cursor()
+# Query the database
+    cur.execute("SELECT rowid,*FROM medicine_chengyao")
+    items = cur.fetchall()
+    for item in items:
+        print(item)
+
+# commit my command
+    conn.commit()
+# close our connect
+    conn.close()
+
+def add_one(info):
+    conn = sqlite3.connect('medicine.db')
+    cur = conn.cursor()
+    cur.execute("INSERT INTO medicine_chengyao VALUES(?,?,?,?,?,?,?,?,?,?)",
+                (info.get("产品名称", "NULL"), info.get("规格", "NULL"), info.get("剂型", "NULL"), info.get("包装单位", "NULL"),
+                 info.get("生产厂家", "NULL"),
+                 info.get("条形码", "NULL"), info.get("主治疾病", "NULL"), info.get("批准文号", "NULL"), info.get("是否处方", "NULL"),
+                 info.get("说明书", "NULL")))
+    conn.commit()
+    conn.close()
+
+
+def add_many(info):
+    conn = sqlite3.connect('medicine.db')
+    cur= conn.cursor()
+    cur.executemany("INSERT INTO medicine_chengyao VALUES(?,?,?,?,?,?,?,?,?,?)",(info.get("产品名称","NULL"),info.get("规格","NULL"),info.get("剂型","NULL"),info.get("包装单位","NULL"),info.get("生产厂家","NULL"),
+                                                                               info.get("条形码","NULL"),info.get("主治疾病","NULL"),info.get("批准文号","NULL"),info.get("是否处方","NULL"),info.get("说明书","NULL")))
+    conn.commit()
+    conn.close()
+
+def delete_select_item(info):
+    conn = sqlite3.connect('medicine.db')
+    cur = conn.cursor()
+    cur.execute("DELETE FROM medicine_chengyao WHERE Barcode=(?)",info["条形码"])
+    conn.commit()
+    conn.close()
+
+def delete_all(info):
+    conn = sqlite3.connect('medicine.db')
+    cur = conn.cursor()
+    cur.execute("DROP TABLE medicine_chengyao")
+    conn.commit()
+    conn.close()
+
+
diff --git a/Src/medi_fetch/identifier.sqlite b/Src/medi_fetch/identifier.sqlite
new file mode 100644
index 0000000..06d7405
Binary files /dev/null and b/Src/medi_fetch/identifier.sqlite differ
diff --git a/Src/medi_fetch/main.py b/Src/medi_fetch/main.py
new file mode 100644
index 0000000..fc88780
--- /dev/null
+++ b/Src/medi_fetch/main.py
@@ -0,0 +1,139 @@
+# Medicine Infomation Spider
+# Spider: requests
+# parser: XPath
+# database: ?
+# Modules required: requests,lxml,(database connection)
+# -*- coding: utf-8 -*-
+# author:Shen tongle in DASE_ECNU 2021
+
+import requests
+from lxml import etree
+import time
+import sqlite3
+
+
+class Medicine:
+    def __init__(self):
+        self.head = "https://www.315jiage.cn/"
+        self.user = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36"
+        self.headers = {
+            "User-agent": self.user
+        }
+        self.flag = 0
+        self.failed_num = 0
+        self.conn = sqlite3.connect('medicine.db')
+        self.cur = self.conn.cursor()
+
+
+    def get_data(self, type, page):
+        self.flag = 0
+        url = f"https://www.315jiage.cn/mc{type}p{page}.aspx"
+        response = requests.get(url, headers=self.headers, timeout=30)
+        self.content = response.content.decode("utf-8")
+        html = etree.HTML(self.content)
+        if html.xpath("//head/title/text()")[0][0] == "您":
+            self.flag += 1
+            return
+        results = html.xpath("""//div[@class="col-2"]/a[@target="_blank"]/@href""")
+        print(f"Browsing page {page}")
+        count = 0
+        for each_id in results:
+            try:
+                new_url = self.head + each_id
+                resp = requests.get(new_url, headers=self.headers)
+                content = resp.content.decode("utf-8")
+                ehtml = etree.HTML(content)
+
+                info = {}
+
+                name = ehtml.xpath("""//span[@itemprop="name"]/text()""")[0]
+                info["产品名称"] = name
+
+                base_info = ehtml.xpath("""//div[@class = "block-info-prop text-oneline"]//text()""")
+                titles = ['规格:', '剂型:', '包装单位:', '批准文号:', '生产厂家:', '条形码:', '主治疾病:']
+                for each in base_info:
+                    if each in titles:
+                        if each == '规格:' or each == '剂型:':
+                            for every_info in base_info[base_info.index(each) + 1:]:
+                                if every_info in titles:
+                                    break
+                                else:
+                                    info[each[:-1]] = every_info[:-3]
+                                    break
+                        elif each == '主治疾病:':
+                            for every_info in base_info[base_info.index(each) + 1:]:
+                                if every_info in titles:
+                                    break
+                                else:
+                                    illness = ""
+                                    info[each[:-1]] = illness.join(every_info.replace("\xa0", "").split())
+                                    break
+                        else:
+                            for every_info in base_info[base_info.index(each) + 1:]:
+                                if every_info in titles:
+                                    break
+                                else:
+                                    info[each[:-1]] = every_info
+                                    break
+                info["主治疾病"]="测试"
+                info["批准文号"] = ehtml.xpath("//td/div/u/a/text()")[0]
+
+                info["是否处方"] = bool(ehtml.xpath("""//td/div/span[@class="cRed"]"""))
+
+                temp = ehtml.xpath("""//ul[@class="property"]//text()""")
+                contents = []
+                for content in temp:
+                    if content not in contents:
+                        contents.append(content)
+
+                contents.pop(contents.index(" "))
+
+                # info["说明书"] = contents
+                SMS = ""
+
+                info["说明书"] = SMS.join(contents)
+
+                count += 1
+                print(f"Saving infomation {page}-{count}")
+                time.sleep(0.65)
+                # All infomation has been downloaded and preprocessed!
+                # -----------------------------------------
+                print(info)
+                # try:
+                #     self.cur.execute("INSERT INTO medicine_chengyao VALUES(?,?,?,?,?,?,?,?,?,?)",
+                #                      (info.get("产品名称", "NULL"), info.get("规格", "NULL"), info.get("剂型", "NULL"),
+                #                       info.get("包装单位", "NULL"), info.get("生产厂家", "NULL"),
+                #                       info.get("条形码", "NULL"), info.get("主治疾病", "NULL"), info.get("批准文号", "NULL"),
+                #                       info.get("是否处方", "NULL"), info.get("说明书", "NULL")))
+                #     self.conn.commit()
+                # except(sqlite3.Error):
+                #     self.conn.rollback()
+                #     print("saving error!")
+                # 'info' is going to be saved in one database
+                # Writing saving codes below......
+            except(IndexError,requests.HTTPError,TimeoutError,requests.exceptions.ConnectionError):
+                print("Failed to download data!")
+                self.failed_num += 1
+                continue
+
+
+
+
+def main():
+    medicine = Medicine()
+    types = [118, 119, 131]
+    a = [131]
+    for type in a:
+        for i in range(0,2500):
+            medicine.get_data(type, i + 1)
+            time.sleep(0.1)
+            if medicine.flag == 1:
+                break
+    print("下载失败的条目数量:", medicine.failed_num)
+    medicine.conn.close()
+
+
+if __name__ == "__main__":
+    main()
+
+# failed in 429, 430 is missing should be complemented
diff --git a/Src/medi_fetch/sqlite_database.py b/Src/medi_fetch/sqlite_database.py
new file mode 100644
index 0000000..8474fcf
--- /dev/null
+++ b/Src/medi_fetch/sqlite_database.py
@@ -0,0 +1,42 @@
+# MEDICATION REMINDER SYSTEM FOR SENIORS
+# database: SQLite 3
+# Modules required: sqlite3
+# -*- coding: utf-8 -*-
+# Author: TOMYUE(tang yue) in DASE_ECNU 2021
+import sqlite3
+
+try:
+    conn = sqlite3.connect("medicine.db")
+
+    sql_query_1 = '''CREATE TABLE medicine_chengyao(
+                    Products_name TEXT,
+                    Specfications TEXT,
+                    Formulation TEXT ,
+                    Packing_unit TEXT ,
+                    Company TEXT ,
+                    Barcode TEXT ,
+                    Main_treat_disease TEXT ,
+                    Approval_number TEXT ,
+                    OTC_test TEXT ,
+                    Instructions TEXT);
+                    '''
+    cur = conn.cursor()
+    print("Successfully Connected to SQLite")
+    print()
+
+    cur.execute(sql_query_1)
+    conn.commit()
+    print("SQLite table created")
+
+    cur.close()
+
+except sqlite3.Error as error:
+    print("Error while executing:", error)
+
+finally:
+    if conn:
+        conn.close()
+        print("sqlite connection is closed")
+
+
+