M=cell(oldcount,col);
else
M=cell(row,col);
end
M(1:
row,1)=xingming;
M(1:
row,2)=num2cell(xuehao);
M(1:
row,3:
col+1)=num2cell(chengji);
xlswrite(str,M,1,'A2');
handles.count=row;
guidata(hObject,row);
End
将新获取的数据保存到M数组里面,调出原本数组的行数count,比较新获得的数组的行数和原来行数count的大小,根据实际调节写入数组的大小,并保存新的数据的行数。
成绩管理模块需要完成的是对于学生的姓名、学号和成绩的显示(显示在上面的显示模块里面完成),以及修改学生信息的修改和添加新的学生信息。
添加两个控件,控制学生信息的修改和添加。
界面设计图如下:
%---Executesonbuttonpressinpushbutton2.
functionpushbutton2_Callback(hObject,eventdata,handles)
%hObjecthandletopushbutton2(seeGCBO)
%eventdatareserved-tobedefinedinafutureversionofMATLAB
%handlesstructurewithhandlesanduserdata(seeGUIDATA)
content=get(handles.xmlist,'value');
xingming=handles.xingming;
chengji=handles.chengji;
xuehao=handles.xuehao;
newname=get(handles.lredit1,'string');
shuxue=str2num(get(handles.lredit2,'string'));
yuwen=str2num(get(handles.lredit3,'string'));
newxuehao=str2num(get(handles.lredit4,'string'));
xingming(content)=newname;
chengji(content,:
)=[shuxue,yuwen];
xuehao(content)=newxuehao;
set(handles.xmlist,'string',xingming);
set(handles.chengjilist,'string',num2str(chengji));
set(handles.xhlist,'string',num2str(xuehao));
handles.xuehao=xuehao;
handles.xingming=xingming;
handles.chengji=chengji;
guidata(hObject,handles);
获取输入的数据,调出原来的成绩、学号和姓名数组,根据新修改的信息,修改原本的三个数据的数值,并保存到全局变量handles里面。
%---Executesonbuttonpressintianjiabutton.
functiontianjiabutton_Callback(hObject,eventdata,handles)
%hObjecthandletotianjiabutton(seeGCBO)
%eventdatareserved-tobedefinedinafutureversionofMATLAB
%handlesstructurewithhandlesanduserdata(seeGUIDATA)
newname=get(handles.lredit1,'string');
shuxue=str2num(get(handles.lredit2,'string'));
yuwen=str2num(get(handles.lredit3,'string'));
newxuehao=str2num(get(handles.lredit4,'string'));
handles.xingming=[handles.xingming;newname];
handles.chengji=[handles.chengji;shuxue,yuwen];
handles.xuehao=[handles.xuehao;newxuehao];
guidata(hObject,handles);
set(handles.xmlist,'string',handles.xingming);
set(handles.xhlist,'string',num2str(handles.xuehao));
set(handles.chengjilist,'string',num2str(handles.chengji));
获取输入的数据,调出原来的成绩、学号和姓名数组,根据新添加的信息,修改原本的三个数据的数值,并保存到全局变量handles里面。
4.1.4查询管理模块:
本模块需要完成的是通过查询学生姓名或者学号,让成绩管理里面可以显示该学生的基本信息并可以通过删除按钮删除该生的信息,没有查询到该生的信息,即提示“没有找到”。
通过平均分查询按钮来查询各科的平均分成绩。
通过查询学生姓名,找到学生的总分并显示。
基本设计模块如下图:
%---Executesonbuttonpressinshanchubutton.
functionshanchubutton_Callback(hObject,eventdata,handles)
%hObjecthandletoshanchubutton(seeGCBO)
%eventdatareserved-tobedefinedinafutureversionofMATLAB
%handlesstructurewithhandlesanduserdata(seeGUIDATA)
name=get(handles.xmedit,'string');
[lia,id]=ismember(name,handles.xingming);
iflia
xingming=handles.xingming;
chengji=handles.chengji;
xuehao=handles.xuehao;
xingming(id)=[];
xuehao(id)=[];
chengji(id,:
)=[];
handles.chengji=chengji;
handles.xuehao=xuehao;
handles.xingming=xingming;
guidata(hObject,handles);
set(handles.xmlist,'string',xingming);
set(handles.chengjilist,'string',num2str(chengji));
set(handles.xhlist,'string',num2str(xuehao));
set(handles.xmlist,'value',1);
set(handles.xhlist,'value',1);
set(handles.chengjilist,'value',1);
Else
查询时候有这个名字在保存的名字(或学号)的数组里面,调出姓名、学号和成绩数组,获取需要删除的学生在数组里面保存在第几个的位置,将数组里面的这儿位置清空,设置三个list的显示高亮位置回到第一行,同时更新handles里面的三个数组存放。
%---Executesonbuttonpressinchaxunbutton.
functionchaxunbutton_Callback(hObject,eventdata,handles)
%hObjecthandletochaxunbutton(seeGCBO)
%eventdatareserved-tobedefinedinafutureversionofMATLAB
%handlesstructurewithhandlesanduserdata(seeGUIDATA)
name=get(handles.xmedit,'string');
[lia,id]=ismember(name,handles.xingming);
iflia
set(handles.xmlist,'value',id);
set(handles.xhlist,'value',id);
set(handles.chengjilist,'value',id);
xingming=handles.xingming;
chengji=handles.chengji;
xuehao=handles.xuehao;
set(handles.lredit1,'string',xingming(id));
set(handles.lredit2,'string',chengji(id,1));
set(handles.lredit3,'string',chengji(id,2));
set(handles.lredit4,'string',xuehao(id));
else
msgbox('没有找到');
end
查询是否有这个名字在保存的名字的数组里面,获取需要删除的名字在保存的数组里面是第几个的,获取三个数组,设置三个list里面这个学生的信息为高亮,并显示在成绩管理里面。
%---Executesonbuttonpressinpushbutton9.
functionpushbutton9_Callback(hObject,eventdata,handles)
%hObjecthandletopushbutton9(seeGCBO)
%eventdatareserved-tobedefinedinafutureversionofMATLAB
%handlesstructurewithhandlesanduserdata(seeGUIDATA)
xh=get(handles.xuehaoedit,'string');
[lia,id]=ismember(str2num(xh),handles.xuehao);
iflia
set(handles.xmlist,'value',id);
set(handles.xhlist,'value',id);
set(handles.chengjilist,'value',id);
xingming=handles.xingming;
chengji=handles.chengji;
xuehao=handles.xuehao;
set(handles.lredit1,'string',xingming(id));
set(handles.lredit2,'string',chengji(id,1));
set(handles.lredit3,'string',chengji(id,2));
set(handles.lredit4,'string',xuehao(id));
else
msgbox('没有找到');
End
查询是否有这个学号在保存的名字的数组里面,获取需要删除的学号在保存的数组里面是第几个的,获取三个数组,设置三个list里面这个学生的信息为高亮,并显示在成绩管理里面。
%---Executesonbuttonpressinzfbutton.
functionzfbutton_Callback(hObject,eventdata,handles)
%hObjecthandletozfbutton(seeGCBO)
%eventdatareserved-tobedefinedinafutureversionofMATLAB
%handlesstructurewithhandlesanduserdata(seeGUIDATA)
name=get(handles.lredit13,'string');
[lia,id]=ismember(name,handles.xingming);
iflia
set(handles.xmlist,'value',id);
set(handles.xhlist,'value',id);
set(handles.chengjilist,'value',id);
xingming=handles.xingming;
chengji=handles.chengji;
xuehao=handles.xuehao;
set(handles.zfedit,'string',(chengji(id,1)+chengji(id,2)));
else
msgbox('没有找到');
end
查询是否有这个名字在保存的名字的数组里面,获取需要删除的名字在保存的数组里面是第几个的,获取三个数组,设置三个list里面这个学生的信息为高亮,同时计算她(他)的总分,并显示。
%---Executesonbuttonpressinpjfbutton.
functionpjfbutton_Callback(hObject,eventdata,handles)
%hObjecthandletopjfbutton(seeGCBO)
%eventdatareserved-tobedefinedi