您好,欢迎访问三七文档
当前位置:首页 > 财经/贸易 > 资产评估/会计 > matlab-GUI--学生成绩管理系统
精心整理精心整理西安邮电大学MATLAB及其EDA仿真课内实验报告院(系)名称:电子工程学院学生姓名:李豪专业名称:集成电路设计与集成系统班级:1202班时间:2013年12月20日一、实验内容建立基于图形用户界面GUI的学生成绩管理系统,该系统能够实现学生成绩信息的增加、删除、查询(查询某门课所有学生的成绩并显示排名,查询某个学生的各科成绩并显示排名)、课程成绩统计最高分、最低分、平均分、方差、并显示相应的排名;绘制柱状图、条形图、饼状图、正太分布曲线等功能。二、实验目的通过本实验使学生掌握图形用户界面GUI的操作和设计流程,并通过编写回调函数巩固前期的知识。三、报告正文(一)设计思路精心整理精心整理(二)设计步骤与设计内容1.启动GUI,命令窗口中输入guide2.放置控件。先放置一个EditText,tag名称设为edit14,颜色设置为灰色,String设置为‘学生成绩管理系统’,该控件的功能是显示该GUI的功能;姓名学号成绩排名显示模块学生成绩管理系统界面菜单模块显示模块绘图模块单科成绩统计成绩功能菜单绘图菜单菜单模块精心整理精心整理再放置五个EditText,tag名称分别设为edit1、edit2、edit3、edit4、edit13,颜色均设置为淡蓝色,String分别设置为‘姓名’、‘学号’、‘成绩\其他’、‘排名’、‘成绩类型’,这些控件的功能作为下面listbox的标题;再放置四个listbox,tag名称分别设为xingming、xuehao、grade、paiming,颜色均设置淡蓝色,String设置为‘’,这些该控件的功能是分别显示对应学生的姓名、学号、成绩、排名;再放置五个EditText,tag名称分别设为edit7、edit8、edit9、edit10、edit11,颜色均设置为淡蓝色,String分别设置为’专业‘,‘数学’,‘英语’,‘体育’‘物理’,该控件的功能是显示个人对应的科目;再放置一个Axes,tag名称设为axes1,颜色设置为灰色,该控件的功能是显示绘制的图;3.保存.fig文件4.编写.m文件,这部分要详细叙述每个子函数的编写思路,每条语句后面要给出注释说明该语句的功能;只需要附上自己编写的回调函数部分,其他系统自动生成的不需要放入报告中。读取数据思路:从表格中读取数据的对应行赋给对应的句柄[grade,form]=xlsread('student.xlsx');%从EXCEL表格读取数据handles.fenshu=grade;%所有成绩handles.major=grade(:,1);%专业课成绩handles.english=grade(:,2);%英语成绩handles.math=grade(:,3);%数学成绩ihandles.physical=grade(:,4);%体育成绩handles.physics=grade(:,5);%物理成绩handles.name=form(2:end,1);%姓名handles.num=form(2:end,2);%学号%ChoosedefaultcommandlineoutputforGUIhandles.output=hObject;%Updatehandlesstructureguidata(hObject,handles);显示单科成绩及对应学生的姓名学号和排名思路:利用下拉菜单,获取value值,用case语句判断,当选中下拉菜单的某项时,把该项对应的成绩,姓名,学号,排名的值送给对应listbox显示。val=get(hObject,'value');%获取下拉菜单控件的value值switchval;case2%选中下拉菜单的第二项set(handles.grade,'String',handles.major)%将选中的成绩给listbox.gradeset(handles.xingming,'String',handles.name)%将选中的学生姓名给listbox.xingmingset(handles.xuehao,'String',handles.num)%将选中的学生学号给listbox.xuehaohandles.select=handles.major;%将选中的成绩赋给一个变量guidata(hObject,handles);%更新句柄精心整理精心整理major=handles.major;n=length(major);%获取专业课成绩数据长度d=zeros(n,1);%创建一个n行一列的全零矩阵fori=1:n[a,b]=max(major);%获取major的最大值和位置major(b,1)=0;%把major的最大值置换为0d(b,1)=i;%矩阵d存储成绩的排名endhandles.d=d;%把排名给一个新的变量set(handles.paiming,'String',d);%使排名显示case3set(handles.grade,'String',handles.english)%将选中的成绩给listbox.gradeset(handles.xingming,'String',handles.name)%将选中的学生姓名给listbox.xingmingset(handles.xuehao,'String',handles.num)%将选中的学生学号给listbox.xuehaohandles.select=handles.english;%将选中的成绩赋给一个变量english=handles.english;n=length(english);%获取英语课成绩数据长度d=zeros(n,1);%创建一个n行一列的全零矩阵fori=1:n[a,b]=max(english);%获取english的最大值和位置english(b,1)=0;%把english的最大值置换为0d(b,1)=i;%矩阵d存储成绩的排名endhandles.d=d;%把排名给一个新的变量set(handles.paiming,'String',d);case4set(handles.grade,'String',handles.math)%将选中的成绩给listbox.gradeset(handles.xingming,'String',handles.name)%将选中的学生姓名给listbox.xingmingset(handles.xuehao,'String',handles.num)%将选中的学生学号给listbox.xuehaohandles.select=handles.math;%将选中的成绩赋给一个变量math=handles.math;n=length(math);%获取数学成绩数据长度d=zeros(n,1);%创建一个n行一列的全零矩阵fori=1:n[a,b]=max(math);%获取English的最大值和位置math(b,1)=0;%把math的最大值置换为0d(b,1)=i;%矩阵d存储成绩的排名endhandles.d=d;set(handles.paiming,'String',d);%显示math成绩排名case5set(handles.grade,'String',handles.physical)%将选中的成绩给listbox.gradeset(handles.xingming,'String',handles.name)%将选中的学生姓名给listbox.xuehaoset(handles.xuehao,'String',handles.num)%将选中的学生学号给listbox.xuehaohandles.select=handles.physical;%将选中的成绩赋给一个变量精心整理精心整理physical=handles.physical;n=length(physical);%获取物理成绩数据长度d=zeros(n,1);%创建一个n行一列的全零矩阵fori=1:n[a,b]=max(physical);%获取physical的最大值和位置physical(b,1)=0;%把math的最大值置换为0d(b,1)=i;%矩阵d存储成绩的排名endhandles.d=d;set(handles.paiming,'String',d);%显示physical成绩排名case6set(handles.grade,'String',handles.physics)%将选中的成绩给listbox.gradeset(handles.xingming,'String',handles.name)%将选中的学生姓名给listbox.xingmingset(handles.xuehao,'String',handles.num)%将选中的学生学号给listbox.xuehaohandles.select=handles.physics;%将选中的成绩赋给一个变量physics=handles.physics;n=length(physics);%获取physics成绩数据长度%d=zeros(n,1);%创建一个n行一列的全零矩阵fori=1:n[a,b]=max(physics);%获取physics的最大值和位置physics(b,1)=0;%把physics的最大值置换为0d(b,1)=i;%矩阵d存储成绩的排名endhandles.d=d;%?§éú????±?á?set(handles.paiming,'String',d);%显示physics成绩排名case7A=[handles.major';handles.english';handles.math';handles.physical';handles.physics';];在A中储存各科成绩grade=sum(A);%对各科成绩求和sum_grade=grade';%转置set(handles.grade,'String',sum_grade)%显示总成绩set(handles.xingming,'String',handles.name)%显示姓名set(handles.xuehao,'String',handles.num)%显示学号handles.select=sum_grade;%把总成绩给一个变量handles.all_grade=sum_grade;%-------------------------给总成绩排名------------------------------n=length(sum_grade);%获取总成绩数据长度%%d=zeros(n,1);%创建一个n行一列的全零矩阵fori=1:n[a,b]=max(sum_grade);%获取总成绩的最大值和位置%sum_grade(b,1)=0;%把总成绩的最大值置换为0d(b,1)=i;%矩阵d存储总成绩的排名endhandles.d=d;精心整理精心整理set(handles.paiming,'String',d);%显示总成绩排名endguidata(hObject,handles);统计分数菜单模块思路:利用下拉菜单,获取value值,判断value值,调用对应的函数(求平均值、最大值、最小值、方差函数)。val=get(hObject,'Value');switchvalcase2[x,y]=max(handles.select);%获取当前选中成绩的最大值set(handles.grade,'String',x);%显示最高成绩set(handles.xingming,'String',handles.name(y));%显示对应的姓名set(handles.xuehao,'String',handles.num(y));%显示对应的学号set(handles.paiming,'String',[]);%不显示排名case3[x,y]=min(handles.select);%获取当前选中成绩的最大
本文标题:matlab-GUI--学生成绩管理系统
链接地址:https://www.777doc.com/doc-6573455 .html