




已閱讀5頁,還剩13頁未讀, 繼續(xù)免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
至誠學院 MATLAB 實踐 課程設計學生姓名: 學 號: 專業(yè)班級: (2) 指導教師: 二一四 年 四 月 三十 日目 錄1.設計目的第3頁2.題目分析第3頁3.總體設計第3頁4.具體設計第4頁5.小結和心得第15頁1、 設計目的:使用MATLAB的GUI程序設計學生成績管理系統(tǒng)。完成需學生成績的基本管理,包含對學生成績的讀入、修改、添加和查詢等基本的功能。本課題主要解決對學生成績總體的客觀評價,通過一系列數據的分析比較,例如平均值,成績分布等整體數據的處理,以及matlab和excel在數據聯動功能方面的應用,所繪制的直方圖、正態(tài)分布圖等圖像信息使得分析成績系統(tǒng)更直觀、有效地反映學生此課程這一階段的表現,進而研究今后的教學重點,以及從教學到考試等一連串過程中的薄弱環(huán)節(jié),從而達到教學相長的目的。不論是對學生的整體學習情況還是單獨考慮每個學生的學習情況都能夠進行較好的評價。面比起單純的絕對分數評價學生的學習狀況,忽略了基礎條件的差異,我們運用了各種方法和模型來去避免這類現象的發(fā)生,動態(tài)的分析每個學生的情況,并從定性和定量兩方面分別給出了數值與建議。2、 題目分析 根據課題的要求,分析成績管理系統(tǒng)的現實需求,我們可以概括為設計的程序應該包含的幾個基本模塊及應該完成的功能如下: 1.文件管理:完成成績表格的導入(.xls文件),完成對修改后的成績文件的保存。 2.成績管理:完成對學生成績、學號、成績、總分的顯示和修改,還有添加新的學生的信息。 3.查詢管理:完成對姓名或者學號的查詢的顯示和刪除,學生的信息顯示在成績管理里面的顯示框里面。4.在學生的姓名顯示框點擊學生姓名,成績管理系統(tǒng)里面自動獲取學生的基本信息。5.統(tǒng)計出學生的最高分和最低分以及各科成績的平均分情況。6.通過各科成績的統(tǒng)計分布直方圖,直觀地分析學生的各科的成績狀況。3、總體設計 圍繞設計的題目范圍,我們可以將起繪制成功能模塊的總體模塊圖如下圖1。根據設計的模塊設計成GUI的設計圖如下圖2。 通過將導入的學生信息的數據保存到全局變量的數組里面,到每個模塊需要使用時,導出數據即可完成對數據的引用,在需要完成操作的按鈕下編寫回調函數來達到需要完成的功能。設計內容包含對回調函數的編寫和對于程序功能的調試,分析問題原因,在實現程序功能時,進一步改善程序的設計構架。 圖1圖24、具體設計利用MATLAB的GUI程序設計實現成績管理系統(tǒng)的功能。各個模塊功能的實現及程序設計如下:4.1.模塊設計界面及程序設計4.1.1顯示模塊模塊: 顯示模塊需要完成的是對于學生姓名、序號以及成績的顯示,并且在點擊姓名顯示框里面的學生姓名時,成績管理的模塊里面可以自動顯示學生的以上基本信息。設計界面如下:對于姓名顯示框的程序設計如下:% - Executes on selection change in xmlist.function xmlist_Callback(hObject, eventdata, handles)% hObject handle to xmlist (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)content=get(hObject,value);set(handles.chengjilist,value,content);set(handles.xhlist,value,content);chengji=handles.chengji;xingming=handles.xingming;xuehao=handles.xuehao;set(handles.lredit1,string,xingming(content);set(handles.lredit2,string,chengji(content,1);set(handles.lredit3,string,chengji(content,2);set(handles.lredit4,string,xuehao(content,1);set(handles.xmedit,string,xingming(content);set(handles.xuehaoedit,string,xuehao(content);set(handles.lredit13,string,xingming(content)set(handles.zfedit,string,(chengji(content,1)+chengji(content,2); 首先設置姓名顯示的高亮位置表示選中的學生,調出handles里面的信息,然后通過set函數將數字賦值給顯示框。4.1.2文件管理模塊:文件管理模塊要實現的是對于保存成績的表格文件(.xls文件)的讀取和對于學生信息修改或者刪除之后的保存功能。因此添加了兩個控件按鈕來實現,在點擊按鈕后,彈出讀取(或保存)文件的所在位置,添加文件后,系統(tǒng)完成對成績的讀取(或保存)功能。沒有選中文件時,提示“沒有選擇文件”。設計界面如下:4.1.2.1打開成績文件的按鈕的設計程序:% - Executes on button press in pushbutton1.function pushbutton1_Callback(hObject, eventdata, handles)% hObject handle to pushbutton1 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)filename,pathname=uigetfile(*.xls;*.*,打開成績文件);if isequal(filename,0)|isequal(pathname,0) errordlg(沒有選擇文件,出錯); returnelse str=pathname,filename; word,txt=xlsread(str); xingming=txt(2:end,1); xuehao=word(1:end,1); chengji=word(1:end,2:3); set(handles.xmlist,string,xingming); set(handles.chengjilist,string,num2str(chengji); set(handles.xhlist,string,num2str(xuehao); handles.count=length(xingming); handles.chengji=chengji; handles.xuehao=xuehao; handles.xingming=xingming; guidata(hObject,handles);End 讀取文件里面的信息,保存為數組的形式,分別給成績、姓名、學號數組賦值,并設置三個list顯示全部學生的信息,并保存這些數據到全局變量handles里面。4.1.2.2保存文件按鈕設計程序:% - Executes on button press in baocunbutton.function baocunbutton_Callback(hObject, eventdata, handles)% hObject handle to baocunbutton (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)filename,pathname=uigetfile(*.xls;*.*,打開成績文件);if isequal(filename,0)|isequal(pathname,0) errordlg(沒有選擇文件,出錯); returnelse str=pathname,filename; xingming=handles.xingming; chengji=handles.chengji; xuehao=handles.xuehao; oldcount=handles.count; row,co=size(chengji); col=co+1; if rowoldcount M=cell(oldcount,col); else M=cell(row,col); end M(1:row,1)=xingming; M(1:row,2)=num2cell(xuehao); M(1:row,3:col+1)=num2cell(chengji); xlswrite(str,M,1,A2); handles.count=row; guidata(hObject,row);End 將新獲取的數據保存到M數組里面,調出原本數組的行數count,比較新獲得的數組的行數和原來行數count的大小,根據實際調節(jié)寫入數組的大小,并保存新的數據的行數。4.1.3成績管理模塊:成績管理模塊需要完成的是對于學生的姓名、學號和成績的顯示(顯示在上面的顯示模塊里面完成),以及修改學生信息的修改和添加新的學生信息。添加兩個控件,控制學生信息的修改和添加。界面設計圖如下:4.1.3.1修改按鈕的程序設計:% - Executes on button press in pushbutton2.function pushbutton2_Callback(hObject, eventdata, handles)% hObject handle to pushbutton2 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)content=get(handles.xmlist,value);xingming=handles.xingming;chengji=handles.chengji;xuehao=handles.xuehao;newname=get(handles.lredit1,string);shuxue=str2num(get(handles.lredit2,string);yuwen=str2num(get(handles.lredit3,string);newxuehao=str2num(get(handles.lredit4,string);xingming(content)=newname;chengji(content,:)=shuxue,yuwen;xuehao(content)=newxuehao;set(handles.xmlist,string,xingming);set(handles.chengjilist,string,num2str(chengji);set(handles.xhlist,string,num2str(xuehao);handles.xuehao=xuehao;handles.xingming=xingming;handles.chengji=chengji;guidata(hObject,handles); 獲取輸入的數據,調出原來的成績、學號和姓名數組,根據新修改的信息,修改原本的三個數據的數值,并保存到全局變量handles里面。4.1.3.2添加按鈕的程序設計:% - Executes on button press in tianjiabutton.function tianjiabutton_Callback(hObject, eventdata, handles)% hObject handle to tianjiabutton (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)newname=get(handles.lredit1,string);shuxue=str2num(get(handles.lredit2,string);yuwen=str2num(get(handles.lredit3,string);newxuehao=str2num(get(handles.lredit4,string);handles.xingming=handles.xingming;newname;handles.chengji=handles.chengji;shuxue,yuwen;handles.xuehao=handles.xuehao;newxuehao;guidata(hObject,handles);set(handles.xmlist,string,handles.xingming);set(handles.xhlist,string,num2str(handles.xuehao);set(handles.chengjilist,string,num2str(handles.chengji); 獲取輸入的數據,調出原來的成績、學號和姓名數組,根據新添加的信息,修改原本的三個數據的數值,并保存到全局變量handles里面。4.1.4查詢管理模塊:本模塊需要完成的是通過查詢學生姓名或者學號,讓成績管理里面可以顯示該學生的基本信息并可以通過刪除按鈕刪除該生的信息,沒有查詢到該生的信息,即提示“沒有找到”。通過平均分查詢按鈕來查詢各科的平均分成績。通過查詢學生姓名,找到學生的總分并顯示。基本設計模塊如下圖:4.1.4.1兩個刪除按鈕的程序設計(以第一個刪除為例,第二個原理同第一個):% - Executes on button press in shanchubutton.function shanchubutton_Callback(hObject, eventdata, handles)% hObject handle to shanchubutton (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)name=get(handles.xmedit,string);lia,id=ismember(name,handles.xingming);if lia xingming=handles.xingming; chengji=handles.chengji; xuehao=handles.xuehao; xingming(id)=; xuehao(id)=; chengji(id,:)=; handles.chengji=chengji; handles.xuehao=xuehao; handles.xingming=xingming; guidata(hObject,handles); set(handles.xmlist,string,xingming); set(handles.chengjilist,string,num2str(chengji); set(handles.xhlist,string,num2str(xuehao); set(handles.xmlist,value,1); set(handles.xhlist,value,1); set(handles.chengjilist,value,1);Else 查詢時候有這個名字在保存的名字(或學號)的數組里面,調出姓名、學號和成績數組,獲取需要刪除的學生在數組里面保存在第幾個的位置,將數組里面的這兒位置清空,設置三個list的顯示高亮位置回到第一行,同時更新handles里面的三個數組存放。4.1.4.2姓名查詢按鈕的程序設計:% - Executes on button press in chaxunbutton.function chaxunbutton_Callback(hObject, eventdata, handles)% hObject handle to chaxunbutton (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)name=get(handles.xmedit,string);lia,id=ismember(name,handles.xingming);if lia set(handles.xmlist,value,id); set(handles.xhlist,value,id); set(handles.chengjilist,value,id); xingming=handles.xingming; chengji=handles.chengji; xuehao=handles.xuehao; set(handles.lredit1,string,xingming(id); set(handles.lredit2,string,chengji(id,1); set(handles.lredit3,string,chengji(id,2); set(handles.lredit4,string,xuehao(id);else msgbox(沒有找到);end 查詢是否有這個名字在保存的名字的數組里面,獲取需要刪除的名字在保存的數組里面是第幾個的,獲取三個數組,設置三個list里面這個學生的信息為高亮,并顯示在成績管理里面。4.1.4.3學號查詢按鈕的程序設計:% - Executes on button press in pushbutton9.function pushbutton9_Callback(hObject, eventdata, handles)% hObject handle to pushbutton9 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)xh=get(handles.xuehaoedit,string);lia,id=ismember(str2num(xh),handles.xuehao);if lia set(handles.xmlist,value,id); set(handles.xhlist,value,id); set(handles.chengjilist,value,id); xingming=handles.xingming; chengji=handles.chengji; xuehao=handles.xuehao; set(handles.lredit1,string,xingming(id); set(handles.lredit2,string,chengji(id,1); set(handles.lredit3,string,chengji(id,2); set(handles.lredit4,string,xuehao(id);else msgbox(沒有找到);End 查詢是否有這個學號在保存的名字的數組里面,獲取需要刪除的學號在保存的數組里面是第幾個的,獲取三個數組,設置三個list里面這個學生的信息為高亮,并顯示在成績管理里面。4.1.4.4總分查詢按鈕的程序設計:% - Executes on button press in zfbutton.function zfbutton_Callback(hObject, eventdata, handles)% hObject handle to zfbutton (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)name=get(handles.lredit13,string);lia,id=ismember(name,handles.xingming);if lia set(handles.xmlist,value,id); set(handles.xhlist,value,id); set(handles.chengjilist,value,id); xingming=handles.xingming; chengji=handles.chengji; xuehao=handles.xuehao; set(handles.zfedit,string,(chengji(id,1)+chengji(id,2);else msgbox(沒有找到);end 查詢是否有這個名字在保存的名字的數組里面,獲取需要刪除的名字在保存的數組里面是第幾個的,獲取三個數組,設置三個list里面這個學生的信息為高亮,同時計算她(他)的總分,并顯示。4.1.4.5平均分查詢按鈕的程序設計:% - Executes on button press in pjfbutton.function pjfbutton_Callback(hObject, eventdata, handles)% hObject handle to pjfbutton (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)chengji=handles.chengji;shuxue=chengji(1:end,1);yuwen=chengji(1:end,2);avesshuxue=mean(shuxue);avesyuwen=mean(yuwen);set(handles.sxedit,string,num2str(avesshuxue);set(handles.ywedit,string,num2str(avesyuwen); 通過按鈕,調用成績數組,計算平均分并顯示。4.1.5成績概況模塊:成績概況的設計比較簡單,僅包含通過點擊查詢最高分或者最低分按鈕來查詢各科學生成績里面的最高分和最低分并顯示。程序設計界面如下:4.1.5.1最高分按鈕程序設計:% - Executes on button press in pushbutton7.function pushbutton7_Callback(hObject, eventdata, handles)% hObject handle to pushbutton7 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)chengji=handles.chengji;count=handles.count;x=max(chengji(1:count,1);y=max(chengji(1:count,2);set(handles.lredit6,string,num2str(x);set(handles.lredit7,string,num2str(y); 調用成績數組,根據人數,設置比較次數,按照科目比較,并設置顯示。4.1.5.2最低分程序設計:% - Executes on button press in pushbutton8.function pushbutton8_Callback(hObject, eventdata, handles)% hObject handle to pushbutton8 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)chengji=handles.chengji;count=handles.count;x=min(chengji(1:count,1);y=min(chengji(1:count,2);set(handles.lredit8,string,num2str(x);set(handles.lredit9,string,num2str(y); 調用成績數組,根據人數,設置比較次數,按照科目比較,并設置顯示。4.1.6成績統(tǒng)計直方圖模塊:本模塊的設計為:將各科學生的成績分段統(tǒng)計,畫出學生成績的分布直方圖。采用的分數段為:060、6170、7180、8190、91100五個分數段。設計界面圖如下:4.1.6.1顯示數學成績分數段統(tǒng)計直方圖按鈕的程序設計:% - Executes on button press in zftbutton.function zftbutton_Callback(hObject, eventdata, handles)% hObject handle to zftbutton (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)axes(handles.axes1);cla;chengji=handles.chengji;shuxue=chengji(1:end,1);count=handles.count;aa=0 0 0 0 0;for i=1:count if shuxue(i)60 aa(1)=aa(1)+1; else if shuxue(i)70 aa(2)=aa(2)+1; else if shuxue(i)80 aa(3)=aa(3)+1; else if shuxue(i)90 aa(4)=aa(4)+1; else aa(5)=aa(5)+1; end end end endendx=50 65 75 85 95; bar(x,aa);title(數學成績分數段統(tǒng)計直方圖); 調用數學成績數組,設定空數組aa用來存放分數段的統(tǒng)計數據。設定循環(huán)函數,分別比較五個數值:60、70、80、90、100,并記錄。最后用bar函數畫出函數圖像。4.1.6.2顯示語文成績分數段統(tǒng)計直方圖:% - Executes on button press in pushbutton14.function pushbutton14_Callback(hObject, eventdata, handles)% hObject handle to pushbutton14 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)axes(handles.axes2);cla;chengji=handles.chengji;yuwen=chengji(1:end,2);count=handles.count;aa=0 0 0 0 0;for i=1:count if yuwen(i)60 aa(1)=aa(1)+1; else if yuwen(i)70 aa(2)=aa(2)+1
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 湖北國土資源職業(yè)學院《汽車電器》2023-2024學年第二學期期末試卷
- 吉林藝術學院《安全化工基礎》2023-2024學年第二學期期末試卷
- 喀什理工職業(yè)技術學院《虛擬化技術與應用》2023-2024學年第二學期期末試卷
- 北京中醫(yī)藥大學東方學院《DSP技術及應用》2023-2024學年第二學期期末試卷
- 中央民族大學《國際會展實務》2023-2024學年第二學期期末試卷
- 福建林業(yè)職業(yè)技術學院《商務英語閱讀Ⅱ》2023-2024學年第二學期期末試卷
- 河北工業(yè)職業(yè)技術大學《電子線路設計》2023-2024學年第二學期期末試卷
- 湖南機電職業(yè)技術學院《中外建筑園林史》2023-2024學年第二學期期末試卷
- 江蘇大學《分離科學》2023-2024學年第二學期期末試卷
- 上饒衛(wèi)生健康職業(yè)學院《管理會計案例》2023-2024學年第二學期期末試卷
- 2025年高級政工師理論考試題庫(濃縮500題)
- MOOC 創(chuàng)新與創(chuàng)業(yè)管理-南京師范大學 中國大學慕課答案
- DB32∕T 3921-2020 居住建筑浮筑樓板保溫隔聲工程技術規(guī)程
- 適老化居家環(huán)境設計與改造-項目三-適老化居家環(huán)境課件(PPT 37頁)
- 最新幼兒園小朋友認識醫(yī)生和護士PPT課件
- 安全現場文明施工措施費用清單
- 《蘇東坡傳》精美(課堂PPT)
- 國標法蘭尺寸對照表
- 強制執(zhí)行申請書-(工資強制執(zhí)行)
- 華電 電廠招聘化學試題
- 上海市住宅修繕施工資料及表式(共251頁)
評論
0/150
提交評論