2022年C语言课程设计-背单词系统 .pdf
综合性程序设计报告设计题目 : 背单词系统指导教师 : XXX 班级: 学号: 设 计 者: XXX 成绩: _ 设计时间 : 年 月 日名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 11 页 - - - - - - - - - 一、题目描述 使用 C 语言设计一个背单词系统,该系统是帮助学生背诵单词的软件,要求用户可以选择背诵的词库,并可以编辑自己的词库。系统可以给出中文,让学生输入其英文意思,也可输出英文让学生输入中文意思。并判定词义是否正确。 如不正确给出提示并要求用户重新输入。如正确给以鼓励。还应有词语预览功能。基本功能:词库的维护(单词的添加、修改、删除)课程预览(单词的展示)显示中文用户输入英文的背诵方法显示英文用户输入中文的背诵方法背诵成绩的记录(本程序设计运行一次程序所背诵的所有单词,答对一个得10 分,打错一个扣5 分)二、功能模块分解及说明 1、树形结构模块图2、模块功能概述程序概述:设计录入词库的结构体,结构体中分别存放英文和中文,整个程序基本上就是关于结构体的操作,其中包括了顺序结构、循环结构、选择结构。单词添加:用户自己输入单词以及翻译,存入结构体中。单词修改:首先在词库中找到这个单词(如果没有则提示用户没有该单词),然后用户输入修改后的单词及翻译。单词删除:先在词库中找到单词,然后将这个单词之后的所有单词顺次前移,实现删除功能。输出词库:输出结构体存放的单词。单词测试:用户首先选择测试模式,然后词库中输出现有单词,用户希望结束时输出“jieshu” ,并且在这两个函数中计分。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 11 页 - - - - - - - - - 显示成绩:输出测试的成绩。三、设计测试说明 一、有关头文件、变量、结构体的说明1、头文件#include #include #include 2、宏定义#define N 100 #define S 20 3、全局结构体struct words/ 定义一个 words 结构体 char eS;/存放英语单词char cS;/ 相应的汉语翻译strN;/ 定义结构体变量4、全局变量int fenshu=0; /全局变量,用于统计分数int count1=0;/ 全局变量,用于统计测试单词个数int p=0;/ 全局变量,用于统计单词个数二、程序源代码(函数部分以及系统使用截图)1、主函数int main() int n; char ch,chioch; printf(n); printf(t*n); printf(t* 欢迎使用背单词系统! *n); printf(t* 设计者:郭鑫钢 *n); printf(t* 班级: 31342 学号: 3134205 *n); printf(t*n); printf(t* 1、单词添加 2、单词删除 *n); printf(t* 3、单词修改 4、单词展示 *n); printf(t* 5、英译汉 6、汉译英 *n); printf(t* 7、成绩查询 8、退出系统 *n); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 11 页 - - - - - - - - - printf(t*n); printf( 请选择您需要的操作序号, 按回车结束 :); while(1) scanf(%d,&n); switch(n) /执行相应的函数,实现相应的功能 case 1:tianjia();break; case 2:shanchu();break; case 5:fanyi1();break; case 3:xiugai();break; case 4:shuchu();break; case 6:fanyi2();break; case 7:chengji();break; case 8: printf(你确认要退出吗?y/n!n); scanf(%c%c,&ch,&chioch); if(ch=y|ch=Y) exit(0); / 退出系统的操作 default :printf(你输入了错误的操作,无法执行!); exit(0); return 0; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 11 页 - - - - - - - - - 2、往词库中添加词汇void tianjia() char ch; do printf(录入词库 !n); printf(请输入英语单词:n); scanf(%s,strp.e); printf(n请输入相应的中文翻译:n); scanf(%s,strp.c); p+; printf(%s已保存,是否继续录入?y/n!n,strp.e); scanf(%s,&ch); while(ch=y); printf(您一共录入 %d个单词 n,p); 3、删除词库中的单词void shanchu() int i=0,j; char s20; printf(输入您想删除的单词:); scanf(%s,s); if(p=0) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 11 页 - - - - - - - - - printf(没有任何单词,无法删除!n); return; else for(i=0;ip;i+) if(strcmp(s,stri.e)=0) printf(已经成功删除 !n); for(j=i;jp;j+) strj=strj+1; p-; / 循环实现单词的覆盖else if(i=p) printf(没有找到您要删除的单词!n); 4、修改词库中的单词void xiugai() int i=0; char sS,yS,zS; printf(输入您想修改的单词:); scanf(%s,s); if(p=0) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 11 页 - - - - - - - - - printf(没有任何单词,无法删除!n); return; else for(i=0;ip;i+) if(strcmp(s,stri.e)=0) printf(请输入您修改后的英文单词:); scanf(%s,y); strcpy(stri.e,y); printf(请输入您修改后的中文翻译:); scanf(%s,z); strcpy(stri.c,z); printf(已经成功修改 !n); else printf(没有找到您要修改的单词!n); 5、输出词库中所有的单词void shuchu() int i=0; printf(输出词库中所有的单词!n); if(p=0) printf(没有任何单词,无法输出!n); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 11 页 - - - - - - - - - return; else for(i=0;ip;i+) printf(英文单词是 : %s,stri.e); printf(n相应的中文意思是: %s n,stri.c); printf(词库所有单词输出完毕!n); 6、显示英文用户输入中文的背诵方法void fanyi1() int i=0; char fS; char overN=jieshu; printf(请输入下面英文单词的翻译,希望结束输入时请输入 jieshu n); / 顺序输出单词,并且可以随时结束 while(ip&strcmp(f,over)!=0)/ 用户不输入jieshu并且词库中单词没有全部输出时执行循环 printf(%s ,stri.e); scanf(%s,&f); if(strcmp(stri.c,f)=0) printf(正确! n); fenshu+=10; / 用于计算分数 else printf(很遗憾,正确的翻译为:); printf(%sn,stri.c); fenshu-=5;/ 用于计算分数 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 11 页 - - - - - - - - - count1+; i+; 7、显示中文用户输入英文的背诵方法void fanyi2() int i=0; char fS; char overN=jieshu; printf(请输入下面英文单词的翻译,希望结束输入时请输入 jieshu n); while(ip&strcmp(f,over)!=0) printf(%s,stri.c); scanf(%s,&f); if(strcmp(stri.e,f)=0) printf(正确! n); fenshu+=10; else printf(很遗憾,正确的翻译为:); printf(%sn,stri.e); fenshu-=5; count1+; i+; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 11 页 - - - - - - - - - 8、显示测试结果和成绩void chengji() printf(本次测试的成绩是:n); printf(总共 :%d个 n,count1); printf(正确 :%d个 n,fenshu); printf(最后得分为 ( 答对一个得10 分,答错一个扣5 分) :%d n,fenshu); 四、设计体会 在看到我的选题后, 刚开始有点蒙。 然后看到要求说必须用到文件,可是文件还没有学,所以我决定先看看文件那部分的内容。大概烦了一遍书以后,我去图书馆找了基本C语言项目实例的书籍, 里面好多的实例都给了我很大的启发。之后我就开始着手写我的程序。刚开始我仿照一本书里有的关于商品信息的管理的程序来写。里面涉及的大量的文件操作,使得我有时候看不懂甚至摸不着头脑。迫于时间上的要求,我不得不放弃已经写了200 多行的程序,开始换个思路来考虑程序。考虑到我自己对结构体还是比较熟悉的,所以我想到不使用文件而是直接将单词存放进结构体中。然后整个程序就是对结构体的一系列操作。在写删除单词这个函数中,我遇到了困难, 刚开始没有想到数据覆盖这么一个办法,用了好多很笨的方法但是还没有出效果。最后偶然间在网上看到了关于一片指针覆盖的博客,然后我就想到了这种解决办法,果然奏效了!通过这次 C语言的课程设计, 我深深体会到了一门语言的深奥,是值得我去好好学习和深入研究的。就拿这个程序中几个小小细节,比如:while(ip&strcmp(f,over)!=0)。这个是我在写测试两个函数的时候遇到的一个小问题。我不知道应该怎么去写这个循环的条件,最后我让一位同学看过我的程序后,帮我解决了这个问题。虽然只是几个简单语句的结合,但是真的是非常的巧妙。所以,通过这次的课程设计让我发现了许多不足,包括对循环、结构体的应用以及字符串处理函数等的认识都存在一定的盲区。课程设计我算是基本完成,但是其中还是有问题的,我的发现如下:1、程序中缺少一些警告语句,比如:“你确定要删除吗?(y/n ) ” ;2、很多输出方面的问题,导致我的程序在运行的时候不是很好看,例如单词输出时的格式不是很好;3、没有使用清屏函数,使得运行时显得太拥挤;名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 11 页 - - - - - - - - - 4、功能还有很多值得提高的地方:测试的时候只能顺序输出单词,没有设置相应的随机数;通过两周的努力,我最终还是成功地完成了本次课程设计的要求,虽然有很多问题,但是我觉得这两周我的收获很大,学会了很多。 这次课程设计帮我提高了很多。我将收益终生!名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 11 页 - - - - - - - - -