程序 4:您将使用 GUI 在此程序中收集输入并显示输出。不要使用input()
或fprintf()
.
1 使用listdlg()
您将要求用户选择班级注册的学生人数。为简单起见,该列表将仅包括从 1 到 5 的数字。确保只允许用户选择一个(见图 1)。还要考虑用户在两个框中的任何一个中单击取消的情况。(您需要显示一句msgbox()
请进行选择,然后listdlg()
会再次出现)。
2 然后您将显示inputdlg()
(见图2)与选择的学生数量一样多listdlg()
(即如果用户选择了四个学生注册,那么inputdlg()
将出现四次以收集每个学生的信息)。现在这里有两个重要的约束:首先,您需要使用一个inputdlg()
带有 for 循环的约束;其次,您需要将输入的所有信息保存在一个名为“成绩簿”的 CELL ARRAY 中。
3 计算每个学生的平均成绩,并msgbox()
显示平均成绩最高的学生的姓名和她/他的平均成绩。(参见下面的示例图 3ow)。请注意,在用户首先单击“确定”之前,不应开始第 4 步msgbox()
。
4 然后使用questdlg()
,(见图 4),您将询问用户是否要再次使用该程序。如果他们说是,则程序将重新启动,如果他们说否,则程序终止,如果单击取消,则msgbox()
上一步中的将重新出现。
如何计算平均值,然后显示学生姓名?
先感谢您!:)
这就是我得到的:
clc
clear
ns = {'One','Two','Three','Four','Five'};
[selection ok] = listdlg('liststring',ns,'selectionmode','single');
while ok == 0
msgbox('Please make a selection')
[selection ok] = listdlg('liststring',ns,'selectionmode','single');
end
gradebook = {1,selection};
avematrix = [2,selection];
for d = 1:selection
sinfo = {'Enter student name','Numerical grade for 1st exam (out of 100):',...
'Numerical grade for 2nd exam (out of 100):','Numerical grade for 3rd exam (out of 100):'};
info = inputdlg(sinfo);
gradebook(1,d) = {info};
name = info {1}
a=str2double(info{2});
b=str2double(info{3});
c=str2double(info{4});
average = ((a+b+c)/3);
avematrix(2,d) = average;
g = mean(info)
end