还剩15页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
计算机科学与工程学院第二届专业实践技能(学科)竞赛实用软件设计类参赛作品学生任务管理系统指导老师孙永新小组成员余伟康,郑桂深,蒋俊豪目录TOC\o1-2\h\u学生任务管理系统
11.需求分析
11.
1.总述
11.
2.使用技术简介
12.概要设计
22.
1.__环境
22.
2.总体设计
22.
3.模块设计
32.
3.
1.模块说明
32.
3.
2.功能设计
33.详细设计
33.
1.数据库设计
33.
2.用户使用流程
43.
3.URL设计和HTTPServer
43.
4.客户端时间提示功能
73.
5.最小化到任务栏功能
94.测试与运行
104.
1.登录功能
104.
2.程序可以最小化到任务栏
114.
3.删除功能
114.
4.添加任务栏功能
124.
5.时间提示功能
134.
6.用户注册功能
135.项目总结
141.需求分析
1.
1.总述在___生活中,人们往往会忘记做一些事情设计一款功能简单实用,可扩展性强的___软件可以帮助大家更好地管理时间和事务本软件简单实用,可在桌面和开始菜单创建快捷方式,适合对时间管理方面有需求的人群
1.
2.使用技术简介这款软件我们采用简单实用,扩平台,网络化的设计理念采用C/S(客户端/服务器)模式客户端采用flex技术,它容易设计出良好的富客户端应用的同时具备良好的网络交互功能采用HTTPServer作为与与服务器交互的方式服务器采用Python作为__的语言Tornado正好具备设计优秀的URL的性质,支持restful,而且在Linux上可以提供很好的负载能力
(1)Python是一种面向对象、直译式计算机程序设计语言,也是一种功能强大的通用型语言,已经具有近__年的发展历史,成熟且稳定它包含了一组完善而且容易理解的标准库,能够轻松完成很多常见的任务它的语法非常简捷和清晰,与其它计算机程序设计语言不一样,它采用缩进来定义语句块Python支持命令式编程、面向对象程序设计、函数式编程、面向切面编程、泛型编程多种编程范式与Scheme、Ruby、Perl、Tcl等动态语言一样,Python具备垃圾回收功能,能够自动管理内存使用它经常被当作脚本语言用于处理系统管理任务和Web编程,然而它也非常适合完成各种高阶任务Python虚拟机本身几乎可以在所有的操作系统中运行使用一些诸如py2exe、PyPy、PyInstaller之类的工具可以将Python源代码转换成可以脱离Python解释器执行的程序Python的主要参考实现是CPython,它是一个由社区驱动的自由软件目前由Python软件基金会管理基于这种语言的相关技术正在飞速的发展,用户数量急剧扩大,相关的资源非常多
(2)Tornadowebserver是使用Python编写出來的一个极轻量级、高可伸缩性和非阻塞IO的Web服务器软件,著名的Friendfeed__就是使用它搭建的Tornado跟其他主流的Web服务器框架(主要是Python框架)不同是采用epoll非阻塞IO,响应快速,可处理数千并发连接,特别适用用于实时的Web服务
(3)ActionScript是__cromedia(现已被Adobe收购)为其Flash产品__的,最初是一种简单的脚本语言,现在最新版本
3.0,是一种完全的面向对象的编程语言,功能强大,类库丰富,语法类似J__aScript,多用于Flash互动性、娱乐性、实用性__,网页制作和RIA应用程序__ActionScript是一种基于EC__Script的脚本语言,可用于编写AdobeFlas___和应用程序由于ActionScript和J__aScript都是基于EC__Script语法的,理论上它们互相可以很流畅地从一种语言翻译到另一种不过J__aScript的文档对象模型(DOM)是以浏览器窗口,文档和表单为主的,ActionScript的文档对象模型(DOM)则以SWF格式动画为主,可包括动画,音频,文字和__处理
(4)AdobeFlex是最初由__cromedia公司在2004年3月发布的,基于其专有的__cromediaFlash平台,它是涵盖了支持RIA(RichInternetApplications)的__和部署的一系列技术组合
2.概要设计
2.
1.__环境__平台WindowsXP+eclipse+flashbuilder__语言ActionScript+python服务器端框架TornadoWebServer客户端平台AdobeFlex
2.
2.总体设计程序是C/S架构,服务器端使用python基于Tornado__,客户端使用ActionScript基于Flex__本程序是学生任务管理系统,提供任务设定,到执行任务时间就给出提示,可以缩小到任务栏,数据保存在服务器
2.
3.模块设计
2.
3.
1.模块说明程序分为三个模块用户注册,用户登录,任务管理
2.
3.
2.功能设计用户登录用户可以通过自定义的用户名和__来登录到服务器,一旦登陆成功就获取服务器中的用户任务信息用户注册用户注册必须提供用户自定义的用户名和__,____地址收到注册成功提示后即可登录任务管理任务管理提供任务的添加和删除功能,包括任务内容和任务提示时间,程序通过任务提示时间提醒用户该执行的任务另外,程序提供缩小到任务栏的功能,以方便程序在不阻碍用户使用计算机的同时可以提供任务提醒功能
3.详细设计
3.
1.数据库设计数据库名t_record 字段类型notnull自增编码外键加密rid(主键)INTEGERYesYesutf8NONOusernameVARCHAR45YesNOutf8YesNOrecordVARCHAR45YesNOutf8NONOsettimeVARCHAR45YesNOutf8NONOdotimeVARCHAR45YesNOutf8NONO数据库名t_record 字段类型notnull自增编码外键加密username(主键)VARCHAR45YesYesutf8NONOe__ilVARCHAR45YesYesutf8NONOpasswordVARCHAR45YesYesutf8NOMD
53.
2.用户使用流程
3.
3.URL设计和HTTPServer本程序是C/S架构,使用HTTPServer作为客户端与服务器端交互的方式一下是服务器端URL设计,所有URL的交互方法都是GET功能URL接收参数返回值添加数据/addRememberRecorddate年月日,例如2011-5-19;minute分钟;hour小时;record任务;成功ok,失败error删除删除/delData要删除的任务的编号成功ok,失败cannotdelete查询所有数据/getData用户名返回数据格式,每条记录datarid任务编号/ridkey任务内容/keydate任务提醒时间/date/data登录/login用户名,__成功ok,__错误pwderror,登录失败error注册/register用户名,__,____地址成功regisok,用户名已被使用nameish__e,注册失败error(包括网络问题等各种原因)Flex中HTTPServer使用例子客户端通过配置HTTPServer,使用GET的方式向指定的URL发送数据,发送的数据写在mx:requestxmlns=/mx:request中,而mx:rowIndex/mx:rowIndex告诉服务器通过rowIndex标记可以找到数据的值,相当于Dictionary中的keyvalue关系resultHandler与HTTPServer绑定,返回后执行方法中的event.result取得返回的数据获取数据的方式因返回数据的类型而异当获取如datakey/keydata这种XML形式的数据时,可以使用event.result.data获得每组data/data中的数据而当返回数据是字符串,就用本示例中的方式取得mx:HTTPServi__resultFor__t=arraymethod=GETurl=http://localhost:80/delDataid=http1result=resultHandlereventmx:requestxmlns=mx:rowIndex{dg.selectedItem[rid]}/mx:rowIndex/mx:request/mx:HTTPServi__privatefunctionresultHandlerevent:ResultEvent:void{varlogin_result:String=;login_result=event.result.toString;iflogin_result==ok{Alert.show删除成功;textarea.text+=您删除了一项纪录!+\n;textarea.validateNow;textarea.verticalScrollPosition=textarea.__xVerticalScrollPosition;}iflogin_result==cannotdelete{Alert.show删除失败;}http.send;}服务器端与一般的WEB服务器一样,接受HTTP请求,然后返回数据在Tornado中使用get方法响应请求,对应服务器端的HTTPServer的GET方式通过self.request.arguments可以获得客户端发来的数据classdeleteRecordHandlerBaseHandler:defgetself:printthisisdel!getifnotself.current_user:returnprintpostself.rid=self.request.arguments.getrowIndex
[0].encodeutf8self.deleteRidQuery=deletefromt_recordwhererid=+self.ridprintself.deleteRidQuerytry:self.deleteSu__ss=dbCon.executeself.deleteRidQueryprintself.deleteSu__ssself.writeokex__pt:self.writecannotdelete
3.
4.客户端时间提示功能时间提示功能,就是在到达用户定义的时间时在桌面的右下角出现提示窗口,窗口中显示任务的内容对于程序而言,要不断地检测任务列表中的时间,发现任务时间与当前系统时间相同就打开一个窗口,定义窗口的位置在桌面右下角的恰当位置时间的对比时限定时间的格式是YYYY-MM-DDJJ:NN,也就是对比时只对比年月日时分当时间到达,把对比列表中的相应时间删除,以防止重复提示相关代码如下
(1)对比时间functioncompareTimestr:String:int{varmyPattern1:RegExp=/-|:|/g;vardateFor__tter:DateFor__tter=newDateFor__tter;dateFor__tter.for__tString=YYYY-MM-DDJJ:NN;varnow:String=dateFor__tter.for__tnewDate;str=dateFor__tter.for__tstr;str=str.repla__myPattern1;now=now.repla__myPattern1;tra__str;tra__nowifintstrintnow{return1;}elseifintstrintnow{return-1;}else{return0;}}
(2)对任务列表中的时间从大到小排序privatefunctiononResultevt:ResultEvent:void{vari:int;arrs.removeAll;fori=0;ihttp.lastResult.data.length;i++{arrs.addIte__t{rid:http.lastResult.data[i].rid.toStringrecord:http.lastResult.data[i].key.toStringdate:http.lastResult.data[i].date.toString}i;}varsort:Sort=newSort;sort.fields=[newSortFielddate];arrs.sort=sort;arrs.sort.reverse;arrs.refresh;}
(3)通过Timer和时间__不断让任务列表中的时间与系统时间进行对比,当到达时间时显示提示窗口timer=newTimer1000;timer.addEventListenerTimerEvent.TIMERonTick;timer.start;privatefunctiononTicke:TimerEvent:void{varj:int;varcompareResult:int;forj=0;jarrs.length;j++{compareResult=compareTimearrs.getIte__tj.date.toString;ifcompareResult==0{varmw:AlarmView=newAlarmView你设定的时间已经到了\n+arrs.getIte__tj.record.toString;mw.advOpenthis;mw.moveCapabilities.screenResolutionX-200Capabilities.screenResolutionY-230;arrs.removeIte__tj;break;}elseifcompareResult0break;} }
3.
5.最小化到任务栏功能主要函数如下publicfunctionprepareForSystrayevent:Event:void{dockI__ge=event.target.content.bit__pData;stage.nativeWindow.addEventListenerNativeWindowDisplayStateEvent.DISPLAY_STATE_CHANGINGdisplayStageChangeHandler;stage.nativeWindow.addEventListenerNativeWindowDisplayStateEvent.DISPLAY_STATE_CHANGEfunctione:Event:void{tra__1;};NativeApplication.nativeApplication.icon.bit__ps=[dockI__ge];ifNativeApplication.supportsSystemTrayIcon{Varicon:SystemTrayIcon=NativeApplication.nativeApplication.iconasSystemTrayIcon;icon.tooltip=学生任务管理系统;icon.addEventListenerMouseEvent.CLICKundock;}}
4.测试与运行
4.
1.登录功能登录界面图1登录界面登陆后显示程序主界面图2主界面
4.
2.程序可以最小化到任务栏图3任务栏效果
4.
3.删除功能删除前选择主题为83这一项图4删除后主界面有删除记录的显示图5删除
4.
4.添加任务栏功能添加任务图5添加任务添加任务名为“添加的任务”,添加成功图6添加任务
4.
5.时间提示功能图7弹出提醒功能
4.
6.用户注册功能图8弹出提醒功能查看数据库证明,用户注册成功,__已经过MD5加密图9数据库加密
4.7界面图9整个软件在系统中的运行效果图10快捷方式
5.项目总结在本系统中,我们的目标是__一个便于学生管理繁忙的生活和学习任务,起到___的效果这次__成功实现了以上功能同时,借以本次参赛的契机,我们对flexair,python等技术有了更深的理解,对软件系统__的流程,解决问题的方法有了感性的认识,积累了不少宝贵的经验由于时间和能力有限,我们没有把规划的所有功能一一实现,以下是我们对该软件的技术展望
1、把这个软件带进各个不同的平台,尤其是__上,我们可以依靠跨平台的AIR实现这一切
2、加入本地保存数据的功能,与服务器上的数据同步
3、借助flex在界面设计上的强大功能,提供更炫的操作界面1。