您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > Matlab课程设计报告
MATLAB课程设计第1页共18页至诚学院《MATLAB实践》课程设计学生姓名:学号:专业班级:(2)指导教师:二○一四年四月三十日MATLAB课程设计第2页共18页目录1.设计目的…………………………………………………第3页2.题目分析…………………………………………………第3页3.总体设计…………………………………………………第3页4.具体设计…………………………………………………第4页5.小结和心得………………………………………………第15页MATLAB课程设计第3页共18页1、设计目的:使用MATLAB的GUI程序设计学生成绩管理系统。完成需学生成绩的基本管理,包含对学生成绩的读入、修改、添加和查询等基本的功能。本课题主要解决对学生成绩总体的客观评价,通过一系列数据的分析比较,例如平均值,成绩分布等整体数据的处理,以及matlab和excel在数据联动功能方面的应用,所绘制的直方图、正态分布图等图像信息使得分析成绩系统更直观、有效地反映学生此课程这一阶段的表现,进而研究今后的教学重点,以及从教学到考试等一连串过程中的薄弱环节,从而达到教学相长的目的。不论是对学生的整体学习情况还是单独考虑每个学生的学习情况都能够进行较好的评价。面比起单纯的绝对分数评价学生的学习状况,忽略了基础条件的差异,我们运用了各种方法和模型来去避免这类现象的发生,动态的分析每个学生的情况,并从定性和定量两方面分别给出了数值与建议。2、题目分析根据课题的要求,分析成绩管理系统的现实需求,我们可以概括为设计的程序应该包含的几个基本模块及应该完成的功能如下:1.文件管理:完成成绩表格的导入(.xls文件),完成对修改后的成绩文件的保存。2.成绩管理:完成对学生成绩、学号、成绩、总分的显示和修改,还有添加新的学生的信息。3.查询管理:完成对姓名或者学号的查询的显示和删除,学生的信息显示在成绩管理里面的显示框里面。4.在学生的姓名显示框点击学生姓名,成绩管理系统里面自动获取学生的基本信息。5.统计出学生的最高分和最低分以及各科成绩的平均分情况。6.通过各科成绩的统计分布直方图,直观地分析学生的各科的成绩状况。3、总体设计围绕设计的题目范围,我们可以将起绘制成功能模块的总体模块图如下图1。根据设计的模块设计成GUI的设计图如下图2。通过将导入的学生信息的数据保存到全局变量的数组里面,到每个模块需要使用时,导出数据即可完成对数据的引用,在需要完成操作的按钮下编写回调函数来达到需要完成的功能。设计内容包含对回调函数的编写和对于程序功能的调试,分析问题原因,在实现程序功能时,进一步改善程序的设计构架。MATLAB课程设计第4页共18页图1图24、具体设计利用MATLAB的GUI程序设计实现成绩管理系统的功能。各个模块功能的实现及程序设计如下:4.1.模块设计界面及程序设计4.1.1显示模块模块:显示模块需要完成的是对于学生姓名、序号以及成绩的显示,并且在点击姓名显示框里面的学生姓名时,成绩管理的模块里面可以自动显示学生的以上基本信息。设计界面如下:MATLAB课程设计第5页共18页对于姓名显示框的程序设计如下:%---Executesonselectionchangeinxmlist.functionxmlist_Callback(hObject,eventdata,handles)%hObjecthandletoxmlist(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)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文件)的读取和对于学生信息修改或者删除之后的保存功能。因此添加了两个控件按钮来实现,在点击按钮后,弹出读取(或保存)文件的所在位置,添加文件后,系统完成对成绩的读取(或保存)功能。没有选中文件时,提示“没有选择文件”。设计界面如下:4.1.2.1打开成绩文件的按钮的设计程序:%---Executesonbuttonpressinpushbutton1.functionpushbutton1_Callback(hObject,eventdata,handles)%hObjecthandletopushbutton1(seeGCBO)MATLAB课程设计第6页共18页%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)[filename,pathname]=uigetfile({'*.xls';'*.*'},'打开成绩文件');ifisequal(filename,0)|isequal(pathname,0)errordlg('没有选择文件','出错');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);handles.chengji=chengji;handles.xuehao=xuehao;handles.xingming=xingming;guidata(hObject,handles);End读取文件里面的信息,保存为数组的形式,分别给成绩、姓名、学号数组赋值,并设置三个list显示全部学生的信息,并保存这些数据到全局变量handles里面。4.1.2.2保存文件按钮设计程序:%---Executesonbuttonpressinbaocunbutton.functionbaocunbutton_Callback(hObject,eventdata,handles)%hObjecthandletobaocunbutton(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)[filename,pathname]=uigetfile({'*.xls';'*.*'},'打开成绩文件');ifisequal(filename,0)|isequal(pathname,0)errordlg('没有选择文件','出错');returnelseMATLAB课程设计第7页共18页str=[pathname,filename];xingming=handles.xingming;chengji=handles.chengji;xuehao=handles.xuehao;oldcount=handles.count;[row,co]=size(chengji);col=co+1;ifrowoldcountM=cell(oldcount,col);elseM=cell(row,col);endM(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的大小,根据实际调节写入数组的大小,并保存新的数据的行数。4.1.3成绩管理模块:成绩管理模块需要完成的是对于学生的姓名、学号和成绩的显示(显示在上面的显示模块里面完成),以及修改学生信息的修改和添加新的学生信息。添加两个控件,控制学生信息的修改和添加。界面设计图如下:4.1.3.1修改按钮的程序设计:%---Executesonbuttonpressinpushbutton2.functionpushbutton2_Callback(hObject,eventdata,handles)%hObjecthandletopushbutton2(seeGCBO)MATLAB课程设计第8页共18页%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)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,
本文标题:Matlab课程设计报告
链接地址:https://www.777doc.com/doc-5468920 .html