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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

本文(09计科A23430110陈南博加油站刷卡.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

09计科A23430110陈南博加油站刷卡.docx

1、09计科A23430110陈南博加油站刷卡嵌入式操作系统课程设计作品说明书计算机与信息学院题 目:加油站刷卡系统学 生:陈南博学 号:20113430110班 级:09计科A2指导教师:崔莉莉日 期:2012 年 12月29 日加油站刷卡系统 软件(系统)说明书1综述用Qt Designer3.2.1设计一个加油站的刷卡系统,可以用用户名密码或者刷卡登陆,登陆系统内可以注册新卡号,加油,充值,调节软件背景色,十进制到十六进制的限位换算等功能,并且在XBase270平台上运行。2加油站刷卡软件(系统)模块设计加油站刷卡软件模块分为:程序加载splash模块,登陆模块,主界面模块(信息模块、加油输

2、油模块、为卡充值模块、调节背景颜色模块、十转十六进制模块、退出模块),注册模块等。21 软件(系统)功能1. 程序加载的splash模块功能:实现程序启动延迟5秒,程序启动画面一般用于显示软件信息(名称、作者、版权等)以及减少用户在程序加载过程中的枯燥感。在Qt中,可以通过QSplash类来为应用程序添加一个启动画面,它会在应用程序的主窗口出现前显示一个图片,并且可以在图片上显示想要输出的信息(如显示作者信息等)。2. 登陆模块功能: 实现登录界面框,输入正确的账号密码才能实现登录,否则会弹出确认框,或者注册一个新用户。为了防止他人盗用,所以设计一个清空数据按钮防止他人盗用,还需要实现一个使用

3、TAB键,实现几个控件内的切换。3. 主界面模块功能: 在这个模块需要实现几个功能:卡号和卡内余额的显示、加油输油过程的软件显示、充值金额并且更新信息的卡内余额显示、三种不同空间对主界面的背景颜色调节、0-255十进制转换为00-FF十六进制的转换、退出主界面功能。4. 注册功能:注册一个新卡号。5. 窗口之间的切换功能:实现窗口之间的先后顺序、防止已经登录了重复登录。22 软件(系统)结构首先显示一个程序加载画面,之后显示一个登录界面,登录失败的话会显示一个确认返回或者注册一个用户界面,登录成功则会出现一个程序主界面。主界面包含了加油过程监控、加油卡储值等功能。其中包含了一个退出功能,是实现

4、退出主界面单不退出登录界面。软件结构流程图:3软、硬件平台介绍软件是挪威TrollTech公司出品的Qt Designer3.2.1,Visual C+ 6.0、SQLite,硬件是深圳市武耀博德信息技术有限公司的EMX270-Moudle-V4实验平台。31软件要求1.Qt 是一个跨平台应用程序和 UI 开发框架。使用 Qt 您只需一次性开发应用程序,无须重新编写源代码,便可跨不同桌面和嵌入式操作系统部署这些应用程序。QT特点:直观的 C+ 类库跨桌面和嵌入式操作系统的移植性,具有跨平台 IDE的集成开发工具 在嵌入式系统上的高运行时间性能,占用资源少。Qt是一个跨平台的C+图形用户界面库,

5、由挪威TrollTech公司出品,目前包括Qt、基于FrameBuffer的Qtopia Core、快速开发工具Qt Designer和国际化工具Qt Linguist等部分。Qt支持所有的UNIX系统,当然也包括Linux系统,还支持WinNT/Win2k、Windows 95/98平台。基本上Qt同X-Window上的Motif、Openwin、GTK等图形界面库和Windows平台上的MFC、OWL、VCL、ATL是同类型的。不过Qt还具有下列一些优点。(1)优良的跨平台特性。Qt支持下列操作系统:Microsoft Windows 95/98、Microsoft Windows NT、

6、Linux、Solaris、SunOS、HP-UX、Digital UNIX (OSF/1、Tru64)、Irix、FreeBSD、BSD/OS、SCO、AIX、OS390和QNX等。(2)面向对象。Qt的良好封装机制使得Qt的模块化程度非常高,可重用性较好,对于用户开发来说是非常方便的。Qt提供了一种称为signals/slots 的安全类型来替代callback,这使得各个元件之间的协同工作变得十分简单。(3)丰富的API。Qt包括多达250个以上的C+类,还提供基于模板的collections、serialization、file、I/O device、directory managem

7、ent和date/time类。甚至还包括正则表达式的处理功能。(4)支持2D/3D图形渲染,支持OpenGL。(5)大量的开发文档。(6)XML支持。2. Visual C+ 6.0,简称VC或者VC6.0,是微软推出的一款C+编译器,将“高级语言”翻译为“机器语言(低级语言)”的程序。Visual C+是一个功能强大的可视化软件开发工具。自1993年Microsoft公司推出Visual C+1.0后,随着其新版本的不断问世,Visual C+已成为专业程序员进行软件开发的首选工具。虽然微软公司推出了 Visual C+.NET(Visual C+7.0),但它的应用有很大的局限性,只适用于

8、Windows 2000、Windows XP和Windows NT4.0。所以实际中,更多的是以Visual C+6.0为平台。Visual C+6.0由Microsoft开发, 它不仅是一个C+ 编译器,而且是一个基于Windows操作系统的可视化集成开发环境(integrated development environment,IDE)。Visual C+6.0由许多组件组成,包括编辑器、调试器以及程序向导AppWizard、类向导Class Wizard等开发工具。 这些组件通过一个名为Developer Studio的组件集成为和谐的开发环境。Microsoft的主力软件产品。Vis

9、ual C+是一个功能强大的可视化软件开发工具。自1993年Microsoft公司推出Visual C+1.0后,随着其新版本的不断问世,Visual C+已成为专业程序员进行软件开发的首选工具。虽然微软公司推出了Visual C+.NET(Visual C+7.0),但它的应用的很大的局限性,只适用于Windows 2000,Windows XP和Windows NT4.0。所以实际中,更多的是以Visual C+6.0为平台。Visual C+6.0以拥有“语法高亮”,自动编译功能以及高级除错功能而著称。比如,它允许用户进行远程调试,单步执行等。还有允许用户在调试期间重新编译被修改的代码,

10、而不必重新启动正在调试的程序。其编译及创建预编译头文件(stdafx.h)、最小重建功能及累加连结(link)著称。这些特征明显缩短程序编辑、编译及连结的时间花费,在大型软件计划上尤其显著。3. SQLite,是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl、C#、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开

11、源世界著名的数据库管理系统来讲,它的处理速度比他们都快。SQLite第一个Alpha版本诞生于2000年5月。 至今已经有12个年头,SQLite也迎来了一个版本 SQLite 3已经发布。SQLite是遵守的关系型数据库管理系统,它包含在一个相对小的C库中。它是D.RichardHipp建立的公有领域项目。不像常见的客户-服务器范例,SQLite引擎不是个程序与之通信的独立进程,而是连接到程序中成为它的一个主要部分。所以主要的通信协议是在编程语言内的直接API调用。这在消耗总量、延迟时间和整体简单性上有积极的作用。整个数据库(定义、表、索引和数据本身)都在宿主主机上存储在一个单一的文件中。它

12、的简单的设计是通过在开始一个事务的时候锁定整个数据文件而完成的。32硬件平台硬件是深圳市武耀博德信息技术有限公司的EMX270-Moudle-V4实验平台。EM-X270是一个全功能的电脑板,专为手持/移动实现。它的功能内容都差不多,最新一代的掌上电脑和智能手机,包括所有类型的无线,卫星和蜂窝连接在今天的国家的最先进的移动设备。然而,它的目的是提供自定义的实现,保持灵活性,预计从嵌入式电脑板。 EM-X270提供可选的显示,电池,充电器和键盘,提供了一个独立的解决方案,只需要一个实施的最后定制产品的外壳。EM-X270板的功能集结合了32位CPU,SDRAM,FLASH盘和重要的计算机外设。车

13、载无线接口包括WiFi,蓝牙,GPS和蜂窝语音/ GPRS调制解调器。最后一个接口的设备基本上是一个定制的手机。EM-X270有几个连接器和插槽中所使用的PDA和内部扩展连接器,用于特定于应用程序的添加上的。准备到运行Windows CE和Linux套装软体可从CompuLab。产品亮点:嵌入式应用的全功能掌上电脑板Intel的XScale PXA270 CPU,频率高达520 MHz,高速缓存32 +32 KB,WMMX128 MB的SDRAM512兆字节的闪存盘蜂窝电话语音和GPRS调制解调器集成3.5英寸480640 VGA显示屏,触摸屏(可选)图形控制器,支持STN和TFT面板,800

14、600最大分辨率LCD面板支持无线802.11b / g接口蓝牙接口SIRF-III芯片GPS接收器,扩展连接器摄像头接口SD / SDIO / MMC插槽声音编解码器,集成扬声器和麦克风从主机USB端口,串行端口,GPIO主要和备用电池和电池充电器非常低的待机与工作功耗性消费尺寸 - 97 x 66毫米33软件(系统)移植过程1. Prepare software and cross-compile toolchain2. Install toolchain这里使用的是3.3.2版本的交叉编译工具链3.Install tmake 4.Install e2fsprogs5. Compile t

15、slib6. Install qt-patch7.Install Qt/Embedded8. Install Qt/X118.Build Qtopia9. 制作文件系统,下载到开发板上运行10. Running application4系统运行界面装载画面:登录画面:输入错误的账号密码:注册画面: 程序主界面: 5主要源程序代码界面设计是用图形界面完成的,所以图形界面的代码略。Main.cpp:#include #include #include #include #include qqqq.h#include form_dlsb.h#include form_main.hint main(

16、int argc, char * argv ) QApplication a( argc, argv ); QSplashScreen *splash = new QSplashScreen; /新建加载画面 splash-setPixmap(QPixmap(splash.png); /设置图片 splash-show(); /显示图片 for(int i=0;irepaint(); 重画加载画面5000次 / Form_main w; /可略 denglu_form login; login.show();显示 splash-finish(&login); /图片一直显示到login加载完成

17、,这里只是让加载画面画5000次并非真的是加载程序 delete splash; /释放空间,节省内存 a.connect(&a,SIGNAL( lastWindowClosed(),&a,SLOT(quit();当最后个窗口关闭后,关闭所有程序,如果没这句话,关闭程序后,系统进程中此程序并未关闭 return a.exec();登陆框,qqqq.ui.h这个界面所用信号和槽的连接表:#include form_main.h 考虑到编译生成的.cpp和.h文件易丢失,或删除后重新编#include form_banka.h 译很多头文件无法识别,所以吧自己需要加的头文件,#include fo

18、rm_dlsb.h 放在了.ui.h内。所有的都用这方法。void denglu_form:btn_login_clicked() 登录按钮按下时所调用的槽 if(text_id-text()=tr(2013)&text_key-text()=tr(2013) /判断用户名和密码是否正确 登录成功账号密码正确的话: Form_main w; 程序主界面 if(!w.exec()=0) 如果主界面未执行 w.exec(); 则执行 elsew.show(); 若执行,就显示出来 若登录失败: else Form_dlsb dlsb; 登录失败画面 if(!dlsb.exec()=0) 同form

19、_main w dlsb.exec(); elsedlsb.show(); void denglu_form:text_id_textChanged() 当卡号的那个输入框改变时的槽if(text_id-text()=) 当卡号输入框为空 btn_login-setEnabled(FALSE); 登录按钮不能按 else btn_login-setEnabled(TRUE); 如果有东西则可以按void denglu_form:text_key_textChanged() 密码输入框的槽,同卡号输入框if(text_key-text()=) btn_login-setEnabled(FALSE

20、); else btn_login-setEnabled(TRUE);void denglu_form:btn_regist_clicked() 注册按钮 Form_banka banka; if(!banka.exec()=0) 同main.cpp的form_main banka.exec(); else banka.show();注册新用户的对话框,form_banka.ui.h:void Form_banka:btncan() checkbox被按下时的槽,因为qt无checked槽所以比较麻烦 static int x=0; 设一个静态 x x+; checkbox 每按一下就+1 i

21、f(x%2=1)btn_zhuce-setEnabled(TRUE); 若x为奇数,注册确认按钮可以用 else btn_zhuce-setEnabled(FALSE); 若为偶数,则不可引用void Form_banka:btn_fanhui_clicked() 返回主界面按钮this-hide(); 隐藏当前框void Form_banka:btn_zhuce_clicked() 注册确认按钮按下的槽 QMessageBox:information( this, add successful, 显示一个信息,因为无数据库, add successfuln 因为无数据库所以新建卡号,密 ad

22、d successful ); 码无实际效果程序主界面,form_main:#include #include #include QTimer timer; 一开始,加油的progress想用timer做的,但用其他方法做了,遗留下来的,为了以改进程序方便void Form_main:pushButton8_clicked() 关闭程序主界面按钮的槽 this-hide(); 隐藏主界面void Form_main:btn_chonzhi_clicked() 充值按钮槽 QString m=text_m1-text(); 设一个m读取余额的值 bool ok; 把m的值转为10进制的数dec

23、int dec=m.toInt(&ok,10); if(r1-isChecked() 如果选中充值50元的单选按钮 dec=dec+50; dec=+50 QString s = QString:number(dec, 10); 把dec转为Str型的s text_m1-setText(s); 将s赋值给余额 else if(r2-isChecked() 下面分别为3个单选按钮的判断赋值过程 与前面大致相同故略 dec=dec+100; QString s = QString:number(dec, 10); text_m1-setText(s); else if(r3-isChecked()

24、 dec=dec+200; QString s = QString:number(dec, 10); text_m1-setText(s); else if(r4-isChecked() dec=dec+500; QString s = QString:number(dec, 10); text_m1-setText(s);void Form_main:btn_start_clicked() 充值按钮 QString m=text_m1-text(); 取值 bool ok; 转10进制int型 int dec=m.toInt(&ok,10); cb1-setEnabled(FALSE); 设

25、置选择金额和充值按钮不可用 btn_start-setEnabled(FALSE); if(cb1-currentItem()=0) 若选择了50元的按钮 dec=dec-50; dec=-50 if(decsetEnabled(true); 金额选择和充值按钮设置为可用 btn_start-setEnabled(true); else 若金额够, QString s = QString:number(dec, 10); 把减去后的dec赋值给QStr s text_m1-setText(s); s赋给余额显示 cb1-setEnabled(true); 金额选择下来菜单可用 btn_star

26、t-setEnabled(true); 充值按钮可用 progress-setTotalSteps(500); 设置加油状态的进度条500步 int p1=0; 建一个标示 while(p1setProgress(p1); 进度条显示 以下是另外三种金额与前大致相同,故略 else if(cb1-currentItem()=1) 加油100元金额 dec=dec-100; if(decsetEnabled(true); btn_start-setEnabled(true); else QString s = QString:number(dec, 10); text_m1-setText(s)

27、; cb1-setEnabled(true); btn_start-setEnabled(true); progress-setTotalSteps(1000); int p2=0; while(p2setProgress(p2); else if(cb1-currentItem()=2) 加油200元金额 dec=dec-200; if(decsetEnabled(true); btn_start-setEnabled(true); else QString s = QString:number(dec, 10); text_m1-setText(s); cb1-setEnabled(true); btn_start-setEnabled(true); progress-setTotalSteps(2000); int p3=0; while(p3setProgress(p3); else if(cb1-currentItem()=3) 加油500元金额 dec=dec-500; if(decsetEnabled(true); btn_start-setEnabled(true); else Q

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

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