查表程序设计
- 格式:doc
- 大小:34.00 KB
- 文档页数:3
题目:列车车次信息的查询与检索专业学生姓名班级学号指导教师指导单位计算机软件教学中心日期2012年5月21日列车车次信息的查询与检索一、课题内容和要求用C/C++设计,能实现对列车车次的信息情况进行电脑管理,建立一个以文件为存储的管理信息系统;能实现对列车车次的信息进行查询与检索、添加、修改等功能,能对列车车次的情况进行记录和管理。
(1)具有简单的字符界面菜单;(2)可以添加和删除列车车次信息;(3)可以按列车车次的车次号、起点站、到达站、出发时间以及到达时间等信息进行查询;(4)程序中必须有面向对象/结构体的基本概念,比如类、对象/结构体类型的变量等;列车车次记录用一个文件存储,文件类型可以是文本文件或是二进制文件。
二、需求分析列车车次信息的查询与检索系统浏览添加查询修改删除退出1)提供可操作的主菜单:输出个菜单,用于显示若干个可选的功能选项。
根据用户输入的选项来运行不同的功能,运行不同的函数。
一次运行程序能进行多次选择执行不同的功能。
2)进行文本信息的显示:从指定的文件中读取所有的车次信息并显示。
这里文件是在编译时就已经指定好的、存在的文本,需设计者预先自己建立好。
3)添加一个新的车次信息功能:将用户希望添加的车次信息添加到文件末尾。
提示用户按照正确的格式输入。
能录入新数据添加到车次记录文件中,当录入了重复的车次时,则提示数据录入重复并取消录入;录入的新数据能按递增的顺序自动进行条目编号。
4)查找车次信息功能:以用户输入的车次号或者终点站进行查找对应的火车车次信息(通过比对数据进行对应的查找)。
并将此车次中所有数据的信息,如车次、出发时间、起点站、终点站、行驶时间、额定载量等信息输出。
5)进行车次信息的修改:根据用户提供的车次号,找到对应的数据,将内存中的信息重置。
内容应有用户输入,由一系列读写函数实现。
6)删除一个车次信息的功能:根据用户提供的车次号,找到对应的数据,在车次记录中的相应数据进行删除,并自动调整后续条目的编号。
查表获取电池电量百分比程序查表获取电池电量百分比程序的设计与实现引言- 电池电量是移动设备中非常重要的指标之一,用户需要准确地知道电池剩余电量,以便及时决定是否需要充电。
- 在移动设备中,通常使用查表方式获取电池电量百分比,本文将着重探讨这一程序的设计与实现。
1. 查表的原理- 查表法通过提前制作一张电量与电压之间的对应表,根据当前电池电压查表得到相应的电量百分比。
- 这样可以避免频繁地进行电压-电量转换计算,提高了程序的效率和准确性。
2. 查表程序的设计思路- 设计查表获取电池电量百分比程序,首先需要明确以下几个关键步骤:a. 收集电压和对应的电量数据,建立查表表格。
b. 获取当前电池电压。
c. 在查表表格中查找离当前电压最接近的电量百分比。
d. 根据查找结果,返回对应的电量百分比值。
3. 查表程序的具体实现- 电压和电量数据的收集:a. 使用专业设备,如万用表,测量不同电量下的电池电压。
b. 将测量结果记录下来,建立一张电量与电压的对应表格。
- 获取当前电池电压:a. 在移动设备中,可以通过系统接口获取电池电压信息。
- 查找最接近的电量百分比:a. 将当前电压与查表表格中的电压进行逐一比较,找出最接近的电压值。
b. 根据找到的电压值在表格中找到对应的电量百分比值。
- 返回电量百分比值:a. 将查找到的电量百分比值返回给调用者,供其进一步处理和展示。
4. 设计思考与个人观点- 查表获取电池电量百分比的程序设计在移动设备中已经得到广泛使用,其原理简单而高效。
- 这种方式能够准确地实时反映电池电量情况,为用户提供了便利。
- 通过查表法,可以避免频繁的计算,提高程序的响应速度和效率。
总结- 查表获取电池电量百分比的程序设计是基于电压和电量的对应关系,通过查表表格的方式实现电量百分比的准确获取。
- 这种程序设计方法简单高效,能够满足用户对实时电池电量展示的需求,并提高程序运行效率。
- 在移动设备中使用这种方法可以为用户提供更好的使用体验。
实验二 查表程序设计【实验目的】1.掌握两种查表指令的使用方法。
2.理解查表操作中的几个概念——查表指针、表的首地址和偏移地址。
3.掌握单字节表和双字节表的查表方法。
【实验内容】1.数据区BUF1中存有N 个0-9的数,用查表指令MOVC A,@A+PC 编写程序,求0-9的平方值(使用BCD 码),且结果存放在BUF2中。
2. 数据区BUF1中存有N 个0-9的数,用查表指令MOVC A,@A+DPTR 编写程序,求0-9的立方值(使用BCD 码),且结果存储在BUF3中。
【实验原理与设计】1.数据区BUF1中0-9每个数的平方值均占用一个字节,用DB 指令建立0-9的平方表。
当使用MOVC A ,@A+PC 查表时,是以当前PC 作为基址,再加上偏移量A 作为查表指针,而其中的PC 值是指向查表指令的下一条指令的地址。
在查表过程中,每查一个数,都必须对A 进行修正,才能正确指向查表地址。
程序设计流程图参见图2-1、2-2。
2.使用MOVC A,@A+DPTR 查表时,是以DPTR 为基址,而DPTR 指向表头地址,加上距表头的偏移量A 作为查表指针。
由于0-9每个数的立方值需占用2个字节,所以程序中建立0-9的立方表要用DW 指令。
查0-9的立方值时,每个数乘2为该数立方值的高字节在表中的偏移值,乘2加1得到该数立方值的低位字节在表中的偏移2-1 求平方值查表主程序流程图2-2 查表子程序流程图值。
程序设计流程图参见图2-3。
2-2 求立方值查表主程序流程图【实验操作步骤】1.输入查平方表源程序,给定BUF1、BUF2和N的值(例如:30H、40H、0AH),编译装载通过后,进行下面的调试。
(1)打开程序存储器窗口,查找并记录数据表存放在哪里?(2)给定30H单元里的数据(≤9)(例如:05H),单步运行程序,观察和记录查表过程于表2-1中,并说明其中的数据都是什么。
表2-1(3)给定30H-39H中的数据(例如:0-9),连续运行程序,观察和记录查表结果并记录于表2-2中,根据查表结果,说明程序的正确性。
安徽大学本科毕业论文(设计、创作)题目:基于移动端的课程表查询软件的开发实现学生姓名:XXX 学号: XXX院(系):计算机科学与技术专业:软件工程入学时间:2011 年9 月导师姓名:XXX 职称/学位:XXX导师所在单位:安徽大学计算机科学与技术学院完成时间: 2015 年 5 月基于移动端的课程表查询软件的开发实现摘要课程表在现代的教学工作中扮演着非常重要的角色。
它使学校能够合理安排教室、实验室和运动场等硬件资源,也能协调教师和学生之间的教学秩序。
在大学校园中,由于学生上课采用的是自主选课的方式,所以基本上每一位学生都会有各自不同的课程表。
而传统的教务系统课程表,由于一般是在PC网页端进行显示,无法满足课程表需要随时随地方便查看的使用需求。
结合当下智能手机的普及以及功能强大,使用手机实现大学课程表的查看具有非常大的实用意义。
本次毕业设计以安卓智能手机为运行平台,结合Java、PHP、数据库等技术,实现了一个可以在移动端查看课程表的软件程序。
关键词:课程表;智能手机;移动端;安卓;数据库Inquiry Curriculum Development Software Based on MobileTerminalsAbstractSyllabus plays a vital role in modern teaching practices. Not only does it allow educational facilities, such as classrooms, laboratories, playgrounds, etc., to be allocated in a rational way, but also it coordinates the teaching order between teachers and students. Since university students select courses and take classes in a self-directed way, their course arrangements usually vary. Therefore, university students need to check their curriculum schedules whenever and wherever it is required. However, traditional syllabuses in educational administrative systems cannot meet this situational demand because they are displayed on the PC side. Considering the current popularity and multi-function of smart phones, it is of significant importance to make university syllabuses checking available on cell phones. Based on Java, PHP, database and other techniques, this graduation project uses Android smart phone as an operating platform, attempting to develop software program through which the syllabuses are expected to be viewed on mobile terminals.Keywords: curriculum; smart phone; mobile terminal; android; database目录1 引言 (1)1.1 研究背景 (1)1.2 研究意义 (1)1.3 软件开发的目标 (2)1.3.1 实用性 (2)1.3.2 易用性 (2)1.3.3 可重复利用 (2)1.3.4 稳定性 (2)1.3.5 美观性 (2)1.4 软件设计开发的内容 (2)2 软件开发使用的开发工具及技术简介 (3)2.1 Java (3)2.2 JDK (3)2.3 eclipse (4)2.4 Android Development Tools(ADT) (4)2.5 Mysql数据库 (4)2.6 myeclipse (4)2.7 Axure RP (4)2.8 软件开发及运行环境 (5)3 软件可行性分析 (5)3.1 技术可行性 (5)3.2 操作可行性 (5)3.3 经济可行性 (5)3.4 法务可行性 (5)4 软件需求分析 (6)4.1 功能需求 (6)4.1.1 教务系统学号与密码验证 (6)4.1.2 自动获取课程表数据 (6)4.1.3 显示本周的整体课程表 (6)4.1.4 切换不同周次进行查看 (6)4.1.5 查看某一课程的详细信息 (6)4.1.6 本地缓存课程表数据 (6)4.3 安全性需求 (7)5 需求分析细化 (7)5.1 软件结构E-R图 (7)5.2 软件运行状态转换图 (8)6 对需求进行验证 (9)6.1 一致性 (10)6.2 现实性 (10)6.3 完整性 (10)6.4 有效性 (10)7 软件主要功能及使用过程流程图 (11)7.1 验证学生身份 (11)7.2 自动导入教务系统课程表 (11)7.3 查看周历课程表 (11)7.4 刷新课程表信息 (11)7.5 切换周次 (11)7.6 查看某一门课程的具体信息 (11)8 编码实现 (12)8.1 网络通信 (12)8.2 账号验证与登录 (12)8.3 获取课程表的实现 (13)8.4 课程表手机端的设计实现 (13)8.4.1 周历课程表 (13)8.4.2 课程详情 (13)8.4.3 客户端界面实现 (13)9 软件实现效果 (14)9.1 登录页面 (14)9.2 周历课程表页面 (15)9.3 周次切换操作 (16)9.4 课程具体信息 (17)9.5 刷新课程表功能 (18)10 软件功能性测试 (18)10.1 用户登录模块 (18)10.1.1 正常登录 (18)10.2 周历课程表功能模块 (19)10.2.1 切换周次 (19)10.2.2 显示课表 (19)10.3 课程表刷新功能 (19)10.3.1 在周历课程表界面下刷新 (19)10.3.2 在课程详情页面中进行刷新操作 (19)10.4 课程详情显示功能 (19)11 结束语 (20)主要参考文献: (21)致谢 (22)1 引言1.1 研究背景从2007年,第一款革命意义的智能手机(苹果iPhone)发布以来,手机的使用方式产生了翻天覆地的变化。
何谓查找表?查找表是由同一类型的数据元素(或记录)构成的集合。
由于“集合”中的数据元素之间存在着松散的关系,因此查找表是一种应用灵便的结构。
对查找表经常进行的操作:•1)查询某个“特定的”数据元素是否在查找表中;•2)检索某个“特定的”数据元素的各种属性;•3)在查找表中插入一个数据元素;•4)从查找表中删去某个数据元素。
查找表可分为两类:静态查找表仅作查询和检索操作的查找表。
动态查找表有时在查询之后,还需要将“查询”结果为“不在查找表中”的数据元素插入到查找表中;或者,从查找表中删除其“查询”结果为“在查找表中”的数据关键字是数据元素(或记录)中某个数据项的值,用以标识(识别)一个数据元素(或记录)。
若此关键字可以识别唯一的一个记录,则称之谓“主关键字”。
若此关键字能识别若干记录,则称之谓“次关键字”。
查找根据给定的某个值,在查找表中确定一个其关键字等于给定值的数据元素或(记录)。
若查找表中存在这样一个记录,则称“查找成功”。
查找结果给出整个记录的信息,或指示该记录在查找表中的位置;否则称“查找不成功”。
查找结果给出“空记录”或“空指针”。
如何进行查找?查找的方法取决于查找表的结构。
由于查找表中的数据元素之间不存在明显的组织规律,因此不便于查找。
为了提高查找的效率,需要在查找表中的元素之间人为地附加某种确定的关系,换句话说,用另外一种结构来表示查找表。
9.1 静态查找表9.2 动态查找树表9.3 哈希表9.1静态查找表数据对象D :数据关系R :D 是具有相同特性的数据元素的集合。
每个数据元素含有类型相同的关键字,可唯一标识数据元素。
数据元素同属一个集合。
ADT StaticSearchTable {基本操作P:Create(&ST, n);Destroy(&ST); Search(ST, key);Traverse(ST, Visit()); } ADT StaticSearchTable构造一个含n 个数据元素的静态查找表ST 。
查表程序设计在计算机编程的世界里,查表程序设计是一项非常实用且重要的技术。
它就像是我们日常生活中的字典,当我们需要查找某个特定的信息时,能够快速而准确地获取到。
首先,让我们来理解一下什么是查表。
简单来说,查表就是在一个预先准备好的数据集合中,通过特定的索引或者关键字,找到我们所需要的数据。
这个数据集合可以是一个数组、一个链表,甚至是一个复杂的数据结构,比如二叉树或者哈希表。
那么,为什么我们需要使用查表这种方式呢?想象一下,如果我们需要根据不同的输入值来计算一个复杂的函数结果,每次都重新计算的话,会耗费大量的时间和计算资源。
而如果我们事先将这些可能的输入值和对应的计算结果存储在一个表中,那么在需要的时候,只需要通过查找这个表,就能迅速得到结果,大大提高了程序的运行效率。
在设计查表程序时,第一步是确定表的结构和存储方式。
这取决于我们要存储的数据类型和数量,以及查找的频繁程度和效率要求。
例如,如果我们要存储的是一些固定的常量值,而且数量不多,那么一个简单的数组可能就足够了。
但如果数据量很大,而且需要频繁地进行插入、删除和查找操作,那么可能就需要使用更复杂的数据结构,如链表或者哈希表。
接下来,就是如何构建这个表。
这通常需要我们根据具体的问题和需求,将相关的数据按照一定的规则组织起来。
比如,如果是一个按照数值大小排序的表,我们可以使用二分查找算法来提高查找效率;如果是一个无序的表,可能就需要遍历整个表来查找。
在查找表中的数据时,算法的选择至关重要。
常见的查找算法有顺序查找、二分查找、哈希查找等。
顺序查找就是从表的开头依次比较每个元素,直到找到目标元素或者遍历完整个表。
这种方法简单直观,但效率较低,适用于小型的、无序的表。
二分查找则是针对有序表的一种高效查找算法,它通过不断将表中间的元素与目标元素进行比较,将查找范围缩小一半,直到找到目标元素。
哈希查找则是通过将关键字映射到一个特定的哈希值,然后在对应的哈希表位置进行查找,其查找效率通常很高,但需要处理哈希冲突的情况。
实验二查表程序实现LED数字显示一、实验要求通过拨码开关表示16进制数0—F,利用LED数码管显示该数字。
包括硬件电路和程序设计。
二、实验目的理解8段LED数码管的显示原理和LED显示的转化方法,学习查表程序的设计。
三、实验原理图2-1 8段LED数码管显示原理和笔画分布由电路图2-2可以看出,这里需要通过传送指令将P1口拨码开关的状态读入累加器A,利用查表指令转换为LED数码管的显示笔画代码,再传送到P2口驱动数码管。
所谓显示代码就是根据该数字的笔画确定LED数码管中8个笔画段a—h中的哪些段点亮,如数字1要求点亮笔画b和c。
我们可以根据数字与笔画的对应关系列出各数字的笔画代码真值表如表2-1所示,在每个数字需点亮的笔画处填入1,不需要点亮的位填入0,然后转换为16进制数就是该数字的显示代码。
若采用共阳极LED,则由于是0点亮,显示代码也就不同,笔画真值表与表2-1相反。
显然,若各笔画连接的口线不同,显示代码也不同。
图2-2 通过LED数码管显示数字电路图表2-1 LED笔划显示真值表(共阴)有了代码表,还需要通过查表程序将数字转换为显示代码。
查表程序一般是将表格中数据顺序放置在程序存储器的某个区域中,形成一数据表。
程序中需要查表时,将表格首地址送入数据指针DPTR,即使DPTR指向表格首地址,在A中放入待查表格项的序号,例如要显示2,利用“MOVC A,@A+DPTR”指令,即以(A+DPTR)为地址,将数据表中第2字节的表格项数据5BH取出放入A,从而实现查得2的显示代码5BH,然后送端口P2驱动笔画段显示出数字2。
四、实验步骤1.在Proteus ISIS中设计硬件电路(参考图2-2)(1)选择电路元器件并放入原理图编辑区:单片机:AT89C52。
一位共阴极数码管:7SEG-COM-CAT-GRN。
8位拨码开关:DIPSWC_8。
接地:Ground(Terminal模型中)。
(2)参考图2-2完成原理图。
查表程序设计例题(MOVC A,@A+DPTR; MOVC A,@A+PC)的应用西电出版社张毅坤《单片微型计算机原理与应用》P95~98例6:设有一巡检报警装置,需要对16路值进行比较,当每一路输入值超过该路的报警值时,实现报警。
要求编制一个查表子程序,依据路数Xi,查表得Yi的报警值。
解:Xi为路数,查表时按照O,1,2,…,15取值,故为单字节规则量。
表格依Xi顺序列表,仅存二字节报警值Yi,其表格构造见表3—4。
程序入口:(R2)=路数Xi。
程序出口:(R4 R3)=对应Xi的报警值Yi。
查表子程序如下:STAl:MOV A, R2 ;路数xi送ARL A ; Xi×2MOV R4, A ;暂存ADD A,#TABL(rel) ;加上表首偏移量MOVC A,@A+Pc ;查Yi第一字节 XCH A,R4 ;第一字节送R4ADD A,#TABL(rel)+1 ;形成第=字节表址MOVC A,@A+Pc ;取Yi第二字节MOV R3, A ;第二字节送R3RETTAB2:DW 050FH,OE89H,A695H,1EAAH ;报警值表 DW 0D9BH,7F93H,0373H,26D7HDW 2710H,9E3FH,1A66H,22E3HDW 1174H,16EFH,33E4H, 6CAOH上述查表程序中使用RL A使(A)乘2,这是由于DW定义的是双字节空间,为了保证指向正确的查表地址,所以要进行乘2处理。
另外,程序中使用MOVC A,@A+PC指令,使表格偏移不得超过255个字节。
当表格偏移大于255个字节时,应使用MOVC A,@A+DPTR查表指令。
例7:自变量xi为双字节规则量,函数值yi也为双字节数,对应xi依次存于表首地址为#TABL的表格中。
表格构造见表3—5。
编制一个查表程序,将查得的函数值yi存入R4、R3中。
解:入口:(R3R2)=由其它程序得到的xi规则量,即:xi=0000H,O0OlH,0002H,…出口:(R5 R4)=依据xi查得的函数值yi。
查表程序设计
在单片机应用系统中,查表程序使用频繁。
利用它能避免进行复杂的运算或转换过程,广泛应用于显示、打印字符的转换以及数据补偿、计算、转换等程序中。
查表就是根据自变量x的值,在表中查找y,使y=f(x)。
x和y可以是各种类型的数据。
表的结构也是多种多样的。
表格可以放在程序存储器中,也可以存放在数据存储器中。
一般情况下,对自变量x是有变化规律的数据,可以根据这一规律形成地址,对应的y则存放于该地址单元中;对x是没有变化规律的数据,在表中存放x及其对应的y值。
前者形成的表格是有序的,后者形成的表格可以是无序的。
例1将l位十六进制数转换为ASCII码。
解: 在前面的例子中,我们介绍了将ASCII码转换为十六进数的程序,本例是其逆变换。
这里采用查表的方法完成十六进制数到ASCII码的转换。
建立一个表格,首先确定表格的首地址,在相对于表首的地址单元中存放ASCII码。
设十六进制存放在R0中,转换结果存放在R1中。
程序为:
ORG 0300H
MOV A, R0
ANL A, #0FH ;屏蔽高位
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV R1,A
ORG 0380H
TAB: DB ‘01234567’
DB ‘89ABCDEF’
END
例2 在一个单片机测温装置中,已知电压和温度之间是非线性关系。
在校正过程中,电压值取连续的10位二进制数,测量这些电压值对应温度最多可达1024个。
用这些校正数据建立一个表格。
以电压为相对地址,这样就可以根据测得的不同电压值求出被测温度。
解: 设电压测量值X放在R2、R 3中(10位二进制数占两个字节),求出的温度仍放R2、R3中(也是双字节数)。
与X值的对应的温度放在地址为2X加表格的首地址的单元中。
程序为:
MOV DPTR, #TAB
MOV A, R3
CLR C
RLC A ;X*2
MOV R3, A
XCH A, R2
RLC A
XCH A, R2
ADD A, DPL ;加表首地址
MOV DPL, A
MOV A, DPH
ADDC A, R2
MOV DPH, A
CLR A
INC DPTR
MOVC A, @A+DPTR
MOV R3, A
RET
TAB: DW
例3通过一个键盘输入一组命令,完成不同的功能。
解: 设从键盘输入的命令字符为‘A’、‘D’、‘E’、‘L’、‘M’、‘X’、‘Z’七种,当键入不同的命令字符时转向不同的处理程序,对应的处理程序的入口标号为XA、XD、XE、XL、XM、XX、XZ。
由于输入的字符之间很难找到什么规律,建立表格时将字符和其对应的处理程序的地址一同存入。
查表时先查找字符,其后就是处理程序的入口地址。
表格以0为结束标志。
入口条件为:命令字符放在A中。
程序:
LTB: MOV DPTR, #TAB
MOV B, A
LOOP: CLR A
MOVC A, @A+DPTR
JZ LEND
INC DPTR
CJNZ A, B, LNF
CLR A
MOVC A, @A+DPTR ;取出入口地址第一个字节
MOV B, A
INC DPTR
CLR A
MOVC A, @A+DPTR
MOV DPL, A
MOV DPH, B
CLR A
JMP @A+DPTR ;转向相应处理程序
LNF: INC DPTR
INC DPTR ;继续查
SJMP LOOP
LEND: (查不到处理程序)
TAB: DB ‘A’
DW XA
DB ‘D’
DW XD
DB ‘E’
DW XE
DB ‘L’
DW XL
DB ‘M’
DW XM
DB ‘X’
DW XX
DB ‘Z’
DW XZ
DB 0 ;表格结束标志。