一种简单的英文词典排版系统C语言Word文档格式.doc
《一种简单的英文词典排版系统C语言Word文档格式.doc》由会员分享,可在线阅读,更多相关《一种简单的英文词典排版系统C语言Word文档格式.doc(16页珍藏版)》请在冰豆网上搜索。
可存放256个单词,每个单词的长度不超过31
staticFILE*fp;
---定义文件指针:
内部链接,文件作用域;
staticchara[ROWS][COLS];
---定义数组:
该数组的作用是将文件的内容复制进来,并加以处理。
因为处理数组比处理文件方便。
charget_option(void);
---接收用户的选项,防止误操作。
若输入“a;
”(不包括引号),那么将视为选项a
intb(intcount);
---完成选项b的作用--接收新单词;
voidc(char*pt[],intcount);
---完成选项c的作用--通过指针对数组排序,实际数组元素位置未改变;
intcheck(chararr[],intcount);
---对输入的单词进行分辨,若输入nihao,将视为单词ni,并且提示并剔除重复的单词;
voidstorage(char*pt[],intcount);
---在程序结束之前重新排序存储数组中的单词到文件中。
1题目要求
1.能输入和显示打入的单词
2.能分辨出单词
3.对重复的单词和已经输入的单词能自动排除
4.能按A—Z的顺序排版
5.能将运行结果以文本形式存储
6.具有添加新单词并重新排版的能力
7.数据结构采用指针数组或二维数组。
以回车键或者空格键作为单词输入结束标志,对重复的单词自动排除可选第一张提到的查找方法,数据结构可采用指针和数组
2需求分析
运行结果以文本形式存储,因而要提供文件的输入输出操作;
通过查找操作检查重复单词;
提供排序操作系统实现按A—Z的顺序排版;
提供插入操作添加新单词并重新排版。
另外通过键盘式菜单实现功能选择。
3总体设计
整个系统呗设计为单词录入模块、文件存储模块和单词浏览模块。
其中单词录入模块要完成输入单词、检查是否重复、排序操作。
文件存储模块把存放单词的数组中的数据写入文件。
单词浏览模块完成英文词典的输出,即文件的输出操作。
系统功能模块图:
单词浏览
删除单词
添加单词
单词存储
单词排序
单词录入
4详细设计
1.主函数
【流程图】
显示一系列的功能选项
输入n,判断n是否是1—9
根据n的值调用各功能模块函数
N
Y
【程序】
stdio.h"
#defineCOLS32
int
n;
//****n全局变量*****//
char
word[N][20];
voidmenu()//***主界面***//
{
intn,w;
//*变量n保存选择菜单数字,w判断输入的数字是否在功能菜单对应数字范围内*//
do
{
puts("
\t\t********************MENU********************\n\n"
);
\t\t\tWelcometodj'
sprogram!
\n\n"
\t\t\t\t1.Addnewword."
\t\t\t\t2.Browseallthewords."
puts("
\t\t\t\t3.Searchtheword."
\t\t\t\t4.Sortthewords."
\t\t\t\t5.OrderbyA-z."
\t\t\t\t6.Exit!
"
\n\n\t\t****************************************\n"
printf("
Choiceyournumber(1-6):
[]\b\b"
scanf("
%d"
&
n);
if(n<
1||n>
6)//*对选择的数字作判断*//
{
w=1;
getchar();
}
elsew=0;
}while(w==1);
switch(n)
case1:
add();
break;
//*追加模块*//
case2:
browse();
//*浏览模块*//
case3:
search();
//*查找模块*//
case4:
sort();
//*分类模块*//
case5:
order();
//*排序模块*//
case6:
exit(0);
//*退出*//
}
}
voidmain()//********主函数*********//
menu();
2.公共函数
intload()//*加载函数*//
inti,count;
intstart;
char*pt[ROWS];
charch,len;
charinput;
if((fp=fopen("
words.txt"
"
a+"
))==NULL)//*以输出打开方式,在此前的记录被覆盖*//
\nCannotopenfile!
\n"
returnNULL;
for(i=0;
!
feof(fp);
i++)
fscanf(fp,"
%s"
word[i]);
fclose(fp);
returni+1;
//*返回记录个数*//
voidsave(intn)//*保存函数,保存n个记录*//
FILE*fp;
inti;
exit(0);
i<
fprintf(fp,"
3.各功能模块设计
1)分类模块
voidsort()
inti,j,k;
charc[20];
if((n=load())==0)
for(j=0;
j<
n-i-1;
j++);
if(strcmp(word[j],word[j+1])>
0)
strcmp(c,word[j]);
strcmp(word[j],word[j+1]);
strcmp(word[j+1],c);
save(n);
Successful!
^_^.\n"
\nNow?
1.browseall2.back"
k);
if(k==1)
browse();
elseif(k==2)
menu();
2)排序模块
用选择法排序
保存
返回主菜单
voidorder()//*排序模块*//
inta[N],i,j,t;
structwords;
n=load();
N;
for(i=0;
N-1;
for(j=i+i;
j++)
if(a[i]>
a[j])
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
for(j=0;
printf("
%3d"
a[i]);
3)修改模块
输入要修改的单词
是否找到此单词记录
显示所有记录,让用户看哪个要修改
Y N
显示找到的单词,调用修改函数
提示没有找到
询问用户是
否继续修改
Y
返回主菜单
Y
voidmodify(inta)//*修改模块*//
printf("
Enterthenewword:
scanf("
c);
strcpy(word[a],c);
save(n);
4)删除模块
显示所有记录,让用户看哪个需要删除
输入需要删除的单词
显示找到的记录调用删除函数
询问用户是否继续删除
voiddel(inta)//*删除模块*//
intx,i,y;
Areyousuretodeletethisword?
\n\t1).sure2).noandbackmenu[]\b\b"
x);
//*输入要修改的单词*//
if(x==1)
for(i=a;
n-1;
i++)//*查找要修改的单词*//
strcpy(word[i],word[i+1]);
save(n-1);
^_^.\nNow?
1).onemore2).backmenu"
y);
if(y==1)