1、职场大变样社区():下载毕业设计成品全套资料,全部 50 元以下毕 业 设 计 ( 论 文 ) 任 务 书第 1 页毕业设计(论文)题目:基于 android 的手机选课系统的设计与实现毕业设计(论文)要求及原始数据(资料):1综述手机选课系统的现状和发展前景;2简述 Android 系统的特点;3设计手机选课系统的数据库;4掌握手机选课系统的功能的实现;5. 测试手机选课系统的功能;6训练检索文献资料和利用文献资料的能力;7训练撰写技术文档与学位论文的能力。第 2 页毕业设计(论文)主要内容:1综述选课系统的现状;2简述 Android 系统的特点;3熟悉 Android 的开发环境的配置;
2、4熟悉选课系统的数据库设计的流程;5.掌握手机选课系统的功能的实现;6测试手机选课系统的功能;学生应交出的设计文件(论文):1内容完整、层次清晰、叙述流畅、排版规范的毕业设计论文;2包括毕业设计论文、源程序等内容在内的毕业设计电子文档及其它相关材料。第 3 页主要参考文献(资料):1 张晓叶. 基于 Android 平台高校移动选课系统的设计与实现D. 吉林大学, 2015.2 吕俊逸. 基于 Android 的泛在学习平台的研究D. 北京交通大学, 2015.3 高晓晓. 基于 Android 移动课堂客户端的设计和实现D. 大连理工大学, 2013.4 董涛. 基于 Android 的移动
3、校园客户端设计与实现D. 西安电子科技大学, 2014.5 左浩. 基于 Android 的高校学生信息查询系统D. 西北大学, 2013.6 张峰. 移动信息化在高校信息化建设中的应用研究D. 电子科技大学, 2013.7 王飞. 智能手机在校园信息系统中的应用D. 北京化工大学, 2013.8 Lantzos T, Koykoyris G, Salampasis M. FarmManager: An Android Application for the Management of Small FarmsJ. Procedia Technology, 2013, 8(3):587592.9
4、 Anacleto R, Figueiredo L. Mobile application to provide personalized sightseeing toursJ. Journal of Network data base; mobile phone目 录1 绪论 11.1 选课系统的前景 .11.2 选课系统的现状 .11.3 课题研究的意义 .22 开发环境 32.1 JDK 安装 32.2 Eclipse 安装 .42.3 Android SDK 安装 .52.4 ADT 安装 .52.5 andorid 系统的简介 .52.6 android 框架的介绍 .63 需求分析
5、 103.1 需求分析的目的 103.2 需求分析涉及的方面 103.3 可行性分析 114 系统分析与总体设计 134.1 系统设计的原则和目的 134.2 系统分析 134.3 总体设计 .155 数据库设计与实现 165.1 数据库设计的原则 165.2 数据库中表的设计 186 系统功能实现 206.1 登录界面的设计 206.2 添加用户功能 226.3 修改密码功能 256.4 管理员添加课程 276.5 教师添加学生成绩 286.6 学生界面设计 306.7 学生选课功能 327 系统测试 347.1 软件测试的知识 .347.1.1 软件测试的重要性 .347.1.2 软件测试
6、的分类 .357.2 手机选课系统的测试 35总结 37参考文献 39致谢 40外文文献 42中文翻译 471 绪论1.1 选课系统的前景随着中国的快速发展,中国对高等教育实施了大力改革,中国高校的教育水平也不断的得到提升,现在,在中国互联网信息化技术也得到了高速发展,各种大学的教务办公系统也在各所高校中广泛的被人们使用,在大学改革的过程中学校采用学分制管理制度,使得学生们能够更好地在网上进行选课,以前的选课方式是通过访问学校的教务处进行选课,然而这种选课方式,在平常时间虽然能够满足大多数同学的选课要求,但是,当处于开学的时候,同学都会同时进行选课,这样导致学校的服务器因为同学的访问量过大而使
7、同学们暂时无法使用选课系统,并且学校的电脑数量也难以让全部的学生都同时进行选课,通常同学们为了使自己能够选择到自己所满意的课程,同学们都会提前一段时间在电脑上登录学校教务处选课系统,等待在电脑的旁边,这样同学们为了选课而花费了大量的时间,而不能做到让学生们自己的选择自己喜欢的课程。所以基于 Android 的手机选课系统就会顺利发展起来了。如今,各大高校的教务处选课系统的设计都是很成熟和完善的。手机选课系统的发展只是对现有的网上选课系统的带来的不便进行完善。1.2 选课系统的现状现在绝大多数的大学使用的选课系统基于浏览器/服务器( B/S)的这种传统的设计方法,现在各大高校使用的网上选课系统和
8、以前的人工选课相比的确实实用了很多。这种选课系统使教师们可以在网上进行学生信息的录入,并且也使老师的工作量也减少了很多,大学生在进行课程的选择时也不会像以前一样那么麻烦了,教师们也就不会因为学生要进行选课而延误正常的教学任务。网上选课系统的确给学生们带来了很大便利。但是随着社会的发展,互联网科技的迅猛发展,智能手机也在大学生中被广泛使用,在这种情况下,网上选课系统也已经暴露出了很多的问题,例如:当学生们进行选课时必须要在电脑上进行课程的选择,网上选课系统不能使学生在任何时间,任何地点进行选课,当学校在网上发布一些重要的通知时,你只有通过上网才能了解到这些信息,如果你不是经常地上网,你就会错过一
9、些重要的信息,这样你就因为不知道这些信息而失去一些宝贵的机会,因此网上选课系统已经越来越不能满足学生们的要求了,学生们急需一款可以代替网上选课系统的软件,而手机选课系统不仅能够满足大学生的这种需求,还能够减轻学校由于学生在开学期间由于访问量过高而导致的系统经常失灵现象。1.3 课题研究的意义在如今的高校中,每一所高校都会有自己的一套选课系统来帮助老师学生来处理一些日常的工作,因此一个好的选课系统是非常重要的,对于学校的领导和老师来说是至关重要的,一个好的选课系统能更好的帮助老师处理日常事务,分担老师的压力,也为学生提供一个便利的选课工具,所以手机选课系统必须具备的功能有可以让老师来进行学生成绩
10、的录入和查询,并且还可以查看班级信息,学生可以使用选课系统来进行课程的查询和选择,还可以查看一些课程信息。在选课系统出来以前学校老师一直采用人工进行信息的填写,并把文件进行整理和保存,这种人工进行处理的方式有着很多的缺点,例如:人工进行填写信息时浪费时间,并且工作效率还很低、同时保持文件时文件容易被损坏差。另外如果时间过长,文件的量将会非常大,这种情况当查找文件时带来了巨大的困难。虽然现在各多大学使用了网上选课系统来改善过去人工操作多带来的不足,但是还会有一些问题无法解决,网上选课方式是通过访问学校的教务处进行选课。然而这种选课方式,在平常时虽然能够满足大多数同学的选课要求,但是,选课系统使用
11、的高峰期时,同学都在进行选课,这样导致学校的服务器因为同学的访问量过大而使同学们暂时无法访问系统。而且网上选课系统具有一定的局限性,不能让同学们随时进行选课,因此手机选课系统将是一个很好地选择。2 开发环境开始 Android 的开发之前要先进行开发环境的配置,在配置时还要进行相关的准备,比如相关插件的选择和下载。2.1 JDK 安装开发 android 应用程序的时候,如果只有 java 运行环境是不可以进行 android 应用程序的开发的,需要有完整的 JDK,你可以通过访问网站http:/ 进行下载。2.1.1 第一步:点击我的电脑,接下来选择:属性,选中:高级-环境变量,然后进行系统
12、变量的配置,如图 2-1 所示:图 2-1 环 境 变 量 设 置2.1.2 第二步:单击系统变量下的“ 新建”按钮,设置变量名为 JAVA_HOME,变量名为“JDK 安装路径“ 。然后确认,如图 2-2 所示:图 2-2 JAVA_HOME 路 径 设 置2.1.3 第三步:单击系统变量下的“新建“按钮,设置变量名为 CLASSPATH,变量名为”.;%JAVA_HOME%lib” ,然后确认,如图 2-3 所示:图 2-3 CLASSPATH 路 径 设 置2.1.4 编辑环境变量 Path,在“系统变量“ 列表框中,选中 Path 项, 在后面追加 “%JAVA_HOME%bin”,然
13、后确认,如图 2-4 所示:图 2-4 Path 路 径 设 置2.1.5 单击”确定 ”按钮,完成环境变量。安装 JDK 成功后,你可以在开始菜单中运行 cmd,然后弹出命令窗口,在窗口下运行 java_version 后如果正确显示出 JDK 的版本,那么就说明你安装程序成功了,如图 2-5 所示。图 2-5 cmd 运 行 结 果2.2 Eclipse 安装eclipse 是一个不需要安装就能够进行运行的软件,eclipse 是开放的源代码的,基于 Java 的可扩展的开发平台。安装好 JDK 后,就可以接着安装 eclipse 了,你可访问网站 http:/www.eclipse.or
14、g/downloads/下载,下载完成后至今解压缩到目标文件就行了。2.3 Android SDK 安装安装好 JDK 和 Eclipse 后,安装 Android SDK 时,你可以通过访问http:/ 来下载 Android SDK。首先把 android-sdk_r16-windows.zip 解压缩,并且双击运行 eclipse sdk manager.exe,接下来可以选择自己想安装的 Package 进行安装。2.4 ADT 安装Android 为 Eclipse 特别定制了一个插件,即( ADT) ,使用户能够更好的使用Eclipse 中被 ADT 扩展的功能,使用户快速的建立
15、Android 项目,创立应用程序界面。安装 ADT 插件时,首先需要启动 Eclipse,然后选择 Help-Install New Software,打开 eclipse 的安装界面,如图 2-6 所示:图 2-6 adt 安 装然后单击 Add 按钮,在弹出的对话框的 Name 文本框中输入 ADT,在 Location 文本框中输入下载的 adt 路径,单击 OK 按钮,单击 select all 后再单击 OK;ADT 安装完成后会出现 Eclipse 重启提示界面,重启后使 ADT 插件生效。2.5 andorid 系统的简介Android 系统是是有谷歌公司研发出来的一种免费开发
16、的一个系统,android 系统现在主要使用移动终端,android 系统的功能设计是非常的好的,它在设计时优先考虑了用户使用时的舒适度非常高,并且流畅度也很好,android 在版本的更新上也有重大突破,谷歌公司也在大力支持 android 系统的发展,谷歌公司积极的联合各种硬件商来指定一些规则,使 android 系统能够适应更多的手机。android 系统在设计了良好的系统后,还在不断地退出一些新的版本,更是凭借良好的用户界面获得了使用者们的一直好评,据目前所知在电子市场上 android 的应用设备的使用者已经占据了很大的市场,android 在国际上获得了迅猛的发展,谷歌公司在具体功
17、能的设计上还添加了很多比较使用起来方便的组件,也新增了很多的功能让人们进行使用,增加许多的图案,并且 UI 界面的设计也在不断地改善。2.6 android 框架的介绍通常情况下一个 Android 程序是由以下四大部分所构成即Activity、BroadcastCastReceiver、Service、Content Provider,这四大部分他们分别在Android中发挥着其特定的功能,他们各司其职同时又分工合作共同对程序负责。1.Activity 是 Android 系统中的四大组件之一,在 Activity 中主要用来展示页面的布局,并且负责页面上组件里内容的获取和组件的一些事件监听
18、功能。Activity 在程序中相当于一个容器,Activity 的加载模式共有四种:standard:Activity 如果不在 Manifest 文件中的 Activity 启动模式中进行加载模式的设置,那么它的启动模式就是默认的,当从这个 Activity 中通过程序跳转到另一个Activity 里时,那么后台的程序管理机制就会自动创建一个实例保存在 Task 中,如果现在 Task 栈中的 Activity 的启动情况是:1,2,3,4,4,那么如果在这个时候当用户进行返回操作时栈中的 Activity 将依次弹出在界面上,顺序为:4,4,3,2,1。singleTop(栈顶单例):用
19、户如果在 Manifest 的文件中把 Activity 启动模式中把加载模式设置成 singTop 后,当用户在创建 Activity 时,在 Task 中后台程序允许在栈中有多个相同 Activity,但是不允许几个相同的 Activity 依次被创建在栈中,如果当用户要调用栈顶的 Activity 时,后台程序会自动调用 onNewIntent()方法来创建Activity,例如:当我现在有两个 Activity:S1 和 S2 时,同时 S1 和 S2 里面的实现的功能完全相同,都有可以进行页面跳转的按钮,其中 S1 的启动模式为:standard ,S2 的启动模式时:singTop
20、。当我在进行页面跳转时的顺序为:S1-S2-S2 时,但是在 Task 中的实际的程序跳转为:S1-S2, (后台程序再执行 S2-S2 时,程序自动调用 onNewIntent()方法) 。当我在进行页面跳转时的顺序为:S1-S2-S1-S2 时,但是在 Task 中的实际的程序跳转为:S1-S2-S1-S2,它实际的跳转顺序与预期的顺序是一样的。singleTask:用户如果在 Manifest 的文件中把 Activity 启动模式中把加载模式设置成 singleTask 后,当用户在进行页面之间的跳转时,在 Task 中同一个 Activity 只能有一个实例,当在应用程序中启动它时,
21、如果这个 Activity 在 Task 中不存在,那么后台应用程序就会在 Task 中创建一个新的实例,如果这个 Activity 在 Task 中存在,那么程序就会调用 onNewIntent 方法来创建这个实例,并且同时把这个实例上面的其他Activity 同时进行销毁操作。例如:当我在程序里创建了 3 个 Activity:Z1,Z2,Z3 后,同时在这些实例之间可以进行相互之间的跳转,但是如果在 Manifest 的文件中把 Z2 的启动模式中的加载模式设置成 singleTask 后。当我进行页面之间跳转时,顺序为:Z1-Z2-Z3-Z2 时,但是在 Task 中的实际的程序跳转为
22、:Z1-Z2 。当我进行页面之间跳转时,顺序为:Z1-Z2-Z3-Z2-Z3-Z1-Z2 时,但是在Task 中的实际的程序跳转为:Z1-Z2。后台的应用程序会执行销毁操作吧其他的实例进行销毁。singleInstance:用户如果在 Manifest 的文件中把 Activity 启动模式中把加载模式设置成 singleInstance 后,当用户在程序中进行实例的创建时,实例会独占一个栈,并且这个实例会单独的运行在这个 task 中,在这个 task 中不允许在创建其他的 Activity。Activity 的生命周期就是指一个 Activity 从创建开始到它被销毁时结束。如果大家对于
23、javaEE 技术了解的话,就会知道如果程序员要实现一个 servlet 时,就必须要让自己新建的 Servlet 去继承相应的基类,并且对它里面的方法进行重写,但是其实 android 中的 Activity 的实现机制与 Servlet 有一定的相似,在 Android 中要想创建 Activity 就必须让自己新建的 activity 去继承相应的基类,并且对它里面的一些方法进行重写,创建的 Activity 里面的一切活动,例如:初始化,销毁等操作都是调用Activity 中的一些方法来实现。2.BroadcastReceiverIntent 提供了各种不同 Activity 进行跳转
24、的机制,譬如如果从 A activity 跳转到 B activity,使用 Intent 来实现,如下所示:Intent in = new Intent(A.this, B.class);startActivity(in);BroadcastReceiver 就是指用户可以接受系统和应用中发送过来的广播。当用户需要发送消息时,用户需要在发送消息程序里,把你要进行发送的消息和你想要过虑的信息(action 、category)等都装入到 intent 里面,之后用户就会调用sendOrderBroadcast()或 sendStickyBroadcast()这两种方法,把 Intent 对象以
25、广播方式发送出去。当 Intent 发送以后,所有已经注册的 BroadcastReceiver 会检查注册时的IntentFilter 是否与发送的 Intent 相匹配,若匹配则就会调用 BroadcastReceiver 的onReceive()方法。所以当我们定义一个 BroadcastReceiver 的时候,都需要实现onReceive()方法。并且 android 中提供 BroadcastReceiver 的两种注册方法,一种是在应用程序的AndroidManifest.xml 文件的 receiver 标签中进行设置和注册,并且使用过滤器进行消息的过滤,这种方法就是静态注册,
26、另一种是在代码中进行手动注册,给BroadcastReceiver 指定一个特定的 action,是它能够接受特定的广播,然后通过registerReceiver()方法进行执行。3. Service 是与 activity 最相似的组件,service 与 activity 一样都代表执行的程序,它们之间的区别是:service 一直处于后台运行的状态,用户无法看到它的用户界面,所以它绝对不会到前台来,并且 Service 一旦被启动以后它就开始拥有了属于它自己的生命周期。当程序需要向用户提供界面时就会选择 activity,而当程序不需要向用户提供界面时就不会选择 Service,这样程序
27、可以在后台进行运行。创建 Service 时,用户可以让自己创建类去继承 Service,并且去实现它的onbind()方法,同时用户使用 service 时也必须在 AndroidManifest.xml 文件中的Service 标签下进行注册,当用户启动 Service 时有过两种方法,一种是通过调用startService()方法来启动一个 service,另一种是通过使用 bindService()方法来进行 Service 的启动。对于 service 的生命周期也和 Activity 一样,service 也有独立的生命周期当用户想要关闭 Service 时,用户有两种关闭关闭 S
28、ervice 的方法,一种是用户可以通过调用stopService(intent i) ,另一种是用户通过调用 unbindService(ServiceConnection c)来关闭 Service。4. Content Provider 是有 android 系统的内部系统所设立的, Content Provider 不仅提供了不同应用程序之间如何进行数据传输的方法,同时也使应用程序可以将自己的内部数据给暴露出去,以前我们知道任何一个应用程序都是运行在自己独有的程序运行机制下,数据库中的文件在不同程序之间的共享想要实现是非常困难的,然而ContentProvider 向我们提供一种数据共
29、享的方法,例如:我的手机里有一些联系人但是如果其它应用软件想要使用的话也可以通过 ContentProvider 访问手机中的数据进行使用,ContentProvider 给用户提供了最基本的 CRUD(Create,Read ,Update,Delete)的接口,并且提供了权限保护机制,保护了数据交互的安全性。3 需求分析3.1 需求分析的目的需求分析是基于可行性研究,在分析系统的用户的描述中,通过的人员进行分析概要,摘要为需求的完整定义,然后整理成一系列文件。可行性研究是评估是否值得开发目标系统,是否能解决的问题,需求分析的目的是回答“系统做什么” ,以确保软件产品的未来发展能真正满足用户
30、的使用需求。当创建一个软件系统时,我们首先需要确立自己的任务是什么。任何其他工作都不会像需求分析这样,在出错误之后会这么严重影响随后的执行系统,并在随后的修工作会如此的困难。3.2 需求分析涉及的方面在功能上,需要做分析系统需要做什么,相对于所述目标系统的原始系统需要进行什么样的修改,什么是目标用户,和不同的用户需要通过系统完成什么样的操作等。在性能上,要求系统的反应速度要足够快已满足用户的需求,程序的反应时间也必须要有限制,并且用户的访问量过多时要求系统的承载量足够高,否则会导致服务器奔溃,以及并发用户的要求。在操作环境中,包括为网络设置,硬件设备,以及操作系统和其他软件配置要求。在接口,参
31、与的限制和方法,数据存储媒体和显示要求和其它问题的解决中的数据输入/输出格式的要求。1 得到需求,找出问题从功能,性能,接口和操作环境,以及在目标系统的识别等许多其他方面的开发来解决这些问题,要满足什么限制,通过这个方法来获得需求。通过调查研究,开发人员了解用户的工作模式和要求新系统在功能上更加适应当前用户。此外,在需求的采集上,也能明确使用者对系统的安全性,可移植性和容错率等其它要求。例如,需要多久做一个备份系统,所述操作系统的操作平台,其中该要求包括重新启动系统上允许的最大时间是多少等。采集需求是需求分析的基础。为了有效地获取需求,需求人员应该采取科学的获取需求的方法。在实践中,有很多方法
32、来获取需求,例如,问卷调查,访谈,现场操作,建立原型和研究数据等。3.3 可行性分析(1)技术可行性-手机选课系统需要一台装有 Microsoft Office 软件的电脑,选课系统对电脑本身没有太高的配置要求,处理器最好是:因特尔奔腾五的中央处理器,500G 的大容量硬盘,加上 4G 的内存,配上经久耐磨、定位准确的无线鼠标,这些都为选课系统的开发与设计提供了良好的硬件配置,一般来说目前学校或者是个人的电脑一般都能满足开发的要求。对于软件方面的要求,由于现在的程序开发语言已经都很成熟了,开发时所需要的软件一般都可以从官网或者是其他一些网站上下载,下载完成后就可以进行软件的安装,安装的软件有:
33、eclipse 和 JDK 还有数据库的软件。(2)经济可行性-由于手机选课系统是为学生选课时使用的系统,安装上该应用软件后,即可立马进行使用系统,所以系统成本主要集中在选课系统软件的开发和设计上,当选课系统投入使用后可以为高校节约大量的物力,人力。(3)操作可行性-选课系统设计时,系统界面充分考虑使用人员的操作习惯,使用起来操作简单,使用舒适,保证了软件的用户体验效果,使得老师进行数据录入时能更加迅速、可靠、规范,统计时更加准确,制表时更加灵活,并且系统的适应能力强,易于进行扩充。(4)社会可行性-经过我们的深入调查,绝大多数的带课教师,行政部门的人员和学校领导都在为现在的系统的巨大的和冗杂
34、的工作量感到深深的困扰。所以我认为当他们得知我们开发这套系统后,他们一定都会有一种高兴的感觉,并且对此表示非常愿意在开发和设计过程中给予更多的帮助和支持以及积极的配合我们的工作。手机选课系统的这套系统不仅能够让教师更加清晰的掌握自己的学生选课的信息,同时也让在校大学生自己更加容易准确和方便选课自己所喜欢的课程,当处于开学的时候,同学都会同时进行选课,这样导致学校的服务器因为同学的访问量过大而使同学们暂时无法使用选课系统,并且学校的电脑数量也难以让全部的学生都同时进行选课,通常同学们为了使自己能够选择到自己所满意的课程,同学们都会提前一段时间在电脑上登录学校教务处选课系统,等待在电脑的旁边,这样
35、同学们为了选课而花费了大量的时间,而不能做到让学生们的自己选择自己喜欢的课程。老师也可以使用系统来随时查看学生的选课情况,学生们也可通过我们的系统进行选课来凑够学分完成学业。现在,互联网已经是我们大学生生活中的一个重要组成部分了,上网当然也就自然而然的成为了家常便饭,如果这套系统能够成功的在校园里到实施,这样,我们学生就可以更加方便的进行课程的选择。4 系统分析与总体设计4.1 系统设计的原则和目的基于 Android 的手机选课系统,这个系统设计的目的就是为了满足学生们对于现在各大高校的选课系统的需求,随着社会的发展和中国教育水平的提高,学校选课系统的不足也不断的显现出来,为了给大学生和老师
36、提供一个快捷的方法来处理日常的一些事情,手机选课系统就由此产生了,手机选课系统不仅不会对原有系统产生不良的影响,同学们还能够随时随地的进行选课,和查询课程信息和班级信息,使选课系统变的更加的方便灵活,开学的时候,同学都会同时进行选课,这样导致学校的服务器因为同学的访问量过大而是同学们暂时无法使用选课系统,选课系统不仅能够分担学校服务器的压力,还能够使学生们快速的进行选课。4.2 系统分析在选课系统,有三种类型的用户:管理人员,教师和学生。三个不同的用户具有操作权限和操作内容是不一样的。1. 管理员在登录页面输入用户名和密码后点击登录,页面跳转到首页,管理员可以进行对于学生的个人信息的添加,也可
37、以进行教师信息的添加,添加信息时刻输入姓名,学号,手机号,生日,班级和性别等。管理员可以进入教师管理页面,可以查看当前的教师列表,并且可以点击进行教师信息的查看和修改;管理员可以在学生列表页面,可以查看当前的学生列表,并且可以点击进行学生信息的查看和修改;管理员可以在在班级列表可以开设新的班级;管理员可以查看个人信息,点击查看时自己的信息能正常显示;管理员可以进行退出操作,点击后程序自动退出;管理员可以进行注销登录操作,点击后程序自动退回到首页;管理员可以进行修改密码操作,管理员输入以前的密码和输入新密码点击保存进行修改。管理员用例图如图 4-1 所示:个 个 个个 个 个 个个 个 个 个个
38、 个个 个 个 个个 个 个 个个 个 个 个图 4-1 管理员用例图2. 教师用户在登录页面输入用户名和密码后点击登录,页面跳转到首页,教师可以对学生的成绩进行录入;教师可以查看个人信息,点击查看时自己的信息能正常显示;教师可以进行退出操作,点击后程序自动退出;教师可以进行注销登录操作,点击后程序自动退回到首页;教师可以进行修改密码操作,教师输入以前的密码和输入新密码点击保存进行修改。教师用例图如图 4-2 所示:个 个个 个 个 个 个 个 个 个 个 个个 个 个 个个 个图 4-2 教师用例图3. 学生登录页面输入用户名和密码后点击登录,页面跳转到首页,学生用户可以进行选课;学生可以查
39、看个人信息,点击查看时自己的信息能正常显示;学生可以进行退出操作,点击后程序自动退出;学生可以进行注销登录操作,点击后程序自动退回到首页;学生可以进行修改密码操作和查看自己的选课信息操作。学生用例图如图 4-3 所示:个 个个 个 个 个 个 个个 个 个 个个 个个 个 个 个 个 个图 4-3 学 生 用 例 图4.3 总体设计在 前 面 的 对 该 系 统 的 系 统 分 析 中 , 将 系 统 划 分 成 3 个 模 块 , 如 图 4-4 所 示 :图 4-4 选 课 系 统 的 总 体 设 计5 数据库设计与实现数据库设计系统设计的核心,程序中全部数据都要存储在数据库中因此数据库设
40、计也是软件项目开发中的一个重要部分。5.1 数据库设计的原则1数据库设计完成后避免重复修改当用户在设计数据库时,用户必须对整个项目的运行流程有了比较清晰的思路,对于项目中的一些字段有了详细的认识,当用户设计字段时,就必须对于该字段在以后代码的运行中会发挥什么样的效果有了清楚的认识,用户对表之间的关联关系的设计也必须有很好的考虑,不仅要使表之间的关系明确,更要考虑当用户在使用表时是否能够很好地进行使用,不会发生一些信息的存储异常,当用户完成数据库的设计时,对于程序中的一些代码运行方法和一些功能的实现方式已经有了明确的了解。如果不能做到这种程度,如果当用户进入编码阶段后,发现数据库的设计有了缺陷后
41、,再进行对数据库中的表进行修改,这样会造成一些无法预料到的后果,也会造成一些不可弥补问题,既浪费了时间,有增加了开发成本。2数据库设计时就要考虑到效率和优化问题数据库设计的开始阶段就要通过用户的需求去分析数据库中哪一些表将来程序运行会保存进去数量较多的数据,哪一些表之间的关联关系应该比较紧密一些,哪一些表之间的关联关系应该宽松一些,哪一些表里的字段会进行重复,对于一些数据量比较大的表设计时应该保证用户能够很好地进行查询操作,还要考虑用户执行查询操作时的效率问题,如何用比较少的表来实现用户的全部功能,并且不会造成数据库中的字段冗余。3添加必要的(冗余)字段用户设计数据库时,要考虑一些特殊的字段例
42、如:一些创建时间,更新时间,备注等字段,有时候每一张表中这些字段都会存在这些字段,并不是只有当用户界面或者中显示出来了才在表中建立该字段,设计数据库的人员在设计时要主动添加这些字段以便当将来想要进行添加时又有重新修改数据库,这是非常重要的。4表的关联关系要合理设计数据库时,当表之间的关联关系比较复杂时,用户可以通过专门设计一张关联关系表来专门简化他们之间的关系,使数据库之间的表能够更好被使用,当有几张表被使用时,会有大量的数据被存储进来,这种时候就要要求表的结构能够尽量简单一点,关联关系也要尽量避免,这样会使用户进行使用时不会那么容易出错,也是用户的使用效率变得提高。5表的约束性设计数据库同时
43、也要考虑表的约束条件,设计时这样做可以确保在开发时能够更好地进行,减少了编码时会遇到的问题,等编码完成后再进行测试,这样也可以提高系统的使用效率。6选择合适的主键生成策略数据库设计表时要选择合适的主键生成策略,用户常用的主键生成方法有:自动增长(identity、sequence):当我们再执行程序时,用户向数据库中插入数据时,不需要考虑主键的取值,当这一条记录插入后,数据库的维护系统会自动的为该条记录分配一个值,这样就保证了用户插入的数据不会出错。自动增长类型的字段使用时,由于操作简单,用户使用起来会很方便,但是当数据库之间有关联关系时,不同的表之间获取到的主键值不同,并且当用户因为工作需要
44、要进行数据库的迁移时比较困难,可能会出现错误。手动增长:对于手动增长类型的字段,当用户进行数据的存储时,主键值需要自己进行维护,通常情况下需要建立一张单独的表存储当前主键键值。对于自动增长类型主键,使用时用户可以随时获得最新的主键值,并且也可以确保数据合并过程中不会出现键主值冲突的情况,同时也会有一些缺点,自动增长类型的变量使用时需要建立一张单独的表来进行存储当前值,并且进行使用时必须要进行获取当前的主键值,还要考虑并发冲突。GUID 类型:当用户设计数据库时把主键设置成 GUID 时,数据库中生成主键是自己随机产生一个 128 位的随机数,并且这样不会造成主键值一样,这样在进行使用时,就能够
45、确保在合并数据时,不会由于具有相同主键值而造成出错,直接生成主键值时也会比较方便,使用它时也会造成数据库的内存空间占用比较多,查询时耗费的时间比较多,也需要考虑使用时的并发冲突等,同时也增加了系统的使用的复杂度。5.2 数据库中表的设计该手机选课系统中我设计了 user 表,course 表,notice 表,info 表,banji 表,book 表。(1) user 表的结构user 表主要用于存储一些用户信息,主要用户进入登录,进入该系统,该表的结构如表 5-1 所示。表 5-1 user 表的结构字段名 数据类型 长度 允许空 注释id int 10 否 主键username varc
46、har 50 否password varchar 50 否roletypecn int 10 否birth date 50sex varchar 2 否tel int 11banji varchar 50 否cid int 10(2) course 表的结构course 表主要用于存储一些课程,主要用户进入该系统后,进行课程的选择,该表的结构如表 5-2 所示。表 5-2 course 表的结构字段名 数据类型 长度 允许空 注释id int 10 否 主键title varchar 50 否note varchar 200ndate date 50(3) notice 表的结构notice
47、表主要用于存储一些通知,主要用于用户进入该系统后,能够查看一些通知,该表的结构如表 5-3 所示。表 5-3 notice 表的结构字段名 数据类型 长度 允许空 注释id int 10 否 主键title varchar 50 否note varchar 200ndate date 50 否img varchar 200(4) info 表的结构info 表主要用于存储一些成绩信息,主要用于用户进入该系统后,能够通过这个表进行查询成绩的操作,该表的结构如表 5-4 所示。表 5-4 info 表的结构字段名 数据类型 长度 允许空 注释id int 10 否 主键uid int 10 否us
48、ername varchar 10 否course varchar 50 否score int 4 否(5) banji 表的结构banji 表主要用于用户存储一些班级信息,用户添加班级后信息存储在这个表中,如表 5-5 所示。表 5-5 banji 表的结构字段名 数据类型 长度 允许空 注释id int 10 否 主键title varchar 50 否6 系统功能实现6.1 登录界面的设计图 6-1 登 录 功 能在用户登录界面如图 6-1 所示,我设计了用户名输入框、密码输入框和登录按钮,当用户输入用户名和密码后,系统通过判断用户名和密码是否与数据库中的用户名密码一样,然后判断用户的类
49、别,如果是管理员用户,系统自动跳转到管理员界面,如果是教师用户,系统自动跳转到教师页面,如果是学生用户,系统自动跳转到学生界面。登录功能的代码:用户登录用户名 :密码:自动登录:OffOn登录public class MainActivity extends CordovaActivity public Context ctx = null;private static final String MASTERSECRET = “WWcP8gLcqU6EkWdGmnJJl9“;Overridepublic void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState);super.init();ctx = this.getApplicationContext();MyObj myObj = new MyObj(this);Location myLocat