《Matlab课程设计资料报告材料[参考]》由会员分享,可在线阅读,更多相关《Matlab课程设计资料报告材料[参考](18页珍藏版)》请在金锄头文库上搜索。
1、学院 MATLAB 实践 课程设计 学生: 学号: 专业班级:(2) 指导教师: 二一四年 四 月三十 日 目录 1. 设计目的第3 页 2. 题目分析第3 页 3. 总体设计第3 页 4. 具体设计第4 页 5. 小结和心得第15 页 1、设计目的: 使用 MATLAB 的 GUI程序设计学生成绩管理系统。完成需学生成绩的基本管 理,包含对学生成绩的读入、修改、添加和查询等基本的功能。 本课题主要解决对学生成绩总体的客观评价,通过一系列数据的分析比较, 例如平均值,成绩分布等整体数据的处理,以及matlab 和 excel 在数据联动功 能方面的应用, 所绘制的直方图、 正态分布图等图像信息
2、使得分析成绩系统更直 观、有效地反映学生此课程这一阶段的表现,进而研究今后的教学重点, 以及从 教学到考试等一连串过程中的薄弱环节,从而达到教学相长的目的。 不论是对学生的整体学习情况还是单独考虑每个学生的学习情况都能够进 行较好的评价。 面比起单纯的 绝对分数 评价学生的学习状况, 忽略了基础条件 的差异,我们运用了各种方法和模型来去避免这类现象的发生,动态的分析每个 学生的情况,并从定性和定量两方面分别给出了数值与建议。 2、题目分析 根据课题的要求, 分析成绩管理系统的现实需求,我们可以概括为设计的程 序应该包含的几个基本模块及应该完成的功能如下: 1.文件管理:完成成绩表格的导入(.x
3、ls文件) ,完成对修改后的成绩文件 的保存。 2.成绩管理:完成对学生成绩、学号、成绩、总分的显示和修改,还有添加 新的学生的信息。 3.查询管理:完成对或者学号的查询的显示和删除,学生的信息显示在成绩 管理里面的显示框里面。 4. 在学生的显示框点击学生,成绩管理系统里面自动获取学生的基本信息。 5. 统计出学生的最高分和最低分以及各科成绩的平均分情况。 6. 通过各科成绩的统计分布直方图,直观地分析学生的各科的成绩状况。 3、总体设计 围绕设计的题目围, 我们可以将起绘制成功能模块的总体模块图如下图1。 根据设计的模块设计成GUI的设计图如下图 2。 通过将导入的学生信息的数据保存到全局
4、变量的数组里面,到每个模块需要 使用时,导出数据即可完成对数据的引用,在需要完成操作的按钮下编写回调函 数来达到需要完成的功能。设计容包含对回调函数的编写和对于程序功能的调 试,分析问题原因,在实现程序功能时,进一步改善程序的设计构架。 图 1 图 2 4、具体设计 利用 MATLAB 的 GUI程序设计实现成绩管理系统的功能。各个模块功能的实 现及程序设计如下: 4.1. 模块设计界面及程序设计 4.1.1 显示模块模块: 显示模块需要完成的是对于学生、序号以及成绩的显示, 并且在点击显示 框里面的学生时, 成绩管理的模块里面可以自动显示学生的以上基本信息。设计 界面如下: 对于显示框的程序
5、设计如下: % - Executes on selection change in xmlist. function xmlist_Callback(hObject, eventdata, handles) % hObject handle to xmlist (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) content=get(hObject,value); se
6、t(handles.chengjilist,value,content); set(handles.xhlist,value,content); chengji=handles.chengji; xingming=handles.xingming; xuehao=handles.xuehao; set(handles.lredit1,string,xingming(content); set(handles.lredit2,string,chengji(content,1); set(handles.lredit3,string,chengji(content,2); set(handles.
7、lredit4,string,xuehao(content,1); set(handles.xmedit,string,xingming(content); set(handles.xuehaoedit,string,xuehao(content); set(handles.lredit13,string,xingming(content) set(handles.zfedit,string,(chengji(content,1)+chengji(content,2); 首先设置显示的高亮位置表示选中的学生,调出handles 里面的信息,然后 通过set 函数将数字赋值给显示框。 4.1.2
8、 文件管理模块: 文件管理模块要实现的是对于保存成绩的表格文件(.xls 文件)的读取和对 于学生信息修改或者删除之后的保存功能。因此添加了两个控件按钮来实现,在 点击按钮后,弹出读取(或保存)文件的所在位置,添加文件后,系统完成对成 绩的读取(或保存)功能。没有选中文件时,提示“没有选择文件”。设计界面 如下: 4.1.2.1 打开成绩文件的按钮的设计程序: % - Executes on button press in pushbutton1. function pushbutton1_Callback(hObject, eventdata, handles) % hObject hand
9、le to pushbutton1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) filename,pathname=uigetfile(*.xls; *.*, 打开成绩文件 ); if isequal(filename,0)|isequal(pathname,0) errordlg( 没有选择文件 , 出错 ); return else str=pathname,
10、filename; word,txt=xlsread(str); xingming=txt(2:end,1); xuehao=word(1:end,1); chengji=word(1:end,2:3); set(handles.xmlist,string,xingming); set(handles.chengjilist,string,num2str(chengji); set(handles.xhlist,string,num2str(xuehao); handles.count=length(xingming); handles.chengji=chengji; handles.xue
11、hao=xuehao; handles.xingming=xingming; guidata(hObject,handles); End 读取文件里面的信息,保存为数组的形式,分别给成绩、学号数组赋值, 并设置三个 list显示全部学生的信息, 并保存这些数据到全局变量handles 里面。 4.1.2.2 保存文件按钮设计程序: % - Executes on button press in baocunbutton. function baocunbutton_Callback(hObject, eventdata, handles) % hObject handle to baocunb
12、utton (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) filename,pathname=uigetfile(*.xls; *.*, 打开成绩文件 ); if isequal(filename,0)|isequal(pathname,0) errordlg( 没有选择文件 , 出错 ); return else str=pathname,filename; xi
13、ngming=handles.xingming; chengji=handles.chengji; xuehao=handles.xuehao; oldcount=handles.count; row,co=size(chengji); col=co+1; if rowoldcount 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 );
14、 handles.count=row; guidata(hObject,row); End 将新获取的数据保存到 M 数组里面,调出原本数组的行数 count ,比较新获得 的数组的行数和原来行数count 的大小,根据实际调节写入数组的大小,并保存 新的数据的行数。 4.1.3 成绩管理模块: 成绩管理模块需要完成的是对于学生的、学号和成绩的显示 (显示在上面的 显示模块里面完成),以及修改学生信息的修改和添加新的学生信息。添加两个 控件,控制学生信息的修改和添加。界面设计图如下: 4.1.3.1 修改按钮的程序设计: % - Executes on button press in push
15、button2. function pushbutton2_Callback(hObject, eventdata, handles) % hObject handle to pushbutton2 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) content=get(handles.xmlist,value); xingming=handles.xingming;
16、 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; s