ImageVerifierCode 换一换
格式:DOCX , 页数:15 ,大小:30.87KB ,
资源ID:6735620      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-6735620.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(网络电子词典实习报告.docx)为本站会员(b****3)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

网络电子词典实习报告.docx

1、网络电子词典实习报告大学计算机学院毕业实习成绩鉴定表姓名班级学号实习时间学生实际实习内容:在本次实训中,我们学习到了很多的知识,包括 shell编程、文件IO、 Linux网络编程、sqlite数据库等众多的知识点。最后以项目网络电子词典贯穿整 个知识点,把我们所学的内容都应用起来。达到了活学活用的效果。出勤情 况迟到次早退次旷工天病假天事假天全勤天实习单位鉴定意见:单位(盖章):R 月 日指导教师评定实习报告成绩:签名:R 月 日评阅教师评定实习成绩:签名:R 月 日计算机科学与技术学院2011级学生毕业实习报告专 业: 班 级: 姓 名: 指导教师: 实习单位: 实习时间: 网络电子词典项

2、目编写时间:作者:版本:v-1.0.01.1引言二十世界后半叶,伴随着社会的迅速发展与进步,以电子计算机为代表的现代科学技术获得了突飞猛进的发展并迅速和人们的日常生活结合在一起。 计算机技术的发展和进步也使电子词典的诞生变得可能。虽然只有十来年的历史,电子 词典却已经迅速发展壮大,成为词典家族中具有生命力的一员。本系统是一个网络电子词典,主要功能是为用户提供一个能实现查询用户注 册,用户登陆和查询单词机查询历史记录等功能。本文从项目的角度进行了简单 的描述。该系统是基丁 Linux系统下里利用了网络的基本知识,及 sqlite 数据 库的相关知识。1.2背景任何一种词语,使用频率高了,就会成为

3、公共词汇。英语作为一种国际通用 性语言,部分单词已成为公共词汇,并且直接应用到汉语中来。因其表达简洁, 准确而受到人们宵睐。但是,这些新引入或者比较专业词汇,对丁较少关注新闻, 接触网络的群体而言,就会造成阅读困难。传统的纸质英汉词典因为更新周期久, 携带不便,价格相对昂贵而不能广泛应用。方便,高效,快捷的电子词典才能满 足现代人的需要。1.3参考资料名称作者出版社Unix网络编程W.Richard Stevens Bill FennerAndrew M.RudoffTCP/IP协议详解Gary.Wrigh W.Richard Stevens机械工业出版社Unix高级环境编程William R

4、ichard Stevens人民邮电出版社本者能版作功二、系统概述我们的这套系统采用的是tcp协议的并发服务器设计,可以满足多用户同时登录,用户登录后可以查询单词及历史记录,对丁数据的存储我们采用的是 sql数据库技术,查找快速,保密性好! 具体功能能如下:1主界面(1)用户登录(2)用户注册(3)用户退出在线辞典1登录2注册3主意退&:用户只有登录成功后才能进入奁单词界面2登陆成功后界面(1)查询单词(2)查询历史(3)退出Ejk1查询单词Z查询用史3退出拓扑结构如下客户端1客户端2四、详细设计4.1消息类型设计宏名设计说明USER_REGISTER用户注册USER_LOGIN用户登陆USE

5、R_WORD用户查询单词USER_SUCCESS操作成功UNAME_ERROR无此用户PASSWD_ERROR密码错误USER_FAILURE操作失败4.2结构体的设计注:_attribute_(_packed_表示取消结构体对齐 typedef struct(char _username25; 用户名char _word25; 密码 _attribute_(_packed_)user_t;typedef struct(int typed;int size;union(user_t uinfo; 用户信息 char _word100; 客户端填词,服务端填写单词解释#define word c

6、ontent._word#define username content.uinfo._username#define password content.uinfo._passwd_attribute_(_packed_)mhead_t;#define EXEC_SQL(db,sql,errmsg) doif(sqlite3_exec(db,sql,NULL,NULL,&merrmsg) 0)P _ “ ,fprintf(stderr, “sqlite exec %serror : %sn,sql,errmsg); exit(EXIT_FAILURE);while(0);4.3数据库设计表名字

7、段user_tableNAMEPASSWORDdict_tablewordexplain4.4部分核心代码1)服务器端登陆处理函数int do_login(int sockfd,sqlite3*pdb,char*_username,char*_password)一 一 一char *errmsg;char buf1024;char *dbresult;int nrow,ncolumn;char sql1024 = 0;mhead_t *head = (mhead_t *)buf;/const char*sql=select * from user_table where NAME=%s and

8、 PASSWORD=%s;sprintf(sql,select * from user_table where NAME=%s and PASSWORD=%s;,_username,_password);if(sqlite3_get_table(pdb,sql,&dbresult,&nrow,&ncolumn,&errmsg)!=SQLITE_O K)fprintf(stderr,sqlite3 get table error : %s.n,errmsg); exit(EXIT_FAILURE);if(nrowtype = USER_FAILURE;if(send(sockfd,buf,siz

9、eof(mhead_t),0) type = USER_LOGIN;if(send(sockfd,buf,sizeof(mhead_t),0) 0)perror(Fail to send);exit(EXIT_FAILURE);/printf(?n);sqlite3_free_table(dbresult);return 0;单词查询函数int do_query(int sockfd,sqlite3* pdb,char*_word)char*errmsg;char danci1024;char*dbresult;int nrow,ncolumn;char sql1024=0;mhead_t *

10、head=(mhead_t*)danci;int i = 0,j = 0;sprintf(sql,select* from dict_table where word=%s;,_word);if(sqlite3_get_table(pdb,sql,&dbresult,&nrow,&ncolumn,&errmsg)!=SQLITE_OK)fprintf(stderr,sqlite3 get table error:%sn,errmsg);exit(EXIT_FAILURE);int index = ncolumn;for(i = 0;i nrow;i+)for(j = 0;j word,%s,d

11、bresult3);printf(result : %sn,head-word);if(nrow = 0)bzero(sql,sizeof(sql);if(send(sockfd,danci,sizeof(mhead_t),0)0)perror(Fail to send);exit(EXIT_FAILURE);printf(没有查处此单词);elseif(send(sockfd,danci,sizeof(mhead_t),0)0)perror(Fail to send);exit(EXIT_FAILURE);sqlite3_free_table(dbresult);return 0;绑定套接字

12、,连接IP端口int init_tcp(char *ip,char *port)int sockfd;struct sockaddr_in server_addr;if(sockfd = socket(AF_INET,SOCK_STREAM,0) 0) perror(Fail to socket);exit(EXIT_FAILURE);bzero(&server_addr,sizeof(server_addr);server_addr.sin_family = AF_INET;server_addr.sin_port = htons(atoi(port);server_addr.sin_add

13、r.s_addr = inet_addr(ip);if(bind(sockfd,(struct sockaddr *)&server_addr,sizeof(server_addr) type = USER_LOGIN;head-size = sizeof(mhead_t);printf(Input username :);fgets(head-username,sizeof(head-username),stdin);head-usernamestrlen(head-username) - 1 = 0;printf(Input password :);fgets(head-password,

14、sizeof(head-password),stdin);head-passwordstrlen(head-password) - 1 = 0;if(send(sockfd,buf,sizeof(mhead_t),0) 0)perror(Fail to send);exit(EXIT_FAILURE);bzero(&buf,sizeof(buf);while(1)n = recv(sockfd,buf + count,sizeof(mhead_t) - count,0);if(n type = USER_LOGIN)printf(n恭喜您,登陆成功!n);return 0;elseprintf

15、(n很遗憾,登录失败,请重新登陆n);/printf(n);return -1;return 0;单词查询函数int do_query(int sockfd) int n=0,count=0;char buf1024;/ char yisi1024;FILE*fp;int i = 0;printf(n请输入你要查询的单词);mhead_t *head=(mhead_t *)buf;fp=fopen(log.txt”,a+);if(fp = NULL)fprintf(stderr,Fail to open : %sn”,strerror(errno);exit(EXIT_FAILURE);int

16、 line=get_line(fp);time_t t;/可能需要加头文件struct tm *ptm;t=time(NULL);ptm=localtime(&t);/printf(%sn,head-word);/fprintf(fp,”%d,%sn”,+line,head-word);head-type=USER_WORD;head-size=sizeof(mhead_t);fgets(head-word,sizeof(head-word),stdin);head-wordstrlen(head-word)-1=0;fprintf(fp,%d ,%s: ,+line,head-word);i

17、f(send(sockfd,buf,sizeof(mhead_t),0)0) _perror(Fail to send);exit(EXIT_FAILURE);bzero(buf,sizeof(buf);n=recv(sockfd,buf,sizeof(mhead_t),0);if(nword,ptm-tm_year+1900,ptm-tm_ mon,ptm-tm_mday,ptm-tm_hour,ptm-tm_min,ptm-tm_sec);fflush(fp);fclose(fp);/printf(len : %dn,strlen(buf);printf(单词的意思是:);printf(%

18、sn,head-word);do_word(sockfd);return 0;记录查询函数int do_history(int sockfd)int n=0,count=0;char jilu1024;FILE*fp;mhead_t *head=(mhead_t*)jilu;head-type=USER_WORD;head-type=sizeof(mhead_t);head-wordstrlen(head-word)-1=0;printf(历史记录为:n);fp=fopen(log.txt”,a+);if(fp=NULL)perror(Fail to read);exit(EXIT_FAILU

19、RE);/ system(clear);while(fgets(jilu,sizeof(jilu),fp)!=NULL)(printf(%sn,jilu);fclose(fp);/printf(%sn,head-word);do_word(sockfd);return 0;五、心得体会通过这次实习,我对计算机专业在行业 实践中面临问题及解决办法有了一个较为全面的认识。巩固专业知识的同时也增加了 责任感,实习的日子里也加深了同学 友谊,锻炼了团队精神。大学生活让我对计算 机理论知识有了一定的了解,但真正操作起来就没有那么容易。纸上得来终觉浅,绝知此事要躬行。经过 过去三周的实习,我对自己有了新的

20、认识及前进的方向。在信息时代,学习是不断地汲取新信息,获得事业进步的动力。现在通过实习总感觉自己学的不够, 要用到知识时总感觉脑袋是空白的。 为了能更好的适应工作,只能自己去努力学习。尽量空闲时间多看书、多实践,希望能弥补不足,但也不能失去自信。对给自己点信心,多给自己点赞赏,多给自己鼓鼓劲。相 信总会走出一条宽敞大道的。实习中,基于Linux的网络编程,老师将 Linux基本命令交给我们,让我们熟悉 Linux下的操作。 初期,对与 Windows下不同,大量命令式操作,让我很不适应,但熟悉后,感觉很有意思。后来到进程、 消息等,顿时觉得对系统的运行有了更深的了解。接着,学习关于通过本次试验

21、使我了解了在 linux 环境下www, dns , ftp , dhcp等服务器的构建,以及它们的工作原理。 学会了如何通过命令方式对 www, dns ,ftp , dhcp等服务器进行配置,对一些配置文件得到了了解, 例如:etc/dns 的配置文件named.conf ,www 服务器的配 置文件 usr/local/apache2/conf/httpd.conf , ftp 的 配置文件etc/vsftpd/conf/vsftpd.conf. , dhcp 的配置文件 etc/dhcpd.conf. 。 2. 在配置 dns 服务器时老是实现不了,检查named.conf 文件时并未

22、查出语法方面的错误,检查var/ , var/1.168.192 文件时也没发现语法或是配置错误 ,在httpd.conf 文件中也进行了 servername 的配置。怎么就不行呢?百思不得其解,最后XX了一下,原来是resolv.conf 文件中没有配servername , 再加上servername 后就可以使用了。使我意识到在配命令的时候一定要注意先后顺序以及细节问题,只有这样开有可能保证万无一失。3.Apache 的配置文件在阅读的时候需要细心,里面有许多东西虽然这次试验用不至|J,但我们亦应该了解它的含义以及它的用处。4.在配置dhcp服务器是,用另一台电脑查看 dhcp服务器配

23、置是否正确时,输入ipconfig 时,电脑的网卡并没有使用 linux 下的dhcp服务器,检查配置文件没有错误,最后发现是虚拟机的网卡没有连接,连接好网卡后在另一台电脑就可以访问到 linux 的dhcp服务器了。实习,是开端也是结束。在书本上学过很多理论,但从未付诸实践过,也许等到真正运用时,才会体 会到难度有多大。在今后的工作和生活中,自己需要更加努力的奋斗下去。实习也让我了解到了自己的不 足,我会继续努力,完善自我。对于学校的精心安排和指导老师的用心辅导非常 感谢。按照老师的安排,我制定了相应的实习计划。注重在实习阶段对所学知识的巩固和提高,以期达到根据理论知识,指导日常 的工作实践

24、的目的。收到了较好的效果。在做实验前,我以为不会难做,就像以前做物理实验一样,做完实验,然后两下子就将实验报告做完 .直到做完测试实验时,我才知道其实并不容易做,但学到的知识与难度成正比,使我受益匪浅.在做实验前,一定要将课本上的知识吃透 ,因为这是做实验的基础,否则,在老师讲解时就会听不懂,这将使你在做实验时的难度加大 ,浪费做实验的宝贵时间.比如做光伏的实验,你要清楚光伏的各种接法, 如果你不清楚,在做实验时才去摸索,这将使你极大地浪费时间,使你事倍功半.做实验时,一定要亲力亲为 务必要将每个步骤,每个细节弄清楚,弄明白,实验后,还要复习,思考,这样,你的印象才深刻,记得才牢固 否则,过后

25、不久你就会忘得一干二净 ,这还不如不做.做实验时,老师还会根据自己的亲身体会 ,将一些课本 上没有的知识教给我们,拓宽我们的眼界,使我们认识到这门课程在生活中的应用是那么的广泛 通过这次测试技术的实验,使我学到了不少实用的知识 ,更重要的是,做实验的过程,思考问题的方法 这与做其他的实验是通用的,真正使我们受益匪浅.这次的实验跟我们以前做的实验不同,因为我觉得这次我是真真正正的自己亲自去完成。所以是我觉 得这次实验最宝贵,最深刻的。就是实验的过程全是我们学生自己动手来完成的,这样,我们就必须要弄 懂实验的原理。在这里我深深体会到哲学上理论对实践的指导作用:弄懂实验原理,而且体会到了实验的 操作

26、能力是靠自己亲自动手,亲自开动脑筋,亲自去请教别人才能得到提高的。我们做实验绝对不能人云亦云,要有自己的看法,这样我们就要有充分的准备,若是做了也不知道是 个什么实验,那么做了也是白做。实验总是与课本知识相关的。在实验过程中,我们应该尽量减少操作的盲目性提高实验效率的保证,有的人一开始就赶着做,结果 却越做越忙,主要就是这个原因。我也曾经犯过这样的错误。我们做项目不要一成不变和墨守成规,应该 有改良创新的精神。实际上,在弄懂了项目原理的基础上,我们的时间 是充分的,做项目应该是游刃有余的,如果说创新对于我们来说是件难事,那改良总是有可能的。在实验的过程中我们要培养自己的独立分析问题, 和解决问题的能力。培养这种能力的前题是你对每次实验的态度。如果你在实验这方面很随便,抱着等老师教你怎么做,拿同学的报告去抄,尽管你的成绩 会很高,但对将来工作是不利的。在

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2