准备了很久的Srtp项目,昨天第一批三个组结题,排在最后一个答辩,不过最后是优秀,还是比较欣慰的。毕竟自己还是付出了很多的。听闻05级的同学正在为此事头疼,所以发此文分享一些经验。
申请的有两个级别,一个是校srtp项目,一个是院级的课外研学项目,二者形式基本一样,也都能拿到学分,不同的是校级的项目学校在最后应该都会有资金 的包销,而 院级项目还要“争取”。申请的时候,填写都是一样的申请,申请提交给院里之后,院里要经过筛选,将一些有价值,有新意的项目报给学校作为校级的SRTP项 目,而所申请的资金不是都能批下来的,一般什么什么系统之类的一个组能批下300-400元,但是这些钱不是一开始就给项目组的,是要在最后项目组凭发票 报销的,所以开发过程中,一定要注意保留原始发票,特别是一些打印的材料,交通费这些。而书籍有一种说法是如  果你要包销,书就要上交,这个说法尚未得到证实。
我以我本人为例,一开始申请的时候,申请了一个什么教室资源管理系统,结果给  了一个院级项目,说实话这个项目的题目实在是不怎么新颖,所以只能留在院里。不过 后来我自己把题目改掉了,改成了自己比较了解的学生工作范畴的“学生信息管理平台”,但是这个时候已经不能再申请了,只能留在院里面作为课外研学项目了, 也就是有可能得不到资金的。
这就涉及到了开题的问题,很多人盲目开题,在自己没有任何开发经验或者技术储备的情况下,不做任何的可行性及复杂度分析盲目开题。从我们这一届的情况 看,申请审批下来的项目,特别是校级项目里面有不少题目感觉很不错,很有难度,但是看看做的人,于是就对这个项目不报什么信心了。
选题非常重要,个人认为要注意几点,各位后来者在确定自己题目的时候一定要问自己以下几个问题
1.我的这个项目有没有实用价值
2.这个项目针对哪些用户群体
3.对于这些用户群体他们目前在用什么样的系统
4.他们目前用的这套系统和我们要开发的系统相比,我们到底胜出多少,或者说我们到底能改善多少使用的便利,或体验
我有一个案例,有个小组开发了一套也是面向辅导员服务的系统,在这套系统中提供了学生成绩管理,课表查询,还有其他的小功能比如计算器,万年历这些。在 老师评审的时候直接指出了目前的教务处的系统已经为辅导员提供了这个服务,而且这个服务已经很成熟了,如果没有很大用户使用,安全性,整体性能上的提高的 话,根本没有必要再做这么一套系统,另外一个系统要做专,你可以只包括一个成绩管理,就叫学生成绩管理系统,那你就必须把这一块做专,不要以为这个很简 单,在做这么一套系统的时候要充分考虑到这套系统对于以有系统的创新点和优势,以及整个系统的特殊要求,比如说安全性。为什么难?主要还是因为目前已经存 在的系统已经很成熟了,想超越他,一个字——难。
另外就是你既然把课题定向为面向辅导员服务,那你得好好想想这些人群到底最需要什么,虽然说做需求分析很麻烦,但是个人觉得还是很有必要的,一个辅导员 目前可能对学生的动态情况想有一个好的把握,比如学生的缺勤情况,参加过活动的情况,是不是应该找个时间跟学生交流交流(日程安排)等等等等,所有这些都 是目前还是空白的地方的。所以要知道那些地方是空白,问问你的系统定向的人群。
关于所使用的技术,我也谈一些
我的项目做了两个版本,之前使用的是Ajax的框架GWT,但是因为GWT是一个新家伙,网上的参考资料,开发的经验都少,所以自己边做边研究,结果做 出来整体的感觉很不好,而且在功能上还有一些定位错误,于是在做好之后忍痛割爱,pass掉了,最后结题的时候用到的技术/知识主要是JSP (JSTL),Struts,Javascript,XML,Dom,CSS。刚才这几项都是目前都很成熟的技术,如果你还不是很了解,我稍微解释一下 jsp不用说了吧,关于JSTL,在写JSP的初期阶段,每个人都在页面里面写过Java代码,但是要知道,这样是很不好的,如果你了解HTML,那你就 应该知道里面其实都是成对的标签比如<html></html>,<td></td>等等,而如果我们 直接写了Java代码,那就破坏了这样的结构,在维护起来就非常不方便,另外很重要的一点,就是如果这么些那么你的层次就非常的不明确,你可能在jsp里 面直接写从request里面获取attribute,然后作判断,再作处理,但是要知道这样该属于业务逻辑,不适合出现在页面里面,而JSTL就可以解 决这些。关于Struts,是目前J2EE的一个轻量级的框架,很成熟,可以用它来负责业务逻辑层,表现层,网上有很多资料,经常用来和这个相配合的是 Spring 和 Hibernate,Spring负责逻辑层,Hibernate负责数据持久层。
JavaScript这个家伙这两年已为Ajax的流行而开始转变名声,之前JavaScript经常用来做一个花俏的菜单,放一个时钟,或者在状态栏 变换文字等等,而现在JavaScript已经成为改善用户客户端体验的重要工具,目前的ajax技术全程就是异步的JavaScript and XML,使用Javascript在客户端页面局部修改,使用XML进行数据异步传输,使得用户就像在使用一个桌面应用程序一样。Dom全称是文档对象模 型,对于一个html来说可以利用DOM来解析他,得到HTML的每一个结构,用Javascript调用dom,就可以动态的修改页面上的东西,比如当 我正在填一个表单,当我填完一项,文本框失去焦点的时候,客户端自动对所填的格式进行验证,这个时候只要在textbox的onblur属性里面调用已经 定义的javascript函数,在函数中使用dom来获取这个文本框的引用然后进行格式验证。所谓CSS就是样式表,我在css里面定义了很多样式,然 后在写jsp的时候就直接使用这些样式,很重要的!
以上就是我自己用到的技术。当然这是J这一头的,相信肯定有人使用.net,我自己也不是很熟悉,就不说什么了。
不管你使用哪种技术,哪怕你现在什么都不会,都来得及。当然不要拖到最后。
如果你的项目是定位于将目前已有的系统使用新的技术进行重新架构。那就应该考虑到使用目前比较流行的框架,或者改善客户端体验(Ajax)。
在这里我说一下Ajax,Ajax这两年因为google而火起来,其实是新瓶装老酒。Ajax也是web2.0中的主要力量。上面提到过使用Ajax 就好像使用本地的桌面应用程序一样。使用过Gmail,163,yahoo等邮箱的同学都能有所体验。就好像在控制自己及其里面的程序一样。要想有更多的 体验,你可以多访问google的一些东西,Google Map(百度也有了),Gmail,还有个性化主页等等,利用Ajax可以轻松的实现拖拽等功能。比如一个注册表单,我们都有这么一个经验,我们申请一个 用户名,还要判断一下有没有已经注册了,那我们得把注册停下来,单击一个检察按钮,然后等他的返回结果,如果我们使用了Ajax,我们不必停下来,只要继 续填写,Ajax会利用异步传输,得到结果返回在页面上。
在以下的几个技术里面从左到右,与常规的桌面应用程序的相似度依次提高            php,asp,jsp->>Struts->>JSF,Shale->>Ajax
而目前还有一个很热门的Ruby,Ruby on Rails对Ajax的支持特别的好(虽然我自己没做过,都这么说),能够很方便的开发出Ajax的系统。如果你不懂JavaScript怎么办,现在有 很多框架,比如我所使用的GWT,是google出的可以在code.google.com下载到。这个框架是给java程序员的。你只要写Java就行 了,框架会自动生成js,还有很流行的一个框架是DWR也是给java程序员的,另外网上还有很多ajax的标签,可以用来改造现有的系统,有兴趣也可以 去看一下。用.net的也不要急,微软毕竟是大牛,他有他自己独特的东西叫ATALAS,微软的人叫它为阿塔拉斯,在微软的网站上可以下到,中文的教程目 前只有一本。

定位到用户的角色
现在说说这点,就是做项目的时候要充分考虑到用户的角色,也就是说你的使用必须方便,必须傻瓜化,任何人都能够使用,而不仅仅是计算机/软件专业的人, 你不可能让用户写一条sql语句添加一条新的纪录。所以整个系统必须考虑完整了。再举上面那个案例,成绩管理,课表查询,难道让辅导员自己往里面输课表 吗,这是明显很不现实的事情。再者如果想优秀的话,你的使用说明书也要写好噢。
关于IDE的使用
j的当然首推Eclipse+Myeclipse了,当然如果你时间足够的话,想多学一点可以直接用Eclipse,然后自己到相应的网站上去下开发包,自己配制。
.net的显然vs2005,其他的就不谈了。

补充一点,就是测试的环境,BS的结构一定要试一下Firefox,IE6,和IE7,这三者对W3C的标准都有不同的支持。所以自己好不容易定义出来的页面极有可能,换一种浏览器就乱七八糟了。

下面给大家推荐J方向的几本书
JSP:Beginning JavaServer Pages (Wrox-人民邮电出版社) 中文(JSP高级程序设计)55rmb   还有一本初级的(jsp程序设计)。
Struts:Struts In Action (Struts实战),Struts基础教程(Apress-人民邮电出版社)45rmb
CSS:CSS Mastery Advanced Web Standards Solutions 精通CSS(Apress-人民邮电出版社) 39rmb
Ajax:Ajax in Action(Ajax 实战) Manning-人民邮电出版社 69rmb, Ajax基础教程 Manning-人民邮电出版社 ,Atalas基础教程 人民邮电出版社
Javascript宝典  太贵了 99好像