您好,欢迎访问三七文档
当前位置:首页 > 财经/贸易 > 资产评估/会计 > 基于matlab的gui的excel成绩管理系统设计报告
控制系统仿真设计报告自动化专业综合设计报告设计题目:基于Matlab的成绩管理系统所在实验室:指导教师:学生姓名班级学号撰写时间:成绩评定:控制系统仿真设计报告一、设计要求:以某班某课成绩为研究对象,设计一个对话框,实现:1)。该课的最低分、最高分以及相对应的学号2)。该课程的平均分和均方差3)。将该课程成绩按照从大到小排列、显示相对应学号4)。绘制该课程学生成绩直方图(提示:学生成绩分几段,统计每段分数的人数,选择分数段中间数据,以此数据与人数为横、纵坐标,绘制直方图)实现方法:1、利用matlab语言指令编写程序和GUI设计对话框。2、直接利用matlab中的函数来求最低分、最高分、平均分、标准方差。二、设计内容(一)GUI图形设计1、建立GUI对象添加需要的控件,加入需要的按钮、菜单控件等。这次设计一共设计两个按钮和一个下拉菜单,下拉菜单共5个选项。2、修改控件属性,属性查看器提供了一系列属性,可以通过修改相应属性来改变控件。如下图为设计好的控件:控制系统仿真设计报告(二)编写m文件当建立GUI后,在执行或存储界面时,会产生一个M文件,单击M-fileEditor图标按钮来编写该GUI下每个对象的Cllback与一些初始设置。直接在各对象callback下输入当用户按下这个对象后所应该调用执行的操作所对应的程序代码即可。具体程序见附录。控制系统仿真设计报告三、设计实验结果使用matlab的max函数求最大值,显示出成绩和学号栏。使用matlab的min函数求最小值,显示成绩和学号。控制系统仿真设计报告使用matlab的mean函数求平均数,并显示平均数。使用matlab的std函数求标准方差,并显示。控制系统仿真设计报告使用matlab的sort函数排序,并显示学号,成绩,排名。将学生成绩分成5部分,60以下,60-70、70-80、80-90、90-100,求出每段人数并用bar函数画出成绩直方图。控制系统仿真设计报告四、结论这次设计将matlab图形用户界面应用于学生成绩系统这个实际问题中,实现了成绩的查询与管理。MatlabGUI可视化得人机交互式环境使成绩查询系统更能直观的向用户显示,避免了用户再进行复杂的数学运算以及程序编程。系统的实用性强、界面操作简单,用户很容易上手。本次设计制作的成绩查询管理系统,使用用户可以直观的了解班级成绩的最高分、最低分、平均分、方差、以及班级排名和成绩的分布情况。界面操作简单,显示结果直观。五、设计感受通过完成计算机仿真实验完成成绩查询管理系统对话框,再次复习熟悉了matlab的编程方法,第一次GUI设计的对话框的具体应用,加深了对matlab知识的运用,以前学习控制系统仿真就感受到了Matlab强大的数学计算能力,这次设计GUI的设计感受到了其与VB可视化编程的异曲同工之妙,而Matlab优于VB以及其他编程工具的地方是其强大的数学计算能力以及完善的工具箱,使其设计数学计算方面程序的编写及其简洁,如果以后有机会一定再好好研究下Matlab。感谢老师在这一周的悉心指导。控制系统仿真设计报告附录:%有关GUI的函数调用声明functionvarargout=untitled1(varargin)gui_Singleton=1;gui_State=struct('gui_Name',mfilename,...'gui_Singleton',gui_Singleton,...'gui_OpeningFcn',@untitled1_OpeningFcn,...'gui_OutputFcn',@untitled1_OutputFcn,...'gui_LayoutFcn',[],...'gui_Callback',[]);ifnargin&&ischar(varargin{1})gui_State.gui_Callback=str2func(varargin{1});endifnargout[varargout{1:nargout}]=gui_mainfcn(gui_State,varargin{:});elsegui_mainfcn(gui_State,varargin{:});end%handlesstructure是保存着GUI各个控件用到的所有数据的数据结构,这是取数据函数functionuntitled1_OpeningFcn(hObject,eventdata,handles,varargin)%全局数据文件globaldat;%打开文件夹路径对话框,显示xls后缀的文件,等待选中[filename,pathname]=uigetfile('*.xls');file=[pathname,filename];%打开存有成绩的excel文件dat=xlsread('data.xls','','')%将成绩数据存到handle结构里handles.chengji=dathandles.output=hObject;%保存已经改动的数据结构,这样才能在callbacks动作响应中使用guidata(hObject,handles);控制系统仿真设计报告%“确认”按钮的callback动作,根据下拉框的value值利用case语句实现functionpushbutton1_Callback(hObject,eventdata,handles)%获取下拉框value值popup_sel_indexpopup_sel_index=get(handles.popupmenu1,'Value');%将成绩数据从handle中提取出来到二维数组chengji中去ss=num2str(handles.chengji)chengji=str2num(ss)%提取成绩数组中1--30号的成绩到一维数组s中去forn=1:30s(n)=chengji(n,2)end%s行向量变成列向量as,便于显示as=dsort(s);%处理成绩数据进行排名fori=1:30forj=1:30ifas(i)==s(j);bb(i)=j;endendendfori=1:29kk=i+1;ifas(i)==as(kk)k=bb(i)-1;fort=1:kifas(i)==s(t)bb(kk)=t;endendendend%获取最大值、最小值、平均值、标准差mi=min(s);ma=max(s);mea=mean(s);fc=std(s);fori=1:30%获取最大值对应的学号ifmi==s(i)mii=i;elseifma==s(i)%获取最小值对应的学号maa=i;end控制系统仿真设计报告endset(handles.text6,'String','');switchpopup_sel_indexcase1%显示最大值及其学号set(handles.text5,'String',ma);set(handles.text4,'String',maa);case2%显示最小值及其学号set(handles.text5,'String',mi);set(handles.text4,'String',mii);case3%显示平均值set(handles.text4,'String','');set(handles.text5,'String',mea);case4%显示标准差set(handles.text4,'String','');set(handles.text5,'String',fc);case5%显示成绩排名set(handles.text5,'String',as);set(handles.text4,'String',bb);cc=1:30;set(handles.text6,'String',cc);end%绘制直方图按钮的callback函数functionpushbutton2_Callback(hObject,eventdata,handles)axes(handles.axes1);cla;ss=num2str(handles.chengji)chengji=str2num(ss)forn=1:30s(n)=chengji(n,2)endaa=[00000];%为直方图的绘制进行数据累加fori=1:30ifs(i)60aa(1)=aa(1)+1;控制系统仿真设计报告elseifs(i)70aa(2)=aa(2)+1;elseifs(i)80aa(3)=aa(3)+1;elseifs(i)90aa(4)=aa(4)+1;elseaa(5)=aa(5)+1;endendx=[5065758595];%绘制直方图函数bar(x,aa);
本文标题:基于matlab的gui的excel成绩管理系统设计报告
链接地址:https://www.777doc.com/doc-7353149 .html