C语言课程设计背单词系统.docx

上传人:b****3 文档编号:4008702 上传时间:2022-11-27 格式:DOCX 页数:13 大小:78.78KB
下载 相关 举报
C语言课程设计背单词系统.docx_第1页
第1页 / 共13页
C语言课程设计背单词系统.docx_第2页
第2页 / 共13页
C语言课程设计背单词系统.docx_第3页
第3页 / 共13页
C语言课程设计背单词系统.docx_第4页
第4页 / 共13页
C语言课程设计背单词系统.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

C语言课程设计背单词系统.docx

《C语言课程设计背单词系统.docx》由会员分享,可在线阅读,更多相关《C语言课程设计背单词系统.docx(13页珍藏版)》请在冰豆网上搜索。

C语言课程设计背单词系统.docx

C语言课程设计背单词系统

 

C语言课程设计背单词系统

 

 

综合性程序设计报告

 

设计题目:

背单词系统

指导教师:

XXX

班级:

学号:

设计者:

XXX

成绩:

_______________

设计时间:

年月日

一、[题目描述]

使用C语言设计一个背单词系统,该系统是帮助学生背诵单词的软件,要求用户能够选择背诵的词库,并能够编辑自己的词库。

系统能够给出中文,让学生输入其英文意思,也可输出英文让学生输入中文意思。

并判定词义是否正确。

如不正确给出提示并要求用户重新输入。

如正确给以鼓励。

还应有词语预览功能。

基本功能:

词库的维护(单词的添加、修改、删除)

课程预览(单词的展示)

显示中文用户输入英文的背诵方法

显示英文用户输入中文的背诵方法

背诵成绩的记录(本程序设计运行一次程序所背诵的所有单词,答对一个得10分,打错一个扣5分)

二、[功能模块分解及说明]

1、树形结构模块图

2、模块功能概述

程序概述:

设计录入词库的结构体,结构体中分别存放英文和中文,整个程序基本上就是关于结构体的操作,其中包括了顺序结构、循环结构、选择结构。

单词添加:

用户自己输入单词以及翻译,存入结构体中。

单词修改:

首先在词库中找到这个单词(如果没有则提示用户没有该单词),然后用户输入修改后的单词及翻译。

单词删除:

先在词库中找到单词,然后将这个单词之后的所有单词顺次前移,实现删除功能。

输出词库:

输出结构体存放的单词。

单词测试:

用户首先选择测试模式,然后词库中输出现有单词,用户希望结束时输出“jieshu”,而且在这两个函数中计分。

显示成绩:

输出测试的成绩。

三、[设计测试说明]

一、有关头文件、变量、结构体的说明

1、头文件

#include

#include

#include

2、宏定义

#defineN100

#defineS20

3、全局结构体

structwords//定义一个words结构体

{

chare[S];//存放英语单词

charc[S];//相应的汉语翻译

}str[N];//定义结构体变量

4、全局变量

intfenshu=0;//全局变量,用于统计分数

intcount1=0;//全局变量,用于统计测试单词个数

intp=0;//全局变量,用于统计单词个数

二、程序源代码(函数部分以及系统使用截图)

1、主函数

intmain()

{

intn;

charch,chioch;

printf("\n");

printf("\t***********************************************\n");

printf("\t**欢迎使用背单词系统!

**\n");

printf("\t**设计者:

郭鑫钢**\n");

printf("\t**班级:

*****学号:

*********\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)

{//执行相应的函数,实现相应的功能

case1:

tianjia();break;

case2:

shanchu();break;

case5:

fanyi1();break;

case3:

xiugai();break;

case4:

shuchu();break;

case6:

fanyi2();break;

case7:

chengji();break;

case8:

{

printf("你确认要退出吗?

y/n!

!

\n");

scanf("%c%c",&ch,&chioch);

if(ch=='y'||ch=='Y')

exit(0);

}//退出系统的操作

default:

printf("你输入了错误的操作,无法执行!

");

exit(0);

}

}

return0;

}

2、往词库中添加词汇

voidtianjia()

{

charch;

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、删除词库中的单词

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--;

}

}//循环实现单词的覆盖

elseif(i==p)

printf("没有找到您要删除的单词!

\n");

}

}

}

4、修改词库中的单词

voidxiugai()

{

inti=0;

chars[S],y[S],z[S];

printf("输入您想修改的单词:

");

scanf("%s",s);

if(p<=0)

{

printf("没有任何单词,无法删除!

\n");

return;

}

else

{

for(i=0;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、输出词库中所有的单词

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");

}

}

6、显示英文用户输入中文的背诵方法

voidfanyi1()

{

inti=0;

charf[S];

charover[N]="jieshu";

printf("请输入下面英文单词的翻译,希望结束输入时请输入jieshu\n");//顺序输出单词,而且能够随时结束

while(i

=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、显示中文用户输入英文的背诵方法

voidfanyi2()

{

inti=0;

charf[S];

charover[N]="jieshu";

printf("请输入下面英文单词的翻译,希望结束输入时请输入jieshu\n");

while(i

=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、显示测试结果和成绩

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、功能还有很多值得提高的地方:

测试的时候只能顺序输出单词,没有设置相应的随机数;

经过两周的努力,我最终还是成功地完成了本次课程设计的要求,虽然有很多问题,可是我觉得这两周我的收获很大,学会了很多。

这次课程设计帮我提高了很多。

我将收益终生!

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1