目 录
1.设计任务 1
2. 需求分析 1
3. 概要设计 1
3.1 基本功能 1
3.2 函数说明 1
3.3 变量和结构体说明 2
3.4 单词存储简要分析 2
3.5 功能介绍 3
3.5.1功能模块图 3
3.5.2 详细介绍 3
3.6 程序调试 4
图3-5 单词添加 6
3.7 总结 9
致谢 10
附录(源代码) 11
参 考 文 献 20
轻松背单词
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()函数,对程序进行了优化。同时,想要让程序运行时菜单一直处在上方不动,但能力有限,所以采用了每步运行完返回主菜单的方法代替它。
通过此次数据结构课程设计,我提高了编程的经验,为以后的学习打下了坚实的基础。
附录(源代码)
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 数据结构 课程设计说明书
2
3
4
5
6
7 题目: 轻松背单词
8
9 学生姓名: 啦啦啦
10 学 号: 201406060306
11 院 (系): 电气与信息工程
12 专 业: 计算机科学与技术
13 指导教师:
14 2016 年 1 月 15 日
15
16 目 录
17
18 1.设计任务 1
19 2. 需求分析 1
20 3. 概要设计 1
21 3.1 基本功能 1
22 3.2 函数说明 1
23 3.3 变量和结构体说明 2
24 3.4 单词存储简要分析 2
25 3.5 功能介绍 3
26 3.5.1功能模块图 3
27 3.5.2 详细介绍 3
28 3.6 程序调试 4
29 图3-5 单词添加 6
30 3.7 总结 9
31 致谢 10
32 附录(源代码) 11
33 参 考 文 献 20
34
35 轻松背单词
36 1.设计任务
37 综合训练用C语言以及数据结构知识来解决问题和提高处理问题的能力,巩固对C语言和数据结构的内容和知识的综合应用;本次课设的题目来源于12月份的英语四六级考试,该单词系统的设计核心是利用文件存储单词库,应用顺序表去实现单词的添加、删除、查找以及背诵等功能。
38 2. 需求分析
39 英语已成为我们生活中不可缺少的一部分,今年江苏高考的改革更加体现了英语的重要性。无论是中学生、大学生还是已经工作的人,要学好英语,首先自己的大脑路得有足够大的单词库,所以,背单词成了我们最头疼的事。
40 利用此次课程设计,我们写了背单词系统。使用该系统用户可以维护单词的词库,并可以编辑自己的词库;主要是用来背诵单词的,所以有英译汉、汉译英的测试,测试完后用户可以查看自己的测试成绩,同时在背诵过程中用户可以删除自己已背诵过的单词,也可以修改单词汉语意思为自己容易记住的,同时该系统具有单词预览功能,以及单词翻译功能。
41 3. 概要设计
42 3.1 基本功能
43 (1)词库的预览
44 (2)查单词的释义
45 (3)词库的添加
46 (4)词库的删除
47 (5)词库的修改
48 (6)汉译英测试
49 (7)英译汉测试
50 (8)成绩的查看
51 3.2 函数说明
52 (1)void read_from_file() //从文件中读取单词的信息
53 (2)void write_to_file() //从文件中写入单词的信息
54 (3)void add_infor() //添加单词信息
55 (4)void del_infor() //删除单词信息
56 (5)void modify_infor() //修改单词信息
57 (6)void show_infor() //单词显示
58 (7)void search_infor() //查询单词
59 (8)void ch_to_en_infor() //汉译英测试
60 (10)void en_to_ch_infor() //英译汉测试
61 (11)void show_main_menu() //显示主菜单
62 (12)void chengji_infor() //测试成绩
63 3.3 变量和结构体说明
64 (1)单词信息的结构体如下:
65 typedef struct word//单词的结构体
66 {
67 char en[MAX_CHAR]; // 英文形式
68 char ch[MAX_CHAR]; //中文形式
69 }word;
70 (2)宏定义
71 #define MAX_CHAR 20 //最大字符
72 #define MAX_NUM 100 //单词最大个数
73 (3)存放单词的信息的变量如下:
74 word s[MAX_NUM]; //单词数组
75 int num;//单词个数
76 3.4 单词存储简要分析
77 (1)定义结构体数组用来存放单词的信息
78 (2)单词信息存放在data.txt中,文件格式如下:
79 单词个数——长度为4个字节
80 第1个单词的信息——长度为sizeof(word)
81 第2个单词的信息——长度为sizeof(word)
82 ......
83 第n个单词的信息——长度为sizeof(word)
84 (3)读文件data.txt的过程如下:
85 打开文件data.txt用fopen函数(以mode指定的方式打开名为filename的 文件)先读取单词个数,然后逐个读取单词的信息,采用fread函数(从fp所制定的文件中读取长度为size的n个数据项,存到pt所指向的内存区)
86 (4)写文件data.txt的过程如下:
87 先写入单词个数,然后逐个写入单词的信息,采用fwrite函数(把ptr所指向的n*size个字节输出的fp所指向的文件中)
88 3.5 功能介绍
89 3.5.1功能模块图
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105 图3-1 功能结构图
106 3.5.2 详细介绍
107 (1)词库预览即打开文件并把文件信息输出至屏幕
108 (2)删除单词和修改单词信息的时候,都需要先输入中文,从该中文找到单词的位置
109 (3)在文件中单词查找与匹配过程中均用strcmp()函数
110 (4)程序采用菜单的形式显示,用户可以输入选择进行操作
111 (5)英译汉、汉译英测试选用随机测试
112 (6)添加单词需逐个添加
113 3.6 程序调试
114 (1)系统菜单
115 图3-2 主菜单显示
116 (2)查询词库信息
117 图3-3 词库预览
118 (3)查询单个单词
119 图3-4 单词查询
120 (4)添加单词
121
122 图3-5 单词添加
123 (5)删除单词
124 图3-6 单词删除
125 (6)英译汉测试
126 图3-7 英译汉测试
127 (7)汉译英测试
128 图3-8 汉译英测试
129 (8)查看测试成绩
130 图3-9 测试成绩查询
131 (9)修改单词信息
132 图3-10 修改单词
133 (10)退出系统
134 图3-11 退出系统
135 3.7 总结
136 通过本次数据结构课程设计,让我不但对数据结构所学课程内容加深了巩固,同时也对C语言编程有了很大的提高,而且培养了自己的团队合作精神。对C语言的文件的存取、结构体的使用、数组的使用以及数据结构顺序表都加深了理解。“千里之堤毁于蚁穴”这句话对于C语言编程特别适用,因为一个小小的分号都可能使你费尽心思编出来的程序无法运行,所以通过这次课程设计我领略到了程序员该有的一丝不苟。
137 此次课程设计题目来源于当时的四六级考试,所以设计的功能都贴近我们的需求。开始着手去写时完全没有思绪,和队友一起讨论要实现的功能,意见统一后进行分工。在讨论声中给此次课设画上了句号。
138 对于词库的维护刚开始没有选用文件,导致每次退出测试词库都会清空,这便要求每次用户进行查询测试等前都必须先添加单词,因此,经过考虑进行了文件存储,实现了词库的维护。查询单词以及英译汉、汉译英测试都需要去词库进行查找与匹配,即需要用到顺序表的locate()函数,但考虑到这样工程较大,所以在这三个函数中运用了存放在头文件string.h中的strcmp()函数,对程序进行了优化。同时,想要让程序运行时菜单一直处在上方不动,但能力有限,所以采用了每步运行完返回主菜单的方法代替它。
139 通过此次数据结构课程设计,我提高了编程的经验,为以后的学习打下了坚实的基础。
140
141 致谢
142 感谢我的小伙伴李佳鑫同学和我一起完成了这次课设,同时感谢赵老师的热心辅导。
143
144
145 附录(源代码)
146 #include
147 #include
148 #include
149 #define MAX_CHAR 20 //最大字符
150 #define MAX_NUM 100 //单词最大个数
151 typedef struct word//单词的结构体
152 {
153 char en[MAX_CHAR]; // 英文形式
154 char ch[MAX_CHAR]; //中文形式
155 }word;
156 int c=0,d=0;//统分变量
157 word s[MAX_NUM]; //单词数组
158 int num;//单词个数
159 void read_from_file()//从文件中读取单词的信息
160 {
161 FILE *fp;
162 int i=0;
163 fp=fopen("data.txt","r");
164 fread(&num,sizeof(num),1,fp); //先读取单词的个数
165 for(i=0;i |