基于C++的渔船信息安全系统设计论文Word文件下载.docx
《基于C++的渔船信息安全系统设计论文Word文件下载.docx》由会员分享,可在线阅读,更多相关《基于C++的渔船信息安全系统设计论文Word文件下载.docx(22页珍藏版)》请在冰豆网上搜索。
(2)增加了面向对象的机制。
(3)增加了泛型编程的机制(template)
(4)增加了异常处理
(5)增加了运算符重载
(6)增加了标准模板库(STL)
2.2Access2007的特点
1.使用OfficeFluent用户界面更快地获得更好的结果。
2.使用预制的解决方案快速入门。
3.针对同一信息创建具有不同视图的多个报表。
4.可以迅速创建表,而无需担心数据库的复杂性。
5.使用全新字段类型,实现更丰富的方案。
6.直接通过源收集和更新信息。
7.通过MicrosoftWindowsSharePointServices共享信息。
8.使用OfficeAccess2007的富客户端功能跟踪WindowsSharePointServices列表。
猫虿驢绘燈鮒诛髅貺庑。
9.将数据移动到WindowsSharePointServices,增强可管理性。
10.访问和使用多个源中的信息。
2.3MFC技术介绍
MFC实际上是微软提供的,用于在C++环境下编写应用程序的一个框架和引擎。
VC++是Windows下开发人员使用的专业C++SDK(SDK,StandardSoftWareDevelopKit,专业软件开发平台),MFC就是挂在它之上的一个辅助软件开发包。
锹籁饗迳琐筆襖鸥娅薔。
MFC是WinAPI与C++的结合。
API,即微软提供的Windows下应用程序的编程语言接口,是一种软件编程的规范,但不是一种程序开发语言本身,可以允许用户使用各种各样的第三方的编程语言来进行对Windows下应用程序的开发,使这些被开发出来的应用程序能在Windows下运行,比如VB、VC++、Java、Delhpi。
编程语言函数本质上全部源于API,因此用它们开发出来的应用程序都能工作在Windows的消息机制和绘图里,遵守Windows作为一个操作系统的内部实现,这其实也是一种必要。
構氽頑黉碩饨荠龈话骛。
第3章系统需求分析
3.1系统可行性分析
系统的可行性分析是建立在用户的要求和系统调研的基础上进行的,可行性分析的主要工作包括:
(1)目标可行性分析
本渔船信息安全系统是针对渔业管理而研制开发的,虽然对于全国渔业管理部门来说,本系统肯定有一些细节上的遗漏,但是经过作者对于渔业信息安全管理的深入了解,本系统应该可以和渔船信息管理达到很好的对接[7]。
考虑到不同渔船信息管理体制可能不同,所以本系统在修改、添加功能模块上留有很大的空间,可供使用者进行具体修改。
輒峄陽檉簖疖網儂號泶。
(2)技术可行性分析
本系统开发主要包括后台数据库的建立与维护以及前端应用程序的开发与升级。
为了达到具体管理体制的要求,满足用户的需求,系统在多方面提供方便的接口,解决了大量的计算自动化,界面轻松可视化强,操作简单方便,可以迅速掌握使用方法。
尧侧閆繭絳闕绚勵蜆贅。
此外,本系统还精心设计输入方式,方便操作人员,有效地减少数据输入的工作量,极大提高用户的工作效率。
(3)经济可行性分析
经济可行性分析主要是对开发新系统所投入的资金与系统投入使用后所带来的经济效益进行比较。
本系统的主要经济投入是在软件的维护上,由于使用的硬件环境要求很低,所以在硬件环境上所需投入很低。
而在软件方面,C++运行环境以及Access2007数据库,在市面上的成本也是相当低廉,操作系统为Windows98/Windows2000/WindowsXP/WindowsVISTA等,均可正常运行。
识饒鎂錕缢灩筧嚌俨淒。
3.2系统任务描述
渔船信息安全系统面向的是渔业管理部门的管理渔船各项信息,是利用信息化进行集中管理而开发的系统。
旨在使渔业管理部门能够方便,全面,快捷的行使管理职能。
据系统功能的要求,可以将其分为六个主要功能分支,分别为管理员信息管理、渔船信息管理、船员信息管理、渔船违规记录、关于作者、退出系统,可以将系统分解成为几个功能模块来分别设计。
凍鈹鋨劳臘锴痫婦胫籴。
对于渔船信息安全系统,根据系统功能分析,本系统只设置有管理员流程页面,实现上述六个个框架的功能。
下面分析管理员流程页面。
打开程序登录页面,如果登录成功,则进入相应的功能页面,依次为管理员信息管理,渔船信息管理,船员信息管理,渔船违规记录,关于作者,退出系统。
恥諤銪灭萦欢煬鞏鹜錦。
3.3系统功能分析
3.3.1系统的功能需求
经过调研与可行性分析,出于渔业管理部门的工作需要,设计了这套渔船信息安全系统,本系统主要考虑渔业管理部门管理需要,渔船信息安全系统主要包括:
鯊腎鑰诎褳鉀沩懼統庫。
(1)对渔船的所有信息的录入和增、删、改、查询等功能的实现。
(2)对渔船船员的信息管理,包括增、删、改、查询等功能的实现,这些也是渔船信息的基本组成部分。
(3)在具有了所有的基本资料信息后,需要实现实质性的渔船信息管理。
主要的管理业务包括:
渔船信息和船身参数管理、船员信息管理、渔船违规记录管理等。
这样就可以便于渔业管理部门进行全面的了解和管理了。
硕癘鄴颃诌攆檸攜驤蔹。
3.3.2系统数据流图
根据了解和分析现有的系统,概括对本系统的认识,并描绘未来物理系统的概貌形成系统流程图[7]
申请处理
图1系统数据流图
3.3.3系统数据分析
在仔细调查小区物业管理系统过程的基础上,总结出该系统需要满足以下系统数据的需求:
(1)系统管理员资料。
包括管理员用户名和管理员密码。
密码
图2管理员信息实体图
总线间长
图3渔船信息实体图
性别
图4船员信息实体图
处理方案
图5渔船违规记录实体图
下面列出本系统的总体E-R图:
经分析设计,各实体间联系如图所示:
n
违规
图6总体E-R图
第4章系统设计
4.1系统总体结构设计
考虑到信息数据在安全性的特殊要求,该渔船信息安全系统的工作流程需用户登录通过权限判断,即需要输入登陆口令方能进入主系统界面。
本系统数据库采用Access2007,开发平台采用vc。
本系统只包含管理员操作模块。
阌擻輳嬪諫迁择楨秘騖。
管理员操作模块如下:
(1)通过“管理员信息管理”/“添加管理员信息”模块添加管理员信息。
(2)通过“渔船信息管理”/“添加渔船信息”模块,添加渔船信息。
(3)通过“船员信息管理”/“添加船员信息”模块,添加船员信息。
(4)通过“渔船违规记录”/“添加违规记录”模块,编辑渔船违规信息。
(5)通过“管理员信息管理”/“删除管理员信息”模块删除管理员信息。
(6)通过“渔船信息管理”/“删除渔船信息”模块删除渔船信息。
(7)通过“船员信息管理”/“删除船员信息”模块删除船员信息。
(8)通过“渔船违规记录”/“删除渔船违规记录”模块删除渔船违规记录。
(9)通过“管理员信息管理”/“修改管理员信息”模块修改管理员信息。
(10)通过“渔船信息管理”/“修改渔船信息”模块修改渔船信息。
(11)通过“船员信息管理”/“修改船员信息”模块修改船员信息。
(12)通过“管理员信息管理”/“查询管理员信息”模块查询管理员信息。
(13)通过“渔船信息管理”/“查询渔船信息”模块查询渔船信息。
(14)通过“船员信息管理”/“查询船员信息”模块查询船员信息。
(15)通过“渔船违规记录”/“查询违规记录”模块查询违规记录。
在系统功能分析的基础上,根据程序的特点,渔船信息安全系统的功能结构框架图如下
渔船违规记录
删除船员信息
氬嚕躑竄贸恳彈瀘颔澩。
违规记录
渔船信息
删除违规记录
查询违规记录
添加违规记录
删除渔船信息
修改渔船信息
查询渔船信息
添加渔船信息
4.2系统数据库设计
数据库在一个系统中的地位极其重要,而数据库设计就是要在一个给定的应用环境中,通过一系列的逻辑设计和物理设计,构造出恰当的数据库模式、子模式,建立数据库和设计应用程序,满足用户的各种信息需求。
釷鹆資贏車贖孙滅獅赘。
下面就列出系统中的个别具体数据库表:
表1:
本系统所用到的基本信息表及用途
表名
用途
manager
管理员信息管理表
illegalInformation
渔船违规记录信息管理表
boat
渔船信息管理表
sailor
船员信息管理
表2:
管理员信息表,主要用来管理与管理员相关的数据。
主键:
编号(ID),
表2管理员信息表
名称
数据类型
说明作用
是否为空
大小
Id
自动编号
管理员编号
否
20
Name
文本
登录名
Password
表3:
渔船信息管理表,主要用来管理渔船信息数据。
(ID)
表3渔船信息管理表
id
编号
boatname
船名
40
captain
船长
boatAddress
船籍
100
buildingTime
建造时间
capacity
核载船员数量
200
long
总长
1000
wide
宽
high
深
verticalLine
垂线间长
draught
吃水
tonnager
吨位
100000
mainPower
主机功率
10000
navigationArea
航区
screwNum
已有船员数量
表4:
船员信息表,主要用来管理船员信息的数据。
(Id)
表4船员信息管理表
船员编号
sailorName
船员名称
Sex
personalId
身份证号
telephone
电话
workAge
船龄
boatId
所在渔船编号
address
家庭住址
email
邮箱
表5:
渔船违规记录信息管理表,主要用来管理渔船违规记录的数据。
主键:
表5渔船违规记录信息管理表
boatName
渔船名字
渔船编号
time
发生时间
reason
发生事由
result
500
以下为数据库关系图:
图7数据库关系图
4.3系统部分功能模块设计
图8管理员登录模块流程图
4.3.1管理员登录模块怂阐譜鯪迳導嘯畫長凉。
第5章功能实现
5.1系统主要模块代码
5.1.1管理员登陆界面及其主功能界面
输入管理员的用户名和相应的密码。
系统自动判别用户名与密码是否正确,即系统将自动从数据库中的管理员信息表中判断是否存在相同的用户名和密码。
如果匹配则进入系统,如果不匹配,则提示管理员不存在或密码有误。
管理员系统登陆界面如下:
谚辞調担鈧谄动禪泻類。
图9管理员登录界面
进入管理员界面后,可以通过“渔船信息管理”模块下的“添加渔船信息”功能添加渔船信息等。
其界面如下:
图10添加渔船信息界面
添加渔船信息相关代码如下:
voidCAddBoatInformationDialog:
:
OnAddFishingVessel()嘰觐詿缧铴嗫偽純铪锩。
{
//TODO:
Addyourcontrolnotificationhandlercodehere熒绐譏钲鏌觶鷹緇機库。
UpdateData(true);
if(m_boatAddress=="
"
||m_boatId=="
||m_boatName=="
||m_buildDay=="
||m_buildMonth=="
||m_buildYear=="
鶼渍螻偉阅劍鲰腎邏蘞。
||m_capacity=="
||m_captain=="
||m_draught=="
||m_hight=="
||m_long=="
||m_mainPower=="
||m_navigationArea=="
纣忧蔣氳頑莶驅藥悯骛。
||m_tonnager=="
||m_verticalLine=="
||m_wide=="
)
{
//提示信息
MessageBox("
请填写完整所有信息!
请正确输入!
"
警告"
MB_ICONEXCLAMATION|MB_OK);
颖刍莖蛺饽亿顿裊赔泷。
}
elseif((m_buildYear+m_buildMonth+m_buildDay).GetLength()!
=8)濫驂膽閉驟羥闈詔寢賻。
输入建造时间的格式错误,正确写法:
年4位如2013,月两位如03,日两位如01!
銚銻縵哜鳗鸿锓謎諏涼。
m_buildYear="
;
m_buildMonth="
m_buildDay="
UpdateData(false);
else
UpdateData(true);
CoInitialize(NULL);
HRESULThr;
try
{
//创建Connection对象
hr=m_pConnection.CreateInstance("
ADODB.Connection"
);
挤貼綬电麥结鈺贖哓类。
if(SUCCEEDED(hr))
{
//连接数据库
hr=m_pConnection->
Open("
DRIVER={MicrosoftAccessDriver(*.mdb)};
uid=;
pwd=;
DBQ=E:
\\FishingVesselSafetyIS\\database\\渔船安全信息系统.mdb"
adModeUnknown);
赔荊紳谘侖驟辽輩袜錈。
}
}
//捕捉异常
catch(_com_errore)
CStringerrormessage;
errormessage.Format("
连接数据库失败!
\r\n错误信息:
%s"
e.ErrorMessage());
塤礙籟馐决穩賽釙冊庫。
//显示连接失败信息
AfxMessageBox(errormessage);
}
m_pRecordset.CreateInstance("
ADODB.Recordset"
//用于下面的open函数
_variant_tRecordsAffected;
//用于比较输入的名字
CStringstrNum;
//用于标记该船是否存在
boolisExistence=false;
//打开数据库中的boat表
m_pRecordset->
Open(_bstr_t("
SELECT*FROMboat"
),m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
裊樣祕廬廂颤谚鍘羋蔺。
while(!
m_pRecordset->
rsEOF)
{
strNum=(char*)(_bstr_t)(m_pRecordset->
GetCollect("
id"
));
仓嫗盤紲嘱珑詁鍬齊驁。
if(strNum==m_boatId)
isExistence=true;
break;
}
m_pRecordset->
MoveNext();
if(isExistence)
MessageBox("
该编号船已存在,请核实后输入!
绽萬璉轆娛閬蛏鬮绾瀧。
//清空要输入的数据
m_boatId=_T("
UpdateData(false);
else
//合成时间
CStringstrDate;
strDate=m_buildYear+m_buildMonth+m_buildDay;
//该船数据不存在,可以向数据库中添加记录,注意使用AddNew()后要用Update()提交数据,两者需一起使用。
骁顾燁鶚巯瀆蕪領鲡赙。
AddNew();
PutCollect("
_variant_t(m_boatId));
瑣钋濺暧惲锟缟馭篩凉。
boatAddress"
_variant_t(m_boatAddress));
鎦诗涇艳损楼紲鯗餳類。
boatName"
_variant_t(m_boatName));
栉缏歐锄棗鈕种鵑瑶锬。
captain"
_variant_t(m_captain));
辔烨棟剛殓攬瑤丽阄应。
capacity"
_variant_t(m_capacity));
峴扬斕滾澗辐滠兴渙藺。
draught"
_variant_t(m_draught));
詩叁撻訥烬忧毀厉鋨骜。
hight"
_variant_t(m_hight));
则鯤愜韋瘓賈晖园栋泷。
long"
_variant_t(m_long));
胀鏝彈奥秘孫戶孪钇賻。
mainPower"
_variant_t(m_mainPower));
鳃躋峽祷紉诵帮废掃減。
navigationArea"
_variant_t(m_navigationArea));
稟虛嬪赈维哜妝扩踴粜。
verticalLine"
_variant_t(m