收藏 分销(赏)

c单词学习软件专业课程设计方案报告内附程序源代码.doc

上传人:w****g 文档编号:2727373 上传时间:2024-06-05 格式:DOC 页数:48 大小:281.04KB
下载 相关 举报
c单词学习软件专业课程设计方案报告内附程序源代码.doc_第1页
第1页 / 共48页
c单词学习软件专业课程设计方案报告内附程序源代码.doc_第2页
第2页 / 共48页
c单词学习软件专业课程设计方案报告内附程序源代码.doc_第3页
第3页 / 共48页
c单词学习软件专业课程设计方案报告内附程序源代码.doc_第4页
第4页 / 共48页
c单词学习软件专业课程设计方案报告内附程序源代码.doc_第5页
第5页 / 共48页
点击查看更多>>
资源描述

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

2、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 wordspublic:char english

3、20;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 void writefile(struc

4、t 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 wordsgame:wrongwords_sear

5、ch();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()、给出汉字写英文(对汉字单词进行翻译)game_tran

6、()、增加错误单词wrongwords_add()、查看错词本(里面全是game_tran()过程中翻译错了单词统计在里面)wrongwords_examine()、在错词本中查找犯错单词并统记犯错次数wrongwords_search()等组员函数及部分友元供调用函数。 具体设计: 描述系统各模块实现方法,程序步骤、系统界面等。(关键叙述自己具体设计)首先用户登入及系统界面模块经过类user来实现,用户先经过组员函数void user:userregister()ofstream llw;llw.open(f:user.txt,ios:app); if(find(username)=1)co

7、ut用户名已存在endl;exit(-1);elsellw.write(username,strlen(username);llw.put( );llw.write(password,strlen(password);llw.put(n);system(cls);coutnntttt注册成功!endl;注册一个自己号其中用户注册账号和密码用了一个txt格式文件user.txt来存放,然后输入注册了帐号和密码经过组员函数void user:userjudge()if(find(username)!=1)cout用户名不存在!endl;exit(-1);else if(find(username)

8、=1&find(password)!=2)cout用户密码错误!=1;i-) coutnnttt欢迎您使用该软件nttt 制作人:llwendl; coutnnnnnttt 初始化中.iendl; _sleep(500); system(cls); system(color 2b); /system(cls);/system(color 2b); coutnnnnnnnnttt初始化成功.!endl;_sleep(3000);/system(pause);来判定用户是否能够继续下面操作,假如判定经过则跳入到第一个主菜单custom()char user:custom() /主菜单界面char

9、A10;char b;char i;int k=0;system(cls);coutn ntt#ntt# 学习方法: #ntt# 1.单词操作 #ntt# 2.单词游戏 #ntt# 0.退出系统 #ntt#nendl;while(1)coutA;if(strlen(A)=1)for(i=0;i=2;i+)b=i;if(b=A0)return b;coutnttt输入有误!n4)system(cls);coutnnttt提醒:错误输入超出5次!您将被强制退出!nendl;/couttt按任意键继续endl;exit(-1);有二个选项分通向二个子菜单server1()char user:serv

10、er1()Char A10;Char b;char i;int k=0; system(cls);coutn ntt$ntt$ $ntt$ 功效 $ntt$ 1.中英文录入 $ntt$ 2.中英文删除 $ntt$ 3.中英文修改 $ntt$ 4.中英文翻译 $ntt$ 5.返回上一层菜单 $ntt$ 0.退出 $ntt$nendl;while(1)coutA;if(strlen(A)=1)for(i=0;i=5;i+)b=i;if(b=A0)return b;coutntttt输入有误!n4)cout错误输入超出5次!n;exit(-1);和server2()Char user:server2

11、() char A10;char b;char i;int k=0;system(cls);cout ntt$ntt$ 单词游戏 $ntt$ 1.给出英文选汉字 $ntt$ 2.给出汉字写英文 $ntt$ 3.查看错词本 $ntt$ 4.查找错误单词 $ntt$ 5.返回上一层菜单 $ntt$ 0.退出 $ntt$nendl;while(1)coutA;if(strlen(A)=1)for(i=0;i=5;i+)b=i;if(b=A0)return b;coutntttt输入有误!n4)cout错误输入超出5次!n;exit(-1);分别对应着其它二个模块;server1()界面对应着单词增删

12、改及翻译模块经过类words来实现,有单词增加、单词删除、单词修改及单词翻译功效;单词增加经过words_add()void words:words_add() char en20,ch40; cout请输入要添加英文单词和汉字意思ench; words_get(en,ch); ofstream llw; if(words_seek(english)=-1) llw.open(f:ciku.txt,ios:app,0); llw.write(english,strlen(english); llw.put( ); llw.write(chinese,strlen(chinese); llw.p

13、ut(n); llw.close(); cout单词添加成功endl; else cout要添加英文单词已存在,单词添加失败!endl;把用户输入要添加英文单词及汉字意思存入ciku.txt文件中,单词删除经过words_delete()void words:words_delete() /删除单词 /long z=0;/int j=0;char ch40;struct word *head,*p1,*p2; cout请输入要删除中英文单词ch; head=creat();p2=p1=head;if(strcmp(p1-yw,ch)=0|strcmp(p1-zw,ch)=0)head=p1-n

14、ext;while(p1!=NULL)if(strcmp(p1-yw,ch)=0|strcmp(p1-zw,ch)=0)coutyw:zwnext=p1-next;cout单词删除成功!next;if(p1=NULL)cout您要删除单词找不到!next=NULL; struct word *p2; p2=p1;fstream llw;llw.open(f:ciku.txt,ios:in|ios:out);if(!llw)coutyw,i);p1-ywi=0;z=z+i+1;i=words_long(z,n);llw.seekg(z,ios:beg); llw.read(p1-zw,i);p1

15、-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=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

16、:beg);p2-next=NULL;return head;创建一个链表并把ciku.txt文件里数据全存进链表里再从表里找到它删除该单词所在结点最终再经过调用writefile(struct 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

17、;把新链表写入ciku.txt文件中保留来完成,单词修改经过组员函数words_revise()void words:words_revise() long z=0;int k=0;char en40,ch40;struct word *head,*p1; cout请先输入要修改单词再输入要改为单词ench; /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)coutywchyw,ch);cout单词修改成功!e

18、ndl;elsecoutzwchzw,ch);cout汉字单词修改成功!next;if(p1=NULL) cout您要修改单词找不到!yw);strcpy(abc1,p-zw);break;p=p-next;elsep=p-next; coutabc1n请翻译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(a

19、bc1);llw.put( );llw.write(en,strlen(en);llw.put(n);cout错误单词已加入到错词本中endl;delete p;return 0;有三种翻译方法:中英文单词一翻译、单独翻译汉字单词和单独翻译英文单词。它依据用户选择和输入经过调用友元words_seek()直接在文件ciku.txt中寻求用户输入单词,再依据word_seek()返回值输出用户需要翻译来实现单词翻译等功效;Server2()界面对应着单词游戏模块经过类wordsgame来实现,有单词选择题(给出英文选汉字)game_abc()int wordsgame:game_abc() in

20、t 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(inext; else strcpy(abczwj,p-zw); strcpy(abcywj,p-yw); j+; p=p-next; i+; l=suiji(3); coutabcywl-1endl; for(int t=0;t3;t+) coutt+1.abczwt ; cout请输入你选择en; if(en=1&en=3) if(en=l) cout选择正

21、确endl; else cout选择错误!endl; else coutyw);strcpy(abc1,p-zw);break;p=p-next;elsep=p-next; coutabc1n请翻译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,st

22、rlen(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)couten:ch wrongwords:wrongnext;delete p;通调用wrongwords_creat()

23、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) coutcannot open the fileen,k);p1-enk=0;z=z+k+1;llw.seekg(z,ios:beg);k=wrongwords_long(z, );llw.read(p1-ch,k);p1-chk

24、=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, ); llw.read(p1-en,k); p1-enk=0; z=z+k+1; llw.seekg(z,ios:beg

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

26、h()char en20;char ch40;char wr2020;long z=0;struct wrongword *p;p=wrongwords_creat();cout请输入要差找单词en;while(p!=NULL)if(strcmp(p-en,en)=0)strcpy(ch,p-ch);strcpy(wrz,p-wrong);z+;p=p-next;cout查找完成!endl;if(z!=0) couten:chendl; coutwrongnum:zendl; /coutt wrongwords:; cout=1;z-) coutwrz-1 ;else coutn您要查找单词找

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

28、够把附录里面内容输进去,注意:内容末尾必需有且只有一个换行不然查找会犯错,然后能够打开exe应用程序先注册再登入,进入后自然会用。测试结果: 附录:源代码#include#include#include#include#include#include#include#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 use

29、rname20;char password20;user(char name,char mm); int find(char name);void userregister();void userjudge();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 ,char aa);friend lon

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服