车辆管理系统设计代码范文

2023-10-08

车辆管理系统设计代码范文第1篇

摘要:传统的车道设备大多数由单一的电路或IO信号进行控制,是独立的信息孤岛,往往由于维护报修不及时引起收费站拥堵,严重影响了通行效率。文章结合高速公路保通保畅、提升效率和服务出行等方面管理的要求,设计研发了一套车道智慧监测系统,对ETC/MTC收费车道的相关设备进行有效监控,完成快速报修和预警研判,保障高效通行,并为管理层决策提供有力数据支撑。通过该系统在广西南宁东、南宁南等收费站进行安装测试运用表明,车道设备由原先的被动化管理,逐步演进成为全面感知、数据融合和智能应用的物联网阶段,可全面提升收费运营的信息化和智慧化管理水平。

关键词:智慧监测;云平台;信息采集

中国分类号:U491.1+16文章标识码:A431643

0 引言

随着当前汽车保有量的逐年增长,高速公路经过“取消省界收费站”项目改造后,扩大ETC车道数量,的确极大提高了通行效率,方便了大众的出行。但与此同时,也对收费车道设备的运行稳定、故障的及时排除提出了更高的要求。

长期以来,由于缺乏技术手段与管理措施,收费车道一直存在终端设备种类繁多、智能化水平低、标准不统一、通信规约不规范等问题,造成运维、设备调控与资产管理等方面较为落后[1]。针对此情况,本文提出设计一种车道智慧监测系统,以便更好地保障设备运行,全面提升收费运营管理信息化、智能化水平。本系统是一个基于高速公路车道智能检测与监控技术的系统,该技术在现有交通安全管理和路政管理工作中具有重要作用。通过对传统道路设施进行改造,结合数字信号显示和高速公路易测设备来实现对道路交通流信息的实时监测[2],在提高通行效率及降低交通事故率等方面提出了解决方法。

本系统由云平台管理软件、传输终端云盒和终端检测模块三大部分组成。云平台软件是系统的大脑,是整个系统实现精益化管理需求的核心,负责接收、管理各个收费站所属车道的设备运行状态,并进行智能化数据分析,具备报修通知、设备资产管理、智慧运维数据分析等功能。传输终端云盒是数据的集中处理网关,通过WiFi、以太网或者RS485多种通信方式,负责对各个智能终端进行数据采集和加密,并通过5G发送到阿里云后台。智能终端是安装于各个设备的检测单元,实时采集设备的运行状态并通过私有协议进行数据打包上传。

本文将详细阐述车道智慧监测系统的软件架构、硬件设计和应用,结合实际应用案例与传统设备管理模式进行对比分析。

1 软件设计

1.1 设计模式与技术框架

本系统的设计使用Java语言进行开发,采用B/S架构、基于MVC设计模式。采用MVC模式的目的是增加代码的重用率,减少数据表达、数据描述和应用操作的耦合度,同时也使得软件可维护性、可修复性、可扩展性、灵活性以及封装性大大提高,以满足系统设计原则。

通过监控机电设备工作环境的相关数据,将数据上传到服务器,服务器通过业务逻辑处理,判断设备是否正常工作,系统设计框架如图1所示。

本系统采用的是基于Maven整合Spring、SpringMVC和MyBatis的开源框架,其为后台框架,Bootstrap为前台开发框架。从职责上分为四层:WEB层、Controller层、Service层和Dao层(Data Access Object,数据访问对象)。其中Spring是用来协调上下层的容器,管理员依赖并提供事务机制,使用SpringMVC作为系统的整体基础架构,负责MVC的分离,在SpringMVC框架的模型部分,利用MyBatis框架对持久层提供支持,业务层用Spring支持。

基于上述技术框架的高速公路车道智慧监测系统,由微处理芯片、高清摄像头以及GPS定位终端组成。其中,微处理芯片是主要使用的核心器件。该设备通过高速公路上车辆检测传感器采集到车主信息后,传送到微处理器进行预热,之后传输数据给中心控制器;经PC端发送和接收来自预热器或中央处理器的数据;经由单片机对与交流传感器转换过来的信号经过一系列运算计算,最终得到高速公路车道状态参数,如速度、加速度等。

1.2 数据库设计

所用数据库系统:Mysql 5.7.21;设计/管理工具:Navicat Premium。设备信息表结构主要有设备名称、设备类型(类型id值)、品牌、设备型号、用户ID、安装地址、设备状态、云盒ID、云盒连接状态、温度阈值、高温警告、湿度阈值、最大电压阈值、最小电压阈值、最大电流阈值、最小电流阈值、供电警告、烟雾阈值、火灾消防警告、安全防护警告等信息。

2 硬件设计

系统以物联网技术为基础,采用無线组网技术,实现多节点设备状态参数的检测。系统由智慧监测控制器基站、终端界面、设备检测节点组成。如图2所示。

2.1 智慧监测控制器基站云盒

主控基站完成对感应区域内检测节点的扫描检测和数据传递,通过不停地连续快速扫描,感应检测节点的信息,收到信息后按照预先定义好的协议打包信息,转发给临近的服务商无线通信基站或者直接通过有线以太网完成与监测管理中心服务器系统的通信。安装时要考虑探测节点与基站之间的距离,设备监测主控基站对检测节点的感应范围在5~10 m。

智慧监测控制器主要包括微控制器STM32F407ZGT6(168 MHz)、Zigbee无线模块(2.4 GHz)、4G无线通信模块(全网通)、温湿度模块(检查范围0 ℃~85 ℃,湿度0%~100%RH)、数字DIO模块(12DI/12DO)、电能采集模块(最大检测AC220 V/20 A)、RS232/RS485模块(标准DB9针)、电源模块(AC220输入适配变压直流DC12 V输出,板载DC5 V/DC3.3V)、RTC时钟模块、复位/看门狗模块、以太网控制模块、FLASH储存模块、SDRAM模块等,如图3所示。Zigbee无线模块通常处于快速扫描状态,用于监控感应区内的检测节点,快速扫描可保证多个传感器信息同时感应处理。处理器完成数据的处理缓存,扫描数据包括本感应器所在区域内的检测节点数据和监控中心发来的检测命令及其他数据。

智慧监测控制器上电后,先进行设备自检,扫描可用网络,当以太网与4G网络同时可用时优先使用有线以太网连接中心控制主机。控制器定时扫描设备节点状态,解析设备节点回复信息,并通过与预置设备参数标准范围进行比对,判断设备节点工作状态是否正常,并通过网络按特定通信协议回传打包车道设备状态信息。如果判断设备状态异常,则优先通过中心软件进行报警并通过短信息方式发送给维护员,由维护员进行确认处理。

2.2 终端界面设计

开机后显示主界面,即主要设备状态界面,如图4所示。主界面中有“设备状态”“电能监测”和“环境状态”三个主菜单图标,还有“维护开门”“系统信息”图标,可以通过手指点击图标进入相应的界面。屏幕的最下面一行显示收费站代码、车道号、设备版本号,并实时显示系统日期及时间。

2.3 设备检测节点

设备检测节点安装在每个设备内部,不同节点具有不同的接口,用于监测特定设备的工作状态。每个节点可以存储设备身份等信息,其身份在系统内唯一识别,最大可以识别6万多个设备。检测节点采用了低功耗技术,一个电池就可以工作1年之久。检测节点采集每个设备的状态数据并由节点感应器展开,通过节点向外扩展,无限接力传送到收费站智慧监测控制器,再通过远程通信模块将信息传送到监测管理中心。

3 智慧监测系统的关键技术

3.1 高速公路车道线定位

车道边缘检测可对高速公路路段上不同的道路进行分析,并在车辆行驶过程中,通过采集交通流信息,结合实际情况建立一套完整有效的路面图像特征参数。根据车辆运行速度、方向等因素确定相应车道线位置。传统路网的行车路况复杂多变或人工操作不当,会造成交通事故发生率较高,人民生命安全及财产损失严重,而引入数字化测量技术来对道路上各种路段进行检测不仅方便快捷,而且准确率更高,同时也能够减少道路管理成本,提高交通安全保障水平。对高速公路车道边缘的检测主要是在高速公路上设置一个车道位置信息采集设备,利用该装置可以实时获取道路沿线车辆及行驶环境中车辆运行情况,如交通流、速度等。通过收集道路线形数据和实际路况信息来实现对其进行分析。本系统基于GPS定位技术与可变阈值展开研究并提出将之完善的方法:确定固定阈值(即根据当前车道边缘位置变化而发生变化),然后利用道路中心线距离计算公式得到车道边缘长度。

3.2 技术运用

本系统已经在广西南宁东、安吉、南宁南等多个收费站进行测试使用,运行效果良好。能够进行实时的设备状态监督,及时反馈设备故障并及时维护,实现运营管理信息化和平台化的升级。对车流密集的收费站的保通保畅有积极的意义。

另外,通过信息化升级,只需一个平板电脑就能实现对多种设备的远程操作。对于大型收费站而言,其车道照明灯、封道栏杆机的开关操作,传统的方法是需要人工逐个车道进行开关,工作量巨大,现在只要点击界面即可远程完成。

4 结语

高速公路机电设备的运行要求是24 h不间断地工作,经长期运行,外场机柜机箱会逐渐达不到原定的IP标准,而且在盐雾较重、夏季炎热高温和常年多雾的地区,经日晒雨淋,设备外壳极易腐蚀生锈,防护等级下降;涉及电子元器件较多的机电设备受温湿度影响较大,长时间运行后,就会出现各种各样的故障。

但是高速公路机电设备的维护人员数量有限,难以完成设备巡检、设备状态监测带来的巨大工作量,基本无法做到对外场设备、高空设备、大型机电设备常态化现场开箱检测。因此,基于物联网技术、智慧云平台技术、5G网络技术的高速公路车道智慧监测系统开发及应用具有重要意义[3]。

参考文献:

[1]段海澎,韩纪红,凌 浩,等.智慧高速公路隧道诱导知识库系统建设与研究[J].价值工程,2019,38(33):195-197.

[2]呂 叠.高速公路一体化车道控制终端系统的研究[J].广东交通职业技术学院学报,2019(2):54-58.

[3]黄 觉,秦 鸿,关小杰.高速公路监控中心智慧交通平台应用研究[J].公路交通科技(应用技术版),2020(6):300-303.

车辆管理系统设计代码范文第2篇

列车电气系统的主要组成结构有辅助供电系统、控制系统、牵引系统, 这些系统中均存在有冗余设计。

(一) 牵引力冗余

以北京地铁14号线为例, 全列车6辆编组, 4动2拖。全列16台庞巴迪的MJA 250电机, 每台额定输出功率200KW, 保证列车在AW0~AW3的运行。可以满足北京的人员密集的运营需求, 因为设计时就考虑了一定的的动力冗余。列车内的牵引力不仅可以使列车具备有基本牵引性能, 同时还有着以下几个方面的特点, 第一, 在超员状态下, 即使动力降低1/4, 列车仍可以坡度为30°坡道上启动, 以正常运行状态运行;第二, 在空车状态下, 即使动力降低1/4, 列车仍可以坡度为30°坡道上启动, 以正常运行状态运行, 并返回基地;第三, 1列6辆编组的空车将另一列停在30‰坡道上的6辆编组超员故障列车移至最近的车站 (上坡) ;通过动力冗余性能, 可以使列车的可用性以及可靠性得到保证, 不会导致列车的运营受到过多的影响。同时我们也会平衡经济性和冗余性, 提供最好的性价比。

其次, 蓄电池牵引能力, 一北京16号线为例, 列车在运行过程中, 其牵引运行电源来自于受电弓等外部电源, 当外部电源受到某些因素的干扰和影响无法正常供电时, 一般列车需要开展救援工作, 但是存在有蓄电池牵引的列车可以将供电模式转变为蓄电池供电牵引模式, 能够完成短时间的牵引。通过这种方式, 可以很大程度上降低车辆被救援概率, 使车辆可用性和可靠性得到保障。另外, 部分车辆段没有三轨供电, 列车可借助蓄电池牵引模式, 完成段内车辆的移动, 可以不用在存车库设置接触网, 使维护人员以及司乘人员的安全得到保证。在空载状态下, 蓄电池牵引模式可以牵引车辆运行2km, 在超载状态下, 蓄电池牵引模式可以运行一个区间。

(二) 控制系统冗余设计

首先, 网络系统冗余设计。与一般列车网络控制系统相比, TCMS系统不管在硬件方面还是在软件功能方面都有着更好的耐用性及可靠性。在列车多功能车辆总线网络中, 各个小单元均存在有网络主控制单元, 网络每个节点都存在有两个网络主控制单元控制器, 其中一个网络主控制单元控制器主要负责主机功能, 另一个网络主控制单元控制器处于热备状态, 能够及时接收主机故障信息, 同时接管主机功能, 保证网络控制的连续性。网络主控制器热备冗余设计, 可以很大程度上提高网络控制系统可靠性和可用性水平。同时在传输网络信号时使用MVB总线控制, 总线使用A, B两路同时传输数据给各系统, 保证了数据安全和可靠。

其次, 硬线控制冗余。在列车控制系统中, 列车的牵引以及制动指令属于关键性的数据, 为了使列车可靠性得到保证, 除了借助MVB网络实现对牵引以及制动指令的传递之外, 还有硬线传输模式, 用来传递牵引以及制动指令。数据的传输通过电流环传输模式进行, 以此作为备用传输线路。当两个网络主控制单元控制器均出现故障时, 司机可以通过转换开关将工作模式切换到备用工作模式, 此时可以通过硬线和司控器的控制, 直接给牵引和制动系统发送牵引、制动命令, 同时通过硬线发送100%或50%指令, 保证列车的牵引和制动安全。

(三) 辅助供电系统冗余设计

辅助供电系统冗余设计有容量冗余:北京地铁14号线每列车安装4套辅助电源装置即静止逆变器 (SIV) 和蓄电池组, 辅助电源装置采用分散布置。其输出能力必须满足6辆编组列车各种负载工况的用电要求。6辆编组列车的静止逆变器总容量为468KVA。在正常情况下, 每个辅助逆变器的辅助容量为117k VA, 每列车的全部静止逆变器 (SIV) 向全列车辅助系统的负载提供117k VA*4=468k VA电源, 完全满足辅助负载容量的要求;当其中1套静止逆变器 (SIV) 故障时, 余下的静止逆变器 (SIV) 每套持续功率能发挥到150k VA (冷却风机全速运转) , 即整列车的辅助系统可以提供的辅助电源功率为150k VA*3=450k VA, 能承担全部车辆440.59k VA的负载要求 (其中直流负载不减载) 并保证列车的正常运行, 此时列车不需要任何减载。因为辅助系统给整个列车的控制和安全供电, 所以辅助系统的冗余还是比较大的。

不间断供电技术在地铁中也有着十分广泛的应用, 地铁的正常电力供应来自于地面, 但是在实际的应用过程中往往会受到施工条件等方面因素的限制, 比如说岔道位置, 无法铺设供电轨, 在这种情况下, 供电线路中会存在有部分供电间断区域, 为了保证列车在断电区的正常供电, 在列车上布置一条贯穿全车的母线, 及时在断电区, 还可以接受到来自不断电区域的正常供电。

(四) 直流供电冗余

直流供电冗余有直流供电装置容量冗余以及蓄电池容量冗余两个方面内容。在直流供电装置容量冗余方面, 地铁上直流供电装置有两个, 其容量为22k W, 输出端存在有二极管以及接触器, 借助二极管连接至相同直流母线。列车的直流负载仅为20k W, 通过这种配置, 即使一个直流供电装置存在问题, 需要切断故障供电装置, 也不会影响到整个列车直流负载的供电情况。在蓄电池容量冗余方面, 蓄电池容量为180Ah, 列车所有负载即使在仅蓄电池供电状况下, 也可以在线路上实现一个往返的正常运营, 在紧急情况下, 蓄电池为应急通风逆变器供电, 使列车通风机降频降压工作, 为乘客提供新鲜空气, 同时可以维持重要负载电力供应45min。

结束语

地铁电气系统冗余设计属于一种健康实用设计理念, 能够使地铁车辆可靠性和可用性得到有效保证。通过冗余设计的方式, 一方面可以提高地铁可靠性和可用性指标, 同时还能够在冗余状况下完成对乘客的输送, 产生非常好的社会效益。

摘要:本文针对地铁车辆电气系统的冗余设计进行了深入的研究分析, 结合本次研究, 发表了一些自己的建议看法, 希望可以对地铁车辆运行可靠性和可用性提高起到一定的参考和帮助, 更好的实现对乘客的输送, 促进我国地铁建设事业的发展进步。

关键词:地铁车辆,电气系统,冗余设计

参考文献

[1] 史秀娈, 姜悦礼.地铁车辆电气牵引系统的RAMS设计[J].铁道机车与动车, 2014, 04:5-12.

车辆管理系统设计代码范文第3篇

将车辆监控系统应用于我国的交通运输业具有重要的现实意义。它促进了信息化的发展, 提高了交通运输的安全性、可靠性和道路网的通行能力及汽车运输的效率, 并可以有效预防和打击犯罪, 快速灭火和紧急救援等, 可以创造良好的社会效益和经济效益。

1 系统实现

本文设计并实现了一个实验系统, 用来说明汽车导航系统数字电子地图实现的几个重要方面。本系统分为监控中心系统与车载系统两部分, 车载系统的功能基本上是监控中心系统的一部分所以功能介绍只介绍了监控中心基本功能。本系统的功能主要是使汽车驾驶者能够快速获得路况信息并在此基础上作出判断和决策, 同时可以使管理者对各种地物进行修改。本系统以此为设计目标, 借助地理信息系统 (GIS) 技术, 通过用户简单的计算机操作, 主要可实现以下功能。

1.1 车辆管理信息管理模块

车辆管理信息模块的主要功能如下。

(1) 系统安全认证:从数据的安全角度考虑, 只有拥有超级用户权限的管理者才可以对数据库中的数据进行录入, 修改, 删除和浏览等操作, 其他用户没有操作数据库的权限。在用户操作数据库前, 首先进行权限认证, 通过认证的用户可以查看和管理系统数据, 否则就无法查看和管理系统数据。 (2) 单位信息管理:完成单位信息的录入, 修改, 删除和浏览等功能。 (3) 车辆管理:完成车辆基本信息的录入, 修改, 删除和浏览等功能。 (4) 定位信息管理:完成定位信息纪录的定期删除, 维护和浏览等功能。

1.2 监控中心的主界面模块

系统的主界面模块的主要功能如下。

(1) 地图操作基本功能。

(1) 文件操作。包括新建SHAPE图层文件、打开SHAPE文件、打开CAD文件, 关闭图层文件等对文件的操作。 (2) 地图数据库操作。可以进行查询属性信息, 通过属性信息来在地图上定位, 新建SDE图层等功能。 (3) 数据库的设置功能, 系统管理员可以根据用户的需要来显示不同SDE图层。 (4) 显示道路轮廓图, 同时包含一些概要非道路信息, 如公园、河流。 (5) 图层修改模块。

系统的超级用户可以对对某个图层进行修改, 如可以新建道路、桥梁等并可以添加新建地物的属性信息。系统提供了会看地图使用的工具条, 包括各种工具按钮, 如选择、无级缩放、任意漫游等。

(2) 系统参数的配置。

(1) GPS服务器参数设定:设置GPS服务器参数, 主要端口号。 (2) 与短消息服务器控制模块建立连接, 接受时实定位数据:系统自动读取GPS服务器参数, 与短消息服务器建立连接, 连接成功之后, 进入接收数据状态, 随时接收时实定位数据。

(3) 车辆轨迹的分布式显示功能。

将移动车辆的定位信息在相应的电子地图显示出来。

(4) 分布式单车锁定功能。

对于有需要的车辆可进行点名锁定, 系统只接收锁定车辆的定位信息并在电子地图上显示锁定车辆的运行轨迹。如果锁定车辆超出观察范围, 系统自动漫游将该车辆显示在视屏中央。

(5) 在当前单位中, 鼠标指定目标位置, 查询最近车辆位置:在当前单位地图上指定目标位置, 可以快速的找到离该位置最近的车辆, 向该车辆发出指令, 快速到达目标地点。

(6) 数据查询功能。

(1) 可以查询车辆属性数据, 包括车型、牌号、颜色、车辆用途、司机姓名、联系电话, 甚至是司机的彩色照片等等。 (2) 可以查询用户的行使数据, 包括车号、行使路线、速度、方向等。 (3) 可以进行空间查询功能, 可以根据点击地图上的地物来查询地物属性, 也可以通过输入地名来查询在地图上的位置并高亮显示等各种查询功能。

(7) 报警功能。

(1) 移动目标报警后马上发送当前位置信息, 监控中心收到报警信号后, 自动显示车辆的位置, 并将地图中心平移到当前位置。 (2) 遇到紧急情况, 监控中心可以发出命令指示车辆怎么处理各种紧急情况。

(8) 指挥调度功能。

监控中心的调度人员可以根据情况对移动目标进行指挥调度。

(9) 鹰眼图功能。

鹰眼视图 (也称鸟瞰视阁) , 地图图形较大而显示器屏幕较小, 使用鹰眼视图, 它可以在一个小的窗口中显示全图的内容和当前汽车的行驶轨迹, 也可以用窗选某一部分显示。

(10) 路径规划功能。

在路网图上动态地规划指定两点的最佳出行路径。并渲染该路径。

1.3 历史轨迹回放模块

轨迹回放模块的基本功能。

(1) 系统能自动记录和存储移动用户行驶的轨迹, 包括时间、地点、速度、方向等状态。 (2) 可以回放每个移动用户行驶路线的轨迹, 包括以上存储的一些状态。 (3) 回放时可以调整回放的速度。 (4) 回放时可以回放任意车辆的任意时间段的行驶轨迹。 (5) 轨迹清除功能:清除当前选定单位中车辆的所有运行轨迹。 (6) 可以用打印机打印出移动用户的行使轨迹。

2 结语

车辆导航定位系统在国内还没有得到广泛的推广和应用, 但正在迅速的发展。作为GPS、GIS和通信技术集成的结果, 有许多的技术和理论问题值得研究和探讨。本文在进行本课题的研制过程中, 主要对以下几个问题进行了理论用和实践上的探讨。

(1) 通过对汽车导航系统发展的历史和背景以及当前国内外汽车导航系统的应用和技术状况的分析, 探讨了汽车导航系统的应用前景。 (2) 给出了汽车导航系统应具有的基本功能, 并对这些功能进行了讨论。 (3) 在对汽车导航系统数据电子地图的理论和技术进行分析和探讨的基础上, 实现了数字电子地图软件的几个基本功能模块, 并且得到了基本的验证。

汽车导航系统是一项精细而复杂的综合技术, 其定位精度的大小和分析功能的强若、弱取决于很多方面。稳定、精细的地图数据库的建立和维护、强大的图形处理能力对地图操作的支持, 快速路径的搜索等也将待进一步研究和和解决。

摘要:本文基于笔者多年从事汽车电器系统设计的相关工作经验, 以基于GPS及GIS技术的车辆导航定位监控系统设计为研究对象, 设计与实现了一个实验系统, 分析了该类系统的功能组成与实现方式, 全文是笔者长期工作实践基础上的理论升华, 相信对从事相关工作的同行有着重要的参考价值和借鉴意义。

关键词:GPS,GIS,车辆监控,导航,定位

参考文献

[1] 潘爱民.COM原理与应用[M].北京:清华大学出版社, 1999.

车辆管理系统设计代码范文第4篇

实验名称:文件加密解密 院系:软件学院

学号:

年9月3日—9月17日 日期:2012

一:设计题目

1:设计图形用户界面。

2:对文件进行加密并对加密文件进行保存。 3:对加密了的文件进行解密。

二:设计过程

设计过程中遇到的困难和解决方法: 1:不能很好地理解题意(通过老师的讲解)。

2:不知道如何设计加密解密程序(通过翻阅书籍和上网查找资料) 过程:

首先通过学习老师提供的资料了解大致的设计过程并懂得运用一些以前没有学习过的c语言。先利用文本文件设计出加密解密的主要过程并能运行。知道如何运用fopen将原文件打开并用fread将原文件内容读出来,然后进行加密设计并将加密的数据用fwrite写进指定的文件中并保存。然后读出加密的文件并解密并保存。最后在写出的程序中加入图形用户界面,运用window,box,gotoxy等进行设计。

三:源代码

#include /* 标准输入、输出函数 */ #include /* 标准库函数 */ #include //*字符串处理函数 */ #include /* 字符操作函数 */ #include #include #define key_down 80 #define key_up 72 #define key_esc 1 #define key_enter 28 #define SIZE 1 void box(int startx,int starty,int high,int width); int get_key(); char buf[20*20*4]; /*/////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////加密解密 */ void fun(char *list,char *sd) /*加密过程*/ {

FILE *fp1,*fp2; char buf[1000]; /*文件临时存放处*/ register int ch; fp1=fopen("e:list.txt","r"); /*用可读方式打开文件*/ fp2=fopen("e:sd.txt","w"); /*用可写方式创建一个文件*/ if(fp1==NULL) { printf("cannot open file "); exit(1); } if(fp2==NULL) { printf("cannot build file "); exit(1); } ch=fgetc(fp1); /*读出打开文件的光标处的一个字符*/ while(!feof(fp1)) /*读出的字符不是最后的字符*/ { ch=ch<<1; /*加密方法*/ fputc(ch,fp2); /*加密的字符存放在指定的地方*/ ch=fgetc(fp1);

} rewind(fp2); /*将光标移动到第一个字符前面*/ fread(buf,sizeof(buf),1,fp2); /*从文件的当前位置开始中读取buf中存放的数据*/ printf("%s",buf); /*fclose(fp1); fclose(fp2); */ }

void man(char *sd,char *ds) /*解密过程*/ { /*int n=0; */ FILE *fp2,*fp3; register int fh; char buf1[1000];

fp2=fopen("e:sd.txt","rb"); /*用可读方式打开文件*/ fp3=fopen("e:ds.txt","wb"); /*用可写方式创建一文件*/ if(fp2==NULL) { printf("cannot open file "); exit(1); } if(fp3==NULL) { printf("cannot build file "); exit(1); } fh=fgetc(fp2); /*从光标处读出一个字符*/ while(!feof(fp2)) /*当读出的字符到达最后一个则停止*/ { fh=fh>>1; /*解密方式*/

fputc(fh,fp3); /*解密的字符存放在指定的地方*/ fh=fgetc(fp2); } fread(buf1,sizeof(buf1),1,fp3); /*读出buf1中所存放的数据*/ printf("%s",buf1); }

void main() { int k; char *f[]={"jiami","jiemi"}; /**界面的形式/ int key,y; int j,q; char list[300]; char sd[300]; char ds[300]; char ch,fh; char buf[1000]; char buf1[1000]; FILE *fp1; FILE *fp2; int l1,l2; window(1,1,80,25);/*left,top,right,bottom,相对于屏幕的字符坐标,屏幕原点在左上角*/ gettext( 20,10,40,14,buf); /*保存矩形屏幕上的字符*/

textbackground(7); /*背景颜色*/ textcolor(0); /*字体颜色*/ clrscr(); /*清除矩形屏幕上的所有字符*/ gotoxy(24,10);/*将当前字符屏幕的光标位置移动到x,y的坐标位子*/ printf("%s",f[0]); gotoxy(24,14); printf("%s",f[1]); gettext(10,8,60,16,buf); box(22,9,3,30); /*建立一个小窗口*/ key=0; while(1) { while(bioskey(1)==0); /*读取键盘值查询键盘是否按下*/ key=get_key(); /*按下了什么键盘*/

if(key==key_up||key==key_down) { y=wherey();/*得到字符模式下窗口光标的x坐标数值*/ if(key==key_up) y=y==10? y+4:10; /*当y=10光标向下移动四个位置否则将光标移动到y=10处*/ if(key==key_down) y=y==14? y-4:14; /*当y=14光标向下移动四个位置否则将光标移动到y=14处*/

puttext(10,8,60,16,buf); /*将gettext函数保存的字符恢复到屏幕上 */

gotoxy(24,y);

if(y==10) { textbackground(7); textcolor(0); box(22,9,3,30); textbackground(3); textcolor(15); gotoxy(24,y); cprintf("%s",f[0]); } else { textbackground(7); textcolor(0); box(22,13,3,30); textbackground(3); textcolor(15); gotoxy(24,y); cprintf("%s",f[1]); } }

if(key==key_enter&&y==10)且光标在y=10处 /*当按下enter键且光标在y=10处进行下步*/ { clrscr(); textbackground(3); textcolor(15); /*clrscr(); */ gotoxy(24,5); printf("input the file name for jiami ");/*用户给需要加密的文件加密 */ l1=strlen("input the file name for jiami:");/*待求长度的字符串指针*/ gotoxy(24+l1,5); scanf("%s",list); gotoxy(24,10); printf("input file name for save ");/*给加密后的文件命名,并保存*/ l2=strlen("input file name for save:"); gotoxy(24+l2,10); scanf("%s",sd); fun(list,sd); fp1=fopen("e:sd.txt","rb"); fread(buf1,sizeof(buf1),1,fp1); gotoxy(10,15); printf("%s ",buf1); getch(); printf("file haven jiami ,save now"); getche(); break; } if(key==key_enter&&y==14) { clrscr(); textbackground(3); textcolor(15); gotoxy(24,5);

printf("input the file name for jiemi ");/*用户给需要解密的文件解密 */ l1=strlen("input the file name for jiemi: "); gotoxy(24+l1,5); scanf("%s",sd); gotoxy(24,10); printf("input file name for save: ");/*对解密的文件系统又可以提供保存路径 */ l2=strlen("input file name for save: "); gotoxy(24+l2,10); scanf("%s",ds); man(sd,ds); fp2=fopen("e:ds.txt","rb"); fread(buf1,sizeof(buf1),1,fp2); gotoxy(10,15); printf("%s ",buf1); getch();

printf("file haven jiemi,save now"); getche(); break; }

}

window(1,1,80,25); gettext( 20,10,40,14,buf);

textbackground(7); textcolor(0); clrscr(); gotoxy(24,10); printf("%s",f[0]); gotoxy(24,14); printf("%s",f[1]); gettext(10,8,60,16,buf); box(22,9,3,30); key=0; while(1) { while(bioskey(1)==0); key=get_key();

if(key==key_up||key==key_down) { y=wherey(); if(key==key_up) y=y==10? y+4:10; if(key==key_down) y=y==14? y-4:14; puttext(10,8,60,16,buf);

gotoxy(24,y);

if(y==10) /*光标在10处的窗口*/ { textbackground(7); textcolor(0); box(22,9,3,30); textbackground(3); textcolor(15); gotoxy(24,y); cprintf("%s",f[0]); } else { textbackground(7); textcolor(0); box(22,13,3,30); textbackground(3); textcolor(15); gotoxy(24,y); cprintf("%s",f[1]); } }

if(key==key_enter&&y==10) { clrscr(); textbackground(3); textcolor(15); /*clrscr(); */ gotoxy(24,5); printf("input the file name for jiami ");/*用户给需要加密的文件加密 */ l1=strlen("input the file name for jiami:"); gotoxy(24+l1,5); scanf("%s",list); gotoxy(24,10); printf("input file name for save ");/*给加密后的文件命名,并保存*/ l2=strlen("input file name for save:"); gotoxy(24+l2,10); scanf("%s",sd); fun(list,sd); fp1=fopen("e:sd.txt","rb"); fread(buf1,sizeof(buf1),1,fp1); gotoxy(10,15); printf("%s ",buf1); getch(); printf("file haven jiami ,save now"); getche(); } if(key==key_enter&&y==14) { clrscr(); textbackground(3); textcolor(15); gotoxy(24,5);

printf("input the file name for jiemi ");/*用户给需要解密的文件解密 */ l1=strlen("input the file name for jiemi: "); gotoxy(24+l1,5); scanf("%s",sd); gotoxy(24,10); printf("input file name for save: ");/*对解密的文件系统又可以提供保存路径 */ l2=strlen("input file name for save: "); gotoxy(24+l2,10); scanf("%s",ds); man(sd,ds); fp2=fopen("e:ds.txt","rb"); fread(buf1,sizeof(buf1),1,fp2); gotoxy(10,15); printf("%s ",buf1); getch();

printf("file haven jiemi,save now"); getche(); break; }

}

}

int get_key() { union REGS rg; rg.h.ah=0; int86(0x16,&rg,&rg); return rg.h.ah; getchar(); } void box(int startx,int starty,int high,int width) /*的建立*/ { int i; gotoxy(startx,starty); putch(0xda); for (i=startx+1;i

for(i=starty+1;i

屏幕 } gotoxy(startx,starty+high-1); putch(0xc0); gotoxy(startx+1,starty+high-1); for(i=startx+1;i

通过这次的作业我觉得最大的收获是不仅把平时学习到的知识理解的更加透彻,而且使知识更加系统化,同时还把有些平时不太注意的小问题发现了出来,这不但有利于我学习C语言,而且对于我学习任何一门课程都是很有益处的。总之,做这份作业对于我们学习C语言有很大的帮助。

车辆管理系统设计代码范文第5篇

import java.util.List; import java.util.Scanner;

import cn.pab.dao.PersonDao; import cn.pab.dao.TypeDao; import cn.pab.dao.UserDao; import cn.pab.dao.impl.PersonDaoImpl; import cn.pab.dao.impl.TypeDaoImpl; import cn.pab.dao.impl.UserDaoImpl; import cn.pab.entity.Person; import cn.pab.entity.Type; /** * 业务类

*/ public class PABmanager { /**

* 系统启动

*/ public static void main(String[] args) {

Scanner input = new Scanner(System.in);

UserDao userDao = new UserDaoImpl();

TypeDao typeDao = new TypeDaoImpl();

PersonDao personDao = new PersonDaoImpl();

System.out.println("***********欢迎使用个人通讯录管理系统**********");

System.out.print(" 请选择操作(1.系统登录

2.密码修改

3.取消):");

String in = input.next();

if ("1".equals(in)) {

boolean islogin = userDao.login();

if(islogin){

System.out.println("***********成功登录个人通讯录管理系统**********");

//System.out.print(" 请选择操作(1.类别管理

2.联系人管理

3.退出系统):");

}else{

System.out.println("用户名或密码错误,不能登录!");

System.exit(-1);

}

}else if ("2".equals(in)) {

boolean modiFlag = userDao.modify();

if(modiFlag){

System.out.println("密码修改成功!"); }else{

System.out.println("密码修改失败!"); } System.exit(-1); }else{ System.out.println("您已经退出系统!"); System.exit(-1); }

while(true){

System.out.print(" 请选择操作(1.类别管理

2.联系人管理

3.退出系统):"); String in2 = input.next(); if ("1".equals(in2)) { while(true){

System.out.print(" 请继续选择操作(1.新建类别

2.查询类别

3.删除类别

4.返回):");

String num = input.next();

if ("1".equals(num)) {

System.out.print("请输入类别的名称:"); String lbmc = input.next();

System.out.print("请输入类别的说明:"); String lbsm = input.next(); System.out.print("请输入类别的备注:"); String lbbz = input.next();

Type type = new Type(lbmc,lbsm,lbbz);

typeDao.createType(type); }else if ("2".equals(num)) { List types = typeDao.queryType();

System.out.println(" 类别信息列表");

System.out.println("类别名称 类别说明 类别备注");

for (int i = 0; i < types.size(); i++) {

Type type =types.get(i);

System.out.print(type.getLbmc()+" ");

System.out.print(type.getLbsm()+ " ");

System.out.println(type.getLbbz());

}

}else if ("3".equals(num)) {

System.out.print("请输入类别的名称:");

String lbmc = input.next();

Type type = new Type(lbmc,null,null);

typeDao.deleteType(type); }else if ("4".equals(num)) { break; }else{

System.out.println("您输入不合法,请重新选择!");

}

} }else if ("2".equals(in2)) {

while(true){

System.out.print(" 请继续选择操作(1.新建联系人

2.查询联系人

3.更新联系人

4.删除联系人

5.返回):");

String num = input.next();

if ("1".equals(num)) {

System.out.print("请输入联系人的类别名称:"); String lb = input.next();

System.out.print("请输入联系人的姓名:"); String xm = input.next();

System.out.print("请输入联系人的电话:"); String dh = input.next();

System.out.print("请输入联系人的手机号:"); String sjh = input.next();

System.out.print("请输入联系人的工作单位:"); String gzdw = input.next();

System.out.print("请输入联系人的住址:");

String zz = input.next();

System.out.print("请输入联系人的邮政编码:");

String yzbm = input.next();

Person person = new Person(lb,xm,dh,sjh,gzdw,zz,yzbm);

personDao.createPerson(person);

}else if ("2".equals(num)) {

System.out.print("请输入联系人的姓名:");

String name = input.next();

Person p = personDao.queryPerson(name);

System.out.println(" 查询到的联系人信息");

System.out.println("类别 姓名 电话 手机号 工作单位 住址 邮政编码");

System.out.print(p.getLb() + " ");

System.out.print(p.getXm() + " ");

System.out.print(p.getDh() + " ");

System.out.print(p.getSjh() + " ");

System.out.print(p.getGzdw() + " ");

System.out.print(p.getZz() + " ");

System.out.println(p.getYzbm());

}

} }

}else if ("3".equals(num)) {

System.out.print("请输入需更新的联系人编号:");

int id = input.nextInt();

System.out.print("请输入需更新的联系人信息选项:");

String item = input.next();

System.out.print("请输入联系人信息选项的值:");

String val = input.next();

personDao.updatePerson(id,item, val);

}else if ("4".equals(num)) {

System.out.print("请输入要删除联系人的姓名:");

String name = input.next();

personDao.deletePerson(name);

}else if ("5".equals(num)) {

break;

}else{

System.out.println("您输入不合法,请重新选择!");

上一篇:车辆保险理赔注意事项范文下一篇:传媒公司岗位职责大全范文