天津科技大学实习报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
天津科技大学本科生毕业实习报告
专业:软件工程
学号:09103403
姓名:邓雪晨
指导老师姓名:
[实习目的]
通过理论联系实际,在实践中巩固所学的知识,提高处理实际问题的能力,增强自己的动手能力及进一步融入社会工作的能力,了解计算机及网络的相关知识,为毕业设计的顺利进行做好充分的准备,并为自己能顺利与社会环境接轨打下良好的基础。
[实习时间]
2013年2月25日~ 2013年3月15日
[实习地点]
天津市文通电子科技发展有限公司
[实习内容]
本次实习的地点是天津市文通电子科技发展有限公司。天津市文通电子科技发展有限公司创立于2001年,是一家专业从事计算机软件产品和办公自动化设备销售、技术开发、软件研发、产品维修的高科技公司。公司在成立之初就以“团结合作、信誉为本、服务第一、用户至上”为企业精神,以“用户满意是我们最终的追求”为企业信念,为广大用户提供优质的产品,满意的服务。文通公司先后承担了多个企业的网络改造、网络维护及行业软件的定制工作,为企业制作了数十款优秀的专业软件。
这次的实习为期三周时间,初到公司的时候,我就被分配在了软件研发部,通过软件研发部部门经理的短暂交谈之后,我便开始了我的实习工作。而当时,我们部门正在为企业开发一个I1515易物网站,是基于B/S体系架构的B2C网站,包括在线物品交换在线支付等多功能服务。
在项目开始之前,我们进行了一些准备工作。
1.客户对我们所编写软件的需求:其中主要包括对所编写项目的可行性研
究以及需求分析等内容,需要与客户之间有良好的沟通。如果没有做好这一环,没有很好的理解产品需求,就很难做到完成整个的开发工作,相反可能会给以后的软件开发带来严重的后果,包括返工,架构的混乱等。所以一定要确保参透软件需求,以及各模块之间的关系,做到对需求了如指掌。
2.开发人员的技术知识结构:企业的项目和在大学中做的项目不同,这需要更严谨的逻辑关系以及高标准的项目质量,不要为了追求时髦的技术而铤而走险。
3.技术方案:根据上面两点的分析,我们大概确定了技术方案,为了节约开发时间,我们用到了UBB等多个第三方开发工具或开发库。与此同时,我们也需要充分了解该工具或库的特点、性能,并参考使用这个工具和开发库的现有的软件产品,真正了解所采用的第三方工具(库)是否能满足项目的需求。
4.持续满足用户需求:根据项目经理的描述,我们采用了增量模型,将项目分成了多个模块,每个模块都有固定的时间限制,并根据模块进度分批、逐步地向用户提交产品。
做好这些之后,我们正式进入了开发阶段。我们是以6人为小组的团体且有一人为美工(帮助美化界面),而其他5人负责项目的编写且每人负责不同的模块,首先I1515易物网站主要是提供购买物品和以物换物等支付功能,并且网站的安全性和承受大访问量的能力也显得尤为重要,为此我们采用了SEO优化,静态页等方法来处理这些问题。易物网站主要分配两个权限,用户和管理员。用户职能主要为:查看以及购买物品,评论等信息;而管理员需要定期为我们的网站进行维护和管理,主要职能为:用户管理,订单购物车管理,评论管理等。
构想的用例图如下所示
I1515易物网站主要由系统前台和后台两大主要功能模块组成,其中前台模
块主要有用户注册、登陆、购物车、订单、在线支付、在线交流、物品页面静态化、邮箱验证。
后台模块主要包括订单购物车管理、商品管理、评论管理、用户管理、错误日志处理、SEO优化。
我主要负责前台的编写,主要任务如下:
1.用户的登录注册(含验证码),邮箱验证
2.商品页面,商品详细页面,无刷新评论
3.页面静态化,url重写,评论词汇审查
4.购物车
数据是系统的基础,而一个好的数据库表就是一个好项目成功的一半,所以数据库设计这一环节在系统开发过程中很重要。我根据对系统所作的分析、功能结构的确定,每个功能模块都可以抽象出一个或多个实体,例如用户,商品、购物车等。而每一个实体又有其相对应的属性,由这些可以最终形成整体的数据结构,进而建立数据表。
在对系统功能结构和数据的分析之后,我便开始了我负责模块的相对复杂的详细设计阶段,首先要搭建系统开发环境,我们使用的是C#语言和.net framework4.5的开发环境。首先是用户的登录注册,这方面来说相对简单,但是其中我需要完成“记住我”的功能,简单来说,就是用户点击记住我单选框后,在一周之内,用户再次登录网站可以不用手动登录。
在查阅了大量资料之后,我了解到在用户第一次登录之后,我需要把用户的信息存在某个地方,而下次登录的时候直接取出,就可以实现自动登录的效果,但是存在哪里可以让用户在关闭浏览器等情况下依然保存着用户信息呢?我发现cookie可以达到这个效果,因为当用户登录之后,将用户信息保存在cookie 中,并设置cookie的过期时间,此时cookie会保存在用户电脑的磁盘中,只要用户不手动清理cookie,那么下次登录该网站就会从用户的电脑中取出相应值,实现自动登录的效果。
在接下来的进程中,我学习了Ajax技术,总体来说:Ajax是一种创建交互式网页应用的网页开发技术。本质上是一个浏览器端的技术。主要目的在于能够不用重新载入整个版面来更新资料,也就是所谓的Refresh without Reload(轻刷新)。Ajax本身传送的数据量很小,所以反应会更快。我利用了Ajax技术编写了商品的列表页面以及高效分页、无刷新评论等功能。
最后,我编写了页面静态化,url重写,评论词汇审查等功能:
1.页面静态化:静态页面是网页的代码都在页面中,不需要执行等程序生成客户端网页代码的网页。静态页面不能自主管理发布更新的页面,如果想更新网页内容,则需要管理员重新生成。用户获得一个静态页面,服务器几乎
不需要运算,甚至可以用负载均衡用专门的文件服务器存储静态页。
2.url重写:主要是将带参数的访问地址,修改为更加正规的地址。而这样有很多的好处:1、有利于SEO,带参数的URL由于内容可能是动态改变的,因此带参数的URL权重较低。2、地址看起来更正规。3.达到了伪静态的效果:看起来像普通页面,而非动态生成的页面。
3.评论词汇审查等功能,针对不同的词汇分成了三大类:违禁词汇,禁止输出;审查词汇,需要管理员审核才能通过;替换词汇,将某个词替换成管理员希望看到的词汇。
这次的设计我们基于了三层架构的思想,所以为了实现上述功能和各个人员的编写代码的统一性,我们统一用已经编写好的名称来取名,并且构建了从最开始的类的定义层,到跟数据库直接交互的数据访问层,再到进行逻辑判断的逻辑判断层,最后才到了用户界面层。而这样我们可以更直观、模块化和可重复使用的方式进行程序开发。
而对我印象最深刻的还是,公司更加注重的是安全性以及用户体验方面,例如:Ajax实现商品页面的展示以及分页,让浏览器不同重新发送请求,既可以局部更新浏览器内显示内容;再有静态化和url重写功能,其实有一部分原因也是不希望一些懂得编码的软件工程师读懂我们地址栏内的信息,从而进行强制破译。
“千里之行,始于足下”,在这里我真正体验到了整个项目的整体流程以及非常严格的需求规定,大量注释的编写也是我以前没有注意到的。通过三个星期的实习,也让我对自己以前涉及过的或者以前没有涉及过的技术有了进一步的了解,懂得了教学与项目实践之间的关系,并且真正的运用到了实际开发中。不仅如此,我更加体会到了研发团队的团队精神,我在其中受益良多,而正是有这样一个好的团队,才能让接下来的事情事半功倍。而从今以后,我也会更加踏实认真,实事求是,时刻紧跟IT行业的发展变化,不断汲取新的知识,把每一件事情做好。