1MATLAB课程结业报告题目:学生成绩查询系统专业:电子信息科学技术班级:0313411学号:031341123姓名:王文通指导老师:刘嵩时间:2015年6月15日2目录一.设计功能简介....................3二.建立GUI及布置控件..............4三.各个控件子程序设计..............5四.课程设计总结...................12五、设计感受......................12六、附录..........................133一、设计要求:以某班某人成绩为研究对象,设计一个GUI仿真系统,实现:1)显示该班所有人姓名及相对应的学号2)可以查询每人该课程的分数3)能统计该门课程优秀、良好、中等、不及格的人数4)能关闭该程序实现方法:1、利用matlab语言指令编写程序和GUI设计对话框。2、利用matlab函数实现数据的统计4二、设计内容(一)GUI图形设计1、建立GUI对象添加需要的控件,加入需要的按钮、菜单控件等。这次设计一共设计两个按钮和一个下拉菜单,下拉菜单共5个选项。2、修改控件属性,属性查看器提供了一系列属性,可以通过修改相应属性来改变控件。如下图为设计好的控件:5(二)编写m文件当建立GUI后,在执行或存储界面时,会产生一个M文件,单击M-fileEditor图标按钮来编写该GUI下每个对象的Cllback与一些初始设置。直接在各对象callback下输入当用户按下这个对象后所应该调用执行的操作所对应的程序代码即可。三、设计实验结果1、载入TXT文件,使系统读入数据程序如下:functionpushbutton1_Callback(hObject,eventdata,handles)[filenamepathname]=uigetfile({'*.txt'},'请选择所要输入的文件');fin=[pathnamefilename];[nameIDchengji]=textread(fin,'%s%s%f','delimiter','');handles.name=name;handles.ID=ID;handles.chengji=chengji;a=strcat(handles.name,'的学号是');b=strcat(a,handles.ID);6set(handles.edit2,'string',b);guidata(hObject,handles);72、系统实现查询成绩功能程序如下:a=get(handles.edit1,'string');i=length(handles.name);forj=1:iif(strcmp(handles.name(j),a))set(handles.edit2,'string','');b=strcat('该学生成绩为:',num2str(handles.chengji(j)));8set(handles.edit2,'string',b);endendguidata(hObject,handles);93、系统实现统计功能程序如下:c1=0;c2=0;c3=0;c4=0;c5=0;i=length(handles.chengji);forj=1:iif(handles.chengji(j)=90)c1=c1+1;elseif((handles.chengji(j)=80)&&(handles.chengji(j)90)c2=c2+1;elseif((handles.chengji(j)=70)&&(handles.chengji(j)80))c3=c3+1;elseif((handles.chengji(j)=60)&&(handles.chengji(j)70))c4=c4+1;elseif(handles.chengji(j)60)c5=c5+1;endenda=num2str(c1);b=num2str(c2);c=num2str(c3);d=num2str(c4);10e=num2str(c5);t1=strcat('优秀(90=score)人数有:',a);t2=strcat('良好(80=score90)人数有:',b);t3=strcat('中等(70=score80)人数有:',c);t4=strcat('及格(60=score70)人数有:',d);t5=strcat('不及格(score60)人数有:',e);t=strvcat(t1,t2,t3,t4,t5);set(handles.edit3,'string',t);guidata(hObject,handles);114、关闭程序功能程序如下:functionpushbutton4_Callback(hObject,eventdata,handles)%hObjecthandletopushbutton4(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)close;12四、结论这次设计将matlab图形用户界面应用于学生成绩系统这个实际问题中,实现了成绩的查询与管理。MatlabGUI可视化得人机交互式环境使成绩查询系统更能直观的向用户显示,避免了用户再进行复杂的数学运算以及程序编程。系统的实用性强、界面操作简单,用户很容易上手。本次设计制作的成绩查询管理系统,使用用户可以直观的了解班级成绩的分布情况及班及所有人的成绩。界面操作简单,显示结果直观。五、设计感受通过完成计算机仿真实验完成成绩查询管理系统对话框,再次复习熟悉了matlab的编程方法,第一次GUI设计的对话框的具体应用,加深了对matlab知识的运用,以前学习控制系统仿真就感受到了Matlab强大的数学计算能力,这次设计GUI的设计感受到Matlab优于c++以及其他编程工具的地方是其强大的数学计算能力以及完善的工13具箱,使其设计数学计算方面程序的编写及其简洁,如果以后有机会一定再好好研究下Matlab。14附录:functionvarargout=chengji2(varargin)%CHENGJI2M-fileforchengji2.fig%CHENGJI2,byitself,createsanewCHENGJI2orraisestheexisting%singleton*.%%H=CHENGJI2returnsthehandletoanewCHENGJI2orthehandleto%theexistingsingleton*.%%CHENGJI2('CALLBACK',hObject,eventData,handles,...)callsthelocal%functionnamedCALLBACKinCHENGJI2.Mwiththegiveninputarguments.%%CHENGJI2('Property','Value',...)createsanewCHENGJI2orraisesthe%existingsingleton*.Startingfromtheleft,propertyvaluepairsare%appliedtotheGUIbeforechengji2_OpeningFunctiongetscalled.An%unrecognizedpropertynameorinvalidvaluemakespropertyapplication%stop.Allinputsarepassedtochengji2_OpeningFcnviavarargin.%%*SeeGUIOptionsonGUIDE'sToolsmenu.ChooseGUIallowsonlyone%instancetorun(singleton).%%Seealso:GUIDE,GUIDATA,GUIHANDLES%Edittheabovetexttomodifytheresponsetohelpchengji2%LastModifiedbyGUIDEv2.513-May-201021:58:39%Begininitializationcode-DONOTEDITgui_Singleton=1;gui_State=struct('gui_Name',mfilename,...'gui_Singleton',gui_Singleton,...'gui_OpeningFcn',@chengji2_OpeningFcn,...'gui_OutputFcn',@chengji2_OutputFcn,...'gui_LayoutFcn',[],...'gui_Callback',[]);ifnargin&&ischar(varargin{1})gui_State.gui_Callback=str2func(varargin{1});15endifnargout[varargout{1:nargout}]=gui_mainfcn(gui_State,varargin{:});elsegui_mainfcn(gui_State,varargin{:});end%Endinitializationcode-DONOTEDIT%---Executesjustbeforechengji2ismadevisible.functionchengji2_OpeningFcn(hObject,eventdata,handles,varargin)%Thisfunctionhasnooutputargs,seeOutputFcn.%hObjecthandletofigure%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)%varargincommandlineargumentstochengji2(seeVARARGIN)%Choosedefaultcommandlineoutputforchengji2handles.output=hObject;%Updatehandlesstructureguidata(hObject,handles);%UIWAITmakeschengji2waitforuserresponse(seeUIRESUME)%uiwait(handles.figure1);%---Outputsfromthisfunctionarereturnedtothecommandline.functionvarargout=chengji2_OutputFcn(hObject,eventdata,handles)%varargoutcellarrayforreturningoutputargs(seeVARARGOUT);%hObjecthandletofigure%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)%Getdefaultcommandlineoutputfromhandlesstructurevarargout{1}=handles.output;functionedit1_Callback(hObject,eventdata,handles)%hObjecthandletoedit1(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)1