Matlab课程设计资料报告材料_第1页
Matlab课程设计资料报告材料_第2页
Matlab课程设计资料报告材料_第3页
Matlab课程设计资料报告材料_第4页
Matlab课程设计资料报告材料_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、学院 MATLAB实践课程设计学生:学 号:专业班级:(2)指导教师:二O四年四月三十日1. 设计目的2. 题目分析3. 总体设计4. 具体设计第 15 页5. 小结和心得1、设计目的:使用MATLAB勺GUI程序设计学生成绩管理系统。完成需学生成绩的基本管 理,包含对学生成绩的读入、修改、添加和查询等基本的功能。本课题主要解决对学生成绩总体的客观评价,通过一系列数据的分析比较, 例如平均值,成绩分布等整体数据的处理,以及 matlab 和 excel 在数据联动功 能方面的应用,所绘制的直方图、 正态分布图等图像信息使得分析成绩系统更直 观、有效地反映学生此课程这一阶段的表现, 进而研究今后

2、的教学重点, 以及从 教学到考试等一连串过程中的薄弱环节,从而达到教学相长的目的。不论是对学生的整体学习情况还是单独考虑每个学生的学习情况都能够进 行较好的评价。面比起单纯的 绝对分数评价学生的学习状况, 忽略了基础条件 的差异,我们运用了各种方法和模型来去避免这类现象的发生, 动态的分析每个 学生的情况,并从定性和定量两方面分别给出了数值与建议。2、题目分析根据课题的要求, 分析成绩管理系统的现实需求, 我们可以概括为设计的程 序应该包含的几个基本模块及应该完成的功能如下:1. 文件管理:完成成绩表格的导入( .xls 文件),完成对修改后的成绩文件 的保存。2. 成绩管理:完成对学生成绩、

3、学号、成绩、总分的显示和修改,还有添加 新的学生的信息。3. 查询管理: 完成对或者学号的查询的显示和删除, 学生的信息显示在成绩 管理里面的显示框里面。4. 在学生的显示框点击学生,成绩管理系统里面自动获取学生的基本信息。5. 统计出学生的最高分和最低分以及各科成绩的平均分情况。6. 通过各科成绩的统计分布直方图,直观地分析学生的各科的成绩状况。3、总体设计围绕设计的题目围, 我们可以将起绘制成功能模块的总体模块图如下图 1。 根据设计的模块设计成 GUI 的设计图如下图 2。通过将导入的学生信息的数据保存到全局变量的数组里面, 到每个模块需要 使用时,导出数据即可完成对数据的引用, 在需要

4、完成操作的按钮下编写回调函 数来达到需要完成的功能。设计容包含对回调函数的编写和对于程序功能的调 试,分析问题原因,在实现程序功能时,进一步改善程序的设计构架。文件管理文上牛号直询直伺豐堆图1学号数学语文究伸理打畀删文甘I底蜒善理暨身育詡16字主字号Elie l&.-t威帰輙祝甘改| 游釧|J!龙常茅陡1*讨用曲讨=日EM Tfl 4EJt Tebtum平均:rdS!色玄略曲勺誼畀氓计戸記图24、具体设计利用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

6、 data (see GUIDATA)content=get(hObject,value );set(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.lred

7、it3,string,chengji(content,2);set(handles.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);首先设置显示的高亮位置表示选中的学生,

8、调出 handles 里面的信息,然后 通过set函数将数字赋值给显示框。4.1.2 文件管理模块:文件管理模块要实现的是对于保存成绩的表格文件 ( .xls 文件)的读取和对 于学生信息修改或者删除之后的保存功能。 因此添加了两个控件按钮来实现, 在 点击按钮后,弹出读取(或保存)文件的所在位置,添加文件后,系统完成对成 绩的读取(或保存)功能。没有选中文件时,提示“没有选择文件” 。设计界面 如下:4.1.2.1 打开成绩文件的按钮的设计程序:% - Executes on button press in pushbutton1.function pushbutton1_Callback(

9、hObject, eventdata, handles)% hObject handle 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(

10、没有选择文件 , 出错 );returnelsestr=pathname,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);h

11、andles.chengji=chengji; handles.xuehao=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, han

12、dles)% hObject handle to baocunbutton (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( 没有选择文件 , 出错 );returne

13、lsestr=pathname,filename; xingming=handles.xingming;chengji=handles.chengji;xuehao=ha ndles.xuehao;oldco un t=ha ndles.co unt;row,co=size(che ngji);col=co+1;if rowvoldcountM=cell(oldcou nt,col);elseM=cell(row,col);endM(1:row,1)=x in gmi ng;M(1:row,2)=n um2cell(xuehao);M(1:row,3:col+1)=n um2cell(che

14、ngji); xlswrite(str,M,1, A2);han dles.co un t=row;guidata(hObject,row);End将新获取的数据保存到M数组里面,调出原本数组的行数count,比较新获得 的数组的行数和原来行数count的大小,根据实际调节写入数组的大小,并保存 新的数据的行数。4.1.3成绩管理模块:成绩管理模块需要完成的是对于学生的、学号和成绩的显示(显示在上面的显示模块里面完成),以及修改学生信息的修改和添加新的学生信息。添加两个 控件,控制学生信息的修改和添加。界面设计图如下:4.1.3.1修改按钮的程序设计:% - Executes on butt

15、on press in pushbutt on2.fun cti onpushbutt on 2_Callback(hObject,eve ntdata, han dles)% hObjecthandle topushbutto n2 (see GCBO)% eve ntdatareserved - to bedefi ned in a future vers ion of MATLAB% han dles structure with han dles and user data (see GUIDATA) content=get(handles.xmlist, value ); xingm

16、ing=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,

17、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);获取输入的数据,调出原来的成绩、学号和数组,根据新修改的信息,修改

18、 原本的三个数据的数值,并保存到全局变量 handles 里面。4.1.3.2 添加按钮的程序设计:% - Executes on button press in tianjiabutton.function tianjiabutton_Callback(hObject, eventdata, handles)% hObject handle to tianjiabutton (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles

19、and user data (see GUIDATA) 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; hand

20、les.xuehao=handles.xuehao;newxuehao;guidata(hObject,handles); set(handles.xmlist, string ,handles.xingming);set(ha ndles.xhlist,stri ng ,nu m2str(ha ndles.xuehao);set(ha ndles.che ngjilist,stri ng,nu m2str(ha ndles.che ngji);获取输入的数据,调出原来的成绩、学号和数组,根据新添加的信息,修改原本的三个数据的数值,并保存到全局变量handles里面。4.1.4查询管理模块:本

21、模块需要完成的是通过查询学生或者学号,让成绩管理里面可以显示该学生的基本信息并可以通过删除按钮删除该生的信息,没有查询到该生的信息,即r查询管理学生姓名|匚“沧如姓名查询|删除学生学号| EditT&xt 学号查询删除| 姓名 | Edit Text | Edit Text总分查询 |提示“没有找到”。通过平均分查询按钮来查询各科的平均分成绩。通过查询学 生,找到学生的总分并显示。基本设计模块如下图:数学平均分语文平均分| Edit Text Edit Text平均分查询|4.1.4.1两个删除按钮的程序设计(以第一个删除为例,第二个原理同第一个):% - Executes on butt o

22、n press in sha nchubutt on.fun cti on sha nchubutt on _Callback(hObject, eve ntdata, han dles)% hObject handle to sha nchubutton (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% han dles structure with han dles and user data (see GUIDATA)n ame=get(ha ndles.xmedit, stri n

23、g );lia,id=ismember( name,ha ndles.xi ngmi ng);if liaxingmin g=ha ndles.x ingming;che ngji=ha ndles.che ngji;xuehao=ha ndles.xuehao;xin gmi ng(id)=;xuehao(id)=;che ngji(id,:)=;han dles.che ngji=che ngji;han dles.xuehao=xuehao;han dles.x ingmin g=x ingming;guidata(hObject,ha ndles);set(ha ndles.xmlis

24、t,stri ng,xi ngmi ng);set(ha ndles.che ngjilist,stri ng ,nu m2str(che ngji);set(handles.xhlist,string,num2str(xuehao);set(handles.xmlist,value,1);set(handles.xhlist,value,1);set(handles.chengjilist,value ,1);Else 查询时候有这个名字在保存的名字(或学号)的数组里面,调出、学号和成 绩数组,获取需要删除的学生在数组里面保存在第几个的位置, 将数组里面的这 儿位置清空,设置三个 list

25、的显示高亮位置回到第一行,同时更新 handles 里面 的三个数组存放。4.1.4.2 查询按钮的程序设计:% - Executes on button press in chaxunbutton.function chaxunbutton_Callback(hObject, eventdata, handles)% hObject handle to chaxunbutton (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles

26、 and user data (see GUIDATA) name=get(handles.xmedit, string );lia,id=ismember(name,handles.xingming);if liaset(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,

27、xingming(id);set(handles.lredit2,string,chengji(id,1);set(handles.lredit3,string,chengji(id,2);set(handles.lredit4,string,xuehao(id);elsemsgbox( 没有找到 );end 查询是否有这个名字在保存的名字的数组里面, 获取需要删除的名字在保存 的数组里面是第几个的, 获取三个数组,设置三个 list 里面这个学生的信息为高 亮,并显示在成绩管理里面。4.1.4.3 学号查询按钮的程序设计:% - Executes on button press in pus

28、hbutton9.function pushbutton9_Callback(hObject, eventdata, handles)% hObject handle to pushbutton9 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA) xh=get(handles.xuehaoedit, string );lia,id=ismember(str2num(xh),

29、handles.xuehao);if liaset(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,cheng

30、ji(id,2);set(handles.lredit4,string,xuehao(id);elsemsgbox( 没有找到 );End 查询是否有这个学号在保存的名字的数组里面, 获取需要删除的学号在保存 的数组里面是第几个的, 获取三个数组,设置三个 list 里面这个学生的信息为高 亮,并显示在成绩管理里面。4.1.4.4 总分查询按钮的程序设计:% - Executes on button press in zfbutton.function zfbutton_Callback(hObject, eventdata, handles)% hObject handle to zfbut

31、ton (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA) name=get(handles.lredit13, string );lia,id=ismember(name,handles.xingming);if liaset(handles.xmlist,value ,id);set(handles.xhlist,value ,id);set(ha ndles.che n

32、gjilist,value ,id);xingmin g=ha ndles.x ingming;che ngji=ha ndles.che ngji;xuehao=ha ndles.xuehao;set(ha ndles.zfedit, stri ng,(che ngji(id,1)+che ngji(id,2);elsemsgbox(没有找到);end查询是否有这个名字在保存的名字的数组里面, 获取需要删除的名字在保存 的数组里面是第几个的,获取三个数组,设置三个list里面这个学生的信息为高 亮,同时计算她(他)的总分,并显示。4.145平均分查询按钮的程序设计:% - Executes

33、on butt on press in pjfbutt on.function pjfbutton_Callback(hObject, eventdata, handles)% hObject han dle to pjfbutton (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% han dles structure with han dles and user data (see GUIDATA)che ngji=ha ndles.che ngji;shuxue=che ngji(1

34、:e nd,1);yuwe n=che ngji(1:e nd,2);avesshuxue=mea n( shuxue);avesyuwe n=mea n(y uwe n);set(ha ndles.sxedit,stri ng,nu m2str(avesshuxue);set(ha ndles.ywedit,stri ng,nu m2str(avesyuwe n);通过按钮,调用成绩数组,计算平均分并显示。4.1.5成绩概况模块:成绩概况的设计比较简单,仅包含通过点击查询最高分或者最低分按钮来查 询各科学生成绩里面的最高分和最低分并显示。程序设计界面如下:成绩概况一裁学语文最高分|最高分Ed

35、it Tert| Edit Text| EdrtTaxt| Edit Text最低分|4.1.5.1最咼分按钮程序设计:% - Executes on butt on press in pushbutt on7.fun cti on pushbutt on 7_Callback(hObject, eve ntdata, han dies)% hObject handle to pushbutt on7 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% han dies structure

36、with han dies and user data (see GUIDATA) che ngji=ha ndles.che ngji;coun t=ha ndles.co unt;x=max(chen gji(1:co un t,1);y=max(che ngji(1:co un t,2);set(ha ndles .l redit6,stri ng,nu m2str(x);set(ha ndles .l redit7,stri ng,nu m2str(y);调用成绩数组,根据人数,设置比较次数,按照科目比较,并设置显示4.1.5.2最低分程序设计:% - Executes on butt

37、 on press in pushbutt on8.fun cti on pushbutt on 8_Callback(hObject, eve ntdata, han dles)% hObject handle to pushbutt on8 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% han dles structure with han dles and user data (see GUIDATA) che ngji=ha ndles.che ngji;coun t=ha n

38、dles.co unt;x=mi n(che ngji(1:cou nt,1);y=min( che ngji(1:co un t,2);set(ha ndles .l redit8,stri ng ,num2str(x);set(ha ndles .l redit9,stri ng ,num2str(y);调用成绩数组,根据人数,设 置比较次数,按照科目比较,并设 置显示。4.1.6成绩统计直方图模块:断威字射諛跚帕丹本模块的设计为:将各科学生 的成绩分段统计,画出学生成绩的 分布直方图。采用的分数段为:060、6170、7180、8190、91100五个分数段。设计界面图如下:4.1.6.

39、1 显示数学成绩分数段统计直方图按钮的程序设计: % - Executes on button press in zftbutton.function zftbutton_Callback(hObject, eventdata, handles)% hObject handle to zftbutton (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA) axes(handl

40、es.axes1);cla; chengji=handles.chengji; shuxue=chengji(1:end,1); count=handles.count; aa=0 0 0 0 0;for i=1:countif shuxue(i)60 aa(1)=aa(1)+1;else if shuxue(i)70 aa(2)=aa(2)+1;else if shuxue(i)80 aa(3)=aa(3)+1;else if shuxue(i)90 aa(4)=aa(4)+1;else aa(5)=aa(5)+1;endendendendendx=50 65 75 85 95; bar(x

41、,aa);title( 数学成绩分数段统计直方图 );调用数学成绩数组,设定空数组aa用来存放分数段的统计数据。设定循环函 数,分别比较五个数值: 60、70、80、90、100,并记录。最后用 bar 函数画出函 数图像。4.1.6.2 显示语文成绩分数段统计直方图:% - Executes on button press in pushbutton14.function pushbutton14_Callback(hObject, eventdata, handles)% hObject handle to pushbutton14 (see GCBO)% eventdata reserv

42、ed - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) axes(handles.axes2);cla; chengji=handles.chengji; yuwen=chengji(1:end,2); count=handles.count; aa=0 0 0 0 0;for i=1:countif yuwen(i)60aa(1)=aa(1)+1;else if yuwen(i)70 aa(2)=aa(2)+1;else if yuwen(i)80 aa(3)=aa(3)+1;else if yuwen(i)90 aa(4)=aa(4)+1;else aa(5)=aa(5)+1;endendendendendx=50 65 75 85 95; bar(x,aa);title( 语文成绩分数段统计直方图 );调用语文成绩数组,设定空数组aa用来存放分数段的统计数据

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论