VC++课程设计-小学生算术练习软件Word格式.doc
- 文档编号:3727520
- 上传时间:2023-05-02
- 格式:DOC
- 页数:21
- 大小:339KB
VC++课程设计-小学生算术练习软件Word格式.doc
《VC++课程设计-小学生算术练习软件Word格式.doc》由会员分享,可在线阅读,更多相关《VC++课程设计-小学生算术练习软件Word格式.doc(21页珍藏版)》请在冰点文库上搜索。
根据需求,设计该软件的主要功能如下:
(1)能用于小学生的四则运算练习,提高小学生的计算能力;
(2)小学生上机练习时,可以选择三个练习等级A,B,C中的一种,其中A级为一位数加减乘除运算,B级为两位数加减乘除运算,C级为三位数加减乘除运算;
(3)每次练习计算机为小学生出10个加减乘除运算题目(10道题中分布有加减乘除题目),每个题目有三次计算机会(第一次算对加10分,接着出第二题目;
第一次不对,第二次出同样的题目,若算对加8分,接着出第二个题目;
第二次若不对再给第三次机会,作对加5分,做不对不加分。
每题只有三次计算机会,依此类推);
(4)该软件设有计时器,能查看小学生做完10道题目所花的总时间,用于综合评分;
(5)学生做完题后可以点击“评分说明”菜单里的“查看成绩”,查看该次的成绩,成绩单里包括每题的表达式,三次的答案,对错题数,答题时间,以及评分标准等;
(6)该软件利用了文件存储,能将每个等级的最佳成绩存在文件中,以便和其他用户进行对比,提高成绩;
(7)在答题的过程中,如果想回到主菜单重新进行选择,则只需点击“操作”菜单里的“回到主菜单”即可。
如果想退出程序,则只需点击“退出软件”即可。
2.4功能模块设计
2.4.1主对话框的设计
主对话框包含菜单栏和主窗口。
其中菜单栏包含三个菜单:
软件说明、评分说明、意见反馈。
“软件说明”菜单包含“软件简介”、“退出软件”两个子菜单。
其中“软件简介”用以调用软件简介对话框,使新用户对该软件熟悉,减少用户使用的熟悉期;
“退出软件”用以从界面正常退出该软件,退出前用文件保存最佳成绩。
“评分说明”菜单包含“题型设置”、“查看成绩”、“最佳成绩”三个子菜单。
其中“题型设置”向用户介绍该软件的题型、题量、等级、出题方式、方法等,方便用户正确做出选择,能更好的利用该软件;
“查看成绩”用于在用户做完10道题后查看所得分数。
如果没有答题或答题中途返回主对话框,则用于存储信息的链表为空,不能显示成绩;
“最佳成绩”向现用户展示以往用户的最佳成绩,用于比较,可以起到激励的作用,同时,使软件更加实用和友好。
“意见反馈”菜单提供了软件制作者的联系方式,可以让用户和编程者进行交流,方便编程者不断对软件进行改进。
主窗口中的单选按钮用于向用户展示本软件的题型,方便用户选用。
该对话框的测试按钮(即“开始”),调用了GetTickCount()函数,用于实现计时器的功能。
2.4.2答题对话框的设计
答题窗口由主对话框进行调用,连续调用十次。
每次调用所得的题目都是由计算机随机出的,利用了rand()函数。
该对话框的最核心函数即为提交按钮的响应函数,当用户完成运算,将答案输入到光标所在的文本框即可进入下一次调用,同时,在答完题后按回车也可调用。
该函数实现了让用户有三次答题机会的功能,但每次的给分不同。
在答对的情况或者三次都答错的情况下,利用链表将数据存在内存中,方便显示成绩单。
该链表采用的是头插法。
当用户未向答题框输入答案单击“下一题”按钮或回车时,系统弹出“请输入答案!
”的提示框提醒用户输入答案,避免因点击过快造成的错误而影响最终成绩的情况发生。
该对话框上附有操作按钮,方便用户在答题过程中临时变换所选题目等级,以及随时正确退出该软件,使用户用得方便自如。
在答完十道题后自动调用成绩单对话框,便于用户查看成绩。
2.4.3成绩单对话框的设计
该对话框将用户所做的十道题的做题细则完全的显示出来。
用户做每道题的时候都有三次答题机会,成绩单会将每道题的三次答案以及最终得分都显示在列表中,一目了然,方便用户进行总结和纠错。
列表的右侧附有该软件的评分标准,供用户参考,帮助用户提高成绩。
下方列有对错题数、所用总时间、总成绩以及以往用户在所选等级段的最佳成绩,方便用户进行比较。
浏览完成绩单后点击“确定”按钮或直接关闭成绩单返回主对话框界面。
2.4.4主要数据结构
由于该软件运行完毕后还要在成绩单中显示每次做题的细节,因此,必须用数据结构将每道题目的所有数据都存起来。
该软件采用了类链表这一数据结构来存数据。
用类CExpression来存每道题目的所有数据,包括:
表达式,三次做题答案,正确答案、该题得分等信息。
2.4.5文件存储
文件的存储格式主要有文本格式和二进制格式。
文本格式的一个显著优点是可以用文本编辑软件(如记事本)打开文件进行观察和读取。
与文本格式不同,二进制格式不能简单的将文件打开编辑。
但二进制文件读取速度快,并且能够利用MFC库进行序列化,是主流的文件输出格式。
本软件采用的是文本格式。
用于存取各个用户的最佳成绩,方便不同用户之间进行比较,交流。
2.5类与函数的设计与实现
2.5.1对话框类
(1)主对话框类
classCDXDDlg:
publicCDialog
{
//Construction
public:
CDXDDlg(CWnd*pParent=NULL);
//standardconstructor
…
afx_msgvoidOnExitMain();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
(2)答题对话框类(用于用户的练习)
classCCalculateDlg:
CCalculateDlg(CWnd*pParent=NULL);
//standardconstructor
afx_msgvoidOnReturn();
afx_msgvoidOnExit();
其中,OnButtonHand()(提交函数,用于处理答案)为核心函数。
使用户能有三次答题机会。
在该函数里还运用了链表的头插法来存数据。
在初始化函数内运用了生成随机表达式的算法。
具体如下:
第一个数、第二个数以及运算符都有rand()函数随机生成,再将这三个元素组合起来,加以判断,如果是一个小学生范围内的算术题,则将它作为一道题目,否则,再出一道。
该类里还编写了对话框的刷新函数RefreshDlg(),在用户答错的情况下刷新对话框。
(3)成绩单对话框类(用于将数据显示出来)
classCRecordDlg:
{//Construction
CRecordDlg(CWnd*pParent=NULL);
afx_msgHBRUSHOnCtlColor(CDC*pDC,CWnd*pWnd,UINTnCtlColor);
2.5.2表达式类(用于存题目信息)
classCExpression
intm_k1;
intm_k2;
charm_operator;
intm_end;
intm_end1;
intm_end2;
intm_end3;
intm_count;
CExpression*m_next;
2.6系统总体结构
系统对话框之间的调用关系,如图1所示。
主对话框
(CDXDDlg)
软件简介对话框
(CIntroductionDlg)
题型设置对话框
(CSettingsDlg)
答题对话框
(CCalculateDlg)
联系方式对话框
(CLinkDlg)
最佳成绩对话框
(CBestDlg)
成绩单对话框
(CRecordDlg)
图1系统对话框调用图
答题过程主要运算流程图,如图2所示。
开始
判断
级别
判断i是否大于10
答题
成绩单
B级,i=1
i>
10
i<
=10
i++
A级,i=1
C级,i=1
图2答题过程流程图
3.设计结果与分析
利用微软公司的C++开发工具MicrosoftVisualC++6.0创建MFC应用程序,添加各种对话框资源、菜单项,编写代码完成软件的各种功能,软件经过检查修改无误后运行通过操作各个菜单项以及对话框按钮,各部分的功能与菜单提示一致。
(1)运行软件,主对话框及各功能菜单如图3、4、5、6所示。
图3主对话框
图4“软件说明”子菜单
图5“评分说明”子菜单
图6“意见反馈”子菜单
(2)选择主对话框界面的题型分级,点击“开始”按钮,开始答题,满足用户需求,实现随机出题,答题完成,单击“下一题”或回车调用下一道题目,如图7所示。
图7答题对话框
当答案框中输入为空时,弹出对话框提示输入答案,如图8所示。
图8无答案提示框
当答题答案回答错误时,弹出对话框提示回答错误并显示错误次数,每道题有3次答题的机会,3次答错后进入下一题,错误次数不同获得的分数不同。
如图9所示。
图9答题错误提示框
答题对话框上附有操作菜单,方便用户在答题过程中临时变换所选题目等级,以及随时正确退出该软件,使用户用得方便自如。
如图10所示。
图10答题对话框菜单
(3)10道题目回答完毕之后系统自动调用成绩单对话框,成绩单会将每道题的三次答案以及最终得分都显示在列表中,一目了然,方便用户进行总结和纠错。
如图11所示。
图11成绩单对话框
同时“查看成绩”菜单项用于在用户做完10道题后查看所得分数,也可调出成绩单对话框,如果没有答题或答题中途返回主对话框,则用于存储信息的链表为空,不能显示成绩,此时弹出对话框提示无成绩,如图12所示。
图12无成绩对话框
(4)在主对话框的菜单栏包含三个菜单:
其中“软件简介”用以调用软件简介对话框,使新用户对该软件熟悉,减少用户使用的熟悉期。
软件简介对话框如图13所示。
图13软件简介对话框
其中“题型设置”向用户介绍该软件的题型、题量、等级、出题方式、方法等,方便用户正确做出选择,能更好的利用该软件。
题型设置对话框如图14所示。
图14题型设置对话框
最佳成绩对话框如图15所示。
图15最佳成绩对话框
联系方式对话框如图16所示。
图16联系方式对话框
(5)进行非正常操作的模拟:
未作题的用户想查看成绩,则弹出“无成绩”的消息。
因为链表为空,不能读取数据;
主对话框、答题对话框、成绩单里的数据都是只读类型的,防止用户直接进行篡改;
未做完十道题的用户直接返回主界面后,由于无法给分,且链表已重新置空,不弹出成绩单。
4.设计体会
VisualC++是Microsofe公司开发的基于C和C++语言的集成开发工具,同其他的可视化编程工具一样VisualC++6.0集代码编辑、编译、链接、调试等功能于一体,并提供多种有用的辅助开发工具。
学习好VC++是广大计算机专业学生的迫切要求。
经过两个星期的VC++课程设计,我在老师和同学的共同帮助下,顺利完成该课程设计,收获很大。
在《VisualC++程序设计》中MFC部分很重要,是需要实践内容。
所以在本学期程设计是很及时、很必要的。
而且还及时、真正的做到了学以致用。
主要是以下几点。
基本功要过硬,不能马虎经常犯犯小错误,提高自己找错纠错能力,通常错误总是那几种,多练习就熟练了。
要善于查找资料提高自己的资料查询能力,要善于利用网络来获得知识,获得帮助。
开始着手程序设计时,有些功能感觉无从下手,都不知道要干什么。
这些问题只要找到相关的资料就会得到提示从而理解所要解决问题的大致方向。
有了明确的目的,就可以发挥自己的头脑来完成它了。
要善于思考。
程序中有些实现难点和最初完成程序时免不了的许多不足就需要自己根据代码认真思考来解决。
只有这样才能纠正程序的不足并使其更加人性化。
这次课程设计让我学到了很多,不仅是巩固了先前学的MFC程序设计知识,而且也培养了我的动手能力,更令我的创造性思维得到拓展。
希望今后类似这样课程设计、类似这样的锻炼机会能更多些!
通过这次课程设计,可以明显地感觉到它弥补了课堂教学和实验中知识的深度和广度方面的不足,也让我进一步掌握了面向过程和面向对象程序设计的基本方法和编程技巧,同时也巩固所学理论知识,虽然花费了不止一点点的时间和精力,不过那确实挺值得的。
既让我认识到自己知识方面的缺陷,又培养了我独立分析问题、解决问题的能力。
希望在今后的学习中我能够长久的保持这股学习热情,将理论知识化为实际编程能力。
努力学好VC++,将所学知识与实践充分结合起来,学好计算机专业课。
5.参考文献
[1]刘新民,蔡琼,白康生.VisualBasic6.0程序设计[M].北京:
清华大学出版社,2004
[2]张海荣.VisualC++实用教程(第2版)[M].北京:
电子工业出版社.2004
[3]刘於勋等.C++程序设计[M].北京:
科学出版社,2007:
24-125
[4]荣钦科技.VisualC++游戏编程基础[M].北京:
电子工业出版社,2004:
42-115
[5]揣锦华.面向对象程序设计与VC++实践[M].西安:
电子科技大学出版社,2005:
40-101
[6]罗伟坚.VisualC++经典游戏程序设计[M].北京:
人民邮电出版社,2006:
20-85
[7]郑莉.C++语言程序设计案例教程[M].北京:
清华大学出版社,2005.7:
30-111
附录
CBrushm_brush;
//自己加的
staticDWORDtime1,time2;
//自己加的
staticdoubletime;
staticCExpression*m_exp;
staticintflag;
staticintGrade;
//用于记录做题等级
staticintFlag;
//用于从计算对话框返回主菜单
staticintBESTA,BESTB,BESTC;
//分别用来存A、B、C级的最高分
voidSaveAllData();
//用来存最高分
voidLoadAllData();
//用来读取最高分
//DialogData
//{{AFX_DATA(CDXDDlg)
enum{IDD=IDD_DXD_DIALOG};
int m_grade;
//}}AFX_DATA
//ClassWizardgeneratedvirtualfunctionoverrides
//{{AFX_VIRTUAL(CDXDDlg)
protected:
virtualvoidDoDataExchange(CDataExchange*pDX);
//DDX/DDVsupport
//}}AFX_VIRTUAL
//Implementation
protected:
HICONm_hIcon;
//Generatedmessagemapfunctions
//{{AFX_MSG(CDXDDlg)
virtualBOOLOnInitDialog();
//初始化对话框
afx_msgvoidOnSysCommand(UINTnID,LPARAMlParam);
afx_msgvoidOnPaint();
afx_msgHCURSOROnQueryDragIcon();
afx_msgvoidOnButtonTest();
//进入测试,调用测试对话框
afx_msgvoidOnButtonSee();
//查看成绩
afx_msgvoidOnIntroduction();
//调用软件简介对话框
afx_msgvoidOnLink();
//调用联系方式对话框
afx_msgvoidOnSetQuestions();
//调用题型设置对话框
afx_msgvoidOnSee();
//调用成绩对话框
afx_msgvoidOnDestroy();
afx_msgvoidOnBest();
voidRefreshDlg(CStringexp);
//{{AFX_DATA(CCalculateDlg)
enum{IDD=IDD_DIALOG_CALCULATE};
CString m_answer;
CString m_expression;
CString m_order;
intm_flag;
intm_k,m_m,m_n;
intm_k1,m_k2;
voidSet_Grade(intflag){
m_flag=flag;
}
CFontm_editFont,m_editFont2,m_editFont3;
// staticCExpression*m_pExp;
staticintm_score;
staticintnIndex;
//nIndex表示回答的次数
static intwrong1,wrong2,wrong3,answer;
//Overrides
//{{AFX_VIRTUAL(CCalculateDlg)
//DDX/DDVsupport
//{{AFX_MSG(CCalculateDlg)
afx_msgvoidOnButtonHand();
afx_ms
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VC 课程设计 小学生 算术 练习 软件