C语言背单词课程设计报告.docx
《C语言背单词课程设计报告.docx》由会员分享,可在线阅读,更多相关《C语言背单词课程设计报告.docx(20页珍藏版)》请在冰豆网上搜索。
C语言背单词课程设计报告
题目:
背单词
1.概述
该系统是帮助单词背诵单词的软件,要求用户可以选择背诵的词库,并可以编辑自己的词库,系统可以给出中文,让单词输入其英文意思,也可输出英文让单词输入中文意思。
并判定词义是否正确。
如不正确给出提示并要求用户重新输入。
如正确给以鼓励。
还应有词语预览功能。
基本功能:
1)词库的维护
2)课程预览
3)显示中文用户输入英文的背诵方法
4)显示英文用户输入中文的背诵方法
5)背诵成绩的记录。
2.课程设计目的
综合训练单词用C语言编程解决问题和处理问题的能力,巩固其对C语言课程内容和知识的掌握。
3.对课程设计的基本要求
1)尽量多的应用C语言中所学到的知识和语句
2)课程设计前应书写开题报告主要内容包括(对题目的分析和对该课程设计的概要设计)
3)课程设计后应交《课程设计报告》,和软件原代码及编译后的应用软件
4)课程设计最后一次上机实验时检查题目的完成情况
5)课程设计中必须用到的内容为
a文件的存取
b结构体的使用
c数组的使用
d指针操作
一、开题报告
1.变量和结构体说明
1)单词信息的结构体如下:
typedefstructword
//单词的结构体
{
charen[M_CHAR];//英文形式
charch[M_CHAR];//中文形式
}word;
2)存放单词的信息的变量如下:
words[M_NUM];//单词数组
intnum;//单词个数
2.概要设计
1)定义结构体数组用来存放单词的信息
2)单词信息存放在data.txt中,文件格式如下:
单词个数—长度为4个字节
第1个单词的信息-----长度为sizeof(word)
第2个单词的信息-----长度为sizeof(word)
。
。
。
。
。
。
第n个单词的信息-----长度为sizeof(word)
3)读文件data.txt的过程如下:
打开文件data.txt用fopen函数(以mode指定的方式打开名为filename的文件)先读取单词个数,然后逐个读取单词的信息,采用fread函数(从fp所指定的文件中读取长度为size的n个数据项,存到pt所指向的内存区)
4)写文件data.txt的过程如下:
先写入单词个数,然后逐个写入单词的信息,采用fwrite函数(把ptr所指向的n*size个字节输出的fp所指向的文件中)
5)删除单词和修改单词信息的时候,都需要先输入英文,从该英文找到单词的位置
6)程序采用菜单的形式显示,用户可以输入选择进行操作
3.树型结构模块图
功能模块图如下:
学生背单词系统
写入文件信息
查询成绩
背诵(英至中)
读取文件信息
添加单词信息
修改单词信息
删除单词信息
显示单词信息
背诵(中至英)
4课程流程图
5.操作说明
1)本程序需要目录下存在“data.txt”文件
系统的菜单如下
2)添加单词信息的功能操作方法如下:
3)删除单词信息的功能操作方法如下:
4)修改单词信息的功能操作方法如下:
5)显示单词信息功能操作方法如下:
6)显示单词背诵(中至英)功能操作方法如下:
1、回答正确
2、回答错误
7)显示单词背诵(英至中)功能操作方法如下:
8)成绩查询的功能操作方法如下:
6.课程详细代码:
#include
#include
#include
#defineM_CHAR20//最大字符
#defineM_NUM100//单词的最大个数
intc=0,d=0;//统分变量
typedefstructword
//单词的结构体
{
charen[M_CHAR];//英文形式
charch[M_CHAR];//中文形式
}word;
words[M_NUM];//单词数组
intnum;//单词个数
voidread_from_file()
//从文件中读取单词的信息
{
FILE*fp;
inti=0;
fp=fopen("data.txt","rb");//以rb(为读而打开一个二进制文件)打开data.txt文件
if(!
fp)
{
printf("打开文件data.txt失败!
\n");
return;
}
fread(&num,1,sizeof(num),fp);//先读取单词的个数
for(i=0;ifread(&s[i],1,sizeof(word),fp);//读取每个单词的信息存放到结构体
fclose(fp);//关闭文件
}
voidwrite_to_file()
//向文件中输入单词的信息
{
FILE*fp;
inti=0;
fp=fopen("data.txt","wb+");//“wb+”建立一个新文件,进行写操作,随后读和写可以由位置函数设置读和写的起始位置
if(!
fp)
{
printf("打开文件data.txt失败!
\n");
return;
}
fwrite(&num,1,sizeof(num),fp);//先写入单词的个数
for(i=0;ifwrite(&s[i],1,sizeof(word),fp);//写入每个单词的信息
fclose(fp);//关闭文件
}
voidadd_infor()//添加单词信息
{
inta,i=num;
printf("请输入单词的英文形式:
");
scanf("%s",s[i].en);
printf("请输入单词的中文形式:
");
scanf("%s",s[i].ch);
num++;
printf("您输入的信息为:
英文:
%s\n中文:
%s\nEnter0继续输入;Enter1返回主菜单",s[i].en,s[i].ch);
}
voiddel_infor()//删除单词信息
{
inti=0,j=0;
charch[M_CHAR];//中文形式
printf("请输入你要删除的单词中文形式:
");
scanf("%s",ch);
for(i=0;iif(strcmp(s[i].ch,ch)==0)//strcmp(比较两个字符串str1和str2)
{
for(j=i;js[j]=s[j+1];
num--;//数量减少1
printf("删除成功!
\nEnter1返回主菜单");
return;
}
printf("没有这个单词!
");
printf("EnterEnter1返回主菜单");
}
voidmodify_infor()//修改单词信息
{
inti=0;
charch[M_CHAR];//中文形式
printf("请输入你要修改的单词中文形式:
");
scanf("%s",ch);
for(i=0;iif(strcmp(s[i].ch,ch)==0)
{
printf("请输入单词正确的英文形式:
");
scanf("%s",s[i].en);
printf("请输入此单词正确的的中文形式:
");
scanf("%s",s[i].ch);
printf("修改成功!
\nEnter1返回主菜单");
return;
}
printf("没有这个单词!
");
printf("EnterEnter1返回主菜单");
}
voidshow_infor()
{inti=0;
printf("单词:
英文中文\n");
for(i=0;iprintf("%10s%10s\n",s[i].en,s[i].ch);
printf("EnterEnter1返回主菜单");
}
voidsearch_infor()//查询单词
{
inti=0;
charch[M_CHAR];//中文形式
printf("请输入你要查询的单词中文形式:
");
scanf("%s",ch);
for(i=0;iif(strcmp(s[i].ch,ch)==0)
{
printf("英文形式中文形式\n");
printf("%10s%12s\n",s[i].en,s[i].ch);
return;
}
printf("没有这个中文形式!
");
printf("EnterEnter1返回主菜单");
}
voidch_to_en_infor()
{
charb1[20];
intz;
inti;
i=rand()%num;
printf("【%s】请输入英文单词:
",s[i].ch);
scanf("%s",b1);
for(z=0;strcmp(b1,s[i].en)!
=0;z=z)
{printf("输入错误!
!
请重新输入:
");scanf("%s",b1);c=c+1;}
printf("\n恭喜你,回答正确,加10分!
\n\n");d=d+1;
printf("Enter2继续输入;Enter1返回主菜单",s[i].en,s[i].ch);
}
voiden_to_ch_infor()
{
charb1[20];
intz,x=41;
inti;
i=rand()%num;
printf("【%s】请输入中文意思:
",s[i].en);
scanf("%s",b1);
for(z=0;strcmp(b1,s[i].no)!
=0;z=z)
{printf("输入错误!
!
请重新输入:
");scanf("%s",b1);c=c+1;}
printf("\n恭喜你,回答正确,加10分!
\n\n");d=d+1;
printf("\nEnter3继续输入;Enter1返回主菜单",s[i].en,s[i].no);
}
voidchengji_infor()
{
printf("\n共计输入错误:
%d次**每次扣10分**\n",c);
printf("共计输入正确:
%d次**每次加10分**\n",d);
printf("你的总得分为:
%d分\n\n",10*d-10*c);
printf("EnterEnter1返回主菜单");
}
voidshow_main_menu()
{
System(“color2f”);
System(“modeconcols=100lines=40”);
printf("\n");
printf("★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★\n");
printf("◎◎\n");
printf("●帮你背单词●\n");
printf("◎◎\n");
printf("●●\