《C++程序设计》课程设计--基于记录的应用程序设计.docx

上传人:夺命阿水 文档编号:889972 上传时间:2024-01-08 格式:DOCX 页数:9 大小:104.22KB
返回 下载 相关 举报
《C++程序设计》课程设计--基于记录的应用程序设计.docx_第1页
第1页 / 共9页
《C++程序设计》课程设计--基于记录的应用程序设计.docx_第2页
第2页 / 共9页
《C++程序设计》课程设计--基于记录的应用程序设计.docx_第3页
第3页 / 共9页
《C++程序设计》课程设计--基于记录的应用程序设计.docx_第4页
第4页 / 共9页
《C++程序设计》课程设计--基于记录的应用程序设计.docx_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《《C++程序设计》课程设计--基于记录的应用程序设计.docx》由会员分享,可在线阅读,更多相关《《C++程序设计》课程设计--基于记录的应用程序设计.docx(9页珍藏版)》请在课桌文档上搜索。

1、课程设计报告书C+程序设计课程设计学院专业数学与应用数学(统计方向)教师评语教师签名:日期:成绩评定备注基于记录的应用程序设计一、选题背景本课题应解决的主要问题:编写一个应用程序实现程序化教学应达到的技术要求:该程序可以完成以下功能:向学生提问题;从学生处获得答案;根据学生的答案继续选择下一个问题。本设计的指导思想:在程序中表示教学课程所需的信息;在设计阶段,设计一个合适的数据结构;将数据文件使用的外部表示转换为程序内部表示;编写程序对内部数据库进行操作。二、方案论证(概要设计)设计原理(理念):在老师所给的参考数据结构设计及函数原型设计的基础上,略加修饰,填充函数原型的内部结构,使得函数具备

2、所需要的功能,最终能使程序实现程序化教学。例如:voidReadQuestionText(ifstream&infile,question?*q)这个函数将问题的文本读入问题数据结构,这必须由调用才可分配。这个问题文本结束的标志是EndMarker,即“”的标记。voidReadAnswers(ifstreaminfile,questionT*q)这个函数将问题答案的文本读入答案数据结构。voidAskQuestion(intnum)这个函数用于提出问题。voidWriteQuestionText(questionT*q)这个函数根据问题序号显示问题题目内容。voidFindWriteAnsw

3、er(stringans,questionT*q)这个函数用于查找与输入答案匹配的内容。三、过程论述(详细设计)1 .数据结构设计*类型名:answerT,这个结构提供空间给每个问题可能的答案structanswer!(stringans;intnextq;);定义answer!为结构体类型,其中包括一个字符串变量ans和一个整型变量nextq,而ans用于储存一个问题的一个答案,nextq用于储存下一个问题的题号。nextq的储存示意图ans的储存示意图*类型名:questions这个结构提供空间给问题和相应的答案structquestion?stringqtextMaxLinesPerQu

4、estion+1;answerTanswersMaxAnswersPerQuestion;intnnswers;intlinenumber;);定义questionT为结构体类型,其中包括字符串数组qtext、属于answerT类型的数组answers、整形变量nAnswers和IinenUmber,而qtext用于储存一个问题的文本,answers用于储存一个问题的每一个答案,nAnswers用于储存一个问题相应答案的个数,linenumber用于储存每个问题所占行数的行号。qtext n的储存示意图answers LmJ的储存示息图共m个类型为T类型的answerT的结构体nAnswers

5、的储存示意图Linenumber的储存示意图*类型名:CourseDB,这个结构提供空间给文件主题和问题structCourseDBstringtitle;question!questionsMaxQuestions+1;);定义courseDB为结构体类型,其中包括字符串变量title和属于question1类型的数组questons,而title用于储存题目文本,questions用于储存问题和相应的答案。CourseDB的储存示意图questionsN 的储存示意图C+程序设计复习1复习int或bool类型?输入:int/bool请选择:int :2bool:102判断题:int可以有小

6、数部分。请输入:(对/错)对:3错:53答错了!浮点数有小数部分,整数没有。判断题:int可以取负值。请输入:(对错)对:5错:44答错了 !你必须再复习一下课本。要重新测试吗?(是/否)是:1 否:T说明:如左图所示,首行为文本题目(尽量控制在一行内且不能出现空格,否则会出现问题),其次是问题的布局,每一个问题的首行为问题的序号1、2、3、,接着换行写入问题的主要内容,问题完毕后,换行,以“”为标志,划分问题内容文本与程序执行文本,写入每一个正确答案之后以“:”分隔(注意:此处的冒号是英文的冒号而非中文的冒号),写入下一题的题号,再换行。直至将每一个问题文本写入后,增添最后一个问题,且对于最

7、后一个问题“”以上的内容要提示操作者是否重新测试,“”以下的内容为:是:1否:T在输完文本后,最后要空留一行,即按一下回3.函数设计说明:* 函数原型:voidReadQuestionText(infile,question);函数功能:这个函数将问题的文本读入问题数据结构,记录问题文本所占用的行数。这个问题文本结束的标志是EndMarker,即“”的标记。函数算法描述:先定义Ch为字符串变量,再从文件中读取一行数据储存于字符串变量Ch中,如若Ch不等于结束标志“”且不是空行,则使问题文本行数增加1,最后可得问题文本所占用的总行数。* 函数原型:voidReadAnswers(ifstream

8、&infile,question1函数原型:void AskQuestion (int num)函数功能:这个函数用于提出问题,这必须由调用才可分配,无返回值。函数算法描述:通过循环,调用WriteQUeStionTeXt函数输出问题,再由测试者从函数中 输入答案,再调用FindWriteAnswer函数返回下一题题号赋值于num,如果num的值为下q)函数功能:这个函数将问题答案的文本及其相应的题号读入答案数据结构。函数算法描述:在分界符“后,用q-answers+(q-nAnswers).ans数组分别将各个答案储存起来,再以答案后的“:”为标志,用q-answersq-nAnswers.

9、nextq数组将其后的题号存储起来。* 函数原型:VOidWriteQuestionText(question1*q)函数功能:这个函数根据问题序号显示问题题目内容函数算法描述:通过循环,将每一个问题的文本一行行地输出。* 函数原型:intFindWriteAnswer(stringans,question!*q,intnum)函数功能:这个函数用于查找并返回与答案匹配的相应的题号。函数算法描述:从主调函数中,传入参数ans、结构体questionT的地址和题号num,通过循环,倘若输入的答案与所给答案相同,则返回相应答案的下一题题号,倘若不相同,则返回原题号num0一题号,则再次执行循环,如

10、果num的值为-1,则跳出循环。四、结果分析1.测试方法:先输入文件名(文件名后需添加“.dat”),再按回车键则如图显示:BlF:CYuYanbinwwtemp.exeEH输入文件名:(如3.det)f3.data测试:一分种测出你IUl实的一面你IBrt的恋人电话给你,你接不接?拼营摘入法半:再按题目指示输入答案:如果输错答案,程序会把题目重新显示并要求再次输入:F:CYuYanbinwwtemp.exe愉入文件名:(如f3.dat)f3.dat心理测试:一分钟测出你最良安的一面你旧时的恋人电话给你,你接不接?输入:接不接接害炊唾怎样的床?输入:单人床不入床者杯战无此答案选顼喜淑卷怎样的床

11、?输入:单人床/5认床请选择:搜拘拼献跳法半:当全部题目完成后,程序会问是否重新测试,若输入是,则返回第一题重新测试:伤心的时候毫欢怎徉?A、一个人呆看B、找人做诉洽入:A/B请送择:F:CYuYanbinwwtem p.exe磁项一一假面关谈词:热情不了解你的人常匍认为你乐观开朗,热情洋洛,是火红色的一只长毛孤理。只有天天跟你住在一起的人才会了解到你的忧郁、冷峥以及总规的灵魂,俨然是一只雪白的兔子那么你这样好峥的兔于为什么会披上掂狸的外衣呢?迫其究竟,那是你强烈的责任用和与生俱来的善良友好,催化体化身九尾火孤跳默着,奔跑着,很多时候你甚至会觉得这与火狐狸皮让自己心央燥热。是否要重新测试?是/

12、否)输入:是危请送搽:是你旧时的恋人电话给你,礴不接?治入:接/不接请送授:搜狗拼音输入法半:若输入否,则结束程序:F:CYuYanbinwwtemp.exe伤心的时候百欢怎样?A人臬着B、找人倾诉:A话选捶:B选项一一假面关说伺:亲切你温柔舒缓的气质让人觉得亲切得像认识已久的老朋友,但是,事实上,你是个易接近却难了解的人,你并不喜欢把你自己的人生轻易吐塞他人。: 态和礼貌。换句话来说,你往往对陌生人才会施展出你I 的老狼,只有你的至交好左才会了解你的古怪和疯狂。 是否要重打测试?(是/否)陶A:是/否请选跖否你来说很多时候更像是一种心:和力,航像是躲在床上装成祖母B谢谢参与,再会!Press

13、anykeytocontinue寸姊的音摘入法半:2.调试过程总结:* 编译时遇到的主要典型错误:编程时循环范围掌握不当,导致达不到原有目的,甚至陷入死循环。解决方案:重新思考,适当控制循环范围,使循环能够顺利跳出。* 连接时遇到的主要典型错误:文件名输入错误,少输入了“.dat”。解决方案:补充.dat”即可。* 编译和连接都成功,但结果不对时,主要典型错误:当在某个问题里输入了与所供选答案都不同时,程序会直接跳出循环,结束程序,而不是重新问问题。解决方案:修改循环中的某个函数的返回值,使得输入错误答案不结束程序,而是再次询问同一问题。五、课程设计总结本程序设计基本上能够按要求实现程序化教学,但尚存在不足,如题目不能超过一行,否则编程就会出现错误,为了改进这个缺点,设置多个titleKtitle2.分别储存多行题目,利用循环,一旦遇到空行则跳出循环。通过本次程序设计,学会了如何让程序与外界文件结合,并加深了对一些程序常识的理解。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 在线阅读 > 生活休闲


备案号:宁ICP备20000045号-1

经营许可证:宁B2-20210002

宁公网安备 64010402000986号