1. 程式人生 > >基於RFID的簡易圖書管理系統設計與實現

基於RFID的簡易圖書管理系統設計與實現

  本次開發主要做了從串列埠分別獲取讀者卡號和圖書卡號,實現圖書管理,圖書借閱,讀者管理等功能。開發語言是C#,開發環境使用Visual Studio 2015。資料庫採用sql Server。

  RFID選擇

  讀者卡跟圖書卡均採用125K,一般稱之為低頻卡,典型的代表智慧卡是EM公司與HID公司的125K智慧卡。這類卡基本上都是隻讀、無源卡,識別距離在10cm左右。

應答器採用e5551應答器晶片

e5551晶片是Atmel公司生產的非接觸式、無源、可讀寫、具有防碰撞能力的RFID器件,中心工作頻率為 125K。具有以下主要特性:低功耗、低工作電壓;非接觸能量供給和讀寫資料;工作頻率範圍為100~150 kHz;

 EEPROM儲存器容量為264位,分為8塊,每塊33位;具有7塊使用者資料,每塊32位,共224位;

        

  實現功能:

           

  應用主介面: 管理員端、讀者端

                  

  管理員端:(演示功能為新增圖書)

        

  讀者端:實現圖書借閱與圖書歸還

        

                       (邏輯實現)

         

                (實現結果)

  借還實現程式碼

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO.Ports;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.SqlClient;
using System.Windows.Forms;
using System.Threading;

namespace MyRFID
{
    public partial class frmBorrowBook : Form
    {
        BaseClass.BaseInfo baseinfo = new MyRFID.BaseClass.BaseInfo();//建立BaseInfo類的物件
        BaseClass.BaseInfo.cBorrowSituation BorrowSituation = new MyRFID.BaseClass.BaseInfo.cBorrowSituation();//建立cBorrowSituation類的物件
        BaseClass.BaseInfo.cBook Book = new MyRFID.BaseClass.BaseInfo.cBook();//建立cBook類

        public delegate void Displaydelegate(byte[] InputBuf);
        Byte[] OutputBuf = new Byte[4];
        public Displaydelegate disp_reader;
        public Displaydelegate disp_book;
        public frmBorrowBook()
        {
            InitializeComponent();
        }

        void Comm_ReaderReceived(object sender, SerialDataReceivedEventArgs e)
        {
            
            Byte[] InputBuf = new Byte[4];
            try
            {
                if (serialReader.IsOpen)
                {
                    serialReader.Read(InputBuf, 0, serialReader.BytesToRead);    //讀取緩衝區的資料直到“}”即0x7D為結束符
                                                                                 //InputBuf = UnicodeEncoding.Default.GetBytes(strRD); //將得到的資料轉換成byte的格式
                    System.Threading.Thread.Sleep(50);
                    this.Invoke(disp_reader, InputBuf);
                }
            }
            catch (TimeoutException ex)         //超時處理
            {
                MessageBox.Show(ex.ToString());
            }
        }

        void Comm_BookReceived(object sender, SerialDataReceivedEventArgs e)
        {
            Byte[] InputBuf = new Byte[4];

            try
            {
                if (serialBook.IsOpen)
                {
                    serialBook.Read(InputBuf, 0, serialBook.BytesToRead);    //讀取緩衝區的資料直到“}”即0x7D為結束符
                                                                             //InputBuf = UnicodeEncoding.Default.GetBytes(strRD); //將得到的資料轉換成byte的格式
                    System.Threading.Thread.Sleep(50);
                    this.Invoke(disp_book, InputBuf);
                }

            }
            catch (TimeoutException ex)         //超時處理
            {
                MessageBox.Show(ex.ToString());
            }
        }

        public void DispReader(byte[] InputBuf)
        {
            //textBox1.Text = Convert.ToString(InputBuf);
            string result = string.Empty;
            string readerno = string.Empty;
            string selectReader = "";
            string selectBorrow = "";

            BaseOperate bop = new BaseOperate();
            SqlDataReader reader;
            DataSet ds = new DataSet();
            ASCIIEncoding encoding = new ASCIIEncoding();
            for (int i = 0; i < InputBuf.Length; i++)//逐位元組變為16進位制字元,以%隔開
            {
                result += Convert.ToString(InputBuf[i], 16);
            }
            readerno = int.Parse(result, System.Globalization.NumberStyles.AllowHexSpecifier).ToString();
            selectReader = "select * from readerInfo where readerNo='" + readerno + "'";
            reader = bop.getread(selectReader);

            while (reader.Read())
            {
                readerNo.Text = reader.GetString(0);
                readerName.Text = reader.GetString(1);
            }

            selectBorrow = "select bookNo 書號,bookName 書名,author 作者, publisher 出版社,borrowDate 借出時間,returnDate 應歸還時間 from borrowSituation where readerNo='" + readerno + "'";
            ds=bop.getds(selectBorrow,"borrowSituation");
            dataGridView1.DataSource = null;
            dataGridView1.DataSource = ds.Tables["borrowSituation"];
        }

        public void DispBook(byte[] InputBuf)
        {
            //textBox1.Text = Convert.ToString(InputBuf);
            string result = string.Empty;
            string bookNo = string.Empty;
            string bookName = "";
            string author = "";
            string publisher = "";
            string borrowDate = "";
            string returnDate = "";
            string sqlselect = "";

            BaseOperate bop = new BaseOperate();
            SqlDataReader reader;
            ASCIIEncoding encoding = new ASCIIEncoding();
            for (int i = 0; i < InputBuf.Length; i++)//逐位元組變為16進位制字元,以%隔開
            {
                result += Convert.ToString(InputBuf[i], 16);
            }
            bookNo = int.Parse(result, System.Globalization.NumberStyles.AllowHexSpecifier).ToString();

            //獲取該圖書的資訊
            sqlselect = "select * from bookInfo where bookNo='" + bookNo + "'";
            reader = bop.getread(sqlselect);
            while (reader.Read())
            {
                bookName = reader.GetString(1);
                author = reader.GetString(2);
                publisher = reader.GetString(3);
                borrowDate = DateTime.Now.Date.ToShortDateString();
                returnDate = DateTime.Now.AddDays(30).ToShortDateString();
            }

            sqlselect = "select * from borrowSituation where bookNo='" + bookNo + "'";
            reader = bop.getread(sqlselect);
            while (reader.Read())
            {
                readerNo.Text = reader.GetString(0);
                readerName.Text = reader.GetString(1);
            }
            //借書操作
            if (!reader.HasRows)
            {
                if (readerNo.Text != "")
                {
                    string insert = "";

                    
                    insert = "insert into borrowSituation values('" + readerNo.Text + "','" + readerName.Text
                        + "','" + bookNo + "','" + bookName + "','" + author + "','" + publisher + "','" + borrowDate +
                        "','" + returnDate + "')";
                    bop.getcom(insert);

                    string selectBorrow = "select bookNo 書號,bookName 書名,author 作者, publisher 出版社,borrowDate 借出時間,returnDate 應歸還時間 from borrowSituation where readerNo='" + readerNo.Text + "'";
                    DataSet ds = new DataSet();
                    ds = bop.getds(selectBorrow, "borrowSituation");
                    dataGridView1.DataSource = null;
                    dataGridView1.DataSource = ds.Tables["borrowSituation"];
                }
                else
                    MessageBox.Show("請先放入讀者卡,在放入書籍");
            }
            //還書操作
            else
            {
                string sqlDelete = "";
                string sqlInsert = "";

                sqlDelete = "delete from borrowSituation where bookNo='" + bookNo + "'";
                bop.getcom(sqlDelete);

                sqlInsert= "insert into returnSituation values('" + readerNo.Text + "','" + readerName.Text
                        + "','" + bookNo + "','" + bookName + "','" + author + "','" + publisher + "','" + borrowDate +
                        "','" + DateTime.Now.ToShortDateString() + "')";
                bop.getcom(sqlInsert);

                string selectBorrow = "select bookNo 書號,bookName 書名,author 作者, publisher 出版社,borrowDate 借出時間,returnDate 應歸還時間 from borrowSituation where readerNo='" + readerNo.Text + "'";
                DataSet ds = new DataSet();
                ds = bop.getds(selectBorrow, "borrowSituation");
                dataGridView1.DataSource = null;
                dataGridView1.DataSource = ds.Tables["borrowSituation"];
            }
        }

        private void frmBorrowBook_Load(object sender, EventArgs e)
        {
            serialReader.DataReceived += new SerialDataReceivedEventHandler(Comm_ReaderReceived);
            serialBook.DataReceived += new SerialDataReceivedEventHandler(Comm_BookReceived);
            disp_reader = new Displaydelegate(DispReader);
            disp_book = new Displaydelegate(DispBook);
            serialReader.Open();
            serialBook.Open();
        }

        private void close_Click(object sender, EventArgs e)
        {
            serialBook.Close();
            serialReader.Close();
            this.Close();
        }
    }
}
程式原始碼及資料庫下載地址:http://download.csdn.net/detail/kevin_iot/9724026

相關推薦

基於RFID簡易圖書管理系統設計實現

  本次開發主要做了從串列埠分別獲取讀者卡號和圖書卡號,實現圖書管理,圖書借閱,讀者管理等功能。開發語言是C#,開發環境使用Visual Studio 2015。資料庫採用sql Server。   RFID選擇   讀者卡跟圖書卡均採用125K,一般稱之為低頻卡,典型的

[原始碼和文件分享]基於C++的庫存管理系統設計實現

一 需求分析 1.1 總體要求 運用面向物件程式設計知識,利用C++語言設計和實現一個“庫存管理系統設計”,主要完成對商品的銷售、統計和簡單管理。在實現過程中,需利用面向物件程式設計理論的基礎知識,充分體現出C++語言關於類、繼承和封裝等核心概念,每一個類應包含資料成員和成員函式。 1.

[原始碼和文件分享]基於QT的考試管理系統設計實現

一、專案概要 1.1 專案名稱 考試管理系統 1.2 專案目標 培養快速學習新的知識,解決問題的能力 規劃專案的整體功能以及相關需求分析,並設計出合理的資料庫,並熟悉整個試題系統的開發流程。 1.3 軟體概要 開發一個考試管理系統,考生可以進行練習,

基於WebGIS的Web服務器日誌管理系統設計實現_愛學術——免費下載

富客戶端 平臺 .com 服務器日誌 操作 shu 實現 c51 bsp 【摘要】WebGIS優勢是通過互聯網對地理空間數據進行發布和應用,以實現空間數據的共享和相互操作。將WebGIS和富客戶端技術引入Web服務器日誌管理領域,從總體設計、數據庫設計、實現框架等幾個方面設

基於Web的企業排班管理系統設計實現_愛學術——免費下載

安全 html 快速 開發框架 管理 document 企業 search src 【摘要】隨著我國企業的快速發展,落後的排班方式正日益影響企業的工作效率。本文即探討基於Web的企業排班管理。提出基於SSH開發框架並結合MVC設計模式來開發企業排班管理系統,提高系統的安全性

文獻綜述十四:基於Oracle11g的超市進銷存管理系統設計實現

一、基本資訊   標題:基於Oracle11g的超市進銷存管理系統設計與實現   時間:2016   出版源:技術創新   檔案分類:對資料庫的研究 二、研究背景   為超市設計開發的超市管理系統,採用的是 VC+ Oracle模 式的電子管理平臺,研究基於C/S模式的電子資訊管理的實現。 三、具體內容   

文獻綜述十八:基於SSH框架的進銷存管理系統設計實現

一、基本資訊   標題:基於SSH框架的進銷存管理系統設計與實現   時間:2017   出版源:內蒙古科技與經濟   檔案分類:對框架的研究 二、研究背景   進銷存管理系統在各企業中廣泛應用,使用SSH框架,很大程度上提高了開發效率及系統的可靠性和易用性。 三、具體內容   文獻的主要內容分為三大部分。一

基於JAVA的網上商城商家管理系統設計實現

**基於JAVA的網上商城商家管理系統設計與實現** 基於JAVA的網上商城商家管理系統設計與實現mysql資料庫建立語句 基於JAVA的網上商城商家管理系統設計與實現oracle資料庫建立語句 基於JAVA的網上商城商家管理系統設計與實現sqlserver資料庫建立語句

[原始碼和文件分享]基於JSP的停車場資訊管理系統設計實現

1.1 專案背景 軟體系統的名稱是停車場管理系統。我們開發的系統將幫助停車場管理員和物業公司更加智慧化的管理停車場,省去很多的人力物力。方便隨時查詢停車場的情況,也有助於車主方便隨時查詢附近可以停車的停車場。 1.1.1使用者基本情況介紹 角色1:停車場管理員 檢視剩餘車位數量,

《超市智慧化管理系統設計實現》論文筆記(四)

一、基本資訊 標題:超市智慧化管理系統設計與實現 時間:2014 來源:電子科技大學 關鍵詞:超市; 資料庫; 商品; 窗體; 控制元件; 二、研究內容 1.主要內容:         該篇論文主要表述的是完成一個超

[原始碼和文件分享]基於C++的學生生活系統設計實現

一 需求分析 需要設計並實現如下場景:在那山的那邊,湖的那邊,有一所學校,學校裡有一幢宿舍樓,宿舍樓有若干層,每一層有若干房間 ,一群學生快樂地生活在這裡。他們每天可做的事情有: 換宿舍,從一個房間搬到另一個房間 退學,亦即搬出宿舍樓 入學,亦即搬入宿舍樓

一種基於WiFi的室內定位系統設計實現 _RFID世界網

參考:http://network.chinabyte.com/376/12363876.shtml 1. 引言 位置資訊在人們的日常生活中扮演著重要的作用。在郊外、展覽館、公園等陌生環境中,使用定位導航資訊可為觀眾遊覽提供更便捷的服務;在倉儲物流過程中,對物品進行實時定

文獻綜述三:基於JSP的商品資訊管理系統設計開發

一、基本資訊   標題:基於JSP的商品資訊管理系統設計與開發   時間:2015   出版源:Computer Knowledge and Technology   檔案分類:jsp技術的系統開發 二、研究背景   通過了解公司產品人工現狀的一些管理方面的現狀和要求,運用計算機技術開發的商品資訊管理系統,能

基於SSM的圖書管理系統,java專業畢業設計

**基於SSM的圖書管理系統,java專業畢業設計** 基於SSM的圖書管理系統mysql資料庫建立語句 基於SSM的圖書管理系統oracle資料庫建立語句 基於SSM的圖書管理系統sqlserver資料庫建立語句 基於SSM的圖書管理系統spring spring

基於James技術的企業電子郵件系統設計實現

     基於James技術的企業電子郵件系統設計與實現   轉載:https://www.taodocs.com/p-156363658.html        1、簡介     

文獻筆記03-基於異構資料來源的網路等級考試報名管理系統設計實現

一、基本資訊 標題:基於異構資料來源的網路等級考試報名管理系統設計及實現 時間:2008. 出版源:中國知網 領域分類:計算機應用及軟體 二、研究背景 隨著我國高校擴大招生工作的進行,高校對學生的等級考試管理工作也面臨著新的要求。全國大學英語四、六級考試,專業外語四、八級考試,計算機等級考試,普通

文獻綜述六:基於JS 技術的電子商品管理系統設計實現

一、基本資訊   標題:基於JS 技術的電子商品管理系統設計及實現   時間:2017   出版源:無線互聯科技   檔案分類:js技術的研究 二、研究背景   主要對Js下電商管理系統的設計及實現進行了探討,利用軟體工程的設計方法和先進的軟體開發框架來實現電子商務管理。 三、具體內容   開頭提到了什麼是j

[原始碼和文件分享]基於C++的圖書管理系統

一、需求分析 圖書管理系統功能如下: 新增書籍 刪除書籍:當系統中存在此書時,刪除該書籍,否則提示使用者刪除失敗 借閱書籍:當系統中存在此書且未被借閱時,將書的狀態設定為“借出”,否則提示使用者借閱失敗 歸還書籍:當系統中存在未歸換的該書時,將書的狀態設

java簡易圖書管理系統

1.自己做的 package BOOk; public class Book { private String name; private String author; private double price; private int store; private St

基於java的圖書管理系統(英文)

OOD大作業 完全按照軟體工程思路製作文件:需求分析-詳細設計-測試-使用者手冊 僅實現基本功能,詳情介紹可以見文件 由於時間很短,這個工程只是個demo,系統和文件都有需要改進的地方(尤其是測試部分),不過可以提供課程完成思路。