完整版基于ArmLinux平台的模拟手机设计毕业设计文档格式.docx
《完整版基于ArmLinux平台的模拟手机设计毕业设计文档格式.docx》由会员分享,可在线阅读,更多相关《完整版基于ArmLinux平台的模拟手机设计毕业设计文档格式.docx(26页珍藏版)》请在冰豆网上搜索。
基于Arm-Linux平台的模拟手机设计从理论上来说具备手机的基本功能。
同时此系统能实现跨平台运行,可以交叉编译。
同是也能在开发板上进行一系列的模拟实验。
1.2课题背景
1.2.1国外研究现状
目前,全球手机厂商的竞争已是异常的激烈,然而拥有一个好的手机操作系统已成为各大厂商的首选。
根据市场调查公司Ovum表示,手机制造商陆续采用含有先进的图形与影音处理能力高效能硬件,逐渐从ARM-11系列处理器过度到ARMCortexA8,且Qualcomm(高通)Snapdragon芯片也正在紧锣密鼓的筹备中。
相对于Symbian和WindowsMobile,现状登场的Android要更显年轻。
Android是基于Linux内核的软件平台和操作系统,早期由Google开发,后由开放手机联盟OpenHandsetAlliance开发。
它采用了软件堆层的架构,主要分为三部分。
低层以Linux内核工作为基础,只提供基本功能,其他的应用软件则由各公司自行开发,以Java作为编写程序的一部分
1.2.2国内研究现状
国内手机市场热点频涌,产销量迈上新的台阶。
彩屏手机、彩信手机、智能手机已逐渐成为市场主流,高像素照相手机、运营商定制手机、双模双卡手机开始纷纷登台亮相。
与此同时,国内手机产销量经过二季度的短暂徘徊,三季度又出现恢复性增长,目前已占得全球三分天下。
随着国外手机系统的出现,中国移动OMS智能系统应运而生,OMS是中国移动深度定制的手机操作系统,该系统是基于Linux内核、采用Android源代码进行重新开发的一套系统,在用户界面以及功能上与此前的Google手机有很大不同。
在功能方面,OMS深度集合了中国移动现有的各项业务,包括飞信、快讯、139邮箱、移动梦网等数据服务。
在用户体验方面,OMS同样也汲取了iPhone,Android,BlackBerry等多种移动终端的优势,并结合中国人自己的行为习惯和喜好方式,设计出了完全区别于Android的用户界面,其最大的特点就是采用大屏触摸式设计风格。
1.3研究方法
广泛搜集研究资料,参考国内手机系统设计的成果,分析他人的设计方法和思想,对该系统的工作模式及其体系结构进行探讨,对系统进行概要设计。
认真请教导师,在导师的指导下利用在大学所学的知识认真仔细做好需求分析,做好详细设计的准备。
应用相关的理论、技术编码,如Sqlite数据库理论,C++语法,Qt界面布局,交叉编译。
最后运用构建知识将程序移植到mini2440上进行测试,并优化性能。
开发过程中主要用到的开发工具有QTCreator4.6,ARM9,超级终端,设备驱动等。
该系统预期实现的功能有:
登陆功能,通信录管理,通话记录,信息服务,情景设置,多媒体,小工具,娱乐,客户服务,谷歌地图。
1.4论文结构说明
本文从软件开发的角度并结合详细的图示和相关关键代码阐述了关于开发基于Arm-Linux平台的模拟手机设计的背景、意义、系统的需求分析,概要设计,详细设计,并对数据库进行了分析,从数据库的用户需求,概要设计,E-R图设计,逻辑设计,物理设计,都进行了详细的阐述。
一个好的软件开发过程是漫长的,本系统从设计到完成编码用了差不多三个月的时间,由于本人软件工程知识理解有限,难免会在使用的过程中产生开发过程中隐藏的问题,本文提供了该软件的基本运行,测试环境的搭建和调试方法,并提供了相关说明。
由于作者水平和经验的限制,加之编写时间仓促,本文可能存在不当之处,敬请批评指正。
第2章 需求分析
2.1系统功能分析
基于Arm-Linux平台的模拟手机设计系统统过给定的密码登录页面进行操作。
登录判定上首次基于数据库验证。
使用者可以在登录成功后对密码进行修改,并同时可以选择进行一系列操作,通话记录,信息服务,情景设置,多媒体,小工具,娱乐,客户服务。
该系统的功能需求可归纳为:
1.用户通过密码进入主功能模块;
2.实现电话薄的基本管理;
3.记录本地的通话情况;
4.五子棋小游戏的简单实现;
5.背景,语言,时间的简单设置;
6.媒体播放器的简单实现;
7.计算器,记事本,系统实时监控,号码归属地查询,货币兑换等小工具的使用;
8.浏览器的实现;
9.简单客户信息的查看;
2.2可行性分析
2.2.1技术可行性分析
根据自己四年所掌握的知识,熟练掌握的语言有:
C,C++,LinuxC,同事具备对数据库的基本使用能力,能用Sql,Mysql,Sqlite,进行程序开发。
同时,对嵌入式进行过系统的学习,懂得汇编语言,交叉编译,文件系统配置,驱动移植,并且能熟练运用QT进行程序开发。
QT是一个跨平台应用程序和UI开发框架。
使用QT您只要一次性开发应用程序,无需重新编写源代码,便可跨不同桌面和嵌入式操作系统部署这些应用程序,QtCreator是Qt被Nokia收购后推出的一款新的轻量级集成开发环境(IDE)。
此IDE能够跨平台运行,支持的系统包括Linux(32位及64位)、MacOSX以及Windows。
根据官方描述,QtCreator的设计目标是使开发人员能够利用Qt这个应用程序框架更加快速及轻易的完成开发任务
综上所述,技术上开发条件具备。
2.2.2经济可行性分析
本系统的开发成本包括开发时间、软件、硬件。
开发时间为三个月,由本人利用毕业设计的时间完成。
软件成本为现有软件,已经网上找到的免费开发工具。
完全可以胜任开发要求。
硬件成本是已有的一台笔记本电脑,相关现有的外围设备,当然,演示的时候可能不能进行实践的操作。
开发本系统的经济条件基本具备,可以开发。
第3章 概要设计
3.1系统目标
基于Arm-Linux平台的模拟手机设计,能进行简单的手机功能,通过这个系统,能进行通话,休闲,娱乐,学习等基本功能。
3.2系统模块图
通过需求分析可得到模拟手机设计系统的模块由九大部分构成,它们分别是登录模块、通讯管理、通话记录、信息服务、情景设置、多媒体、小工具、娱乐、客户服务。
功能模块图如图3.1所示。
图3.1系统模块图
3.3系统功能流程图
图3.2系统功能流程图
第4章 数据库设计
4.1数据库需求分析
数据库需求分析就是要了解在这个系统中,用户需要查询、更新、删除和保存哪些数据,收集基本数据、数据结构以及数据处理的流程,组成一份详尽的数据字典,为后面的具体设计打下基础[8]。
4.2数据库概要设计
概念设计是整个数据库设计的关键。
它的目的是将需求说明书中关于数据的需求,综合为一个统一的DBMS概念模型。
首先根据单个应用的需求,画出能反映每一应用需求的局部E-R模型。
然后将这些E-R模型图合并起来,消除冗余和可能存在的矛盾,得出系统总体的E-R模型。
E-R图(Entity-Relationship图,实体-关系图)是由P.P.Chen于1976年首先提出。
它提供不受任何DBMS约束的面向用户的表达方法,在数据库设计中被广泛用作数据建模的工具。
E-R数据模型问世后,经历了许多修改和扩充。
E-R模型的构成成分是实体集、属性和联系集,其表示方法如下:
1.实体集用矩形框表示,矩形框内写上实体名。
2.实体的属性用椭圆框表示,框内写上属性名,并用无向边与其实体集相连。
3.实体间的联系用菱形框表示,联系以适当的含义命名,名字写在菱形框中,用无向连线将参加联系的实体矩形框分别与菱形框相连,并在连线上标明联系的类型,即1—1、1—M或M—M。
本系统中的实体以及实体的属性如图4.1-图4.4所
图4.1用户
图4.2通讯人
图4.3号码
图4.4短信
4.3数据库物理设计
本系统采用QT里面自带的一种小数据库,不需要另外再去安装。
具体部分实现如下:
QSqlDatabasedb;
创建数据库对象
db=QSqlDatabase:
:
addDatabase("
QSQLITE"
);
设置数炤库类型
db.setDatabaseName("
info.db"
设置数据库的名字
QSqlQueryquery;
声明一个对象
query.exec("
createtablepassword(idintprimarykey,passvarchar(6))"
);
建表
query.exec("
insertintopasswordvalues(1,'
123'
)"
插入数据
query1.exec("
select*frompassword"
查询
stModel=newQSqlTableModel(this,db);
创建数据模型
stModel->
setTable("
peoples"
模型关联students表
stModel->
setEditStrategy(QSqlTableModel:
OnManualSubmit);
设置模型编辑策略
select();
执行默认查询
ui->
viewInfo->
setModel(stModel);
viewInfo关联模型
insertRow(dwMapper->
currentIndex()+1);
增
removeRow(dwMapper->
currentIndex());
删除
dwMapper->
submit();
submitAll();
修改
第5章 系统详细设计
5.1登录详细设计
5.1.1登录流程
本系统登录流程如图5.1所示。
图5.1登录流程
5.1.2登录页面
登录代码设计
密码匹配
while(query1.next())
{
if(strcmp(query1.value
(1).toString().toLocal8Bit().data(),pass.toAscii().data())==0)
spass="
"
;
pass="
Menu*m=newMenu(this);
this->
}
将密码转换成*显示
if((strlen(pass.toAscii().data())-strlen(ui->
lineEdit->
text().toAscii().data()))!
=0)
{
for(intnum=0;
num<
strlen(ui->
text().toAscii().data());
num++)
if(ui->
text().toAscii().data()[num]!
='
*'
)
{
pass.append(ui->
text().toAscii().data()[num]);
spass.append("
*"
}
ui->
setText(spass);
登陆界面:
图5.2登录设计
5.2通讯录管理功能详细设计
5.2.1通讯录管理的流程图
图5.3通讯录管理流程
5.2.2通讯录管理的设计
部分代码设计:
QStringname=ui->
lineEditName->
text();
if(!
db.isOpen())
设置数据库类型
db.setDatabaseName("
设置数据库名
if(!
db.open())
QMessageBox:
warning(this,"
Error"
"
打开失败!
return;
}
select*frompeoples"
))
information(this,"
提示"
query.lastError().text());
while(query.next())
query.value(0).toString().toLocal8Bit().data());
if(!
strcmp(name,query.value
(1).toString().toLocal8Bit().data()))
lineEditNum->
setText(query.value
(2).toString());
lineEditOther->
setText(query.value(3).toString());
flag=false;
break;
通讯录管理的部分界面:
图5.4通讯录管理页面设计
5.3情景设置
5.3.1语言设置
目前设置了2中语言的转换:
中、英文,将来可能添加多语言。
语言设置的过程是:
1.在工程中.pro中添加translations=MyPhone_ch.ts(ts前面的名字可以不同);
2.通过终端进入项目的目录执行lupdate.pro命令
(这时,MyPhone_ch.ts中内容更新了,被tr()标注的字符串被提取出来了);
3.执行linguist
MyPhone_ch.ts,进行编辑,对提取的每个串进行翻译,也就是键入对应字串。
在左边面板中列出所有可供翻译的字串,单击之,右边编辑区会显示出来;
4.在“File”菜单下,单击"
Release"
项,这会生成我们需要的.qm文件;
语言设置的部分代码:
QTranslatortranslator(this);
声明一个翻译类的对象
translator.load("
Myphone_ch"
"
."
将配置文件加载进来
qApp->
installTranslator(&
translator);
在所有界面插入配置文件
语言设置的界面:
图5.5语言切换界面
5.3.2背景设置
背景设置就是皮肤设置,借用css的灵感,Qt也支持Qt自己的css,简称qss。
同css相似,qss的主要功能与最终目的都是能使界面的表现与界面的元素分离,即质与形的分离,就如同一个人可以在不同的时候穿上不同的衣服一样,css机制的引入,使得设计一种皮肤与界面控件分离的软件成为可能,应用程序也能像web界面那样随意地改变外观。
详细内容请参考:
(QFile:
ReadOnly);
setStyleSheet(qss1.readAll());
qss1.close();
5.3.3日期查询
图5.6日期查询
5.3.4开机PIN密码的设置
图5.7PIN的设置
5.4多媒体
5.4.1本系统支持视频,音频的播放,具体部分实现如下:
mObject=newPhonon:
MediaObject(this);
aOutput=newPhonon:
AudioOutput(Phonon:
MusicCategory,this);
音频
vWidget=newPhonon:
VideoWidget(ui->
frameVideo);
视频
vWidget->
setAspectRatio(Phonon:
VideoWidget:
AspectRatioAuto);
让解码器找到长宽比从媒体文件自动(这是默认的)
setScaleMode(Phonon:
FitInView);
这个录像将安装角度来填补保持长宽比
sSlider=newPhonon:
SeekSlider(ui->
frameProcessVideo);
vSlider=newPhonon:
VolumeSlider(ui->
frameProcessListen);
声音进度条
Phonon:
createPath(mObject,aOutput);
createPath(mObject,vWidget);
关联视频与mObject对象
sSlider->
setMediaObject(mObject);
播放进度条与播放位置关联
vSlider->
setAudioOutput(aOutput);
声音进度条与音频关联
setMinimumWidth(ui->
frameProcessVideo->
width());
设置长度播放进度条
frameProcessListen->
设置长度音量大小进度条
5.4.2实现的界面:
图5.8视频播放
5.5小工具
5.5.1计算器
支持普通的数学运算功能,能进行+,-,*、%。
同时还能进行二进制,十进制,十六进制的转换。
计算器的部分代码如下:
以下是转换为二进制的部分代码:
if(T_D_H==10)当前是十进制
number=ui->
txtEdit->
text().toDouble();
number1=(int)number;
pnumber=number-number1;
while(number1)
list[t++]=number1%2;
number1=2;
t--;
while(t!
=-1)
switch(list[t])
{…}
if(pnumber!
=0.0)当前的十进制有小数部分
intpn=3;
temp.append("
while(pn--)
elseif(T_D_H==16)当前是十六进制
strcpy(clist,ui->
text().toLocal8Bit().data());
for(intt=0;
t<
strlen(clist);
t--)
witch(clist[t])
{…}
setText(temp);
T_D_H=2;
以下是转换为十六进制的部分代码
if(T_D_H==2)
……
elseif(T_D_H==10)
j=1;
num=int(ui->
text().toLocal8Bit().toDouble());
for(i=0;
;
i++)
if(num%16>
9)
switch(num%16)
{……
else
clist[i]=(num%16)+'
40'
num=16;
if(num<
16)
if(num>
switch(num)
clist[++i]=num+'
QStringpen(Qt:
blue);
sceneX->
addLine(-VIEW_WIDTH2+10,10,VIEW_WIDTH2-40,10,pen);
sceneY->
addLine(10,-VIEW_HEIGHT2