网络电子词典实习报告_第1页
网络电子词典实习报告_第2页
网络电子词典实习报告_第3页
网络电子词典实习报告_第4页
网络电子词典实习报告_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

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

文档简介

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

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

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

4、liam Richard Stevens人民邮电出版社二、系统概述我们的这套系统采用的是 tcp 协议的并发服务器设计, 可以满足多用户同时 登录,用户登录后可以查询单词及历史记录,对于数据的存储我们采用的是 sql 数据库技术,查找快速,保密性好!具体功能能如下:1主界面用户登录用户注册用户退出2登陆成功后界面查询单词查询历史退出、拓扑结构如下客户端 1并发服务Sql 数据库客户端 2四、详细设计4.1 消息类型设计宏名设计说明USER REGISTER用户注册USER LOGIN用户登陆USER WORD用户查询单词USER SUCCESS操作成功UNAME ERROR无此用户PASSWD

5、 ERROR密码错误USER FAILURE操作失败4.2 结构体的设计注: _attribute_(_packed_)表) 示取消结构体对齐 typedef structchar _username25; / 用户名char _word25;/密码 _attribute_(_packed_)user_t;typedef structint typed;int size;unionuser_t uinfo; / 用户信息 char _word100; /客户端填词,服务端填写单词解释 #define wordcontent._word#define usernamecontent.uinfo.

6、_username#define passwordcontent.uinfo._passwd_attribute_(_packed_)mhead_t;#define EXEC_SQL(db,sql,errmsg) do if(sqlite3_exec(db,sql,NULL,NULL,&merrmsg) 0) fprintf(stderr, “sqlite exec %serror : %sn”,sql,errmsg); exit(EXIT_FAILURE);while(0);4.3 数据库设计表名字段user_tableNAMEPASSWORDdict_tablewordexplain4.4

7、 部分核心代码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 PASSWORD=%s;sprintf(sql,select * from user_table w

8、here NAME=%s and PASSWORD=%s;,_username,_password);if(sqlite3_get_table(pdb,sql,&dbresult,&nrow,&ncolumn,&errmsg)!=SQLITE_OK)fprintf(stderr,sqlite3 get table error : %s.n,errmsg); exit(EXIT_FAILURE);if(nrowtype = USER_FAILURE; if(send(sockfd,buf,sizeof(mhead_t),0) type = USER_LOGIN; if(send(sockfd,b

9、uf,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 *head=(mhead_t*)danci;int i = 0,j = 0;sprintf(sql

10、,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,dbresult3); printf(result : %sn,head-word);if(n

11、row = 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;绑定套接字,连接 IP 端口int init_tcp(char *ip,char *port

12、)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_addr.s_addr = inet_addr(ip);if(bind(sock

13、fd,(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,sizeof(head-password),stdin); hea

14、d-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(n 很遗憾,登录失败,请重新登陆 n);/printf(

15、n);return -1;return 0;单词查询函数int do_query(int sockfd) int n=0,count=0;char buf1024;/ char yisi1024;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 line=get_line(fp);time_t t;/可能需要加头

16、文件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); if(send(sockfd,buf,sizeof(mhead_t)

17、,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(%sn,head-word);do_word(sockfd);

18、return 0;记录查询函数int do_history(int sockfd)int n=0,count=0;char jilu1024;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_FAILURE);/ system(clear);while(fgets(jilu,

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

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

21、作原理。学会了如何通过命令方式对,等服务器进行配置,对一些配 置文 件 得到 了 了 解, 例 如 : etc/dns的 配 置 文 件 named.conf , www 服 务 器的 配 置 文 件usr/local/apache2/conf/httpd.conf, ftp 的 配 置 文 件 etc/vs. , dhcp 的 配 置 文 件etc/dhcpd.conf. 。 2. 在配置 dns 服务器时老是实现不了,检查 named.conf 文件时并未查出语法 方面的错误, 检查 var/ ,var/1.168.192文件时也没发现语法或是配置错误 , 在 httpd.conf文件中也

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

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

24、后两下子就将实验报告做完 . 直到做完测试实验时 , 我才知道其实并不容易做 , 但学到的知识与难度成正比 , 使我受益匪浅 .在做实验前 , 一定要将课本上的知识吃透 , 因为这是做实验的基础 , 否则 , 在老师讲解时就会听不懂 , 这将使你在做实验时的难度加大 , 浪费做实验的宝贵时间 . 比如做光伏的实验 , 你要清楚光伏的各种接法 , 如果你不清楚 , 在做实验时才去摸索 , 这将使你极大地浪费时间 , 使你事倍功半 . 做实验时 , 一定要亲力亲为 务必要将每个步骤 , 每个细节弄清楚 ,弄明白,实验后,还要复习,思考,这样,你的印象才深刻 , 记得才牢固 否则,过后不久你就会忘得一干二净 ,这还不如不做 .做实验时 ,老师还会根据自己的亲身体会 ,将一些课本 上没有的知识教给我们 , 拓宽我们的眼界 , 使我们认识到这门课程在生活中的应用是那么的广泛 .通过这次测试技术的实验

温馨提示

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

评论

0/150

提交评论