C语言背单词课程设计报告(东北大学)
- 格式:doc
- 大小:306.00 KB
- 文档页数:15
C语言程序设计 课程设计报告
题目:背单词 概述: 该系统是帮助单词背诵单词的软件,要求用户可以选择背诵的词库,并可以编辑自己的词库,系统可以给出中文,让单词输入其英文意思,也可输出英文让单词输入中文意思。并判定词义是否正确。如不正确给出提示并要求用户重新输入。如正确给以鼓励。还应有词语预览功能。 基本功能: 词库的维护 课程预览 显示中文用户输入英文的背诵方法 显示英文用户输入中文的背诵方法 背诵成绩的记录。
课程设计目的: 是综合训练单词用C语言编程解决问题和处理问题的能力,巩固其对C语言课程容和知识的掌握。
对课程设计的基本要求: 1、尽量多的应用C语言中所学到的知识和语句 2、课程设计前应书写开题报告主要容包括(对题目的分析和对该课程设计的概要设计) 3、课程设计后应交《课程设计报告》,和软件原代码及编译后的应用软件 4、课程设计最后一次上机实验时检查题目的完成情况 5、课程设计中必须用到的容为 a) 文件的存取 b) 结构体的使用 c) 数组的使用 d) 指针操作
一、开题报告 1:变量和结构体说明 1) 单词信息的结构体如下: typedef struct word //单词的结构体 { char en[MAX_CHAR]; // 英文形式 char no[MAX_CHAR]; //中文形式 }word;
2)存放单词的信息的变量如下: word s[MAX_NUM]; //单词数组 int num; //单词个数
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 #define MAX_CHAR 20 // 最大字符 #define MAX_NUM 100 // 单词的最大个数 typedef struct word //单词的结构体 { char en[MAX_CHAR]; // 英文形式 char no[MAX_CHAR]; //中文形式 }word;
word s[MAX_NUM]; //单词数组 int num; //单词个数 void read_from_file() //从文件中读取单词的信息 { FILE *fp; int i=0; fp=fopen("data.txt","rb"); 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);//关闭文件 } void write_to_file() //从文件中读取单词的信息 { FILE *fp; int i=0; fp=fopen("data.txt","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);//关闭文件 }
void add_infor()//添加单词信息 { int a,i=num; printf("请输入单词的英文形式:"); scanf("%s",s[i].en); printf("请输入单词的中文形式:"); scanf("%s",s[i].no); num++; printf("您输入的信息为: 英文: %s 中文: %s \n Enter 0 继续输入; Enter 1 返回主菜单",s[i].en,s[i].no); }
void del_infor()//删除单词信息 { int i=0,j=0; char no[MAX_CHAR]; //中文形式 printf("请输入你要删除的单词中文形式:"); scanf("%s",no); for(i=0;iif(strcmp(s[i].no,no)==0) { for(j=i;js[j]=s[j+1]; num--; //数量减少 1 return; } printf("没有这个单词!"); printf("Enter Enter 1 返回主菜单"); }
void modify_infor()//修改单词信息 { int i=0; char no[MAX_CHAR]; //中文形式 printf("请输入你要修改的单词中文形式:"); scanf("%s",no); for(i=0;iif(strcmp(s[i].no,no)==0) { printf("请输入单词正确的英文形式:"); scanf("%s",s[i].en);
printf("请输入此单词正确的的中文形式:"); scanf("%s",s[i].no); return; } printf("没有这个单词!"); printf("Enter Enter 1 返回主菜单"); } void show_infor() {int i=0; printf("单词: 英文 中文 \n"); for(i=0;iprintf(" %10s%10s\n",s[i].en,s[i].no); printf("Enter Enter 1 返回主菜单"); } void search_infor()//查询单词 { int i=0; char no[MAX_CHAR]; //中文形式 printf("请输入你要查询的单词中文形式:"); scanf("%s",no); for(i=0;iif(strcmp(s[i].no,no)==0) { printf("英文形式 中文形式 \n"); printf("%10s%12s\n",s[i].en,s[i].no); return; } printf("没有这个中文形式!"); printf("Enter Enter 1 返回主菜单"); } void zy_infor() { char b1[20]; int z,d=0,c=0; int i; 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("Enter 2 继续输入; Enter 1 返回主菜单",s[i].en,s[i].no); } void yz_infor() { char b1[20]; int z,x=41,d=0,c=0; int i; 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("\n Enter 3 继续输入; Enter 1 返回主菜单",s[i].en,s[i].no); } void chengji_infor() { int c,d; printf("\n 共计输入错误:%d次 **每次扣10分**\n",c);