C语言课程设计背单词系统.doc
《C语言课程设计背单词系统.doc》由会员分享,可在线阅读,更多相关《C语言课程设计背单词系统.doc(19页珍藏版)》请在咨信网上搜索。
C语言课程设计背单词系统 19 2020年4月19日 文档仅供参考 综合性程序设计报告 设计题目: 背单词系统 指导教师: XXX 班 级: 学 号: 设 计 者: XXX 成 绩: _______________ 设计时间: 年 月 日 一、 [题目描述] 使用C语言设计一个背单词系统,该系统是帮助学生背诵单词的软件,要求用户能够选择背诵的词库,并能够编辑自己的词库。系统能够给出中文,让学生输入其英文意思,也可输出英文让学生输入中文意思。并判定词义是否正确。如不正确给出提示并要求用户重新输入。如正确给以鼓励。还应有词语预览功能。 基本功能: 词库的维护(单词的添加、修改、删除) 课程预览(单词的展示) 显示中文用户输入英文的背诵方法 显示英文用户输入中文的背诵方法 背诵成绩的记录(本程序设计运行一次程序所背诵的所有单词,答对一个得10分,打错一个扣5分) 二、 [功能模块分解及说明] 1、 树形结构模块图 2、 模块功能概述 程序概述:设计录入词库的结构体,结构体中分别存放英文和中文,整个程序基本上就是关于结构体的操作,其中包括了顺序结构、循环结构、选择结构。 单词添加:用户自己输入单词以及翻译,存入结构体中。 单词修改:首先在词库中找到这个单词(如果没有则提示用户没有该单词),然后用户输入修改后的单词及翻译。 单词删除:先在词库中找到单词,然后将这个单词之后的所有单词顺次前移,实现删除功能。 输出词库:输出结构体存放的单词。 单词测试:用户首先选择测试模式,然后词库中输出现有单词,用户希望结束时输出“jieshu”,而且在这两个函数中计分。 显示成绩:输出测试的成绩。 三、 [设计测试说明] 一、 有关头文件、变量、结构体的说明 1、头文件 #include<stdio.h> #include<stdlib.h> #include<string.h> 2、宏定义 #define N 100 #define S 20 3、全局结构体 struct words//定义一个words结构体 { char e[S];//存放英语单词 char c[S];//相应的汉语翻译 }str[N];//定义结构体变量 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"); printf("\t***********************************************\n"); printf(" 请选择您需要的操作序号<1-6>,按回车结束:"); 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; } 2、往词库中添加词汇 void tianjia() { char ch; do{ printf("录入词库!\n"); printf("请输入英语单词:\n"); scanf("%s",str[p].e); printf("\n请输入相应的中文翻译:\n"); scanf("%s",str[p].c); p++; printf("%s已保存,是否继续录入?y/n!\n",str[p].e); scanf("%s",&ch); }while(ch=='y'); printf("您一共录入%d个单词\n",p); } 3、删除词库中的单词 void shanchu() { int i=0,j; char s[20]; printf("输入您想删除的单词:"); scanf("%s",s); if(p<=0) { printf("没有任何单词,无法删除!\n"); return; } else { for(i=0;i<p;i++) { if(strcmp(s,str[i].e)==0) { printf("已经成功删除!\n"); for(j=i;j<p;j++) { str[j]=str[j+1]; p--; } }//循环实现单词的覆盖 else if(i==p) printf("没有找到您要删除的单词!\n"); } } } 4、修改词库中的单词 void xiugai() { int i=0; char s[S],y[S],z[S]; printf("输入您想修改的单词:"); scanf("%s",s); if(p<=0) { printf("没有任何单词,无法删除!\n"); return; } else { for(i=0;i<p;i++) { if(strcmp(s,str[i].e)==0) { printf("请输入您修改后的英文单词:"); scanf("%s",y); strcpy(str[i].e,y); printf("请输入您修改后的中文翻译:"); scanf("%s",z); strcpy(str[i].c,z); printf("已经成功修改!\n"); } else printf("没有找到您要修改的单词!\n"); } } } 5、输出词库中所有的单词 void shuchu() { int i=0; printf("输出词库中所有的单词!\n"); if(p<=0) { printf("没有任何单词,无法输出!\n"); return; } else { for(i=0;i<p;i++) { printf("英文单词是: %s",str[i].e); printf("\n相应的中文意思是: %s \n",str[i].c); } printf("词库所有单词输出完毕!\n"); } } 6、显示英文用户输入中文的背诵方法 void fanyi1() { int i=0; char f[S]; char over[N]="jieshu"; printf("请输入下面英文单词的翻译,希望结束输入时请输入 jieshu \n"); //顺序输出单词,而且能够随时结束 while(i<p&&strcmp(f,over)!=0)//用户不输入jieshu而且词库中单词没有全部输出时执行循环 { printf("%s ",str[i].e); scanf("%s",&f); if(strcmp(str[i].c,f)==0) { printf("正确!\n"); fenshu+=10; //用于计算分数 } else { printf("很遗憾,正确的翻译为:"); printf("%s\n",str[i].c); fenshu-=5;//用于计算分数 } count1++; i++; } } 7、显示中文用户输入英文的背诵方法 void fanyi2() { int i=0; char f[S]; char over[N]="jieshu"; printf("请输入下面英文单词的翻译,希望结束输入时请输入 jieshu \n"); while(i<p&&strcmp(f,over)!=0) { printf("%s",str[i].c); scanf("%s",&f); if(strcmp(str[i].e,f)==0) { printf("正确!\n"); fenshu+=10; } else { printf("很遗憾,正确的翻译为:"); printf("%s\n",str[i].e); fenshu-=5; } count1++; i++; } } 8、显示测试结果和成绩 void chengji() { printf("本次测试的成绩是:\n"); printf("总共:%d个\n",count1); printf("正确:%d个\n",fenshu); printf("最后得分为(答对一个得10分,答错一个扣5分):%d \n",fenshu); } 四、 [设计体会] 在看到我的选题后,刚开始有点蒙。然后看到要求说必须用到文件,可是文件还没有学,因此我决定先看看文件那部分的内容。大概烦了一遍书以后,我去图书馆找了基本C语言项目实例的书籍,里面好多的实例都给了我很大的启发。之后我就开始着手写我的程序。刚开始我仿照一本书里有的关于商品信息的管理的程序来写。里面涉及的大量的文件操作,使得我有时候看不懂甚至摸不着头脑。迫于时间上的要求,我不得不放弃已经写了200多行的程序,开始换个思路来考虑程序。 考虑到我自己对结构体还是比较熟悉的,因此我想到不使用文件而是直接将单词存放进结构体中。然后整个程序就是对结构体的一系列操作。 在写删除单词这个函数中,我遇到了困难,刚开始没有想到数据覆盖这么一个办法,用了好多很笨的方法可是还没有出效果。最后偶然间在网上看到了关于一片指针覆盖的博客,然后我就想到了这种解决办法,果然奏效了! 经过这次C语言的课程设计,我深深体会到了一门语言的深奥,是值得我去好好学习和深入研究的。就拿这个程序中几个小小细节,比如:while(i<p&&strcmp(f,over)!=0)。这个是我在写测试两个函数的时候遇到的一个小问题。我不知道应该怎么去写这个循环的条件,最后我让一位同学看过我的程序后,帮我解决了这个问题。虽然只是几个简单语句的结合,可是真的是非常的巧妙。因此,经过这次的课程设计让我发现了许多不足,包括对循环、结构体的应用以及字符串处理函数等的认识都存在一定的盲区。 课程设计我算是基本完成,可是其中还是有问题的,我的发现如下: 1、 程序中缺少一些警告语句,比如:“你确定要删除吗?(y/n)”; 2、 很多输出方面的问题,导致我的程序在运行的时候不是很好看,例如单词输出时的格式不是很好; 3、 没有使用清屏函数,使得运行时显得太拥挤; 4、 功能还有很多值得提高的地方:测试的时候只能顺序输出单词,没有设置相应的随机数; 经过两周的努力,我最终还是成功地完成了本次课程设计的要求,虽然有很多问题,可是我觉得这两周我的收获很大,学会了很多。这次课程设计帮我提高了很多。我将收益终生!- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 单词 系统
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【精****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【精****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【精****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【精****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文