1、C语言程序设计 课程设计汇报 设计题目:教小学生学英语 专 业 微电子 学 号 班 级 132班 姓 名 布玛利亚.吾斯曼 指导老师 张老师 年 秋季 学期 设计任务: 题目:计算机辅助教学(CAI)软件开发:教小学生学英语 功效:1.屏幕上随机出现一个汉语单词,英语单词,汉语词组,英语词组或一短句提醒小学生给出对应答案,答错了要提醒要求重新输
2、入,直到答对为止。要统计给分,且累计,够一定分数后可进级,即从单词到词组,从词组到短句。一样,也可降级。起步阶段可各选30个,软件可扩充,即扩大词库容量。
(rand(),#include
3、求:1、用C语言实现程序设计;
2、利用结构体进行相关信息处理;
3、系统各个功效模块要求用函数形式实现;
4、界面友好(良好人机交互),程序要有注释。
平时成绩:
验收答辩成绩:
设计汇报成绩:
总评成绩:
指导老师:
一、总体设计
1.程序总体设计
思索怎样使用合理方法使使用者有效利用软件记住单词,将自己想法经过程序来实现。
2. 数据结构
3. 函数原型申明
二、具体设计
1.main( )(步骤图)
2.源程序
#include
4、
5、oid 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 ma
6、in() {zero(); select();} void zero() {printf("\n"); printf("\n\n\n"); printf("\t| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|\n"); printf("\t| |\n"); printf("\t|
7、 |\n"); printf("\t| ------快-乐-学-习——快-乐-成-长----- |\n"); printf("\t| |\n"); printf("\t| love me, love English! |\n"); printf("\t| |
8、\n"); printf("\t| |\n"); printf("\t| 1.开始学习 |\n"); printf("\t| |\n"); printf("\t| 2.扩大词库
9、 |\n"); printf("\t| |\n"); printf("\t| 3.查看词库 |\n"); printf("\t| |\n"); printf("\t| 4.退出系统
10、 |\n"); printf("\t| |\n"); printf("\t| |\n"); printf("\t| |\n"); printf("\t|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
11、~~~~~~~~~~~~~~~~|\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"
12、); printf("\n"); printf("\t\t|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|\n"); printf("\t\t| |\n"); printf("\t\t| ------快-乐-学-习—&&&—快-乐-成-长----- |\n"); printf("\t\t| |\n"); printf("\t\t|
13、 !!!love me, love english!!! |\n"); printf("\t\t| |\n"); printf("\t\t| 1.统计单词 |\n"); printf("\t\t| |\n"); printf("\t\t| 2.统计词组
14、 |\n"); printf("\t\t| |\n"); printf("\t\t| 3.统计句子 |\n"); printf("\t\t| |\n"); printf("\t\t| 4.返回 |\n"); printf("\t\t|
15、 |\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();br
16、eak; 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",
17、"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
18、[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); }
19、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
20、 |\n"); printf("\t\t|----------统计成功!是否继续统计单词-----------|\n"); printf("\t\t| |\n"); printf("\t\t| |\n"); printf("\t\t| 1.继续---
21、 |\n"); printf("\t\t| |\n"); printf("\t\t| 2.退出--- |\n"); printf("\t\t| |\n"); printf("\t\t| |\n"); printf("\t\t|~~~~~~
22、~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|\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
23、","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---------------
24、已存满,不能存入数据--------------------------"); 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 phr
25、ase_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
26、 \n"); printf("\t\t \n"); printf("\t\t|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|\n"); printf("\t\t| |\n"); printf("\t\t|----------统计成功!是否继续统计单词-----------|\n"); printf("\t\t|
27、 |\n"); printf("\t\t| |\n"); printf("\t\t| 1.继续--- |\n"); printf("\t\t| |\n"); printf("\t\t| 2.退出--- |
28、\n"); printf("\t\t| |\n"); printf("\t\t| |\n"); printf("\t\t|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|\n"); printf("\t\t 请输入: "); scanf("%d",&j); if(j==1) ; els
29、e 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);}
30、 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("
31、\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("
32、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|~~~~~~~~~~~~~~~~~~~~~~~~~~~
33、~~~~~~~~~~~~~~~~~~~|\n"); printf("\t\t| |\n"); printf("\t\t|----------统计成功!是否继续统计单词-----------|\n"); printf("\t\t| |\n"); printf("\t\t| |\n"); printf("\t\t|
34、 1.继续--- |\n"); printf("\t\t| |\n"); printf("\t\t| 2.退出--- |\n"); printf("\t\t| |\n"); printf("\t\t|
35、 |\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
36、 \n"); printf("\t\t \n"); printf("\t\t|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|\n"); printf("\t\t| |\n"); printf("\t\t|---------~~~请选择记忆类型~~~-----------|\n"); printf("\t\t|
37、 |\n"); printf("\t\t| |\n"); printf("\t\t| 1.记忆单词 |\n"); printf("\t\t| |\n"); printf("\t\t| 2.记忆短语 |\
38、n"); printf("\t\t| |\n"); printf("\t\t| 3.记忆句子 |\n"); printf("\t\t| |\n"); printf("\t\t| 4.退出 |\n"); printf("\t\t|
39、 |\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() {in
40、t 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 41、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();
}
42、
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(); 43、}
for(i=0;i 44、
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---------------------------无存放信息- - 45、\n");see();}
for(i=0;i 46、\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(&m 47、1,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 48、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----------------- 49、回复错误,加油,再试试吧-----------------------\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("正确 50、答案: %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)






