洛阳理工
毕业设计(论文)开题报告
系(部):计算机与信息工程系 2011年 3月 6日 (学生填表)
课题名称
基于J2ME的移动选课系统的研究
学生
专业班级
课题类型
软件工程
指导教师
职称
课题来源
1. 综述本课题研究动态,说明选题的依据和意义
随着移动通信技术和移动互联网技术的飞速发展,手机已成为人们生活和学习上不可或缺的工具。目前各高校纷纷开展移动学习研究和移动信息化平台建设,移动学习、移动办公将成为高校学习和管理中必不可少的方式。基于手机平台的选课系统是高校教务管理信息化平台建设中一个重要的组成部分,是现有选课系统的重要补充,可使广大师生随时随地方便快捷地选课、退课和课程查询,大大提高高校教学管理效率。
目前基于Web的教学信息管理系统的发展也存在很多不足,对于有线接入用户有很多的限制,如教师和学生要想浏览教学信息就必须坐在联网的PC前进行,出于对安全的考虑甚至一些不在校内的学生想要浏览相关信息也是受限的。同时学生只能上网才能得到相关的信息,对于不经常上网的学生可能会错失很多有用的通告,如考试安排、课程调整通告等,而延误工作。
基于现有网络教学管理系统的缺陷,个别高校开始尝试无线移动终端在高校教学工作中的应用。北京大学现代教育中心网络教学平台中的短信息服务,向用户提供借阅图书到期归还短信提醒、E-mail来信通知、订阅栏目等。华中师范大学的教务短信服务系统实现了师生注册、通知公告、成绩查询、学分查询、课表查询、信息定制等功能。西南交通大学移动教务系统为老师学生提供及时且不受地域限制的信息访问平台,用户可免费接收发送的重要通知、课程提醒、成绩通知等,同时也可编辑短信指令到指定号码,查询个人任课信息、成绩、选课、通知、校车车次等重要信息。
随着Java技术的不断发展,SUN公司根据市场需求进一步将无线应用细分为针对企业应用的J2EE(Java 2 Enterpise Edition)、针对普通PC应用的J2SE(Java 2 Standard Edtion)以及针对嵌入式设备及消费类电器的J2ME(Java 2 Micro Edtion)等3个版本。J2ME即Java2 Micro Edition (Java2的微型版),是Sun公司Java2的重要组成部分。它是针对有限硬件、有限功率、有限网络连接的设备,进行应用开发的技术,它适合在无线通信设备上开发交互性较强的网络应用[1]。
综上所述,手机在高校管理中的应用已经初见端倪,为我们的研究提供了很好的范例。本研究着眼于教务管理系统的子系统--基于手机平台采用J2ME的移动选课系统。一般在选课期间机房比较拥挤,在集中选课的时候,学生可能正在校外实习,不具备有线上网的条件,不能及时地进行选课,基于手机平台的选课系统可以帮助学生随时随地进行选课。
2. 研究的基本内容,拟解决的主要问题
研究的基本内容
从目前国内各高校的选课情况来看,选课系统的用户分为三类群体:教务管理员、教师和学生。通过查阅资料,结合我校选课流程及特点设计了手机选课系统的功能。该系统主要用户面向广大学生和任课教师。具体功能如下:
⑴为教务管理员提供添加用户、删除用户等功能。
⑵为学生用户提供选课/退课、选课查询、查看课程表、查看已申请课程等功能。
⑶为任课教师提供查看担任课程、查看选课学生、申请添加/删除课程等。
⑷在登录时可以注册用户。
⑸此外在个用户登录后的界面中设立修改用户信息等功能。
拟解决的主要问题
⑴网络连接采用技术的问题
本系统采用通用联网框架技术,其中解决J2ME客户端与服务器端应用表示层的联网的问题是其中关键一环。
在J2EE平台中可以使用java.net和java.io提供的类来访问网络服务和文件系统。由于移动设备的处理器和内存有限,因此,他们并不适合运行在移动终端上。为移动信息设备制定一个灵活、易于扩展的联网框架,于是诞生了通用连接框架GCF。通用连接框架定义在CLDC1.0(JSR30)规范中,具体实现则留给了上层的简表,如MIDP。事实证明,GCF的设计非常成功,还有专门为J2SE平台定制的版本,通用连接框架是基于借口设计的,便于扩展[2]。
通用连接框架设计灵活,使用异常简单。首先,类建立到服务器端应用表示层的连接,然后为该连接分别建立两个数据缓冲区,客户端通过数据输入流和数据输出流来发送请求信息和接收响应信息。考虑到联网可能会堵塞用户界面,因此在该系统开发过程中,把联网操作在单独的线程中处理,而不在主线程中进行联网[3]。
⑵针对消息格式的设计
本系统中,MIDlet发送给Servlet的HTTP 请求信息只有三种:一是查询课程请求,二是更改用户信息请求,三是申请更新课程请求,鉴于安全需要三类请求都通过POST方法传输。
当课程查询时,MIDlet发送的POST请求中包含3个字段:、密码、Number(一个指示查询方式的数字)。Number=0表示查询最近学期的课程;Number=1~8表示查询指定学期的课程Number=9表示查询所有已修课程。因为服务器端的Servlet的目的是与手机中的MIDlet打交道,而不是与电脑中的Web 浏览器打交道,因此返回给客户端的查询结果采用了更加有效的纯文本格式而非HTML格式[4]。该格式首先指出课程数目,然后是用换行符分隔的课程信息串。每门课程信息由3部分组成:课程名、成绩、学分。
当修改密码时,MIDlet发送的POST请求中也包含3个字段:、密码、新密码。尽管两类POST请求都包含3个字段,并且前两个字段完全一样,但是,Servlet不会混淆这两类请求,因为密码的长度通常不少于6个字符(MIDlet也会检测密码长度),Servlet可以根据最后一个字段的长度分辨出该POST请求是查询课程请求还是更改密码请求。更改密码时,Servlet返回的POST响应中,用1表示密码更改成功、0表示失败。
申请更新课程(即选课)时,MIDlet发送的POST请求中需包括课程号,,密码3个字段,与修改和查询一样Servlet不会混淆此三类POST请求,服务器端返回POST响应,1表示成功,0表示失败。
⑶访问网络时的死锁问题
为了解决因为网络流量过大造成的瓶颈问题以及提高数据库的访问效率,需通过数据库连接池技术实现数据库连接,实现多个请求共享公用资源。
死锁产生的原因正是由于事件处理线程和访问网络线程共享了共同的数据--MIDlet对象。两个线程都为获得MIDlet资源而相互争执,互不相让,也就出现了线程死锁。为了解决操作的不完整性问题,在JAVA语言中引入了对象互斥锁的概念,用来保证共享数据操作的完整性。每一个对象都应用于一个可称为互斥锁的标记,这个标记用来保证在任一时刻只能有一个线程访问该对象。关键字synchronized与对象的互斥关系,当某个对象用synchronized修饰时,表示该对象在任一时刻只能有一个线程访问[5]。
JAVA技术使用wait()和notify()来解决线程之间的交互。如果线程对一个同步对象x发出一个wait()调用,该线程会暂停执行,直到另一个线程对同一个同步对象x也发送一个wait()调用。
然而为了让线程对一个对象调用wait()和notify(),线程必须锁定那个特定的对象,也就是说,只能在他们被调用的实例的同步块内使用wait()和notify()。而当线程执行包含对一个特定对象执行wait()调用的同步代码时,那个线程被放到了相关对象的等待池中,调用wait()方法的线程会自动释放对象的锁标志。调用wait()方法时必须进行异常处理。
另一方面,在对一个特定对象执行notify()调用时,将对象的等待池中移
上一篇:
毕业设计(论文)3G时代手机通讯的风险word文档
下一篇:
还记得,那年的风车吗?