admin 管理员组文章数量: 1184232
2024年3月12日发(作者:十进制怎么算二进制公式)
沈 阳 工 程 学 院
课 程 设 计
设计题目: 电子词典
系 别 信息工程系 班级 计本083
学生姓名 学号 22
指导教师 姜柳、吕海华 职称 讲师、讲师
起止日期:2009年6月15日起——2009年6月26日止
沈 阳 工 程 学 院
课程设计任务书
课程设计题目: 电子词典 (第 1 组)
系 别 信息工程系 班级 计本075
学生姓名 于满盛 学号 2008412322
指导教师 姜柳、吕海华 职称 讲师、讲师
课程设计进行地点: 实训F
任 务 下 达 时 间: 2009年 6月 15日
起止日期:2009年6月15日起——2009年6月26日止
教研室主任 姜柳 2009年6月15日批准
一、课程设计的原始资料及依据
在计算机中建立有限规模的电子英汉词典,利用程序实现电子英汉词典的
查找、增加、删除、修改等功能。查阅有关资料,进一步理解程序设计模块化
的思想,并利用此思想编写一个简单的电子词典。通过本设计可以加深理解利
用程序设计思想开发一个系统的整个流程,提高分析问题、解决问题和实际动
手的能力。
二、课程设计主要内容及要求
1.认真阅读资料,掌握程序设计模块化的思想。
2.要求在设计的过程中,建立清晰的层次结构。
3.画出主要的功能结构图和主要模块的流程图。
4.实现功能:
⑴查找单词。
⑵增加单词。
⑶万年历
⑷修改单词。
⑸显示单词。
⑹保存单词。
⑺返回
⑻帮助
⑼退出
5. 要求操作简单,用户界面友好。
6. 运行程序,检查结果是否和理论值一致。
7. 环境使用Windows,Turbo C环境。
三、对课程设计说明书撰写内容、格式、字数的要求
1.课程设计说明书是体现和总结课程设计成果的载体,主要内容包括:设
计题目、设计目的、设备器材、设计原理及内容、设计步骤、遇到的问题及解
决方法、设计总结、参考文献等。一般不应少于3000字。
2.在适当位置配合相应的实验原理图、功能模块图、算法流程图等图表进
行说明。应做到文理通顺,内容正确完整,书写工整,装订整齐。
3.设计总结部分主要写本人完成工作简介以及自己的设计体会,包括通过
课程设计学到了什么,哪里遇到了困难,解决的办法以及今后的目标。
4.课程设计说明书手写或打印均可。手写要用学校统一的课程设计用纸,
用黑或蓝黑墨水工整书写;打印时采用A4纸,页边距均为20mm,正文采用宋
体小四号字,行间距18磅。文中大标题采用黑体小三号字,一级节标题采用黑
体四号字,二级节标题采用黑体小四号字,表题与图题采用宋体五号字。
5.课程设计说明书装订顺序为:封面、任务书、成绩评定表、目录、正文、
参考文献。
四、设计完成后应提交成果的种类、数量、质量等方面的要求
1.完成“任务书”中指定的功能,运行结果正确。
2.课程设计说明书。
五、时间进度安排
顺序
1
2
3
4
5
阶段日期
2007.06.18~19
2007.06.20~22
2007.06.25~28
2007.06.28
2007.06.29
计 划 完 成 内 容
阅读资料及系统分析设计
程序编制
程序编制、调试及运行
成绩评定
书写课程设计说明书
备注
六、主要参考资料(文献)
[1]谭浩强 编著 《C程序设计》(第二版)。北京:清华大学出版社,2005
[2]吴文虎 编著 《程序设计基础》(第3版)。 北京:清华大学出版社,
2005
[3] 谭浩强 编著 《C程序设计》(第三版)。北京:清华大学出版社,2006
[4]C编写组 常用C语言用法速查手册。北京:龙门书局,1995
[5]Herbert Schildt 著 王曦若、李沛译 ANSI C标准详解。北京:电子
工业出版社,1994
[6]郑莉 董渊 张瑞丰 编著 《C++语言程序设计》(第3版)。 北京:清华
大学出版社,2006
沈 阳 工 程 学 院
程序设计基础课程设计成绩评定表
系(部): 信息工程系 班级: 计本083 学生姓名: 于满盛
指 导 教 师 评 审 意 见
评价内容
调研
论证
具 体 要 求
能独立查阅文献,收集资料;能制定课程设计方
案和日程安排。
权重
0.1
0.2
0.2
5
5
5
评 分
4
4
4
3
3
3
加权分
2
2
2
工作能力 工作态度认真,遵守纪律,出勤情况是否良好,
态度 能够独立完成设计工作,
工作量
说明书的
质量
按期圆满完成规定的设计任务,工作量饱满,
难度适宜。
说明书立论正确,论述充分,结论严谨合理,
文字通顺,技术用语准确,符号统一,编号齐
全,图表完备,书写工整规范。
0.5 5 4 3 2
指导教师评审成绩
(加权分合计乘以8)
指 导 教 师 签 名:
分 加权分合计
年 月 日
评 阅 教 师 评 审 意 见
评价内容
查阅
文献
工作量
说明书的
质量
具 体 要 求
查阅文献有一定广泛性;有综合归纳资料的能
力
工作量饱满,难度适中。
说明书立论正确,论述充分,结论严谨合理,
文字通顺,技术用语准确,符号统一,编号齐
全,图表完备,书写工整规范。
权重
0.2
0.5
0.3
5
5
5
评 分
4
4
4
3
3
3
加权分
2
2
2
评阅教师评审成绩
(加权分合计乘以4)
评 阅 教 师 签 名:
分 加权分合计
年 月 日
答 辩 小 组 评 审 意 见
评价内容 具 体 要 求 权重
5
评 分
4 3 2
加权分
汇报准备充分,思路清晰;语言表达准确,概
学生汇报
念清楚,论点正确,有层次,有重点,基本上0.5
反映了所完成任务的全部内容;时间符合要求。
答 辩
思路清晰;回答问题有理论依据,基本概念清
楚;主要问题回答准确,深入,有说服力。
0.5
5 4 3 2
答辩小组评审成绩
(加权分合计乘以8)
答辩小组教师签名:
课 程 设 计 总 评 成 绩
分 加权分合计
年 月 日
分
沈阳工程学院课程设计(报告)
摘要
计算机科学与技术是一门实用性很强、发展极其迅速的面向广大社会的技术学科,它建
立在数学、电子学 (特别是微电子学)、磁学、光学、精密机械等多门学科的基础之上。但是,
它并不是简单地应用某些学科的知识,而是经过高度综合形成一整套有关信息表示、变换、
存储、处理、控制和利用的理论、方法和技术。作为新世纪的大学生,应当站在时代发展的
前列,掌握现代科学技术知识,调整自己的知识结构和能力结构,以适应社会发展的要求。
新世纪需要具有丰富的现代科学知识,能够独立解决面临的任务,充满活力,有创新意识的
新型人才。
C语言是一种计算机程序设计语言。它既有高级语言的特点,又具有汇编语言的特点。
它可以作为系统设计语言,编写工作系统应用程序,也可以作为应用程序设计语言,编写不
依赖计算机硬件的应用程序。因此,它的应用范围广泛。C语言对操作系统和系统使用程序
以及需要对硬件进行操作的场合,用C语言明显优于其它解释型高级语言,有一些大型应用
软件也是用C语言编写的。C语言具有绘图能力强,可移植性,并具备很强的数据处理能力,
因此适于编写系统软件,三维,二维图形和动画。它是数值计算的高级语言。现在大多数的
高校都把C语言作为第一门计算机语言进行教学,这是可行的,学生是能够学习好的。
在学习中,先要学习程序设计课程的目的掌握设计程序的思路,学习会用计算机语言编
写程序,以实现所需要处理的任务。要正确处理算法与语法的关系,算法是程序的核心、是
灵魂,语法是外壳、是工具。不应把学习重点放在语法规则上,语法是重要的,不掌握语法
规则就无法编写出正确的程序。一定要把重点放在解题的思路上,通过思考,和大量的阅读,
来构造一个完整的程序。请记住:重要的是学会编程,而不是背语法。
其次,主要是学习程序设计的方法,进行程序设计的基本训练,大多数的学生应该把精
力放在最基本,最常用的内容上,学好基本功。
大学生是社会的一个特殊群体,是指接受过大学教育的人,作为社会新技术、新思想的
前沿群体、国家培养的高级专门人才,大学生代表年轻有活力一族。我们当今大学生更应学
好每一个学科,来迎接每依次挑战,面对明天,承担明天。
关键词 电子词典,算法,结构体
-1-
沈阳工程学院课程设计(报告)
目 录
摘要
……………………………………………….….………………….. . ……………………I
第一章 引言
……………………………………………….….………………………………1
1.1 题目背景
……………………………………….…………….………….. …….. ………1
1.2题目目的
......................…………….……………………….. ………………………... . 1
1.3解决问题
......................…………….……………………….. ………………………... . 1
第二章 使用工具
…………..….………..…. ………………………………….…..….……….3
第三章 系统分析与设置
…………..….…………………………………….…..….……….. 4
3.1
系统功能
……………………………………………………………………………….. .4
3.2
功能设计
………..…………………………….…………………………...……………. 4
3.2.1
主控函数
………..…………………………….…………………………...………..4
3.2.2
修改单词
………..…………………………….…………………………...………..8
3.3
总流程图
……………………………………………………………………………….. .10
第四章 系统功能实现
…………………………………………………………………… …. 23
4.1主控函数
………………………………………………………………………. …….. . . 25
4.2修改单词
………..……………………….…………………………...………………..…26
总结
……………………………………………………………………………….. …….. ……. 29
致谢
………………………………………………………………………….. …….. …….. ….. 30
参考文献
………………………………………………………………………….. …….. …….31
-2-
沈阳工程学院课程设计(报告)
第一章 引言
1.1设计背景
随着现代科学技术的迅猛发展,计算机技术已经渗透到各各领域,成为各行各业必不可
少的工具,特别是Internet技术的推广和信息高速公路的建立,使IT产业在市场竞争中越发
显示出其独特的优势,步入信息化时代,有巨大的数据信息等待加工处理和传输,这使得对
书数据库的进一步开发和利用显得尤为迫切。
当今社会中,随着外语的全面普及,学习外语在每个国家都是非常流行的,学习外语的
语种很多,但最多人学习的还是英语,显然,越来越多的关于学习英语的电子设备也随之诞
生。当然,电子词典是必不可少的设备之一。
在系统设计过程中,我们尽量采用易懂易读的人机界面,使用户可以在短期内完全掌握
英语词义。而我们又始终把系统的正确性放在首位,力求数据的完整和处理的正确性。在此
基础上优化程序代码,加速系统运行和减少对系统资源的占用。
1.2设计目的
这次设计主要是应用了C程序设计中的一些算法,还有一些函数的调用,结构体的应用
等,根据他们的基本思想来编写程序。程序主要包括的内容可以对单词进行查找、添加、修
改、帮助等操作。通过本设计可以加深理解利用程序设计思想开发一个系统的整个流程,从
而提高分析问题、解决问题和实际动手的能力。
通过本设计可以加深理解利用程序设计思想开发一个系统的整个流程,提高分析问题、
解决问题和实际动手的能力为了人们能够更快的纪录其他人的联系方式,使人们不再因为记
不住其他人的联系方式而苦恼。
1.3 解决问题
电子词典系统是市场上常用的系统之一,它主要包含以下几个模块:查找,增加,删除,
修改,浏览,维护几大模块。从而,实现对电子词典的全面使用。从中又增加了万年历的功
能。这次课设,使我们对C语言的掌握更加熟练,也解决了一些问题:
1、解决相关函数的使用。
2、解决存储文件的使用。
3、解决函数间的链接关系,使函数的调用更加方便灵活以及相关函数的使用。
4、解决对单个函数如何操作和各种按键的功能设置以及相关函数的使用。
5、解决对程序显示窗口的设置及对各种相关函数的使用。
-3-
沈阳工程学院课程设计(报告)
第二章 使用工具
C语言是在国内广泛使用的一种计算机语言。C语言功能丰富、表达能力强、使用灵活
方便、应用面广、目标程序效率高、可移植性好,既具有高级语言的优点,又具有低级语言
的许多特点,因此特别适合于编写编写软件。C语言诞生后,许多原来用汇编语言编写的软
件,现在可以用C语言编写了,而学习和使用C语言要比学习和使用汇编语言容易得多。
近年来,C语言不仅为计算机专业工作者所使用,而且为广大计算机应用人员所喜爱和
使用。许多高校不仅在计算机专业开设了C语言课程,而且在非计算机专业也开设了C语言
课程。全国计算机等级考试、全国计算机应用技术认证书考试和全国各地区组织的大学生计
算机统一考试都将C语言列入了考试范围。许多人用它编写应用软件。学习C语言已经成为
广大计算机应用人员和广大青年学生的迫切要求。
由于C语言牵涉的要领比较复杂,规则繁多,使用灵活,容易出错,不少初学者感到困
难,迫切希望学会、学懂、学精。而在学校中,学习程序设计课程的目的是为了掌握设计程
序的思路,学会用计算机语言编写程序,以实现所需处理的任务。要正确处理算法与语法的
关系,算法是程序的核心、是灵魂,语法是外壳、是工具。不应把学习重点放在语法规则上,
语法是重要的,不掌握语法规则就无法编写出正确的程序,但是只学会语法,甚至能把语法
背得滚瓜烂熟,也不可能编写出好的程序。一定要把重点放在解题的思路上,通过大量的题
学习怎样设计一个算法,构造一个程序。在学习开始时更我要在语法细节上死抠。重要的是
学会编写程序,而不是背语法。学会看懂程序是关键。
程序设计是一门实践性很强的课程,既要掌握概念,又要动手编程,还要上机调试,要
衡量这门课学习的好坏,不是看我们“知我知道”,而是看我们“会不会干”。要从学习的过
程中积累经验,学会举一反三。目前C语言集成开发环境有:Turbo C 2.0(Dos 平台上的C编
译器)、gcc(GUN C Compile ,UNIX以及Linux平台上的C/C++编译器)、Developer
Studio(Windows 平台上的C/C++编译器)。下面主要介绍TurboC2.0。Borland公司在1981年
推出C语言程序设计集成开发环境“TurboC 2.0”年推出C,由于其实用稳定的性能,一直
长期工作应用在社会不同领域,得到社会各界的好评。
Borland公司在1981年推出C语言程序设计集成开发环境“TurboC2.0”有如下特点:
集编辑、编译、链接、调试、运行为一体;提供了一个菜单式界面,其初始界面。不支
持鼠标,光标的移动键以及一些编辑命令进行。如图2-1所示。
图2-1主界面
这时,用上下移动光标将光标移向“New”处,按回车键,系统就进入编辑状态,光标
停在编辑窗口的左上角。这时就可以开始编辑一个新的源程序文件了。如图2-2所示。
-4-
沈阳工程学院课程设计(报告)
图2-2源程序编辑窗口
这时,可以按F10(或Alt+F)键,使光标回到菜单栏,再选择File菜单中的Save,就可以
保存这个源程序文件了。这时,系统将弹出。如图2-3所示。要求编辑者为个这源程序命名
(给上述程序命名为ex101),并确定存放位置。如果编辑者不生重命名,系统就以一个隐含
的文件名“no name.c”来保存它,并且隐含地保存 在TURBOC2文件夹中。
图2-3命名文件对话框
1. 编辑(修改)一个原来的源程序文件
要编辑(修改)一个原来已经有的源程序文件时,要在File菜单中选择Loac命令。这时,
系统就会弹出。如图2-4所示。要求用户在其中输入要编辑的源程序文件名。
输入后,按Enter 键,系统就会将要重新编辑的源程序文件调入到编辑区内。
图2-4装入要编辑的源程序文件
为了方便用户,系统也允许用户不为方便命名。只要在要装入文件的对话框内按一下回
车键,系统就会显示出保存在TURBOC2中的所有C语言源程序文件的列表。如图2-5所示。
同时列出上一级目录“..”和同级的其它目录,供用户从中选择。
图2-5供用户选择的源程序文件列表
2. 程序的编译、链接与执行
在Turboc 2.0环境下,编辑、链接和执行一个C程序,可以有如下几种方式。使用Compile
菜单(快捷键Alt+C)中的命令。如图2-6所示。
-5-
沈阳工程学院课程设计(报告)
图2-6 Compile菜单
主要有两种方式:
⑴ 选择Compile to OBJ命令,得到目标文件;再在选择菜单中选择Link EXE filc命令,
得到可执行文件。
⑵ 选择Make EXE filc 命令,同时完成编译和链接两个过程,直接得到可执行文件。只
要在操作系统环境下单击空上文件即可执行。使用Run菜单中的Run命令(或用Ctrl+F9快
捷键),可以直接完成编译,链接和执行3个过程。
3. 编辑窗口和输出窗口之间的切换
取用Alt+F5快捷键在编辑窗口和输出窗口之间切换。为执行后的输出窗口。
如图2-7所示。
图2-7程序输出窗口
-6-
沈阳工程学院课程设计(报告)
第三章 系统分析与设置
3.1系统功能
本程序为通讯录,能够完成一般的人物资料的录入,能够显示录入的资料。
利用结构体和链表对数据进行输入,删除和查询等功能。输入的信息通过链表存入所对
应的文件中,通过使用定义的各种指针添加,读取和删除信息。程序功能通过下拉菜单实现,
其功能描述如图3-1所示。
电子词典
查
找
单
词
增
加
单
词
万
年
历
修
改
单
词
浏
览
单
词
保
存
单
词
返
回
键
帮
助
菜
单
退
出
图3-1 程序模块流程图
3.2功能设计
在程序设计中,我编制了主函数、修改单词的两个函数,主函数是利用一维数组的形式
来实现的,采用菜单工作方式,主要程序用switch语句来完成。修改单词则是用了用两个一
维数组temp与temp1,来实现修改功能。将输入的单词用字符串的形式存入temp中,在经
过循环语句来实现查找单词。
3.2.1
主控函数
1.全局变量
⑴ 对单词和释义字符串长度的限定分别为不超过20个与40个字符, 词条数限定为不
超过800条。
⑵ 单词数组ci,字符串数组。释义数组yi, 字符串数组。 词典中词条总数dict,整型
变量。
以上变量定义为全局变量。
⑶ 命令序号key, 整型。 在main( )函数中用于散转执行对应操作。
⑷ 一维字符数组(字符串)temp在find( )函数中为待查单词, 在add( )函数中
-7-
沈阳工程学院课程设计(报告)
为temp1待插入单词,在modify( )函数中为待修改单词,在view( )函数中为待显示单
词。
2. 算法分析
⑴ 执行该程序要求在磁盘上有一个词典文件, 可使用任何中文编辑软件生成。其内容
是每行对应一个词条, 每词条包括用回车符号“n”分开两个字符串, 前一个是单词字符
串(英文),后一个是释义字符串(中文),使用分号作为多个释义的分隔符(无空格)。事实
上,即使该文件内无一词条,也可用本程序在线生成所需词典,但必须有一个已存在的合乎
上述格式的,哪怕是空白的文件。
⑵ 采用菜单工作方式。在一个操作命令执行之后, 程序询问是否执行下一个命令。如:
输入7 “return”,则回到菜单等待另一次选择。并根据用户的选择存盘或不存盘退出。
3.函数的概括
从文件file中读入词典各词条的单词和释义分别到字串数组ci和yi中。
main(void): 显示控制菜单。
find( ): 查询一个单词的释义 。
add( ): 在词典中适当位置插入一个给定词条的单词和释义。
date( ): 除了使用词典的功能以外,同时可以使用万年历的功能,主要查询年、月、日。
modify( ): 修改词典中给定单词的释义。
view( ): 显示词典中在给定单词前后的部分词条的单词和释义。
store( ): 在询问是否要存盘。
return( ): 询问用户是否返回查询、插入、删除、修改、显示均调用该函数。
bye( ): 主要为界面美观与关闭程序而设计,使系统更加人性化。
系统流程图如图3-2所示。
-8-
沈阳工程学院课程设计(报告)
开始
清屏
输出界面
键盘输入一个值赋给Key
判断key值查找key
yes
表达式=常量表达式1
Find ()
循环结束Break
no
yes
表达式=常量表达式2
Add ()
循环结束Break
no
yes
Date ()
循环结束Break
表达式=常量表达式3
no
2
1
-9-
沈阳工程学院课程设计(报告)
表达式8
1
2
表达式=常量
表达式4
yes
Modify ()
循环结束Break
no
表达式=常量
表达式5
yes
View ()
循环结束Break
no
表达式=常量
表达式6
yes
Store ()
循环结束Break
no
yes
表达式=常量
Help ()
循环结束Break
no
yes
表达式=常量
表达式9
Bye ()
循环结束Break
no
yes
表达式=常量
表达式7
Return 0
no
此函数结束
图3-2 控制菜单
-10-
沈阳工程学院课程设计(报告)
3.2.2 修改单词
修改单词必须建立在已有单词的前提下,只有系统的“”文件里存在单词以后,才
能对其修改。它可以在浏览单词后找到想要修改的单词输入:5 view(),用两个一维数组temp
与temp1,来实现修改功能。将输入的单词用字符串的形式存入temp中,在经过循环语句来
实现查找单词。如果temp与单词dict[].ci比较等于0时,则说明已经单词找到,将所要修改
的释义存在temp1中,再将其复制到dict[i].yi。当所存入的单词释义有误时,就可以利用修
改功能就其单词释义进行修改。
首先运行函数,再输入4回车,确认后系统会提示修改单词,之后输入要修改的单词,
然后系统会提示修改其单词释义。如图3-3所示。
-11-
开始
清屏
输出界面
输出please input the word:
输入temp
I=0;
1
沈阳工程学院课程设计(报告)
图3-3修改单词
此函数结束
I=I+1
输出success,press
any key to return
1
Strcmp(temp,dict[i].ci
)==0&&I<800
No
Yes
输出not found
输出found
输出单词与意思
输出please input the new mean
输入temp1
把temp1拷贝到dict[i].ci
-12-
沈阳工程学院课程设计(报告)
3.3系统总流程图
开始
清屏
输出界面
键盘输入一个值赋给Key
判断key值查
找key
yes
表达式=常量表
达式1
Find ()
循环结束Break
no
表达式=常量表
达式2
no
yes
Add ()
循环结束Break
no
yes
表达式=常量表
达式3
Date ()
循环结束Break
no
2
1
-13-
沈阳工程学院课程设计(报告)
1
2
表达式=常量
表达式4
yes
Modify ()
循环结束Break
no
表达式=常量
表达式5
yes
View ()
循环结束Break
no
表达式=常量
表达式6
yes
Store ()
循环结束Break
表达式8
no
yes
表达式=常量
Help ()
循环结束Break
no
yes
表达式=常量
表达式9
Bye ()
循环结束Break
yes
表达式=常量
表达式7
Return 0
no
此函数结束
图3-4 控制菜单
-14-
沈阳工程学院课程设计(报告)
-15-
I=0;
Find ()
清屏
输入
界面
输出please input a word:
输入
temp
比较temp,dict[i].ci
等于0且i<800
No
Yes
输出单词与意思
输出not
found
No
输出press any key to return
返回
I=I+1;
返回主界面
此函数结束
图3-5 查找单词
沈阳工程学院课程设计(报告)
Add ()
清屏
I=0;
yes
!(*dict[i].ci)&&I<800
no
输出界面
输出please input the word:
输出 temp
输出sorry,the
data is full:
j=0;
No
比较temp与结构题中单词
是否相同并且个数小于800
Yes
输出the word is already store
输出press any key to return
输出please input
the mean:
J=j+1;
3
4
-16-
5
沈阳工程学院课程设计(报告)
3
-17-
4
输入temp1
5
把temp拷贝到dict[I].ci
把temp1拷贝到dict[i].yi
I=I+1;
返回主界面
此函数结束
图3-6 增加单词
沈阳工程学院课程设计(报告)
Date()子函数开始
定义整形:
year,month;
系统清屏
换行输出:----Enter the year:
输入年份:year
输入月份:month
i=1
No
i Yes i++ 调用函数: 8 9 days=月数累加 万年历计算公式: d=year-1+(year-1)/4-(year-1)/100+(year-1)/400+days+ 1; 6 -18- 沈阳工程学院课程设计(报告) 6 输出格式: === === ===== 输出年-月:year,month 输出换行:n 输出格式:Sun Mon Tue Wed Thu Fri Sat 输出换行:n i=1 No i Yes i++ 输出空格:“ ” i=1 No i<=7-d%7 Yes i++ 累加天数:day++; 输出日期: day 输出换行: n 7 -19- 沈阳工程学院课程设计(报告) 7 输出格式: printf("n ===n"); printf(" ===n"); printf(" =====n"); 输出年-月: printf("nnn---%d-%d -----n",year,month); printf("nn"); printf(" Sun Mon Tue Wed Thu Fri Satn"); i=1 No i Yes i++ 输出空格: printf(" "); i=1 i<=7-d%7 Yes i++;累加天数:day++; No 输出日期 printf("%8d",day) ; 输出换行: printf("n"); -20- 8 沈阳工程学院课程设计(报告) -21- 8 子函数m_day() 定义行参:int year,int month 判断闰年: (year%4==0&&year%1 00!=0) || (year%400==0) No Yes 如果month月为:1、3、5、7、8、10、 12则返回31天。 Month月为:4、6、9、11则返回30天。 二月返回29天。 如果month月为:1、3、5、7、8、10、 12则返回31天。 Month月为:4、6、9、11则返回30天。 二月返回28天。 9 此函数结束 图3-7 万年历 沈阳工程学院课程设计(报告) -22- Store () 以二进制读写方式打开lnlh文件 I=0; I<800 从&dict[i]所指向的1*60个字节输入到fp所指向的文件中 I=I+1; 关闭fp文件 输出界面 输出store success 返回主界面 此函数结束 图3-8 保存单词 沈阳工程学院课程设计(报告) View () 清屏 空出两行 I=0 No *dict[i].ci!='0'&& I<800 Yes J=j+1 K=i 输出第n个单词与 意思 No J==0 Yes 10 11 12 -23- 沈阳工程学院课程设计(报告) 10 11 12 J=0 输出press any key to page down! I=I+1 输出that's all! 输出press any key to return! 返回主界面 此函数结束 图3-9 浏览单词 -24- 沈阳工程学院课程设计(报告) Yes 从fp所指的文件中读取长度 为60的一个数据项存到 &dict[i]所指向的内存区 I=I+1 Init () I=0 No I<800 Yes 把单词与意思全部清零 以读写方式打开 I=0 No I<800 I=I+1 关闭文件 此函数结束 图3-10单词与意思全部清零 -25- 沈阳工程学院课程设计(报告) 第四章 系统功能实现 4.1主控函数 1.全局变量 ⑴ 对单词和释义字符串长度的限定分别为不超过20个与40个字符, 词条数限定为不 超过800条。 ⑵ 单词数组ci,字符串数组。释义数组yi, 字符串数组。 词典中词条总数dict,整型 变量。 以上变量定义为全局变量。 ⑶ 命令序号key, 整型。 在main( )函数中用于散转执行对应操作。 ⑷ 一维字符数组(字符串)temp在find( )函数中为待查单词, 在add( )函数中 为temp1待插入单词,在modify( )函数中为待修改单词,在view( )函数中为待显示单 词。 2.算法分析 ⑴ 执行该程序要求在磁盘上有一个词典文件, 可使用任何中文编辑软件生成。其内容 是每行对应一个词条, 每词条包括用回车符号“n”分开两个字符串, 前一个是单词字符 串(英文),后一个是释义字符串(中文),使用分号作为多个释义的分隔符(无空格)。事实 上,即使该文件内无一词条,也可用本程序在线生成所需词典,但必须有一个已存在的合乎 上述格式的,哪怕是空白的文件。 ⑵ 采用菜单工作方式。在一个操作命令执行之后, 程序询问是否执行下一个命令。如: 输入7 “return”,则回到菜单等待另一次选择。并根据用户的选择存盘或不存盘退出。 3.函数的概括 从文件file中读入词典各词条的单词和释义分别到字串数组ci和yi中。 main(void): 显示控制菜单。 find( ): 查询一个单词的释义 。 add( ): 在词典中适当位置插入一个给定词条的单词和释义。 date( ): 除了使用词典的功能以外,同时可以使用万年历的功能,主要查询年、月、日。 modify( ): 修改词典中给定单词的释义。 view( ): 显示词典中在给定单词前后的部分词条的单词和释义。 store( ): 在询问是否要存盘。 return( ): 询问用户是否返回查询、插入、删除、修改、显示均调用该函数。 bye( ): 主要为界面美观与关闭程序而设计,使系统更加人性化,如图4-1所示。 -26- 沈阳工程学院课程设计(报告) 图4-1主界面 程序原代码 #include "Stdio.h" #include "Conio.h" typedef struct /*定义两个一维数组的结构体*/ { char ci[20]; char yi[40]; }Dict; /*定义的结构体名字为Dict*/ Dict dict[800]; /*一共可输入 800 个单词*/ void init() /*程序初始化*/ { int i; FILE *fp; /*定义指向文件的指针*/ for (i=0;i<800;i++)/*循环语句从0到799*/ { memset(dict[i].ci,'0',20); /*把全部单词清 0*/ memset(dict[i].yi,'0',40); } fp=fopen("","rb"); /*从 文件里读出数据*/ for (i=0;i<800;i++) { fread((char *)&dict[i],60,1,fp); /*从fp所指的文件中读取长度为60的一个数据项存到 &dict[i]所指向的内存区*/ } fclose(fp);/*关闭文件*/ } 控制菜单程序如下: -27- 沈阳工程学院课程设计(报告) int main(void) { char key; init(); while(1) /*循环显示*/ { clrscr(); /*清屏*/ printf("n election English to Chinese dictionary designnn"); /*显示操作功能*/ printf(" -----------|--! n"); printf(" ----------------| n"); printf(" |----------------- n") ; printf(" !--|---------- n"); printf(" | | ~ n"); printf(" | | ~ ~ n"); printf(" | | ~ ~ ~ n") ; printf(" | | ~ ~ n") ; printf(" | ~ ~ | n"); printf(" | ~ ~ ~ | n"); printf(" ~ ~ | n") ; printf(" | | n"); printf(" ~ ~ ~ | | n"); printf(" ~ ~ ~ ~ ~ ~~ | | n"); printf(" | |n"); printf(" -----------|---!n"); printf(" ----------------| n"); printf(" ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^n"); printf(" ----please input the number:n"); printf(" ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^") ; key=getch(); /*键盘输入内容赋值给key*/ switch(key) /*判断键盘输入*/ { case '1':find();break; case '2':add();break; case '3':date();break; case '4':modify();break; case '5':view();break; case '6':store();break; case '8':help();break; case '9':bye();break; case '7':return 0; /*实现对应功能*/ -28- 沈阳工程学院课程设计(报告) } } return 0; /*返回*/ } 4.2 修改单词 修改单词必须建立在已有单词的前提下,只有系统的“”文件里存在单词以后,才 能对其修改。它可以在浏览单词后找到想要修改的单词输入:5 view(),用俩个一维数组temp 与temp1,来实现修改功能。将输入的单词用字符串的形式存入temp中,在经过循环语句来 实现查找单词。如果temp与单词dict[].ci比较等于0时,则说明已经单词找到,将所要修改 的释义存在temp1中,再将其复制到dict[i].yi。当所存入的单词释义有误时,就可以利用修 改功能就其单词释义进行修改。 首先运行函数,再输入4回车,确认后系统会提示修改单词,如图4-2所示。之后输入 要修改的单词,如图4-3所示。当查找到所要修改的单词时,系统提示请输入释义,然后系 统会提示单词的释义修改成功,如图4-4所示。 图4-2 系统提示修改单词 -29- 沈阳工程学院课程设计(报告) 图4-3 输入要修改的单词 图4-4 单词修改成功 程序如下: void modify()/*修改单词,参数为结构体数组*/ { int i; char temp[20]; /*定义的一维数组类型为字符型*/ char temp1[40]; clrscr(); printf("n ----election English to Chinese dictionary design---- nn"); printf(" | |n"); printf(" | |n"); printf(" | |n"); printf(" | |n"); printf(" | |n") ; printf(" ! | |n"); printf(" | | |n"); printf(" | | |n"); printf(" | | |n") ; -30- 沈阳工程学院课程设计(报告) printf(" | |n") ; printf(" | |n"); printf(" | |n"); printf(" | |n") ; printf(" | |n"); printf(" | |n"); printf(" | |n"); printf(" | |n"); printf(" -----------|----!---n"); printf(" | | n"); printf(" -------------------------------------------------------------- -|- ---|-----n"); printf(" | |n"); printf(" |n"); printf("n ----please input the word:"); /*提示输入*/ scanf("%s",temp); /*输入待修改的单词*/ for (i=0;i<800;i++) /*循环语句从0到799*/ if(strcmp(temp,dict[i].ci)==0) /*如果找到单词执行以下语句*/ { printf ("nfoundn"); printf("The word is=%s : Chinese is=%sn",dict[i].ci,dict[i].yi); /*显示该单词的 全部内容*/ printf ("nplease input the new mean:"); /*输入待修改单词的释义*/ scanf("%s",temp1); /*输入释义,并替换*/ strcpy(dict[i].yi,temp1); /*把temp1的值赋给dict[i].yi*/ printf ("n ----success,press any key to return");/*显示修改已经成功*/ getch();/*按任意键返回主菜单*/ return;/*返回*/ } printf (" ----not found"); /*如果没有找到该单词,显示 not found*/ getch(); return; } -31- 沈阳工程学院课程设计(报告) 结 论 通过这次的课程设计学习我不仅对计算机有了更深刻的了解,还对学习计算机的产生了 极大的兴趣,通过小组学习我知道了自己的不足之处和与其它同学的差距,使我有了很大的 压力,而对我来说这并不可怕,因为压力是使我们进步的动力,可怕的是我就这样沉迷下去 度过这大学的四年生活。 计算机科学与技术是非常重要的一门学科,在当今这个社会人们认为学习计算机没有发 展前景,但我不这么认为,只要学好计算机那么它一定是一个有前途的专业,而学好它并不 像想象中的那么容易。通过这次学习,不仅提高了我的思维能力,同时还锻炼了我的动手能 力。 在初学C语言时,我们都会遇到有些问题理解不透,这就要求我们不气馁,不明白的地 方多问多想,鼓足勇气进行学习,待学完后面的章节知识,前面的问题也就迎刃而解了,这 一方面我感觉是我们同学最欠缺,大多学不好的就是因为一开始遇到困难就放弃。 学习C 语言始终要记住“曙光在前头”和“千金难买回头看”,“千金难买回头看”是学习知识的重要方 法,就是说,学习后面的知识,不要忘了回头弄清遗留下的问题和加深理解前面的知识,这 是我们学生最不易做到的,然而却又是最重要的。学习C语言就是要经过几个反复,才能前 后贯穿,积累应该掌握的C知识。课程设计要亲手做过,不管它是否有结果。我们要学的知 识,是解决问题的方法和思想,学习要端正态度。 这次在课设中,我也遇到了很多问题,但老师们那悉心的指导,认真负责的工作态度, 严谨的治学精神和深厚的理论水平,都使我收益匪浅。无论在理论上还是在实践中,都给予 我很大的帮助,使我得到不少的提高,这对于我今后的学习和工作都是一种巨大的帮助。 通过小组的分组学习,培养了我的团结精神并且提高了我的学习效率和综合能力与素质, 培养了我分析问题、解决问题的能力,这些将对我在以后的学习和工作中有很大的帮助。使 我养成了良好的学习作风,为我今后从事计算机工作打下基础。 -32- 沈阳工程学院课程设计(报告) 致 谢 在本次课程设计中我学到了很多有用的东西,在研究及论文的撰写时,我们在指导教师 姜柳和张楠两位老师的悉心指导下进行的。老师那悉心的指导,唤醒了我对学习的迷惘。老 师在系统设计和软件开发方面的都给我们提供了宝贵的实践经验,每次遇到难题,我最先做 的就是向老师寻求帮助,而老师每次不管忙闲,总会抽空来找我面谈,然后一起商量解决的 办法。老师,是您让我明白:我们能从失败中汲取教训,在困难中积聚力量,在黑暗中寻找 光明。您给我们勇气去动脑筋,您将美放在我们心中,给我们教诲、见识和想象,由此营造 我们的一生。不管我们建造什么,你总帮助我们垒好基础,你为成长的我们做到了最好!在 上你的每一堂课中,都使我们受益匪浅,在此特别向老师表示深深的感谢和由衷的敬意。 感谢实训E机房所有给予我们帮助的老师,他们辛勤耕作,传道授业,不仅使我们开阔 了视野,拓宽了思路,增长了学识,而且为我们今后的工作和学习打下了牢固的基础,也使 我们增强对计算机的兴趣。另外,感谢校方给予我这样一次机会,能够独立地完成一个课题, 并在这个过程当中,给予我们各种方便,使我们在这两个星期的时间里,能够学习更多的实 践应用知识,增强了我们实践操作和动手应用能力,提高了独立思考的能力。 在课程设计的最后,再次感谢所有帮助过我们的老师,你们是我能永远信赖的人,在生 活中遇到麻烦便会去求救的人。你们让我知道:只要我愿意,能把一切向你们倾诉。在不久 的将来,无论我成为挺拔的白杨,还是低矮的小草,老师,我都将以生命的翠绿向您致敬! -33- 沈阳工程学院课程设计(报告) 参考文献 [1] 谭浩强 编著 《C程序设计》(第三版)。北京:清华大学出版社,2006 [2]吴文虎 编著 《程序设计基础》(第3版)。 北京:清华大学出版社,2005 [3] 郑莉 董渊 张瑞丰 编著 《C++语言程序设计》(第3版)。 北京:清华大学出版社, 2006 [4]C编写组 常用C语言用法速查手册。北京:龙门书局,1995 [5]Herbert Schildt 著 王曦若、李沛译 ANSI C标准详解。北京:电子工业出版社,1994 -34-
版权声明:本文标题:C语言电子词典程序设计 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/p/1710253799a564573.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论