资源描述
C语言程序设计
课程设计汇报
设计题目:教小学生学英语
专 业 微电子
学 号
班 级 132班
姓 名 布玛利亚.吾斯曼
指导老师 张老师
年 秋季 学期
设计任务:
题目:计算机辅助教学(CAI)软件开发:教小学生学英语
功效:1.屏幕上随机出现一个汉语单词,英语单词,汉语词组,英语词组或一短句提醒小学生给出对应答案,答错了要提醒要求重新输入,直到答对为止。要统计给分,且累计,够一定分数后可进级,即从单词到词组,从词组到短句。一样,也可降级。起步阶段可各选30个,软件可扩充,即扩大词库容量。
(rand(),#include<stdio.h> 结构体、文件或数组)
2.保留:将相关数据写入磁盘文件,便于存、取操作。
分步实施:
1、初步完成总体设计,搭好框架,确定人机对话界面,确定函数个数;
2、完成最低要求:能教单词,并有统计功效,即一次答正确成功率为90%以上 后可晋级;
3、深入要求:将词库、目前晋级等级保留在磁盘文件,每次登录时读取。
要求:1、用C语言实现程序设计;
2、利用结构体进行相关信息处理;
3、系统各个功效模块要求用函数形式实现;
4、界面友好(良好人机交互),程序要有注释。
平时成绩:
验收答辩成绩:
设计汇报成绩:
总评成绩:
指导老师:
一、总体设计
1.程序总体设计
思索怎样使用合理方法使使用者有效利用软件记住单词,将自己想法经过程序来实现。
2. 数据结构
3. 函数原型申明
二、具体设计
1.main( )(步骤图)
2.源程序
#include<stdio.h>
#include<string.h>
#include<time.h>
#include<stdlib.h>
#define SIZE 100//申明函数,结构
void zero();//主显示界面
void select();//选择界面
void save();//保留界面函数
void save1();//保留单词函数
void save2();//保留短语函数
void save3();//保留短句函数
void see();//查看词库界面
void see1();//查看单词词库
void see2();//查看短语词库
void see3();//查看短句词库
void one();//学习单词函数
void two();//学习短语函数
void three();//学习短句函数
struct word_list
{ char a1[10];
char b1[10];
}word[SIZE];
struct phrase_list
{ char a2[20];
char b2[20];
}phrase[SIZE];
struct sentence_list
{ char a3[100];
char b3[100];
}sentence[SIZE];
//定义函数
void main()
{zero();
select();}
void zero()
{printf("\n");
printf("\n\n\n");
printf("\t| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|\n");
printf("\t| |\n");
printf("\t| |\n");
printf("\t| ------快-乐-学-习——快-乐-成-长----- |\n");
printf("\t| |\n");
printf("\t| love me, love English! |\n");
printf("\t| |\n");
printf("\t| |\n");
printf("\t| 1.开始学习 |\n");
printf("\t| |\n");
printf("\t| 2.扩大词库 |\n");
printf("\t| |\n");
printf("\t| 3.查看词库 |\n");
printf("\t| |\n");
printf("\t| 4.退出系统 |\n");
printf("\t| |\n");
printf("\t| |\n");
printf("\t| |\n");
printf("\t|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|\n");
}
void select()
{ int a;
printf("\t\t 请选择: ");
scanf("%d",&a);
switch(a)
{
case 1:one();break;
case 2:save();break;
case 3:see();break;
case 4:exit(0);
default: printf("error\n");
}
}
void save()
{int b;
printf("\n");
printf("\n");
printf("\t\t|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|\n");
printf("\t\t| |\n");
printf("\t\t| ------快-乐-学-习—&&&—快-乐-成-长----- |\n");
printf("\t\t| |\n");
printf("\t\t| !!!love me, love english!!! |\n");
printf("\t\t| |\n");
printf("\t\t| 1.统计单词 |\n");
printf("\t\t| |\n");
printf("\t\t| 2.统计词组 |\n");
printf("\t\t| |\n");
printf("\t\t| 3.统计句子 |\n");
printf("\t\t| |\n");
printf("\t\t| 4.返回 |\n");
printf("\t\t| |\n");
printf("\t\t|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|\n");
printf("\t\t 请输入: ");
scanf("\n %d",&b);
switch(b)
{
case 1:save1();break;
case 2:save2();break;
case 3:save3();break;
case 4:zero(); select();break;
default: printf("error\n");
}
}
void save1()
{int i,j,m1;
FILE *fp1,*fi1;
if((fp1=fopen("word_list","r"))==NULL)
{fp1=fopen("word_list","wb");fclose(fp1);}
if((fi1=fopen("c1","r"))==NULL)
{m1=0;
fi1=fopen("c1","wb");
fwrite(&m1,sizeof(int),1,fi1);
fclose(fi1);}
if((fi1=fopen("c1","rb"))!=NULL)
{
fi1=fopen("c1","rb");
fread(&m1,sizeof(int),1,fi1);
i=m1;
}
for(i;i<=SIZE;i++)
{if(m1>=(SIZE-1))
{printf("\n---------------------------已存满,不能存入数据--------------------------");
break;}
else
{printf("请输入英文单词:");
getchar();
gets(word[i].a1);
printf("\n请输入汉字词语:");
gets(word[i].b1);
if((fp1=fopen("word_list","ab"))==NULL)
{
printf("cannot open file\n");
exit(0);
}
if(fwrite(&word[i],sizeof(struct word_list),1,fp1)!=1)
printf("file write error\n");
fclose(fp1);
m1=m1+1;
if((fi1=fopen("c1","wb"))==NULL)
{
printf("cannot open file\n");
exit(0);
}
if(fwrite(&m1,sizeof(int),1,fi1)!=1)
printf("file write error\n");
fclose(fi1);
printf("\t\t \n");
printf("\t\t \n");
printf("\t\t|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|\n");
printf("\t\t| |\n");
printf("\t\t|----------统计成功!是否继续统计单词-----------|\n");
printf("\t\t| |\n");
printf("\t\t| |\n");
printf("\t\t| 1.继续--- |\n");
printf("\t\t| |\n");
printf("\t\t| 2.退出--- |\n");
printf("\t\t| |\n");
printf("\t\t| |\n");
printf("\t\t|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|\n");
printf("\t\t 请输入: ");
scanf("%d",&j);
if(j==1) ;
else if(j==2)
break;
}}
zero();
select();
}
void save2()
{int i,j,m2;
FILE *fp2,*fi2;
if((fp2=fopen("phrase_list","r"))==NULL)
{fp2=fopen("phrase_list","wb");fclose(fp2);}
if((fi2=fopen("c2","r"))==NULL)
{m2=0;
fi2=fopen("c2","wb");
fwrite(&m2,sizeof(int),1,fi2);
fclose(fi2);}
if((fi2=fopen("c2","rb"))!=NULL)
{
fi2=fopen("c2","rb");
fread(&m2,sizeof(int),1,fi2);
i=m2;
}
for(i;i<=SIZE;i++)
{if(m2>=(SIZE-1))
{printf("\n---------------------------已存满,不能存入数据--------------------------");
break;}
else
{printf("请输入英文短语:");
getchar();
gets(phrase[i].a2);
printf("\n请输入汉字短语:");
gets(phrase[i].b2);
if((fp2=fopen("phrase_list","ab"))==NULL)
{
printf("cannot open file\n");
exit(0);
}
if(fwrite(&phrase[i],sizeof(struct phrase_list),1,fp2)!=1)
printf("file write error\n");
fclose(fp2);
m2=m2+1;
if((fi2=fopen("c2","wb"))==NULL)
{
printf("cannot open file\n");
exit(0);
}
if(fwrite(&m2,sizeof(int),1,fi2)!=1)
printf("file write error\n");
fclose(fi2);
printf("\t\t \n");
printf("\t\t \n");
printf("\t\t|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|\n");
printf("\t\t| |\n");
printf("\t\t|----------统计成功!是否继续统计单词-----------|\n");
printf("\t\t| |\n");
printf("\t\t| |\n");
printf("\t\t| 1.继续--- |\n");
printf("\t\t| |\n");
printf("\t\t| 2.退出--- |\n");
printf("\t\t| |\n");
printf("\t\t| |\n");
printf("\t\t|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|\n");
printf("\t\t 请输入: ");
scanf("%d",&j);
if(j==1) ;
else if(j==2)
break;
}}
zero();
select();
}
void save3()
{int i,j,m3;
FILE *fp3,*fi3;
if((fp3=fopen("sentence_list","r"))==NULL)
{fp3=fopen("sentence_list","wb");fclose(fp3);}
if((fi3=fopen("c3","r"))==NULL)
{m3=0;
fi3=fopen("c3","wb");
fwrite(&m3,sizeof(int),1,fi3);
fclose(fi3);}
if((fi3=fopen("c3","rb"))!=NULL)
{
fi3=fopen("c3","rb");
fread(&m3,sizeof(int),1,fi3);
i=m3;
}
for(i;i<=SIZE;i++)
{if(m3>=(SIZE-1))
{printf("\n---------------------------已存满,不能存入数据--------------------------");
break;}
else
{printf("请输入英文短句:");
getchar();
gets(sentence[i].a3);
printf("\n请输入汉字短句:");
gets(sentence[i].b3);
if((fp3=fopen("sentence_list","ab"))==NULL)
{
printf("cannot open file\n");
exit(0);
}
if(fwrite(&sentence[i],sizeof(struct sentence_list),1,fp3)!=1)
printf("file write error\n");
fclose(fp3);
m3=m3+1;
if((fi3=fopen("c3","wb"))==NULL)
{
printf("cannot open file\n");
exit(0);
}
if(fwrite(&m3,sizeof(int),1,fi3)!=1)
printf("file write error\n");
fclose(fi3);
printf("\t\t \n");
printf("\t\t \n");
printf("\t\t|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|\n");
printf("\t\t| |\n");
printf("\t\t|----------统计成功!是否继续统计单词-----------|\n");
printf("\t\t| |\n");
printf("\t\t| |\n");
printf("\t\t| 1.继续--- |\n");
printf("\t\t| |\n");
printf("\t\t| 2.退出--- |\n");
printf("\t\t| |\n");
printf("\t\t| |\n");
printf("\t\t|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|\n");
printf("\t\t 请输入: ");
scanf("%d",&j);
if(j==1) ;
else if(j==2)
break;
}}
zero();
select();
}
void see()
{int j;
printf("\t\t \n");
printf("\t\t \n");
printf("\t\t|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|\n");
printf("\t\t| |\n");
printf("\t\t|---------~~~请选择记忆类型~~~-----------|\n");
printf("\t\t| |\n");
printf("\t\t| |\n");
printf("\t\t| 1.记忆单词 |\n");
printf("\t\t| |\n");
printf("\t\t| 2.记忆短语 |\n");
printf("\t\t| |\n");
printf("\t\t| 3.记忆句子 |\n");
printf("\t\t| |\n");
printf("\t\t| 4.退出 |\n");
printf("\t\t| |\n");
printf("\t\t|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|\n");
printf("\t\t 请输入: ");
scanf("%d",&j);
if(j==1) see1();
else if(j==2) see2();
else if(j==3) see3();
else if(j==4) {zero();select();}
}
void see1()
{int i,m1;
FILE *fp1,*fi1;
if((fi1=fopen("c1","r"))==NULL)
{printf("\t----------------------------无存放信息------------------------\n");see();}
fi1=fopen("c1","rb");
fread(&m1,sizeof(int),1,fi1);
if(m1==0)
{printf("\t----------------------------无存放信息------------------------\n");see();}
for(i=0;i<m1;i++)
{fp1=fopen("word_list","rb");
fseek(fp1,i*sizeof(struct word_list),0);
fread(&word[i],sizeof(struct word_list),1,fp1);
printf("英语:%s\n\n汉字:%s\n",&word[i].a1,&word[i].b1);
printf("********************************************************\n");
}
fclose(fp1);
fclose(fi1);
see();
}
void see2()
{int i,m2;
FILE *fp2,*fi2;
if((fi2=fopen("c2","r"))==NULL)
{printf("\t---------------------------无存放信息-----------------------\n");see();}
fi2=fopen("c2","rb");
fread(&m2,sizeof(int),1,fi2);
if(m2==0)
{printf("\t---------------------------无存放信息-----------------------\n");see();}
for(i=0;i<m2;i++)
{fp2=fopen("phrase_list","rb");
fseek(fp2,i*sizeof(struct phrase_list),0);
fread(&phrase[i],sizeof(struct phrase_list),1,fp2);
printf("英语:%s\n汉字:%s\n",&phrase[i].a2,&phrase[i].b2);
printf("********************************************************\n");
}
fclose(fp2);
fclose(fi2);
see();
}
void see3()
{int i,m3;
FILE *fp3,*fi3;
if((fi3=fopen("c3","r"))==NULL)
{printf("\t---------------------------无存放信息----------------------\n");see();}
fi3=fopen("c3","rb");
fread(&m3,sizeof(int),1,fi3);
if(m3==0)
{printf("\t---------------------------无存放信息- -------------------\n");see();}
for(i=0;i<m3;i++)
{fp3=fopen("sentence_list","rb");
fseek(fp3,i*sizeof(struct sentence_list),0);
fread(&sentence[i],sizeof(struct sentence_list),1,fp3);
printf("英语:%s\n汉字:%s\n",&sentence[i].a3,&sentence[i].b3);
printf("********************************************************\n");
}
fclose(fp3);
fclose(fi3);
see();
}
void one()
{int m1,n,k,i,j=0,t;
char a[10];getchar();
FILE *fi1,*fp1;
if((fi1=fopen("c1","r"))==NULL)
{printf("\t-------------------------无学习信息----------------------\n");zero();select();}
fi1=fopen("c1","rb");
fread(&m1,sizeof(int),1,fi1);
n=m1;fclose(fi1);
if(n<10)
{printf("\n\t---------------学习单词不够,请录入单词------------\n");zero();select();}
else
{
printf("\t——————————————单词练习———————————————\n");
srand((unsigned)time(NULL));
for(i=0;i<5;i++)
{
k=rand()%n+1;
fp1=fopen("word_list","rb");
fseek(fp1,(k-1)*sizeof(struct word_list),0);
fread(&word[k-1],sizeof(struct word_list),1,fp1);
printf("\n%s 翻译为汉字:",&word[k-1].a1);
gets(a);
if((strcmp(a,word[k-1].b1))==0)
{printf("\n---------------------------回复正确!!!----------------------------\n");
j++;}
else
{
printf("\n----------------------回复错误,加油,再试试吧-----------------------\n");
printf("\n%s 翻译为汉字:",&word[k-1].a1);
gets(a);
if((strcmp(a,word[k-1].b1))==0)
{
printf("\n---------------------------回复正确!!!---------------------------\n");}
else {printf("\n----------------回复错误,记住下面正确答案哦!-----------------------\n");
printf("正确答案: %s\n",&word[k-1].b1);}
}
}
for(i=5;i<10;i++)
{
k=rand()%n+1;
fp1=fopen("word_list","rb");
fseek(fp1,(k-1)*sizeof(struct word_list),0);
fread(&word[k-1],sizeof(struct word_list),1,fp1);
printf("%s 翻译为英文:",&word[k-1].b1);
gets(a);
if((strcmp(a,word[k-1].a1))==0)
展开阅读全文