#include <stdio.h>
#include <conio.h>
#include <string.h>
/*----全局变量----*/
#define _view '1' /*浏览*/
#define _add '2' /*新增*/
#define _store '3' /*存储*/
#define _menu '4' /*菜单*/
#define _exit '5' /*退出*/
#define _ALL 300 /*总能能存多少条单词*/
/*----单词结构----*/
typedef struct _word
{
char name[25];
char paraphrase[50];
}sWord;
/*存全部单词,每个词条一个sWord*/
sWord words[_ALL];
/*总共多少个单词*/
int total=0;
/*----预定义函数----*/
int getch();
int exit(int a);
void menu();
void out();
void AddWord();
void Browse();
void WriteFile();
/*-------------------------------公用函数-------------------------------*/
/*去选单*/
void tabMenu()
{
char ch;
//printf("\n[请按4回主选单、5退出]\n");
printf("\n");
//scanf("%c",&chr);
ch=getch();
switch(ch)
{
case _view:Browse();break;
case _add:AddWord();break;
case _store:WriteFile();break;
case _menu:menu();break;
case _exit:out();break;
default:tabMenu();break;
}
}
/* 导入文件*/
void LoadFile()
{
int i,tem=0;
FILE* fp;
/*首先读取记录数*/
if((fp=fopen("num.dat","rb"))==NULL)/*打开文件,不存在则建立*/
{
if((fp=fopen("num.dat","wb"))==NULL)
{
printf("无法创建文件,按任意键退出!");
getch();
exit(1);
}
fwrite(&total,sizeof(total),1,fp);
fp=fopen("num.dat","rb");
}
fread(&total,sizeof(total),1,fp);
fclose(fp);
/*读取词条*/
if((fp=fopen("data.dat","rb"))==NULL)/*打开文件,不存在则建立*/
{
if((fp=fopen("data.dat","wb"))==NULL)
{
printf("无法创建文件,按任意键退出!");
getch();
exit(1);
}
}
for(i=0;i<_ALL;i++)
{
if(tem<total)
{
fread(&words[tem],sizeof(words),1,fp); /*初始化数据*/
tem++;
}
}
fclose(fp);
}
/* 写入文件*/
void WriteFile()
{
FILE* fp;
int i;
/*写词条*/
cprintf("\n[存储单词]\n");
if((fp=fopen("data.dat","wb"))==NULL)
{
printf("无法创建文件,按任意键退出!");
getch();
exit(1);
}
for(i=0;i<total;i++)fwrite(&words[i],sizeof(sWord),1,fp);
fclose(fp);
/*写数目*/
if((fp=fopen("num.dat","wb"))==NULL) /*打开文件,不存在则建立*/
{
printf("无法创建文件,按任意键退出!");
getch();
exit(1);
}
fread(&total,sizeof(total),1,fp);
fclose(fp);
tabMenu();
}
/*-------------------------------浏览模块-------------------------------*/
void Browse()
{
int i;
printf("\n\n");
cprintf("[浏览单词]\n");
for(i=0;i<total;i++)
{
cprintf("%s",words[i].name);
cprintf("\t%s\n",words[i].paraphrase);
}
tabMenu();
}
/*-------------------------------添加单词-------------------------------*/
void AddWord()
{
//char ch;
sWord w;
cprintf("\n[添加单词]\n");
cprintf("请输入单词:");
cscanf("%s",w.name);
cprintf("\n请输入词义:");
cscanf("%s",w.paraphrase);
total++;
strcpy(words[total-1].name,w.name);
strcpy(words[total-1].paraphrase,w.paraphrase);
tabMenu();
}
/*主选单*/
void menu()
{
char ch;
printf("\n[请按以下键选择]\n");
printf(" 1、单词浏览\t");
printf(" 2、新增单词\t");
printf(" 3、存储单词\t");
printf(" 4、回主选单\t");
printf(" 5、退出\n");
//scanf("%c",&ch);
ch=getch();
switch(ch)
{
case _view:Browse();break;
case _add:AddWord();break;
case _store:WriteFile();break;
case _menu:menu();break;
case _exit:out();break;
default: printf("输入有误\n");break;
}
}
/*----退出系统----*/
void out()
{
printf("\n按任意键退出!");
getch();
exit(1);
}
/*-------------------------------主函数---------------------------------*/
main()
{
printf("\n\t\t*******欢迎进入英文词典排版系统*******\n\n");
LoadFile();
menu();
}