C语言课程设计-一种简单的英文词典排版系统的实现
c语言词典课程设计
c语言词典课程设计一、教学目标本课程的教学目标是使学生掌握C语言词典的基本原理和设计方法,能够运用C语言编写简单的词典程序。
具体目标如下:1.理解C语言的基本数据类型和语法结构。
2.掌握函数的定义和调用方法。
3.了解字典树、哈希表等数据结构的基本原理。
4.熟悉常用的词典算法和实现方法。
5.能够运用C语言编写简单的程序。
6.能够使用常用的开发工具和调试方法。
7.能够独立完成简单的词典程序设计。
情感态度价值观目标:1.培养学生对计算机科学的兴趣和好奇心。
2.培养学生解决问题的能力和团队合作精神。
3.培养学生对编程规范和代码质量的重视。
二、教学内容本课程的教学内容主要包括C语言基础知识、数据结构、词典算法和程序设计。
具体安排如下:1.C语言基础知识:介绍C语言的基本数据类型、运算符、控制语句等。
2.数据结构:讲解字典树、哈希表等数据结构的基本原理和实现方法。
3.词典算法:介绍常用的词典算法,如顺序查找、二分查找、哈希查找等。
4.程序设计:通过实例讲解如何运用C语言编写词典程序,包括词条的添加、删除、查找等功能。
三、教学方法本课程采用多种教学方法相结合的方式,以激发学生的学习兴趣和主动性。
具体方法如下:1.讲授法:讲解C语言基本知识和数据结构原理。
2.案例分析法:通过分析实际案例,讲解词典算法和程序设计方法。
3.实验法:让学生动手编写程序,巩固所学知识和技能。
4.讨论法:学生进行小组讨论,促进学生之间的交流和合作。
四、教学资源本课程所需的教学资源包括教材、参考书、多媒体资料和实验设备。
具体资源如下:1.教材:《C程序设计语言》(K&R)、《C Primer Plus》等。
2.参考书:《数据结构与算法分析》(C语言版)、《C语言程序设计实践》等。
3.多媒体资料:教学PPT、视频教程、在线编程练习等。
4.实验设备:计算机、编程环境、网络等。
五、教学评估本课程的评估方式包括平时表现、作业和考试三个部分,以全面客观地评价学生的学习成果。
C语言课程设计之电子词典
5.C 语言是模块化的。可以以函数的方式来编写 C 语言代码,并在其他应用或程序中再 次使用这些函数。通过将一些信息传递给函数,可以创建很有用的、可重用代码。
第四章系统功能实现…………………………………………………………....9
4.1 保存单词…………………………………………………………………………9 4.2 结束界面………………………………………………………………………..11
总结……………………………………………………………………………….. …….. ….13
五、时间进度安排
顺序
1 2 3 4 5
阶段日期
第1天 (2008.03.24 第 2—3 天 (2008.03.25—2008.03.26) 第 4—8 天 (2008.03.28—2008.04.04) 第9天 (2008.04.05) 第 10 天 (2008.04.06)
计划完成内容
阅读资料 系统分析设计 程序编制、调试及运行
态度 能够独立完成设计工作,
按期圆满完成规定的设计任务,工作量饱满,
工作量
0.2 5 4 3 2
难度适宜。
说明书立论正确,论述充分,结论严谨合理, 说明书的
文字通顺,技术用语准确,符号统一,编号齐 0.5 5 4 3 2 质量
全,图表完备,书写工整规范。
指导教师评审成绩 (加权分合计乘以 8)
分
加权分合计
3.设计总结部分主要写本人完成工作简介以及自己的设计体会,包括通过课程设计学到 了什么,哪里遇到了困难,解决的办法以及今后的目标。
C语言课程设计英文排版系统的实现2
C语言课程设计英文排版系统的实现学号:20071000697 班级:055071--04 姓名:黄露指导老师:刘文中前言一、C语言课程设计的目的:高级语言课程设计是学习完《高级语言程序设计》课程后进行的一次全面的综合性上机实验。
其目的在于为同学提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼同学的分析解决实际问题的能力。
提高学生适应实际,实践编程的能力。
二,要求一种简单的英文词典排版系统的实现(1)能输入和显示打入的单词。
(2)能分辨出单词。
(3)对重复的单词和已经输入的单词能自动排除。
(4)能按A~Z的顺序排版。
(5)能将运行结果以文本形式存储。
(6)具有添加新单词并重新排版的能力。
三.构架建立词库显示单词对单词进行排序添加单词重新排版以文本形式存储结束开始显示:输入文字输入词i+1=iI=file输入文字END结束程序第一次运行时,会创建一个“word.txt”(不包括引号)的文本文件,然后要求输入单词。
若要退出,请不要点DOS窗口的小叉叉,输入d即可。
因为程序在结束之前,对数组中的单词重新排序,并存储到文件中。
#include "stdio.h"---#include "stdlib.h" ---为exit()函数提供原型;#include "string.h"---字符串处理函数原型;#include "ctype.h"---字符处理函数原型;#define ROWS 256#define COLS 32---定义“字典”的大小:可存放256个单词,每个单词的长度不超过31static FILE *fp;---定义文件指针:内部链接,文件作用域;static char a[ROWS][COLS];---定义数组:内部链接,文件作用域;该数组的作用是将文件的内容复制进来,并加以处理。
c英汉词典课程设计
c 英汉词典课程设计一、教学目标本课程的学习目标主要包括知识目标、技能目标和情感态度价值观目标。
知识目标要求学生掌握英汉词典的基本结构和使用方法,了解英语单词的拼写、词性和意思。
技能目标要求学生能够熟练地使用英汉词典查找单词,提高英语阅读和写作能力。
情感态度价值观目标培养学生对英语学习的兴趣和自信心,培养他们积极学习英语的态度。
通过分析课程性质、学生特点和教学要求,我们将目标分解为具体的学习成果。
课程目标旨在帮助学生掌握英汉词典的使用技巧,培养他们自主学习的能力,提高他们的英语水平。
二、教学内容根据课程目标,我们选择和了以下教学内容。
首先,介绍英汉词典的基本结构,包括前言、目录、词条等部分。
其次,讲解如何使用英汉词典查找单词,包括根据音标、字母顺序和词根等方法。
然后,通过实例演示如何快速找到单词的含义、例句和同义词等。
最后,进行一些练习和活动,让学生实际操作英汉词典,巩固所学内容。
教学大纲将按照以下顺序进行:第一节课,介绍英汉词典的基本结构和使用方法;第二节课,讲解如何查找单词和理解单词的含义;第三节课,通过实例演示和练习,让学生熟练使用英汉词典;第四节课,进行综合练习和活动,巩固所学内容。
三、教学方法为了激发学生的学习兴趣和主动性,我们将采用多种教学方法。
首先,讲授法将用于讲解英汉词典的基本结构和使用方法。
其次,案例分析法将用于分析具体的单词查找实例。
此外,讨论法将用于引导学生主动参与课堂讨论,分享自己的学习经验和心得。
最后,实验法将用于让学生实际操作英汉词典,进行练习和活动。
四、教学资源为了支持教学内容和教学方法的实施,我们将选择和准备以下教学资源。
首先,教材《英汉词典》将是主要的教学资源,提供丰富的单词和例句。
其次,参考书和多媒体资料将用于提供更多的学习资源和实例。
此外,实验设备如电脑和投影仪将用于展示和演示英汉词典的使用方法。
通过这些教学资源的利用,我们将丰富学生的学习体验,提高他们的学习效果。
C语言英汉词典课程设计
C语言英汉词典课程设计一、课程目标知识目标:1. 学生能够掌握C语言基础语法,包括变量声明、数据类型、运算符、控制结构等。
2. 学生能够理解结构体在C语言中的应用,并能够使用结构体创建英汉词典的数据结构。
3. 学生能够运用文件操作函数实现英汉词典的存储与读取。
技能目标:1. 学生能够运用C语言编写程序,实现英汉词典的增删查功能。
2. 学生能够通过调试和优化程序,提高英汉词典的运行效率。
3. 学生能够通过小组合作,共同完成一个具有实用价值的英汉词典项目。
情感态度价值观目标:1. 学生培养对编程的兴趣,提高解决实际问题的能力。
2. 学生在团队合作中,学会相互尊重、沟通协作,培养团队精神。
3. 学生通过英汉词典项目,认识到编程在生活中的应用,激发创新意识。
课程性质:本课程为C语言编程实践课程,以项目为导向,注重培养学生的动手能力和实际应用能力。
学生特点:学生为高年级学生,已具备一定的C语言基础,对编程有一定了解,具备一定的自学和解决问题能力。
教学要求:教师需引导学生运用所学知识,以小组合作形式完成英汉词典项目,注重培养学生的编程思维和实际操作能力。
在教学过程中,关注学生的情感态度价值观的培养,激发学生的学习兴趣和团队协作精神。
通过课程目标的分解,确保学生能够达到预期学习成果,为后续教学设计和评估提供依据。
二、教学内容1. C语言基础回顾:变量声明、数据类型、运算符、控制结构(条件语句、循环语句)。
2. 结构体概念与应用:结构体的定义、声明、初始化;结构体数组、结构体指针。
3. 文件操作:文件的打开、关闭、读写操作;二进制读写;文本文件与二进制文件的转换。
4. 英汉词典项目实战:a. 数据结构设计:定义单词结构体,创建单词列表。
b. 功能模块设计:实现添加、删除、查找、显示全部单词等功能。
c. 文件操作:实现词典的存储与读取。
d. 界面设计:设计简单易懂的用户界面,提供用户操作接口。
5. 调试与优化:分析程序性能,进行调试优化,提高词典运行效率。
C语言课程设计——电子英汉词典
课程设计报告课程名称 C语言课程设计课题名称电子英汉词典专业纺织服装学院班级纺工1203学号姓名指导教师田媛2014年 01 月06 日湖南工程学院课程设计任务书课程名称 C语言课程设计课题电子英汉词典专业班级纺工工程学生姓名学号指导老师田媛审批任务书下达日期 2013 年 12 月 26 日任务完成日期2014年 01 月 06 日一、设计内容与设计要求1.设计内容:课题一:电子英汉词典。
具体内容见附录。
2.设计要求:1)设计正确,方案合理。
2)界面友好,使用方便。
3)程序精炼,结构清晰。
4)上机演示。
3.设计报告要求:课程设计报告格式如下:1)正文的格式:一级标题用3号黑体,二级标题用四号宋体加粗,正文用小四号宋体,行距为22。
2)正文的内容:课题的主要功能、课题的功能模块的划分、主要功能的实现、程序调试、总结、附件(所有程序的源代码,要求对程序写出必要的注释),课程设计报告需5000字左右(不含附件)。
3)课程设计报告装订顺序:封面、任务书、目录、正文、评分、程序清单附件。
二、进度安排上课时间另外安排上课时间另外安排。
附录:设计课题三:电子英汉词典一、问题描述:该设计实现简单电子英汉词典的功能,具体管理操作包括单词的添加、显示、查找、删除、修改和保存等。
二、功能描述:1、本设计采用结构体数组,每个数据的结构应当包括:单词的英文拼写,单词的中文释义。
2、系统功能:a.词条录入:即添加单词记录。
b.信息显示:将所有的单词按字母顺序显示。
c.词条修改:对已经输入的单词信息进行修改。
d.词条删除:删除某个单词记录。
e.单词查询: 输入单词英文拼写,输出该单词的中文释义。
f.信息保存:将单词信息保存到文件。
g.退出系统3、系统使用说明:执行一个具体的功能之后,程序将重新显示功能菜单。
系统的功能并不限于上述,可以对其进行扩充完善,如在对信息进行修改和删除时,可以考虑系统的安全性,在执行前若输入正确密码,才可进行操作。
C语言电子词典课程设计
C语言电子词典课程设计一、课程目标知识目标:1. 理解C语言中结构体、数组、字符串等基本概念及其应用;2. 学会使用C语言实现基本的查找、插入、删除等数据操作;3. 掌握C语言中文件读写功能,实现对电子词典数据的存储和读取。
技能目标:1. 能够运用结构体创建电子词典的数据结构,并实现单词的录入、查询、修改和删除等功能;2. 学会使用二分查找算法优化电子词典的查询速度,提高程序运行效率;3. 能够独立编写C语言程序,完成一个具有基本功能的电子词典项目。
情感态度价值观目标:1. 培养学生对编程的兴趣,激发他们探索计算机科学领域的热情;2. 培养学生的团队协作意识,学会与他人共同解决问题;3. 培养学生严谨、细心的编程习惯,提高他们面对问题的分析能力和解决能力。
本课程旨在帮助学生在掌握C语言基础知识的基础上,学会运用编程解决实际问题。
结合课程性质、学生特点和教学要求,将课程目标分解为具体的学习成果,以便于后续的教学设计和评估。
在教学过程中,注重培养学生的实际操作能力,提高他们运用C语言解决实际问题的综合素质。
二、教学内容1. C语言基础知识回顾:结构体、数组、字符串、指针等基本概念及其应用。
相关教材章节:第一章至第四章2. 算法介绍:二分查找算法原理及其在电子词典查询中的应用。
相关教材章节:第七章3. 文件读写操作:C语言文件操作函数,实现对电子词典数据的存储和读取。
相关教材章节:第九章4. 电子词典功能实现:- 单词录入:设计录入界面,实现单词信息的输入和保存;- 单词查询:实现按单词查找,展示单词释义;- 单词修改:实现对已录入单词的修改功能;- 单词删除:实现对已录入单词的删除功能。
相关教材章节:第五章、第六章、第七章5. 项目实践:分组进行电子词典项目实践,完成一个具有基本功能的电子词典程序。
教学内容安排和进度:第一周:C语言基础知识回顾,学习结构体、数组、字符串等;第二周:学习文件读写操作,理解二分查找算法;第三周:电子词典功能实现(单词录入、查询、修改、删除);第四周:项目实践,分组完成电子词典项目,并进行演示和评价。
c语言课程设计-电子英汉词典(含源码)
c语言课程设计-电子英汉词典(含源码)————————————————————————————————作者:————————————————————————————————日期:C语言课程设计软件学院指导老师:学号:姓名:一、实验题目及要求题目:电子英汉词典设计要求:1.用图形用户界面实现2.能够编辑词典库中的信息3.能够实现英译汉,汉译英。
(要考虑一词多义)二、实验过程主要思想: 1 建立词典库(相关文件的处理)2 设计词典图形用户界面3 查找单词及词典的重复使用(实现一词多义)主要过程1.词典库的建立:文件的建立,写入和调出参考老师给的FILE.C 文件FILE.C大致内容{FILE *fp/*建立文件指针*/fp=fopen("d:\list.txt","wb+");/*在指定路径建立文本文件*/for(i=0;i<SIZE;i++) /*将结构体中的内容if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1) 写进指定文件中并进{ printf("file write error!"); 行判断是否写入*/ exit(0);}fread(&stu_temp,sizeof(struct student),1,fp); /*将文件中的指定内容调出*/ }单词库存储在指定路径的指定文件中方便后文的查询和调出单词库的建立利用结构体可以包含一词多义,并将汉译英和英译汉的词典库分开以便实现英汉互译(在中文dos环境下运行)图例:(未在中文dos环境下运行)2. 设计词典图形用户界面参考文件Graph.c 进行图形驱动void init(){int gdriver, gmode, i, j;gdriver = DETECT;registerbgidriver(EGA VGA_driver);initgraph(&gdriver, &gmode, "");}图例(未设置鼠标前)上网查找相关资料调用鼠标鼠标绘制函数设置鼠标指针位置函数设置函数得到鼠标左右键点击的不同状态(设置鼠标后运行结果全屏无法截图)在图形界面下设计用户界面并使用该鼠标设置相关区域的鼠标键点击后得到不同的结果,进入英译汉或汉译英界面3. 查找单词及词典的重复使用(考虑一词多义)利用文件指针和函数fseek ,fread 对结构体内的单词名称查找和该相关释义的调用同时考虑英汉互译设置查找不到单词的页面和利用while语句使实现词典是否需要重复使用功能图例:三、实验结果及心得根据题目描述基本达到题目要求。
c语言课程设计电子词典
c语言课程设计电子词典随着科技的不断进步和发展,计算机技术也在不断的发展和完善。
计算机编程语言也应运而生,其中c语言成为了最为流行和广泛应用的一种编程语言。
为了更好地学习和掌握c语言,我们需要不断地进行练习和实践。
而课程设计电子词典就是一个非常好的实践项目。
本文将对c语言课程设计电子词典进行详细的介绍和分析。
一、电子词典简介电子词典是一种类似于纸质词典的电子设备。
电子词典将词典内容数字化存储在内部芯片中,通过一个屏幕显示出来。
电子词典拥有很多优点,比如存储空间更大、功能更强大、可搜索性更高等等。
今天,电子词典是很多人学习和工作必不可少的工具之一。
二、c语言课程设计电子词典的设计思路c语言课程设计电子词典是一种将词典内容和c程序功能相结合的设计项目。
他的设计思路如下:1.定义词典内容结构体在程序中需要定义一个结构体,用来存储词典内容。
结构体的成员包括单词、单词的释义、音标等。
typedef struct word{ char name[30]; // 单词名称char symbol[30]; // 单词音标charmean[400]; // 单词含义}word;2.构建词典数据将词典中的单词、释义、音标等内容保存到结构体中。
并将多个结构体数据包含在一个数组中。
word dictionary[] = { { "apple", "[ˈæpl]", "a round fruit with smooth red or yellow skin and firm white flesh" }, { "banana", "[bəˈnɑː.nə]", "a long curved fruit with a yellow skin" }, { "cat", "[kæt]", "a small animal with fur, four legs, a tail, and claws" }, { "dog", "[dɒɡ]", "a common animal with four legs, fur, and a tail" }, { "elephant", "[ˈel.ɪ.fənt]", "a very large grey animal with a long nose called a trunk" }};3.实现单词查询功能在程序中,我们需要实现一个单词查询的功能。
英汉电子词典设计报告设计C语言C语言程序设计
英汉电子词典设计报告设计C语言C语言程序设计设计报告:英汉电子词典设计目标:本次设计的目标是开发一个基于C语言的英汉电子词典,实现用户通过输入英文单词或汉字查询其对应的中文释义或英文翻译。
同时,用户还可以对查询结果进行添加、修改、删除操作,方便用户自定义个性化词库。
设计思路:1.使用C语言实现用户界面,包括菜单选项和用户输入功能;2.使用文件管理系统进行词库的存储和读取,并实现对词库的增删改查功能;3.使用字符串匹配算法进行单词或汉字的查询,保证查询的精确性;4.使用二叉查找树(BST)作为数据结构,实现词库的快速查找和插入功能。
模块设计:1.用户界面模块:-显示菜单选项,包括查询、添加、修改、删除和退出;-提示用户输入相应选项,并获取用户输入;2.文件管理模块:-创建存储词库的文件,并检查文件是否存在;-实现读取文件内容到内存和将内存内容写入文件的功能;3.数据结构模块:-设计结构体,包含英文单词和中文释义;-使用二叉查找树作为词库的数据结构,实现快速查找和插入功能;4.查询模块:-根据用户输入的英文单词或汉字,进行查询;-使用字符串匹配算法进行匹配,找到对应的词条并显示;5.添加模块:-接受用户输入的英文单词和中文释义,并将其插入词库中;6.修改模块:-接受用户输入的英文单词和新的中文释义,并替换原有词条的中文释义;7.删除模块:-根据用户输入的英文单词或汉字,从词库中删除对应的词条;测试计划:-对每个模块进行单元测试,确保其功能正常;-集成测试,检查各个模块之间的交互是否正常;-进行用户测试,验证整个电子词典系统的可用性和稳定性。
总结:通过以上的设计,我们可以实现一个基于C语言的英汉电子词典,能够方便用户进行英文单词和汉字的查询,并支持用户对词库进行个性化操作。
该电子词典设计简洁,功能完备,并且具有较好的扩展性,适用于不同平台和系统的实际应用。
一种简单份的英文词典排版系统
第一部分1.设计题目:一种简单份的英文词典排版系统2实践目的通过进行计算机实践,更加系统地理解和掌握C语言的基本概念、语言特点和编程技巧。
利用系统提供的标准函数和自定义函数进行程序设计,培养利用C语言设计综合程序的能力。
2.要求:(1)能输入和显示打入的词。
(2)能分辨出单词。
(3)对重复的单词和已输入的单词能自动排除。
(4)能按A----Z排序排版。
(5)能将运行结果以文本形式存储。
(6)具有添加新单词并重新排版的能力。
3.分析:运行结果以文本形式存储,因而要提供文件份额输入输出操作;通过查找操作检查重复单词;提供排序操作实现按A---Z的顺序排版;提供插入操作添加新单词并重新排版。
另外通过键盘式菜单实现功能选择。
数据结构采用指针数组或二维数组。
以回车键或者空格键作为单词输入结束标志对重复的单词自动排除排除可选第一章的查找方法,数据结构可采用指针和数组。
第二部分1.总体设计整个系统被设计为单词录入模块,文件存储模块和单词浏览四个模块。
其中单词录入模块要完成输入单词,检查是否重复,排序操作。
文件存储模块把存放单词的词组中的数据写入文件。
单词浏览模块完成英文词典的输出,即文件的输出操作。
这四个模块是整体的设计思路,设计核心,整个程序的设计都将围绕这四个模块进行,各个模块都相互衔接,所以需要在设计好各个部分地同时,还要把握好各个部分的连接。
以下这个是简单的设计模块:2详细设计按照上面的整体思路,分别设计各个模块。
单词录入模块要完成输入单词,检查是否重复,排序操作。
是设计程序的核心部分,对于检查是否重复,以及排序两个主要方面,我在设计中采用了两个结构体。
文件存储模块把存放单词的词组中的数据写入文件,这个模块还需具有天将新单词的功能。
单词浏览模块完成英文词典的输出,即文件的输出操作。
将文件储存模块的内容输出。
[流程图]主函数一般设计的简洁,只提供输入,输出,功能处理和输出部分的函数使用。
其中各功能模块选择菜单方式。
简单的英文词典排版系统实验报告
实验目录需求分析———————————— 2 整体设计———————————— 2 详细设计———————————— 4 调试与测试——————————— 6 用户手册———————————— 6 总结—————————————— 6 附录—————————————— 9一需求分析1目的我们所做的程序课题是一个“简单的英文词典排版系统”。
该课题目的在于锻炼我们的自主动手和创新、创造能力, 同时通过自己看书学习文件的输入输出等功能的实现, 提升我们的自学能力。
并通过自己思考程序的算法和函数的组建过程来提升我们的逻辑思维能力, 最后是利用自我程序测试和改进来增加我们对编程的进一步了解, 和提升编程的能力。
其大背景是要为同学提供了一个既动手又动脑, 独立实践的机会, 将课本上的理论知识和实际有机的结合起来, 锻炼同学的分析解决实际问题的能力。
提高学生适应实际, 实践编程的能力。
2 预期达到功能(1) 能输入和显示所打的单词。
(2) 能分辨出单词。
(3) 对重复的单词和已经输入的单词能自动排除。
(4) 能按A-Z的顺序排版。
(5) 能将运行结果以文本形式存储。
(6) 具有添加新单词并重新排版的能力。
(7) 实现以上功能的选择操作3 需解决问题主要解决单词输入到文件和从文件输出以及最后文件保存的问题, 但是我们对C++的学习仍不完全, 这就要求我们提前把课本上的“文件与流”这一章节的相关内容进行自学并应用于其中。
其次我们要解决如何实现查找单词、分辨单词、添加单词以及对单词进行排序的系列问题, 这要求我们能对已学习的内容充分掌握并熟练应用。
二整体设计1 程序设计功能模块图2 程序流程示意图词库文件建立并选择功能添加单词单词排序搜索单词显示单词1)字符排序2) 检查模块三详细设计1 函数功能void write(int r) 将单词写入文件的函数int read() 读取文件函数void zhucaidan() 主菜单函数int paixu() 排序函数void jiancha() 检查单词模块void charu(char*d) 插入单词模块void find(char *s) 查找单词模块void xuanze() 选择菜单模块2 参数说明dic[N][20] N为100, 即但单词库课输入100个单词, 每个单词长度不得大于19*p 为指向Data文件的指针flag, temp 在不同的函数模块中用于不同情况下的结果判断与后续的程序执行s[20], d[20], f[20] char类型的数组s、d和f用于临时的单词输入放置t[20] char类型的数组t是用于临时放置从文件中读取的单词way 是用于switch语句中功能选项的选择i, j, c等是普通的int变量3函数调用1)void xuanze()选择菜单调用的函数: jiancha()检查函数、find(d)查找函数、charu(d)插函数以及zhucaidan()主菜单函数2)void find(char *s) 查找单词模块调用的函数: strcpy复制函数、strcmp比较大小函数、write(r)写入文件函数3)void charu(char*d) 插入单词模块调用的函数: read()读取函数、strcmp比较函数、strcpy复制函数、write(r)写入文件函数、paixu()排序函数、4)void jiancha()检查单词模块调用的函数: write(r)写入文件函数5)int paixu()排序函数调用的函数: read()读取函数、strcmp比较大小函数、strcpy复制函数、write(r)写入文件函数6)int read()读取文件函数调用的函数: write(r)写入文件函数main()主函数调用的函数: jiancha()检查函数、paixu()排序函数、xuanze()菜单选择函数4算法实现1)插入模块void charu(char*d)单词存在情况:先输入单词放置于*d指向的d[20]临时数组中, 再利用for循环和strcmp比较函数看输入的单词是否已经存在, 存在flag=1, 不存在将单词保存break跳出for循环从新输入单词, flag仍等于0;单词不存在情况:若flag=0, 利用strcpy复制函数将新输入的单词复制到单词库已存在单词的后面, 单词个数r增加1;继续输入:利用while语句, 只要继续输入的字符不为0(即输入的为单词, 用户不返回主菜单), 就可以执行while语句继续重复上述的检查单词和保存单词的步骤;2)返回主菜单:3)若输入的字符为0(即用户要返回主菜单), while语句无法执行, 经过从新排序后, 利用return返回调用函数, 即void xuanze()菜单选择函数, 可从新选择功能。
英汉词典c语言课程设计
英汉词典c语言课程设计一、教学目标本课程的教学目标是使学生掌握C语言的基本语法、数据类型、运算符、控制结构、函数等基本知识,培养学生具备简单的程序设计能力,能够运用C语言解决实际问题。
具体来说,知识目标包括:1.理解C语言的基本语法和规则。
2.掌握基本数据类型、运算符和表达式。
3.熟悉控制结构,如if语句、for循环、while循环等。
4.了解函数的定义和调用。
技能目标包括:1.能够编写简单的C语言程序。
2.能够阅读和理解简单的C语言程序。
3.能够运用C语言解决实际问题。
情感态度价值观目标包括:1.培养学生的编程兴趣,提高学生学习的积极性。
2.培养学生的团队合作意识,学会与他人交流和分享。
3.培养学生遇到困难时,积极思考、解决问题的能力。
二、教学内容根据教学目标,本课程的教学内容主要包括以下几个部分:1.C语言的基本语法和规则。
2.基本数据类型、运算符和表达式。
3.控制结构,如if语句、for循环、while循环等。
4.函数的定义和调用。
5.简单的实际问题解决。
教学大纲安排如下:第1-2课时:C语言的基本语法和规则。
第3-4课时:基本数据类型、运算符和表达式。
第5-6课时:控制结构,如if语句、for循环、while循环等。
第7-8课时:函数的定义和调用。
第9-10课时:简单的实际问题解决。
三、教学方法为了实现教学目标,本课程将采用以下几种教学方法:1.讲授法:通过讲解C语言的基本语法、数据类型、运算符、控制结构和函数等基本知识,使学生掌握基本概念和原理。
2.案例分析法:通过分析实际案例,使学生了解如何运用C语言解决实际问题。
3.实验法:安排上机实验,让学生动手编写C语言程序,巩固所学知识,提高编程能力。
4.讨论法:学生进行小组讨论,分享学习心得和经验,培养学生的团队合作意识。
四、教学资源为了支持教学内容和教学方法的实施,本课程将采用以下教学资源:1.教材:《C程序设计语言》(K&R)。
用c语言编辑的简单的英汉互译词典
源程序主要代码(关键语句加注释)#include "stdio.h"#include "string.h"void main(){char *change(char *str);/*声名一个函数*/char str[200];int c;printf("请输入一个句子:\n");scanf("%s",str);c=strlen(str);/*测字符串的长度*/if(str[c-1]=='.')str[c-1]='\0';if(str[c-1]=='/')str[c-1]='\0';if(str[c-1]=='!')str[c-1]='\0';if(str[c-1]=='?')str[c-1]='\0';if(str[c-1]==',')str[c-1]='\0';while(str!="."||str!="?"||str!="!"||str!="/"||str!=","){printf("%s",change(str)); /*xian shi dao pin mu*/scanf("%s",str);c=strlen(str);/*测字符串的长度*/if(str[c-1]=='.')str[c-1]='\0';if(str[c-1]=='/')str[c-1]='\0';if(str[c-1]=='!')str[c-1]='\0';if(str[c-1]=='?')str[c-1]='\0';if(str[c-1]==',')str[c-1]='\0';}}struct fany/*定义词库*/{char dan[20];char han[14];}fany[82]={{"hello","嗨"},{"improve","提高"},{"you","你"}, {"i","我"},{"this","这"},{"bike","自行车"},{"program","程序"}, {"come","来"},{"study","学习"},{"have","有"},{"is","是"},{"start","开始"}, {"sister","姐妹"},{"brother","哥弟"},{"hill","小山"},{"enjoy","欣赏"},{"he","他"},{"she","她"},{"it","它"},{"love","爱"},{"china","中国"},{"chinese","中国人"},{"American","美国人"},{"England","英国"},{"budget","预算"},{"acute","敏感的"},{"replace","代替"},{"foreigner","外国人"},{"abrupt","粗鲁的"},{"brief","简洁的"},{"opening","开始"},{"interaction","相互影响"},{"convention","惯例习俗"},{"leisure","悠闲"},{"surroundings","环境"},{"generally","一般的通常"},{"consequently","因此所以"},{"saving","节省"},{"device","器械装置"},{"email","电子邮件"},{"electronic","电子的"},{"significance","意义"},{"conduct","进行指导"},{"increasing","日益增加的"},{"obtain","取得获得"},{"whereas","过去逝去"},{"skillfulness","熟练"},{"spite","尽管"},{"tradition","传统"},{"clash","严重不一致"},{"evidently","明显地"}, {"where","哪里"},{"how","怎样"},{"excuse","原谅接口"},{"excite","使兴奋"},{"baby","宝宝"},{"dear","亲爱的"},{"cash","现金"},{"green","绿色的"},{"red","红色的"},{"black","黑色的"},{"happy","快乐"},{"hite","讨厌"},{"angry","生气"},{"hit","撞击打"},{"hot","热"},{"close","关闭"},{"open","打开"},{"copy","复制"},{"adjust","调整"},{"life","生活"},{"child","小孩"},{"kid","伙计家伙"},{"beautiful","漂亮的"},{"bead","珠子水珠"},{"break","断了"},{"beard","胡须"},{"long","长的"},{"short","短的"},{"childhood","童年"},{"is","是"},{"end","结束"}};/*创建对照库*/char *change(char *str) /*函数的定义*/{int x,y=0;char str1[50],sz[200],str2[50];strcpy(str2,str); /*将一个字符串复制到另一个中*/strcpy(str1,strlwr(str));/*将大写字母转换为小写*/for(x=0;x<=81;x++){if(strcmp(str1,fany[x].dan)==0) /*1比较两个字符串大小*/{y=1;break;}}if(y==1){strcpy(sz,fany[x].han);}else{strcpy(sz,str2);}return(sz);/*返回指向被复制的字符串的指针*/ }以上便是我所编辑的程序。
C语言程序设计课程设计报告电子英汉词典设计
C语言程序设计课程设计报告电子英汉词典设计课程设计报告课程名称《C语言程序设计》课题名称电子英汉词典设计专业信息管理与信息系统班级学号姓名指导教师2011年6月22日一、设计内容与设计要求1.课程设计目的全面熟悉、掌握C语言基本知识,增强对不同的问题运用和灵活选择合适的数据结构以及算法描述的本领,熟悉编制和调试程序的技巧,掌握分析结果的若干有效方法,进一步提高上机动手能力,培养使用计算机解决实际问题的能力,养成提供文档资料的惯和规范编程的思想,为后继课程(数据结构和数据库等课程)的实验以及课程设计打下较扎实的基础。
2.课题题目⑴班级成绩管理系统⑵班级档案管理系统⑶飞机订票系统⑷猜数字游戏⑸电子英汉词典设计⑹通信录管理体系3.设计要求掌握结构化程序设计的主体思想,以自顶向下逐步求精的方法编制程序解决一些实际的中型问题,为将来开发软件积累一些典型的案例处理经验。
具体要求如下:⑴设计课题题目:每位同学根据自己学号除以6所得的余数加一选择相应题号的课题。
原则上不予换提,私自换题者不记成绩。
⑵根据自己对应的课题完成以下主要工作:①完成系统需求分析:包括系统设计目的与意义;系统功能需求;输入输出的要求。
②完成系统概要设计:程序由哪些模块组成以及模块之间的层次结构、各模块的调用关系;每个模块的功能;课题涉及的数据结构和数据库结构;即要存储什么数据,这些数据是什么样的结构,它们之间有什么关系等。
③完成系统详细设计:包括采用C语言定义相关的数据类型;写出各模块的类C码算法;画出函数的调用关系图。
④调试分析、设计体会、测试数据:准备典型的测试数据和测试方案,包括正确的输入及输出结果和含有错误的输入及输出结果;程序调试中遇到的问题以及解决问题的方法;课程设计过程经验教训、心得体会。
⑤关键源程序(带注释)⑶按规定格式完成课程设计报告,将其打印稿(A4纸)上交给老师存档。
⑷不得抄袭别人程序、课程设想报告,每一个人应体现本人的个性设想。
c英汉词典课程设计
c 英汉词典课程设计一、课程目标知识目标:1. 学生能掌握至少20个新的英语单词及其汉语对应词,理解其在不同语境中的含义和使用方式;2. 学生能够了解英汉词典的基本结构和使用方法,包括词头、音标、释义、例句等;3. 学生能够通过词典查找不熟悉的单词,并能准确解释其在句子中的意义。
技能目标:1. 学生培养运用英汉词典进行自主学习的习惯,提高英语阅读理解能力;2. 学生通过小组合作,提高英汉互译的准确性和速度;3. 学生能够运用所学词汇进行简单的口头和书面表达。
情感态度价值观目标:1. 学生培养对英语学习的兴趣,增强学习英语的自信心;2. 学生在学习过程中,树立正确的价值观,尊重不同文化,培养跨文化交际意识;3. 学生通过合作学习,培养团队协作精神,学会分享和倾听他人意见。
课程性质:本课程旨在帮助学生提高英语词汇量,掌握英汉词典的使用方法,提高自主学习能力。
学生特点:考虑到学生所在年级的特点,课程设计注重培养学生的学习兴趣和实际运用能力,同时注重培养学生的团队协作能力和跨文化交际意识。
教学要求:教师应注重启发式教学,引导学生积极参与课堂活动,关注学生的学习过程,及时给予反馈和指导,确保学生能够达到课程目标。
通过丰富多样的教学活动,激发学生的学习兴趣,提高教学效果。
二、教学内容本课程以《英语》课本相关章节为基础,结合英汉词典使用技巧,组织以下教学内容:1. 词汇学习:选取与课本内容相关的20个英语单词,涉及日常生活中的常用词汇,如动物、颜色、食物、家庭成员等,让学生掌握这些单词的汉语对应词及其在不同语境中的应用。
2. 词典使用技巧:详细介绍英汉词典的基本结构,包括词头、音标、释义、例句等部分,让学生了解并熟练运用词典进行词汇查找。
3. 语境应用:通过设置真实的语境,让学生运用所学词汇进行口语和书面表达,提高学生的实际运用能力。
4. 小组合作活动:组织学生进行小组合作,进行英汉互译练习,提高翻译准确性和速度。
(完整word版)C++英文词典的简单实现(20200807170145)
用散列表实现简单的英文词典一.头文件://文件名:Word.h//单词类的定义#in elude <cstri ng>#in elude <iostream.h> class Word{friend ostream& operator<<(ostream &os, const Word & obj)〃重载输出函数{int n=strle n(o bj.word);for(i nt i=0; i<n; ++i) os << obj.word[i];return os;}public:char word[25]; //用于存放单词Word(){ for(i nt i=0; i<25; ++i) word[i]='\0';}bool operator==(Word &r)〃重载判断相等符号{if(strcmp(word,r.word)==0) return true;else return false;}void operator=(Word &r) { strcpy(word,r.word); }// 重载赋值运算符};// 文件名:openHashTable.h//开散列表#in clude <cstri ng>#in clude <iostream.h>template <class Type> class ope nH ashTable{ private:struct node{〃私有结点Type data;struct node *next;node(){ next = NULL; } node(Type &d){ data = d; next = NULL;} };node **array; int(*key)(const Type &x);// 关键字static int defaultKey(const int &k) { return k; }// 缺省值int size;public:openHashTable(int length =101 , int(* f)(const Type &x) = defaultKey); ~openHashTable();int find(Type &x); // 查找函数bool insert(Type &x); // 插入函数bool remove( Type &x); // 删除函数void output(); // 输出词典函数};//======================开散列表函数的实现=====================================// 构造函数的实现template <class Type> openHashTable<Type>::openHashTable(int length,int(*f)(const Type &x)) {size = length;array = new node *[size];key = f;for(int i=0; i<size; ++i) array[i] = new node;}// 析构函数的实现template <class Type> openHashTable<Type>::~openHashTable(){node *p, *q;for(int i=0; i<size; ++i){p = array[i];// 分别析构每一个桶的相应链do{q = p->next; delete p;p =q; }while(p!=NULL);}delete [] array; }// 插入函数的实现template <class Type> bool openHashTable<Type>::insert(Type &x) { int pos; node *p;pos = key(x)%size; //计算相对应的关键字p = array[pos]->next;while(p!=NULL && !(p->data==x)) p = p->next;if(p==NULL){p = new node(x); p->next = array[pos]->next; array[pos]->next = p;return true; }return false;}// 删除函数的实现template <class Type>bool openHashTable<Type>::remove(Type &x){int pos;node *p, *q;pos = key(x)%size; //计算相对应的关键字q = array[pos];p = q->next;while(p!=NULL&& !(p->data==x)){q = p;p = p->next;}if(p==NULL) return false; // 没有找到else{q->next = p->next; // 找到后删除delete p;return true;}}// 查找函数的实现template<class Type>int openHashTable<Type>::find(Type &x){int pos;node *p;pos = key(x)%size; //计算相对应的关键字p = array[pos]; while(p->next!=NULL && !(p->next->data==x) ) p = p->next;if(p->next!=NULL) return pos; // 找到返回相应的桶位else return 0; // 没到找到就返回0 }// 打印词典函数的实现template<class Type>void openHashTable<Type>::output(){node *p;for(int i=0; i<size; ++i){ if(array[i]->next!=NULL){ p=array[i]->next; if(i<10) cout << " [00" << i << "] ";// 输出单词的桶位if(i>10&&i<100) cout << " [0" << i << "] ";while(p!=NULL) // 打印同一桶位,即有冲突的单词{cout << p->data;if(p->next!=NULL) cout << " --> "; if(p->next==NULL) cout << endl; p = p->next;}}}}二.Main 函数的实现:// 文件名:openHashTableServesAs-A-DictionaryTest.cpp// 用散列表实现英文词典#include "openHashTable.h"#include "Word.h"#include <cstring>#include <iostream.h>int myHash(const Word &a); // 求权重函数int power(int n); // 求2 的n 次方函数void menu(); // 打印菜单函数void main(){Word w;char chioce;int n;bool flag=false;openHashTable<Word>dictionary(101,myHash); // 定义一个名为dictionary 的开散列表,即作为词典while(!flag){menu();cin >> chioce;switch(chioce){case 'i': cout << " 请输入单词:";cin.ignore(1,'\n');cin.getline(w.word,25);if(dictionary.insert(w)) cout << " 插入成功!" << endl;else cout << " 这个单词已存在!" << endl; break;case 'd': cout << " 请输入单词:";cin.ignore(1,'\n');cin.getline(w.word,25); if(dictionary.remove(w)) cout << " 删除成功!" << endl;else cout << " 这个单词不存在!" << endl; break;case 's': cout << " 请输入单词:";cin.ignore(1,'\n'); cin.getline(w.word,25); n = dictionary.find(w);if(n!=0) cout << " 已找到,单词在第" << n << " 桶中"<< endl;else cout << " 这个单词不存在!" << endl; break;case 'v': cout << " 词典如下所示:" << endl;dictionary.output();break;case 'q': flag = true;break;default: cout << " 输入错误!" << endl;break;}}}// 求权重函数的实现int myHash(const Word &a){unsigned long int num=0;//从a (A)到z (Z)的权重依次为0到26 for(int i=0; a.word[i]!='\0'; ++i)// 将单词的从左到右分别乘上的2 排位次方,如第四位乘2 的3 次方{if(a.word[i]>='a'&&a.word[i]<='z') num += (a.word[i] - '0'- 17 -32)*power(i);else num += (a.word[i] - '0'-17)*power(i);return num;}// 求2 的n 次方函数的实现int power(int n){int num=1;for(int i=1; i<=n; ++i) num *=2;return num;}// 打印菜单函数的实现void menu(){cout << "\n==================== Menu =============================\n" << " i--insert d--delete s--search v--view q--exit \n" << " 请选择:";}。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C语言课程设计-一种简单的英文词典排版系统的实现目录课程设计评语 ..................................................................... ............................. 错误~未定义书签。
2目录...................................................................... ........................................................................ ...... 1 1(课程论文题目 ..................................................................... .. (2)2(程序设计思路 ..................................................................... .. (2)3(功能模块图 ..................................................................... ............................................................... 3 4(数据结构设计 ..................................................................... .. (3)5(算法设计...................................................................... .................................................................. 4 (程序代码...................................................................... ................................................................ 12 6 7(程序运行结果 ..................................................................... (17)8(编程中遇到的困难及解决方法 ..................................................................... .. (19)9(总结心得及良好建议 ..................................................................... (20)10(致谢...................................................................... ......................................................................2011(课程论文题目一种简单的英文词典排版系统的实现【要求】1)能输入和现实打入的单词 ((2)能分辨出单词(3)对重复的单词和已经输入的单词能自动排除(4)能按A~Z的顺序排版(5)能将运行结果以文本形式储存(6)具有添加新单词蹦重新排版的能力[提示](1)需求分析:运行结果以文本形式储存,因而要提供文件的输入输出操作;通过查找操作检查重复单词;提供排序操作现实按A~Z的顺序排版;提供插入操作添加新单词并重新排版。
另外通过键盘式菜单实现功能选择。
(2)总体设计:整个系统被设计为单词录入模块,文件存储模块和单词浏览模块。
其中单词录入模块要完成输入单词,检查是否重复,排序操作。
文件存储模块把存放单词的数组中的数据写入文件。
单词浏览模块完成英文词典的输出,即文件的输出操作。
(3)数据结构采用指针数组或二维数组。
以【Enter】键或者空格键作为单词输入结束标志,对重复的单词自动排除可选用查找方法,数据结构可采用指针和数组。
2(程序设计思路整个系统被设计为单词录入模块,文件存储模块和单词浏览四个模块。
其中单词录入模块要完成输入单词,检查是否重复,排序操作。
文件存储模块把存放单词的词组中的数据写入文件。
单词浏览模块完成英文词典的输出,即文件的输出操作。
这四个模块是整体的设计思路,设计核心,整个程序的设计都将围绕这四个模块进行,各个模块都相互衔接,所以需要在设计好各个部分地同时,还要把握好各个部分的连接。
23(功能模块图(英文词典排版系统单词录入文件存储单词浏览4(数据结构设计数据结构采用指针数组或二维数组:char* dictionary[N]; 或 char dictionary[N][20]。
其中N是宏定义#define N 256 (表示单词个数) (1)单词录入模块输入一个单词,存放在一个临时字符数组中,以空格或回车表示单词的结束(这也是默认操作),然后换行输出刚刚输入的单词。
采用插入排序算法的思想把该单词插入单词数组中,不同的是如果两个单词相同则不插入。
(2)文件存储模块采用fwrite或fprintf把单词数组输入到文件中。
(3)单词浏览模块采用fread或fscanf把单词从文件中读出,然后输出。
35(算法设计1.主函数【流程图】显示一系列的功能选项N 输入n,判断n是否是1—9Y【程序】根据n的值调用各功能模块函数 #include "stdio.h"#include "stdlib.h"#include "string.h"#include "ctype.h"#define ROWS 256#define COLS 32static FILE *fp;static char a[ROWS][COLS];char get_option(void);int b(int count);void c(char *pt[], int count); int check(char arr[], int count); void storage(char *pt[], int count); int n; //****n全局变量*****// char word[N][20];void menu()//***主界面***//{int n,w;//*变量n保存选择菜单数字,w判断输入的数字是否在功能菜单对应数字范围内*//do{puts("\t\t********************MENU********************\n\n");puts("\t\t\tWelcome to dj's program!\n\n");puts("\t\t\t\t 1.Add new word.");puts("\t\t\t\t 2.Browse all the words.");puts("\t\t\t\t 3.Search the word.");4puts("\t\t\t\t 4.Sort the words.");puts("\t\t\t\t 5.Order by A-z.");puts("\t\t\t\t 6.Exit!");puts("\n\n\t\t****************************************\n");printf("Choice your number(1-6): [ ]\b\b"); scanf("%d",&n);if(n<1||n>6)//*对选择的数字作判断*//{w=1;getchar();}else w=0;}while(w==1);switch(n){case 1:add();break;//*追加模块*//case 2:browse();break;//*浏览模块*//case 3:search();break;//*查找模块*//case 4:sort();break;//*分类模块*//case 5:order();break;//*排序模块*//case 6:exit(0);//*退出*//}}void main() //********主函数*********// { menu();}2.公共函数【程序】int load()//*加载函数*//{int i,count;int start;char *pt[ROWS];char ch, len;char input;if((fp=fopen("words.txt","a+"))==NULL)//*以输出打开方式,在此前的记录被覆盖*//{printf("\nCannot open file!\n");return NULL;}5for(i=0;!feof(fp);i++)fscanf(fp,"%s",&word[i]);fclose(fp);return i+1;//*返回记录个数*//}void save(int n)//*保存函数,保存n个记录*//{FILE *fp;int i;if((fp=fopen("words.txt","a+"))==NULL)//*以输出打开方式,在此前的记录被覆盖*//{printf("\nCannot open file!\n");exit(0);}for(i=0;i<n;i++)fprintf(fp,"%s",&word[i]);fclose(fp);}3.各功能模块设计1)分类模块【程序】void sort(){int i,j,k;char c[20];if((n=load())==0){printf("\nCannot open file!\n");exit(0);}for(i=0;i<n;i++)for(j=0;j<n-i-1;j++);if(strcmp(word[j],word[j+1])>0){strcmp(c,word[j]);strcmp(word[j],word[j+1]);strcmp(word[j+1],c);}save(n);printf("Successful!^_^.\n");printf("\nNow? 1.browse all 2.back");6scanf("%d",&k);if(k==1)browse();else if(k==2)menu();}2)排序模块用选择法排序【流程图】【程序】void order() //*排序模块*// 保存{int a[N],i,j,t;struct words; 返回主菜单n=load();for(i=0;i<N;i++)for(i=0;i<N-1;i++)for(j=i+i;j<N;j++)if(a[i]>a[j]){t=a[i];a[i]=a[j];a[j]=t;}for(j=0;j<N;j++)printf("%3d",a[i]); }3)修改模块【流程图】显示所有记录,让用户看哪个要修改输入要修改的单词是否找到此单词记录Y N提示没有找到显示找到的单词,调用修改函数 YY7 询问用户是返回主菜单否继续修改【程序】void modify(int a) //*修改模块*//{char c[20];printf("Enter the new word:");scanf("%s",c);strcpy(word[a],c);save(n);}4)删除模块【流程图】显示所有记录,让用户看哪个需要删除输入需要删除的单词是否找到此单词记录Y N显示找到的记录提示没有找到调用删除函数YN 询问用户是否继返回主菜单续删除【程序】void del(int a) //*删除模块*// {int x,i,y;printf("Are you sure to delete this word?\n\t1).sure 2).no and back menu[ ]\b\b");scanf("%d",&x); //*输入要修改的单词*//if(x==1)8{for(i=a;i<n-1;i++) //*查找要修改的单词*//strcpy(word[i],word[i+1]);save(n-1);printf("Successful!^_^.\nNow? 1).one more 2).back menu"); scanf("%d",&y);if(y==1)search();else if(x==2)menu();}else if(x==2){menu();}}5)追加模块【流程图】调用加载函数n=load();并计算可以记录个数n输入用户要追加的的单词保存追加的单词Y 询问用户是否继续追加单词N返回主菜单【程序】void add() //*追加模块*//{int i,x,w1,w2,w;char c[20];9if((n=load())==0)exit(0);else{puts("Enter the new word!\n");scanf("%s",c); //*输入要追加的单词*// for(i=0;i<n;i++){if(strcmp(word[i],c)==0)break;}if(i<n){w=1;do{printf("The word has already exit!\n");printf("\n\nWhat do you want to do?\n\t1).enter one more 2).back menu [ ]\b\b");scanf("%d",&x);if(x<1||x>2)w1=1;elsew1=0;}while(w1==1);}else{w2=1;strcpy(word[i],c);save(n+1);printf("Successful!^_^.Now choose what you will do next?\n\t1).add another 2).back menu [ ]\b\b");do{scanf("%d",&x);if(x<1||x>2)w2=1;elsew2=0;}while(w2==1);}10switch(x){case 1:add();break;case 2:menu();break;}} 显示所有单词记录6)浏览(全部)模块【流程图】用户进行选项回到分类模块返回主菜单【程序】void browse() //*浏览(全部)模块*// { int i,w;if((n=load())==0) //*加载记录*// {printf("\nCannot open file!\n");exit(0);}for(i=0;i<n-1;i++)printf("%s/n",word[i]);puts("Successful!^_^.Now 1.back menu 2.sort"); scanf("%d",&w);if(w==1)menu();else if(w==2)sort();}7)查找模块【流程图】输入需要查找的单词是否找到该单Y N 词记录显示找到的记录提示没有找到询问用户是否继续查找 11让用户选择1).查找返回主菜单Y N【程序】void search() //*查找模块*//{int i,x,y;char vs[20];if((n=load())==0) //*加载记录*//{printf("\nCannot open file!\n");exit(0);}printf("Enter the word what you want to search!");scanf("%s",vs); //*输入要查找的单词*//for(i=0;i<n;i++) //*查找要修改的单词*//if(strcmp(word[i],vs)==0){printf("Successful!^_^.\nThe word is:%s\n",word[i]);//*找到需要修改的单词*//printf("What would you like to do with the word?\n\t1).modify2).delrte 3).nothing []\b\b");scanf("%d",&y);if(y==1)modify(i);else{del(i);}}if(i==n)printf("HOHO!Sorry........Not found~~~");printf("Now.....1).one more 2).back 3).exit");scanf("%d",&x);switch(x){ case 1:search();break;case 2:menu();break;case 3:exit(0);}}6(程序代码#include "stdio.h"#include "stdlib.h"#include "string.h"12#include "ctype.h"#define ROWS 256#define COLS 32static FILE *fp;static char a[ROWS][COLS]; char get_option(void); int b(int count); void c(char *pt[], int count); int check(char arr[], int count); void storage(char *pt[], int count);int main(void){int i,count;int start;char *pt[ROWS];char ch, len;char input;if((fp=fopen("words.txt","a+"))==NULL){fputs("不能打开或建立文件~\n",stderr); exit(1);}fseek(fp,0L,SEEK_END); start=(int)ftell(fp)/32; count=start;rewind(fp);if(fread(a,32*sizeof(char),start,fp)==0){i=0;puts("开始创建词库");puts("请输入单词(每行一个)");puts("在新行输入END结束输入:");while(i<ROWS&&scanf("%s", a[i])==1){fflush(stdin);if(strncmp(a[i],"END",3)==0) {count+=i;break;}13if(check(a[i], i)) continue;i++;}}puts("\t\t*********************欢迎使用字典排版系统*******************\n\n");puts(" MENU ");puts("您要做些什么,");puts("a. 显示已有的单词 b. 添加新单词");"); puts("c. 对已有的单词进行排序 d. 退出puts("\n\n\t\t********************************************************** \n");while((input=get_option())!='d'){if(input=='a'){puts("已有的单词:");for(i=0;i<count;i++) {printf(" ");puts(a[i]);}}if(input=='b'){puts("开始创建词库");puts("请输入新的单词(每行一个)"); puts("在新行输入END结束输入: "); count=b(count);}if(input=='c'){puts("对单词进行排序:");c(pt, count);for(i=0;i<count;i++) {printf(" ");puts(pt[i]);}}puts("还要做些什么?");}storage(pt,count);14fclose(fp);puts("谢谢使用,再见!");return 0;}char get_option(void) {char ch;while((ch=getchar())<'a'||ch>'d') {while((ch=getchar())!='\n');puts("请输入a,b,c或者d."); } fflush(stdin);return ch;}int b(int count) {int i;i=count;while(i<ROWS&&scanf("%s", a[i])==1){fflush(stdin);if(check(a[i], i)) continue;if(strncmp(a[i],"END",3)==0){count=i;break;}i++;}return count;}15void c(char *pt[], int count){int i,j;char *temp;for(i=0;i<ROWS;i++) pt[i]=a[i];for(i=0;i<count;i++) for(j=i+1;j<count;j++) { if(strcmp(pt[i],pt[j])>0) {temp=pt[i];pt[i]=pt[j];pt[j]=temp;}}}int check(char arr[], int count){int i;int flag=0;for(i=0;i<strlen(arr);i++) if(isalpha(arr[i])==0) {printf("%s不是一个单词.\n",arr); flag=1;break;}for(i=0;i<count;i++) if(strncmp(a[i],a[count],strlen(a[count])+1)==0) {puts("重复的单词!");flag=1;}return flag;}void storage(char *pt[], int count){16int i,j;char ptr[ROWS][COLS];c(pt, count);for(i=0;i<count;i++)for(j=0;pt[i][j]!='\0';j++) ptr[i][j]=pt[i][j]; fp=fopen("words.txt","w+"); rewind(fp);fwrite(ptr,32*sizeof(char),count,fp);}7(程序运行结果17188(编程中遇到的困难及解决方法在学习C语言时,最初使用的是TurboC计算机编程软件,实习则用VC软件编程。