圖 書 館 餘 書 再 利 用 系 統 楊 伏 夷 / 張 庭 瑋 / 王 昱 勝 朝 陽 科 技 大 學 資 訊 工 程 系 413 台 中 市 霧 峰 區 吉 峰 東 路 168 號 Tel: (04) 23323000 ext. 4534 Fax: (04)23742375 E-mail:yangfy@cyut.edu.tw 摘 要 因 為 現 代 科 技 越 來 越 進 步, 書 籍 的 編 輯 出 版 速 度 也 更 快 了, 大 部 分 的 人 家 裡 有 許 多 書, 有 些 人 會 把 不 要 或 多 出 來 的 書 捐 給 圖 書 館, 圖 書 館 也 會 收 集 許 多 書 籍, 導 致 圖 書 館 的 藏 書 除 了 必 要 閱 讀 和 借 閱 的 以 外, 多 餘 的 書 本 只 能 保 存 和 收 藏, 這 些 封 存 書 籍 基 本 上 無 法 再 供 人 使 用 了 本 專 題 為 這 些 多 餘 的 藏 書 建 立 資 料 庫 和 索 引 網 頁, 讓 讀 者 搜 尋 和 下 載 自 己 所 需 要 的 書 籍, 並 且 使 用 QRcode 將 讀 者 選 取 的 書 籍 編 碼, 通 知 圖 書 館 裡 人 員, 由 圖 書 館 裡 人 員 將 書 籍 放 置 在 特 定 藏 書 櫃, 讀 者 只 要 使 用 本 專 題 的 APP, 在 指 定 時 間 內 到 達 藏 書 櫃 子 的 所 在 地, 再 以 該 QR CODE 幫 櫃 子 解 鎖 即 可 獲 取 該 書 關 鍵 字..APP QRcode Abstract Because modern science and technology more progress, editing and publishing books and faster, and most people have many books at home, some people will not come out of books donated to the library or the library will collect a lot of books, resulting in the library collection in addition to the need to read and borrow, the excess can only save and collection books, these books are basically no longer be sealed for human use. The topics for these extra books to establish a database and index page, allowing readers to search and download books they need, and use the reader QRcode selected books coding, inform the library staff, the library staff will be placed in books Tibetan bookcase particular, readers just use the topic of APP, the location of the cabinet to reach the books within the specified time, and then to the cabinet unlocked QR CODE can help get the book. Keywords..APP, QRcode 1. 前 言 本 系 統 採 用 SQL SEVER 作 為 資 料 庫, 能 搜 尋 到 圖 書 館 所 有 登 錄 在 案 的 餘 書, 若 讀 者 需 要 該 餘 書, 只 需 要 留 基 本 資 料, 使 用 QR CODE 的 APP 掃 描 本 系 統 隨 機 產 生 的 二 維 條 碼, 並 且 在 指 定 時 間 內 到 達 藏 書 櫃 子 的 所 在 地, 再 以 該 QR CODE 幫 櫃 子 解 鎖 即 可 獲 取 該 書 我 們 使 用 櫃 子 來 當 作 書 本 流 通 的 依 據, 所 以 本 系 統 能 夠 提 供 一 個 節 省 人 力 的 自 動 方 案 2. 主 要 內 容 2.1SQL Server 簡 介 SQL Server 是 一 个 關 係 數 據 庫 管 理 系 统 它 最 初 是 由 Microsoft( 微 軟 ) Sybase Ashton-Tate 三 家 公 司 共 同 开 发 的 SQL 是 英 文 StructuredQueryLanguage 的 縮 寫, 意 思 為 結 構 話 查 詢 語 言,SQL 語 言 的 主 要 功 能 就 是 和 各 種 數 據 庫 建 立 聯 繫, 進 行 溝 通,SQL 被 稱 作 關 係 型 數 據 庫 管 理 系 統 的 標 準 語 言,SQL 可 以 用 來 執 行 各 種 各 樣 的 操 作, 例 如 更 新 數 據 庫 中 的 資 料, 從 數 據 庫 中 提 取, 刪 除, 編 輯 數 據 等,SQL Server 一 開 始 並 不 是 微 軟 自 己 研 發 的 產 品, 而 是 當 時 為 了 要 和 IBM 競 爭 時, 與 Sybase 合 作 所 產 生 的, 其 最 早 的 發 展 者 是 Sybase[1], 同 時 微 軟 也 和 Sybase 合 作 過 SQL Server 4.2 版 本 的 研 發, 微 軟 亦 將 SQL Server 4.2 移 植 到 Windows NT( 當 時 為 3.1 版 ), 在 與 Sybase 終 止 合 作 關 係 後, 自 力 開 發 出 SQL Server 6.0 版, 往 後 的 SQL Server 即 均 由 微 軟 自 行 研 發 資 料 庫 簡 介 及 SQL 語 法 介 紹 2.2 資 料 庫 系 統 資 料 庫 為 許 多 資 料 的 集 合, 即 一 個 可 以 存 放 大 量 資 料 集 合 的 地 方, 而 資 料 庫 管 理 系 統 (DBMS) 則 為 提 供 使 用 者 在 不 需 要 了 解 資 料 庫 內 部 實 際 運 作 下 能 有 效 率 且 方 便 的 對 資 料 庫 進 行 管 理 的 介 面 一 般 資 料 的 儲 存 可 以 用 最 基 本 的 文 字 檔 來 記 錄 即 可, 但 是 一 旦 資 料 多 了 之 後 要 詢 找 或 處 理 時 就 會 很 辛 苦, 為 了 讓 資 料 方 便 處 理 及 管 理 所 以 透 過 一 個 有 效 率 的 方 式 儲 存, 以 便 之 後 管 理 與 操 作!! 為 了 達 到 各 資 料 庫 之 間 的 溝 通, 因 此 SQL 為 標 準 的 資 料 庫 上 共 同 的 語 法, 以 便 讓 使 用 者 更 方 便 管 理 與 處 理!! SQL 是 一 專 門 用 來 處 理 關 聯 式 資 料 庫 的 標 準 程 式 語 言 它 誕 生 於 1970 年 代 後 半, 到 目 前 是 SQL-92(SQL2) 的 版 本, 由 於 是 共 同 的 語 法, 因 此 不 論 在 MS-SQL
ORACLE DB2 ACCESS PostgresSQL MySQL 等 都 可 以 通 用 圖 1.1 資 料 庫 的 概 念 一 般 資 料 的 儲 存, 多 是 以 一 個 表 格 (Table) 的 方 式 來 儲 存 也 就 是 所 謂 的 資 料 表, 其 中 縱 向 的 稱 為 行 (Column), 或 是 稱 為 欄 (Field), 存 放 著 相 同 性 質 的 資 料 橫 向 的 稱 為 列 (Row), 或 是 記 錄 (Record), 裡 頭 包 含 許 多 不 同 性 質 的 資 料 項 目 DML 相 關 語 法 主 要 有 Insert Delete Update 和 Select, 為 最 常 使 用 到 的 語 法, 尤 其 對 於 資 料 庫 應 用 程 式 開 發 者 Insert: 新 增 資 料 INSERT INTO 表 格 名 [( 欄 位 名 稱 [,..N])] VALUES ( 數 值 [,..N]) Delete: 刪 除 資 料 Delete From 資 料 表 [Where 條 件 式 ] Update: 更 新 資 料 UPDATE 資 料 表 SET 欄 位 名 稱 = 欄 位 新 值 [,..N] [WHERE 條 件 式 ] Select: 選 取 資 料 SELECT 選 取 項 目 [INTO 資 料 表 ] FROM 資 料 表 [WHERE 條 件 式 ] [GROUP BY 群 組 欄 位 ] [HAVING 群 組 條 件 式 ] [ORDER BY 排 序 欄 位 [DESC ASC]] 在 Select 的 基 本 應 用 上, 主 要 以 Select From Where 構 成, 簡 單 的 說 就 是 從 From 資 料 表 中 依 照 where 所 限 制 的 條 件 選 取 Select 的 欄 位 2.2.1 其 它 查 詢 型 態 : 查 詢 單 一 欄 位 資 料 select 欄 位 名 from 資 料 表 名 稱 ; 查 詢 多 個 欄 位 資 料 select 欄 位 名, 欄 位 名, 欄 位 名, from 資 料 表 名 稱 ; 查 詢 欄 位 資 料 的 唯 一 值 select distinct 欄 位 名 from 資 料 表 名 稱 ; 重 複 值 只 列 一 次 查 詢 所 有 欄 位 資 料 select * from 資 料 表 名 稱 ; 條 件 式 查 詢 select * from 資 料 表 名 稱 where 條 件 式 ( 例 如 sn='5') ; (=, <, >,!=) 條 件 式 查 詢 and select * from 資 料 表 名 稱 where 條 件 式 1 and 條 件 式 2; 條 件 式 查 詢 or select * from 資 料 表 名 稱 where 條 件 式 1 or 條 件 式 2; 查 詢 某 一 範 圍 between select * from 資 料 表 名 稱 where 欄 位 名 between 值 1 and 值 2 值 為 數 字 查 詢 某 一 範 圍 in select * from 資 料 表 名 稱 where 欄 位 名 in ( 值 1, 值 2) 值 為 數 字 查 詢 空 值 欄 位 的 資 料 select * from 資 料 表 名 稱 where 欄 位 名 is null not null 查 詢 特 定 筆 數 資 料 select * from 資 料 表 名 稱 limit 8, 10; 第 8 筆 開 始 選 取 10 筆 查 詢 結 果 遞 增 排 序 select * from 資 料 表 名 稱 order by 欄 位 名 ; 查 詢 結 果 遞 減 排 序 select * from 資 料 表 名 稱 order by 欄 位 名 desc ; 查 詢 比 對 字 串 列 出 單 一 欄 位 select 欄 位 名 from 資 料 表 名 稱 where 欄 位 名 like '% 字 串 %'; 查 詢 比 對 字 串 列 出 所 有 欄 位 select * from 資 料 表 名 稱 where 欄 位 名 like '% 字 串 %'; 查 詢 某 欄 位 總 筆 數 select count(*) from 資 料 表 名 稱 where 欄 位 名 = ' 值 '; 查 詢 某 欄 位 最 大 或 最 小 值 select max( 欄 位 名 ) from 資 料 表 名 稱 where 欄 位 名 = ' 值 '; 最 小 值 用 min() 2.3 QRcode 簡 介 圖 2.3.1 QRcode 之 結 構 QR Code 為 目 前 最 常 被 使 用 的 一 種 二 維 條 碼,1994 年 由 日 本 Denso-Wave 公 司 發 明 QR 是 英 文 Quick Response 的 縮 寫, 即 快 速 反 應 的 意 思 QR Code 比 普 通 條 碼 可 儲 存 更 多 資 料, 亦 無 須 像 普 通 條 碼 般 在 掃 描 時 需 直 線 對 準 掃 描 器
bitmap.save(@"d:\test\qrcode\temp.png", System.Drawing.Imaging.ImageFormat.Png); // 顯 示 在 畫 面 中 picturebox1.image = bitmap; 圖 2.3.2 QRcode 之 結 構 2.4 QRcode 的 產 生 圖 2.4.1 編 碼 private void button1_click(object sender, EventArgs e) System.Drawing.Bitmap bitmap = null; // 要 轉 成 QRCode 的 內 容 string content = textbox1.text; //QRCode 的 設 定 ZXing.BarcodeWriter writer = new ZXing.BarcodeWriter Format = ZXing.BarcodeFormat.QR_CODE, Options = new ZXing.QrCode.QrCodeEncodingOptions // 產 生 出 圖 片 的 高 度 Height = 180, // 產 生 出 圖 片 的 寬 度 Width = 180, // 文 字 是 使 用 哪 種 編 碼 方 式 CharacterSet = "UTF-8", // 錯 誤 修 正 容 量 //L 水 平 7% 的 字 碼 可 被 修 正 //M 水 平 15% 的 字 碼 可 被 修 正 //Q 水 平 25% 的 字 碼 可 被 修 正 //H 水 平 30% 的 字 碼 可 被 修 正 ErrorCorrection = ZXing.QrCode.Internal.ErrorCorrectionLevel.H ; // 將 要 編 碼 的 文 字 產 生 出 QRCode 的 圖 檔 bitmap = writer.write(content); // 儲 存 圖 片 圖 2.4.2 解 碼 private void button2_click(object sender, EventArgs e) System.Drawing.Bitmap bitmap = null; // 宣 告 QRCode Reader 物 件 ZXing.IBarcodeReader reader = new ZXing.BarcodeReader(); // 讀 取 要 解 碼 的 圖 片 FileStream fs = new FileStream(@"D:\Test\QRCode\temp.png", FileMode.Open); Byte[] data = new Byte[fs.Length]; // 把 檔 案 讀 取 到 位 元 組 陣 列 fs.read(data, 0, data.length); fs.close(); // 實 例 化 一 個 記 憶 體 資 料 流 MemoryStream, 將 位 元 組 陣 列 放 入 MemoryStream ms = new MemoryStream(data); // 將 記 憶 體 資 料 流 的 資 料 放 到 BitMap 的 物 件 中 bitmap = (Bitmap)Image.FromStream(ms); // 將 圖 片 顯 示 於 PictureBox 中 picturebox2.image = bitmap; // 進 行 解 碼 的 動 作 ZXing.Result result = reader.decode(bitmap); if (result!= null) // 如 果 有 成 功 解 讀, 則 顯 示 文 字 label1.text = result.text; 3.1 系 統 功 能 方 法
圖 3.1.1 搜 尋 介 面 圖 3.1.4 後 臺 所 見 圖 3.1.2 搜 尋 結 果 圖 3.1.5 解 碼 成 功 步 驟 一 : 先 到 網 站 上 搜 尋 要 找 的 書 步 驟 二 : 去 勾 選 頁 面 勾 選 需 要 的 書 籍 步 驟 三 : 輸 入 自 己 的 信 箱 和 電 話 後 按 下 確 定 步 驟 四 : 拿 著 自 己 手 機 上 出 現 的 QR Code 圖 片 去 去 放 置 箱 子 的 地 方 驗 證 步 驟 五 : 當 驗 證 成 功 之 後 箱 子 會 打 開 就 可 以 拿 書 了 圖 3.1.3 勾 選 頁 面
4. 參 考 文 獻 1. https://zh.wikipedia.org/wiki/microsoft_sql_server 2. http://www.wkb.idv.tw/study/dbase/ 3. http://www.1keydata.com/tw/sql/sql.html 4. https://zh.wikipedia.org/wiki/microsoft_visual_studio 5. http://www.funcode-tech.com/qr_intro.html 6. http://foxktr560.blogspot.tw/2013/09/c-webcam-qrcod e-reader.html 5. 致 謝 SPECIAL THANK: 楊 伏 夷 教 授 資 工 學 長 弘 彬 我 們 的 組 員 任 何 幫 助 過 我 們 的 人 還 有 你