英汉小字典程序的设计说明书.docx
《英汉小字典程序的设计说明书.docx》由会员分享,可在线阅读,更多相关《英汉小字典程序的设计说明书.docx(22页珍藏版)》请在冰豆网上搜索。
英汉小字典程序的设计说明书
*******************
实践教学
*******************
理工大学
计算机与通信学院
2017年春季学期
C程序设计课程设计
题目;英语小字典程序设计
专业班级:
计算机科学与技术2班
姓名:
毛彦奎
学号:
1616240261
指导教师:
树群
成绩:
摘要
英汉字典的设计需要具备一定的程序设计知识,除此之外还要有设计思路。
在自己知识之外的要自己查阅文献,在网上查询。
制作的过程为:
提出自己的思路,搞清楚要设计字典需要的函数,然后开始制作,最后运行。
除此之外需要附上使用说明以及运行结果处理方法。
关键字:
英汉字典,程序,函数,运行,结果
前言
《C语音程序设计》课程设计是对学生的一种全面综合训练,它包括问题分析,总体结构设计,用户界面设计,程序设计基本技能和技巧,多人合作,以致一整套软件工程规的训练和科学作风的培养。
是与课堂听讲,自学和训练相辅相成的不可缺少的一个教学环节。
通常,课程设计的课题要比平时的习题复杂的多,也更接近实际。
课程实际着眼于与应用的结合点,使学生学会如何把书上学到的东西用于解决实际问题,培养软件工程所需要的动手能力;另一方面,能使书上的,本次课程设计重点是程序设计方法和分析问题的能力,而不是强调面面俱到。
有31个题目,学生可在其中任选一题进行设计,设计完毕写出课程设计报告,A4纸打印成册,并将课程设计报告与源程序存盘。
班长将其交齐后交给指导老师。
第一章需求分析
1.1课程的题目
《电子英汉字典设计》
1.2设计要求:
1.实现英汉字典的查找,增词,删除工作。
2.每行对应一个词条,每个词条由两个字符串组成,字符串用若干空格分开;前一个是单词字符串分析(英文),后一个是释义字符串(中文),使用分号作为多个释义的分隔符(无空格)。
3.对单词和释义字符串长度的限定分别为20个与4个字词条数限定为不多于200条。
4.采用菜单工作方式。
在一个操作执行之后,程序询问是否继续执行该操作。
如输入Y和y,则重复同一操作不退回到菜单;如输入其他信息,则回到菜单等待另一次选择。
仅当选择退出操作时。
程序应询问是否将修改后字典存盘,并根据用户选择存盘或不存盘退出。
5.要求整个设计以人为本,用户界面友好。
1.3需求分析
1.程序的要求。
2.输入输出的要求。
第二章总体设计
2.1程序由哪些模块组成以及一个模块之间的层次结构、模块的调用关系;每个模块的功能。
2.2课题的总体数据数据结构和数据库结构;即要存储什么数据,这些数据是什么样的结构,他们之间有什么样的关系等。
第三章详细设计
3.1主体函数
整个系统除了主函数外,另外还有12个函数,实现七个功能:
查找功能、增加功能、删除功能、修改功能、浏览功能、维护功能、结束功能。
各个函数的详细设计说明如。
3.1.1主函数main()
通过getch函数显示菜单,利用switch语句实现各函数的调用,根据系统提示输入的数字选项来调用相应的函数。
主菜单
单词查询
词条录入
词条删除
词条修改
信息显示
信息保存
退出系统
1234567
图3.1主函数调用
3.1.2查找函数()
首先利用清屏函数对屏幕清屏,利用输入函数输入要查找的单词,如果找到则显示出所找的单词,再利用getch()函数显示,按任意键返回主菜单,如果没有找到则显示出notfound,按任意键返回。
开始
输入
i=0
i<200N
Y
Dit[I].ci==0
YN
输出结果输出结果输出结果
图3.2查找函数调用
3.1.3增加函数add()
首先清除屏幕,找到一个空位利用输入函数输入要增加的单词,再判断该单词是否存在,如果存在,则显示“thewordisalreadystore”,不存在则输入该单词的意思进行存储,按任意键返回主菜单。
开始
i=0
i<200
!
(*dict)[I].ci==0
j=0
i<200
Dict[j],ci==0
输入意思
保存
FULL
存在
输出结果
输出结果
N
N
N
Y
N
Y
图3.3增加函数调用
3.1.4删除函数del()
开始
输入
i=0
Tempdict[].ci==0
i<200
输出结果
清除
输出结果
首先输入要删除的单词,如果找到则利用memset函数对它进行‘\0’覆盖,按任意键返回主菜单,如果没有找到,则显示notfound。
N
Y
NY
图3.4删除函数调用
3.1.5修改函数modify()
首先清屏,输入要修改的单词,如果找到单词,则显示found,并输入单词新的意思,存储之后再返回主菜单,如果没有找到则显示notfound,按任意键返回。
3.1.6保存函数store()
利用fscanf函数将结构体数组中的数据保存到指定文件中。
3.1.7浏览函数view()
首先清屏,分页显示,每页显示20个,读出结构体数组中的数据直至结束。
3.2设计过程
3.2.1问题描述:
该设计实现简单电子英汉词典的功能,具体管理操作包括单词的添加、显示、查找、删除、修改和保存等。
3.2.2功能描述:
1.问题描述
本设计采用结构体数组,每个数据的结构应当包括:
单词的英文拼写,单词的中文释义。
2.系统功能:
a.词条录入:
即添加单词记录。
b.信息显示:
将所有的单词按字母顺序显示。
c.词条修改:
对已经输入的单词信息进行修改。
d.词条删除:
删除某个单词记录。
e.单词查询:
输入单词英文拼写,输出该单词的中文释义。
f.信息保存:
将单词信息保存到文件。
g.退出系统
3.系统使用说明:
执行一个具体的功能之后,程序将重新显示功能菜单。
系统的功能并不限于上述,可以对其进行扩充完善,如在对信息进行修改和删除时,可以考虑系统的安全性,在执行前若输入正确密码,才可进行操作。
3.3课题的主要功能
电子英汉词典设计系统能完成一个简单的电子英汉词典的功能,这个系统有七个功能,如:
查找、增加、删除、修改、浏览、维护、结束。
把这七功能编该成七个子函数。
在主函数当中对这七个子数调用,来实现对整个系统的操作。
本词典采用一个包含50个数据结构数,每个数据的结构当包括,英文单词、中文意思。
3.3.1各函数的主要功能
1.程序的模块组成:
主函数:
main()
初始化函数:
init()
输入函数:
scanf()
输出函数:
printf()
删除函数:
memset()
查找函数find()
增加函数add()
删除函数del()
修改函数modify()
浏览函数view()
维护函数store()
结束函数return()
2.各个函数的主要功能:
输入函数:
随时输入数据;
菜单函数:
显示系统主菜单;
查找函数:
能够随时查找某个单词;
增加函数:
能够随时增加想要增加的单词;
删除函数:
能够删除某单词信息;
修改函数:
能随时修改单词信息;
浏览函数:
能够浏览所有单词
3.4主线流程
退出
图3.1主线流程
第四章功能显示及操作测试
4.1主菜单
图4.1
程序完成后执行则进入主菜单界面,其中显示有供我们所要选择的操作。
4.2单词查询
图4.2单词查询图4.3词条录入
4.3词条录入
单词查询时按1,然后显示“pleaseinputaword:
apple”,此时我们只需输入自己要查询的单词再按“Enter”即可查询。
如果查询结果显示“nofound”,则我们需要在其他地方查询,之后进行操作“2,词条录入”,此操作可以将查到的结果添加到本程序的词库中。
从而通过这个不断完善字典。
4.4词条删除
图4.4词条删除
要进行词条删除时在主菜单按“3,词条删除”,之后会有“pleaseinputtheworld:
”此时输入要删除的词条,然后按“Enter”即可删除要删除的词条。
验证结果时只要按查询词条的步骤操作即可,只要显示“notfound”即可证明删除成功。
4.5词条修改
图4.5
按“4,词条修改”时会显示“Pleaseinputtheword”之后显示词条意思,接着按“Enter”,会显示“pleaseintputthenewmean:
”输入新的意思即可修改词库中词条的意思。
4.6信息显示
信息显示显示的是单词库当中所有的词条及词条意思,单词库是整个字典的核心,所有操作都是围绕单词库进行的。
而主菜单中的操作除了词条查询以为的其他操作都是对单词库的完善,可以说这一字典是一款可以不断进行自我进化的英汉字典。
图4.6信息显示
4.7信息保存
图4.7信息保存
结论与心得
课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新月异,当今计算机应用在生活中可以说是无处不在。
因此,作为二十一世纪的大学生来说掌握计算机开发技术是十分重要的。
回顾起此次课程设计,至今我仍感慨颇多,的确,从拿到题目到完成整个编程,从理论到实践,经过一周的课程设计,虽然甚是辛苦,但我却学到了许多东西,不仅巩固了以前所学过的知识,而且学到了很多在书上所没有学到过的知识,使我自己对C语言又有了重新的认识,觉得它十分的重要,但掌握它又不是一件容易的事。
只有通过自己不停的思考,不断的上机实践。
才能够比较熟练的掌握好,在其中我们遇到了比较多的困难,因为其中有些知识我们并没有学到过,要自己去查找资料来完成。
在设计过程中遇到问题,可以说是困难重重,因为毕竟是第一次做的,难免会遇到各种各样的问题,同时在设计过程中发现了自己的不足之处,对以前的所学过的知识理解的不够深刻,掌握的不够牢固。
通过这次课程设计之后,觉得以前学过的知识要重新温习才能够达到查漏补缺的效果。
刚开始听说我们要设计英汉电子词典时心里真的是没有一点底,毫无思绪,无从下手,毕竟C语言才刚学一年就要编写如此复杂的应用程序。
但参考了一些资料和与几个有经验的学长们讨论后,编写思路才漫漫清楚,开始了解它的基本方式和操作方法。
在不太熟悉的部分,我们能够充分利用自己的自学能力,发挥它,以及在设计过程中的团队作用,提高自己解决问题的能力。
在设计程序是也增加了自己的实践能力,通过翻阅有关文献获得了些自己原来不了解的知识。
从接触C语言到了解C语言是一个过程,是自身学习的过程更是一段由量变到质变的过程。
俗话说师傅领进门,修行靠个人。
在编写过程中遇到的不解和麻烦都基本上是通过自身的反复琢磨和学长的帮助而解决的。
通过这段时间的课程设计,我认识到C语言是一门比较难的课程。
需要多花时间上机练习,这次的程序训练培养了我的实际分析问题的能力,实际编程能力。
随着程序的逐渐完善,自己也在慢慢进步,达到了预期目的。
这次课程设计终于完成了,在设计中遇到了许多的问题,但在老师的指导下,终于迎刃而解,同时,对给过我帮助的所有同学和各位指导老师再次感谢。
参考文献
1.姜灵芝,余健.C语言课程设计案例精编.北京:
清华大学,2008
2.王新,雷.C语言课程设计.北京:
清华大学,2009
3.游洪跃,彭骏,谭斌.C语言程序设计实验与课程设计教程.北京:
清华大学,2011
4.朴勇编著.软件工程实用教程.北京:
人民邮电,2015
5.军国主编.软件工程案例教程.北京:
清华大学,2013
6.忠宝主编.软件工程:
理论、方法及实践.北京:
国防工业,2012
7.MehlhornK.,SandersP.著,葛秀慧,田浩译.Algorithmsanddatastructures.北京:
清华大学,2013
致谢
在这次课程设计的撰写过程中,我得到了许多人的帮助。
首先我要感谢老师,每天耐心认真的指导我们,在老师的帮助下,我们的能力也得到了很大程度的提高。
这次课设不但培养了我们对待编程科学严谨的态度,更让我们掌握了很多有关编程方面的知识。
在这里我对精心指导,详细为我们解说的老师表示感谢。
也要感谢我的搭档,在我编程的时候给我鼓励和支持,详细给我讲解程序,给了我很大的帮助。
在此期间,我不仅学到了新的知识,而且也开阔了视野,提高了自己的设计能力。
我也要感谢帮助过我的同学,他们也为我跟搭档解决了不少我们不太明白的设计难题,同时也感谢学院给我们提供的机会。
最后在一次感谢所有在设计中曾经帮助过我的良师益友。
附录程序源代码
#include"stdio.h"
#include"conio.h"
#include"string.h"
#include"stdlib.h"
#defineclrscr()system("cls")/*将TC下的清屏函数替换为VC下的清屏函数*/
typedefstruct
{
chara[20];
charb[40];
}XYZ;
XYZxyz[50];
voidinit()/*初始化函数*/
{
inti;
FILE*fp;
for(i=0;i<50;i++)
{
memset(xyz[i].a,'\0',20);/*清空磁道,*/
memset(xyz[i].b,'\0',40);
}
fp=fopen("c:
\\my.txt","w");/*在C盘新建一个TXT文件*/
i=0;
while(fscanf(fp,"%s%s\n",xyz[i].a,xyz[i].b)!
=EOF)/*由文件向结构体数组中写数锯*/
i++;
fclose(fp);
}
voidfind()/*单词查询函数*/
{
inti;
chartemp[20];
clrscr();
printf("pleaseinputaword:
");
scanf("%s",temp);
for(i=0;i<50;i++)
if(strcmp(temp,xyz[i].a)==0)/*通过比较字符查询*/
{
printf("\n\n%s:
%s",xyz[i].a,xyz[i].b);
printf("\n\npressanykeytoreturn");
getch();
return;
}
printf("\n\nnotfound");
getch();
return;
}
voidadd()/*词条录入函数*/
{
inti,j;
chartemp[20];
chartemp1[40];
clrscr();
for(i=0;i<50;i++)
{
if(!
(*xyz[i].a))/*找到空位*/
{
printf("\n\npleaseinputtheword:
");
scanf("%s",temp);
for(j=0;j<50;j++)
if(strcmp(temp,xyz[j].a)==0)/*找到相同字符*/
{
printf("\n\nthewordisalreadystore\n\n");
printf("pleaseanykeytoreturn");
getch();
return;
}
printf("\n\npleaseinputthemean:
");
scanf("%s",temp1);
strcpy(xyz[i].a,temp);/*复制*/
strcpy(xyz[i].b,temp1);
return;
}
}
printf("\n\nsorry,thedataisfull");
}
voiddel()/*词条删除函数*/
{
inti;
chartemp[20];
clrscr();
printf("\n\npleaseinputtheword:
");
scanf("%s",temp);
for(i=0;i<50;i++)
if(strcmp(temp,xyz[i].a)==0)/*比较*/
{
memset(xyz[i].a,'\0',20);/*清空该结构体*/
memset(xyz[i].b,'\0',40);
printf("\n\nsuccess,pressanykeytoreturn");
getch();
return;
}
printf("\n\nnotfound");
getch();
return;
}
voidmodify()/*词条修改函数*/
{
inti;
chartemp[20];
chartemp1[40];
clrscr();
printf("\n\npleaseinputtheword:
");
scanf("%s",temp);
for(i=0;i<50;i++)
if(strcmp(temp,xyz[i].a)==0)
{
printf("\n\nfound\n\n");
printf("%s:
%s\n\n",xyz[i].a,xyz[i].b);/*显示原有单词和意思*/
printf("\n\npleaseinputthenewmean:
");
scanf("%s",temp1);
strcpy(xyz[i].b,temp1);/*从temp1复制结构体中*/
printf("\n\nsuccess,pleaseanykeytoreturn");
getch();
return;
}
printf("\n\nnotfound");
getch();
return;
}
voidview()/*信息显示函数*/
{
inti,j;
clrscr();
for(i=0,j=0;i<50;i++)
{
if(*xyz[i].a!
='\0')/*如果不是空位*/
{
j++;
printf("%s:
%s\n",xyz[i].a,xyz[i].b);
if(j==20)/*分页显示,一次显示20页*/
{
j=0;
printf("\npreaseanykeytopagedown");
getch();
clrscr();
}
}
}
printf("\n\nthat'sall");
getch();
}
voidstore()/*信息保存函数*/
{
inti;
FILE*fp;
fp=fopen("c:
\\my.txt","w");/*以读的方式再新建my.txt文档*/
if(fp==NULL)/*没建成显示wrong!
*/
printf("wrong!
");
getchar();
for(i=0;i<50;i++)
fprintf(fp,"%s%s\n",xyz[i].a,xyz[i].b);/*将结构体中的数剧保存到my.txt文档*/
fclose(fp);
printf("\n\nstoresuccess\n\n");
getch();
return;
}
intmain(void)/*主函数*/
{
charkey;
init();
while
(1)
{
clrscr();
printf("\n\n\n设计者毛彦奎\n\n");
printf("************************************************************************\n");
printf("*1、单词查询*\n");
printf("*2、词条录入*\n");
printf("*3、词条删除*\n");
printf("*4、词条修改*\n");
printf("*5、信息显示*\n");
printf("*6、信息保存*\n");
printf("*7、退出系统*\n");
printf("************************************************************************");
printf("\n\n\n非本人授权严禁分享!
");
key=getch();
switch(key)
{
case'1':
find();break;
case'2':
add();break;
case'3':
del();break;
case'4':
modify();break;
case'5':
view();break;
case'6':
store();break;
case'7':
return0;
}
}
return0;
}