c单词学习软件课程设计报告_第1页
c单词学习软件课程设计报告_第2页
c单词学习软件课程设计报告_第3页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

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

文档简介

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

2、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() 等成员函数 ; 再是对单词的一系列操作增删改及额外添加的翻译模块,这里设计了一个单词类 cla

3、ss words public: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();fr

4、iend 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_exami

5、ne();void wordsgame: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);主要有给出英文单词选中文(三选一)gam

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

7、lw;l lw.open("f:user.txt",ios:app);if(find(username)=1)cout<<" 用户名已存在 "<<endl;exit(-1);else llw.write(username,strlen(username); llw.put(' ');llw.write(password,strlen(password);llw.put('n'); system("cls"); cout<<"nntttt 注册成功 !&quo

8、t;<<endl;注册一个自己的号其中用户注册的账号和密码用了一个 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(&

9、quot;cls");for(int i=10;i>=1;i-)cout<<"nnttt 欢迎您使用该软件 "<<'n'<<"ttt 制作人 :llw"<<endl; cout<<"nnnnnttt 初始化中 "<<i<<endl;_sleep(500); system("cls"); system("color 2b");/system("cls");/sys

10、tem("color 2b"); cout<<"nnnnnnnnttt初始化成功 .!"<<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"

11、;<<"tt#学习方式 :#n"<<"tt#1.单词操作#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;cou

12、t<<"nttt 输入有误 !n"<<endl;k+;if(k>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

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

14、;<<"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)coutvv"错误输入超过5次!n"exit(-1);和 server2()Char user:server2(

15、)char A10;char b;char i;int k=0;system("cls");cout<<"n"<<"tt$n"<<"tt$单词游戏$n"<<"tt$1.给出英文选中文$n"<<"tt$2.给出中文写英文$n"<<"tt$3.查看错词本$n"<<"tt$4.查找错误单词$n"<<"tt$5.返回上一层菜单$n"

16、;<<"tt$0.退出$n"<<"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

17、);分别对应着其他二个模块; server1() 界面对应着单词的增删改及翻译模块通过类 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.t

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

19、ords_delete() void words:words_delete()/ 删除单词/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|

20、strcmp(p1->zw,ch)=0) cout<<p1->yw<<":"<<p1->zw<<endl; p2->next=p1->next; cout<<" 单词删除成功 !"<<endl; writefile(head);break;elsep2=p1; p1=p1->next; if(p1=NULL) cout<<" 您要删除的单词找不到 !"<<endl; 把用户要删除的单词先通过调用友元函数

21、creat() struct word *creat()/创建链表并把单词放入链表中int i=0; long z=0; char 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.

22、read(p1->yw,i);p1->ywi='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+;while(llw.get(ch)n+;if(n=1)head=p1;elsep2->next=p1;word *p1=new struct word;p1->next=NULL; p2->next=p1;p2=p1; i=words_long(z,' ')

23、; llw.seekg(z,ios:beg);llw.read(p1->yw,i);p1->ywi='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(str

24、uct word * )void writefile(struct word *head)struct word *p;ofstream 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 文件中保存来完成,单词的修改通过成员函数 wor

25、ds_revise() void words:words_revise()long z=0;int k=0;char en40,ch40;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

26、,en)=0) cout<<p1->yw<<"->"<<ch<<endl; strcpy(p1->yw,ch); cout<<" 单词修改成功 !"<<endl;else cout<<p1->zw<<"->"<<ch<<endl; strcpy(p1->zw,ch); cout<<" 中文单词修改成功 !"<<endl;writefile

27、(head); break;else p1=p1->next; if(p1=NULL) cout<<" 您要修改的单词找不到 !"<<endl;把用户输入的要修改的单词通过调用友元创建链表把 ciku.txt 里的数据存进链表中再通过对链表的操 作查找找到它并把它改为用户需要改为的单词再通过调用友元函数 writefile() 再把链表写回 ciku.txt 文件中来完成;单词翻译 words_translate()int wordsgame:game_tran()int i=0,k,m;char en20; struct word *p;ch

28、ar abc240; p=creat();m=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<<" 翻译正确 "&l

29、t;<endl;elsecout<<" 翻译错误 "<<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<<" 错误的单词已加入到错词本中 "<<e

30、ndl;delete p; return 0;有三种翻译方式: 中英文单词一翻译、 单独翻译中文单词和单独翻译英文单词。 它根据用户的选择和输 入通过调用友元 words_seek() 直接在文件 ciku.txt 中寻找用户输入的单词,再根据 word_seek() 的返 回值输出用户需要的翻译来实现单词的翻译等功能的;Server2() 界面对应着单词游戏模块通过类 wordsgame 来实现,有单词选择题(给出英文选中文) game_abc()int wordsgame:game_abc()int k;int en;char abczw340,abcyw320;struct word *

31、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;elsestrcpy(abczwj,p->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<

32、<" 请输入你的选择 "<<endl; cin>>en;if(en>=1&&en<=3)if(en=l)cout<<" 选择正确 "<<endl; else cout<<" 选择错误 !"<<endl; elsecout<<" 输入错误 "delete p;return l; 通过调用随机函数产生随机数来输出随机数在链表结点中对应的三个单词再根据判断用户输入的正确 与否来实现单词的选择,给出中文写英

33、文 game_tran()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(abc1,p->zw);break; p=p->next;elsep=p->next;cout<<abc1<<'n'<<"请翻译 "<<endl;cin>&g

34、t;en;/game_get(en); if(strcmp(abc0,en)=0) cout<<" 翻译正确 "<<endl;elsecout<<" 翻译错误 "<<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,strle

35、n(en);llw.put('n');cout<<" 错误的单词已加入到错词本中 "<<endl;delete p;return 0;通过调用随机函数来随机的读取链表结点中的中文单词再判断用户的输入与否, 若否则把错误和对应的 正确中英文单词一起存入错词本 wrongwords.txt 中,查看错词本 game_examine()void wordsgame:wrongwords_examine()struct wrongword *p;p=wrongwords_creat();while(p!=NULL)cout<<p-

36、>en<<":"<<p->ch<<" "<<"wrongwords:"<<p->wrong<<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 *

37、head,*p2;p2=p1;ifstream llw("f:wrongwords.txt");if(!llw) cout<<"cannot open the file"<<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->

38、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;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,&#

39、39; ');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,k);p1->wrongk='0'z=z+k+2;llw.seekg(z,ios:beg

40、);p2->next=NULL;llw.close();return head; 创建一个链表并把错词本中的数据存入其中再读取链表中的数据输出到屏幕上,查找错误单词 wrongwords_serach()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(

41、strcmp(p->en,en)=0)strcpy(ch,p->ch); strcpy(wrz,p->wrong); z+;p=p->next;cout<<" 查找完毕 !"<<endl;if(z!=0)cout<<en<<":"<<ch<<endl; cout<<"wrongnum:"<<z<<endl;/cout<<"t wrongwords:"cout<<

42、"wrongword:"for(;z>=1;z-) cout<<wrz-1<<" "else cout<<"n 您要查找的单词找不到! "<<endl;cout<<endl;delete p;/delete wr;通过调用 wrongwords_creat() 创建链表读取错词本 wrongwords.txt 中全部数据根据用户的输入单词与 链表中的每个结点中的英文单词一个个对比是否相同,是就输出该结点等功能。调试分析: 调试过程中经常会应为程序太长,找不出错误在哪里,

43、后我我学会了把程序分割成成一个个小函 数再调出来调试, 虽然可能你觉得这方法很复杂化, 但是只要你掌握了分割技巧就会觉得简单而且效率 高,百分百的能找到出错的地方。用户使用说明:先在 目录下创建三个 txt 文件分别为 user.txt 、ciku.txt 、wrongwords.txt 至于内容可以把附 录里面的内容输进去, 注意:内容末尾必须有且只有一个换行不然查找会出错, 然后可以打开 exe 应用 程序先注册再登入,进入后自然会用。测试结果:写 $ An於 录®层$ 也和口即- $ 11 二一LJ_-一 雯文文文上$ 宜央英英英回岀$ 返退$ $ 12 3 4 5 0$ $

44、$请选择操作方式:丄V :someone冲y/nnanharVIII ° II a 11M 录层 雯文文文上. 丈央英英英回出$ 口口口 口返退$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ 12 3 4 5 0$ $请输入要添加的英交瞬制翁贏:somebody1 Itd A 里词j忝旭成功車否继如»r fti冃舖译nineB正确任鸞键继续$单就戏寸给出黄文选中文$2卷出巳裒写英文53 番着甘词本$乩查扳错误单词$筑返回上一层菜单$眄.退岀请选择操作方式汐E:U se rsA d mini strato rDe 5 kto pll w_( e

45、:果设(5. exe$ $ $ $ $ $ $S1门央X0W人2 门央文的血|除3心英文的修改4需英文的肃译 乩返向上一层奈单眄.退出爲备单词请选扌戦 请先输入要修改的单词再爺 sonkehodsontDonesomebody>someone$ $ $ $ $ $ $ $拈$轉於专$轉$轉$轉$夕 $附录:源代码#include<iostream.h> #include<fstream.h> #include<string.h> #include<stdlib.h> #include<stdio.h> #include<t

46、ime.h> #include<ctype.h> #define NULL 0int n;struct 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 user

47、judge();char custom();char server1();char server2();friend 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

48、,char aa); friend long words_seek(char ch);friend int words_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 wor

49、dsgame: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);int user_long(long z,char aa)

50、int i=0;char bb;ifstream llw("f:user.txt");llw.seekg(z,ios:beg);dollw.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<<" 用户名不存在 !"&

51、lt;<endl; exit(-1);else if(find(username)=1&&find(password)!=2) cout<<" 用户密码错误 exit(-1);else system("cls"); for(int i=10;i>=1;i-) cout<<"nnttt cout<<"nnnnnttt _sleep(500); system("cls");system("color 2b");/system("cls&

52、quot;);/system("color 2b"); cout<<"nnnnnnnnttt _sleep(3000);/system("pause");int user:find(char name)char hh;char na20,na220;long z=0,k=0; ifstream us("f:user.txt"); if(!us)!"<<endl;欢迎您使用该软件 "<<'n'<<"ttt初始化中 "<

53、<i<<endl;初始化成功 .!"<<endl;/制作人 :llw"<<endl;查找用户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=

54、'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<<" 用户名已存在 "<<endl;exit(-1);elsellw.write(u

55、sername,strlen(username); llw.put(' '); llw.write(password,strlen(password); llw.put('n');system("cls");cout<<"nntttt 注册成功 !"<<endl; 主菜单界面char user:custom()/char A10;char b;char i;int k=0; system("cls"); cout<<"n n"<<&qu

56、ot;tt#n"<<"tt#学习方式 :#n"<<"tt#1.单词操作#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)

57、return b;cout<<"nttt 输入有误 !n"<<endl;k+;if(k>4)system("cls");cout<<"nnttt 提示:错误输入超过 5 次! 您将被强制退出 !n"<<endl; /cout<<"tt 按任意键继续 "<<endl;exit(-1);单词操作界面char user:server1() /char A10;char b;char i;int k=0;system("cls"

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

59、<"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+;cout«"tt请选择学习方式:"cin»A;if(strlen(A)=1)for(i='0'i<=,2,;i+)b=i;if(b=AO)return b;cout«"nttt 输入有误!n"«endl;k+;if(k>4)system("cls");cou

温馨提示

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

评论

0/150

提交评论