1、 C语言课程设计背单词系统 19 2020年4月19日 文档仅供参考 综合性程序设计报告 设计题目: 背单词系统 指导教师: XXX 班 级: 学 号: 设 计 者: XXX 成 绩: _______________ 设计时间: 年 月 日 一、 [题目描述] 使用C语言设计一个背单词系统,该系统是帮助学生背诵单词的软件,要求用户能够选择背诵的词库,并能够编辑自己的词库。系统能够给出中文,让学生输入其英文意思,也
2、可输出英文让学生输入中文意思。并判定词义是否正确。如不正确给出提示并要求用户重新输入。如正确给以鼓励。还应有词语预览功能。 基本功能: 词库的维护(单词的添加、修改、删除) 课程预览(单词的展示) 显示中文用户输入英文的背诵方法 显示英文用户输入中文的背诵方法 背诵成绩的记录(本程序设计运行一次程序所背诵的所有单词,答对一个得10分,打错一个扣5分) 二、 [功能模块分解及说明] 1、 树形结构模块图 2、 模块功能概述 程序概述:设计录入词库的结构体,结构体中分别存放英文和中文,整个程序基本上就是关
3、于结构体的操作,其中包括了顺序结构、循环结构、选择结构。
单词添加:用户自己输入单词以及翻译,存入结构体中。
单词修改:首先在词库中找到这个单词(如果没有则提示用户没有该单词),然后用户输入修改后的单词及翻译。
单词删除:先在词库中找到单词,然后将这个单词之后的所有单词顺次前移,实现删除功能。
输出词库:输出结构体存放的单词。
单词测试:用户首先选择测试模式,然后词库中输出现有单词,用户希望结束时输出“jieshu”,而且在这两个函数中计分。
显示成绩:输出测试的成绩。
三、 [设计测试说明]
一、 有关头文件、变量、结构体的说明
1、头文件
#include 4、h>
#include 5、/全局变量,用于统计单词个数
二、程序源代码(函数部分以及系统使用截图)
1、主函数
int main()
{
int n;
char ch,chioch;
printf("\n");
printf("\t***********************************************\n");
printf("\t** 欢迎使用背单词系统! 6、 **\n");
printf("\t** 设计者:郭鑫钢 **\n");
printf("\t** 班级:31342 学号:3134205 **\n");
printf("\t***********************************************\n");
printf("\t** 1、单词添加 2、单词删除 **\n");
printf("\t** 3、单词修改 4 7、单词展示 **\n");
printf("\t** 5、英译汉 6、汉译英 **\n");
printf("\t** 7、成绩查询 8、退出系统 **\n");
printf("\t***********************************************\n");
printf(" 请选择您需要的操作序号<1-6>,按回车结束:");
while(1)
{
scanf("%d",&n);
switch(n)
8、
{//执行相应的函数,实现相应的功能
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; 9、
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、往词库中添加词汇 10、
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);
11、
}
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 12、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;
}
13、
else
{
for(i=0;i 14、\n");
}
}
}
5、输出词库中所有的单词
void shuchu()
{
int i=0;
printf("输出词库中所有的单词!\n");
if(p<=0)
{
printf("没有任何单词,无法输出!\n");
return;
}
else
{
for(i=0;i 15、n");
}
}
6、显示英文用户输入中文的背诵方法
void fanyi1()
{
int i=0;
char f[S];
char over[N]="jieshu";
printf("请输入下面英文单词的翻译,希望结束输入时请输入 jieshu \n"); //顺序输出单词,而且能够随时结束
while(i 16、"%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() 17、
{
int i=0;
char f[S];
char over[N]="jieshu";
printf("请输入下面英文单词的翻译,希望结束输入时请输入 jieshu \n");
while(i 18、 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);
}
四、 [设计体会]
19、
在看到我的选题后,刚开始有点蒙。然后看到要求说必须用到文件,可是文件还没有学,因此我决定先看看文件那部分的内容。大概烦了一遍书以后,我去图书馆找了基本C语言项目实例的书籍,里面好多的实例都给了我很大的启发。之后我就开始着手写我的程序。刚开始我仿照一本书里有的关于商品信息的管理的程序来写。里面涉及的大量的文件操作,使得我有时候看不懂甚至摸不着头脑。迫于时间上的要求,我不得不放弃已经写了200多行的程序,开始换个思路来考虑程序。
考虑到我自己对结构体还是比较熟悉的,因此我想到不使用文件而是直接将单词存放进结构体中。然后整个程序就是对结构体的一系列操作。
在写删除单词这个函数中,我遇到了困难, 20、刚开始没有想到数据覆盖这么一个办法,用了好多很笨的方法可是还没有出效果。最后偶然间在网上看到了关于一片指针覆盖的博客,然后我就想到了这种解决办法,果然奏效了!
经过这次C语言的课程设计,我深深体会到了一门语言的深奥,是值得我去好好学习和深入研究的。就拿这个程序中几个小小细节,比如:while(i






