C语言背单词课程设计报告东北大学.docx
- 文档编号:29886622
- 上传时间:2023-08-03
- 格式:DOCX
- 页数:17
- 大小:262.45KB
C语言背单词课程设计报告东北大学.docx
《C语言背单词课程设计报告东北大学.docx》由会员分享,可在线阅读,更多相关《C语言背单词课程设计报告东北大学.docx(17页珍藏版)》请在冰豆网上搜索。
C语言背单词课程设计报告东北大学
C语言程序设计
课程设计报告
题目:
背单词
概述:
该系统是帮助单词背诵单词的软件,要求用户可以选择背诵的词库,并可以编辑自己的词库,系统可以给出中文,让单词输入其英文意思,也可输出英文让单词输入中文意思。
并判定词义是否正确。
如不正确给出提示并要求用户重新输入。
如正确给以鼓励。
还应有词语预览功能。
基本功能:
词库的维护
课程预览
显示中文用户输入英文的背诵方法
显示英文用户输入中文的背诵方法
背诵成绩的记录。
课程设计目的:
是综合训练单词用C语言编程解决问题和处理问题的能力,巩固其对C语言课程容和知识的掌握。
对课程设计的基本要求:
1、尽量多的应用C语言中所学到的知识和语句
2、课程设计前应书写开题报告主要容包括(对题目的分析和对该课程设计的概要设计)
3、课程设计后应交《课程设计报告》,和软件原代码及编译后的应用软件
4、课程设计最后一次上机实验时检查题目的完成情况
5、课程设计中必须用到的容为
a)文件的存取
b)结构体的使用
c)数组的使用
d)指针操作
一、开题报告
1:
变量和结构体说明
1)单词信息的结构体如下:
typedefstructword
//单词的结构体
{
charen[MAX_CHAR];//英文形式
charno[MAX_CHAR];//中文形式
}word;
2)存放单词的信息的变量如下:
words[MAX_NUM];//单词数组
intnum;//单词个数
2:
概要设计
1)定义结构体数组用来存放单词的信息
2)单词信息存放在data.txt中,文件格式如下:
单词个数—长度为4个字节
第1个单词的信息-----长度为sizeof(word)
第2个单词的信息-----长度为sizeof(word)
。
。
。
。
。
。
第n个单词的信息-----长度为sizeof(word)
3)读文件data.txt的过程如下:
先读取单词个数,然后逐个读取单词的信息,采用fread函数
4)写文件data.txt的过程如下:
先写入单词个数,然后逐个写入单词的信息,采用fwrite函数
5)删除单词和修改单词信息的时候,都需要先输入英文,从该英文找到单词的位置
6)程序采用菜单的形式显示,用户可以输入选择进行操作
3:
树型结构模块图
功能模块图如下:
4课程流程图
5:
操作说明
1)本程序需要目录下存在“data.txt”文件
2)系统的菜单如下:
3)添加单词信息的功能操作方法如下:
4)删除单词信息的功能操作方法如下:
5)修改单词信息的功能操作方法如下:
6)显示单词背诵(中至英)功能操作方法如下:
7)显示单词背诵(英至中)功能操作方法如下:
8)成绩查询的功能操作方法如下:
6:
课程详细代码:
#include
#include
#include
#defineMAX_CHAR20//最大字符
#defineMAX_NUM100//单词的最大个数
typedefstructword
//单词的结构体
{
charen[MAX_CHAR];//英文形式
charno[MAX_CHAR];//中文形式
}word;
words[MAX_NUM];//单词数组
intnum;//单词个数
voidread_from_file()
//从文件中读取单词的信息
{
FILE*fp;
inti=0;
fp=fopen("data.txt","rb");
if(!
fp)
{
printf("打开文件data.txt失败!
\n");
return;
}
fread(&num,1,sizeof(num),fp);//先读取单词的个数
for(i=0;i fread(&s[i],1,sizeof(word),fp);//读取每个单词的信息存放到结构体 fclose(fp);//关闭文件 } voidwrite_to_file() //从文件中读取单词的信息 { FILE*fp; inti=0; fp=fopen("data.txt","wb+"); if(! fp) { printf("打开文件data.txt失败! \n"); return; } fwrite(&num,1,sizeof(num),fp);//先写入单词的个数 for(i=0;i fwrite(&s[i],1,sizeof(word),fp);//写入每个单词的信息 fclose(fp);//关闭文件 } voidadd_infor()//添加单词信息 { inta,i=num; printf("请输入单词的英文形式: "); scanf("%s",s[i].en); printf("请输入单词的中文形式: "); scanf("%s",s[i].no); num++; printf("您输入的信息为: 英文: %s中文: %s\nEnter0继续输入;Enter1返回主菜单",s[i].en,s[i].no); } voiddel_infor()//删除单词信息 { inti=0,j=0; charno[MAX_CHAR];//中文形式 printf("请输入你要删除的单词中文形式: "); scanf("%s",no); for(i=0;i if(strcmp(s[i].no,no)==0) { for(j=i;j s[j]=s[j+1]; num--;//数量减少1 return; } printf("没有这个单词! "); printf("EnterEnter1返回主菜单"); } voidmodify_infor()//修改单词信息 { inti=0; charno[MAX_CHAR];//中文形式 printf("请输入你要修改的单词中文形式: "); scanf("%s",no); for(i=0;i if(strcmp(s[i].no,no)==0) { printf("请输入单词正确的英文形式: "); scanf("%s",s[i].en); printf("请输入此单词正确的的中文形式: "); scanf("%s",s[i].no); return; } printf("没有这个单词! "); printf("EnterEnter1返回主菜单"); } voidshow_infor() {inti=0; printf("单词: 英文中文\n"); for(i=0;i printf("%10s%10s\n",s[i].en,s[i].no); printf("EnterEnter1返回主菜单"); } voidsearch_infor()//查询单词 { inti=0; charno[MAX_CHAR];//中文形式 printf("请输入你要查询的单词中文形式: "); scanf("%s",no); for(i=0;i if(strcmp(s[i].no,no)==0) { printf("英文形式中文形式\n"); printf("%10s%12s\n",s[i].en,s[i].no); return; } printf("没有这个中文形式! "); printf("EnterEnter1返回主菜单"); } voidzy_infor() { charb1[20]; intz,d=0,c=0; inti; i=rand()%num; printf("【%s】请输入英文单词: ",s[i].no); 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].no); } voidyz_infor() { charb1[20]; intz,x=41,d=0,c=0; 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() { intc,d; printf("\n共计输入错误: %d次**每次扣10分**\n",c); printf("共计输入正确: %d次**每次加10分**\n",d); printf("你的总得分为: %d分\n\n",10*d-10*c); printf("EnterEnter1返回主菜单"); } voidshow_main_menu() { printf("\n"); printf("●◎●◎●◎●◎●◎●◎●◎●◎●◎●◎●◎●◎●◎●◎●\n"); printf("◎◎\n"); printf("●背单词系统●\n"); printf("◎◎\n"); printf("●作者: 4091405吴昊●\n"); printf("◎◎\n"); printf("●◎●◎●◎●◎●◎●◎●◎●◎●◎●◎●◎●◎●◎●◎●\n"); printf("◎◎\n"); printf("●1、添加单词信息2、删除单词信息●\n"); printf("◎◎\n"); printf("●3、修改单词信息4、显示单词信息●\n"); printf("◎◎\n"); printf("●5、背诵(中至英)6、背诵(英至中)●\n"); printf("◎◎\n"); printf("●7、查询成绩8、退出●\n"); printf("◎◎\n"); printf("●◎●◎●◎●◎●◎●◎●◎●◎●◎●◎●◎●◎●◎●◎●\n");//用户界面 printf("\n"); printf("请选择您需要的操作序号(1-8)按回车确认: "); } intmain() { inta,choose=0; num=0;//初始化单词个数为0 read_from_file();//读取文件 show_main_menu(); scanf("%d",&choose); printf("\n"); while(choose! =8) { switch(choose) { case1: add_infor();break; case2: del_infor();break; case3: modify_infor();break; case4: show_infor();break; case5: zy_infor();break; case6: yz_infor();break; case7: chengji_infor();break; } while(a<10000){scanf("%d",&a); if(a==0){ write_to_file(); add_infor();} if(a==1) {printf("\n"); write_to_file(); main(); printf("\n");} if(a==2) { write_to_file(); zy_infor();} if(a==3) { write_to_file(); yz_infor();} if(a>3) {break;} } write_to_file();//写入文件 } printf("***************使用单词背诵系统! 再见! ***************\n"); getchar(); return1; } 7: 心得体会 通过本次C语言课程设计,是我对C语言的文件的存取、结构体的使用、数组的使用和指针操作有了更深的理解。 还充分体会了从事软件开发工作需要特别严谨认真的态度和作风,一点都马虎不得。 每一个细微的细节都必须十分的注意,如果不认真思考决策,就会出现或大或小的错误,如果早期的错误隐藏下来,对后面的工作影响就会很大,甚至有时要推倒很多前面做的工作重来。 有时候,我自己觉得我写的程序非常的正确,但是就是编译通不过,在查找错误的过程中,面临着否认自己的过程,非常的痛苦,而且由于自己的经验及各方面的能力的不足,所以进展的速度非常的缓慢,往往几天的时间还没有一点进展。 这时候,我一般是先自己通过书本,手册和资料找解决办法,实在没辙了才向同学和老师请教。 尽管向其他人请教解决问题比较快,自己钻研花的时间较多,但我强迫自己独立的思考对我的学习提高帮助非常大。 系统测试达到了良好的效果,编程思路清晰,界面操作简单,功能比较完善,通过此次C语言课程设计,使我提高了编程的经验,为以后的学习打下了坚实的基础。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 单词 课程设计 报告 东北大学