1、第3单元:信息系统的设计与开发3.1信息系统的设计一个信息系统的建立,首先从解决实际问题开始,即我们必须知道 为何要建立该信息系统。接着我们需要思考建立该信息系统是否可行, 即需要进行项目的可行性分析。可行性分析是在项目投资决策前,对拟建项目进行全面的社会、技术、经济分析与论证,并对其做出可行或不可行评价的一种科学方法。A、可行性分析1.社会可行性。主要从政策、法律、道德、制度等社会因素论证软件项目开发的可行性和现实性。其中,最重要的是运行环境可行性和法律可行性。2.技术可行性。主要是从技术角度出发,决定软件项目开发的可行性。技术可行性分析包括以下几个方面:(1)在限定条件下,功能目标是否能达
2、到;(2)利用现有技术,性能目标是否能达到;(3)对开发人员数量和质量的要求,并说明是否能满足;(4)在规定的期限内,开发是否能完成。3.经济可行性。通过比较成本和效益(包括直接经济效益和间接社会效益),可以判断要立项的软件项目是否值得开发。经过以上三方面的可行性分析,才能决定该信息系统是否需要开发。如果确定要开发,接下来的工作就是对项目进行需求分析。B、需求分析需求分析是从客户的需求中提取出系统能够帮助用户解决的业务问题,通过对用户业务问题的分析,确定系统的功能、性能等,最终描述为具体的信息系统需求规格说明。不同人的需求是不同的。普通用户一般不关心系统如何实现,对系统的技术细节不感兴趣;而信
3、息系统开发者则需要了解系统如何工作等更详细的内容,因为他们关心系统将如何支持业务过程。只有信息系统 开发者和用户在对系统需求达成一致之后才能开始设计系统,否则,对 需求定义的任何改变都可能导致开发上的大量返工。因此,系统的需求分析应该是开发人员和用户或客户-起完成的。C、数据存储通过观察图书管理信息系统的功能层次图,大家是否发现了这样一个问题:信息系统要采集信息,一定会产生数据,这些数据存储在什么地方才能让系统很方便地找到呢?1.数据可以存储在自定义的文件中。2.数据可以存储在自己建立的电子表格( 如Excel)中。3.数据可以存储在专用的数据库中。D、概要设计概要设计是用户需求与软件详细设计
4、之间的桥梁,是将用户目标与需求转换成具体的功能界面设计方案的重要阶段。概要设计需要对软件系统的设计进行考虑,包括系统的基本处理流程、系统的组织结构、模块划分、功能分配、接口设计、运行设计、数 据结构设计和出错处理设计等,为软件的详细设计提供基础。显然,概要设计建立的是目标系统的逻辑模型,与计算机无关。概要设计报告由开发者根据需求分析报告的要求进行编写。完成概要设计后,就要进行详细设计,然后进行编码实现及测试。E、信息系统的生命周期-个信息系统的研制,从问题的提出开始,经过开发、使用、维护、修订,直到最后终止使用而被另一个信息系统所取代,就像是一个生命体从孕育、出生、成长到最后消亡,这个状态变化
5、的过程称为信息 系统的生命周期( life cycle )信息系统的生命周期可划分为问题定义、可行性研究与计划、需求分析、概要设计、详细设计、编码实现、测试、使用和维护几个阶段, 相邻的阶段既相互区别又相互联系,每个阶段都以前一阶段的工作成果为基础。F、快速原型模型对于如何开发一个信息系统,我们已经有了一定了解。前面的学校图书管理信息系统的开发,采用的方法是先快速、粗略地设计一个系统模型,然后交给用户即学校进行审核或评估,再根据学校提出的修改意见和需求进一步修改、 完善系统:之后将修改过的系统再交给学校评估, 由此循环反复,最终形成一个确定的系统。这种开发模型被称为快速原型模型。使用快速原型模
6、型的基本过程如下,如图3. 1.5所示。(1)用户和开发人员根据初始需求,共同制订一个项目计划。(2)用户和开发人员利用快速分析技术,共同定义需求和规格。(3)设计者开发一个系统原型。(4)设计者演示系统原型,用户来评价性能并识别问题。(5)如果系统原型不可行,重新设计或选择系统原型。如果对系统原型不满意,则修改系统原型。循环执行这个过程,直至用户满意为止。(6)在确定的系统原型的基础上进行更详细的设计、开发和完善。(7)运行系统并进人系统维护阶段。G、瀑布模型对管理信息系统,还可以按照信息系统生命周期划分的不同阶段 顺序进行开发,仔细考虑每一-个细节问题,最终形成一个相对完整的系统,交付用户
7、使用。瀑布模型是从时间角度对软件开发和维护的复杂问题进行分解。如图3.1.6所示,该模型规定了自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。它的开发过程是通过一系列阶段顺序展开的。该模型的含义如下第一,必须等前一阶段工作完成后,才能开始后一阶段的工作。第二,前一阶段的输出文档是后一阶段的输人文档。只有前一阶段的输出文档正确,后-阶段的工作才能获得正确的结果。相邻两个阶段具有因果关系,紧密相连。3.2数据库的构建A、Access可视化操作界面Access是由微软发布的关系数据库管理系统,是Microsoft Office的系统程序之一。在Access程序中,仅通过直观操作而不需要编写代码
8、就 能够创建、修改、删除数据库,这种操作方式称为可视化操作。具有可视化操作功能的程序界面称为可视化操作界面。可视化操作降低了程序设计的门槛。B、数据类型在表的设计视图中,每一个字段都有数据类型,Access支持多种数据类型,如文本、数字、日期/时间等。(1)文本。在Access 2010及之前的版本中,这种数据类型最多允许255个字符或数字。Access默认的文本最多是50个字符,可以通过设置“字段大小”属性控制可输人的最大字符长度。(2)数字。数字类型数据用来存储进行算术计算的数字数据。用户可以设置“字段大小”属性,定义-一个特定的数字类型,如“字节”“整型”“长 整型”“单精度型”“双精度
9、型”“小数”等类型。由于数据库中通常不保存数量单位,用数字来描述事物数量时,要注意单位的统一 。(3)日期/时间。日期/时间类型用来存储日期、时间数据,每个日期/时间字段需要8个字节的存储空间。C、在数据库中存储多媒体数据信息系统的数据库除了要存储文本信息之外,还可以存储图片、音频、视频等多媒体数据信息。通常多媒体数据并不直接存储到数据表中,而是以文件的形式存储在服务器的硬盘之中,数据表仅存储多媒体 数据的地址信息。当用户需要浏览多媒体信息时,Web服务器根据数据库中的多媒体文件地址向用户提供相应的多媒体数据。3.3信息系统的数据输入A、表单在HTML文件中,表单用于接收用户的各种输人,用户单
10、击按钮提交表单时向服务器传输数据,从而实现用户与Web服务器的数据传递。在HTML文件中,网页中的很多对象(或称元素)用成对的标记表示,如表单用表示。form标记中的action和method为表单的属性。action表示表单数据将提交给哪一个 程序处理。method表示表单数据的传递方式。常见的传递方式分为get和post。以get方式传递数据,浏览器将在地址栏中呈现传递的数据;以post方式传递 数据,数据不会出现在地址栏中,所以适合传递敏感数据。此外,以get方式提交的数据量比较小,通常为2KB以内; post方式理论上没有数据量大小的限制,但为了保证系统的稳定运行,通常会限制在2MB以
11、内。B、表单元素用户向信息系统提交的数据多种多样,为了便于用户的操作, HTML定义了多种类型的表单元素。部分表单元素的网页呈现示例与功能如表3.3.1所示。说明:(1)单选框通常按组使用,同属一组的多个单选框的name属性相同。(2) HTML定义了三种按钮,用type属性加以区分。三种按钮的 type属性分别为button、submit 和reset。button为普通按钮。submit为提交数据到服务器的按钮。reset为清除表单中所有输人数据的按钮。C、交互交互( interaction)指人工制品在特定场景下的反应方式。用户使用各种信息服务过程中的感觉就是一种交互体验。从用户角度来说
12、,交互设计是一种让产品变得更易用、有效、令人愉悦的技术;从设计者角度来说,要进行交互设计,必须了解目标用户的期望,了解用户在同产品交互时彼此的行为,同时,还包括了解各种 有效的交互方式,并对它们进行增强和扩充。D、用户与服务器之间的通信用户通过浏览器访问信息系统的过程可以分为以下几个主要步骤。1.用户在浏览器地址栏中输入地址,浏览器根据地址向Web服务器(或称应用程序服务器)发起访问应用程序的请求。2.Web服务器根据用户提交的网址查找应用程序文件,如果Web服务器找到了文件,就将处理结果返回给用户;如果没有找到文件,则默认给用户返回-个404错误(表示文件不存在)。3.如果用户请求的应用程序
13、文件要求访问数据库服务器,Web服务器就向数据库服务器发起访问请求。4.数据库服务器根据Web服务器发来的请求,向Web服务器返回操作结果或是数据集合,再由Web服务器根据应用程序文件的要求进行相 应处理之后返回给浏览器供用户浏览。E、结构化查询语言Structured Query Language简称SQL,译为结构化查询语言,是关系数据库的标准语言。SQL语言功能很强,但表达很简单,用户只需要告 诉数据库管理系统“做什么”,而无须指明“怎么做”,这大大降低了 使用难度。SQL的功能不仅仅是查询,它还能够实现创建、修改、删除数据库对象以及对数据表中的数据进行增、删、改等操作。SQL语言不区分
14、大小写,但在实际使用时,SQL的关键字应大写, 用户自己定义的内容用小写。F、插入命令SQL的插人命令( INSERT命令)用于向数据表中插入记录。 INSERT命令的基本格式为:INSERT INTO表名(字段1,字段.VALUES (值1,值.例INSERT INTO学生表(学号,姓名,年龄)VALUES (001;李晓峰,18)该语句的功能是将(001,李晓峰,18)插入学生表中。 应注意值和字段之间的对应关系。在SQL语句中,文本类型数据的值用一对英文半角单引号表示,数字数据直接用数字表示。日期数据用3.4信息系统的数据处理A、session session可译为会话,可以用来保存用户
15、(客户端)的状态值。当用户打开浏览器并产生一-个session之后,服务器将为用户保存这个session,直 到这个session失效或用户关闭浏览器为止。在Web开发中,常常利用session进行跨页面的参数传递。以用户名信息的传递为例,用户打开浏览器输人用户名并提交登录时,服务器产. 生并保存session变量;在此后需要用到用户信息的网页中,只需要调用保存的session变量即可。例#用户登录成功时定义session变量,保存用户编号studentNumberrequest.sessionuserID= studentNumber#在需要使用用户编号的页面调用session变量,该变量值
16、通常作为数据库查询的关键字studentNumber = request.session.get(userID)str_ Select = SELECT * FROM 学生表 WHERE 学号= %s %studentNumberB、查询命令( SELECT )SELECT命令用于在数据表中查询记录。SELECT命令的基本格 式为:SELECT字段1,字段2, . FROM表名WHERE条件例如,从学生表中查询年龄大于16岁的学生的学号、姓名、性别等 信息,查询语句为:SELECT学号,姓名,性别FROM学生表WHERE年龄16查询所有女生的学号和姓名,查询语句为:SELECT学号,姓名FRO
17、M学生表WHERE性别=女WHERE子句为可选项,SELECT语句中不包括WHERE子句时表示选择所有的记录。如果在WHERE子句中包括多个条件,需要使用“AND”和“OR”进行条件的连接。其中,“AND” 表示同时满足“AND”两端的条件;“OR”表示满足“OR”两端任意-一个条件。例查询学生表中年龄大于16岁的所有男生的学号和姓名,查询语句为:SELECT学号,姓名FROM学生表WHERE年龄 16 AND性别=男查询学生表中年龄小于16岁或性别为“男”的学生信息,查询语句为: SELECT* FROM学生表WHERE年龄16 OR性别=男C、模糊查询( SELECT WHERE LIKE
18、 )模糊查询主要是指在SQL查询语句中用特殊的符号( 通配符)来代替零个、一个或多个任意的字符,以查找部分信息准确、部分信息不准 确的数据。“%”和“_”是SQL语言的特殊符号。“%”表示零个或任意多个字符,“_”表示一个任意的字符。比如,在查询语句中用通配符来表示“姓名”字段的值,则“李%”表示 所有姓李的学生,“%李%”表示姓名中含有“李”的所有同学;“李_” 表示姓名中一共有两个字,其中第一个字为“李”的所有同学。注意:在Python中, %为转义符。要输出“%”,不能直接输人“%” ,而是应该输入“%D、UPDATEUPDATE命令用于更新数据表中的数据,其格式为:UPDATE表名SE
19、T列名=值WHERE条件WHERE条件为可选项,当WHERE条件存在时,UPDATE将修改指定表中符合条件的记录;当WHERE条件不存在时,将修改指定表中所有数据。.3.5信息系统的数据呈现A、聚合查询在SQL语句中,聚合查询( aggregate query )是指通过包含-一个聚合函数( aggregate function )来汇总多个数据项的值。聚合函数对一组值执行计算并返回单一的值。常见的聚合函数包括求和函数SUM()、求平均值函数AVG()、求最大值函数MAX()、求最小值函数MIN()、计数函数COUNT()等。除了COUNT以外,聚合函数忽略空值。聚合函数经常与SELECT语句
20、的GROUP BY子句一同使用。B、TOP子句在SQL语句中,TOP子句用于规定要返回的记录的数目。对于拥有数千条以上记录的大型表来说,TOP子句是非常有用的。TOP子句以两种方式指定输出的记录数,-种是直接指定输出的数量, 另一种是指定记录的百分比。TOP子句的具体使用方法如下所示。例如,从学生表中选择前两条记录:SELECT TOP2 * FROM 学生表例如,从学生表中选择前50%的记录:SELECT TOP 50 PERCENT * FROM 学生表C、ORDER BY子句在SQL语句中,ORDER BY子句用于根据指定的列对结果集进行排序。ORDER BY子句默认按照升序对记录进行排
21、序。如果你希望按照降序对记录进行排序,可以使用DESC关键字。根据姓名降序输出所有数据,SQL语句为:SELECT* FROM 学生表 ORDER BY姓名DESCD、MVC框架模型一视图一控制器( MVC )把代码的定义和数据访问的方法(模型,Model)与请求逻辑(控制器,Control)以及用户接口(视图,View)分开来。这种设计模式关键的优势在于各种组件都是松散结合 的。这样,页面设计师可以改变HTML页面的样式而不用接触Python 代码;数据库管理员只需要关心数据库和数据表的结构设计而不用考虑数据如何访问。由此,从事系统开发的人员能够更好地进行分工合作,提升开发效率。E、CSSCSs ( Cascading Style Sheets,层叠样式表)是一种用来表现HTML对象显示属性的语言。HTML标记中的style属性即为该标记的CSS 代码。style属性的取值与其他属性的取值有所不同。其他属性的值为具体 的数据,如标记的name属性、width 属性。style 属性的值为一段代码,能够为该标记的一个或多个属性赋值,更为精细地描述对象的显示状态。F、HTML的表格在HTML中,用来定义一个表格。表格包括若干的行,每一行包括若干单元格。一个两行三列的表格可以表示为:第一行第一格第一行第二格第一行第三格第二行第一格第二行第二格第二行第三格