《2022年Matlab课程设计报告.pdf》由会员分享,可在线阅读,更多相关《2022年Matlab课程设计报告.pdf(17页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Matlab 课程设计报告至诚学院 MATLAB 实践 课程设计学生姓名 : 学号: 专业班级 : (2) 指导教师 : 二一四年 四 月三十 日目录1、设计目的第3 页2、题目分析第3 页3、总体设计第3 页4、具体设计第4 页5、小结与心得第15 页1、设计目的 : 使用 MATLAB 的 GUI程序设计学生成绩管理系统。完成需学生成绩的基本管理, 包含对学生成绩的读入、修改、添加与查询等基本的功能。精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 1 页,共 17 页 - - - - - - - -
2、- - Matlab 课程设计报告本课题主要解决对学生成绩总体的客观评价, 通过一系列数据的分析比较,例如平均值 , 成绩分布等整体数据的处理, 以及 matlab 与 excel 在数据联动功能方面的应用 , 所绘制的直方图、正态分布图等图像信息使得分析成绩系统更直观、有效地反映学生此课程这一阶段的表现, 进而研究今后的教学重点, 以及从教学到考试等一连串过程中的薄弱环节, 从而达到教学相长的目的。不论就是对学生的整体学习情况还就是单独考虑每个学生的学习情况都能够进行较好的评价。面比起单纯的 绝对分数 评价学生的学习状况 , 忽略了基础条件的差异 , 我们运用了各种方法与模型来去避免这类现象
3、的发生, 动态的分析每个学生的情况 , 并从定性与定量两方面分别给出了数值与建议。2、题目分析根据课题的要求 , 分析成绩管理系统的现实需求, 我们可以概括为设计的程序应该包含的几个基本模块及应该完成的功能如下: 1、文件管理 : 完成成绩表格的导入 (、xls文件), 完成对修改后的成绩文件的保存。 2、成绩管理 : 完成对学生成绩、学号、成绩、总分的显示与修改, 还有添加新的学生的信息。 3、查询管理 : 完成对姓名或者学号的查询的显示与删除, 学生的信息显示在成绩管理里面的显示框里面。4、 在学生的姓名显示框点击学生姓名, 成绩管理系统里面自动获取学生的基本信息。5、统计出学生的最高分与
4、最低分以及各科成绩的平均分情况。6、通过各科成绩的统计分布直方图, 直观地分析学生的各科的成绩状况。3、总体设计围绕设计的题目范围, 我们可以将起绘制成功能模块的总体模块图如下图1。根据设计的模块设计成GUI的设计图如下图 2。通过将导入的学生信息的数据保存到全局变量的数组里面, 到每个模块需要使用时 , 导出数据即可完成对数据的引用, 在需要完成操作的按钮下编写回调函数来达到需要完成的功能。 设计内容包含对回调函数的编写与对于程序功能的调试, 分析问题原因 , 在实现程序功能时 , 进一步改善程序的设计构架。精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载
5、 名师归纳 - - - - - - - - - -第 2 页,共 17 页 - - - - - - - - - - Matlab 课程设计报告图 1 图 2 4、具体设计利用 MATLAB 的 GUI程序设计实现成绩管理系统的功能。各个模块功能的实现及程序设计如下 : 4、1、模块设计界面及程序设计4、1、1 显示模块模块 : 显示模块需要完成的就是对于学生姓名、序号以及成绩的显示, 并且在点击姓名显示框里面的学生姓名时, 成绩管理的模块里面可以自动显示学生的以上基本信息。设计界面如下:对于姓名显示框的程序设计如下: 精品资料 - - - 欢迎下载 - - - - - - - - - - -
6、欢迎下载 名师归纳 - - - - - - - - - -第 3 页,共 17 页 - - - - - - - - - - Matlab 课程设计报告% - 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
7、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(c
8、ontent,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)+che
9、ngji(content,2); 首先设置姓名显示的高亮位置表示选中的学生, 调出handles 里面的信息 , 然后通过 set 函数将数字赋值给显示框。4、1、2文件管理模块 : 文件管理模块要实现的就是对于保存成绩的表格文件( 、xls 文件)的读取与对于学生信息修改或者删除之后的保存功能。因此添加了两个控件按钮来实现,在点击按钮后 , 弹出读取 ( 或保存 )文件的所在位置 , 添加文件后 , 系统完成对成绩的读取 ( 或保存 ) 功能。没有选中文件时 , 提示“没有选择文件” 。设计界面如下 : 4、1、2、1打开成绩文件的按钮的设计程序: % - Executes on butto
10、n press in pushbutton1、functionpushbutton1_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)=uigetfile(* 、xls ; * 、* , 打开成绩文件 ); if isequal()|i
11、sequal(pathname,0) 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 4 页,共 17 页 - - - - - - - - - - Matlab 课程设计报告 errordlg( 没有选择文件 , 出错 ); returnelse str=pathname,; word,txt=xlsread(str); xingming=txt(2:end,1); xuehao=word(1:end,1); chengji=word(1:end,2:3); set(handles、xmlist,stri
12、ng,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显示全部学生
13、的信息 , 并保存这些数据到全局变量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
14、user data (see GUIDATA)=uigetfile(* 、xls ; * 、* , 打开成绩文件 ); if isequal()|isequal(pathname,0) errordlg( 没有选择文件 , 出错 ); returnelse str=pathname,; xingming=handles、xingming; chengji=handles、chengji; xuehao=handles、xuehao; oldcount=handles、count; 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - -
15、 - - - - -第 5 页,共 17 页 - - - - - - - - - - Matlab 课程设计报告 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)
16、; End 将新获取的数据保存到M 数组里面 , 调出原本数组的行数count, 比较新获得的数组的行数与原来行数count 的大小 , 根据实际调节写入数组的大小, 并保存新的数据的行数。4、1、3成绩管理模块 : 成绩管理模块需要完成的就是对于学生的姓名、学号与成绩的显示( 显示在上面的显示模块里面完成), 以及修改学生信息的修改与添加新的学生信息。添加两个控件 , 控制学生信息的修改与添加。界面设计图如下: 4、1、3、1修改按钮的程序设计 : % - Executes on button press in pushbutton2 、functionpushbutton2_Callbac
17、k(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; 精品资料 - - - 欢迎下载 - - - - - - - - - - -
18、欢迎下载 名师归纳 - - - - - - - - - -第 6 页,共 17 页 - - - - - - - - - - Matlab 课程设计报告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); xingm
19、ing(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(
20、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
21、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;newnam
22、e; 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); 精品资料 - - - 欢迎下载 - - - -
23、- - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 7 页,共 17 页 - - - - - - - - - - Matlab 课程设计报告获取输入的数据 , 调出原来的成绩、学号与姓名数组, 根据新添加的信息 , 修改原本的三个数据的数值, 并保存到全局变量 handles 里面。4、1、4查询管理模块 : 本模块需要完成的就是通过查询学生姓名或者学号, 让成绩管理里面可以显示该学生的基本信息并可以通过删除按钮删除该生的信息, 没有查询到该生的信息, 即提示“没有找到”。通过平均分查询按钮来查询各科的平均分成绩。通过查询学生姓名 , 找到学生的总分并显示
24、。基本设计模块如下图: 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 han
25、dles 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=xi
26、ngming; 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); 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 8 页,共 17 页 - - - - - - - - - - Matlab 课
27、程设计报告 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_Callbac
28、k(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
29、,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,str
30、ing,xuehao(id); else msgbox( 没有找到 ); end查询就是否有这个名字在保存的名字的数组里面, 获取需要删除的名字在保存的数组里面就是第几个的, 获取三个数组 , 设置三个 list里面这个学生的信息为高亮 , 并显示在成绩管理里面。4、1、4、3学号查询按钮的程序设计 : % - Executes on button press in pushbutton9、function pushbutton9_Callback(hObject, eventdata, handles) 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名
31、师归纳 - - - - - - - - - -第 9 页,共 17 页 - - - - - - - - - - Matlab 课程设计报告% 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
32、),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,s
33、tring,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) % hOb
34、ject 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
35、); set(handles、chengjilist,value,id); xingming=handles、xingming; 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 10 页,共 17 页 - - - - - - - - - - Matlab 课程设计报告 chengji=handles、chengji; xuehao=handles、xuehao; set(handles、zfedit,string,(chengji(id,1)+chengji(id,2); else msgbox( 没有找
36、到 ); 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 d
37、efined 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,num2st
38、r(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 rese
39、rved - to be defined in a future version of MATLAB精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 11 页,共 17 页 - - - - - - - - - - Matlab 课程设计报告% handles structure with handles and user data (see GUIDATA)chengji=handles、chengji; count=handles 、count; x=max(chengji(1:count,1); y=m
40、ax(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
41、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,nu
42、m2str(y); 调用成绩数组 , 根据人数 , 设置比较次数 , 按照科目比较 , 并设置显示。4、1、6成绩统计直方图模块 : 本模块的设计为: 将各科学生的成绩分段统计, 画出学生成绩的分 布 直 方 图 。 采 用 的 分 数 段为:060、6170、7180、8190、91100五个分数段。设计界面图如下: 4、1、6、1显示数学成绩分数段统计直方图按钮的程序设计: % - Executes on button press in zftbutton、functionzftbutton_Callback(hObject, eventdata, handles) 精品资料 - - -
43、欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 12 页,共 17 页 - - - - - - - - - - Matlab 课程设计报告% 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; chen
44、gji=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; elseif shuxue(i)70 aa(2)=aa(2)+1; elseif shuxue(i)80 aa(3)=aa(3)+1; elseif shuxue(i)90 aa(4)=aa(4)+1; else aa(5)=aa(5)+1; endendendendendx=50 65 75 85 95; bar(x,aa); title( 数
45、学成绩分数段统计直方图 ); 调用数学成绩数组 , 设定空数组 aa用来存放分数段的统计数据。设定循环函数, 分别比较五个数值 :60 、70、80、90、100, 并记录。最后用 bar函数画出函数图像。4、1、6、2显示语文成绩分数段统计直方图: % - Executes on button press in pushbutton14、function pushbutton14_Callback(hObject, eventdata, handles) % hObject handle to pushbutton14 (see GCBO)% eventdata reserved - to
46、be defined in a future version of MATLAB精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 13 页,共 17 页 - - - - - - - - - - Matlab 课程设计报告% handles structure with handles and user data (see GUIDATA)axes(handles 、axes2); cla; chengji=handles、chengji; yuwen=chengji(1:end,2); count=hand
47、les 、count; aa=0 0 0 0 0; for i=1:count if yuwen(i)60 aa(1)=aa(1)+1; elseif yuwen(i)70 aa(2)=aa(2)+1; elseif yuwen(i)80 aa(3)=aa(3)+1; elseif yuwen(i)90 aa(4)=aa(4)+1; else aa(5)=aa(5)+1; endendendendendx=50 65 75 85 95; bar(x,aa); title( 语文成绩分数段统计直方图 ); 调用语文成绩数组 , 设定空数组 aa用来存放分数段的统计数据。设定循环函数, 分别比较五
48、个数值 :60 、70、80、90、100, 并记录。最后用 bar函数画出函数图像。4、2 调试结果4、2、1 导入数据调试界面 : 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 14 页,共 17 页 - - - - - - - - - - Matlab 课程设计报告4、2、2 总体调试后界面图 ( 添加一个新的学生信息, 同时删除东的信息后并保存): 保存数据前 : 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - -
49、-第 15 页,共 17 页 - - - - - - - - - - Matlab 课程设计报告保存数据后 : 4、3 问题分析 : 4、3、1 无法打开、 xls 文件解决方法 : 查瞧程序的编写就是否有误, 找到有误的地方并改正 ; 查瞧文件的命名与格式 , 就是否为实验里面要求的数据; 查瞧文件里面生成的数组的大小就是否与实验设计的存放信息的数组的大小相同。4、3、2 不能正常显示学生的信息解决办法 : 查瞧程序设计的就是否就是否从全局变量的handles 里面调出需要设置的信息的数组 , 关于设置显示信息框的set函数的设置格式就是否正确, 以及显示框的 tag 就是否与实验 set
50、函数里面的引用就是否一致。 Set 函数里面赋值给显示框就是赋的值为str 类型, 查瞧需要赋值的数字就是否为str 类型, 不就是的话则需要转换类型。4、3、3 无法保存文件解决办法 : 程序修改完成后 , 我法将修改后的信息与新添加的信息保存到文件里面时, 第一: 检查程序的数组 , 查瞧就是否有获取变更后的信息并更新到全局变量handles 里面; 第二: 写入函数的开始行 , 本实验写入从A2 行开始写入 , 写入行的出错也会导致文件写入的错误。4、3、4 在删除信息后 , 重新写入 , 但就是数据从原来的四个人, 删除后剩下三个人的信息 , 可就是文件里面依旧保存着四个人的信息, 而