轻松背单词

1.设计任务

综合训练用C语言以及数据结构知识来解决问题和提高处理问题的能力,巩固对C语言和数据结构的内容和知识的综合应用;本次课设的题目来源于12月份的英语四六级考试,该单词系统的设计核心是利用文件存储单词库,应用顺序表去实现单词的添加、删除、查找以及背诵等功能。

2. 需求分析

英语已成为我们生活中不可缺少的一部分,今年江苏高考的改革更加体现了英语的重要性。无论是中学生、大学生还是已经工作的人,要学好英语,首先自己的大脑路得有足够大的单词库,所以,背单词成了我们最头疼的事。

利用此次课程设计,我们写了背单词系统。使用该系统用户可以维护单词的词库,并可以编辑自己的词库;主要是用来背诵单词的,所以有英译汉、汉译英的测试,测试完后用户可以查看自己的测试成绩,同时在背诵过程中用户可以删除自己已背诵过的单词,也可以修改单词汉语意思为自己容易记住的,同时该系统具有单词预览功能,以及单词翻译功能。

3. 概要设计

3.1 基本功能

(1)词库的预览

(2)查单词的释义

(3)词库的添加

(4)词库的删除

(5)词库的修改

(6)汉译英测试

(7)英译汉测试

(8)成绩的查看

3.2 函数说明

(1)void read_from_file()     //从文件中读取单词的信息

(2)void write_to_file()       //从文件中写入单词的信息

(3)void add_infor()           //添加单词信息

(4)void del_infor()           //删除单词信息

(5)void modify_infor()        //修改单词信息

(6)void show_infor()          //单词显示

(7)void search_infor()         //查询单词

(8)void ch_to_en_infor()       //汉译英测试

(10)void en_to_ch_infor()      //英译汉测试

(11)void show_main_menu()      //显示主菜单

(12)void chengji_infor()       //测试成绩

3.3 变量和结构体说明

(1)单词信息的结构体如下:

typedef struct word//单词的结构体

{

char en[MAX_CHAR]; // 英文形式

char ch[MAX_CHAR]; //中文形式

}word;

(2)宏定义

#define MAX_CHAR 20  //最大字符

#define MAX_NUM 100  //单词最大个数

(3)存放单词的信息的变量如下:

word s[MAX_NUM]; //单词数组

int num;//单词个数

3.4 单词存储简要分析

(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所指向的文件中)

3.5 功能介绍

3.5.1功能模块图

图3-1  功能结构图

3.5.2 详细介绍

(1)词库预览即打开文件并把文件信息输出至屏幕

(2)删除单词和修改单词信息的时候,都需要先输入中文,从该中文找到单词的位置

(3)在文件中单词查找与匹配过程中均用strcmp()函数

(4)程序采用菜单的形式显示,用户可以输入选择进行操作

(5)英译汉、汉译英测试选用随机测试

(6)添加单词需逐个添加

3.6 总结

通过本次数据结构课程设计,让我不但对数据结构所学课程内容加深了巩固,同时也对C语言编程有了很大的提高,而且培养了自己的团队合作精神。对C语言的文件的存取、结构体的使用、数组的使用以及数据结构顺序表都加深了理解。“千里之堤毁于蚁穴”这句话对于C语言编程特别适用,因为一个小小的分号都可能使你费尽心思编出来的程序无法运行,所以通过这次课程设计我领略到了程序员该有的一丝不苟。

此次课程设计题目来源于当时的四六级考试,所以设计的功能都贴近我们的需求。开始着手去写时完全没有思绪,和队友一起讨论要实现的功能,意见统一后进行分工。在讨论声中给此次课设画上了句号。

对于词库的维护刚开始没有选用文件,导致每次退出测试词库都会清空,这便要求每次用户进行查询测试等前都必须先添加单词,因此,经过考虑进行了文件存储,实现了词库的维护。查询单词以及英译汉、汉译英测试都需要去词库进行查找与匹配,即需要用到顺序表的locate()函数,但考虑到这样工程较大,所以在这三个函数中运用了存放在头文件string.h中的strcmp()函数,对程序进行了优化。同时,想要让程序运行时菜单一直处在上方不动,但能力有限,所以采用了每步运行完返回主菜单的方法代替它。

通过此次数据结构课程设计,我提高了编程的经验,为以后的学习打下了坚实的基础。

java 背单词系统_背单词系统相关推荐

  1. java背单词软件_背单词的java小软件

    [实例简介] 这是我写的背单词的一个软件,自己输入单词,然后可以有挑战模式,在规定时间内输入单词,比较有意思,练手不错 [实例截图] [核心代码] 单词背背背 └── 单词背背背 ├── bin │  ...

  2. java jsp交友系统_交友网站系统的设计与实现(JSP,MySQL)(含录像)

    交友网站系统的设计与实现(,MySQL)(含录像)(开题报告,毕业论文12700字,程序代码,MySQL数据库) 摘  要 随着中国老龄化的加快,越来越多的人进入了退休后的晚年生活,人这一群体也加入到 ...

  3. java在线书城系统_二手书城系统 本设计为基于JAVA的网上书店系统 - 下载 - 搜珍网...

    压缩包 : e3e5162e046943e353d52817670.zip 列表 二手书城系统/ 二手书城系统/book_system/ 二手书城系统/book_system/book/ 二手书城系统 ...

  4. java灰度发布系统_灰度发布系统架构设计

    灰度发布的定义 互联网产品需要快速迭代开发上线,又要保证质量,保证刚上线的系统,一旦出现问题可以很快控制影响面,就需要设计一套灰度发布系统.灰度发布系统的作用,可以根据配置,将用户的流量导到新上线的系 ...

  5. 外网访问arm嵌入式linux系统_嵌入式Linux系统移植的四大步骤

    最近在学习系统移植的相关知识,在学习和调试过程中,发现了很多问题,也解决了很多问题,但总是对于我们的开发结果有一种莫名其妙的感觉,纠其原因,主要对于我们的开发环境没有一个深刻的认识,有时候几个简单的命 ...

  6. python扇贝单词书_扇贝单词如何创建自己的单词书

    扇贝单词如何创建自己的单词书 工具/原料 扇贝 方法/步骤 1 用扇贝记单词时使用的是别人的单词书,如果想记哪些单词就记哪些,可以自己创建一本单词书.首先打开扇贝网,找到单词书,点击进入. 2 找到右 ...

  7. 快递包裹自动化分拣系统_包裹识别系统的类型

    快递包裹自动化分拣系统 包裹识别码的类型 (Types of Parcel identifiers) There are several classes or parcel identificatio ...

  8. spring和mybatis结合做简单的增删查改系统_搭建后台系统权限系统的经验总结

    关于讨论后台系统中的权限系统的文章与理论有很多,而笔者就结合自己的认知与项目经验,与大家分享搭建权限系统的要点. 作为后台产品经理,相信大家都有接触过权限系统,权限系统是后台系统中不可缺少的部分,可以 ...

  9. carplay是否可以用安卓系统_苹果CarPlay系统是什么?安卓系统手机能用吗?

    展开全部 由于carpaly是专门为苹果系统适配的车载互联32313133353236313431303231363533e4b893e5b19e31333366303736系统,所以安卓系统手机现在 ...

  10. 异次元个人发卡系统_开源发卡系统

    介绍: 异次元发卡系统乃荔枝发卡系统3.0完全从0代码的重构版本,原生php开发,数据库底层使用Eloquent ORM组件,模板渲染使用Smarty3.1组件,会话保持使用session开发,欢迎各 ...

最新文章

  1. 英特尔的指令集体系结构_对标英特尔的RISC-V大有可为,CPU三分天下格局可期
  2. hdu3395纯KM
  3. 利用反射实现对象调用方法
  4. vue通过class获取dom_.NET Core通过Json或直接获取图形验证码(务必收藏备用)
  5. Java事实让您大吃一惊! (信息图)
  6. 定义blob类型_MySQL 数据类型
  7. InnoDB 行格式
  8. 使用jsencrypt实现参数的前端加密
  9. Node.js与Golang使用感受与小结【二】
  10. 一个“技术文化人”的片段感悟
  11. 服务器显示A40故障码,求助大神,车子出现故障码,5053无法消除
  12. csdn专用必杀技----谷歌浏览器插件
  13. 【玩儿法】真不是装X 为了不加班我一直用这些小众软件
  14. nodejs实现桌面程序exe
  15. SELECT TOP 1 * FROM是什么意思
  16. java实体类包怎么命名,程序那些事
  17. 23_深度探秘搜索技术_best fields策略的dis_max、tie_breaker参数以及multi_match语法
  18. 2021湖南高考成绩分段查询,2021湖南高考成绩查询系统入口
  19. php sequelize,egg.js整合数据库ORM框架Sequelize
  20. vue使用echart绘制全国地图,叠加图表

热门文章

  1. SpringCloud实战---第十五篇:微服务网关GateWay
  2. R语言使用epiDisplay包的lroc函数可视化logistic回归模型的ROC曲线并输出诊断表、输出灵敏度、1-特异度、AUC值等、设置auc.coords参数指定AUC值在可视化图像中的位置
  3. 使用python代码调用三汇语音卡硬件拨打电话
  4. 【元胞自动机】基于元胞自动机之地铁火灾疏散模型matlab源码
  5. 如何让cmd一直默认以管理员身份打开
  6. 服务器是如何被入侵的
  7. java mission control_Java Mission Control之使用
  8. 解救空间不足无法启动的白苹果iPhone5S
  9. java电影推荐系统_基于Mahout的电影推荐系统
  10. 毕业或者想转行做c++服务端开发的时候都很迷茫不知道从哪里开始学习?