甘肃机电职业技术学院
C语言程序设计
实 训 报 告
一、课题名称:电子词典
电子词典是一个常用的学习工具,该系统能完成一个简单的电子英汉词典的功能,如:单词的查找、词语的添加、删除词语和修改词语等功能。
二、设计目的
1、通过了解理论知识与实际需求相结合,编程解决一些日常中实际的问题,培养初步的独立分析和设计功能。
2、了解应用程序设计解决实际问题的具体过程和实现方法,掌握应用C语言进行程序设计的基本规范;
3、重点掌握C语言的程序编写、函数设计、算法设计和程序调试方法
4、初步掌握系统开发过程的问题分析、系统设计、程序编码、测试等基本方法忽然技能。
三、设计任务
1、在计算机中建立有限规模的电子英汉词典(文件),本词典采用一个包含N个数据的结构体数组,每个数组的结构应当包括:英文单词、中文单词。
2、能输入新词汇
3、能删除词汇
4、能查找词汇
5、能修改词汇信息
四、设计要求
1、用C语言实现程序设计并进行调试;
2、画出查询模块的流程图;
3、系统的各个功能模块要求用函数的形式实现;
4、界面友好(良好的人机互交)。
5、完成设计说明书(A4)。
五、运行环境
1、Windows XP系统
2、TurboC 编译环境
六、详细设计
电子词典流程图:
七、代码设计
电子词典:
#include<stdio.h>
#include<string.h>
main()
{ static int n=32;
char m;
struct
{
char eng[10];
char ci[15];
char yin[10];
char chi[30];
}word[500]={{"good","a","good","hao"},
{"ball","n","bo:","qiu"},
{"cat","n","cat""mao"},
{"cattle","n","katl","niu"},
{"clean","adj+d+v","kli:n","1.gan jin 2.gongzheng"},
{"a","num","ei","yi ge"},
{"finally","ad","fai'nens","zuizhong"},
{"fine","adj+ad+v+n","fain","1.shushi2.hao"},
{"finish","v+n","finish","wancheng"},
{"girl","n","ge:l","nvhai"},
{"five","v","giv","gei"},
{"go","n+v","gou","zou"},
{"help","int+n","help","bangzhu"},
{"he","pron","hi:","ta"},
{"here","ad+ini","hie","zheli"},
{"high","aadj+ad+n","hai","gao"},
{"ice","n","ais","bing"},
{"idea","n","ai'die","zhuyi"},
{"in","v","in:","zailimian"},
{"kill","v","kil","shasi"},
{"king","n","king","guowang"},
{"kiss","v+n","kis","wen"},
{"knight","n+v","nait","qishi"},
{"late","adj+ad","leit","1.chi de 2.yihoude"},
{"left","adj+ad+n","left","zuobian"},
{"line","n+v","lain","xian"},
{"name","n+v","neim","mingzi"},
{"mission","v","mision","rengwu"}};
clrscr();
loop:
for(;;)
{ clrscr();
printf("\n\t ****Please make a choise****\n");
printf("\n\n\t 1.Add the new word\n");
printf("\t 2.Del word\n");
printf("\t 3.find word\n");
printf("\t 4.Exit the process\n\n");
printf(" Please choose 1~4 to enter\n");
printf(" Please press the key:");
scanf("%c",&m);
switch(m)
{
case '1':
{
char j[10],k[15],l[10],p[30];
++n;
printf("\n Add new word");
printf("\n\n please enter the Danci: ");
scanf(" %s",j);
printf("\n Enter the Cixing:");
scanf(" %s",k);
printf("\n Enter the Yingbiao:");
scanf(" %s",l);
printf("\n Enter the Chinese:");
scanf(" %s",p);
strcpy(word[n].eng,j);
strcpy(word[n].ci,k);
strcpy(word[n].yin,l);
strcpy(word[n].chi,p);
printf("\n Please check it:");
printf("\n\n English. %s",word[n].eng);
printf("\n\n Cixing: %s", word[n].ci);
printf("\n\n Yinbiao: %s", word[n].yin);
printf("\n\n Chinese: %s\n\n",word[n].chi);
printf("\n Please press any key with Enter key back!");
scanf("%s",m);
} goto loop;
case '2':
{
char r[10];
int s,t,u,z=0,x=0;
printf(" Please press the English you want to del:");
scanf("%s",r);
for(s=0;s<=n;s++)
{
if(s<=n-1)
{
if(strcmp(word[s].eng,r)==0)
{
x=1;
for(t=s;t<n;t++)
{
strcpy(word[t].eng, word[t+1].eng);
strcpy(word[t].ci, word[t+1].ci);
strcpy(word[t].yin, word[t+1].yin);
strcpy(word[t].chi, word[t+1].chi);
}
}
}
else
{ if(strcmp(word[n].eng,r)==0)
z=1;
else
z=0;
}
}
if(z==1||x==1)
{
printf("\n\n Del sucessful!!\n");
n--;
printf("\n Please press any key with Enter key back!");
scanf("%s",m);
}
else
{
printf("\n\n Del failed!!");
printf("\n Please press any key with Enter key back!");
scanf("%s",m);
}
}
break;
case '3':
{
int l;clrscr();
printf("\n\nSearch the word\n");
printf("1.Search by English:\n");
printf("2.Search by Chinese:\n");
printf("Other key back\n");
printf(" Please choose one:");
scanf("%d",&l);
switch(l)
{ case 1:
{ char r[10],m[1]; int s;
printf("\n Please enter the English word:");
scanf("%s",r);
for(s=0;s<=n;s++)
{
if(s<=n-1)
if(strcmp(word[s].eng,r)==0)
break;
else
continue;
else
if(strcmp(word[n].eng,r)==0)
break;
else
{
char m[1];
printf("\n No this word!!\n Please press any key with Enter key back!");
scanf("%s",m);
goto loop;
}
}
printf("\n\n English. %s", word[s].eng);
printf("\n\n Cixing: %s", word[s].ci);
printf("\n\n Yinbiao: %s", word[s].yin);
printf("\n\n Chinese: %s", word[s].chi);
printf("\n\n\n Please press any key with Enter key back!");
scanf("%s",m);
} goto loop;
case 2:
{ char r[10],m[1]; int s;
printf("\n Please enter the Chinese:");
scanf("%s",r);
for(s=0;s<=n;s++)
{ if(s<=n-1)
if(strcmp(word[s].chi,r)==0)
break;
else
continue;
else
if(strcmp(word[n].chi,r)==0)
break;
else
{
char m[1];
printf("\n No this word!!\n Please press any key with Enter key back!");
scanf("%s",m);
goto loop;
}
}
printf("\n English. %s", word[s].eng);
printf("\n\n Cixing: %s", word[s].ci);
printf("\n\n Yinbiao: %s", word[s].yin);
printf("\n\n Chinese: %s", word[s].chi);
printf("\n\n\n Please press any key with Enter key back!");
scanf("%s",m);
default: goto loop;break;
}
}
}
case '4': exit(0);
default: break;
}
}
}
八、设计总结
为期一星期的C语言实训已经基本结束,但是给我的影响是相当大的。通过这次实训,使我明白C语言这门课程光仅仅是听课是远远不够的,上机训练也不容忽视。
通过上机训练,才能够明白自己知识的不足,才能够有的放矢,更加深刻的理解C语言中的知识点。
通过实训,我找到了许多知识漏点,学到了很多以前不懂的知识,以前认为自己已经懂了的知识点也理解更加深刻了。尤其是遇到了自己当时不知道如何编写的C语言题目如何编写,通过自己的学习和同同学的交流后,试编和改错,最后能够顺利的编写出来,带来的也有成就感。并增加了我们对C语言的兴趣和学好C语言的信心。
与同学们交流的过程中,了解了程序的多种解决方法,知道了不同编写方法有不同的特点。总结C语言实训的几个重要作用:
1.加深对课堂讲授内容的理解
课堂上要讲授许多关于C语言的语法规则,听起来十分枯燥无味,也不容易记住,死记硬背是不可取的。然而要使用C语言这个工具解决实际问题,又必须掌握它。通过多次上机练习,对于语法知识有了感性的认识,加深对它的理解,在理解的基础上就会自然而然地掌握C语言的语法规定。对于一些内容自己认为在课堂上听懂了,但上机实践中会发现原来理解的偏差。
2.熟悉程序开发环境、学习计算机系统的操作方法
一个C语言程序从编辑、编译、连接到运行,都要在一定的外部操作环境下才能进行。所谓"环境"就是所用的计算机系统硬件、软件条件,只有学会使用这些环境,才能进行程序开发工作。通过上机实验,熟练地掌握C语言开发环境,为以后真正编写计算机程序解决实际问题打下基础。同时,在今后遇到其它开发环境时就会触类旁通,很快掌握新系统的使用。
3.学习上机调试程序
完成程序的编写,决不意味着万事大吉。你认为万无一失的程序,实际上机运行时可能不断出现麻烦。如编译程序检测出一大堆错误。有时程序本身不存在语法错误,也能够顺利运行,但是运行结果显然是错误的。开发环境所提供的编译系统无法发现这种程序逻辑错误,只能靠自己的上机经验分析判断错误所在。
通过这次为数不多的几天计算机实践学习,我们更好的了解了一些关于C语言的知识,理解巩固了我们C语言的理论知识。 C语言这门课程对于我们应用电子专业的同学也相当重要,我们会再将来继续学习并熟悉这门课程