用MFC实现的学生平时成绩管理系统界面化解析.docx
- 文档编号:11796037
- 上传时间:2023-06-02
- 格式:DOCX
- 页数:65
- 大小:1.18MB
用MFC实现的学生平时成绩管理系统界面化解析.docx
《用MFC实现的学生平时成绩管理系统界面化解析.docx》由会员分享,可在线阅读,更多相关《用MFC实现的学生平时成绩管理系统界面化解析.docx(65页珍藏版)》请在冰点文库上搜索。
用MFC实现的学生平时成绩管理系统界面化解析
xxxxxxxxxxxxxxxxx学院
面向对象程序设计实习报告
题目:
学生平时成绩管理系统
学号
姓名
专业班级
指导教师
实践日期
目录
一、综合训练目的与要求1
二、综合训练任务1
三、总体设计1
四、详细设计说明2
(1)、登录界面的设计2
(2)、菜单界面的设计3
(3)、新生学生成绩的录入界面设计4
(4)、学生平时成绩查询操作界面5
(5)、修改学生信息窗口设计5
(6)、删除窗口的设计6
五、调试与测试7
(1)、学生信息以及平时成绩信息存储的问题7
(2)、函数和操作界面的连接问题8
(3)、操作界面的美化问题8
(4)、操作之后没有提示的问题8
(5)、其他调试问题8
六、实习日志8
七、实习总结10
八、附录:
核心代码清单10
(1)、源文件代码清单(SourceFile)10
(2)、头文件代码清单(HeaderFiles)34
一、综合训练目的与要求
在经过一个学期的面向对象程序设计之后,为了让学生掌握面向对象程序设计的基本方法,加深对面向对象的思想,包括封装性,继承性,多态性的理解,此次程序设计综合运用所学知识解决实际问题,将课堂的书本知识有效的在程序中体现出来,让学生更理解C++功能之强大,进一步让学生对面向对象的方法以及C++的编程思想有较好了解和认识,通过对题目设计的实战掌握应用软件的分析方法和工程设计方法,提高升序设计的能力和综合只是的运用能力,此外,此次设计培养独立开发、设计、调试、运行程序的能力,激发学生较强的自学兴趣,锻炼学生之间以及学生雨老师的沟通能力,培养学生之间的合作精神,让彼此更好的认识到合作的重要性,使学生在今后的学习中加强对合作精神的培养。
二、综合训练任务
1、培养学生自学的能力,这次实习我开始用的是QT感觉QT实在是不太理解,又转型用的MFC,虽然对MFC也不是很懂,但至少不算是陌生,开始研究MFC的各种类的创建和界面窗口的设计以及代码的编写,虽然加大了实习的难度。
但更加能够突出学生的学习能力。
其中用到的知识,在MFC中的文本操作我基本不会,经过3天的研究和理解基本理解了一些简单的文本存储和文本操作。
2、培养学生养成充分利用参考书和查询手册的能力,培养学生自己独立思考,深入研究,分析问题、解决问题的能力。
3、巩固和加深对程序设计课程的理解,提高综合运用课程所学知识的能力。
三、总体设计
我选的是题目是“学生平时成绩管理系统”,开始不知道该怎么着手做,慢慢的在网上找到了一些类似的范围我参考了一下,大概一开始就是要做个登录界面,然手是是主窗口,主窗口上面要显示的是“学生平时成绩管理系统”的一些操作,例如:
学生平时成绩的查询,新生平时成绩的录入,学生平时成绩的修改以及学生平时成绩的删除等等功能。
开始着手做登录框的操作界面的时候感觉好盲目的,因为自己本身的MFC操作能力就很差,做登录界面和函数的连接的时候出现了蛮多的错误。
在对学生的平时成绩的存储时又出现了自己难以解决的问题,例如拿什么存储用什么输出,开始想的是用数据库存储用SQLserver2003来读取,可是在连接数据库的时候出现问题,自己很难解决,最后转型用文本形式存储学生平时成绩记录以供用户的查询,修改,删除,等等。
在我的题目设计中,我用了4个类,AddDlgCCheckUpdataDlgDelinfo这4个类分别来完成对学生平时成绩的录入,查询,修改,删除操作。
图3-1
四、详细设计说明
(1)、登录界面的设计
对于学生平时成绩管理系统的登录界面,首先就要突出这是学生平时成绩管理系统,之后和大多数登录界面相同,填入用户名和密码,截图如下:
图4—1登陆界面
操作界面用了最简单的MFC语句在DOC.cpp里面写的一段代码,实现用户登录时登录名和密码的检索,本来是想把文本编辑框全部设为透明的但是做了之后效果不好就没有将动态文本编辑框设置问透明的。
(2)、菜单界面的设计
在学生管理系统的操作界面我采用了MENU菜单式的对话框实现对学生平时成绩管理系统的一些列操作选项菜单,截图如下:
图4-2菜单窗口
虽然背景很单调,但是点击“学生平时成绩管理”是会出现一个菜单选项,有“学生平时成绩查询”“新生平时成绩录入”“学生平时成绩修改”“删除学生平时成绩”等4个基本对学生平时成绩管理系统的操作。
(3)、新生学生成绩的录入界面设计
在新生平时成绩录入的界面我设计了学生了一些基本信息编辑框,例如:
姓名,学号,性别,年级,班级等,学生的平时成绩我只涉及了几门课程而已,有:
数学,英语,C++,大学物理,概率论这五门课程平时成绩的录入;界面截图如下:
图4-3学生成绩录入窗口
按照上面的填写新生的信息和平时成绩等信息点击“确定”之后,新生平时成绩就增添进去。
这里我采用的是有文本形式存储学生的平时成绩和学生信息,以方便管理员的查询,修改,删除等操作;
(4)、学生平时成绩查询操作界面
当有新生成绩插入进去之后。
就要实现查询学生平时成绩,因为在学生平时成绩是以文本形式存储的,所以在这里也要采用读取文本的形式来提取学生的平时成绩信息,采用MFC中对文本的操作函数完成,查询界面截图:
图4-4学生成绩查询窗口
此窗口主要突出显示学生查询的对话框而已,因为考虑到学生可能有重名的情况,这里采用的是对学生学号的查询,方便查找。
(5)、修改学生信息窗口设计
当查询玩学生信息之后我紧接着想到的就是要创建修改学生信息的窗口,感觉修改学生平时成绩的窗口和添加学生平时成绩信息的窗口很像应该没什么区别,只是在修改操作完成之后应该是将原来的和学生信息进行修改而已,所以我的修改窗口和新生录入窗口没什么区别截图如下:
图4-6学生成绩修改系统
这个窗口如果是在你刚刚执行完查询之后就进行修改的话,修改窗口会默认为你要修改刚才查询的那个学生的信息。
(6)、删除窗口的设计
删除窗口很简单,我想的是将你要删除的学生的学号输入点击确定删除之后程序自动删除该生的相关信息界面截图如下:
图4-6学生成绩删除系统
在MFC中的写的代码函数名有:
每一个函数又有一个类;
类如下:
五、调试与测试
在调试与测试阶段,遇到很多问题,由于对于MFC我之前并没有做过很多工作,我只能在整个实习的过程中一遍学习vc++MFC一遍写程序,这样我就很容易在一个问题上话费特别长的时间去研究去弄明白,没有别的办法,只能一点点去网上搜索教程或或者问问别的学的好的同学,然后按照网上教程和同学教的的方法一点点尝试把问题解决。
这个过程特别痛苦,但是当把问题解决的时候确实很振奋人心的,总之努力之后会有成果的结论一直是成立的,我的目标就是要把我自己的题目完成好。
(1)、学生信息以及平时成绩信息存储的问题
在开始写成绩管理系统的时候我就在想我该用什么样方式存储学生的信息和他的品时成绩信息呢。
开始想的是用数据库存储,可是在数据库连接上我卡壳了两天,最后我问同学,同学给我介绍了一种简单的MFC用文本形式存储数据的方法,我就采用同学教的那种方法采用文本形式存储,没录入一个学生就创建一个文本文档,将去信息存储在里面。
(2)、函数和操作界面的连接问题
这个是最最主要的问题,在MFC编程过程中,这是最最重要的一步,这一步弄不懂整个操作界面就连接不起来,开始的时候总是点击操作选项可是出来的却不是自己想要的窗口,为此烦恼了好长时间,不断的在网上搜索关于控件和窗口的连接问题,函数主题中如何编程等问题,在经过了两天的研究和摸索之后终于搞懂了一系列的操作和函数与操作界面连接的问题。
(3)、操作界面的美化问题
当操作界面基本完成之后,那灰色的窗口总是让人感觉到不舒服,想要美化一下就遇到了问题,不知道怎么操作函数怎么写,最后在网上和MFC教程上面找到了一些关于界面背景设计的方法和函数编写,才将自己的界面按照自己的要求进行美化了一下。
(4)、操作之后没有提示的问题
本以为解决上面的一系列的操作之后我还以为我基本完成了呢,可是当我运行程序的时候却发现很大的不足,例如:
在新生信息和平时成绩录入完成之后没有任何提示已经成功录入,而是直接退回到上一级界面,从用户的角度我认为这点自己做的不够好,在查询,修改,删除等等操作界面之后也是同样的问题,所以我有在每个窗口函数中加入了一个弹出窗口,用来进行每次完成操作之后的提示。
如下图:
图5-1提示窗口
(5)、其他调试问题
做完了以上工作我们的学生平时成绩管理系统就差不多完成了。
接下来的任务就是调试各种信息确保在答辩的时候不会出错,最终确定我们的成果。
六、实习日志
2月20日
今天是实习开始的第一天.这些天我们刚开始慢慢理解自己所选题目所要实现的一些功能,制定自己的解决方案,并且写好实施计划书。
我们选择的题目是《学生平时成绩管理系统》,开始的时候我是真的不知道该怎么去做,只是想尽量用自己所学的知识尽量把我们自己的想法都通过我们的软件表现出来。
2月21日
实习的第二天,在对题目所要设计到的问题和操作有了大概的理解之后开始着手操作界面的设计,我一开是就想这用QT做,都说QT简单,但是以前从未接触到QT开始悲剧的从第一步开始慢慢学,今天一天基本看完了QT的一些简单操作,如窗口的建立和窗口的弹出等基本功能。
2月22日
实习的第三天,继续在研究QT中,想要理解弄懂QT操作界面个函数的连接原理,不断的研究老师给的QT教程,不断的尝试,终于基本差不多快理解了,但是操作还是很让人悲催,总是早运行QT时出现这样那样的错误,而且老师还要求快速完成自己的实施计划书,我只有先完成自己的实施计划书了,QT还没看完全的理解。
2月23日
实习第四天,正在我对QT聚精会神的研究的时候我突然发现我该用什么进行对数据的存储呢,这个纠结了,数据库的连接和操作我几乎都不会,数据库学的又不好,然后我有想到了QT的文本操作,可是当我看了一天之后我还是没看太懂这QT得FILE操作函数,我开始有些想要方式用QT完成的想法了。
2月24日
实习第五天,经过昨天晚上的思考,我决定用我还算是有点熟悉的MFC完成我这次题目的设计,但是时间已经过去了4天了,我开始紧张起来,没有时间去想别的事,几乎全心全力的去研究自己的题目,研究自己的MFC遇到问题就在网上搜或者问比较熟练的同学。
2月25日-2月26日,双休日
2月27日
实习的地六天,两天的双休日,让我在这期间也差不多对MFC有了更深一步的理解和理解,开始着手做自己的“学生平时成绩管理系统”的登录界面,通过3天的研究,对于操作界面的设计和在主程序.cpp里面的函数编写,我很轻松的完成了登录框和函数的连接。
然后继续自己系统的查询,修改,删除等的操作界面;
2月28日
实习的第七天、在同学和网络的帮组下我完成了各个函数与对话框的连接问题,在程序运行的过程中,看着自己想要的结果在操作界面中显示出来的时候,很高兴,感觉斗志一下子就起来了,什么都能克服,没有以前那种不知所措的感觉了,感觉什么都可以解决的。
2月29日
实习第八天,实现了函数对数据的存储和对数据的操作,由于我们前面分析加纠结的时间比较久,前四天天几乎啥都没有做,所以本来计划昨天完成的程序设计还没有完成。
但是有了前几天的经验,我感觉时间对我来说还是比较紧张的,还有好多东西要做呢。
今天要做的就是对操作界面的美化和一些更进一步的优化了。
到下午,我的软件已经写好,接下来的就是在写论文的时候运行如果还有什么不满意在修改了。
3月1日
实习第九天,开始写自己的实习论文了,一篇实习报告需要书写的地方很多,需要注意的地方也很多,而且我发现每个老师都很重视实习报告,不仅仅是内容,也包括格式,其中的规定要求也是非常的严格,我想这不仅仅是因为美观,方便观看,更主要的是因为严谨吧。
编写并没有我想象中的那么轻松,因为其中不仅仅是文字,也需要制作表格与剪切图片。
很麻烦,很复杂,也很锻炼。
完成准备工作做完之后就是我们写软件的具体步骤了,在之前也没有什么界面设计的基础,因此一个界面设计了之后就要修改,每一个按钮或者是输出输入框都要考虑很长时间,在不影响美观的前提下尽量把更多的功能加入到主界面中。
不得不说界面设计是一个很费脑子的事情,设计了半天也没有达到自己想要的那种效果,只能说是中规中矩。
由于自己不擅长界面设计,所以设计出来的界面只能说是一团糟,只能将就看。
界面设计之后就是各种函数的信号和槽的关联了,还有窗口之间的切换关系,这个真的是一个让人很头疼的东西,窗口之间的切换本来就是很麻烦的一个东西了,没想到还有那么多的按钮要关联,而且我发现起名字也是那么麻烦的事情,要在自己清楚每一个按钮是干什么的基础上明确它们之间的关系,而且还要做到不乱,这不得不说是一个很挑战人的记忆力的事情。
把界面的东西弄好并且把一切东西都关联好已经是三天后的事情了。
实习报告是我们这些天工作的一个总结,我们实习的过程中做的一切工作在实习报告中都要有一个体现,这些都是我们的成果,是我们必须为之骄傲的。
七、实习总结
通过实习,我掌握了VC++6.0的MFC程序设计的相关理论知识,掌握了VC开发简单应用程序的总体思路和步骤,熟悉其开发环境,掌握了常用的基本控件的使用方法和系统属性的设置。
在熟悉VC语言基本语法,语句结构的的基础上,能利用VC语言采用不同的编程语句实现相同的功能,在此次实习中我明白了,在做一个系统前先要认真的构思,根据自己需要完成的功能,进行模块划分,添加控件,在编程;变量先定义,在进行使用,注意的是初始化函数,代码书写要规范,一定要按层次的结构书写,注意适当添加注释,对于函数,变量进行说明。
开始的时候我们也没有想这个软件多么复杂,就是按照自己的想法逐一实现软件的功能而已,后来在慢慢写的过程中发现自己在开始写软件的时候想的还是太少了,最后很多内容都是临时想起来然后查资料又加上去的。
我想在以后设计软件的时候还是要多多的思考,尽量在写软件之前把可能用到的功能和内容都考虑完全了之后在进行设计,这样就算以后再添加什么内容相对来说也会随心一点,不会出现那么多的错误。
这次实习最大的收获就是学会了界面设计的大致思路,并且知道很多东西是要一个综合的过程的,没有综合自己永远不会进步,总之,只有自己想不到的,没有自己做不到的,这是我实习下来的一点想法,因为,在实习过程中我们遇到的很多问题,在我的努力下,都得到的解决办法。
所以我想到一句话“有志者事竟成”。
我相信我一定会进步的。
在此次的设计过程中,我学到的不仅是知识,我还认识到许多事情,这次设计编程实习,让我的编程水平提高了一大步,是我充分的认识到了,知识的可贵,这次的实习对我的综合能力是一次很好的锻炼,但是我必须承认自己的能力和知识还很肤浅,所以今后我的学习道路还很漫长的.
八、附录:
核心代码清单
(1)、源文件代码清单(SourceFile)
①、主菜单窗口代码;
MainFrm.cpp
//MainFrm.cpp:
implementationoftheCMainFrameclass
//
#include"stdafx.h"
#include"SINFOR.h"
#include"MainFrm.h"
#ifdef_DEBUG
#definenewDEBUG_NEW
#undefTHIS_FILE
staticcharTHIS_FILE[]=__FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
//CMainFrame
IMPLEMENT_DYNCREATE(CMainFrame,CFrameWnd)
BEGIN_MESSAGE_MAP(CMainFrame,CFrameWnd)
//{{AFX_MSG_MAP(CMainFrame)
//NOTE-theClassWizardwilladdandremovemappingmacroshere.
//DONOTEDITwhatyouseeintheseblocksofgeneratedcode!
ON_WM_CREATE()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
staticUINTindicators[]=
{
ID_SEPARATOR,//statuslineindicator
ID_INDICATOR_CAPS,
ID_INDICATOR_NUM,
ID_INDICATOR_SCRL,
};
/////////////////////////////////////////////////////////////////////////////
//CMainFrameconstruction/destruction
CMainFrame:
:
CMainFrame()
{
//TODO:
addmemberinitializationcodehere
}
CMainFrame:
:
~CMainFrame()
{
}
intCMainFrame:
:
OnCreate(LPCREATESTRUCTlpCreateStruct)
{
if(CFrameWnd:
:
OnCreate(lpCreateStruct)==-1)
return-1;
HICONm_hIcon;
m_hIcon=AfxGetApp()->LoadIcon(IDR_MAINFRAME);
SetIcon(m_hIcon,TRUE);
return0;
}
BOOLCMainFrame:
:
PreCreateWindow(CREATESTRUCT&cs)
{
if(!
CFrameWnd:
:
PreCreateWindow(cs))
returnFALSE;
//TODO:
ModifytheWindowclassorstylesherebymodifying
//theCREATESTRUCTcs
cs.style=WS_OVERLAPPED|WS_SYSMENU|WS_BORDER;
cs.cy=:
:
GetSystemMetrics(SM_CYSCREEN)/2;
cs.cx=:
:
GetSystemMetrics(SM_CXSCREEN)/2;
cs.y=((cs.cy*2)-cs.cy)/2;
cs.x=((cs.cx*2)-cs.cx)/2;
returnCFrameWnd:
:
PreCreateWindow(cs);
returnTRUE;
}
/////////////////////////////////////////////////////////////////////////////
//CMainFramediagnostics
#ifdef_DEBUG
voidCMainFrame:
:
AssertValid()const
{
CFrameWnd:
:
AssertValid();
}
voidCMainFrame:
:
Dump(CDumpContext&dc)const
{
CFrameWnd:
:
Dump(dc);
}
#endif//_DEBUG
/////////////////////////////////////////////////////////////////////////////
//CMainFramemessagehandlers
②、主程序代码;
SINFOR.cpp
//SINFOR.cpp:
Definestheclassbehaviorsfortheapplication.
//
#include"stdafx.h"
#include"SINFOR.h"
#include"MainFrm.h"
#include"SINFORDoc.h"
#include"SINFORView.h"
#ifdef_DEBUG
#definenewDEBUG_NEW
#undefTHIS_FILE
staticcharTHIS_FILE[]=__FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
//CSINFORApp
BEGIN_MESSAGE_MAP(CSINFORApp,CWinApp)
//{{AFX_MSG_MAP(CSINFORApp)
ON_COMMAND(ID_APP_ABOUT,OnAppAbout)
//NOTE-theClassWizardwilladdandremovemappingmacroshere.
//DONOTEDITwhatyouseeintheseblocksofgeneratedcode!
//}}AFX_MSG_MAP
//Standardfilebaseddocumentcommands
ON_COMMAND(ID_FILE_NEW,CWinApp:
:
OnFileNew)
ON_COMMAND(ID_FILE_OPEN,CWinApp:
:
OnFileOpen)
//Standardprintsetupcommand
ON_COMMAND(ID_FILE_PRINT_SETUP,CWinApp:
:
OnFilePrintSetup)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
//CSINFORAppconstruction
CSINFORApp:
:
CSINFORApp()
{
//TODO:
addconstructioncodehere,
//PlaceallsignificantinitializationinInitInstance
}
/////////////////////////////////////////////////////////////////////////////
//TheoneandonlyCSINFORAppobject
CSINFORApptheApp;
/////////////////////////////////////////////////////////////////////////////
//CSINFORAppinitialization
BOOLCSINFORApp:
:
InitInstance()
{
AfxEnableControlContainer();
//Standardinitialization
//SetDialogBkColor(RGB(181,255,255),RGB(181,255
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MFC 实现 学生 平时 成绩管理系统 界面 化解