Matlab課程設(shè)計資料報告材料_第1頁
Matlab課程設(shè)計資料報告材料_第2頁
Matlab課程設(shè)計資料報告材料_第3頁
Matlab課程設(shè)計資料報告材料_第4頁
Matlab課程設(shè)計資料報告材料_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、學(xué)院 MATLAB實踐課程設(shè)計學(xué)生:學(xué) 號:專業(yè)班級:(2)指導(dǎo)教師:二O四年四月三十日1. 設(shè)計目的2. 題目分析3. 總體設(shè)計4. 具體設(shè)計第 15 頁5. 小結(jié)和心得1、設(shè)計目的:使用MATLAB勺GUI程序設(shè)計學(xué)生成績管理系統(tǒng)。完成需學(xué)生成績的基本管 理,包含對學(xué)生成績的讀入、修改、添加和查詢等基本的功能。本課題主要解決對學(xué)生成績總體的客觀評價,通過一系列數(shù)據(jù)的分析比較, 例如平均值,成績分布等整體數(shù)據(jù)的處理,以及 matlab 和 excel 在數(shù)據(jù)聯(lián)動功 能方面的應(yīng)用,所繪制的直方圖、 正態(tài)分布圖等圖像信息使得分析成績系統(tǒng)更直 觀、有效地反映學(xué)生此課程這一階段的表現(xiàn), 進(jìn)而研究今后

2、的教學(xué)重點, 以及從 教學(xué)到考試等一連串過程中的薄弱環(huán)節(jié),從而達(dá)到教學(xué)相長的目的。不論是對學(xué)生的整體學(xué)習(xí)情況還是單獨考慮每個學(xué)生的學(xué)習(xí)情況都能夠進(jìn) 行較好的評價。面比起單純的 絕對分?jǐn)?shù)評價學(xué)生的學(xué)習(xí)狀況, 忽略了基礎(chǔ)條件 的差異,我們運用了各種方法和模型來去避免這類現(xiàn)象的發(fā)生, 動態(tài)的分析每個 學(xué)生的情況,并從定性和定量兩方面分別給出了數(shù)值與建議。2、題目分析根據(jù)課題的要求, 分析成績管理系統(tǒng)的現(xiàn)實需求, 我們可以概括為設(shè)計的程 序應(yīng)該包含的幾個基本模塊及應(yīng)該完成的功能如下:1. 文件管理:完成成績表格的導(dǎo)入( .xls 文件),完成對修改后的成績文件 的保存。2. 成績管理:完成對學(xué)生成績、

3、學(xué)號、成績、總分的顯示和修改,還有添加 新的學(xué)生的信息。3. 查詢管理: 完成對或者學(xué)號的查詢的顯示和刪除, 學(xué)生的信息顯示在成績 管理里面的顯示框里面。4. 在學(xué)生的顯示框點擊學(xué)生,成績管理系統(tǒng)里面自動獲取學(xué)生的基本信息。5. 統(tǒng)計出學(xué)生的最高分和最低分以及各科成績的平均分情況。6. 通過各科成績的統(tǒng)計分布直方圖,直觀地分析學(xué)生的各科的成績狀況。3、總體設(shè)計圍繞設(shè)計的題目圍, 我們可以將起繪制成功能模塊的總體模塊圖如下圖 1。 根據(jù)設(shè)計的模塊設(shè)計成 GUI 的設(shè)計圖如下圖 2。通過將導(dǎo)入的學(xué)生信息的數(shù)據(jù)保存到全局變量的數(shù)組里面, 到每個模塊需要 使用時,導(dǎo)出數(shù)據(jù)即可完成對數(shù)據(jù)的引用, 在需要

4、完成操作的按鈕下編寫回調(diào)函 數(shù)來達(dá)到需要完成的功能。設(shè)計容包含對回調(diào)函數(shù)的編寫和對于程序功能的調(diào) 試,分析問題原因,在實現(xiàn)程序功能時,進(jìn)一步改善程序的設(shè)計構(gòu)架。文件管理文上牛號直詢直伺豐堆圖1學(xué)號數(shù)學(xué)語文究伸理打畀刪文甘I底蜒善理暨身育詡16字主字號Elie l&.-t威帰輙祝甘改| 游釧|J!龍常茅陡1*討用曲討=日EM Tfl 4EJt Tebtum平均:rdS!色玄略曲勺誼畀氓計戸記圖24、具體設(shè)計利用MATLAB勺GUI程序設(shè)計實現(xiàn)成績管理系統(tǒng)的功能。各個模塊功能的實 現(xiàn)及程序設(shè)計如下:4.1.模塊設(shè)計界面及程序設(shè)計4.1.1顯示模塊模塊:顯示模塊需要完成的是對于學(xué)生、 序號以及成績的

5、顯示,并且在點擊顯示 框里面的學(xué)生時,成績管理的模塊里面可以自動顯示學(xué)生的以上基本信息。設(shè)計 對于顯示框的程序設(shè)計如下:% - 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

6、 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.lred

7、it3,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);首先設(shè)置顯示的高亮位置表示選中的學(xué)生,

8、調(diào)出 handles 里面的信息,然后 通過set函數(shù)將數(shù)字賦值給顯示框。4.1.2 文件管理模塊:文件管理模塊要實現(xiàn)的是對于保存成績的表格文件 ( .xls 文件)的讀取和對 于學(xué)生信息修改或者刪除之后的保存功能。 因此添加了兩個控件按鈕來實現(xiàn), 在 點擊按鈕后,彈出讀取(或保存)文件的所在位置,添加文件后,系統(tǒng)完成對成 績的讀取(或保存)功能。沒有選中文件時,提示“沒有選擇文件” 。設(shè)計界面 如下:4.1.2.1 打開成績文件的按鈕的設(shè)計程序:% - Executes on button press in pushbutton1.function pushbutton1_Callback(

9、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(

10、沒有選擇文件 , 出錯 );returnelsestr=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);h

11、andles.chengji=chengji; handles.xuehao=xuehao;handles.xingming=xingming; guidata(hObject,handles);End 讀取文件里面的信息,保存為數(shù)組的形式,分別給成績、 、學(xué)號數(shù)組賦值, 并設(shè)置三個 list 顯示全部學(xué)生的信息, 并保存這些數(shù)據(jù)到全局變量 handles 里面4.1.2.2 保存文件按鈕設(shè)計程序:% - Executes on button press in baocunbutton.function baocunbutton_Callback(hObject, eventdata, han

12、dles)% 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( 沒有選擇文件 , 出錯 );returne

13、lsestr=pathname,filename; xingming=handles.xingming;chengji=handles.chengji;xuehao=ha ndles.xuehao;oldco un t=ha ndles.co unt;row,co=size(che ngji);col=co+1;if rowvoldcountM=cell(oldcou nt,col);elseM=cell(row,col);endM(1:row,1)=x in gmi ng;M(1:row,2)=n um2cell(xuehao);M(1:row,3:col+1)=n um2cell(che

14、ngji); xlswrite(str,M,1, A2);han dles.co un t=row;guidata(hObject,row);End將新獲取的數(shù)據(jù)保存到M數(shù)組里面,調(diào)出原本數(shù)組的行數(shù)count,比較新獲得 的數(shù)組的行數(shù)和原來行數(shù)count的大小,根據(jù)實際調(diào)節(jié)寫入數(shù)組的大小,并保存 新的數(shù)據(jù)的行數(shù)。4.1.3成績管理模塊:成績管理模塊需要完成的是對于學(xué)生的、學(xué)號和成績的顯示(顯示在上面的顯示模塊里面完成),以及修改學(xué)生信息的修改和添加新的學(xué)生信息。添加兩個 控件,控制學(xué)生信息的修改和添加。界面設(shè)計圖如下:4.1.3.1修改按鈕的程序設(shè)計:% - Executes on butt

15、on press in pushbutt on2.fun cti onpushbutt on 2_Callback(hObject,eve ntdata, han dles)% hObjecthandle topushbutto n2 (see GCBO)% eve ntdatareserved - to bedefi ned in a future vers ion of MATLAB% han dles structure with han dles and user data (see GUIDATA) content=get(handles.xmlist, value ); xingm

16、ing=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,

17、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);獲取輸入的數(shù)據(jù),調(diào)出原來的成績、學(xué)號和數(shù)組,根據(jù)新修改的信息,修改

18、 原本的三個數(shù)據(jù)的數(shù)值,并保存到全局變量 handles 里面。4.1.3.2 添加按鈕的程序設(shè)計:% - 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

19、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; hand

20、les.xuehao=handles.xuehao;newxuehao;guidata(hObject,handles); set(handles.xmlist, string ,handles.xingming);set(ha ndles.xhlist,stri ng ,nu m2str(ha ndles.xuehao);set(ha ndles.che ngjilist,stri ng,nu m2str(ha ndles.che ngji);獲取輸入的數(shù)據(jù),調(diào)出原來的成績、學(xué)號和數(shù)組,根據(jù)新添加的信息,修改原本的三個數(shù)據(jù)的數(shù)值,并保存到全局變量handles里面。4.1.4查詢管理模塊:本

21、模塊需要完成的是通過查詢學(xué)生或者學(xué)號,讓成績管理里面可以顯示該學(xué)生的基本信息并可以通過刪除按鈕刪除該生的信息,沒有查詢到該生的信息,即r查詢管理學(xué)生姓名|匚“滄如姓名查詢|刪除學(xué)生學(xué)號| EditT&xt 學(xué)號查詢刪除| 姓名 | Edit Text | Edit Text總分查詢 |提示“沒有找到”。通過平均分查詢按鈕來查詢各科的平均分成績。通過查詢學(xué) 生,找到學(xué)生的總分并顯示?;驹O(shè)計模塊如下圖:數(shù)學(xué)平均分語文平均分| Edit Text Edit Text平均分查詢|4.1.4.1兩個刪除按鈕的程序設(shè)計(以第一個刪除為例,第二個原理同第一個):% - Executes on butt o

22、n press in sha nchubutt on.fun cti on sha nchubutt on _Callback(hObject, eve ntdata, han dles)% hObject handle to sha nchubutton (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% han dles structure with han dles and user data (see GUIDATA)n ame=get(ha ndles.xmedit, stri n

23、g );lia,id=ismember( name,ha ndles.xi ngmi ng);if liaxingmin g=ha ndles.x ingming;che ngji=ha ndles.che ngji;xuehao=ha ndles.xuehao;xin gmi ng(id)=;xuehao(id)=;che ngji(id,:)=;han dles.che ngji=che ngji;han dles.xuehao=xuehao;han dles.x ingmin g=x ingming;guidata(hObject,ha ndles);set(ha ndles.xmlis

24、t,stri ng,xi ngmi ng);set(ha ndles.che ngjilist,stri ng ,nu m2str(che ngji);set(handles.xhlist,string,num2str(xuehao);set(handles.xmlist,value,1);set(handles.xhlist,value,1);set(handles.chengjilist,value ,1);Else 查詢時候有這個名字在保存的名字(或?qū)W號)的數(shù)組里面,調(diào)出、學(xué)號和成 績數(shù)組,獲取需要刪除的學(xué)生在數(shù)組里面保存在第幾個的位置, 將數(shù)組里面的這 兒位置清空,設(shè)置三個 list

25、的顯示高亮位置回到第一行,同時更新 handles 里面 的三個數(shù)組存放。4.1.4.2 查詢按鈕的程序設(shè)計:% - 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

26、 and user data (see GUIDATA) name=get(handles.xmedit, string );lia,id=ismember(name,handles.xingming);if liaset(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,

27、xingming(id);set(handles.lredit2,string,chengji(id,1);set(handles.lredit3,string,chengji(id,2);set(handles.lredit4,string,xuehao(id);elsemsgbox( 沒有找到 );end 查詢是否有這個名字在保存的名字的數(shù)組里面, 獲取需要刪除的名字在保存 的數(shù)組里面是第幾個的, 獲取三個數(shù)組,設(shè)置三個 list 里面這個學(xué)生的信息為高 亮,并顯示在成績管理里面。4.1.4.3 學(xué)號查詢按鈕的程序設(shè)計:% - Executes on button press in pus

28、hbutton9.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),

29、handles.xuehao);if liaset(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,cheng

30、ji(id,2);set(handles.lredit4,string,xuehao(id);elsemsgbox( 沒有找到 );End 查詢是否有這個學(xué)號在保存的名字的數(shù)組里面, 獲取需要刪除的學(xué)號在保存 的數(shù)組里面是第幾個的, 獲取三個數(shù)組,設(shè)置三個 list 里面這個學(xué)生的信息為高 亮,并顯示在成績管理里面。4.1.4.4 總分查詢按鈕的程序設(shè)計:% - Executes on button press in zfbutton.function zfbutton_Callback(hObject, eventdata, handles)% hObject handle to zfbut

31、ton (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 liaset(handles.xmlist,value ,id);set(handles.xhlist,value ,id);set(ha ndles.che n

32、gjilist,value ,id);xingmin g=ha ndles.x ingming;che ngji=ha ndles.che ngji;xuehao=ha ndles.xuehao;set(ha ndles.zfedit, stri ng,(che ngji(id,1)+che ngji(id,2);elsemsgbox(沒有找到);end查詢是否有這個名字在保存的名字的數(shù)組里面, 獲取需要刪除的名字在保存 的數(shù)組里面是第幾個的,獲取三個數(shù)組,設(shè)置三個list里面這個學(xué)生的信息為高 亮,同時計算她(他)的總分,并顯示。4.145平均分查詢按鈕的程序設(shè)計:% - Executes

33、on butt on press in pjfbutt on.function pjfbutton_Callback(hObject, eventdata, handles)% hObject han dle to pjfbutton (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% han dles structure with han dles and user data (see GUIDATA)che ngji=ha ndles.che ngji;shuxue=che ngji(1

34、:e nd,1);yuwe n=che ngji(1:e nd,2);avesshuxue=mea n( shuxue);avesyuwe n=mea n(y uwe n);set(ha ndles.sxedit,stri ng,nu m2str(avesshuxue);set(ha ndles.ywedit,stri ng,nu m2str(avesyuwe n);通過按鈕,調(diào)用成績數(shù)組,計算平均分并顯示。4.1.5成績概況模塊:成績概況的設(shè)計比較簡單,僅包含通過點擊查詢最高分或者最低分按鈕來查 詢各科學(xué)生成績里面的最高分和最低分并顯示。程序設(shè)計界面如下:成績概況一裁學(xué)語文最高分|最高分Ed

35、it Tert| Edit Text| EdrtTaxt| Edit Text最低分|4.1.5.1最咼分按鈕程序設(shè)計:% - Executes on butt on press in pushbutt on7.fun cti on pushbutt on 7_Callback(hObject, eve ntdata, han dies)% hObject handle to pushbutt on7 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% han dies structure

36、with han dies and user data (see GUIDATA) che ngji=ha ndles.che ngji;coun t=ha ndles.co unt;x=max(chen gji(1:co un t,1);y=max(che ngji(1:co un t,2);set(ha ndles .l redit6,stri ng,nu m2str(x);set(ha ndles .l redit7,stri ng,nu m2str(y);調(diào)用成績數(shù)組,根據(jù)人數(shù),設(shè)置比較次數(shù),按照科目比較,并設(shè)置顯示4.1.5.2最低分程序設(shè)計:% - Executes on butt

37、 on press in pushbutt on8.fun cti on pushbutt on 8_Callback(hObject, eve ntdata, han dles)% hObject handle to pushbutt on8 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% han dles structure with han dles and user data (see GUIDATA) che ngji=ha ndles.che ngji;coun t=ha n

38、dles.co unt;x=mi n(che ngji(1:cou nt,1);y=min( che ngji(1:co un t,2);set(ha ndles .l redit8,stri ng ,num2str(x);set(ha ndles .l redit9,stri ng ,num2str(y);調(diào)用成績數(shù)組,根據(jù)人數(shù),設(shè) 置比較次數(shù),按照科目比較,并設(shè) 置顯示。4.1.6成績統(tǒng)計直方圖模塊:斷威字射諛跚帕丹本模塊的設(shè)計為:將各科學(xué)生 的成績分段統(tǒng)計,畫出學(xué)生成績的 分布直方圖。采用的分?jǐn)?shù)段為:060、6170、7180、8190、91100五個分?jǐn)?shù)段。設(shè)計界面圖如下:4.1.6.

39、1 顯示數(shù)學(xué)成績分?jǐn)?shù)段統(tǒng)計直方圖按鈕的程序設(shè)計: % - 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(handl

40、es.axes1);cla; chengji=handles.chengji; shuxue=chengji(1:end,1); count=handles.count; aa=0 0 0 0 0;for i=1:countif 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;endendendendendx=50 65 75 85 95; bar(x

41、,aa);title( 數(shù)學(xué)成績分?jǐn)?shù)段統(tǒng)計直方圖 );調(diào)用數(shù)學(xué)成績數(shù)組,設(shè)定空數(shù)組aa用來存放分?jǐn)?shù)段的統(tǒng)計數(shù)據(jù)。設(shè)定循環(huán)函 數(shù),分別比較五個數(shù)值: 60、70、80、90、100,并記錄。最后用 bar 函數(shù)畫出函 數(shù)圖像。4.1.6.2 顯示語文成績分?jǐn)?shù)段統(tǒng)計直方圖:% - Executes on button press in pushbutton14.function pushbutton14_Callback(hObject, eventdata, handles)% hObject handle to pushbutton14 (see GCBO)% eventdata reserv

42、ed - 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:countif yuwen(i)60aa(1)=aa(1)+1;else if yuwen(i)70 aa(2)=aa(2)+1;else if yuwen(i)80 aa(3)=aa(3)+1;else if yuwen(i)90 aa(4)=aa(4)+1;else aa(5)=aa(5)+1;endendendendendx=50 65 75 85 95; bar(x,aa);title( 語文成績分?jǐn)?shù)段統(tǒng)計直方圖 );調(diào)用語文成績數(shù)組,設(shè)定空數(shù)組aa用來存放分?jǐn)?shù)段的統(tǒng)計數(shù)據(jù)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論