1、完整word版)背单词小程序 软件工程专业 C++ 课程设计报告 班级:软件 姓名: 学号: 一.课程设计目的及要求 1.设计目的 1. 提高和加强计算机应用与软件开发能力,由初学者向专业的程序员过渡。 2. 培养独立分析问题、解决问题、查阅资料以及自学能力,以适应计算机产业日新月异发展的形势。 3. 学习和掌握C++程序设计方法以及上机调试技巧,为今后学习其它专业课程打好基础。 2.设计要求(题目) (1)背单词小程序 (2)学生选课系统 二.课程设计的具体实现 (1)背单词小程序 1.总体设计 本程序主要有以下功能: l 添加新词
2、 l 顺序测验和随即测验 l 记录没背过的词 l 查找单词的汉语或英语意思(输入中文查对应的英语意思,输入英文查对应汉语意思) 1.添词 (Part 1.cpp) 2.检测 (Part 2.cpp) 3.已背单词 (Part 3.cpp) 3. 未背单词 (Part 4.cpp) 4.英汉互译 (Part 5.cpp) 6.退出 单词库 添加到单词库 随机检测 顺序检测 进入程序,显示主菜单 (Menu.cpp) 选择功能 各模块执行完后均返回主函数。 主要流程 英译汉 汉译英 2.详细设计 具体实现包括十个模块和一个头文件。分别是:
3、First.cpp,Main.cpp,Menu.cpp,Part 1.cpp,Part 2.cpp,Part 3.cpp,Part 4.cpp,Part 5.cpp,Part 6.cpp,五大功能粗实现.cpp,HEAD.H。 Meun函数 主要功能:用户进入系统首先执行的就是主函数,然后进入主菜单函数,它将显示主界面,并提示用户选择所需的功能。其中改变了屏幕和字体的颜色来构造一种欢快的气氛来学习。主功能:1.添加单词;2.进入检测;3.已背单词;4.未背单词;5.英汉互译;6.退出。 主要技术:if else if循环。 关键代码: if(i==1)
4、 //进入功能1 添加新词
{
system("cls"); //清屏
Add_word();、、调用添词函数
cin>>j;
system("cls");
if(j==1)
{Add();}
else if(j==2)
{
system("cls");
Frame();
}
else //尽量避免在使用程序时因操作引起的失误
{
cout<<"认真一点!(╰_╯)#"< 5、t<<"回答问题决定您的方向:"< 6、 cout<<"任意键返回主目录!"< 7、 if(ch=='b'||ch=='B')
{system("cls");Frame();}
else
{system("cls");Frame();}
}
else if(j==3)
添加单词
主要功能:用户在主界面选择功能1后即执行添加单词模块。它将提示用户输入添加单词,之前可以显示已存在的单词,利用while循环实现不定量输入单词,最后保存到单词库。
主要使用技术:文件指针(FILE *fp) while判断循环
关键代码:
char ch='Q'; //用来判断是否继续输入单词
8、 if((fp=fopen("dictionary.txt","ab+"))==NULL)
{
cout<<"文件无法打开!"< 9、"目前单词库单词存储量为:"< 10、随机检测。用户输入正确或错误都会给与提示!并且可以输入想要检测的单词数量,量力而行。
主要技术:文件的读出与写入,取随机数,if语句
关键代码:
if((fp=fopen("dictionary.txt","ab+"))==NULL)
{
cout<<"文件无法打开!"< 11、p;
cin>>p;
if(p>=t)
for(i=0;i 12、 else
{
cout<<"回答错误!"< 13、回答正确!"< 14、txt","ab+"))==NULL) //打开文件并判断文件是否存在
{
cout<<"文件无法打开!"< 15、cf)==0) //和英汉互译差不多的操作 判断后输出
{
cout< 16、);
}
for(i=0;i 17、
主要功能:用户在主界面选择功能5后即执行该模块,能够进行英汉互译功能。
主要技术:该模块只是调用和显示,主要用到了if函数和字符串处理和文件的读出技术。
关键代码:
char E[20]; //用数组是为了下面的地址
WoRD Word[100];
if((fp=fopen("dictionary.txt","ab+"))==NULL)
{
cout<<"文件无法打开!"< 18、<"输入其英文:"< 19、文件
本套程序一共有一个头文件。HEAD.h用于定义单词结构体,共有“单词编号”,“ 单词英文”,“ 单词中文意思”,“ 标注”几项。
代码如下:
struct WoRD //没有用 WORD 时因为 #include 20、性:
1. 程序无法循环使用。
刚开始程序完成一项功能后就自动退出程序,总是不能再返回主菜单,这样程序也就显得特无力。后来通过他人指导利用函数间相互调用完成了界面间自由往来!而且利用清屏功能让程序显得干净明了!
void Frame()
{
int i,j;
Menu();
cin>>i;
if(i==1)
{
system("cls");
Add_word();
cin>>j;
system("cls");
if(j==1)
{Add();}
else if(j==2)
21、
{
system("cls");
Frame();
}
else //尽量避免在使用程序时因操作引起的失误
{
cout<<"认真一点!(╰_╯)#"< 22、else
{exit(0);}
}
}
2. 文件的调入后的数据更新。
每次进行单词添加的时候都只能显示10个单词,但是我渴望的是把以前的单词输出来,再把这次添加的单词也输出来。。。。
后来我利用一个数组把文件里的单词信息记录了一下,再把那个全局变量记录一共多少单词数,这样就使得程序对单词信息很清晰,单词更新也不再是问题!
void First() //这个函数实现了文件信息的更新 每次开始它都可以将以前的文件内容跟现在串起来! 是我花费最长时间的地方! T_T
{
WoRD Word[100];
FILE *fp;
int 23、i,j;
if((fp=fopen("dictionary.txt","ab+"))==NULL)
{
cout<<"文件无法打开!"< 24、有时候就是一个很简单的问题,但是就是弄不好!挺可恶!
if(strcmp(Word[i].TF,ch)==0||strcmp(Word[i].TF,cf)==0)//条件符合就输出
{
cout< 25、以利用下一个程序去熟悉去掌握! 这个小程序中仍旧存在的种种问题让我也压力挺大的,但是迫于时间和考试只好将修改作罢了~~不过因此我也理解了那些已经在一线奋斗的前辈的苦恼,软件真的没有那么简单!!!
以下是附带代码:
● 背单词的小程序
//头文件 HEAD.H
struct WoRD //没有用 WORD 时因为 #include 26、5]; //用来标注是否背过
};
//FIRST.CPP
#include 27、ctionary.txt","ab+"))==NULL)
{
cout<<"文件无法打开!"< 28、tem("color 3E"); //屏幕及字体颜色
SetConsoleTitle("英语也疯狂!↖(^ω^)↗ ------老邓制作!"); //屏幕标题
First();
Frame(); //Game begin!
}
MENU.CPP
#include 29、"HEAD.H"
extern int t; //全局变量
void Add_word();
void Add();
void Test();
void Test_ByOrder();
void Test_ByImmediately();
void Review();
void Done();
void Preview();
void Doing();
void Translate();
void Transluate_EC();
void Transluate_CE();
void Quit();
void Menu 30、) //主菜单
{
cout<<" 背单词 "< 31、 ②进入检测 "< 32、 "< 33、 34、 //尽量避免在使用程序时因操作引起的失误
{
cout<<"认真一点!(╰_╯)#"< 35、ls");
Test();
cin>>j;
if(j==1)
{
Test_ByOrder();
cout<<"任意键返回主目录!"< 36、 cout<<"任意键返回主目录!"< 37、t<<"认真一点!(╰_╯)#"< 38、 if(j==1)
{
Done();
cout<<"任意键返回主目录!"< 39、 //尽量避免在使用程序时因操作引起的失误
{
cout<<"认真一点!(╰_╯)#"< 40、 else if(i==4)
{
system("cls");
Preview();
cin>>j;
if(j==1)
{
Doing();
cout<<"任意键返回主目录!"< 41、tem("cls");
Frame();
}
else //尽量避免在使用程序时因操作引起的失误
{
cout<<"认真一点!(╰_╯)#"< 42、t(0);}
}
}
else if(i==5)
{
system("cls");
Translate();
cin>>j;
if(j==1)
{
Transluate_EC();
cout<<"任意键返回主目录!"< 43、stem("cls");Frame();}
}
else if(j==2)
{
Transluate_CE();
cout<<"任意键返回主目录!"< 44、"cls");
Frame();
}
else //尽量避免在使用程序时因操作引起的失误
{
cout<<"认真一点!(╰_╯)#"< 45、 else
{exit(0);}
}
}
else if(i==6)
{
system("cls");
Quit();
cin>>j;
if(j==1)
{exit(0);}
else if(j==2)
{system("cls"); Frame();}
}
else //尽量避免在使用程序时因操作引起的失误
{
cout<<"认真一 46、点!(╰_╯)#"< 47、extern int t;
void Frame();
void Add_word();
void Add()
{
WoRD Word[100];
FILE *fp;
int i,j;
char ch='Q'; //用来判断是否继续输入单词
if((fp=fopen("dictionary.txt","ab+"))==NULL)
{
cout<<"文件无法打开!"< 48、d[i].num<<" "< 49、ite(&Word[j],sizeof(WoRD),1,fp);
cout<<"添加成功!是否继续增添单词,继续则输入Q/q"< 50、H"
extern int t;
void Test_ByOrder()
{
FILE *fp;
int i;
WoRD Word[100];
if((fp=fopen("dictionary.txt","ab+"))==NULL)
{
cout<<"文件无法打开!"<






