C语言课程设计电子英汉词典.docx
《C语言课程设计电子英汉词典.docx》由会员分享,可在线阅读,更多相关《C语言课程设计电子英汉词典.docx(22页珍藏版)》请在冰豆网上搜索。
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)课程设计报告装订顺序:
封面、任务书、目录、正文、评分、程序清单附件。
二、进度安排
星期日
(17周)
星期一
(18周)
星期四
(18周)
星期五
(18周)
星期日
(18周)
14:
00-17:
00
18:
00-21:
00
18:
00-21:
00
18:
00-21:
00
交报告
上课时间另外安排上课时间另外安排。
附录:
设计课题三:
电子英汉词典
一、问题描述:
该设计实现简单电子英汉词典的功能,具体管理操作包括单词的添加、显示、查找、删除、修改和保存等。
二、功能描述:
1、本设计采用结构体数组,每个数据的结构应当包括:
单词的英文拼写,单词的中文释义。
2、系统功能:
a.词条录入:
即添加单词记录。
b.信息显示:
将所有的单词按字母顺序显示。
c.词条修改:
对已经输入的单词信息进行修改。
d.词条删除:
删除某个单词记录。
e.单词查询:
输入单词英文拼写,输出该单词的中文释义。
f.信息保存:
将单词信息保存到文件。
g.退出系统
3、系统使用说明:
执行一个具体的功能之后,程序将重新显示功能菜单。
系统的功能并不限于上述,可以对其进行扩充完善,如在对信息进行修改和删除时,可以考虑系统的安全性,在执行前若输入正确密码,才可进行操作。
三、测试数据:
要求被选用的词条有30个左右,简单单词为主。
目录
1.封面---------------------------------------------1
2.任务书-------------------------------------------2
2.1设计内容与设计要求---------------------------------3
2.2附录-------------------------------------------------------4
3.目录--------------------------------------------------------------5
4.课题的主要功能
4.1各函数的主要功能----------------------------------6
4.2课题功能模块的划分--------------------------------7
4.3主要功能的实现------------------------------------7
4.3.1各被调用功能函数实现-------------------------8
5.程序调试------------------------------------------9
6.总结与体会---------------------------------------10
7.附件(源代码及程序运行截图)----------------------11
8.评分表-------------------------------------------20
(一)、课题的主要功能
电子英汉词典设计系统能完成一个简单的电子英汉词典的功能,这个系统有七个功能,如:
查找、增加、删除、修改、浏览、维护、结束。
把这七功能编该成七个子函数。
在主函数当中对这七个子数调用,来实现对整个系统的操作。
本词典采用一个包含50个数据结构数,每个数据的结构当包括,英文单词、中文意思。
<一>、各函数的主要功能
1)程序的模块组成:
主函数:
main()
初始化函数:
init()
输入函数:
scanf()
输出函数:
printf()
删除函数:
memset()
查找函数find()
增加函数add()
删除函数del()
修改函数modify()
浏览函数view()
维护函数store()
结束函数return()
2)各个函数的主要功能:
输入函数:
随时输入数据。
菜单函数:
显示系统主菜单。
查找函数:
能够随时查找某个单词
增加函数:
能够随时增加想要增加的单词
删除函数:
能够删除某单词信息
修改函数:
能随时修改单词信息
浏览函数:
能够浏览所有单词
(二)、课题功能的模块的划分
输出结果
(三)、主要功能的实现
整个系统除了主函数外,另外还有12个函数,实现七个功能:
查找功能、增加功能、删除功能、修改功能、浏览功能、维护功能、结束功能。
各个函数的详细设计说明如下:
1、主函数main()
通过getch函数显示菜单,利用switch语句实现各函数的调用,根据系统提示输入的数字选项来调用相应的函数。
2、查找函数()
首先利用清屏函数对屏幕清屏,利用输入函数输入要查找的单词,如果找到则显示出所找的单词,再利用getch()函数显示,按任意键返回主菜单,如果没有找到则显示出notfound,按任意键返回。
3、增加函数add()
首先清除屏幕,找到一个空位利用输入函数输入要增加的单词,再判断该单词是否存在,如果存在,则显示“thewordisalreadystore”,不存在则输入该单词的意思进行存储,按任意键返回主菜单。
4、删除函数del()
首先输入要删除的单词,如果找到则利用memset函数对它进行‘\0’覆盖,按任意键返回主菜单,如果没有找到,则显示notfound。
5、修改函数modify()
首先清屏,输入要修改的单词,如果找到单词,则显示found,并输入单词新的意思,存储之后再返回主菜单,如果没有找到则显示notfound,按任意键返回。
6、保存函数store()
利用fscanf函数将结构体数组中的数据保存到指定文件中。
7、浏览函数view()
首先清屏,分页显示,每页显示20个,读出结构体数组中的数据直至结束。
四、调试程序
老实说本程序的代码我是借鉴别人的,虽然我过了二级C,但我没把握自己完全原创,即使借鉴但用的时候难免出现这样那样的错误。
如开始设计出来的菜单不是预想的那样,而是总出现混乱,解决的这个问题的办法是调试。
最后还是老师帮我找到了问题的所在,在这次的课程设计中,我们遇到了如下问题:
有的不能加分号的加了分号,该加的又没有加,在TC下的程序有些函数不能在VC下运行,这些问题通过同学们的分析讨论都一一解决了,而遇到的最大的问题是:
运行结果不正确,后来经过老师的指点,后来自己调试终于运行出结果,经过美化界面修改整理代码终于完工!
如:
clrscr()函数(清屏函数)只能在TC下运行,而源代码中有大量clrscr()函数,在VC下的的清屏函数是system(“cls”)这时就可以用宏定义来解决:
defineclrscr()system(“cls”)
一个系统的菜单和提示信息非常重要。
如果没有这些用户根本不知道怎么用你设计的这个系统。
在设计的调试过程中也无法顺利的完成调试工作。
有了一个清晰简单的菜单和一些提示信息这后,调试过程完成的非常顺利。
五、总结
课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新月异,当今计算机应用在生活中可以说是无处不在。
因此,作为二十一世纪的大学生来说掌握计算机开发技术是十分重要的。
回顾起此次课程设计,至今我仍感慨颇多,的确,从拿到题目到完成整个编程,从理论到实践,经过一周的课程设计,虽然甚是辛苦,但我却学到了许多东西,不仅巩固了以前所学过的知识,而且学到了很多在书上所没有学到过的知识,使我自己对C语言又有了重新的认识,觉得它十分的重要,但掌握它又不是一件容易的事。
只有通过自己不停的思考,不断的上机实践。
才能够比较熟练的掌握好,在其中我们遇到了比较多的困难,因为其中有些知识我们并没有学到过,要自己去查找资料来完成。
在设计过程中遇到问题,可以说是困难重重,因为毕竟是第一次做的,难免会遇到各种各样的问题,同时在设计过程中发现了自己的不足之处,对以前的所学过的知识理解的不够深刻,掌握的不够牢固。
通过这次课程设计之后,觉得以前学过的知识要重新温习才能够达到查漏补缺的效果。
刚开始听说我们要设计英汉电子词典时心里真的是没有一点底,毫无思绪,无从下手,毕竟C语言才刚学一年就要编写如此复杂的应用程序。
但参考了一些资料和与几个有经验的学长们讨论后,编写思路才漫漫清楚,开始了解它的基本方式和操作方法。
在不太熟悉的部分,我们能够充分利用自己的自学能力,发挥它,以及在设计过程中的团队作用,提高自己解决问题的能力。
在设计程序是也增加了自己的实践能力,通过翻阅有关文献获得了些自己原来不了解的知识。
从接触C语言到了解C语言是一个过程,是自身学习的过程更是一段由量变到质变的过程。
俗话说师傅领进门,修行靠个人。
在编写过程中遇到的不解和麻烦都基本上是通过自身的反复琢磨和学长的帮助而解决的。
通过这段时间的课程设计,我认识到C语言是一门比较难的课程。
需要多花时间上机练习,这次的程序训练培养了我的实际分析问题的能力,实际编程能力。
随着程序的逐渐完善,自己也在慢慢进步,达到了预期目的。
这次课程设计终于完成了,在设计中遇到了许多的问题,但在老师的指导下,终于迎刃而解,同时,对给过我帮助的所有同学和各位指导老师再次感谢。
六、程序代码
#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文件*/
fp=fopen("c:
\\my.txt","r");/*将新建的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("************************************************************************");
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;
}
功能显示:
0主菜单
1单词查询
2词条录入
3词条删除
成功
失败
4词条修改
5信息显示
6信息保存
计算机科学与技术系课程设计评分表
课程名称:
C语言程序设计
项目
评价
设计方案的合理性与创造性
设计与调试结果
设计说明书的质量
答辩陈述与回答问题情况
课程设计周表现情况
综合成绩
教师签名:
日期:
2014.01.10