课程名称 C语言课程设计
课题名称 电子英汉词典
专 业 电气工程及其自动化
一、设计内容与设计要求 1.设计内容:电子英汉词典
1)问题描述:
该设计实现简单双向电子英汉词典的功能,即具有英译汉和汉译英的功能。具体管理操作包括单词的添加、显示、查找、删除、修改和保存等。
2)功能描述:
(1)本设计采用结构体数组,每个数据的结构应当包括:单词、音标、词性、中文释义1、中文释译2和中文释译3。
(2)系统功能:
词条录入:即添加单词记录。
信息显示:将所有的单词按字母顺序显示。
词条修改:对已经输入的单词信息进行修改。
词条删除:删除某个单词记录。
单词查询: 输入单词,输出该单词的中文释义;输入中文,输出该中文意思相同的英语单词。
信息保存:将单词信息保存到文件。
退出系统
(3)系统使用说明:执行一个具体的功能之后,程序将重新显示功能菜单。系统的功能并不限于上述,可以对其进行扩充完善,如在对信息进行修改和删除时,可以考虑系统的安全性,在执行前若输入正确密码,才可进行操作。
3)测试数据:
要求被选用的词条有30个左右,简单单词为主。 2.设计要求: 1)设计正确,方案合理。 2)界面友好,使用方便。 3)程序精炼,结构清晰。 4)上机演示。 3.设计报告要求: 课程设计报告格式如下: 1)正文的格式:一级标题用3号黑体,二级标题用四号宋体加粗,正文用小四号宋体,行距为22。 2)正文的内容:课题的主要功能、课题的功能模块的划分、主要功能的实现、程序调试、总结、附件(所有程序的源代码,要求对程序写出必要的注释),课程设计报告需5000字左右(不含附件)。 3)课程设计报告装订顺序:封面、任务书、目录、正文、评分、程序清单附件。
二、进度安排
目录
1 系统需求分析 2 概要设计 3 详细设计 4 系统测试 5课程设计总结 1 系统需求分析英汉词典-作为一个常用的学习工具,是我们经常要使用的。该系统能完成一个简单的电子英汉词典的功能.电子英汉字典有着传统文本词典无法相比的优越性:多种多样的探索方法,便利的查询窗口,灵活的显示界面,盒连续的参考功能,无一不体现这种知识媒体的智能化和人性化特色,电子多媒体在词典中的应用,更使得单调,呆板的词典变的形象生动在词典中获取知识 变得轻松和快捷系统功能.具体管理操作包括单词的添加,显示,查找,删除,修改,保存,和维护等。 功能描述 :本设计采用结构体数据,每个数据的构应当包括:单词的英文拼写,单词的中文解释;
2 . 概要设计 系统功能模块图:
1.程序的模块组成:主函数:main( ) 初始换函数:init( ) 输入函数:scanf() 输出函数:printf( ) 删除函数:memset ( ) 查询函数:find() 增加函数add() 删除函数:del ( ) 修改函数:modify() 浏览函数表:view() 维护函数:store() 结束函数:return(); 2. 各个函数的主要功能: 输入函数:随时输入数据。 菜单函数;显示系统主菜单。查找函数;能够随时查找某个单词。 增加函数;能够随时增加想要增加的单词。 删除函数;能够删除某单词信息。 修改函数;能够随时修改单词信息。 浏览函数:能够浏览所有单词。 3 . 详细设计 <1>数据结构拥有与时并进的步伐,为迎接未来作好最佳准备。 被誉为数据中心服务供应商巨擎之一的名气通,拥有多个世界Tier3+等级的数据中心为客户提供针对性的专业管理服务,以及可靠的「云计算」服务。除符合香港政府第二级保安指引, 并获颁ISO 27001:2005, ISO 14001:2004, 20000-1:2005, FISC及TIA-942等国际标准之外,更为邻近地区树立起优质服务的标准。 香港作为亚洲信息与通讯科技枢纽,对数据中心的业务需求甚殷。名气通目前在香港营运两个大型的数据中心,分别位于新蒲岗的名气通香港1号数据中心(于2006年建立);而作为中立电讯供应商,新落成的名气通香港2号数据中心则位于将军澳工业村,在政府的未来规划下,将军澳工业邨亦势成亚洲区重要数据中心地带之一。名气通香港2号数据中心楼高5层,建筑面积约22,000平方米,名气通配备先进及安全的数据中心设备,确保客户的数据享有严密的保安.
<2>主菜单:开始- 执行查询函数 2.执行新增函数 3.执行删除函数 4.执行修改函数 5.推出词典
(一) 菜单显示 /*基本的库函数*/
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define szWORD 32
#define szSTRN 224
#define szITEM sizeof(struct TItem)
char fileDict[szSTRN];
typedef struct TItem {
char word[szWORD];
char mean[szSTRN];
} Item;
fpos_t lookup(char *word, char *mean)
{
FILE * f = 0; Item i;
int r = 0; fpos_t p = 0;
if(!word) return 0;
f = fopen(fileDict, "rb");
if (!f) return 0;
while(!feof(f)) {
fgetpos(f, &p);
r = fread(&i, szITEM, 1, f);
if(r < 1) break;
if(i.word[0] == 0) continue;
if(strcmp(i.word , word)) continue;
if(mean) strcpy(mean, i.mean );
fclose(f);
return p+1;
}
fclose(f);
return 0;
}
欢迎使用电子英汉词典! <3>添加模块设计 void append(void)
{
Item i; FILE * f = 0; fpos_t p = 0;
memset(&i, 0, szITEM);
printf("请输入单词:"); scanf("%s", i.word );
p = lookup(i.word, 0 );
if(p) {
printf("字典内已经有该单词记录!\n");
return;
}
printf("请输入释义,按回车结束:");
fflush(stdin);
gets(i.mean );
f = fopen(fileDict, "ab");
fwrite(&i, szITEM, 1, f);
fclose(f);
printf("词条已新增\n");
}
<4>显示模块设计 void erase(void)
{
Item i; FILE * f = 0; fpos_t p = 0;
memset(&i, 0, szITEM);
printf("请输入单词:"); scanf("%s", i.word );
p = lookup(i.word, 0 );
if(p==0) {
printf("字典内没有该单词记录!\n");
return;
}
p--;
memset(&i, 0, szITEM);
f = fopen(fileDict, "rb+");
fsetpos(f, &p);
fwrite(&i, szITEM, 1, f);
fclose(f);
printf("词条已删除\n");
}
void edit(void)
{
Item i; FILE * f = 0; fpos_t p = 0;
memset(&i, 0, szITEM);
printf("请输入单词:"); scanf("%s", i.word );
p = lookup(i.word, 0 );
if(p==0) {
printf("字典内没有该单词记录!\n");
return;
}
p--;
printf("请输入释义,按回车结束(输入abort放弃修改):");
fflush(stdin);
gets(i.mean );
if(strstr(i.mean ,"abort")) {
printf("已放弃修改!\n");
return ;
}
f = fopen(fileDict, "rb+");
fsetpos(f, &p);
fwrite(&i, szITEM, 1, f);
fclose(f);
printf("词条已保存\n");
}
<5> 删除模块设计
void query(void)
{
Item i; fpos_t p = 0;
memset(&i, 0, szITEM);
printf("请输入单词:"); scanf("%s", i.word );
p = lookup(i.word, i.mean );
if(p==0) {
printf("字典内没有该单词记录!\n");
return;
}
printf("【词条】%s\n【释义】%s", i.word , i.mean );
}
退出
void set(void)
{
int cmd = 0;
printf("当前字典为%s,需要改变吗(选择y或Y改变)?", fileDict);
cmd = getch();
if(cmd == 'y' || cmd == 'Y') {
printf("请输入字典文件名称(包含路径):");
scanf("%s", fileDict);
printf("设置成功!\n");
}
}
int main(int argc, char * argv[])
{
int cmd = 0;
if(argc >1)
strcpy(fileDict, argv[1]);
else
strcpy(fileDict, "c:\\dict.txt");
/*end if*/
for(;;) {
printf("\n\
************************\n\
** 欢迎使用迷你字典!**\n\
************************\n\
** 0 - 设置字典 **\n\
** 1 - 查询词条 **\n\
** 2 - 新增词条 **\n\
** 3 - 编辑词条 **\n\
** 4 - 删除词条 **\n\
** 5 - 退出字典 **\n\
************************\n");
cmd = getch() - '0';
switch(cmd) {
case 0: set(); break;
case 1: query(); break;
case 2: append(); break;
case 3: edit(); break;
case 4: erase(); break;
default: return 0;
}
}
return 0;
} 4 系统测试 4.1 菜单显示 介绍一下思路,以进行必须说明,不能只是把代码放上来而没有任何说明! 也可以把测试时出现的错误写来进行分析总结!
4.2 添加 将程序运行时的图截下来附上,并进行必要的文字说明,不能只是把图贴上来而没有文字!
4.3 显示 将程序运行时的图截下来附上,并进行必要的文字说明,不能只是把图贴上来而没有 5 .课程设计总结 经过一个学期的学习,我对C语言有了一定的了解。C语言是学习计算机科学的基础,作为一名计算机专业学生,掌握C语言更是毋庸置疑。在上课之前,就经常听同学说,C语言很难学,确实,刚开始听课时觉得老师不知所云。不过,发现对后续内容的预习后,前面的疑团都迎刃而解,这让我对C语言的学习更有信心。 计算机最重要的就是上机操作,自己编写程序,在VisualC++运行,刚开始经常会出现错误,经过分析改正后,终于能够运行了,就觉得特别激动。 课程设计是一个把需求分析、程序编写、程序调试、撰写报告结合为一体的过程。在这个过程中,不仅锻炼了我们缜密的思维和坚持不解的毅力,更磨练了一个队伍的团结互助的精神。只有通过大家一起努力才能将课程设计的所有环节都顺利的完成。另外程序设计中我们遇到问题并解决问题的过程,使得我们独自探索并解决问题的能力了有了一个提高,这有利于我们以后的学习。同时这整一个过程,也使我们对程序编写的整个过程有了一个统筹全局的思想,因为需求分析、程序编写、程序调试、撰写报告这些过程是环环相扣的,绝对不可能独立进行。 课程设计是学习《C程序设计》后对知识的全面测试,刚拿到题目时不知道怎么去处理,觉得很复杂,经过和小组成员的讨论,上网查资料,逐个问题逐个击破,问题不再那么复杂。通过课程设计,我发现自己还存在很多知识漏洞,编写程序时,经常会出现低级错误,很多知识点都不熟悉。在今后的时间里,我一定要投入更多精力学习C语言,以课本为基础,请教老师,与同学讨论,参考资料,上机操作,我相信我一定能把C语言学好。
完整的Word格式文档51黑下载地址:
C语言电子英汉词典设计.doc
(608 KB, 下载次数: 19)
|