欢迎来到沃文网! | 帮助中心 分享知识,传播智慧!
沃文网
全部分类
  • 教学课件>
  • 医学资料>
  • 技术资料>
  • 学术论文>
  • 资格考试>
  • 建筑施工>
  • 实用文档>
  • 其他资料>
  • ImageVerifierCode 换一换
    首页 沃文网 > 资源分类 > DOC文档下载
    分享到微信 分享到微博 分享到QQ空间

    VC++课程设计-小学生算术练习软件.doc

    • 资源ID:860595       资源大小:309.50KB        全文页数:20页
    • 资源格式: DOC        下载积分:20积分
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: QQ登录 微博登录
    二维码
    微信扫一扫登录
    下载资源需要20积分
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,下载更划算!
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    VC++课程设计-小学生算术练习软件.doc

    1、 NO.20 小学生算术练习软件1.课程设计的目的Visual C+程序设计是计算机科学与技术专业的必修专业基础课程,其实践性、应用性很强。实践教学环节是必不可少的一个重要环节。VC+程序设计的设计目的是加深对理论教学内容的理解和掌握,使学生较系统地掌握程序设计及其在网络开发中的广泛应用,基本方法及技巧,为学生综合运用所学知识,利用软件工程为基础进行软件开发、并在实践应用方面打下一定基础。要求学生在设计指导教师的帮助下自行完成各个操作环节,并能实现且达到举一反三的目的,完成一个项目解决一类问题。要求学生能够全面、深入理解和熟练掌握所学内容,并能够用其分析、设计和解答类似问题对此能够较好地理解和

    2、掌握,能够进行简单分析和判断,能编写出具有良好风格的程序,掌握VC+程序设计的基本技能和面向对象的概念和方法,了解菜单、视图/文档、数据库等编程技术。同时培养学生进行分析问题、解决问题的能力,培养学生进行设计分析、设计方法、设计操作与测试、设计过程的观察、理解和归纳能力的提高。提高和加强自己的计算机应用与软件开发能力,使自己由初学者向专业的程序员过渡。培养自己独立分析问题、解决问题、查阅资料以及自学能力,以适应计算机产业日新月异发展的形势。学习和掌握Visual C+程序设计方法以及上机调试技巧,为今后学习其它专业课程打好坚实的基础。检测自己在这一学期对MFC的学习及掌握情况。知道自己的不足,

    3、及时的弥补,也为自己以后如何制定学习计划做一铺垫。VC+程序设计课程设计是计算机科学与技术专业的VC+程序设计课程的综合性实践环节。VC+程序设计是一门实用性很强的学科,是进行软件开发的主要工具,只有进行实际操作,才能将理论知识和实际应用有机的结合起来,锻炼学生分析解决实际问题的能力,提高学生实际运用的能力,为学生毕业设计,日后工作中的软件开发打下良好的基础。2.设计方案论证2.1需求分析基于MFC设计一个小学生进行四则运算的算术练习软件,要求用户界面方便、友好。软件需要完成如下功能:小学生上机练习时,可以根据自身情况选择不同的难度题目进行练习;每次计算机为小学生出多道题目让学生作答,根据完成

    4、答案的正确率与完成时间给出不同的分数;设立一个计时器,记录完成题目所用时间;计算完题目后,给出做题的分析结果,包括对错题数,每道题做对所使用的计算机会,完成题目所用时间以及总成绩等详细信息。2.2设计思路小学生上机练习时,可以选择三个练习等级A,B,C中的一种,其中A级为一位数加减乘除运算,B级为两位数加减乘除运算,C级为三位数加减乘除运算。每次练习计算机为小学生出10个加减乘除运算题目(10道题中分布有加减乘除题目),每个题目有三次计算机会,第一次算对加10分,接着出第二题目;第一次不对,第二次出同样的题目,若算对加8分,接着出第二个题目,若不对再给第三次机会,作对加5分,做不对不加分。每题

    5、只有三次计算机会,依此类推。设立一个计时器,记录10道题目所用时间。计算完10个题目后,给出做题分析结果,包括对错题数,每道题做对所使用的计算机会,10道题目所用时间,总成绩。2.3设计方法根据需求,设计该软件的主要功能如下:(1)能用于小学生的四则运算练习,提高小学生的计算能力;(2)小学生上机练习时,可以选择三个练习等级A,B,C中的一种,其中A级为一位数加减乘除运算,B级为两位数加减乘除运算,C级为三位数加减乘除运算;(3)每次练习计算机为小学生出10个加减乘除运算题目(10道题中分布有加减乘除题目),每个题目有三次计算机会(第一次算对加10分,接着出第二题目;第一次不对,第二次出同样的

    6、题目,若算对加8分,接着出第二个题目;第二次若不对再给第三次机会,作对加5分,做不对不加分。每题只有三次计算机会,依此类推); (4)该软件设有计时器,能查看小学生做完10道题目所花的总时间,用于综合评分;(5)学生做完题后可以点击“评分说明”菜单里的“查看成绩”,查看该次的成绩,成绩单里包括每题的表达式,三次的答案,对错题数,答题时间,以及评分标准等;(6)该软件利用了文件存储,能将每个等级的最佳成绩存在文件中,以便和其他用户进行对比,提高成绩;(7)在答题的过程中,如果想回到主菜单重新进行选择,则只需点击“操作”菜单里的“回到主菜单”即可。如果想退出程序,则只需点击“退出软件”即可。2.4

    7、功能模块设计2.4.1主对话框的设计主对话框包含菜单栏和主窗口。其中菜单栏包含三个菜单:软件说明、评分说明、意见反馈。“软件说明”菜单包含“软件简介”、“退出软件”两个子菜单。其中“软件简介”用以调用软件简介对话框,使新用户对该软件熟悉,减少用户使用的熟悉期;“退出软件”用以从界面正常退出该软件,退出前用文件保存最佳成绩。“评分说明”菜单包含“题型设置”、“查看成绩”、“最佳成绩”三个子菜单。其中“题型设置”向用户介绍该软件的题型、题量、等级、出题方式、方法等,方便用户正确做出选择,能更好的利用该软件;“查看成绩”用于在用户做完10道题后查看所得分数。如果没有答题或答题中途返回主对话框,则用于

    8、存储信息的链表为空,不能显示成绩;“最佳成绩”向现用户展示以往用户的最佳成绩,用于比较,可以起到激励的作用,同时,使软件更加实用和友好。“意见反馈”菜单提供了软件制作者的联系方式,可以让用户和编程者进行交流,方便编程者不断对软件进行改进。主窗口中的单选按钮用于向用户展示本软件的题型,方便用户选用。该对话框的测试按钮(即“开始”),调用了GetTickCount()函数,用于实现计时器的功能。2.4.2答题对话框的设计答题窗口由主对话框进行调用,连续调用十次。每次调用所得的题目都是由计算机随机出的,利用了rand()函数。该对话框的最核心函数即为提交按钮的响应函数,当用户完成运算,将答案输入到光

    9、标所在的文本框即可进入下一次调用,同时,在答完题后按回车也可调用。该函数实现了让用户有三次答题机会的功能,但每次的给分不同。在答对的情况或者三次都答错的情况下,利用链表将数据存在内存中,方便显示成绩单。该链表采用的是头插法。当用户未向答题框输入答案单击“下一题”按钮或回车时,系统弹出“请输入答案!”的提示框提醒用户输入答案,避免因点击过快造成的错误而影响最终成绩的情况发生。该对话框上附有操作按钮,方便用户在答题过程中临时变换所选题目等级,以及随时正确退出该软件,使用户用得方便自如。在答完十道题后自动调用成绩单对话框,便于用户查看成绩。2.4.3成绩单对话框的设计该对话框将用户所做的十道题的做题

    10、细则完全的显示出来。用户做每道题的时候都有三次答题机会,成绩单会将每道题的三次答案以及最终得分都显示在列表中,一目了然,方便用户进行总结和纠错。列表的右侧附有该软件的评分标准,供用户参考,帮助用户提高成绩。下方列有对错题数、所用总时间、总成绩以及以往用户在所选等级段的最佳成绩,方便用户进行比较。浏览完成绩单后点击“确定”按钮或直接关闭成绩单返回主对话框界面。2.4.4主要数据结构由于该软件运行完毕后还要在成绩单中显示每次做题的细节,因此,必须用数据结构将每道题目的所有数据都存起来。该软件采用了类链表这一数据结构来存数据。用类CExpression来存每道题目的所有数据,包括:表达式,三次做题答

    11、案,正确答案、该题得分等信息。2.4.5文件存储文件的存储格式主要有文本格式和二进制格式。文本格式的一个显著优点是可以用文本编辑软件(如记事本)打开文件进行观察和读取。与文本格式不同,二进制格式不能简单的将文件打开编辑。但二进制文件读取速度快,并且能够利用 MFC库进行序列化,是主流的文件输出格式。本软件采用的是文本格式。用于存取各个用户的最佳成绩,方便不同用户之间进行比较,交流。2.5类与函数的设计与实现2.5.1对话框类(1)主对话框类class CDXDDlg : public CDialog/ Constructionpublic:CDXDDlg(CWnd* pParent = NUL

    12、L);/ standard constructorafx_msg void OnExitMain();/AFX_MSGDECLARE_MESSAGE_MAP();(2)答题对话框类(用于用户的练习)class CCalculateDlg : public CDialog/ Constructionpublic:CCalculateDlg(CWnd* pParent = NULL); / standard constructorafx_msg void OnReturn();afx_msg void OnExit();/AFX_MSGDECLARE_MESSAGE_MAP();其中,OnButt

    13、onHand() (提交函数,用于处理答案)为核心函数。使用户能有三次答题机会。在该函数里还运用了链表的头插法来存数据。在初始化函数内运用了生成随机表达式的算法。具体如下:第一个数、第二个数以及运算符都有rand()函数随机生成,再将这三个元素组合起来,加以判断,如果是一个小学生范围内的算术题,则将它作为一道题目,否则,再出一道。该类里还编写了对话框的刷新函数RefreshDlg(),在用户答错的情况下刷新对话框。(3)成绩单对话框类(用于将数据显示出来)class CRecordDlg : public CDialog/ Constructionpublic:CRecordDlg(CWnd*

    14、 pParent = NULL); / standard constructorafx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);/AFX_MSGDECLARE_MESSAGE_MAP();2.5.2表达式类(用于存题目信息)class CExpression public:int m_k1;int m_k2;char m_operator;int m_end;int m_end1;int m_end2;int m_end3;int m_count;CExpression *m_next;;2.6系统总体结构系统对话

    15、框之间的调用关系,如图1所示。主对话框(CDXDDlg)软件简介对话框(CIntroductionDlg)题型设置对话框(CSettingsDlg)答题对话框(CCalculateDlg)联系方式对话框(CLinkDlg)最佳成绩对话框(CBestDlg)成绩单对话框(CRecordDlg)图1 系统对话框调用图答题过程主要运算流程图,如图2所示。开始判断级别判断i是否大于10答题成绩单B级,i=1i10i10i10i=10i=10i+i+图2 答题过程流程图3.设计结果与分析利用微软公司的C+开发工具Microsoft Visual C+ 6.0创建MFC应用程序,添加各种对话框资源、菜单项

    16、,编写代码完成软件的各种功能,软件经过检查修改无误后运行通过操作各个菜单项以及对话框按钮,各部分的功能与菜单提示一致。(1)运行软件,主对话框及各功能菜单如图3、4、5、6所示。图3 主对话框图4 “软件说明”子菜单图5 “评分说明”子菜单图6 “意见反馈”子菜单(2)选择主对话框界面的题型分级,点击“开始”按钮,开始答题,满足用户需求,实现随机出题,答题完成,单击“下一题”或回车调用下一道题目,如图7所示。图7 答题对话框当答案框中输入为空时,弹出对话框提示输入答案,如图8所示。图8 无答案提示框当答题答案回答错误时,弹出对话框提示回答错误并显示错误次数,每道题有3次答题的机会,3次答错后进

    17、入下一题,错误次数不同获得的分数不同。如图9所示。图9 答题错误提示框答题对话框上附有操作菜单,方便用户在答题过程中临时变换所选题目等级,以及随时正确退出该软件,使用户用得方便自如。如图10所示。图10 答题对话框菜单(3)10道题目回答完毕之后系统自动调用成绩单对话框,成绩单会将每道题的三次答案以及最终得分都显示在列表中,一目了然,方便用户进行总结和纠错。列表的右侧附有该软件的评分标准,供用户参考,帮助用户提高成绩。下方列有对错题数、所用总时间、总成绩以及以往用户在所选等级段的最佳成绩,方便用户进行比较。浏览完成绩单后点击“确定”按钮或直接关闭成绩单返回主对话框界面。如图11所示。图11 成

    18、绩单对话框同时“查看成绩”菜单项用于在用户做完10道题后查看所得分数,也可调出成绩单对话框,如果没有答题或答题中途返回主对话框,则用于存储信息的链表为空,不能显示成绩,此时弹出对话框提示无成绩,如图12所示。图12 无成绩对话框(4)在主对话框的菜单栏包含三个菜单:软件说明、评分说明、意见反馈。“软件说明”菜单包含“软件简介”、“退出软件”两个子菜单。其中“软件简介”用以调用软件简介对话框,使新用户对该软件熟悉,减少用户使用的熟悉期。软件简介对话框如图13所示。图13 软件简介对话框“评分说明”菜单包含“题型设置”、“查看成绩”、“最佳成绩”三个子菜单。其中“题型设置”向用户介绍该软件的题型、

    19、题量、等级、出题方式、方法等,方便用户正确做出选择,能更好的利用该软件。题型设置对话框如图14所示。图14 题型设置对话框“最佳成绩”向现用户展示以往用户的最佳成绩,用于比较,可以起到激励的作用,同时,使软件更加实用和友好。最佳成绩对话框如图15所示。图15 最佳成绩对话框“意见反馈”菜单提供了软件制作者的联系方式,可以让用户和编程者进行交流,方便编程者不断对软件进行改进。联系方式对话框如图16所示。图16 联系方式对话框(5)进行非正常操作的模拟:未作题的用户想查看成绩,则弹出“无成绩”的消息。因为链表为空,不能读取数据;主对话框、答题对话框、成绩单里的数据都是只读类型的,防止用户直接进行篡

    20、改;未做完十道题的用户直接返回主界面后,由于无法给分,且链表已重新置空,不弹出成绩单。4.设计体会Visual C+是Microsofe公司开发的基于C和C+语言的集成开发工具,同其他的可视化编程工具一样Visual C+6.0集代码编辑、编译、链接、调试等功能于一体,并提供多种有用的辅助开发工具。学习好VC+是广大计算机专业学生的迫切要求。经过两个星期的VC+课程设计,我在老师和同学的共同帮助下,顺利完成该课程设计,收获很大。在Visual C+程序设计中MFC部分很重要,是需要实践内容。所以在本学期程设计是很及时、很必要的。而且还及时、真正的做到了学以致用。主要是以下几点。基本功要过硬,不

    21、能马虎经常犯犯小错误,提高自己找错纠错能力,通常错误总是那几种,多练习就熟练了。要善于查找资料提高自己的资料查询能力,要善于利用网络来获得知识,获得帮助。开始着手程序设计时,有些功能感觉无从下手,都不知道要干什么。这些问题只要找到相关的资料就会得到提示从而理解所要解决问题的大致方向。有了明确的目的,就可以发挥自己的头脑来完成它了。要善于思考。程序中有些实现难点和最初完成程序时免不了的许多不足就需要自己根据代码认真思考来解决。只有这样才能纠正程序的不足并使其更加人性化。这次课程设计让我学到了很多,不仅是巩固了先前学的MFC程序设计知识,而且也培养了我的动手能力,更令我的创造性思维得到拓展。希望今

    22、后类似这样课程设计、类似这样的锻炼机会能更多些!通过这次课程设计,可以明显地感觉到它弥补了课堂教学和实验中知识的深度和广度方面的不足,也让我进一步掌握了面向过程和面向对象程序设计的基本方法和编程技巧,同时也巩固所学理论知识,虽然花费了不止一点点的时间和精力,不过那确实挺值得的。既让我认识到自己知识方面的缺陷,又培养了我独立分析问题、解决问题的能力。希望在今后的学习中我能够长久的保持这股学习热情,将理论知识化为实际编程能力。努力学好VC+,将所学知识与实践充分结合起来,学好计算机专业课。5.参考文献1 刘新民,蔡琼,白康生.Visual Basic 6.0程序设计M.北京:清华大学出版社,200

    23、4 2 张海荣. Visual C+ 实用教程(第2版)M.北京:电子工业出版社.2004 3 刘於勋等.C+程序设计M.北京:科学出版社,2007:24-125 4 荣钦科技.Visual C+游戏编程基础M.北京:电子工业出版社,2004:42-115 5 揣锦华.面向对象程序设计与VC+实践M.西安:电子科技大学出版社,2005:40-101 6 罗伟坚.Visual C+经典游戏程序设计M.北京:人民邮电出版社,2006:20-85 7 郑莉. C+语言程序设计案例教程M.北京:清华大学出版社,2005.7:30-111附录(1)主对话框类class CDXDDlg : public

    24、CDialog/ Constructionpublic:CDXDDlg(CWnd* pParent = NULL);/ standard constructorCBrush m_brush; /自己加的static DWORD time1,time2;/自己加的static double time;static CExpression *m_exp;static int flag;static int Grade;/用于记录做题等级static int Flag;/用于从计算对话框返回主菜单static int BESTA,BESTB,BESTC;/分别用来存A、B、C级的最高分public:

    25、void SaveAllData();/用来存最高分void LoadAllData();/用来读取最高分/ Dialog Data/AFX_DATA(CDXDDlg)enum IDD = IDD_DXD_DIALOG ;intm_grade;/AFX_DATA/ ClassWizard generated virtual function overrides/AFX_VIRTUAL(CDXDDlg)protected:virtual void DoDataExchange(CDataExchange* pDX);/ DDX/DDV support/AFX_VIRTUAL/ Implement

    26、ationprotected:HICON m_hIcon;/ Generated message map functions/AFX_MSG(CDXDDlg)virtual BOOL OnInitDialog();/初始化对话框afx_msg void OnSysCommand(UINT nID, LPARAM lParam);afx_msg void OnPaint();afx_msg HCURSOR OnQueryDragIcon();afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor); afx_msg void

    27、OnButtonTest();/进入测试,调用测试对话框afx_msg void OnButtonSee();/查看成绩afx_msg void OnIntroduction();/调用软件简介对话框afx_msg void OnLink();/调用联系方式对话框afx_msg void OnSetQuestions();/调用题型设置对话框afx_msg void OnSee();/调用成绩对话框afx_msg void OnDestroy();afx_msg void OnBest();afx_msg void OnExitMain();/AFX_MSGDECLARE_MESSAGE_MA

    28、P();(2)答题对话框类(用于用户的练习)class CCalculateDlg : public CDialog/ Constructionpublic:CCalculateDlg(CWnd* pParent = NULL); / standard constructorvoid RefreshDlg(CString exp);/自己加的/ Dialog Data/AFX_DATA(CCalculateDlg)enum IDD = IDD_DIALOG_CALCULATE ;CStringm_answer;CStringm_expression;CStringm_order;/AFX_DA

    29、TAprotected:int m_flag;public:int m_k,m_m,m_n;int m_k1,m_k2;void Set_Grade(int flag)m_flag=flag;CFont m_editFont,m_editFont2,m_editFont3; /static CExpression* m_pExp;static int m_score;static int nIndex;/nIndex表示回答的次数static int wrong1,wrong2,wrong3,answer;/ Overrides/ ClassWizard generated virtual f

    30、unction overrides/AFX_VIRTUAL(CCalculateDlg)protected:virtual void DoDataExchange(CDataExchange* pDX); / DDX/DDV support/AFX_VIRTUAL/ Implementationprotected:/ Generated message map functions/AFX_MSG(CCalculateDlg)afx_msg void OnButtonHand();virtual BOOL OnInitDialog();afx_msg HBRUSH OnCtlColor(CDC*

    31、 pDC, CWnd* pWnd, UINT nCtlColor);afx_msg void OnClose();afx_msg void OnReturn();afx_msg void OnExit();/AFX_MSGDECLARE_MESSAGE_MAP();(3)成绩单对话框类(用于将数据显示出来)class CRecordDlg : public CDialog/ Constructionpublic:CRecordDlg(CWnd* pParent = NULL); / standard constructor/ Dialog Data/AFX_DATA(CRecordDlg)en

    32、um IDD = IDD_DIALOG_RECORD ;CListCtrlm_list;CStringm_right;CStringm_wrong;CStringm_time;CStringm_total;CStringm_best;/AFX_DATA/ Overrides/ ClassWizard generated virtual function overrides/AFX_VIRTUAL(CRecordDlg)protected:virtual void DoDataExchange(CDataExchange* pDX); / DDX/DDV support/AFX_VIRTUAL/

    33、 Implementationprotected:/ Generated message map functions/AFX_MSG(CRecordDlg)virtual BOOL OnInitDialog();afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);/AFX_MSGDECLARE_MESSAGE_MAP();(4)表达式类(用于存题目信息)class CExpression public:int m_k1;int m_k2;char m_operator;int m_end;int m_end1;int m_end2;int m_end3;int m_count;CExpression *m_next;;沈 阳 大 学


    注意事项

    本文(VC++课程设计-小学生算术练习软件.doc)为本站会员(精***)主动上传,沃文网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知沃文网(点击联系客服),我们立即给予删除!




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服点击这里,给沃文网发消息,QQ:2622162128 - 联系我们

    版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。

    Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1

    陕公网安备 61072602000132号     违法和不良信息举报:0916-4228922