第三章 结构化程序设计
一.实验目的:
1.明确结构化程序设计的基本结构。
2.通过对问题的分析,设计合理的结构化程序解决问题。
二.题目分析:
本次单词小助手的上机实验,老师给出了大部分功能实现的代码,包括词库维护、单词预览、单词背诵(中英)、单词背诵(英中)、查询成绩、帮助、退出系统。主要由我完善,完成以下要求:
1.改写程序为良好程序风格(文档注释,函数注释,语句注释)。
2.将单词测试中的功能完善,可针对做错的单词重复记忆。
3.查询单词的功能添加英文词查询,中文查询的功能完善(考虑如何显示同样中文意义,不同的英文单词)。
三.关键算法流程图的构造,及其源代码的实现:
(1)对做错的单词重复记忆实现流程图如下
代码实现如下:
中英增强记忆
void zyRetest()
{
char b1[20];
int z;
int choose = 1;
int i;
int m = 0;
while (choose)
{
i = rand() % num;
printf("\n【%s】请输入英文单词:", r[i].ch);
scanf("%s", b1);
for (z = 0; strcmp(b1, r[i].en) != 0; z = z)
{
printf("\n输入错误,请重新输入:");
scanf("%s", b1);
c = c + 1;
}
printf("\n恭喜你回答正确,加10分\n\n");
d = d + 1;
printf("\n继续测试请选1,返回上一级请选0:");
scanf("%d", &choose);
if (choose == 0) return;
}
}
英中增强记忆
void yzRetest()
{
char b1[20];
int z, x = 41;
int choose = 1;
int i;
while (choose)
{
i = rand() % num;
printf("\n【%s】请输入中文意思:", r[i].en);
scanf("%s", b1);
for (z = 0; strcmp(b1, r[i].ch) != 0; z = z)
{
printf("\n输入错误,请重新输入:");
scanf("%s", b1);
c = c + 1;
}
printf("\n恭喜你回答正确,加10分\n\n");
d = d + 1;
printf("\n继续测试请选1,返回上一级请选0:");
scanf("%d", &choose);
if (choose == 0) return;
}
}
其中有关文件的操作如下:
从增强记忆文件中读取单词
void readRemeberfile()
{
FILE *fp;
int i = 0;
fp = fopen(“Remeberdata.txt”, “r”);
if (!fp)
{
printf("\n打开文件Remeberdata.txt失败!");
}
while (fscanf(fp, "%s %s", r[i].en, r[i].ch) == 2)
{
i++;
}
rnum = i;
if (0 == i)
printf("\n你还没有错题哦");
else
printf("\n");
fclose(fp);
}
(2)查询单词的功能添加英文词查询,中文查询的功能完善如下:
下列分别用基本流程图和NS盒图表示思想:
英文查询单词实现代码如下:
英文查询单词
void ysearch()
{
int i = 0, choose = 0, flag = 1;
char en[MAX_CHAR]; //中文形式
while (choose || flag)
{
printf("\n请输入你要查询的单词英文形式:");
scanf("%s", en);
for (i = 0; i<num; i++)//先找到该英文形式对应的序号
if (strcmp(s[i].en, en) == 0)
{
printf("\n英文形式 中文形式 “);
printf(”\n %-12s%12s", s[i].en, s[i].ch);
printf("\n继续查询请选1,返回上一级请选0:");
scanf("%d", &choose);
if (choose == 0) return;
}
flag = 0;
}
if (!flag) printf("\n没有这个单词!");
}
四.调试测试及其运行结果:
(1)主页面布局
(2)词库维护增加单词:
查询,中英文都可以查询
测试如下:
从左到右依次为——增强记忆(中英)、增强记忆(英中)