C语言课程设计背单词系统.docx
《C语言课程设计背单词系统.docx》由会员分享,可在线阅读,更多相关《C语言课程设计背单词系统.docx(10页珍藏版)》请在冰点文库上搜索。
C语言课程设计背单词系统
综合性程序设计报告
设计题目:
背单词系统
指导教师:
XXX
班级:
学号:
设计者:
XXX
成绩:
_______________
设计时刻:
年月日
一、[题目描述]
利用C语言设计一个背单词系统,该系统是帮忙学生背诵单词的软件,要求用户能够选择背诵的词库,并能够编辑自己的词库。
系统能够给出中文,让学生输入其英文意思,也可输出英文让学生输入中文意思。
并判定词义是不是正确。
如不正确给出提示并要求用户从头输入。
如正确给以鼓舞。
还应有词语预览功能。
大体功能:
词库的保护(单词的添加、修改、删除)
课程预览(单词的展现)
显示中文用户输入英文的背诵方式
显示英文用户输入中文的背诵方式
背诵成绩的记录(本程序设计运行一次程序所背诵的所有单词,答对一个得10分,打错一个扣5分)
二、[功能模块分解及说明]
1、树形结构模块图
2、模块功能概述
程序概述:
设计录入词库的结构体,结构体中别离寄存英文和中文,整个程序大体上确实是关于结构体的操作,其中包括了顺序结构、循环结构、选择结构。
单词添加:
用户自己输入单词和翻译,存入结构体中。
单词修改:
第一在词库中找到那个单词(若是没有那么提示用户没有该单词),然后用户输入修改后的单词及翻译。
单词删除:
先在词库中找到单词,然后将那个单词以后的所有单词按序前移,实现删除功能。
输出词库:
输出结构体寄存的单词。
单词测试:
用户第一选择测试模式,然后词库中输显现有单词,用户希望终止时输出“jieshu”,而且在这两个函数中计分。
显示成绩:
输出测试的成绩。
三、[设计测试说明]
一、有关头文件、变量、结构体的说明
一、头文件
#include<>
#include<>
#include<>
二、宏概念
#defineN100
#defineS20
3、全局结构体
structwords
;
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、删除词库中的单词
voidshanchu()
{
inti=0,j;
chars[20];
printf("输入您想删除的单词:
");
scanf("%s",s);
if(p<=0)
{
printf("没有任何单词,无法删除!
\n");
return;
}
else
{
for(i=0;i
{
if(strcmp(s,str[i].e)==0)
{
printf("已经成功删除!
\n");
for(j=i;j
{
str[j]=str[j+1];
p--;
}
}
==0)
{
printf("请输入您修改后的英文单词:
");
scanf("%s",y);
strcpy(str[i].e,y);
printf("请输入您修改后的中文翻译:
");
scanf("%s",z);
strcpy(str[i].c,z);
printf("已经成功修改!
\n");
}
else
printf("没有找到您要修改的单词!
\n");
}
}
}
五、输出词库中所有的单词
voidshuchu()
{
inti=0;
printf("输出词库中所有的单词!
\n");
if(p<=0)
{
printf("没有任何单词,无法输出!
\n");
return;
}
else
{
for(i=0;i
{
printf("英文单词是:
%s",str[i].e);
printf("\n相应的中文意思是:
%s\n",str[i].c);
}
printf("词库所有单词输出完毕!
\n");
}
}
六、显示英文用户输入中文的背诵方式
voidfanyi1()
{
inti=0;
charf[S];
charover[N]="jieshu";
printf("请输入下面英文单词的翻译,希望终止输入时请输入jieshu\n");;
scanf("%s",&f);
if(strcmp(str[i].c,f)==0)
{
printf("正确!
\n");
fenshu+=10;;
fenshu-=5;
;
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++;
}
}
八、显示测试结果和成绩
voidchengji()
{
printf("本次测试的成绩是:
\n");
printf("总共:
%d个\n",count1);
printf("正确:
%d个\n",fenshu);
printf("最后得分为(答对一个得10分,答错一个扣5分):
%d\n",fenshu);
}
四、[设计体会]
在看到我的选题后,刚开始有点蒙。
然后看到要求说必需用到文件,可是文件尚未学,因此我决定先看看文件那部份的内容。
可能烦了一遍书以后,我去图书馆找了大体C语言项目实例的书籍,里面好多的实例都给了我专门大的启发。
以后我就开始着手写我的程序。
刚开始我仿照一本书里有的关于商品信息的治理的程序来写。
里面涉及的大量的文件操作,使得我有时候看不懂乃至摸不着头脑。
迫于时刻上的要求,我不能不舍弃已经写了200多行的程序,开始换个思路来考虑程序。
考虑到我自己对结构体仍是比较熟悉的,因此我想到不利用文件而是直接将单词寄存进结构体中。
然后整个程序确实是对结构体的一系列操作。
在写删除单词那个函数中,我碰到了困难,刚开始没有想到数据覆盖这么一个方法,用了好多很笨的方式可是尚未出成效。
最后偶然间在网上看到了关于一片指针覆盖的博客,然后我就想到了这种解决方法,果然奏效了!
通过这次C语言的课程设计,我深深体会到了一门语言的深奥,是值得我去好勤学习和深切研究的。
就拿那个程序中几个小小细节,比如:
while(i
=0)。
那个是我在写测试两个函数的时候碰到的一个小问题。
我不明白应该怎么去写那个循环的条件,最后我让一名同窗看过我的程序后,帮我解决了那个问题。
尽管只是几个简单语句的结合,可是真的是超级的巧妙。
因此,通过这次的课程设计让我发觉了许多不足,包括对循环、结构体的应用和字符串处置函数等的熟悉都存在必然的盲区。
课程设计我算是大体完成,可是其中仍是有问题的,我的发觉如下:
1、程序中缺少一些警告语句,比如:
“你确信要删除吗?
(y/n)”;
2、很多输出方面的问题,致使我的程序在运行的时候不是专门好看,例如单词输出时的格式不是专门好;
3、没有利用清屏函数,使得运行时显得太拥堵;
4、功能还有很多值得提高的地址:
测试的时候只能顺序输出单词,没有设置相应的随机数;
通过两周的尽力,我最终仍是成功地完成了本次课程设计的要求,尽管有很多问题,可是我感觉这两周我的收成专门大,学会了很多。
这次课程设计帮我提高了很多。
我将收益终生!