ImageVerifierCode 换一换
格式:DOCX , 页数:28 ,大小:98.96KB ,
资源ID:18353861      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/18353861.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于嵌入式Linux系统的图书信息查询数据库的应用设计解析Word文档下载推荐.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于嵌入式Linux系统的图书信息查询数据库的应用设计解析Word文档下载推荐.docx

1、2.5.2 图书名查找 102.6 帮助系统 102.7 退出系统 11三、详细设计 123.1 main.c源码 123.2 consoleshell.c源码 123.3 SQLite.c源程序 143.4 编译源程序 223.5 NFS挂载实验目录测试 23运行结果 25参考文献 27总结 28 摘要随着社会的进步,如今书店图书数量巨大,每天都有大量的图书售出,在如此多的书中查找到自己想要的书采用计算机图书信息查询系统较为快捷,基于嵌入式Linux系统的图书信息查询数据库的应用是在嵌入式数据库Sqlite的基础上,采用C语言编程及Sqlite C接口来控制数据库Sqlite的读取和存储,使

2、用C语言编写的人机交互界面使得普通人能够很轻松的对图书信息查询应用进行操作,使得添加、修改、查找和删除图书信息方便快捷。关键词:图书信息 嵌入式 Linux Sqlite C语言前言目前各大书店存书量巨大,对于在如此大量的图书中查找到顾客所需的图书,普遍采用计算机软件结合数据库的图书信息查询系统来查找图书信息。数据库的目标是实现对数据的存储、检索等功能。传统的数据库产品除提供了基本的查询、添加、删除等功能外,也提供了很多高级特性,如触发器、存储过程、数据备份恢复等。但实际上用到这些高级功能的时候并不多,应用中频繁用到的还是数据库的基本功能。于是,在一些特殊的应用场合,传统的数据库就显得过于臃肿

3、了。在这种情况下,嵌入式数据库开始崭露头角。嵌入式数据库是一种具备了基本数据库特性的数据文件,它与传统数据库的区别是:嵌入式数据库采用程序方式直接驱动,而传统数据库则采用引擎响应方式驱动。嵌入式数据库的体积通常都很小,这使得嵌入式数据库常常应用在移动设备上。由于性能卓越,所以在高性能的应用上也经常见到嵌入式数据库的身影。SQLite是一种采用C语言开发的嵌入式数据库。SQLite的目标是尽量简单,因此它抛弃了传统企业级数据库的种种复杂特性,只实现那些对于数据库而言非常必要的功能。尽管简单性是SQLite追求的首要目标,但是其功能和性能都非常出色。通过C语言函数编写的人机交互界面,人工输入所有图

4、书信息,再进行保存,也可以通过图书信息查询系统快速查找到相关图书的信息,对图书信息的修改和删除也非常的方便。一、基本原理1.1 开发环境搭建进行嵌入式系统开发之前需要搭建开发环境,所需要的硬件有UP-CUP210-II型嵌入式实验平台,PC机Pentium 500以上, 硬盘40G以上,内存大于256M,软件部分有Vmware Workstation + Fedora Core 14 + MiniCom/Xshell + ARM-LINUX交叉编译开发环境。准备好硬件后,使用串口线和网线连接UP-CUP210-II型嵌入式实验平台和计算机,并将UP-CUP210-II型嵌入式实验平台接通电源。

5、1、打开虚拟机启动Fedora Core 14,点击【编辑】【虚拟网络编辑器】,在【桥接到:】后选择【Realtek PCIe GBE Family Controller】这一项。然后点击【系统】【管理】【网络】【设备】【硬件设备】,在【硬件设备】中选择【eth2()】这一项,再点击【探测】,最后点击【确定】退出,在重新打开查看eth2是否处于活跃状态。处于活跃状态是正常状态,若不是就重复以上步骤知道eth2处于活跃状态。2、在电脑上安装“超级终端”,安装成功后点击【文件】【新建连接】,进入属性界面后把端口选为COM1,波特率选为115200,数据位选为8,校验位选为None,停止位选为1,流

6、控选为None,点击【确定】退出。打开UP-CUP210-II实验板电源,待超级终端上显示完毕后输入命令“ifconfig”查看IP地址,输入命令“ifconfig eth0 192.168.160.150”对刚刚查到的IP地址修改为192.168.160.150。再输入“ifconfig”检查IP地址是否修改成功。使用命令“ping 192.168.160.150”查看实验平台与计算机是否能够通信。3、进入虚拟机终端,输入命令“su root”切换到root用户,输入密码“123456”,然后输入命令“setup”弹出对话框,选择【防火墙配置】后选择不启用防火墙。然后进入【系统服务】,选择不

7、启用ip6tables和iptables,启用network和nfs。退出对话框后输入命令“service network restart”重启网络,每行末都显示确定后输入命令【service nfs restart】重启网络文件系统。待每行末都显示确定后输入命令“vi /etc/exports”弹出文件编辑器,把第一行改为“/UP-CUP210-II 192.168.160.*(rw,async,no_root_squash)”,保存并退出。4、在超级终端中输入命令“mountnfs 192.168.160.130:/UP-CUP210-II /mnt/nfs”挂载。挂载成功后使用命令“cd

8、”和“ls”进入文件夹“05_sqlite”中,输入命令“./SQLite_test”执行程序。程序的运行结果会显示到超级终端。1.2 应用程序的编写进入实验目录,输入命令“cd /UP-CUP210-II/SRC/exp/basic/05_sqlite/”,再输入“ls”查看文件夹“05_sqlite”中的所有文件和文件夹,在文件夹“05_sqlite”中存在三个C文件,分别为SQLite.c、consoleshell.c、main.c。为了方便快速的编写程序,只需将以上三个C文件进行修改即可,修改好后仔细检查并保存退出。因修改后的代码没用经过编译,在超级终端执行的文件还是原来的文件,所以要

9、在虚拟机终端中输入命令“make clean”清除中间代码,重新编译。然后再输入命令“make”编译。编译成功后进入超级终端执行修改后的程序,修改后的程序执行结果显示到超级终端。根据这个原理我们可以对程序进行反复修改,反复在超级终端上测设,最终达到理想的结果。二、系统分析2.1 需求分析如今遍布全国大大小小的书店数量巨大,每天都有大量的书籍交易,在一些知名的书店每日销售量惊人,如果书店把图书信息记录到纸质表格中,当遇到大量顾客购书时需要人工查找到图书信息,显然浪费了大量时间,效率低下,严重影响销售额。所以要提高查询图书信息的效率就必须的采用运行速度高的计算机系统。当顾客买书时一般都是提供书籍名

10、称,店员通过图书信息查询数据库的应用系统输入书籍名称就能很快的查出书籍的索书号和价格,书店的书都是分区分类摆放的,而且是大区里又分出了很多个小区,每个大区都由不同的数字表示,每个大区里面的小区也是由不同的数字表示,每种图书也由数字表示,这种形式就是树状结构,可以通过一级一级的查找到相应图书,由每种图书的代表数字和上一级区的数字组合就形成了索书号,索书号形如学号,例如兰州理工大学学生学号“12250135”,“12”代表2012级的所有学生,“25”代表通信工程的所有学生,“01”代表通信工程一班,“35”就代表某个学生自己。通过学号从前往后就能知道某学生所属的班级。索书号也是如此,通过索书号也

11、能查到图书在书店的具体位置。所以索书号是图书信息查询数据库的应用系统中必不可少的一个信息项。当人们购买图书是还会考虑到图书的价格,如果价格合适才会去购买。所以图书价格也是图书信息查询数据库的应用系统中必不可少的一个信息项,图书信息查询数据库的应用系统需要根据图书名称查找图书信息,所以图书名称更是图书信息查询数据库的应用系统中必须的一个信息项。总体来说图书信息查询数据库的应用系统的数据库中要包括索书号、图书名称和图书价格这三类信息,为了方便人工操作需要有一个简单的人机交互界面控制台,交互界面菜单应包括添加、删除、查看、帮助和退出功能。图2.1 软件结构图2.2 控制台控制台是计算机与人之间交互的

12、一个平台,里面含有若干选项,通过点击这些选项就能进入到相应的功能项下,控制台是图书信息查询数据库的应用系统中重要的组成部分。包含“查看所有图书信息”、“根据图书名查找图书”、“根据索书号查找图书”、“添加图书信息”、“删除图书信息”、“帮助”和“退出”这几个选项。由于选项信息太长,才用输入简短指令的方法选取选项最为方便快捷。所以这里以“1”、“2”、“3”、“4”、“5”、“*”和“0”分别作为这几个选项的命令。2.3 添加图书信息图2.2 添加图书信息程序流程图刚刚建立的图书信息查询数据库的应用系统数据库为空,第一步通过人工输入图书信息,输入顺序是先索书号,然后是图书名,最后是图书价格,每一

13、项输入结束后会自动进入下一项输入,当三项都输入完毕后自动进入控制台。当输入回车键输入结束。2.4 删除图书信息当书店里的某些图书下架了,这些图书信息在图书信息查询数据库的应用系统的数据库中也没有用处了,所以得删除这些被下架的图书信息。删除图书信息时要根据图书名查找到图书,若图书不存在则回到控制台,若图书存在则询问是否要删除,经过用户确认后方可删除相应图书信息。Y图2.3 删除图书信息程序流程图2.5 查看图书信息查看图书信息分为三种:查看所有图书信息、根据图书名查找图书信息、根据索书号查找图书信息。查看所有图书信息时输入“1”命令则显示数据库中所有的图书信息,实现较为简单。2.5.1索书号查找

14、图2.4 索书号查找程序流程图根据索书号查找图书时,首先要输入索书号,若索书号输入完毕,则进行数据库查询,若相关图书不存在则返回控制台,若存在则显示相关图书信息。2.5.2 图书名查找图2.5 图书名查找程序流程图根据图书名查找图书时,首先要输入图书名,若图书名输入完毕,则进行数据库查询,若相关图书不存在则返回控制台,若存在则显示相关图书信息。2.6 帮助系统帮助系统是任何一个计算机系统所必须的一部分,主要作用是引导和帮助用户了解系统的功能和操作方法。图书信息查询数据库的应用系统的帮助系统主要用来向用户说明“1”、“2”、“3”、“4”、“5”、“*”和“0”这几个命令的作用,了解了各个命令的

15、作用后用户才能熟练的操作图书信息查询数据库的应用系统。2.7 退出系统在每一个计算机系统中都要有退出选项,如果在不使用应用程序时不退出程序容易浪费系统资源。再运行其他程序时,系统负荷增大,导致运行速度变慢。功耗增大,耗电量也增大。在嵌入式设计中如果不设计退出选项,就无法输入其他选项,所以退出系统程序是必不可少的。三、详细设计3.1 main.c源码#include consoleshell.hlinuxpatch.hint main(int argc, char *argv) consoleshell(); return 0;3.2 consoleshell.c源码consoleshell.c

16、源文件主要是建立用户终端显示控制台菜单,并根据用户的输入字符,调用相应的接口函数。char shell_s=nshell ;void get_line(char *cmd);/*控制台*/void * consoleshell() int count=0; int i; char cmd256=0,; int rc = sqliteDB_open(); char name40,id40; int price = 0;/demo中只做整型的,浮点型的转换可以参考网上实现 printf(n);n 1 查看所有图书信息n 2 根据书名查找图书n 3 根据书号查找图书n 4 删除图书信息n 5 添加图

17、书信息n * 帮助n 0 退出 while(1) printf(shell_s); fflush(stdout); get_line(cmd); if(strncmp(1,cmd,1)=0) sqliteDB_opt_select_all(); else if(strncmp(2n输入图书名 n图书名: scanf(%s,name); fflush(stdin);/刷新缓冲区 if(!sqliteDB_exist(name) continue; sqliteDB_opt_select(name);3n输入索书号 n索书号:,id); sqliteDB_opt_select_by_id(id);

18、4n请输入将要删除的图书名 /删除之前应再次询问是否删除,不可回滚 sqliteDB_opt_delete(name);5n请输入将要添加的图书信息!n输入图书索书号 n价格:%d,&price); sqliteDB_opt_add(name,id,price);*,cmd,2)=0)0 sqliteDB_close();/关闭数据库连接 break;/ else if(cmd0 != ),cmd,1)!=0) system(cmd); void get_line(char *cmd) int i=0; cmdi=getchar(); if(cmdi=10) cmdi=0; i+;3.3 SQ

19、Lite.c源程序该源码文件主要是对SQLite数据的C/C+接口封装,提供consoleshell.c中程序调用。SQLite.h* auther lyj_uptech* date 2007-3-21* /本程序提供了对数据库进行操作的基本接口,对于更复杂的操作,用户可以根据具体情况* 进行修改,程序的更新,以及其他需求请联系本人或者技术支持* * 例如关于主键的唯一性。用户可以适当添加功能;* 对于可以访问所有table的动态sql语句可以参考其中的程序实现;*/sqlite3 *db;/全局的数据连接/用户第一次打开数据库时应创建对应的table并添加适当的数据记录static int

20、callback(void *NotUsed, int argc, char *argv, char *azColName);* *建立与数据库的连接*int sqliteDB_open() int rc;/操作标志ncreat database:test.dbnncreat table:table merchandise(contents:id name price)nnand add two recordsn rc = sqlite3_open(test.db, &db); if( rc ) fprintf(stderr, 不能打开数据库: %sn, sqlite3_errmsg(db);

21、 sqlite3_close(db); exit(1);n打开成功!sqliteDB_create_table()n数据表存在/*sqliteDB_insert_records()n进入数据表失败 else sqliteDB_opt_select_all(); return 1;* 关闭与数据库的连接 int sqliteDB_close() if(db != 0) * 添加一条记录到已知或未知数据库表int sqliteDB_opt_add(char *name,char *id,int price) char *zErrMsg = 0; char *sql=0;/动态生成的SQL语句 ch

22、ar tem_sql256=insert into merchandise values(/ by sprife for mem out char tem_sql05 = , char tem_sql15 = , char tem_sql25 = char tem_price20; sprintf(tem_price, %d , price);/将int数据转换为字符串 sql = strcat(tem_sql,name); sql = strcat(sql,tem_sql0); sql = strcat(sql,id); sql = strcat(sql,tem_sql1); sql = s

23、trcat(sql,tem_price); sql = strcat(sql,tem_sql2);/ printf(n#n%s,sql); rc = sqlite3_exec(db, sql, callback, 0, &zErrMsg);n rc = %d,rc); if( rc!=SQLITE_OK )SQL error:, zErrMsg); sqlite3_free(zErrMsg);* 删除表中的一条记录* param nameint sqliteDB_opt_delete(char *name) char n4;delete from merchandise where name = / char tem_sql03 = char tem_sql13 = /删除之前查询该条记录,如存在则显示该记录,并询问是否真的要删除 /如不存在则推出本次操作* param idint sqliteDB_opt_delete_by_id(char *id) char tem_sql25

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1