已阅读5页,还剩71页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
成都理工大学工程技术学院毕业论文基于Android手机应用开发程序设计-学生系统作者姓名:彭应智专业名称:11级通信工程指导教师:李湘文 讲师基于Android手机应用开发程序设计摘要本文研究分析了Android平台的系统架构和组件模型,接着解析了Android新技术HTML5+。在此基础上,基于Android平台设计和开发手机快捷学生信息查询软件。本系统界面友好、操作便捷,具有良好的可扩展性和可维护性;系统经过测试,可以稳定运行,能够满足手机用户的基本需求。本系统采用C/S架构,使用Java搭建服务器,其中使用hibernate构建持久层,使用FastJSON把对象编译成JSON数据,利用Servlet向客户端发送,使用阿里云数据库作为网络数据库。移动端是使用新兴技术HTML5+进行书写。该技术使用HTML5+CSS+JS进行书写,通过HTML5+SDK编译可以同时生成Android平台APP和IOS平台APP。III下载地址:/MyStudentSystem/download.html关键词:学生系统 Android HTML5+AbstractIntelligent mobile phone with a step by step into the lives of ordinary people, it will become the main device to obtain information. Therefore, services of mobile phone will have great development space, fast query mobile phone software is one of them. The Android platform offers users very convenient and quick query function, which will provide quick query design and implementation of service provides a better platform. In addition, Android platform is basically free, so can effectively reduce the cost of software, finally let each user will be free to get information, but also contribute to the popularity of mobile phone quick query service.This paper analyzes the system architecture and the component model of Android platform, and then analyze the new technology of Android HTML5+. On this basis, based on the Android platform design and development of mobile phone quick student information query system. The system has friendly interface, convenient operation, has good scalability and maintainability; system has been tested, can stable operation, to meet the basic needs of mobile phone users.Keywords: Student system,Android,HTML5+目录摘要IAbstractII目录III前言- 1 -1 简介- 2 -1.1 系统简介- 2 -1.2 安卓简介- 2 -2 技术概述- 6 -2.1 安卓端开发技术- 6 -2.1.1 HTML5+- 6 -2.1.2 Mui- 7 -2.1.3 Ajax- 7 -2.1.4 JS- 8 -2.1.5 JSON- 10 -2.2 Web服务器端开发技术- 12 -2.2.1 Servlet- 12 -2.2.2 Hibernate- 14 -2.2.3 Fastjson- 16 -2.3 数据库技术- 17 -2.3.1 MySQL数据库- 17 -2.3.2 SQL- 18 -3 学生系统分析与设计- 19 -3.1 需求分析- 19 -3.1.1 目标- 19 -3.1.2 需求陈述- 19 -3.1.3 ER图- 19 -3.1.4 数据字典- 25 -3.2 数据库设计- 25 -3.2.1 数据库需求分析- 25 -3.2.2 数据库设计图- 25 -3.2.3 数据库逻辑结构设计- 26 -4 程序设计- 29 -4.1 服务端设计- 29 -4.1.1目录结构- 29 -4.1.2模块设计- 31 -4.2 移动端设计- 33 -4.2.1 目录结构- 33 -4.2.2 登录模块设计- 35 -4.2.3 设置模块设计- 35 -4.2.4 主界面设计- 36 -4.2.5 公告详情设计- 36 -4.2.6 成绩查询设计- 36 -4.2.7 图书查询设计- 36 -4.2.8 图书详情设计- 37 -4.2.9 快递模块设计- 37 -4.2.10 个人信息设计- 37 -5 系统测试- 38 -5.1 系统测试的目标- 38 -总结- 39 -致谢- 41 -参考文献- 42 -附件1 数据字典- 43 -附件2 数据库设计- 49 -附件3 系统测试结果- 57 - 1 -前言当今社会的生活节奏越来越快,人们对手机的要求也越来越高,由于手机市场发展迅速,使得手机操作系统也出现了不同各类,现在的市场上主要有三个手机操作系统,Windowsmobile,symbian,以及谷歌的Android操作系统,其中占有开放源代码优势的Android系统有最大的发展前景。在学校绝大多数学生均拥有自己的手机,故而如果我们拿出手机即可查询学校与我们有关各种信息岂不快乎。为此笔者在此为大家提供一款方便快捷的查询软件是具有不错的意义的。可方便学生随时随地查看学校相关的各种信息,如:课程信息,成绩信息,图书信息,个人信息,快递信息等。本文是说明一个以MYSQL数据库与J2EE搭建的服务器和以HTML5+为开发技术的移动端的综合查询服务移动APP。使用稳健的java企业级开发搭建服务器,快捷、稳定、安全。使用hibernate加快数据库查询速度,方便快捷。使用阿里巴巴公司的FastJSON进行快速的JSON编译。使用新兴技术HTML5+作为移动端开发技术,方便、快捷、开发成本低。使用Mui前端框架,实现统一、快捷、美观的应用界面搭建。1 简介1.1 系统简介在学校,教务管理系统是大家常逛的学校网站之一,因为在这里有大家关心的成绩、选修课等相关信息。其次是学校咯大的图书馆,要找寻自己心仪的书,是比较花费时间,故而图书馆系统也是相对爱逛的系统之一,最后是学校快递方面是比较空白的,除了常逛BBS或没事去去快递室的人员之外,学校快递尤其是EMS快递的通知是极其不到位的。而今,本人的学生系统移动客户端,是一个以学生为核心,满足学生在校的各种需求。如:成绩查询,图书查询,课程表查询,邮件查询,公告查看等。也就是说,本人将以上三大块进行了融合,产生出该设计的灵感。经过分析得知,本APP是一个需要联网,多个客户端共享数据的模式,所以我们需要一个统一的服务器来处理他们的请求,给予他们需要的数据和服务。在这里笔者选择使用我们的J2EE技术来开发服务器,将各种数据封装成为对象便于操作和处理。服务器与客户端使用当下主流数据传输格式JSON,这种格式的传输速度快,具有跨平台性、可读性。因为本系统是一个网络应用,要使用网络来请求我们的服务器,服务器再对数据库进行操作。既在服务端对数据的相关管理操作,在移动端主要进行相关的查询。故而本系统结构模式如图1.1所示移动终端服务器数据库图1.1 模式结构本论文重点为移动APP的开发,故服务器对数据库的操作不为本文内容,但因本系统涉及对数据的查询操作,所以本系统需要说明如何对数据库访问,并整合数据使用JSON向移动APP提供数据。在移动端使用HTML5+技术为核心,mui为控件框架。为用户在各个界面搭建统一的界面风格,舒适的使用环境。HTML5+,这是一个新兴技术,该技术既有开发简易、跨平台性,笔者使用该技术进行我们的开发。界面的样式使用mui框架,统一规范的进行界面设计。本系统界面主打清爽、干净、简约的风格。1.2 安卓简介Android基本上就是一种嵌入式Linux系统再加上一些重要的手机应用开发软件,如果深入研究其系统架构,其整体自底向上由4个主要层次构成,包括Linux Kernel(Linux内核层)、Library(函数库)和Android Runtime(Android运行时库)、Application Framework(应用软件架构)、Application(应用程序),如图1.1所示。图1.1 Android系统架构(1) Linux Kernel(Linux内核层):Android基于Linux2.6提供核心系统服务,负责硬件的驱动程序、网络堆栈、电源、系统安全机制、进程管理以及内存管理等功能。Linux Kernel也作为硬件和软件之间的抽象层,它隐藏具体硬件细节而为上层提供统一的服务,分层的好处就是使用下层提供的服务而为上层提供统一的服务,屏蔽本层及以下层的差异,当本层及以下层发生了变化不会影响到上层。特别的是,这个内核操作系统并非GUN/Linux的,所以其系统库、系统初始化和编程接口都喝标准的Linux系统有所不同。它没有采用虚拟内存文件系统,而是采用YAFFS2文件系统。(2)Library(函数库)和Android Runtime(Andriod运行时库):Library(函数库)由大多数开放源代码的函数库组成,包含一个C/C+库的集合,供Android系统的各个组件使用。这些功能通过Android的应用程序框架(ApplicationFramework)展示给开发者,例如准C函数库Libc、OpenSSL、SQLite等;网页函数库WebKit负责Android网页浏览器的运行;媒体库基于PacketVideo的OpenCORE,这些库支持播放和录制许多流行的音频和视频格式,以及静态图像文件,包括MPEG4、H.264、MP3、AAC、AMR、JPG、PNG;界面管理,管理访问显示子系统和无缝组合多个应用程序的二维和三维图像层;LibWebCore,新式的Web浏览器引擎,驱动Android浏览器和内嵌的Web视图;SGL,基本的2D图形引擎;3D库,基于OpenGLES1.0APIs的实现。所有应用程序都可以使用的强大而轻量级的关系数据库引擎。Android Runtime(Android运行时库)是和Library(函数库)并行的,在此提供的Android特有的Java内核函数库与可转换的Java运行码Bytecode,为Android专属的Dalvik Executable(.dex)文件格式的dalvik虚拟机,可以通过Java语言编写Android应用程序,并在Android平台上同时运行多个Java应用程序。Dalvik虚拟机依赖于Linux内核提供的基本功能,如线程和底层内存管理。Dalvik虚拟机可执行文件格式是.dex,dex格式是专为Dalvik设计的一种压缩格式,适合内存和处理器速度有限的系统。大多数虚拟机包括JVM都是基于栈的,而Dalvik虚拟机基于寄存器的。(3) ApplicationFramework(应用软件架构):它是所有Android重点应用程序FramworkAPI的总集合,主要的目的是让程序开发者可以更方便地使用这些常用的应用程序进行设计架构,以便更快速地开发Android应用程序。而这些常见的API有显示功能,如消息方块、条列消息、按钮、内嵌式浏览器等;消息提供功能,如访问信息、分享信息;资源管理功能,如图形、地方化字符串、布局文件等;提供消息功能,主要用来显示警告消息、特别是当使用者操作错误时,等其它功能。所有的应用程序其实是一组服务和系统,包括视图,丰富的、可扩展的视图集合,可用于构建一个应用程序。包括列表、网格、文本框、按钮,甚至是内嵌的网页浏览器。内容提供者,使应用程序能访问其它应用程序的数据,或者共享自己的数据;资源管理器,提供访问非代码资源,如本地化字符串、图像和布局文件;通知管理器,使所有的应用程序能够在状态栏显示自定义警告;活动管理器,管理应用程序生命周期,提供通用的导航回退功能。(4) Application(应用程序):最上层的应用程序都是用Java语言开发的应用程序,例如Google Maps、即时通信工具、E_mail、浏览器、计算机、MP3播放器、通讯本等。2 技术概述从系统的体系结构上看,本学生系统是采用公共数据库,学生客户端(安卓客户端)的一种客户端安卓软件。整个学生系统主要由数据库服务器、Web服务器和安卓客户端三个部分组成。相应地,本系统的实现技术主要包括浏览器端开发技术、Web服务器端技术、数据库服务器技术和安卓端开发技术等。2.1 安卓端开发技术安卓端开发技术中,本系统使用最新的开发技术HTML5+、Mui前端框架、Ajax异步通讯、JS动态控制等2.1.1 HTML5+通过 HTML5 开发移动 App 时,会发现 HTML5 很多能力不具备。为弥补 HTML5 能力的不足,在 W3C 组织,推出 HTML5+。HTML5+扩展了 JavaScript 对象 plus,使得 js 可以调用各种浏览器无法实现或实现不佳的系统能力,设备能力如摄像头、陀螺仪、文件系统等,业务能力如上传下载、二维码、 地图、支付、语音输入、消息推送等。使用 HTML5+开发的移动 App 并非 mobile web 页面。这是新手最容易混淆的地方。mobile web 的文件存放在 web 服务器上, 而移动 App 的文件存放在手机本地, 编写移动 App的 html、js、css 文件被打包到 ipa 或 apk 等原生安装包,在手机客户端运行。HTML5+ 应用架构图1.2 HTML5+应用框架2.1.2 MuiMUI(Mobile User Interface)是一套基于Html5的,遵循Html5+规范的,中国团队开发的,开源的(遵循MIT 条款),用于手机端界面开发的一套框架。性能和体验的差距,一直是mobile app开发者放弃HTML5的首要原因。 浏览器天生的切页白屏、不忍直视的转页动画、浮动元素的抖动、无法流畅下拉刷新等问题,这些都让HTML5开发者倍感挫败,尤其拿到Android低端机运行,摔手机的心都有; 另一方面,浏览器默认控件样式又少又丑,制作一个漂亮的控件非常麻烦,也有一些制作简单的ui框架但性能低下。mui框架有效的解决了这些问题,这是一个可以方便开发出高性能App的框架,也是目前最接近原生App效果的框架。2.1.3 AjaxAJAX即“Asynchronous Javascript And XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术。通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。传统的网页(不使用 AJAX)如果需要更新内容,必须重载整个网页页面。Ajax 的核心是 JavaScript 对象 XmlHttpRequest。该对象在 Internet Explorer 5 中首次引入,它是一种支持异步请求的技术。简而言之,XmlHttpRequest 使您可以使用 JavaScript 向服务器提出请求并处理响应,而不阻塞用户。2.1.4 JSJavaScript一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML(标准通用标记语言下的一个应用)网页上使用,用来给HTML网页增加动态功能。在1995年时,由Netscape公司的Brendan Eich,在网景导航者浏览器上首次设计实现而成。因为Netscape与Sun合作,Netscape管理层希望它外观看起来像Java,因此取名为JavaScript。但实际上它的语法风格与Self及Scheme较为接近。为了取得技术优势,微软推出了JScript,CEnvi推出ScriptEase,与JavaScript同样可在浏览器上运行。为了统一规格,因为JavaScript兼容于ECMA标准,因此也称为ECMAScript。JavaScript是一种属于网络的脚本语言,已经被广泛用于Web应用开发,常用来为网页添加各式各样的动态功能,为用户提供更流畅美观的浏览效果。通常JavaScript脚本是通过嵌入在HTML中来实现自身的功能的。是一种解释性脚本语言(代码不进行预编译)。主要用来向HTML(标准通用标记语言下的一个应用)页面添加交互行为。可以直接嵌入HTML页面,但写成单独的js文件有利于结构和行为的分离。跨平台特性,在绝大多数浏览器的支持下,可以在多种平台下运行(如Windows、Linux、Mac、Android、iOS等)。Javascript脚本语言同其他语言一样,有它自身的基本数据类型,表达式和算术运算符及程序的基本程序框架。Javascript提供了四种基本的数据类型和两种特殊数据类型用来处理数据和文字。而变量提供存放信息的地方,表达式则可以完成较复杂的信息处理。其用途有:1. 嵌入动态文本于HTML页面。 2. 对浏览器事件做出响应。3. 读写HTML元素。4. 在数据被提交到服务器之前验证数据。5. 检测访客的浏览器信息。6. 控制cookies,包括创建和修改等。7. 基于Node.js技术进行服务器端编程。JavaScript脚本语言具有以下特点:(1)脚本语言。JavaScript是一种解释型的脚本语言,C、C+等语言先编译后执行,而JavaScript是在程序的运行过程中逐行进行解释。(2)基于对象。JavaScript是一种基于对象的脚本语言,它不仅可以创建对象,也能使用现有的对象。(3)简单。JavaScript语言中采用的是弱类型的变量类型,对使用的数据类型未做出严格的要求,是基于Java基本语句和控制的脚本语言,其设计简单紧凑。(4)动态性。JavaScript是一种采用事件驱动的脚本语言,它不需要经过Web服务器就可以对用户的输入做出响应。在访问一个网页时,鼠标在网页中进行鼠标点击或上下移、窗口移动等操作JavaScript都可直接对这些事件给出相应的响应。(5)跨平台性。JavaScript脚本语言不依赖于操作系统,仅需要浏览器的支持。因此一个JavaScript脚本在编写后可以带到任意机器上使用,前提上机器上的浏览器支 持JavaScript脚本语言,目前JavaScript已被大多数的浏览器所支持。不同于服务器端脚本语言,例如PHP与ASP,JavaScript主要被作为客户端脚本语言在用户的浏览器上运行,不需要服务器的支持。所以在早期程序员比较青睐于JavaScript以减少对服务器的负担,而与此同时也带来另一个问题:安全性。而随着服务器的强壮,虽然程序员更喜欢运行于服务端的脚本以保证安全,但JavaScript仍然以其跨平台、容易上手等优势大行其道。同时,有些特殊功能(如AJAX)必须依赖Javascript在客户端进行支持。随着引擎如V8和框架如Node.js的发展,及其事件驱动及异步IO等特性,JavaScript逐渐被用来编写服务器端程序。2.1.5 JSONJSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C+, C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成(网络传输速度)。JSON 结构有两种结构json简单说就是javascript中的对象和数组,所以这两种结构就是对象和数组两种结构,通过这两种结构可以表示各种复杂的结构1、对象:对象在js中表示为“”括起来的内容,数据结构为 key:value,key:value,.的键值对的结构,在面向对象的语言中,key为对象的属性,value为对应的属性值,所以很容易理解,取值方法为 对象.key 获取属性值,这个属性值的类型可以是 数字、字符串、数组、对象几种。2、数组:数组在js中是中括号“”括起来的内容,数据结构为 java,javascript,vb,.,取值方式和所有语言中一样,使用索引获取,字段值的类型可以是 数字、字符串、数组、对象几种。经过对象、数组2种结构就可以组合成复杂的数据结构了。2.2 Web服务器端开发技术Web服务器端开发技术中,最关键的是访问数据库的动态网页技术,包括CGI、ASP、PHP和JSP等。2.2.1 Servlet一个Servlet 是在服务器上运行的一个小程序。这个词是在 Java applet的环境中被创造的,Java applet 是一种当作单独文件跟网页一起发送的小程序,它一般用于在客户端运行,得到为用户进行运算或者根据用户互作用定位图形等服务。服务器上是需要一些程序,常常是根据用户的输入来访问数据库的程序。这些一般是使用公共网关接口(Common Gateway Interface,CGI)应用程序完成的。然而,在服务器上运行 Java,这种程序可使用 Java 编程语言实现。在通信量大的服务器上,JavaServlet 的优点在于它们的执行速度更快于 CGI 程序。各个用户请求被激活成单个程序中的一个线程,而无需创建单独的进程,服务器端进行处理请求的系统开销将明显降低。实现过程:1) 客户端发送请求至服务器端;2) 服务器将请求信息发送至 Servlet;3) Servlet 生成响应页面并将其传给服务器。响应内容动态生成,通常取决于客户端的请求;4) 服务器将响应返回给客户端。一个 Servlet 就是 Java 编程语言中的一个类,它被用来扩展服务器的性能,服务器上驻留着可以通过“请求-响应”编程模型来访问的应用程序。虽然 Servlet 可以对任何类型的请求产生响应,但通常只用来扩展 Web 服务器的应用程序。目前最新版本为 3.1。其生命周期为:1. 客户端请求该 Servlet;2. 加载 Servlet 类到内存;3. 实例化、初始化该 Servlet;4. init() 初始化参数;5. service()(doGet() 或者 doPost());6. destroy()。2.2.2 HibernateHibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。Hibernate的核心接口一共有6个,分别为:Session、SessionFactory、Transaction、Query、Criteria和Configuration。这6个核心接口在任何开发中都会用到。通过这些接口,不仅可以对持久化对象进行存取,还能够进行事务控制。下面对这6个核心接口分别加以介绍。1、SessionSession接口负责执行被持久化对象的CRUD操作(CRUD的任务是完成与数据库的交流,包含了很多常见的SQL语句。)。但需要注意的是Session对象是非线程安全的。同时,Hibernate的session不同于JSP应用中的HttpSession。这里当使用session这个术语时,其实指的是Hibernate中的session,而以后会将HttpSession对象称为用户session。2、SessionFactorySessionFactory接口负责初始化Hibernate。它充当数据存储源的代理,并负责创建Session对象。这里用到了工厂模式。需要注意的是SessionFactory并不是轻量级的,因为一般情况下,一个项目通常只需要一个SessionFactory就够,当需要操作多个数据库时,可以为每个数据库指定一个SessionFactory。3、TransactionTransaction 接口是一个可选的API,可以选择不使用这个接口,取而代之的是Hibernate 的设计者自己写的底层事务处理代码。 Transaction 接口是对实际事务实现的一个抽象,这些实现包括JDBC的事务、JTA 中的UserTransaction、甚至可以是CORBA 事务。之所以这样设计是能让开发者能够使用一个统一事务的操作界面,使得自己的项目可以在不同的环境和容器之间方便地移植。4、QueryQuery接口让你方便地对数据库及持久对象进行查询,它可以有两种表达方式:HQL语言或本地数据库的SQL语句。Query经常被用来绑定查询参数、限制查询记录数量,并最终执行查询操作。5、CriteriaCriteria接口与Query接口非常类似,允许创建并执行面向对象的标准化查询。值得注意的是Criteria接口也是轻量级的,它不能在Session之外使用。6、ConfigurationConfiguration 接口的作用是对Hibernate 进行配置,以及对它进行启动。在Hibernate 的启动过程中,Configuration 类的实例首先定位映射文档的位置,读取这些配置,然后创建一个SessionFactory对象。虽然Configuration 接口在整个Hibernate 项目中只扮演着一个很小的角色,但它是启动hibernate 时所遇到的每一个对象。Hibernate 中提供了两级Cache(高速缓冲存储器),第一级别的缓存是Session级别的缓存,它是属于事务范围的缓存。这一级别的缓存由hibernate管理的,一般情况下无需进行干预;第二级别的缓存是SessionFactory级别的缓存,它是属于进程范围或群集范围的缓存。这一级别的缓存可以进行配置和更改,并且可以动态加载和卸载。 Hibernate还为查询结果提供了一个查询缓存,它依赖于第二级缓存。2.2.3 FastjsonFastjson是一个Java语言编写的高性能功能完善的JSON库。具有高性能,支持标准,功能强大,无依赖,支持范围广,开源等特点。fastjson采用独创的算法,将parse的速度提升到极致,超过所有json库,包括曾经号称最快的jackson。并且还超越了google的二进制协议protocol buf。Fastjson完全支持的标准,也是官方网站收录的参考实现之一。支持各种JDK类型。包括基本类型、JavaBean、Collection、Map、Enum、泛型等。支持循环引用。不需要例外额外的jar,能够直接跑在JDK上。支持JDK 5、JDK 6、Android、阿里云手机等环境。Apache License 2.0代码托管在上,项目地址是/AlibabaTech/fastjson2.3 数据库技术2.3.1 MySQL数据库MySQL是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。MySQL 是最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。MySQL 是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。MySQL 所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,它分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库。由于其社区版的性能卓越,搭配 PHP 和 Apache 可组成良好的开发环境。与其他的大型数据库例如 Oracle、DB2、SQL Server等相比,MySQL 自有它的不足之处,但是这丝毫也没有减少它受欢迎的程度。对于一般的个人使用者和中小型企业来说,MySQL提供的功能已经绰绰有余,而且由于 MySQ L是开放源码软件,因此可以大大降低总体拥有成本。Linux作为操作系统,Apache和 Nginx作为 Web 服务器,MySQL 作为数据库,PHP/Perl/Python作为服务器端脚本解释器。由于这四个软件都是免费或开放源码软件(FLOSS),因此使用这种方式不用花一分钱(除开人工成本)就可以建立起一个稳定、免费的网站系统,被业界称为“LAMP“或“LNMP”组合。2.3.2 SQL结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。结构化查询语言是高级的非过程化编程语言,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统, 可以使用相同的结构化查询语言作为数据输入与管理的接口。结构化查询语言语句可以嵌套,这使它具有极大的灵活性和强大的功能。3 学生系统分析与设计3.1 需求分析3.1.1 目标满足学生所需信息的查询,如成绩,书籍,选课等。3.1.2 需求陈述基于本校学生的所需,本系统提供一下功能:- 11 -1、 成绩查询2、 图书查询3、 邮件查询4、 公告查看3.1.3 ER图E-R图也称实体-联系图(Entity Relationship Diagram),提供了表示实体类型、属性和联系的方法,用来描述现实世界的概念模型。本系统设计方方面面:为用户提供各种相关业务,现在对业务进行分析,得出如下E-R图。图3.1 整体ER图本系统核心实体为人,而人具有姓名,性别,身份证号码,籍贯,手机号码等属性,以姓名和身份证号来区分。图3.2 ER图-实体人本系统核心服务对象,学生继承人的所有属性,并且多出学号的基本属性,同时可以以学号来区分学生。图3.3 ER-学生与人的关系本系统涉及人员还有教师,教师除了人的所有属性以外,还具有教师编号,工资等其他属性,应系统需求,工资等其他属性,不纳入本系统考虑范畴。图3.4 ER-教师与人的关系工作人员,同教师一样,继承于人,多出工号,工作范围,工资等属性,本系统所需附加属性为工号。图3.5 ER-工作人员与人的关系在学校,学生应参加课程,故而增加课程,应即使同一课程,教师,教室等并不统一,暂不列出。图3.7 ER-学生与课程的关系课程由我们的教室进行教学。图3.8 ER-教师与课程的关系学生参加课程,教室上课,同时会产生考试的行为,诞生成绩。图3.9 ER-学生、教师与课程和成绩之间的关系在本系统中,提供图书相关功能,故而有一实体,图书。一本图书,拥有图书编号,图书馆内部编号,图书名称,出版社,作者,价格,类别,以及该图书在本图书馆的位置。图3.10 ER-实体图书我们的学生可以来借书。图3.11 ER-学生与图书的关系对学生借书,还书,续借等行为进行记录,便有了我们的借阅表。图3.12 ER-学生、图书和借阅记录的关系我们的学生聚合,既有班级,专业,系,学院。图3.12 ER-学生和班级的关系我们的工作人员,聚合成为我们的部门。图3.13 ER-工作人员与部门的关系工作人员发布公告。图3.14 ER-工作人员与公告的关系工作人员,管理我们的邮件。图3.15 ER-邮件与工作人员的关系邮件由我们的学生进行查收。图3.16 ER-邮件与学生的关系围绕邮件,工作人员管理邮件,学生查收,产生记录。图3.17 ER-学生与工作人员和邮件的关系3.1.4 数据字典更多详见附录3.2 数据库设计数据库设计(Database Design)是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,使之能够有效地存储数据,满足各种用户的应用需求(信息要求和处理要求)。在数据库领域内,常常把使用数据库的各类系统统称为数据库应用系统。在本系统中,数据库参照ER图,需求分析,数据字典,并按照数据库设计三大范式进行设计。第一范式:实体中的某个属性不能有多个值或者不能有重复的属性。第二范式:数据表里的所有数据都要和该数据表的主键有完全依赖关系。第三范式:每个非关键字列都独立于其他非关键字列,并依赖于关键字,第三范式指数据库中不能存在传递函数依赖关系。3.2.1 数据库需求分析以设计满足系统并能实现功能的数据库为目标,考虑到该系统对数据库要求不是很高,本系统采用MySQL数据。以E-R为核心,根据数据字典进行提取并设计。3.2.2 数据库设计图本系统数据库设计图,共有21张表,以学生表为核心,以满足功能和满足三大范式,具体图例如下:图3.6 ER-学生与课程的关系3.2.3 数据库逻辑结构设计数据库的概念结构设计完毕后,就可以将上面的概念结构转化为某种数据库系统所支持的实际数据模型,也就是数据库的逻辑结构。对于本系统,需要建立含有21个表的数据库。分别如下:表3.1 表的清单名称代码名称代码登录表T_Login公告表T_Notice学生表T_User教师表T_Teacher学生扩展信息表T_UserExpansionInfo课程表T_Course宿舍表T_Dorm成绩表T_Score宿舍类型表T_DormType班级表T_Class图书表T_Book专业表T_Professional图书信息表T_BookInfo系表T_Department图书扩展信息表T_BookExpansionInfo邮件表T_EMS图书类型表T_BookType当前借阅表T_NowBorrow图书位置表T_BookPosition历史借阅表T_HistoryBorrow地区表T_Area各表间,建立外键以表联系,同时以避免意外问题的出现。表3.2 引用的清单名称父表格子表格R_User_Login学生表登录表R_Class_User班级表学生表R_Professional_Class专业表班级表R_Department_Professional系表专业表R_Teacher_Class教师表班级表R_User_Score学生表成绩表R_Course_Score课程表成绩表R_Teacher_Course教师表课程表R_Area_User地区表学生表R_User_EMS学生表邮件表R_BookInfo_Book图书信息表图书表R_BookType_BookInfo图书类型表图书信息表R_Book_NowBorrow图书表当前借阅表R_Book_HistoryBorrow图书表历史借阅表R_User_NowBorrow学生表当前借阅表R_User_HistoryBorrow学生表历史借阅表R_BookPosition_Book位置表图书表R_Ares_UserEInfo地区表学生扩展信息表R_User_UserEInfo学生表学生扩展信息表R_BookEInfo_BookInfo图书扩展信息表图书信息表R_Area_EMS地区表邮件表R_DormType_Dorm宿舍类型表宿舍表R_Dorm_User宿舍表学生表更多详见附录。4 程序设计4.1 服务端设计4.1.1目录结构本系统服务器采用三层架构,通常意义上的三层架构就是将整个业务应用划分为:表现层、业务逻辑层、数据访问层。分层是为了实现“高内聚,低耦合”。采用“分而治之”的思想,把问题划分开来各个解决,易于控制,延展和分配资源。使用规范的B/S架构目录结构,既bean层、dao层、server层、servlet层结构。这样做优点有以下优点:1、开发人员可以只关注整个结构中的其中某一层2、可以很容易的用新的实现来替换原有层次的实现3、可以降低层与层之间的依赖4、有利于标准化5、利于各层逻辑的复用。6、结构更加的明确7、在后期维护的时候,极大地降低了维护成本和维护时间本系统目录文件结构如下图所示:图4.1 目录结构-展开图4.2目录结构 bean层设计Enterprise Java Bean的缩写,担任着应用程序素材的角色,描述Java的软件组件模型,使用hibernate设计本系统所使用的21张表,并创建对应的配置文件,既bean与数据库表的关系,同时创建非数据库对应bean,方便使用。该层穿插于各层之间,为各层提供统一数据交互数据集合,既统一数据语言。 dao层设计DAO(Data Access Object)是一个数据访问接口,数据访问:顾名思义就是与数据库打交道。夹在业务逻辑与数据库资源中间。是对数据库进行增删改查的对应操作类。J2EE开发人员使用数据访问对象(DAO)设计模式把底层的数据访问逻辑和高层的商务逻辑分开.实现DAO模式能够更加专注于编写数据访问代码。 server层设计设计相关逻辑处理相关类业务逻辑层在体系架构中的位置很关键,它处于数据访问层与表示层中间,起到了数据交换中承上启下的作用。由于层是一种弱耦合结构,层与层之间的依赖是向下的,底层对于上层而言是“无知”的,改变上层的设计对于其调用的底层而言没有任何影响。如果在分层设计时,遵循了面向接口设计的思想,那么这种向下的依赖也应该是一种弱依赖关系。因而在不改变接口定义的前提下,理想的分层式架构,应该是一个支持可抽取、可替换的“抽屉”式架构。正因为如此,业务逻辑层的设计对于一个支持可扩展的架构尤为关键,因为它扮演了两个不同的角色。对于数据访问层而言,它是调用者;对于表示层而言,它却是被调用者。依赖与被依赖的关系都纠结在业务逻辑层上,如何实现依赖关系的解耦,则是除了实现业务逻辑之外留给设计师的任务。 servlet层设计设计对移动端服务的相关servlet主要对用户的请求接受,以及数据的返回,为客户端提供应用程序的访问。4.1.2模块设计用户模块设计从request获取mod参数从而进去不同的子功能模块。登陆设计mod参数为login时进入该方法。从request请求中获取LoginName登录名和PassWord密码,调用登陆表的dao层进行查询,查询条件为登录名并根据查到的结果匹配密码,如匹配成功使用响应responds中输出工具printwrite命名为out,向响应输出该登陆情况的实体编译后的JSON数据。否则使用输出工具
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年临泉县医疗事业单位人员招聘考试模拟试题及答案解析
- 2026年罗平县带编教师招聘笔试备考题库及答案解析
- 2026年确山县医疗事业单位人员招聘考试参考题库及答案解析
- 2026年克东县医疗事业单位人员招聘考试参考题库及答案解析
- 2026年云县医疗事业单位人员招聘考试备考试题及答案解析
- 2026年云梦县社区工作者招聘考试备考题库及答案解析
- 2026年盐津县医疗事业单位人员招聘考试备考题库及答案解析
- 2026年巍山彝族回族自治县中小学幼儿园教师招聘笔试备考试题及答案解析
- 2026年青龙满族自治县医疗事业单位人员招聘笔试模拟试题及答案解析
- 2026年平和县医疗事业单位人员招聘考试备考题库及答案解析
- 2026年云南睿城建设项目管理有限公司、云南朗锐工程咨询服务有限公司招聘(6人)笔试备考题库及答案详解
- 第7课《培养德智体美劳全面发展的社会主义建设者和接班人》课件
- 广东2026公需课《加快培育发展新质生产力》题库及答案
- 普外科医疗组长竞聘演讲
- CJT 288-2017 预制双层不锈钢烟道及烟囱
- 中国保险行业协会机动车综合商业保险
- 2024年重庆科瑞南海制药有限责任公司招聘笔试参考题库附带答案详解
- 铁路防雷及接地工程技术规范(TB 10180-2016)
- 工艺岗转正述职报告
- 电气控制及Plc应用技术电子教案
- 化学反应工程(全套课件449P)
评论
0/150
提交评论