1、3.3 数据与系统 3.3数据与系统数据与系统 会在人们的日常生活、学习和工作中,大多数问题是包含多种数据 间关系的复杂问题。要解决这些复杂问题,就需要把数据存储在系 统中,以使其发挥更大的作用。 在本节中,我们将通过分析数据库系统的功能,研究系统中的数据、 数据的属性、数据间的关系以及数据的结构,理解数据与系统的关 系,并通过电子表格、Access 和Python等软件管理和分析系统中的 数据,以更好地应用数据。 学习目标学习目标 了解文件和数据库文件的概念。 了解GUI的基本概念,学会设计简单的GUI。 学会根据任务需求,选用恰当的软件处理数据。 体验使用不同工具管理数据的过程,简单了解数
2、据库管理 系统和数据库系统的基本概念。 利用数据结构组织起来的数据必须在系统中才能“活”起来。 本节我们将围绕“旅行小助手系统”项目展开学习,通过项 目活动,认识数据与系统的关系,做到根据系统功能选择所 需数据,让系统充分发挥数据的潜能。 本项目主要包含“探究旅行线路”“走近火车票订票系 统”“探究订票系统功能”和“设计旅行小助手系统” 四个任务。某同学经常和亲友们一起旅游。 结合信息技术课程的学习,他想自己开发一个旅行小助手系 统,用它来解决自已遇到的旅行线路管理、交通乘车指导、 以往旅游相关记录管理等各种问题。我们将通过下面的活动 了解这个系统的构成并熟悉系统,进而尝试帮助他全面地设 计、
3、规划这个系统。 Button(root, text=查询线路, relief=solid,width=10,height=2).pack() 图形用户界面图形用户界面 图形用户界面( Graphical User Interface, GUI )又称图形用户接口,是指采用 图形方式显示的计算机操作用户界面。在Python语言中,tkinter是实现图形 用户界面的模块,可以快速创建GUI应,用程序。我们需要先导人模块,上 面所示的代码用“from tkinter import *”导入tkinter模块,然后就可以运用 相应代码创建矩形容器(Frame)、文本框( Entry)、命令按钮( B
4、utton)、文本标 签( Label)等交互对象。 在现代程序设计中,我们用“对象”建立计算机世界的实体与客观世界 的实体相一致的映射关系,问题的解决方案可以用一些彼此交互的对象来形 象化表示。比如在“旅行线路”例子中,我们利用Python提供的按钮类创建 按钮对象,通过单击按钮的交互方式完成代码的执行过程。 在面向过程的程序设计中,我们关注的是各种类型的数据及其操作;而在 面向对象的程序设计中,我们将数据及其操作隐藏细节后封装为类,函数调 用式的计算演变为对象之间的交互。 活动活动2 更新旅行线路更新旅行线路 该同学对一条新的旅行线路感兴趣,希望将它添加到系统中。线 路情况如下: 桂林,5
5、日游,桂林市区一龙脊梯田一漓江漂流一-骑行之旅一 遇龙河漂流,人均1200元。 在教科书配套资源中找到并打开该同学已收集的旅行线路文 件“旅行线路.txt,了解文件内容。 配套资源中的“添加线路.py”程序用来实现将数据添加到旅行 线路 .txt”文件中的功能, 你是否能按照提示运行该程序并把新 的旅行线路情况添加到文件中呢?完成后,再次打开“旅行线 路.txt”,查看文件内容。对照程序想一想数据存储需要通过哪些 代码来实现。 from tkinter import * root = Tk() #创建一个窗口 root.title(添加线路) #设置窗口标题 root.geometry(600
6、 x100) #设置窗口大小 root.resizable(0,0) #禁止调整窗口大小 var=StringVar() #定义StringVar()类型 def intomap(): #Button按钮激发函数 c=open(旅行线路.txt,a+) #以追加模式打开文件 c.write(var.get()+n) #在文件末尾添加text里的内容 c.close #关闭文件 #在窗口上建一个文本标签 Label(root, text=请输入线路, font=(Arial, 10).pack() #在窗口上建一个文本框 Entry(root,textvariable=var,width=550
7、).pack() #在窗口上建一个Button按钮 Button(root, text=添加线路, command =intomap,relief=solid,width=10).pack() root.mainloop() 文件文件 在解决问题的过程中,我们可以根据需要将数据组织在 一起形成队列、树或图等逻辑结构,这时的数据一-般存 储在内存中,当退出程序时,相关数据也将丢失。如果 需要更持久地存储数据,我们可以将数据以文件的形式 存储到外存储设备中。在活动2中,“线路数据” 是用 文件的形式存储在计算机的磁盘里的。 文件是存储在外存储设备中的相关数据的集合。 Python读写文本文件 在P
8、ython语言中,用open函数把外存储器里的文本文件( .txt)打开,用 write方法将内存中的数据存储到外存储器的文件中,文件操作结束时一 定要用close方法关闭文件。 Python还提供了读写电子文档和电子表格等多种类型文件的模块,可以 很方便地建立起不同计算工具间的联系。 在数据管理技术的发展历程中,文件的使用有助于长期保存数据,并且 实现由专门的软件对数据进行管理,从而减轻人工管理数据的负担。数 据的存储传统上是使用单独的没有关联的文件。比如在活动2中,程序 “添加线路.py”使用文件“旅行线路.txt” 。 现在我们也可以将一些文件 建立关联,形成数据库文件。 任务二走近火车
9、票订票系统 该同学想乘火车从厦门去往成都,他登录12306网站准备购买 车票。 活动1 查找车次 该同学在网站上查找车次,发现厦门并没有直达成都的火车, 而网站提供了多种接续换乘方案,可以任选一个中转站,比 如武汉市(包括武昌、汉口等多个火车站),自己探寻具体的 换乘信息。该同学在网站上查到了一些信息,如图3.3.1和 图 3.3.2所示。由于需要在页面间来回切换,他想利用电子表格 软件将有用的信息整理到一个表中,以方便选择换乘方案。 活动2 整理购票信息 用WPS表格整理数据有时还是不太方便,我们尝试用数据库管理软件 Access管理数据 数据库数据库 在日常生活中,我们通常用电子表格软件来
10、管理数据。 但电子表格软件中的表是有行数限制的,而且在多人共 享和联表查询方面也存在不,足,因此当数据量比较大, 且管理比较复杂时便需要采用更科学的数据管理方法。 在活动中,我们发现12306网站的各种服务功能背后需要 有大量数据,这些数据聚集成“库”,即所谓“数据 库”。数据库是以一定的组织方式存储在计算机中的相 互关联的数据集合 该同学用Access软件为火车换乘数据建立了数据库,如图3.3.4所示。 在数据库中,包含“厦门至武汉车次”和“武汉至成都车次”两个表。 数据表 在数据库中,数据是以二维表的形式组织存储的,称为表。以如图3.3.4所示 的“武汉 至成都车次”表为例,表中的一列称为
11、-一个字段,一个字段对应 车次实体的一-个属性,每个字段都有一个名字,称为字段名,如车次编号、 出发站等。表中的- -行称为- - 条记录,-条记录对应于一个车次实体,保存 有关实体属性的数据。可以唯- -确定- - 条记录的字段称为主键,如车次编号。 若干个车次数据的集合就组成了“武汉至成都车次”表。我们可以对数据表 进行插入、删除、更新等操作。 需要指出的是,数据库中的表与表之间也可以是相互关联的。为不同表中 的两个字段建立关联后,两表中的记录就可以通过这个关系联系在- -起。比 如,在图3.3.4所示的两个表中,换乘站既是前段车程的到达站,又是下段车 程的出发站,可以通过这-一点建立关系
12、。 数据库管理系统 在数据库技术中,数据是如何被科学地组织和存储的?又是如何被高效 地获取和维护的?完成这些任务的是-一个系统软件一数据库管理系统。 数据库管理系统是定义、创建、维护数据库的- -种工具。它允许用户管 理和控制数据库中的数据。常见的数据库管理系统有Sybase、ORACLE、 MySQL、Aces等 任务三探究订票系统功能 活动1查询换乘方案 建立了数据库之后,为了能更方便地查询到换乘方案,可尝试在Access 中建立表之间的“关系”,利用“关系”解决问题。 关系就像绳子将两个“表”联结在一起,我们可以利用“查询”面板中的 “查询设计”选项按照提示创建选择查询,得到查询结果。但
13、查询结果并不 一定理想,比如没有考虑换乘时间的合理性等。武汉三个火车站之间利用地 铁换乘,大约用时半小时。为此,修改查询表达式为: SELECT厦门至武汉车次.*,武汉至成都车次.* FROM厦门至武汉车次INNER JOIN武汉至成都车次ON厦门至武汉车次到达 时间+0.05 武汉至成都车次.出发时间 式中0.05的单位为天,即0.05*24小时=1.2小时, 预留了武汉三站之间的换 乘时间及在火车站的出站、进站时间。 执行查询,结果如图3.3.6所示。在图中,“厦武”为“厦门至武汉”的简 称,“武成”为“武汉至成都”的简称。这个结果可以作为换乘方案。 活动2满足个性化需求 在12306网站
14、中有出发时间段和车型等选择项,可以满足不同旅客 的出行要求。同样,也可以在Access中设置查询条件,解决个性化 需求的问题。 在查找换乘方案时,可以在“查询设计器”窗口的“条件”栏中设 置查询的准则。 数据库的建立、使用和维护等工作仅靠数据库管理系统还远远不够,还 要有专门的人员来完成,这些人被称为数据库管理员。数据库管理员通 过数据库管理系统可以对数据库进行操作和维护。但对于广大普通用户 来说,很难像专业的数据库管理员那样操作数据库,而具有良好交互性 的数据库应用系统可以满足人们简单、方便地使用数据的需求。 数据库系统 数据库系统是由数据库、数据库管理系统(及其应用开发工具)、数据库 应用
15、系统、数据库管理员和用户组成的存储、管理、处理和维护数据的 系统。数据库主要用于存储数据,需要足够大的内存储器和外存储器等 硬件平台的支持。软件部分除了操作系统和数据库管理系统外,还包括 支持特定应用环境开发的软件工具以及开发完成的数据库应用系统。 12306网站是-一个大型数据库应用系统,其他如各类财务管理系统、人 事管理系统、图书管理系统等软件也都是数据库应用系统。 任务四设计“旅行小助手系统” 活动1 设计系统功能和应用程序界面 该同学想通过开发“旅行小助手系统”记录以往出行的信息,以及个人的 旅游经历、爱好等,作为今后安排旅行时的参考。 设计数据库应用系统时,我们一-般自顶向下进行。
16、首先设计总体结构,然后再逐层深人,直至进行每-一 个模块的设计。我们需要先大体地勾画出系统以及每 个模块大致的计算机处理流程,将头脑中构想的处理 过程描述下来。 比如,首先单击“成员管理”按钮,然后出现“成员 管理”子窗口,利用该子窗口可以添加成员信息、修 改成员信息和删除成员信息.。.“旅行小助手 系统” 还可能包含“旅行记录管理”“旅行线路管理”等模 块。根据处理过程,可以设计系统功能和相关界面。 活动2设计系统数据库 了解Python访问Access数据库的步骤 该同学的“旅行小助手系统”界面设计已经完成,但系统功能的 实现需要相关数据的支撑。他想利用系统制订一个乘坐飞机去一 座大家都没
17、有游玩过的城市旅行的计划,这就需要旅客姓名、以 往旅行的城市名称等数据。 因此,他创建了“旅行小助手” 数据库,如图3.3.8所示。他希望 该系统能把所有成员的交通工具要求和以往的旅行城市名称都显 示出来。请你打开教科书配套资源中的“旅行小助手.mdb文件, 分析表内数据和表间数据的关系,看看创建的数据库是否合理, 并且根据小组设计的系统功能修改数据库,以使其更合理。 利用Python访问Access数据库 一般可分 为以下5个步骤: (1 )建立与数据库的连接; (2)根据需要产生记录集; (3 )访问记录集,处理数据; (4)根据需要把处理好的数据更新到数据库中; (5)断开与数据库的连接。 请打开教科书配套资源中的“利用Python访问mdb.py文件,运 行程序,观察运行结果;阅读程序代码,体会利用Python访问 mdb数据库的基本步骤。这个程序利用win32com.client模块访 问Access的mdb文件,因此,需要先下载并运行pywin32安装 包。 数据库应用系统的设计一般包括系统总体结构设计、代码设 计、数据库(文件)设计、输入/输出(I/O) 设计、模块功能与处 理过程设计等步骤。“旅行小助手 系统”在完成了系统界面 设计和数据库设计之后,还需要经过编写应用程序、调试等 环节才能成为真正的应用系统。