《2022年课程设计文档 2.pdf》由会员分享,可在线阅读,更多相关《2022年课程设计文档 2.pdf(9页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、重 庆 理 工 大 学课程设计课程程序设计基础 II 题目 C语言综合程序设计院系名称电脑科学与工程学院班级学生学号指导教师评阅教师时间精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 1 页,共 9 页重庆理工大学课程设计1 1 问题描述编写程序,实现小学生四则运算练习项目。2 需求分析2.1 功能需求用户可以从菜单中选择某种运算进行练习。具体包括: 加法,减法,乘法,除法;用户可以指定每次练习的题目数量、设置练习的总分;每题练习后给出结果正确与否的提示;一次练习结束后,给出用户所得的总分;用户选择退出时,可退出系统。2.2 性能需求系统设计合理,
2、兼顾系统运行速度和系统资源消耗两方面的需求。系统运行稳定,具有健壮性:对用户的非法操作能给予相关处理或提示;防止随意终止、退出程序。由于用户是小学生,系统界面应简单、美观。系统操作简便,具有良好的交互性有准确的提示性信息。3 系统设计3.1 系统功能模块图系统功能模块图如图1 所示:小学生数学题系统选择模块加法模块减法模块乘法模块除法模块菜单模块退出模块打印分数模块图 1 系统功能模块图3.2 系统功能设计各模块的功能及输入输出如下。【菜单模块】【模块名】:showMenu 【功能】 :程序启动时,出现菜单界面。该界面将各功能操作显示成列表,供用户选择。【输入】 :无【返回值】:无精选学习资料
3、 - - - - - - - - - 名师归纳总结 - - - - - - -第 2 页,共 9 页重庆理工大学课程设计2 【选择模块】【模块名】:getChoice 【功能】 :用户输入功能模块的序号,根据用户输入的选项,调用相应的功能模块。【输入】 :无【返回值】:无【加法模块】【模块名】:doAdd 【功能】:用户输入题目数、总分数;随机生成试题。根据用户的答题情况给出用户每题的答题情况,以及总分。【输入】 :无【返回值】:答题总分【模块内部逻辑】: 随机产生两个整数; 显示题目 接收用户输入的答案 判断正确与否,给出提示信息,并统计总分;【减法模块】【模块名】:doSub 【功能】:用
4、户输入题目数、总分数;随机生成试题。根据用户的答题情况给出用户每题的答题情况,以及总分。【输入】 :无【返回值】:答题总分【模块内部逻辑】:同【关键点】:被减数应大于减数【乘法模块】【模块名】:doMul 【功能】:用户输入题目数、总分数;随机生成试题。根据用户的答题情况给出用户每题的答题情况,以及总分。【输入】 :无【返回值】:答题总分【模块内部逻辑】:同【除法模块】【模块名】:doDiv 【功能】:用户输入题目数、总分数;随机生成试题。根据用户的答题情况给出用户每题的答题情况,以及总分。【输入】 :无【返回值】:答题总分【模块内部逻辑】:同【关键点】: 分母不能为 0;被除数应该是除数的倍
5、数。【打印分数模块】精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 3 页,共 9 页重庆理工大学课程设计3 【模块名】:prnScore() 【功能】 :输出一次测试的总分。【输入】 :答题总分【返回值】:无【退出模块】【模块名】:sysExit 【功能】 :退出时,给出“再见”的提示信息。【输入】 :无【返回值】:无3.3 接口及流程设计根据各模块的功能,确定各模块及接口设计如下:void showMenu(); int gerChoice(); int doAdd(); int doSub(); int doMul(); int doDiv(
6、); void prnScore(int score); void sysExit(); 系统整体工作流程如图2 所示:showMenu();choice=getChoice()choice=0Ychoice=1NScore=doAdd()Ychoice=2NScore=doSub()Ychoice=3NScore=doMul()Ychoice=4Score=doDiv()YNNBEGINENDprnScore(Score)Score=0sysExit()图 2 系统整体工作流程图精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 4 页,共 9 页重
7、庆理工大学课程设计4 4 系统测试4.1 菜单模块系统菜单模块的运行结果如图3 所示:4.2 选择模块【输入数据】 1 【结果】运行结果如图4 所示,正常进入到【加法】计算模块【分析】选择模块运行正常【输入数据】 6非法数据【结果】运行结果如图5 所示,提示分数为 0 分【分析】选择模块对非法数据的判定不完整图 3 系统主菜单图 4 输入合法数据的运行结果图 5 输入非法数据的运行结果4.3 计算及分数输出模块【加法模块】运行结果如图6 所示【分析】加法模块运行正常,实现了分数统计。分数输出模块正常运行。【除法模块】运行结果如图7 所示【分析】除法模块运行正常,实现了分数统计。图 6 加法计算
8、的运行结果图 7 除法计算的运行结果4.4 退出模块【退出模块】运行结果如图8 所示精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 5 页,共 9 页重庆理工大学课程设计5 【分析】退出模块正常运行。图 8 计算及分数输出模块5 总结工作总结本次课程设计进行了小学生数学题系统的设计及实现工作。首先通过对系统功能的分析,进行了系统各模块的划分;接着对模块的功能、模块之间的接口,以及系统工作流程进行了详细设计;然后采用 C 语言进行程序编码,实现了小学生数学题系统的全部功能;最后通过选择有针对性的测试数据,对系统进行了充分的测试。测试结果说明,系统的主
9、要功能模块运行正常。实现了系统预期的目标。心得体会附录 源程序代码/* 作者 :cqutLL /2014 年 1 月 1 日/* #include #include #include /* #define numQuestion 10 /* void showMain(); int getChoice(); int doAdd(); int doSub(); int doMul(); int doDiv(); void prnScore(int); void sysExit(); /* /退出模块/* void sysExit() printf( 再见啦 !n); /* /主菜单模块/* vo
10、id showMain() 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 6 页,共 9 页重庆理工大学课程设计6 printf(-n); printf( 小学生数学练习题系统n); printf(-n); printf( 1 加法n); printf( 2 减法n); printf( 3 乘法n); printf( 4 除法n); printf( 0 退出n); printf(-n); printf( 请选择 :); /* /选择模块/* int getChoice() int select; scanf(%d,&select); return
11、 select; /* /加法模块/* int doAdd() int x,y,result,score=0; printf( 下面开始做题啦 :n); srand(unsigned)time(NULL); int k=0; while(knumQuestion) x=rand()%100; y=rand()%100; printf(%d+%d=,x,y); scanf(%d,&result); if(result=x+y) printf( 做对啦 !n); score+=10; else printf( 不对呀,加油哦 !n); k+; return(score); /* /减法模块/* i
12、nt doSub() int x,y,result,score=0; printf( 下面开始做题啦 :n); srand(unsigned)time(NULL); int k=0; while(ky) printf(%d-%d=,x,y); else printf(%d-%d=,y,x); scanf(%d,&result); if(result=x-y) printf( 做对啦 !n); score+=10; else printf( 不对呀,加油哦 !n); 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 7 页,共 9 页重庆理工大学课程设
13、计7 k+; return(score); /* /乘法模块/* int doMul() int x,y,result,score=0; printf( 下面开始做题啦 :n); srand(unsigned)time(NULL); int k=0; while(knumQuestion) x=rand()%100; y=rand()%100; printf(%d%d=,x,y); scanf(%d,&result); if(result=x*y) printf( 做对啦 !n); score+=10; else printf( 不对呀,加油哦 !n); k+; return(score);
14、/* /除法模块/* int doDiv() int x,y,result,score=0; printf( 下面开始做题啦 :n); srand(unsigned)time(NULL); int k=0; while(knumQuestion) x=rand()%100; y=rand()%100; if(x=80) 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 8 页,共 9 页重庆理工大学课程设计8 printf( 非常不错哦 !nn); else printf( 继续努力哦 !nn); /* /主函数/* void main() int
15、choice=0; int score=0; while(1) showMain(); score=0; choice=getChoice(); switch(choice) case 1: score=doAdd();break; case 2: score=doSub();break; case 3: score=doMul();break; case 4: score=doDiv();break; if(choice=0) break; prnScore(score); sysExit(); 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 9 页,共 9 页