matlab GUI学生成绩管理系统.docx

上传人:b****6 文档编号:14168926 上传时间:2023-06-21 格式:DOCX 页数:16 大小:587.55KB
下载 相关 举报
matlab GUI学生成绩管理系统.docx_第1页
第1页 / 共16页
matlab GUI学生成绩管理系统.docx_第2页
第2页 / 共16页
matlab GUI学生成绩管理系统.docx_第3页
第3页 / 共16页
matlab GUI学生成绩管理系统.docx_第4页
第4页 / 共16页
matlab GUI学生成绩管理系统.docx_第5页
第5页 / 共16页
matlab GUI学生成绩管理系统.docx_第6页
第6页 / 共16页
matlab GUI学生成绩管理系统.docx_第7页
第7页 / 共16页
matlab GUI学生成绩管理系统.docx_第8页
第8页 / 共16页
matlab GUI学生成绩管理系统.docx_第9页
第9页 / 共16页
matlab GUI学生成绩管理系统.docx_第10页
第10页 / 共16页
matlab GUI学生成绩管理系统.docx_第11页
第11页 / 共16页
matlab GUI学生成绩管理系统.docx_第12页
第12页 / 共16页
matlab GUI学生成绩管理系统.docx_第13页
第13页 / 共16页
matlab GUI学生成绩管理系统.docx_第14页
第14页 / 共16页
matlab GUI学生成绩管理系统.docx_第15页
第15页 / 共16页
matlab GUI学生成绩管理系统.docx_第16页
第16页 / 共16页
亲,该文档总共16页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

matlab GUI学生成绩管理系统.docx

《matlab GUI学生成绩管理系统.docx》由会员分享,可在线阅读,更多相关《matlab GUI学生成绩管理系统.docx(16页珍藏版)》请在冰点文库上搜索。

matlab GUI学生成绩管理系统.docx

matlabGUI学生成绩管理系统

 

邮电大学

 

MATLAB及其EDA仿真

课实验报告

 

院(系)名称

电子工程学院

学生姓名

专业名称

集成电路设计与集成系统

班级

1202班

时间

2013年12月20日

一、实验容

建立基于图形用户界面GUI的学生成绩管理系统,该系统能够实现学生成绩信息的增加、删除、查询(查询某门课所有学生的成绩并显示排名,查询某个学生的各科成绩并显示排名)、课程成绩统计最高分、最低分、平均分、方差、并显示相应的排名;绘制柱状图、条形图、饼状图、正太分布曲线等功能。

二、实验目的

通过本实验使学生掌握图形用户界面GUI的操作和设计流程,并通过编写回调函数巩固前期的知识。

三、报告正文

(一)设计思路

(二)设计步骤与设计容

1.启动GUI,命令窗口中输入guide

2.放置控件。

先放置一个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.

4.保存.fig文件

5.编写.m文件,这部分要详细叙述每个子函数的编写思路,每条语句后面要给出注释说明该语句的功能;只需要附上自己编写的回调函数部分,其他系统自动生成的不需要放入报告中。

读取数据思路:

从表格中读取数据的对应行赋给对应的句柄

[grade,form]=xlsread('student.xlsx');%从EXCEL表格读取数据

handles.fenshu=grade;%所有成绩

handles.major=grade(:

1);%专业课成绩

handles.english=grade(:

2);%英语成绩

handles.math=grade(:

3);%数学成绩i

handles.physical=grade(:

4);%体育成绩

handles.physics=grade(:

5);%物理成绩

handles.name=form(2:

end,1);%姓名

handles.num=form(2:

end,2);%学号

%ChoosedefaultcommandlineoutputforGUI

handles.output=hObject;

%Updatehandlesstructure

guidata(hObject,handles);

显示单科成绩及对应学生的姓名学号和排名思路:

利用下拉菜单,获取value值,用case语句判断,当选中下拉菜单的某项时,把该项对应的成绩,姓名,学号,排名的值送给对应listbox显示。

val=get(hObject,'value');%获取下拉菜单控件的value值

switchval;

case2%选中下拉菜单的第二项

set(handles.grade,'String',handles.major)%将选中的成绩给listbox.grade

set(handles.xingming,'String',handles.name)%将选中的学生姓名给listbox.xingming

set(handles.xuehao,'String',handles.num)%将选中的学生学号给listbox.xuehao

handles.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的最大值置换为0

d(b,1)=i;%矩阵d存储成绩的排名

end

handles.d=d;%把排名给一个新的变量

set(handles.paiming,'String',d);%使排名显示

case3

set(handles.grade,'String',handles.english)%将选中的成绩给listbox.grade

set(handles.xingming,'String',handles.name)%将选中的学生姓名给listbox.xingming

set(handles.xuehao,'String',handles.num)%将选中的学生学号给listbox.xuehao

handles.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的最大值置换为0

d(b,1)=i;%矩阵d存储成绩的排名

end

handles.d=d;%把排名给一个新的变量

set(handles.paiming,'String',d);

case4

set(handles.grade,'String',handles.math)%将选中的成绩给listbox.grade

set(handles.xingming,'String',handles.name)%将选中的学生姓名给listbox.xingming

set(handles.xuehao,'String',handles.num)%将选中的学生学号给listbox.xuehao

handles.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的最大值置换为0

d(b,1)=i;%矩阵d存储成绩的排名

end

handles.d=d;

set(handles.paiming,'String',d);%显示math成绩排名

case5

set(handles.grade,'String',handles.physical)%将选中的成绩给listbox.grade

set(handles.xingming,'String',handles.name)%将选中的学生姓名给listbox.xuehao

set(handles.xuehao,'String',handles.num)%将选中的学生学号给listbox.xuehao

handles.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的最大值置换为0

d(b,1)=i;%矩阵d存储成绩的排名

end

handles.d=d;

set(handles.paiming,'String',d);%显示physical成绩排名

case6

set(handles.grade,'String',handles.physics)%将选中的成绩给listbox.grade

set(handles.xingming,'String',handles.name)%将选中的学生姓名给listbox.xingming

set(handles.xuehao,'String',handles.num)%将选中的学生学号给listbox.xuehao

handles.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的最大值置换为0

d(b,1)=i;%矩阵d存储成绩的排名

end

handles.d=d;%ѧÉúÅÅÃû±äÁ¿

set(handles.paiming,'String',d);%显示physics成绩排名

case7

A=[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;%把总成绩的最大值置换为0

d(b,1)=i;%矩阵d存储总成绩的排名

end

handles.d=d;

set(handles.paiming,'String',d);%显示总成绩排名

end

guidata(hObject,handles);

统计分数菜单模块

思路:

利用下拉菜单,获取value值,判断value值,调用对应的函数(求平均值、最大值、最小值、方差函数)。

val=get(hObject,'Value');

switchval

case2

[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);%获取当前选中成绩的最大值

set(handles.grade,'String',x);%显示最低成绩

set(handles.xingming,'String',handles.name(y));%显示对应的姓名

set(handles.xuehao,'String',handles.num(y));%显示对应的学号

set(handles.paiming,'String',[]);%不显示排名

case4

middle=mean(handles.select);%获取当前选中成绩的平均值

set(handles.grade,'String',middle);%显示平均成绩

set(handles.xingming,'String',[]);%不显示姓名

set(handles.xuehao,'String',[]);%不显示学号

set(handles.paiming,'String',[]);%不显示排名

case5

Var=var(handles.select);%获取当前选中成绩的方差

set(handles.grade,'String',Var);%显示方差

set(handles.xingming,'String',[]);%不显示姓名

set(handles.xuehao,'String',[]);%不显示学号

set(handles.paiming,'String',[]);%不显示排名

end

功能菜单模块(添加、删除、查询)

添加思路:

判断数据的长度,将此长度记为n,然后在地n+1行写入新的数据;

删除思路:

用strcmp比较输入学生的姓名和已有的姓名,用find函数记录该比较的值,给需要删除的学生信息赋为空值,即可实现删除功能;

查询思路:

用strcmp比较输入学生的姓名和已有的姓名,用find函数记录该比较的值,将查询的学生信息显示在listbox。

绘图菜单模块思路:

获取下拉菜单的value,判断value值,调用对应的绘图函数(case2

hist(handles.select);%绘制柱状图

case3

bar(handles.select);%绘制条形图

case4

histfit(handles.select,6);%绘制正太分布曲线

case5

pie(handles.select);%绘制饼状图)

6.运行结果,包括GUI的初始化界面、查询界面、删除功能、统计功能等,可以用图片形式展现;

初始界面

查询界面

删除功能

统计功能

(三)问题与心得体会

1总结实验中遇到的问题及解决方法;

问题一:

如何实现增加学生信息功能。

解决方法:

询问老师(用length函数判断数据的长度,在n+1行写入新的信息)。

问题二:

成绩排名函数不能实现排名功能。

解决方法:

询问老师(应该把循环变量i赋给排名变量,而不是成绩最大值的位置)。

问题三:

怎样实现查询信息功能

解决方法:

询问老师(用strcmp函数比较输入的信息和已有信息,将结果给一个变量i,用find函数寻找i==1的位置,将该位置学生的信息显示出来即可实现查询功能)。

问题四:

清空excel表格数据后写入信息不能实现。

解决方法:

用help命令查询xlswrite函数使用语法,可能因为matlab软件版本的原因导致实验指导书上的xlswrite命令不能实现,使用help查询的xlswrite命令书写个时候实现想excel表格写入信息。

问题五:

调用绘图函数不能实现绘图。

解决方法:

把坐标设置为当前坐标。

2学生成绩管理系统的哪些功能没有实现;

实现了所有的功能

3撰写进行该次实验后的心得体会,学到了什么。

通过完成基于matlabGUI的学生成绩管理,再次复习熟悉了matlab的编程方法,第一次GUI设计的对话框的具体应用,加深了对matlab知识的运用,以前学习matlab仿真就感受到了Matlab强大的数学计算能力,这次设计GUI的设计感受到了其与VB可视化编程的异曲同工之妙,而Matlab优于VB以及其他编程工具的地方是其强大的数学计算能力以及完善的工具箱,使其设计数学计算方面程序的编写及其简洁,如果以后有机会一定再好好研究下Matlab。

感谢老师在这段时间的悉心指导。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2