c++单词学习软件课程设计报告(内附程序源代码)_第1页
c++单词学习软件课程设计报告(内附程序源代码)_第2页
c++单词学习软件课程设计报告(内附程序源代码)_第3页
c++单词学习软件课程设计报告(内附程序源代码)_第4页
c++单词学习软件课程设计报告(内附程序源代码)_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精选优质文档-倾情为你奉上课程设计报告 需求分析: 题目:单词学习软件单词(中英文)录入、修改、删除管理、提供多种(至少三种、例如,给出英文选中文,给出中文写英文等)单词学习方法以,对出错单词能够进行查询、统计、排序。首先它是个软件要有登入用户,其次要有对单词的操作(增删改),再是单词学习方法三种以上以及对学习方法过程中出错的单词能够进行存储查询、统计、排序等。概要设计:整个系统分为三大模块,先是用户登入模块供用户登入还包括了整个系统的界面的设计,这里设了一个用户类class userpublic:char username20;char password20;user(char name,c

2、har mm); int find(char name);void userregister();void userjudge();char custom();char server1();char server2();friend char continueif();friend int user_long(long ,char );主要有用户注册userregister()、用户判断userjudge(),第一个主菜单界面custom()、二个子菜单界面server1()server2()等成员函数;再是对单词的一系列操作增删改及额外添加的翻译模块,这里设计了一个单词类class word

3、spublic:char english20;char chinese40;void words_get(char en,char ch);void words_add();void words_delete();void words_revise();void words_translate(); friend int words_long(long ,char aa);friend long words_seek(char ch); friend int words_long2(long ,char aa); /倒数friend struct word * creat(); friend

4、void writefile(struct word * );主要有单词增加words_add()、单词删除words_delete()、单词修改words_revise()、单 词翻译words_translate()等成员函数及一些友元函数;最后一个模块是单词学习方法,这里设计了个单词游戏类class wordsgamepublic:void game_get(char en);int game_abc();int game_tran();void game_judge();void wrongwords_add();void wrongwords_examine();void words

5、game:wrongwords_search();struct wrongword *wrongwords_creat();friend long wrongwords_seek(char en);friend int words_long(long ,char );friend int wrongwords_long(long ,char aa);friend struct word *creat(); friend void print(struct word * );friend int suiji(int num);主要有给出英文单词选中文(三选一)game_abc()、给出中文写英文

6、(对中文单词进行翻译)game_tran()、增加错误单词wrongwords_add()、查看错词本(里面全是game_tran()过程中翻译错了的单词记录在里面)wrongwords_examine()、在错词本中查找出错单词并统记出错次数wrongwords_search()等成员函数及一些友元供调用的函数。 详细设计: 描述系统各模块的实现方法,程序流程、系统界面等。(重点叙述自己的详细设计)首先用户登入及系统界面模块通过类user来实现的,用户先通过成员函数void user:userregister()ofstream llw;llw.open("f:user.txt&q

7、uot;,ios:app); if(find(username)=1)cout<<"用户名已存在"<<endl;exit(-1);elsellw.write(username,strlen(username);llw.put(' ');llw.write(password,strlen(password);llw.put('n');system("cls");cout<<"nntttt注册成功!"<<endl;注册一个自己的号其中用户注册的账号和密码用了一

8、个txt格式的文件user.txt来存储的,然后输入注册了的帐号和密码通过成员函数void user:userjudge()if(find(username)!=1)cout<<"用户名不存在!"<<endl;exit(-1);else if(find(username)=1&&find(password)!=2)cout<<"用户密码错误!"<<endl;exit(-1);elsesystem("cls");for(int i=10;i>=1;i-) cout&l

9、t;<"nnttt欢迎您使用该软件"<<'n'<<"ttt 制作人:llw"<<endl; cout<<"nnnnnttt 初始化中."<<i<<endl; _sleep(500); system("cls"); system("color 2b"); /system("cls");/system("color 2b"); cout<<"nn

10、nnnnnnttt初始化成功.!"<<endl;_sleep(3000);/system("pause");来判定用户是否可以继续下面的操作,如果判定通过则跳入到第一个主菜单custom()char user:custom() /主菜单界面char A10;char b;char i;int k=0;system("cls");cout<<"n n"<<"tt#n"<<"tt# 学习方式: #n"<<"tt# 1.单

11、词操作 #n"<<"tt# 2.单词游戏 #n"<<"tt# 0.退出系统 #n"<<"tt#n"<<endl;while(1)cout<<"tt请选择学习方式:"cin>>A;if(strlen(A)=1)for(i='0'i<='2'i+)b=i;if(b=A0)return b;cout<<"nttt输入有误!n"<<endl;k+;if(k>

12、;4)system("cls");cout<<"nnttt提示:错误输入超过5次!您将被强制退出!n"<<endl;/cout<<"tt按任意键继续"<<endl;exit(-1);有二个选项分通向二个子菜单server1()char user:server1()Char A10;Char b;char i;int k=0; system("cls");cout<<"n n"<<"tt$n"<<

13、;"tt$ $n"<<"tt$ 功能 $n"<<"tt$ 1.中英文的录入 $n"<<"tt$ 2.中英文的删除 $n"<<"tt$ 3.中英文的修改 $n"<<"tt$ 4.中英文的翻译 $n"<<"tt$ 5.返回上一层菜单 $n"<<"tt$ 0.退出 $n"<<"tt$n"<<endl;while(1)

14、cout<<"tt 请选择操作方式:"cin>>A;if(strlen(A)=1)for(i='0'i<='5'i+)b=i;if(b=A0)return b;cout<<"ntttt输入有误!n"<<endl;k+;if(k>4)cout<<"错误输入超过5次!n"exit(-1);和server2()Char user:server2() char A10;char b;char i;int k=0;system("c

15、ls");cout<<" n"<<"tt$n"<<"tt$ 单词游戏 $n"<<"tt$ 1.给出英文选中文 $n"<<"tt$ 2.给出中文写英文 $n"<<"tt$ 3.查看错词本 $n"<<"tt$ 4.查找错误单词 $n"<<"tt$ 5.返回上一层菜单 $n"<<"tt$ 0.退出 $n"&

16、lt;<"tt$n"<<endl;while(1)cout<<"tt 请选择操作方式:"cin>>A;if(strlen(A)=1)for(i='0'i<='5'i+)b=i;if(b=A0)return b;cout<<"ntttt输入有误!n"<<endl;k+;if(k>4)cout<<"错误输入超过5次!n"exit(-1);分别对应着其他二个模块;server1()界面对应着单词的增删

17、改及翻译模块通过类words来实现,有单词的增加、单词的删除、单词的修改及单词的翻译功能;单词的增加通过words_add()void words:words_add() char en20,ch40; cout<<"请输入要添加的英文单词和中文意思"<<endl; cin>>en>>ch; words_get(en,ch); ofstream llw; if(words_seek(english)=-1) llw.open("f:ciku.txt",ios:app,0); llw.write(englis

18、h,strlen(english); llw.put(' '); llw.write(chinese,strlen(chinese); llw.put('n'); llw.close(); cout<<"单词添加成功"<<endl; else cout<<"要添加的英文单词已存在,单词添加失败!"<<endl;把用户输入的要添加的英文单词及中文意思存入ciku.txt文件中,单词的删除通过words_delete()void words:words_delete() /删除单

19、词 /long z=0;/int j=0;char ch40;struct word *head,*p1,*p2; cout<<"请输入要删除的中英文单词"<<endl; cin>>ch; head=creat();p2=p1=head;if(strcmp(p1->yw,ch)=0|strcmp(p1->zw,ch)=0)head=p1->next;while(p1!=NULL)if(strcmp(p1->yw,ch)=0|strcmp(p1->zw,ch)=0)cout<<p1->yw&l

20、t;<":"<<p1->zw<<endl;p2->next=p1->next;cout<<"单词删除成功!"<<endl;writefile(head);break;elsep2=p1;p1=p1->next;if(p1=NULL)cout<<"您要删除的单词找不到!"<<endl;把用户要删除的单词先通过调用友元函数creat()struct word *creat()/创建链表并把单词放入链表中int i=0;long z=0;c

21、har ch;n=0;struct word *head;word *p1=new struct word;p1->next=NULL; struct word *p2; p2=p1;fstream llw;llw.open("f:ciku.txt",ios:in|ios:out);if(!llw)cout<<"cannot open output" i=words_long(z,' ');llw.read(p1->yw,i);p1->ywi='0'z=z+i+1;i=words_long(z

22、,'n');llw.seekg(z,ios:beg); llw.read(p1->zw,i);p1->zwi='0'z=z+i+1;z+;while(llw.get(ch) n+;if(n=1)head=p1;else p2->next=p1;word *p1=new struct word;p1->next=NULL; p2->next=p1;p2=p1;i=words_long(z,' ');llw.seekg(z,ios:beg); llw.read(p1->yw,i); p1->ywi='

23、0' z=z+i+1; i=words_long(z,'n'); llw.seekg(z,ios:beg); llw.read(p1->zw,i); p1->zwi='0'z=z+i+1; z+;llw.seekg(z,ios:beg);p2->next=NULL;return head;创建一个链表并把ciku.txt文件里的数据全存进链表里再从表里找到它删除该单词所在结点最后再通过调用writefile(struct word * )void writefile(struct word *head)struct word *p;of

24、stream llw("f:ciku.txt");p=head;while(p!=NULL)llw.write(p->yw,strlen(p->yw);llw.put(' ');llw.write(p->zw,strlen(p->zw);llw.put('n');p=p->next;delete p,head;把新链表写入ciku.txt文件中保存来完成,单词的修改通过成员函数words_revise()void words:words_revise() long z=0;int k=0;char en40,ch

25、40;struct word *head,*p1; cout<<"请先输入要修改的单词再输入要改为的单词"<<endl; cin>>en>>ch; /words_get(en,ch);head=creat();p1=head;while(p1!=NULL)if(strcmp(p1->yw,en)=0|strcmp(p1->zw,en)=0)if(strcmp(p1->yw,en)=0)cout<<p1->yw<<"->"<<ch<<

26、;endl;strcpy(p1->yw,ch);cout<<"单词修改成功!"<<endl;elsecout<<p1->zw<<"->"<<ch<<endl;strcpy(p1->zw,ch);cout<<"中文单词修改成功!"<<endl;writefile(head);break;else p1=p1->next;if(p1=NULL) cout<<"您要修改的单词找不到!"

27、<<endl;把用户输入的要修改的单词通过调用友元创建链表把ciku.txt里的数据存进链表中再通过对链表的操作查找找到它并把它改为用户需要改为的单词再通过调用友元函数writefile()再把链表写回ciku.txt文件中来完成;单词翻译words_translate()int wordsgame:game_tran() int i=0,k,m;char en20;struct word *p;char abc240;p=creat(); m=n+1;k=suiji(m);while(p!=NULL)i+;if(i=k)strcpy(abc0,p->yw);strcpy(a

28、bc1,p->zw);break;p=p->next;elsep=p->next; cout<<abc1<<'n'<<"请翻译"<<endl;cin>>en;/game_get(en);if(strcmp(abc0,en)=0) cout<<"翻译正确"<<endl;elsecout<<"翻译错误"<<endl;ofstream llw("f:wrongwords.txt",

29、ios:app);llw.write(abc0,strlen(abc0);llw.put(' ');llw.write(abc1,strlen(abc1);llw.put(' ');llw.write(en,strlen(en);llw.put('n');cout<<"错误的单词已加入到错词本中"<<endl;delete p;return 0;有三种翻译方式:中英文单词一翻译、单独翻译中文单词和单独翻译英文单词。它根据用户的选择和输入通过调用友元words_seek()直接在文件ciku.txt中寻找

30、用户输入的单词,再根据word_seek()的返回值输出用户需要的翻译来实现单词的翻译等功能的;Server2()界面对应着单词游戏模块通过类wordsgame来实现,有单词选择题(给出英文选中文)game_abc()int wordsgame:game_abc() int k; int en; char abczw340,abcyw320; struct word *p; int i=1,j=0,l=0; p=creat(); n=n+1; k=suiji(n-2); while(i<=k+2) if(i<k) p=p->next; else strcpy(abczwj,p

31、->zw); strcpy(abcywj,p->yw); j+; p=p->next; i+; l=suiji(3); cout<<abcywl-1<<endl; for(int t=0;t<3;t+) cout<<t+1<<"."<<abczwt<<' ' cout<<"请输入你的选择"<<endl; cin>>en; if(en>=1&&en<=3) if(en=l) cout

32、<<"选择正确"<<endl; else cout<<"选择错误!"<<endl; else cout<<"输入错误" delete p; return l; 通过调用随机函数产生随机数来输出随机数在链表结点中对应的三个单词再根据判断用户输入的正确与否来实现单词的选择,给出中文写英文game_tran()int wordsgame:game_tran() int i=0,k,m;char en20;struct word *p;char abc240;p=creat(); m

33、=n+1;k=suiji(m);while(p!=NULL)i+;if(i=k)strcpy(abc0,p->yw);strcpy(abc1,p->zw);break;p=p->next;elsep=p->next; cout<<abc1<<'n'<<"请翻译"<<endl;cin>>en;/game_get(en);if(strcmp(abc0,en)=0) cout<<"翻译正确"<<endl;elsecout<<&

34、quot;翻译错误"<<endl;ofstream llw("f:wrongwords.txt",ios:app);llw.write(abc0,strlen(abc0);llw.put(' ');llw.write(abc1,strlen(abc1);llw.put(' ');llw.write(en,strlen(en);llw.put('n');cout<<"错误的单词已加入到错词本中"<<endl;delete p;return 0;通过调用随机函数来随

35、机的读取链表结点中的中文单词再判断用户的输入与否,若否则把错误和对应的正确中英文单词一起存入错词本wrongwords.txt中,查看错词本game_examine()void wordsgame:wrongwords_examine()struct wrongword *p;p=wrongwords_creat();while(p!=NULL)cout<<p->en<<":"<<p->ch<<" "<<"wrongwords:"<<p->wro

36、ng<<endl;p=p->next;delete p;通调用wrongwords_creat()struct wrongword * wordsgame:wrongwords_creat()char hh;long z=0;int r=0,k=0; wrongword *p1=new struct wrongword;struct wrongword *head,*p2;p2=p1;ifstream llw("f:wrongwords.txt");if(!llw) cout<<"cannot open the file"&

37、lt;<endl; llw.seekg(z,ios:beg);k=wrongwords_long(z,' ');llw.read(p1->en,k);p1->enk='0'z=z+k+1;llw.seekg(z,ios:beg);k=wrongwords_long(z,' ');llw.read(p1->ch,k);p1->chk='0'z=z+k+1;llw.seekg(z,ios:beg);k=wrongwords_long(z,'n');llw.read(p1->wrong

38、,k);p1->wrongk='0' z=z+k+2;while(llw.get(hh)r+;llw.seekg(z,ios:beg);if(r=1) head=p1;wrongword *p1=new struct wrongword;p1->next=NULL;p2->next=p1;p2=p1;k=wrongwords_long(z,' '); llw.read(p1->en,k); p1->enk='0' z=z+k+1; llw.seekg(z,ios:beg); k=wrongwords_long(z,&

39、#39; '); llw.read(p1->ch,k); p1->chk='0' z=z+k+1; llw.seekg(z,ios:beg); k=wrongwords_long(z,'n'); llw.read(p1->wrong,k); p1->wrongk='0'z=z+k+2;llw.seekg(z,ios:beg);p2->next=NULL;llw.close();return head;创建一个链表并把错词本中的数据存入其中再读取链表中的数据输出到屏幕上,查找错误单词wrongwords_ser

40、ach()void wordsgame:wrongwords_search()char en20;char ch40;char wr2020;long z=0;struct wrongword *p;p=wrongwords_creat();cout<<"请输入要差找的单词"<<endl;cin>>en;while(p!=NULL)if(strcmp(p->en,en)=0)strcpy(ch,p->ch);strcpy(wrz,p->wrong);z+;p=p->next;cout<<"查找

41、完毕!"<<endl;if(z!=0) cout<<en<<":"<<ch<<endl; cout<<"wrongnum:"<<z<<endl; /cout<<"t wrongwords:" cout<<"wrongword:" for(;z>=1;z-) cout<<wrz-1<<" "else cout<<"n您

42、要查找的单词找不到!"<<endl;cout<<endl;delete p;/delete wr;通过调用wrongwords_creat()创建链表读取错词本wrongwords.txt中全部数据根据用户的输入单词与链表中的每个结点中的英文单词一个个对比是否相同,是就输出该结点等功能。调试分析: 调试过程中经常会应为程序太长,找不出错误在哪里,后我我学会了把程序分割成成一个个小函数再调出来调试,虽然可能你觉得这方法很复杂化,但是只要你掌握了分割技巧就会觉得简单而且效率高,百分百的能找到出错的地方。用户使用说明: 先在f:目录下创建三个txt文件分别为user

43、.txt、ciku.txt、wrongwords.txt 至于内容可以把附录里面的内容输进去,注意:内容末尾必须有且只有一个换行不然查找会出错,然后可以打开exe应用程序先注册再登入,进入后自然会用。测试结果: 附录:源代码#include<iostream.h>#include<fstream.h>#include<string.h>#include<stdlib.h>#include<stdio.h>#include<time.h>#include<ctype.h>#define NULL 0int n;s

44、truct wordchar yw20;char zw80; struct word *next;struct wrongwordchar en20;char ch40;char wrong20;struct wrongword *next;class userpublic:char username20;char password20;user(char name,char mm); int find(char name);void userregister();void userjudge();char custom();char server1();char server2();frie

45、nd char continueif();friend int user_long(long ,char );class wordspublic:char english20;char chinese40;void words_get(char en,char ch);void words_add();void words_delete();void words_revise();void words_translate(); friend int words_long(long ,char aa);friend long words_seek(char ch); friend int wor

46、ds_long2(long ,char aa); /倒数friend struct word * creat(); friend void writefile(struct word * );class wordsgamepublic:void game_get(char en);int game_abc();int game_tran();void game_judge();void wrongwords_add();void wrongwords_examine();void wordsgame:wrongwords_search();struct wrongword *wrongword

47、s_creat();friend long wrongwords_seek(char en);friend int words_long(long ,char );friend int wrongwords_long(long ,char aa);friend struct word *creat(); friend void print(struct word * );friend int suiji(int num);int user_long(long z,char aa) int i=0; char bb; ifstream llw("f:user.txt"); l

48、lw.seekg(z,ios:beg); do llw.seekg(z+i,ios:beg); llw.get(bb); i+; while(bb!=aa); llw.close(); return i-1;user:user(char name,char mm)strcpy(username,name); strcpy(password,mm);void user:userjudge()if(find(username)!=1)cout<<"用户名不存在!"<<endl;exit(-1);else if(find(username)=1&&

49、amp;find(password)!=2)cout<<"用户密码错误!"<<endl;exit(-1);elsesystem("cls");for(int i=10;i>=1;i-) cout<<"nnttt欢迎您使用该软件"<<'n'<<"ttt 制作人:llw"<<endl; cout<<"nnnnnttt 初始化中."<<i<<endl; _sleep(500

50、); system("cls"); system("color 2b"); /system("cls");/system("color 2b"); cout<<"nnnnnnnnttt初始化成功.!"<<endl;_sleep(3000);/system("pause");int user:find(char name) /查找用户char hh;char na20,na220;long z=0,k=0;ifstream us("f:user

51、.txt");if(!us)cout<<"cannot open"us.seekg(z,ios:beg);while(us.get(hh)us.seekg(z,ios:beg);k=user_long(z,' '); us.read(na,k);nak='0'z=z+k+1;k=user_long(z,'n');us.seekg(z,ios:beg);us.read(na2,k);na2k='0'z=z+k+1;if(strcmp(na,name)=0)return 1;else if(strcmp(na2,name)=0)return 2;elsez+;us.seekg(z,ios:beg);us.close();return 0;void user:userregister()ofstream llw;llw.open("f:user.txt",ios:app); if(find(username)=1)cout<<"用户名已存在"&l

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论