C语言开发电子地图二进制库报告.docx
《C语言开发电子地图二进制库报告.docx》由会员分享,可在线阅读,更多相关《C语言开发电子地图二进制库报告.docx(18页珍藏版)》请在冰豆网上搜索。
C语言开发电子地图二进制库报告
目录
第一章生产实习目的1
第二章实习单位介绍2
第三章实习计划3
第四章实习内容4
4.1实习内容4
4.1.1实习要求4
4.1.2模块功能描述4
4.2详细设计5
4.2.1数据结构体定义5
4.2.2全局变量定义6
4.2.3功能实现6
4.3运行结果14
第五章心得体会17
第一章生产实习目的
生产实习是培养本科生时间能力的主要教学环节,对于促进理论联系实际、了解科学专业发展状况、增强实践动手能力、提高学生综合素质具有十分重要的作用。
同时不得不提的是,生产实习锤炼了一个本科生的素质,不仅是知识上的一个锤炼,更是人生观、价值观、社会经验观的提前导入,所以这一过程必不可少,同时也使我们受益匪浅。
1.通过接触实际、了解社会、使得学生对本专业生产、设计和相关研究课题等简历感性认识。
2.巩固所学理论知识,同时获得生产实际知识和技能,学习先进的生产技术和企业组织管理知识,培养分析解决工程实际问题的初步能力。
3.了解社会和国情,直接向工人和工程技术人员、管理人员学习各种相关的实践知识,增强劳动观念,培养学生事业心和责任感,为以后走向社会打下了良好的基础。
第二章实习单位介绍
我们所在的实习单位沈阳东软软件股份有限公司于1991年始创于东北大学。
公司主营业务包括:
行业解决方案、产品工程解决方案、软件产品与平台及服务等。
东软面向行业客户提供安全、可靠、高质量、易扩展的行业解决方案,帮助客户实现信息化管理最佳实践,以满足客户业务快速发展的不同需求。
东软行业解决方案涵盖的领域包括:
电信、电力、金融、政府(社会保障、财政、税务、公共安全、国土资源、海洋、质量监督检验检疫、工商、知识产权等)以及制造业、医疗卫生、教育、交通等行业。
在产品工程解决方案领域,东软与世界一流的跨国公司开展合作,提供车载信息产品、数字家庭产品、移动终端和IT产品的嵌入式软件开发和服务。
我们的嵌入式软件系统在众多世界著名品牌的汽车、DVD、数字电视、数码相机、电子琴、手机、笔记本电脑等终端产品中运行。
在自有品牌的产品工程方面,在医疗领域,我们开发并提供包括CT、MRI、数字X线机、彩超、全自动生化分析仪、多参数监护仪、放射治疗设备、核医学成像设备等11大系列50余种医疗产品,其中CT机填补了中国在该领域的空白,使得中国成为全球第四个能够生产CT的国家;在网络安全领域,东软提供SOC、NTARS、FW、IPS、IDS、VPN、审计系统等全线网络安全产品,广泛应用于金融、电信、电力、企业、社保、教育、政府等行业。
在服务领域,东软提供包括应用开发和维护、业务流程外包(BPO)、套装应用软件服务(第三方的ERP咨询与实施)、IT咨询服务、IT基础设施服务、专业测试服务以及本地化服务、IT教育与培训等服务业务。
其中,在业务流程外包(BPO)方面,东软已为日本、韩国、欧美等多家跨国公司提供多语言、多类别的BPO服务,包括:
CallCenter、ITHelpDesk、ApplicationSupport以及HROutsourcing、WebContentsManagement等Back-Office外包服务。
第三章实习计划
2013-10-21至2013-10-29共计七天(周六、周日休息)。
每天上午9:
00-12:
00上课下午1:
00-4:
00上课
具体时间安排如下:
10.21日:
东软教师安排实习内容,给学生讲实习知识点。
10.22-10.28日:
学生编写程序,完成实习内容。
10.29日:
学生完成实习答辩。
第四章实习内容
4.1实习内容
4.1.1实习要求
开发一个对电子地图数据进行管理的系统,原始数据按照地图数据格式存储在一个二进制文件中。
每个道路都是被赋予了独一无二的编号,这个编号叫做LinkID。
在这个文件中存储着部分道路情况的数据,它们是无序存储的(针对LinkID是无序的)。
能读取原始数据(按照地图数据格式的二进制文件)。
对导航数据中的道路数据进行整理,分析,查询,排序。
采用顺序查找、折半查找、分块查找等多种查找方法进行性能比较。
采用冒泡排序、快速排序等多种排序方法进行性能比较。
4.1.2模块功能描述
(1)读取模块
该模块是实现从二进制文件中将原始数据读出,作为后边功能实现的数据,从图中选择“1”将实现该功能,读取成功后形成新的文件。
该功能的实现采用了移位运算,从二进制文件中提取了相关数据,包括:
道路编号、道路名称、岔路数、道路番号等关键字信息。
(2)排序模块
排序功能是对已加载成功的文件进行排序。
这里采用了两种排序方法:
冒泡排序和快速排序,每种排序又可以选取不同的关键字进行排序,本文实现了按道路编号、道路名称、道路番号和岔路数进行冒泡排序和快速排序。
并且对每种排序加以计时,对所有排序结果与预测进行比较。
(3)检索模块
该功能模块是在排序的基础上进行的,按不同的关键字(道路编号、道路名称、道路番号和岔路数)进行顺序查找和二分法查找。
对于已检索到的信息分两部分处理,一部分可以作为界面显示,这部分内容一般数量较少,只有几条记录;另一部分数量比较大的可以写在一个文本文件中,这样有利于查阅和校对。
(4)更新模块
该模块是对已排序好的二进制文件替换原来的文件,如果出现错误会做出提示,一旦成功后源文件就是新文件了。
4.2详细设计
4.2.1数据结构体定义
(1)道路记录结构体
structRoadRecord
{
shortussize;
longullinkId;
shortusroadnamesize;
intusdispclass;
intusbrunch;
intusroadnameflag;
charroadname[20];
};
(2)所有道路信息结构体
structtagMap_t
{
charsign_one[2];
charactotalsize[16];
charlinkid[14];
charflag[7];
charbrunch[9];
chardispclass[13];
charRoadname[30];
};
(3)输出结构体
structdataOut
{
longlinkId;
intdispclass;
intbrunch;
introadnameflag;
};
4.2.2全局变量定义
intnsizecount=0;//计算记录的数量
intmark_1=0;//判断是否读取文件
intmark_2=0;//判断是否对记录排序
4.2.3功能实现
4.2.3.1函数定义
voidma_interf()
{
//函数体;
};//主界面功能定义
intReadFile()
{
//函数体;
};//读文件
voidSearch()
{
//函数体;
};//检索文件
voidWriteResult(intb[],intj)
{
//函数体;
};//检索的记录多于五条时输出到文本文件中
boolReadData(FILE*p)
{
//函数体;
};//将文本文件中的记录存储在内存中
voidSortData(tagMap_t[])
{
//函数体;
};//按linkID编号由小到大排序
voidupda(FILE*p)
{
//函数体;
};//将已经排序好的记录输出到文本文件中
voidmain()
{
//函数体;
};//主函数
4.2.3.1.1ReadFile函数
ReadFile函数表4.1
函数名
ReadFile
函数作用范围
public
类名
功能概要
进行读取文件操作,并将读取信息存储在结构体数组中
记述形式
参数
类型
变量名
I/O
说明
int
m
O
定义整型变量m
int
z
O
计算记录的长度
char
aclinkId[4]
O
道路编号
char
acroadnamesize[2]
O
道路名称的尺寸
char
acNodeInfo[4]
O
道路节点信息
unsignedshort
ustotalsize
O
道路信息的尺寸
unsignedlong
ullinkId
O
道路编号
unsignedshort
usroadnamesize
O
道路名称的尺寸
char
actotalsize[2]
O
道路信息的尺寸
返回值
类型
int
说明
值
0
函数执行完毕
详细说明
1.打开并读取二进制文件
2.读取道路名称的尺寸、道路编号
3.读取道路节点信息
4.读取Class番号、岔路数、线路名称flag
5.判断totalSize-12是否大于0,若大于0读取道路名称并输出,否则读取道路名称为空输出空值。
使用注意事项
图4.1读文件流程图
4.2.3.1.2Search函数
Search函数表4.2
函数名
Search
函数作用范围
public
类名
功能概要
检索道路信息
记述形式
参数
类型
变量名
I/O
说明
int
select
I
定义整型变量,选择检索方式
int
*b
O
定义数值指针,存放检索的信息
int
i=0,j=0,c=0,f
O
定义整型变量
char
sss[20]
I
定义字符型数组
char
ss_1[14]
O
定义字符型数组
返回值
类型
void
说明
值
无
详细说明
1.输入要检索的方式
2.输入要检索的信息
3.通过比较道路信息数组来检索
4.将检索的结果输出
5.如果输出的结果没有超过5条记录,则输出到屏幕上;如果超过5条记录,则导出到文本文件中
使用注意事项
图4.2检索道路信息流程图
4.2.3.1.3SortData函数
SortData函数表4.3
函数名
SortData
函数作用范围
public
类名
功能概要
对读取的文件内容进行排序
记述形式
参数
类型
变量名
I/O
说明
int
i=0,k=0,j=0,m=0,n=7;
定义整型变量
Char
temp[50];
定义字符型数组
返回值
类型
int
说明
值
无
无返回值
详细说明
1.打开二进制文件。
2.如果成功打开文件就对其进行读取,否则重新选择文件。
3.对打开的文件进行排序。
4.排序成功,输出结果。
使用注意事项
图4.3
4.2.3.1.4upda函数
upda函数表4.4
函数名
upda
函数作用范围
public
类名
功能概要
插入一条新的记录,并更新
记述形式
参数
类型
变量名
I/O
说明
FILE*
p
I
定义文件指针
short
size
I
新纪录的道路信息尺寸
long
linkid
I
新纪录的
int
dispclass
I
新纪录的Class番号
int
brunch
I
新纪录的岔路数
int
flag
I
新纪录的线路名称flag
char
roadname
I
新纪录的道路名称
返回值
类型
void
说明
值
无
详细说明
1.输入新纪录的道路名称、尺寸等信息
2.将新纪录添加到文本文件中
使用注意事项
图4.4
4.2.3.1.5WriteResult函数
WriteResult函数表4.4
函数名
WriteResult
函数作用范围
public
类名
功能概要
输出超过5条的检索数据信息
记述形式
参数
类型
变量名
I/O
说明
FILE*
qq
I
定义文件指针
int
i=0,f,z=1
I
定义三个整型变量
返回值
类型
void
说明
值
无
详细说明
1.输出超过5条的检索数据信息
使用注意事项
图2.4
4.3运行结果
(1)主界面运行结果
(2)读取文件运行结果
当程序运行后,首先应依次进行文件的读取操作,否则系统会提示不能进行其他操作。
文件读取分为两个部分,一是将二进制文件中的数据转换成字符型整型等数据,然后为每个数据设计适当的目标类型,并将这些转换后的数据写到“知识点”文本文件中。
二是把转换后的数据读入到结构体变量s[i]中,以便为后面的排序、检索更新等操作做准备。
(3)排序运行结果
在进行完读取操作后,第二步要进行的是排序操作。
这个系统中用到的是快速排序方法。
原始数据是按照LInkID值无序存放的,通过排序操作后,系统将按照LinkID值从小到大排列。
然后将排好序的数据存放在结构体变量ss[i]中,为以后的更新操作做准备。
(4)检索运行结果
数据的检索可以通过4中方式,分别是指定LinkID检索、指定class番号检索、指定岔道数检索和指定道路名称检索。
检索出的信息如果小于5条,就直接在控制台上显示出来;如果大于5条,就将检索结果导入到Writeresult.txt文件当中。
(5)更新运行结果
数据的更新操作就是将排好序的数据重新写入到一个文本文件中(newfile.txt),这个文本文件替换掉原来未排序的文件。
第五章心得体会
在为期7天的实训活动中,通过具体实训内容的表现,我们从中学到了更加深刻的企业工作和经营思想,这些精髓是通过无数员工多年的经验所总结而成的,对于我们这些即将步入工作岗位的应届毕业生而言是无比宝贵的财富。
在这为期7天的东软实训过程中,每个学生都被组合在一个团队中,众所周知,IT行业的组织单位就是团队,团队合作在软件开发过程中极其重要。
我们从不会配合,到互相的宽容和团队资源的整合,再到行动一致并产生了目标的高度统一和神圣的集体荣誉感,这是一个漫长反复而又挫折冲突不断地过程,但是这个过程也是不断总结和反思的过程,我们在协作中成长,我们在成长中成熟。
总之,通过这7天的实训经历,使我对IT企业的理解更加深刻,对职业素质的概念更加清晰,我相信我会按照这些宝贵经验所示的那样,去不断地完善自己的职业素质和能力,不断胜任企业给与的任务和挑战。