• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于MATLAB GUI的圖書管理系統(tǒng)設(shè)計

    2022-09-21 07:55:32方文雄紀旭何鑫海
    電腦知識與技術(shù) 2022年24期
    關(guān)鍵詞:菜單賬號密碼

    方文雄,紀旭,何鑫海

    (1.成都工業(yè)學院汽車與交通學院,四川成都 611730;2.成都工業(yè)學院自動化與電氣工程學院,四川成都 611730)

    1 引言

    MATLAB GUI 為圖形用戶界面(Graphical User Interface,簡稱GUI,又稱圖形用戶接口)[1]是指采用圖形方式顯示的計算機操作用戶界面,是MATLAB 用戶可視化交互式的工具,運用GUI 生成的操作界面用戶可以不用瀏覽繁冗的代碼而進行操作。GUI不僅深受用戶的喜愛[2]也是工程人員運用MATLAB進行可視化編程的捷徑,工程人員只需要拖動相應的工具,編寫回調(diào)函數(shù)即可[3-5],同時可生成獨立的.exe 文件,用戶不需要安裝龐大的MATLAB 軟件就可以運行程序。隨著我國文化事業(yè)不斷發(fā)展,圖書資源也日益豐富,像農(nóng)家書屋、小型書店也日益增多[6],該圖書管理系統(tǒng)使用MATLAB GUI編程實現(xiàn),可實際應用于書店、農(nóng)家書屋對圖書資源進行管理,具有使用簡單、快捷高效的特點。

    2 系統(tǒng)功能需求分析

    如今技術(shù)人員已開發(fā)出許多類型的圖書管理系統(tǒng),總的來說普遍具有如下功能:圖書信息錄入及查詢[7]、圖書信息更改[8]、圖書流動操作[9]等,但大都缺少系統(tǒng)登錄功能,具有登錄功能的圖書管理系統(tǒng)有利于保護用戶隱私。結(jié)合上述,本系統(tǒng)具有以下功能:

    1)用戶登錄或注冊

    登錄界面含有登錄、注冊、找回密碼選項。若第一次使用需要注冊賬號,注冊時需要填寫密保問題,以便于在忘記密碼時找回密碼。用戶擁有賬號后輸入賬號和密碼進行登錄,若忘記密碼可選擇找回密碼。

    2)圖書信息錄入

    在用戶完成了圖書信息的輸入后,點擊錄入操作按鈕,可完成書籍信息入庫。

    3)圖書信息查詢

    用戶可選擇按書名、作者、ISBN號等檢索方式進行查詢。

    4)圖書信息變更

    如果用戶需要修改已錄入的圖書信息,先查詢要修改的圖書信息,可在顯示查詢結(jié)果的表格中點擊要修改信息的單元格,選擇刪除或更改按鈕按下,完成信息更改。

    5)圖書出售或出借、歸還

    輸入折扣或日租金信息,按下出售按鈕,即可自動計算之前錄入的圖書價格乘以折扣的結(jié)果,并顯示在收費金額框中;按下借出按鈕,彈出對話框用于接收借出人登記的信息,同時自動記錄下借出時間;按下歸還按鈕,自動計算出出借天數(shù),再根據(jù)輸入的日租金自動計算總租金,顯示在收費金額框中。

    圖1 系統(tǒng)功能使用流程

    3 系統(tǒng)數(shù)據(jù)存儲設(shè)計

    在MATLAB中,可采用以下3種可行方式對圖書信息進行存儲:

    1)基于結(jié)構(gòu)數(shù)組的存儲模式

    在MATLAB中,結(jié)構(gòu)體數(shù)組是使用名為字段的數(shù)據(jù)容器將相關(guān)數(shù)據(jù)組合在一起的數(shù)據(jù)類型,每個字段都可以包含任意類型的數(shù)據(jù),類似于C 語言中的結(jié)構(gòu)體。定義時像使用一樣MATLAB變量一樣,可以直接定義,不需要事先聲明,支持動態(tài)擴充,因此將結(jié)構(gòu)數(shù)組作為圖書信息的存儲載體,在使用過程中是十分方便的。

    對其進行數(shù)據(jù)查詢和記錄操作也是十分方便,可以使用structName.fieldName格式的圓點表示法來訪問字段中的數(shù)據(jù),也可以利用MATLAB 函數(shù)setfield 和getfield 進行索引和存取[10]。在結(jié)構(gòu)數(shù)組模式中引用數(shù)據(jù)也像變量操作一樣便捷。

    2)基于Execl的存儲模式

    Execl 是廣為使用的辦公軟件,Execl 表格具有存儲數(shù)據(jù)的功能,將數(shù)據(jù)存儲在Execl表格中可以利用Execl強大的數(shù)據(jù)處理分析能力,對圖書的銷售數(shù)據(jù)、出借信息等進行直觀的分析[11],并且Execl 在圖書管理中也得到了實際應用[12]。而在MATLAB 中對Execl 表格的操作具有很好的便利性,利用函數(shù)可以方便地讀取Execl表格中的信息。

    例如使用xlsread()函數(shù)讀取數(shù)據(jù),[NUM,TXT,RAW]=xlsread('sheetName'),其中sheetName 是Excel 文件名,NUM 是Excel 中的數(shù)據(jù)內(nèi)容,TXT 是Excel 中文本內(nèi)容,RAW 是未處理數(shù)據(jù)。對于Excel的寫入需要用到的函數(shù)是xlswrite(filename,A,sheet-Name,xlRange)。其中filename為寫入的Excel文件名,A為寫入的內(nèi)容,sheetName 為指定的工作表名,xlRange 為寫入的范圍。本系統(tǒng)就是基于Execl文件為存儲載體。

    3)基于數(shù)據(jù)庫存儲模式

    數(shù)據(jù)庫已經(jīng)成為人們生活中不可或缺的基礎(chǔ)軟件系統(tǒng),在數(shù)據(jù)庫領(lǐng)域,數(shù)據(jù)從組織的角度上,主要分為結(jié)構(gòu)化數(shù)據(jù)和非結(jié)構(gòu)化數(shù)據(jù)兩類。結(jié)構(gòu)化數(shù)據(jù)是帶有固定結(jié)構(gòu)的數(shù)據(jù),在組織形式上是整齊格式化的,同一數(shù)據(jù)對象的所有數(shù)據(jù)都具有完全相同的結(jié)構(gòu)。比如書籍信息數(shù)據(jù),定義為“ISBN號、書名、作者、價格”這種結(jié)構(gòu)后,所有書籍的信息都會按照這個固定的格式來組織。結(jié)構(gòu)化數(shù)據(jù)是數(shù)據(jù)庫中最常見的數(shù)據(jù),也是數(shù)據(jù)庫最擅長處理的數(shù)據(jù)。

    Oracle 數(shù)據(jù)庫是目前主流的數(shù)據(jù)庫之一,在Matlab 開發(fā)環(huán)境下,有ODBC、JDBC 和ADO 三種數(shù)據(jù)庫訪問方式均可與Oracle 數(shù)據(jù)庫進行數(shù)據(jù)交互,如文獻[13-14]詳細介紹了MATLAB與Oracle數(shù)據(jù)庫交互使用。將書籍信息存儲于數(shù)據(jù)庫中,對海量信息進行管理是高效可行的辦法。

    4 系統(tǒng)功能設(shè)計

    4.1 用戶注冊模塊設(shè)計

    此模塊目標功能為實現(xiàn)賬號注冊,同時注冊時收集密保問題。將面板、靜態(tài)文本、可編輯文本、按鈕等組件構(gòu)成如圖2界面。

    圖2 注冊界面設(shè)計

    在編寫完成按鈕回調(diào)函數(shù)時,應注意檢測新注冊的賬號是否已注冊過,同時考慮各可編輯文本輸入的內(nèi)容完整、合法?,F(xiàn)給出完成按鈕回調(diào)函數(shù)主體內(nèi)容:

    str1=get(handles.edit1,'string');%獲取可編輯文本框賬號內(nèi)容

    str2=get(handles.edit2,'string');%獲取可編輯文本框密碼內(nèi)容

    str3=get(handles.edit3,'string');%獲取可編輯文本框問題內(nèi)容

    str4=get(handles.edit4,'string');%獲取可編輯文本框答案內(nèi)容

    data=xlsread('user','Sheet1');%讀取用戶表

    num1=str2num(str1);%轉(zhuǎn)化字符為數(shù)字

    num2=str2num(str2);

    xlswrite('user',{num1 num2 str3 str4},'Sheet1',

    ...['A' num2str(dn+1) ':D' num2str(dn+1)])%注冊信息寫入用戶表

    data=xlsread('user','Sheet1');%讀取用戶表

    dn=size(data,1);%得到新寫入用戶所在行

    if isempty(data(dn,1))%檢查是否完整寫入新用戶信息

    warndlg('注冊未成功!','錯誤','modal')

    4.2 用戶登錄模塊設(shè)計

    此模塊目標功能為實現(xiàn)賬號登錄,同時具有找回密碼、下次登錄記住密碼、密碼輸入顯示加密、輸入框灰色提示等功能。其中設(shè)計難點為下次登錄記住密碼、密碼輸入顯示加密、輸入框灰色提示。將靜態(tài)文本、可編輯文本、按鈕等組件構(gòu)成如圖3界面。

    圖3 登錄界面設(shè)計

    下次登錄記住密碼,當?shù)卿浶畔⒈葘Τ晒螅瑥棾觥笆欠裼涀∶艽a”對話框,點擊“是”,即可記住賬號和密碼。下次登錄時,自動在賬號和密碼對話框輸入上次登錄的賬號與密碼,即可直接登錄。實現(xiàn)此功能依托于存儲下是否記住賬號和密碼的選擇狀態(tài)和此次登錄的賬號與密碼,將這些信息存儲為MATLAB中.mat文件。關(guān)鍵代碼如下:

    如果選擇了“是”將本次登錄的賬號和密碼存儲為.mat 文件,其中l(wèi)ogin 為.mat 文件名,account 為賬號變量名其值為賬號,password為密碼變量名其值為密碼。下次登錄時直接加載.mat文件的賬號與密碼登錄。

    密碼輸入顯示加密,指輸入密碼時顯示出特殊字符??稍O(shè)置Edit Text 控件的屬性FontName 來完成密碼隱藏功能。雙擊用作輸入密碼的Edit Text 控件,打開其屬性設(shè)置面板,找到屬性FontName,默認的字體名為MS Sans Serif,將字體改為Symbol,即可完成密碼隱藏功能。效果如圖4所示。

    輸入框灰色提示,指輸入框有淡灰色提示內(nèi)容,點擊輸入框時,提示內(nèi)容消失。實現(xiàn)此功能的思路為先預設(shè)賬號文本框的'ForegroundColor'屬性為[0.8 0.8 0.8]顯示為灰色,再編寫賬號文本框的KeyPressF 回調(diào)函數(shù),KeyPressF 回調(diào)函數(shù)在鼠標光標鍵入文本框時被觸發(fā)執(zhí)行,回調(diào)函數(shù)如下:

    set(hObject,'string',[],'Enable','on');

    %清除預設(shè)內(nèi)容

    set(hObject,'ForegroundColor',[0,0,0]);

    %將文本字體調(diào)回黑色

    uicontrol(hObject);

    %繼續(xù)控制GUI界面。

    值得注意的是,如果少了第三句,當點擊輸入框時,前兩行代碼正常執(zhí)行,提示內(nèi)容消失,但當鍵盤開始輸入時,輸入內(nèi)容會輸入在MATLAB的命令行窗口。

    4.3 圖書管理模塊設(shè)計

    此模塊目標功能為實現(xiàn)圖書信息錄入、圖書信息查詢、圖書借出歸還登記、借出租金計算。此模塊界面設(shè)計為錄入、查詢、流動三個選項卡,點擊其中之一選項卡顯示出其對應的功能界面。該模塊設(shè)計難點為分選項卡顯示不同界面、“彈出式菜單”構(gòu)件選項選擇定位、“表”構(gòu)件的行列定位。將靜態(tài)文本、可編輯文本、彈出式菜單、表、按鈕等組件構(gòu)成圖6、圖7、圖8界面。

    圖7 查詢界面設(shè)計

    圖8 流動界面設(shè)計

    圖6 中涉及點擊不同選項卡時,顯示不同界面,例如點擊“查詢”選項時才顯示查詢界面。分選項卡顯示不同界面,實質(zhì)是設(shè)置三個菜單選項,點擊一個菜單選項時將另外兩個菜單界面隱藏,達到只顯示一個菜單界面的效果。具體過程為,除錄入界面構(gòu)件外(默認顯示錄入界面),修改所有構(gòu)件Visible 屬性,將所有的可編輯文本、靜態(tài)文本、表、彈出式菜單和按鈕的Visible 屬性改為Off。再對三個菜單的Callback 回調(diào)函數(shù)進行編程,以錄入菜單回調(diào)函數(shù)為例,將Callback 回調(diào)函數(shù)內(nèi)容設(shè)置為所有的錄入界面構(gòu)件Visible 屬性改為ON,其他菜單界面構(gòu)建Visible屬性改為Off,當點擊錄入菜單選項卡時,執(zhí)行錄入Callback回調(diào)函數(shù),只顯示錄入界面,而隱藏其他兩個界面。

    圖7中查詢時需要使用到彈出式菜單構(gòu)件,而彈出式菜單的選項選擇定位是通過它的Value 屬性值來定位的,例如彈出式菜單依次有“書名”“作者”“ISBN”號三個選項,當選擇了“作者”選項時,其Value屬性值為2。需要強調(diào)的是,彈出式菜單可以理解為是一個“數(shù)組”,選擇的是第幾個元素,那么返回的就是這個元素在這個“數(shù)組”中所在的位置。所以在使用彈出式菜單時需要預設(shè)選項數(shù)組,才能定位所選選項,代碼如下:

    圖8中涉及“表”的行列定位,在對圖書進行出售、出借、歸還登記要點擊表中需要操作的書籍,此時就需要對所點擊單元格進行定位,即獲取點擊的是哪一行哪一列,從而判斷需要進行操作的是哪一本書籍。其中關(guān)鍵涉及對handles結(jié)構(gòu)體的理解,handles結(jié)構(gòu)體是一個以GUI中所有控件的Tag屬性為字段的結(jié)構(gòu)體,handles.控件A的tag 就可以存取控件A的信息。為了將所點擊單元格的行列值存儲下來并可被其他控件所調(diào)用,先獲取所點擊單元格的行列值,再給handles 結(jié)構(gòu)體中添加新的hangIndex、lieIndex屬性存儲行列值,在其他控件中使用handles.hangIndex 就可以獲取行值,需要使用guidata(hObject,handles)函數(shù)來保存對handles添加屬性的更改操作,給出如下具體代碼進行說明:

    5 結(jié)束語

    MATLAB GUI 編程具有易上手的特點,但需要掌握各種構(gòu)件的基本屬性才能靈活使用GUI 進行編程。通過介紹MATLAB 中圖書信息數(shù)據(jù)的3種存儲方式,并使用GUI 對圖書管理系統(tǒng)進行設(shè)計,著重講解設(shè)計過程的難點問題,對使用MATLAB GUI 編程具有借鑒和指導作用。同時此管理系統(tǒng)已獲得軟件著作權(quán)并線下應用于書店,得到實際檢驗。

    猜你喜歡
    菜單賬號密碼
    密碼里的愛
    彤彤的聊天賬號
    施詐計騙走游戲賬號
    派出所工作(2021年4期)2021-05-17 15:19:10
    密碼疲勞
    英語文摘(2020年3期)2020-08-13 07:27:02
    中國新年菜單
    本月菜單
    美食堂(2017年1期)2017-01-13 01:37:42
    密碼藏在何處
    Google Play游戲取消賬號綁定沒有Google賬號也能玩
    CHIP新電腦(2016年3期)2016-03-10 14:52:50
    奪命密碼
    一個“公海龜”的求偶菜單
    鴨綠江(2013年10期)2013-03-11 19:41:55
    洞口县| 庆城县| 富平县| 烟台市| 巴彦淖尔市| 克什克腾旗| 凌海市| 清原| 金溪县| 新民市| 通许县| 阿拉善右旗| 上林县| 台南市| 武川县| 崇左市| 娄烦县| 湖北省| 皮山县| 天门市| 彭山县| 乐亭县| 车致| 九龙坡区| 阿克陶县| 东港市| 泰州市| 景德镇市| 昌江| 凤阳县| 临桂县| 海林市| 招远市| 金坛市| 龙南县| 淅川县| 民乐县| 乃东县| 新龙县| 诏安县| 嵊州市|