C语言课程设计报告(算术练习).doc_第1页
C语言课程设计报告(算术练习).doc_第2页
C语言课程设计报告(算术练习).doc_第3页
C语言课程设计报告(算术练习).doc_第4页
C语言课程设计报告(算术练习).doc_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

目 录l 课程设计目的-4l 课程设计要求-4l 课程设计内容-4一、系统结构-51.1 算术练习程序要求-51.2 程序系统结构-5二、程序设计说明-62.1程序描述-62.2功能 -62.3性能-62.4输入项 -72.5输出项 -7三、各模式简述-73.1主函数-73.2练习模式-83.3测试模式-93.4设置模式-11A难度设置-12B类型设置-14C题数设置-153.5查分模式-153.6写入文件-163.7读取文件-173.8时间模块-17l 课程设计心得与体会 -17l 附录1 参考文献-17l 附录2 程序清单 -17 课程设计目的本课程设计是计算机科学与技术专业重要的实践性环节之一,是在学生学习完程序设计语言课程后进行的一次全面的综合练习。本课程设计的目的和任务:1. 巩固和加深学生对C语言课程的基本知识的理解和掌握;2. 掌握C语言编程和程序调试的基本技能;3. 利用C语言进行基本的软件设计;4. 掌握书写程序设计说明文档的能力5. 提高运用C语言解决实际问题的能力。课程设计要求1. 分析课程设计题目的要求;2. 写出详细设计说明;3. 编写程序代码,调试程序使其能正确运行;4. 设计完成的软件要便于操作和使用,有整齐、美观的使用界面;5. 设计完成后提交课程设计报告和源代码文件的电子文档。课程设计内容1. 在指导书提供的课程设计题目中选则了算术练习;2. 用户提供的主操作界面应该方便用户的操作。3. 最后提交的课程设计成果包括:1) 算术练习打印稿;2) 算术练习电子稿;3) 源程序算术练习文件;4) 可执行程序算术练习文件。一、系统结构1.1 算术练习程序要求运行软件,进入选择菜单,显示选项,有五个选项。如图算术练习1. 练习2. 测验3. 设置4. 查看0. 退出练习模式:每答完一题,会显示是否正确,错误的话会显示正确答案,并且询问是否要继续。若选择N则结束,并显示总答题数,正确答题数,及正确率。测验模式:题数为设置中的设定值(可以调节),答题全部结束时可以看到正确结果 和本次测验的成绩,并将其写入文件。设置:1.可以选择难度,有低难度,一般难度,高难度,自定义难度(可以调节);2.可以选择是加减乘除或随机的那种运算;3.可以设定随机数值的大小(可以调节)(设置完成之后自动保存到文件)。查看:可以查看历史最高的测试成绩及上次的成绩,还有各种设定(从文件中读取)。1.2 程序系统结构主菜单测验设置查看练习退出设置难度运算类型简单一般高难度加减乘除混合二、程序设计说明2.1程序描述 本程序的主要功能为人们进行简单的加减乘除运算提供练习和测试的小程序。并且本程序会自动记录下测验的成绩,方便使用者查询自己的成绩,以便提高成绩。2.2功能 该程序的功能:练习模式中会随机出一道加减乘除运算的数学题,然后要求使用者输入一个-999-1000之内的整型数(注意:本程序的除法结果为整数,输入时请省略小数)。如果正确,会输出正确的提示,反之,会出现错误的提示。之后会提问是否继续。测验模式中与联系模式大致相同,只是题数为设定的道题,测试完只后会告诉你答对几题,正确率为多少。2.3性能本程序的输入和输出为整形,范围为-999-1000。小巧灵活,响应速度较快。2.4输入项 本程序的输入项有以下三种,一是输入提问的答案,类型为整型数字字符。二是输入选择项,类型也为整型数字字符,范围为。三为询问是否继续时的按键,类型为任意的字符。输入媒体为键盘和文件。输入数据的来源为使用者的输入和以前保存在文件的信息,安全保密条件为任意。2.5输出项 输出项为各类提示和说明,一般用字符串的方式输出,个别用其他方式输出。不一一列举。三、各模式简述3.1主函数3.11程序描述主函数写的是主菜单,四个主要的子函数分别写的是练习、测验、设置和查看成绩的功能。并且一些常用的重要的功能也写成了子函数,如读取、写入文件等。3.12功能能够输出主菜单,供用户选择。3.13输入项输入所要选择的菜单项目。3.14输出项输出主菜单列表。3.15算法switch等选择结构语句。3.16 流程逻辑开始主菜单输入switch选择练习模块测试模块设置模块查分模块退出返回图一 主菜单3.2练习模式3.21程序描述算术练习3.22功能每答完一题,会显示是否正确,错误的话会显示正确答案,并且询问是否要继续。若选择N则结束,并显示总答题数,正确答题数,及正确率。3.23输入项输入显示的题目的答案。3.24输出项判断输入的答案是否正确,若正确则输出总的题数和做对的题数,并询问是否继续答题;若输入的答案不正确,则先输出正确答案再输出总的题数和做对的题数,并询问是否继续答题。3.25算法选择结构语句,循环结构语句,rand( )随机数。3.26流程逻辑开始显示问题输入答案判断是否正确输出错误输出正确判断是否继续返回函数NYYN图二:练习模式3.3测试模式3.31程序描述题数为设置中的设定值(可以调节),答题全部结束时可以看到正确结果 和本次测验的成绩,并将其写入文件。3.32功能能够输出题目,并提供准确的答案提供准确率。3.33输入项输入显示的题目的答案。3.34输出项判断答案是否正确,并在答完所有题目后输出作对题目的道数,并计算准确率。3.35算法选择结构语句,循环结构语句。3.36流程逻辑开始是否大于设置题数显示题目输入答案判断是否正确提示正确提示错误题数加一题数为零返回函数NYYN图三 测试模式3.4设置模式3.41程序描述1.可以选择难度,有低难度,一般难度,高难度,自定义难度(可以调节);2.可以选择是加减乘除或随机的那种运算;3.可以设定随机数值的大小(可以调节)(设置完成之后自动保存到文件)。3.42功能位数:设置参加运算数的位数(1 3位)。运算符:加法,减法,乘法,除法,随即运算。3.43输入项结果。3.44输出项判断是否正确,输出答对题数和准确率。3.45算法3.46流程逻辑开始Switch选择设置难度设置类型设置题数输入返回返回返回返回保存入文件保存入文件保存入文件图四:设置模式A难度设置a.功能设置题目的难易程度,分低难度(数字范围为1-9)、中等难度(数字范围为1-99)、高难度(数字范围为1-999)和自定义难度。b.输入项输入想选择的对应编号数字。c.输出项返回主菜单。d.算法选择结构。e.流程逻辑开始输入低难度(数字范围为1-9)中等难度(数字范围为1-99)高难度(数字范围为1-999)自定义难度返回上一层返回B类型设置a.功能设置加减乘除或随机五种选择。b.输入项输入相应数字编号。c.输出项 返回主菜单。d.算法选择结构。e.流程逻辑开始输入加法乘法除法结束减法随机C题数设置a.功能设置每次做题的量。b.输入项输入相应数字编号。c.输出项 返回主菜单。d.算法选择结构。开始e.流程逻辑返回设置题数设置类型设置难度输入结束3.5查分模式3.51程序描述 此函数进行对测验成绩的记录,并将测验的结果显示在终端。3.52功能 查看成绩。3.53输入项 无。3.54输出项用printf()输出,在屏幕上显示结果3.6写入文件文件1:设置(随即数位数及运算)记录文件;每次可读取上一次的设置。文件2:测验成绩(成绩,测验日期,测验时间)记录文件。文件3:测验题数记录文件,每次测验如无设置自动读取上一次设置。3.7读取文件每次程序运行时可自动读取上一次的设置,如第一次运行或设置文件被删除则会提示用户要求设置。3.8时间模块开始产生当前时间保存到结构体中结束课程设计心得与体会 通过两周的课程设计,让我对C语言有了更进一步的了解,以往不清楚的部分也通过实践有了更深的了解。这是我第一次尝试编写比较大的程序,在很多方面依然存在着不足。尤其在文件的存储和结构体模块,大大加强了我对概念和小细节的理解和把握。同时也让我知道的编程的艰辛,以后的路任重而道远。总之,这次课程设计让我收益非浅。对我将来的学习很有帮助。附录1参考文献1谭浩强. C程序设计 北京:清华大学出版社2谭浩强. C程序设计题解与上机指导 北京:清华大学出版社3林小茶 C程序设计实训 北京:清华大学出版社4C语言课程设计 北京:电子工业出版社附录2程序清单#includestdio.h#includestdlib.h#includetime.h#define GLN 最近得分:%dn最高分:%dn难度系数:%dn运算类型:%dn是否随机:%dn测试题数:%d FILE *fp; /定义文件型指针变量 struct baocun int num; /测试题数 int score; /最近一次的得分 int highscore; /历史最高得分 int ndk; /难度系数 int type; /加减乘除类型 int type1; /是否随机 ; struct baocun xinxi; int tishu1,tishu2; / /下列为申明函数 void chongzhi(); /重置(把所有值变成默认值) void tc(); /退出 void sp(); /分割符号 void f0(); /主界面 void f1(); /练习模块 void f2(); /测验模块 void f3(); /设置模块 void f4(); /查分模块 void read(); /读取文件 void write(); /写入文件 /int num,ndk=10,type=1,type1=1;/main()f0();/void f0() /主菜单 char ch;read(); lp:int n; printf(nnn);sp();printf(nttt 主 菜 单nn);printf(tttt 1.练习nn);printf(tttt 2.测试nn);printf(tttt 3.设置nn);printf(tttt 4.查看nn);printf(tttt 0.退出n);sp();printf(nt 请输入数字选择(0-4):);scanf(%d,&n);switch(n)case 0:tc();break;case 1:f1();break;case 2:f2();break;case 3:f3();break;case 4:f4();break;default:printf(t 选择错误!);ch=getchar();goto lp;/void f1() /练习模式 srand( time(NULL) ); /以时间做种子初始化随机数发生器tishu1=0;tishu2=0;int x1,x2,x3,x4;char b1,ch;printf(n); dosp();tishu1=tishu1+1; /总题数 if(xinxi.type1=1)xinxi.type=rand()%4+1;x1=rand()%xinxi.ndk+1; /随机数 x2=rand()%xinxi.ndk+1; /随机数printf(nt %d. %d,tishu1,x1);switch(xinxi.type)case 1:printf(+);x4=x1+x2;break; /x4为正确答案 case 2:printf(-);x4=x1-x2;break; case 3:printf(*);x4=x1*x2;break;case 4:printf(/);x4=x1/x2;break;printf(%d=,x2);scanf(%d,&x3); /x3为输入答案 if(x3=x4)printf(nnt (*_*)恭喜你,你做对了!nnnn);tishu2=tishu2+1; /答对题数 elseprintf(nnt (!-_-!)你做错了!ntttttt正确答案为%dn,x4); printf(tttttt共做%d道,做对%d道n,tishu1,tishu2);ch=getchar();printf(nt 请问是否继续?(按y继续,按n返回主菜单);scanf(%s,&b1);printf(n);while(b1!=n); /当变量bl不等于n时执行 /void f2() /测验模式 char ch; int j,x1,x2,x3,x4,zql; /zql:正确率 srand( time(NULL) );tishu2=0;printf(n);for(j=1;jxinxi.highscore)xinxi.highscore=xinxi.score;write();/void f3() /设置模式 int n;void f31();void f32();void f33(); printf(nnn);sp();printf(ntttt设 置nn);printf(tttt1.设置难度nn);printf(tttt2.设置运算类型nn);printf(tttt3.设置测验题数nn);printf(tttt4.恢复默认值nn); printf(tttt0.返回主菜单nn);sp();printf(nt 请选择(0-4):);scanf(%d,&n);switch(n)case 0:return;break;case 1:f31();break;case 2:f32();break;case 3:f33();break;case 4:chongzhi();write();break;default:printf(选择错误!);exit(2); /如果错误就返回 /void f31() /设置中的难度设置 void f311();int n; printf(nnn);sp();printf(ntttt设 置 难 度nn);printf(tttt1.低难度(数字范围为1-9)nn);printf(tttt2.中等难度(数字范围为1-99)nn);printf(tttt3.高难度(数字范围为1-999)nn);printf(tttt4.自定义难度nn);printf(tttt0.返回上一层nn);sp();printf(nt 请选择(0-4):);scanf(%d,&n);switch(n)case 0:f3();break;case 1:xinxi.ndk=9;break;case 2:xinxi.ndk=99;break;case 3:xinxi.ndk=999;break;case 4:f311();break; /设置难度系数xinxi.ndk default:printf(选择错误!);exit(3); write(); /void f311() /设置自定义难度 sp();printf(ntttt自 定 义 难 度nn);doprintf(nnnt 请输入随机数的最大值(请输入1-65535的整数):);scanf(%d,&xinxi.ndk);if(xinxi.ndk65535)printf(nnnt 警告:输入的随机数最大值超过给定范围nn);while(xinxi.ndk65535);/void f32() /设置中的类型设置 int n;printf(nnn);sp();printf(nttt 设 置 运 算 类 型nn);printf(tttt1.加法(+)nn);printf(tttt2.减法(-)nn); printf(tttt3.乘法(*)nn);printf(tttt4.除法(/)nn);printf(tttt5.随机运算nn);printf(tttt0.返回上一层nn);sp();printf(nt 请选择(0-5):);scanf(%d,&n);switch(n)case 0:f3();break;case 1:xinxi.type=1;xinxi.type1=0;break; /设置运算类型为+ case 2:xinxi.type=2;xinxi.type1=0;break; /设置运算类型为-case 3:xinxi.type=3;xinxi.type1=0;break; /设置运算类型为*case 4:xinxi.type=4;xinxi.type1=0;break; /设置运算类型为/case 5:xinxi.type1=1;break; /设置运算类型为随机 default:printf(选择错误!);exit(1); write();/void f33() /设置测验题数void f331();int n;printf(nnn);sp();printf(nttt 设 置 测 验 题 数nn);printf(tttt1.10题nn);printf(tttt2.20题nn);printf(tttt3.30题nn);printf(tttt4.自定义题数nn);printf(tttt0.返回上一层nn);sp();printf(nt 请选择(0-4):);scanf(%d,&n);switch(n)case 0:f3();break;case 1:xinxi.num=10;break; case 2:xinxi.num=20;break; case 3:xinxi.num=30;break; case 4:f331();break; default:printf(选择错误!);exit(1); write();/void f331() /设置自定义测试题数 sp();printf(ntttt 自 定 义 测 试 题 数nn);doprintf(nnnt 请输入测试题数(请输入1-100的整数):);scanf(%d,&xinxi.num);if(xinxi.num100) /如果输入的题数小于1 或 大于100 printf(nnnt 警告:输入题数超过给定范围nn);while(xinxi.num100);write();/void f4() /查看成绩的子函数 char d50; /输入50个字符 struct tm *p; /一个指针一个变量 size_t h=50;time_t k;k=time(NULL); /记录系统当前时间 char ch;printf(n);sp();printf(ntttt查 看nn);printf(t 当前设置为:nn);printf(ttt 测试题数为%d题nn,xinxi.num);printf(ttt 随机最大数值为%dnn,xinxi.ndk);printf(ttt 算法类型为);if(xinxi.type1=1)printf(随机运算nn);elseif(xinxi.type=1)printf(加法运算nn);if(xinxi.type=2)printf(减法运算nn);if(xinxi.type=3)printf(乘法运算nn);if(xinxi.type=4)printf(除法运算nn);if(xinxi.score=-1)printf(ttt 没有进行过任何测试,无成绩nn);elseprintf(ttt 上次得分为%dnn,xinxi.score);printf(ttt 历史最高得分为%dnn,xinxi.highscore);printf(tt当前时间n);p=localtime( &k);strftime(d,h,%Y,p);printf(ttt 年份:%sn,d);strftime(d,h,%x,p);printf(ttt 日期:%sn,d);strftime(d,h,%X,p);printf(ttt 时间:%sn,d);printf(nnnnnttt 按回车键返回主菜单);ch=getchar();ch=getch

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论